Вы находитесь на странице: 1из 42

75.

40 Algoritmos y Programacin I
Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina

Algoritmos y Programacin I - Ctedra:

75.40 Algoritmos y Programacin I


Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina

Algoritmos y Programacin I - Ctedra:

Indice
Vectores y Matrices 4

Algoritmos y Programacin I - Ctedra:

33

Vectores y Matrices

Vectores: Introduccin

Con lo aprendido hasta ahora resolvamos los siguientes problemas:

Dados 50 nmeros enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los nmeros ingresados que sean mayores que l. Dados n nmeros, obtener e imprimir la suma de todos ellos. A continuacin mostrar por pantalla todos los sumandos.

Algoritmos y Programacin I - Ctedra:

44

Vectores y Matrices

Es posible resolver estos problemas? Por qu? Una de las principales dificultades que se observan con estos problemas es que para la resolucin de ambos es necesario almacenar la totalidad de los datos a procesar. No sera eficiente crear n cantidad de variables para guardar estos datos. Para realizar programas y/o algoritmos que nos permitan resolver los problemas planteados, usaremos una nueva estructura de datos denominada vectores.
Algoritmos y Programacin I - Ctedra: 55

Vectores y Matrices

Una estructura de datos es un conjunto de datos con un cierto orden. Las estructuras de datos pueden ser dinmicas o estticas.

Estticas: aquellas a las que se le asigna una cantidad fija de memoria de acuerdo a lo definidio en la declaracin de la variable. Dinmicas: son aquellas cuyo tamao en memoria aumenta o disminuye en tiempo de ejecucin de acuerdo a las necesidades del programa.

Algoritmos y Programacin I - Ctedra:

66

Vectores y Matrices
Reales Enteros Char Boolean Enumerado s String arrays set recor d file

Simples Tipos de Estructura s

Estticas

Compleja s
Algoritmos y Programacin I - Ctedra:

Dinmicas (punteros)

77

Vectores

Qu es un vector? Un vector (o arreglo unidimensional) es una estructura de datos en la cual se almacena un conjunto de datos de un mismo tipo. Es decir que un arreglo es una lista de n elementos que posee las siguientes caractersticas:

se identifica por un nico nombre de variable sus elementos se almacenan en posiciones contiguas de memoria se accede a cada uno de sus elementos en forma aleatoria

Algoritmos y Programacin I - Ctedra:

88

Vectores
Elementos

Mi_vector

9 5 6 2 4 8 3

Nombre de la variable

Posicin : 1 Contenido : Mi_vector[1] = 9

Algoritmos y Programacin I - Ctedra:

99

Vectores

Ejemplos:

Ejemplo 1. Resolvamos este primer ejemplo: Cargar 10 elementos en un vector, sumarlos y mostrar el resultado por pantalla. Pasos para resolver este problema:

Leer un vector de 10 elementos Sumar los elementos Mostrar el resultado de la suma por pantalla

Algoritmos y Programacin I - Ctedra:

1010

Vectores
Ejemplo 1 - Diagrama de Jackson
Ejemplo 1

Lectura del arreglo

Suma de los elementos

Muestra resultados

Algoritmos y Programacin I - Ctedra:

1111

Vectores - Ejemplo1
Program Ejemplo1; {Version 1} Declaracin del tipo del arreglo type sumandos = array[1..10] of integer; var suma, i : integer; Declaracin de la variable arreglo vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do read(vec_sumandos[i] ) Lectura de los elementos del arreglo for i := 1 to 10 do suma:= suma +vec_sumandos[i]; writeln (La suma de los nmeros es, suma); end. Suma de los elementos Algoritmos y Programacin I - Ctedra: 1212

Vectores - Ejemplo1
Program Ejemplo1; {Version 2} type sumandos = array[1..10] of integer; var suma, i : integer; vec_sumandos : sumandos; begin suma := 0; for i:= 1 to 10 do begin read(vec_sumandos[i] ) suma:= suma +vec_sumandos[i]; end; writeln (La suma de los nmeros es, suma); end. Algoritmos y Programacin I - Ctedra: 1313

Vectores - Declaracin

Como ya dijimos anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas. Esta operacin se realiza en la secccin Type de un programa en Pascal. (como puede verse en el ejemplo1) formato

type
nombre_del_tipo = array[tipo_subindice * ] of tipo;
* debe ser de tipo ordinal: boolean, char, enumerado o subrango
Algoritmos y Programacin I - Ctedra: 1414

