Está en la página 1de 42

75.

40 Algoritmos y Programación I

Síntesis Teórica

Cátedra: Ing. Domingo T. Mandrafina

Algoritmos y Programación I - Cátedra: Ing.


Domingo T. Mandrafina
75.40 Algoritmos y Programación I

Síntesis Teórica

Cátedra: Ing. Domingo T. Mandrafina

Algoritmos y Programación I - Cátedra: Ing.


Domingo T. Mandrafina
Indice

• Vectores y Matrices 4

Algoritmos y Programación I - Cátedra: Ing. 3


Domingo T. Mandrafina
Vectores y Matrices
• Vectores: Introducción
– Con lo aprendido hasta ahora resolvamos los
siguientes problemas:
• Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los
números ingresados que sean mayores que él.
• Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.

Algoritmos y Programación I - Cátedra: Ing. 4


Domingo T. Mandrafina
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 resolución de ambos es
necesario almacenar la totalidad de los datos a procesar.
• No sería 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 Programación I - Cátedra: Ing. 5


Domingo T. Mandrafina
Vectores y Matrices
• Una estructura de datos es un conjunto de datos con un
cierto orden.
• Las estructuras de datos pueden ser dinámicas o
estáticas.
– Estáticas: aquellas a las que se le asigna una cantidad fija
de memoria de acuerdo a lo definidio en la declaración de la
variable.
– Dinámicas: son aquellas cuyo tamaño en memoria aumenta
o disminuye en tiempo de ejecución de acuerdo a las
necesidades del programa.

Algoritmos y Programación I - Cátedra: Ing. 6


Domingo T. Mandrafina
Vectores y Matrices

Reales
Simples Enteros
Char
Tipos de Boolean
Estructuras Enumerados
Estáticas

String
arrays
Complejas set
record
Dinámicas (punteros) file
Algoritmos y Programación I - Cátedra: Ing. 7
Domingo T. Mandrafina
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 características:
– 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 Programación I - Cátedra: Ing. 8


Domingo T. Mandrafina
Vectores

Elementos

Mi_vector 9 5 6 2 4 8 3

Nombre de
la variable Posición : 1
Contenido : Mi_vector[1] = 9

Algoritmos y Programación I - Cátedra: Ing. 9


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 10


Domingo T. Mandrafina
Vectores

• Ejemplo 1 - Diagrama de Jackson

Ejemplo 1

Lectura del Suma de Muestra


arreglo los elementos resultados

Algoritmos y Programación I - Cátedra: Ing. 11


Domingo T. Mandrafina
Vectores - Ejemplo1
Program Ejemplo1; {Version 1}
type
sumandos = array[1..10] of integer; Declaración del tipo del arreglo
var
suma, i : integer;
vec_sumandos : sumandos;
begin Declaración de la variable arreglo
suma := 0;
for i:= 1 to 10 do
read(vec_sumandos[i] )
for i := 1 to 10 do
suma:= suma +vec_sumandos[i]; Lectura de los elementos del arreglo
writeln (´La suma de los números es´, suma);
end.

Suma de los elementos

Algoritmos y Programación I - Cátedra: Ing. 12


Domingo T. Mandrafina
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 números es´, suma);
end.

Algoritmos y Programación I - Cátedra: Ing. 13


Domingo T. Mandrafina
Vectores - Declaración
• Como ya dijimos anteriormente, los arreglos son
estructuras de datos, por lo tanto las mismas deben ser
declaradas. Esta operación se realiza en la seccción
“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 Programación I - Cátedra: Ing. 14


Domingo T. Mandrafina
Vectores - Declaración
• Luego de la declaración del tipo, se declara la
variable.
• formato
var
nombre_variable: nombre_del_tipo;

Algoritmos y Programación I - Cátedra: Ing. 15


Domingo T. Mandrafina
Vectores - Declaración
• Ejemplos de declaraciones:
• Ej1:
type
Valores = array[ -10..10 ] of real;
var
precios: valores;

Algoritmos y Programación I - Cátedra: Ing. 16


Domingo T. Mandrafina
Vectores - Declaración
• Ejemplos de declaraciones:
• Ej2:

const
Max= 500;
type
T_Texto = array[ 1..Max ] of char;
var
Texto: T_Texto;

Algoritmos y Programación I - Cátedra: Ing. 17


Domingo T. Mandrafina
Vectores - Manejo de índices

• Asignación de valores
Texto[3] := ´a´;
Precios[0] := 23.50;

Como ya dijimos, los índices de un arreglo pueden ser:


entero, lógico, caracter, enumerado o subrango.

Algoritmos y Programación I - Cátedra: Ing. 18


Domingo T. Mandrafina
Vectores - Manejo de índices
Ej3:
const
longitud = 40;
altura = 30;
type
horizontal = 1..Longitud;
T_Línea = Array [ horizontal ] of char;
var
Linea: T_Linea

Algoritmos y Programación I - Cátedra: Ing. 19


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 20


Domingo T. Mandrafina
Vectores - Operaciones

• Con la siguiente declaración:


type
T_Notas = array [1..30] of integer;
var
Notas: T_Notas;

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

Algoritmos y Programación I - Cátedra: Ing. 21


Domingo T. Mandrafina
Vectores - Operaciones

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

Algoritmos y Programación I - Cátedra: Ing. 22


Domingo T. Mandrafina
Vectores - Operaciones

• Con la siguiente declaración:


type
T_Notas = array [1..30] of integer;
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 Programación I - Cátedra: Ing. 23


Domingo T. Mandrafina
Vectores - Ejemplos resueltos
Ej2- Dados 50 números enteros, obtener el promedio de
ellos. Mostrar por pantalla dicho promedio y los números
ingresados que sean mayores que el mismo.
Ej3 - Dados n números, obtener e imprimir la suma de todos
ellos. A continuación mostrar por pantalla todos los
sumandos.

Algoritmos y Programación I - Cátedra: Ing. 24


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 25


Domingo T. Mandrafina
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 número´, numeros[i], ´es mayor al promedio´);
end.

Algoritmos y Programación I - Cátedra: Ing. 26


Domingo T. Mandrafina
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 números a sumar. (Como máximo, 100 números´);
readln(n);

Algoritmos y Programación I - Cátedra: Ing. 27


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 28


Domingo T. Mandrafina
Vectores - Vectores Paralelos
• Dos o más arreglos que utilizan el mismo subíndice para
acceder a elementos de distintos arreglos, se denominan
arreglos paralelos. Estos arreglos pueden procesarse
simultáneamente.
• 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

Algoritmos y Programación I - Cátedra: Ing. 29


Domingo T. Mandrafina
Matrices
• Resolvamos el siguiente problema:
– Un instituto desea controlar los resultados de los
alumnos en las distintas asignaturas de la facultad de
Ingeniería. 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 están codificadas de 1 a 6 y hay 30
alumnos.

Algoritmos y Programación I - Cátedra: Ing. 30


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 31


Domingo T. Mandrafina
Matrices

Mi_Matriz 9 5 6 2 4 8 3
9 5 6 2 4 8 3
Nombre de 9 5 6 2 4 8 3
la variable

Posición : 3,1
Contenido : Mi_vector[3,1] = 9

Algoritmos y Programación I - Cátedra: Ing. 32


Domingo T. Mandrafina
Matrices - Declaraciones

• Ejemplos de declaraciones:
• Ej1:
type
T_matriz = array[ 1..10, 1..10 ] of real;
var
Matriz: valores;

Algoritmos y Programación I - Cátedra: Ing. 33


Domingo T. Mandrafina
Matrices - Declaraciones

• Ejemplos de declaraciones:
• Ej2:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;
var
Matriz: valores;

Algoritmos y Programación I - Cátedra: Ing. 34


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 35


Domingo T. Mandrafina
Matrices - Operaciones
• Con la siguiente declaración:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;
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 Programación I - Cátedra: Ing. 36


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 37


Domingo T. Mandrafina
Matrices - Ejemplos resueltos
Ej4. Un instituto desea controlar los resultados de los alumnos en
las distintas asignaturas de la facultad de Ingeniería. 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 están codificadas de 1 a 6 y hay 30 alumnos.

Algoritmos y Programación I - Cátedra: Ing. 38


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 39


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 40


Domingo T. Mandrafina
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 Programación I - Cátedra: Ing. 41


Domingo T. Mandrafina
Arreglos multidimesionales
Así como hemos trabajado con vectores (arreglos unidemsionales) y matrices
(arreglos unideimesionales), es posible trabajar con arreglos de más de dos dimensiones, los
que son denominados arreglos multidimensionales.

Ejemplos de problemas de aplicación de arreglos multidimesionales


Se desea escribir un programa que permita manejar la información 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 Programación I - Cátedra: Ing. 42


Domingo T. Mandrafina

También podría gustarte