Vectores - Declaracin

Luego de la declaracin del tipo, se declara la variable. formato

var

nombre_variable: nombre_del_tipo;

Algoritmos y Programacin I - Ctedra:

1515

Vectores - Declaracin

Ejemplos de declaraciones: Ej1:

type var

Valores = array[ -10..10 ] of real;

precios: valores;

Algoritmos y Programacin I - Ctedra:

1616

Vectores - Declaracin

Ejemplos de declaraciones: Ej2: const


Max= 500;

type
T_Texto = array[ 1..Max ] of char;

var Texto: T_Texto;

Algoritmos y Programacin I - Ctedra:

1717

Vectores - Manejo de ndices


Asignacin de valores

Texto[3] := a;

Precios[0] := 23.50;

Como ya dijimos, los ndices de un arreglo pueden ser: entero, lgico, caracter, enumerado o subrango.

Algoritmos y Programacin I - Ctedra:

1818

Vectores - Manejo de ndices


Ej3: const longitud = 40; altura = 30; type horizontal = 1..Longitud; T_Lnea = Array [ horizontal ] of char; var Linea: T_Linea
Algoritmos y Programacin I - Ctedra: 1919

Vectores - Manejo de ndices


Ej4: type DiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo ); T_Dias = array [DiasSemana] of integer; var Dias: T_Dias;

Algoritmos y Programacin I - Ctedra:

2020

Vectores - Operaciones
Con la siguiente declaracin:
T_Notas = array [1..30] of integer; var Notas: T_Notas;

type

Lectura de un vector
for i:= 1 to 30 do read(Notas[i] )

Algoritmos y Programacin I - Ctedra:

2121

Vectores - Operaciones
Escritura de un vector
for i:= 1 to 30 do writeln(Notas[i] )

Algoritmos y Programacin I - Ctedra:

2222

Vectores - Operaciones

Con la siguiente declaracin:


T_Notas = array [1..30] of integer;

type

var Notas, Aux_Notas: T_Notas;

Copia de vectores
for i:= 1 to 30 do Aux_Notas[i]:= Notas[i]; o bien: Aux_Notas:=Notas; Algoritmos y Programacin I - Ctedra: 2323

Vectores - Ejemplos resueltos


Ej2- Dados 50 nmeros enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los nmeros ingresados que sean mayores que el mismo. Ej3 - Dados n nmeros, obtener e imprimir la suma de todos ellos. A continuacin mostrar por pantalla todos los sumandos.

Algoritmos y Programacin I - Ctedra:

2424

Vectores - Ejemplos resueltos


Program Ej2; const max = 50; type t_numeros = array[1.. max] of integer; var suma, i : integer; promedio: real; numeros : t_numeros; begin suma := 0;

Algoritmos y Programacin I - Ctedra:

2525

Vectores - Ejemplos resueltos


for i:= 1 to max do begin read(numeros[i] ) suma:= suma +numeros[i]; end; Promedio:= suma/max; writeln (El promedio es ,Promedio); for i := 1 to 50 do if numeros[i] > promedio then writeln (El nmero, numeros[i], es mayor al promedio); end.

Algoritmos y Programacin I - Ctedra:

2626

Vectores - Ejemplos resueltos


Program Ej3; const max = 100; type t_numeros = array[1.. max] of integer; var suma, i, n : integer; promedio: real; numeros : t_numeros; begin suma := 0; write (Ingrese la cantidad de nmeros a sumar. (Como mximo, 100 nmeros); readln(n);

Algoritmos y Programacin I - Ctedra:

2727

Vectores - Ejemplos resueltos


for i:= 1 to n do begin read(numeros[i] ) suma:= suma +numeros[i]; end; writeln (La suma es ,suma); for i := 1 to n do writeln (El sumando, i, es, numeros[i]); end.

Algoritmos y Programacin I - Ctedra:

2828

Vectores - Vectores Paralelos

Dos o ms arreglos que utilizan el mismo subndice para acceder a elementos de distintos arreglos, se denominan arreglos paralelos. Estos arreglos pueden procesarse simultneamente. Ejercicio:

Se tienen dos arreglos. El primero contiene nombres de personas y el segundo contiene los sexos de las personas del primer arreglo, codificados como f femenino y m masculino. Obtener a partir de estos otros dos arreglos, el primero de los cuales debe contener todos los nombres de los varones y el segundo, el nombre de todas las mujeres
2929

Algoritmos y Programacin I - Ctedra:

Matrices

Resolvamos el siguiente problema:

Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniera. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura. Las asignaturas estn codificadas de 1 a 6 y hay 30 alumnos.

Algoritmos y Programacin I - Ctedra:

3030

Matrices

Es posible resolver este problema con lo visto hasta ahora? Para realizar el anterior programa , debemos trabajar con una tabla (o matriz o arreglo bidimensional)

Algoritmos y Programacin I - Ctedra:

3131

Matrices
Mi_Matriz

Nombre de la variable

9 5 6 2 4 8 3 9 5 6 2 4 8 3 9 5 6 2 4 8 3

Posicin : 3,1 Contenido : Mi_vector[3,1] = 9

Algoritmos y Programacin I - Ctedra:

3232

Matrices - Declaraciones

Ejemplos de declaraciones: Ej1:

type var

T_matriz = array[ 1..10, 1..10 ] of real;

Matriz: valores;

Algoritmos y Programacin I - Ctedra:

3333

Matrices - Declaraciones

Ejemplos de declaraciones: Ej2:

type var

T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;

Matriz: valores;

Algoritmos y Programacin I - Ctedra:

3434

Matrices - Declaraciones

Ejemplos de declaraciones: Ej3:

type

T_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas;

var Matriz: valores;

Algoritmos y Programacin I - Ctedra:

3535

Matrices - Operaciones

Con la siguiente declaracin:


T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;

type

var Matriz: valores;

Lectura de una matriz


for i:= 1 to 10 do for j:= 1 to 10 do readln(Matriz[i,j] )

Algoritmos y Programacin I - Ctedra:

3636

Matrices - Operaciones
Escritura de una matriz
for i:= 1 to 10 do for j:= 1 to 10 do writeln(Matriz[i,j] ) El recorrido de las matrices puede realizarse tanto por filas como por columnas, de acuerdo al problema a resolver.

Algoritmos y Programacin I - Ctedra:

3737

Matrices - Ejemplos resueltos


Ej4. Un instituto desea controlar los resultados de los alumnos en las distintas asignaturas de la facultad de Ingeniera. El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por asignatura.

Las asignaturas estn codificadas de 1 a 6 y hay 30 alumnos.

Algoritmos y Programacin I - Ctedra:

3838

Matrices - Ejemplos resueltos


Program Ej4; const max_fila = 6 ; max_col = 30; type t_tabla = array[1.. max_fila,max_col ] of char; var i, j: integer; tabla: t_tabla; suma: integer; prom_al, prom_mat:real; begin for i:= 1 to max_fila do for j:= 1 to max_fila do writeln(Ingrese la nota para la materia, i, del alumno, j); Algoritmos y Programacin I - Ctedra: 3939

Matrices - Ejemplos resueltos


for i:= 1 to max_fila do begin suma:=0; for j:= 1 to max_col do suma:= suma + tabla[i,j]; prom_mat [i] : =suma /i; end; for i:= 1 to max_col do begin suma:=0; for j:= 1 to max_fila do suma:= suma + tabla[i,j]; prom_al [i] : =suma /i; end; Algoritmos y Programacin I - Ctedra: 4040

Matrices - Ejemplos resueltos


writeln (La suma es ,suma); for i := 1 to max_fila do writeln (El promedio de calificaciones para la asignatura, i, es, prom_mat[i]); end. for j := 1 to max_col do writeln (El promedio de calificaciones para el alumno, j, es, prom_al[j]); end.

Algoritmos y Programacin I - Ctedra:

4141

Arreglos multidimesionales
As como hemos trabajado con vectores (arreglos unidemsionales) y matrices (arreglos unideimesionales), es posible trabajar con arreglos de ms de dos dimensiones, los que son denominados arreglos multidimensionales.

Ejemplos de problemas de aplicacin de arreglos multidimesionales


Se desea escribir un programa que permita manejar la informacin de habitantes de un complejo habitacional. El mismo posee 7 torres; a su vez cada torre posee 20 pisos y cada piso 6 departamentos. Se desea saber: a) Cantidad total de habitantes del complejo b) Cantidad promedio de habitantes por piso de cada torre c) Cantidad promedio de habitantes por torre

Algoritmos y Programacin I - Ctedra:

4242

Вам также может понравиться