75.40 algoritmos y programación i
Post on 10-Feb-2016
116 Views
Preview:
DESCRIPTION
TRANSCRIPT
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
75.40 Algoritmos y Programación I75.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 I75.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
3
IndiceIndice
• Vectores y Matrices 4
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
4
Vectores y MatricesVectores 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. Domingo T. Mandrafina
5
Vectores y MatricesVectores 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. Domingo T. Mandrafina
6
Vectores y MatricesVectores 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. Domingo T. Mandrafina
7
Vectores y MatricesVectores y Matrices
Tipos de Estructuras
Estáticas
Dinámicas (punteros)
SimplesRealesEnterosChar BooleanEnumerados
Stringarrayssetrecordfile
Complejas
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
8
VectoresVectores• 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. Domingo T. Mandrafina
9
VectoresVectores
Mi_vector
Nombre de la variable
9 35 4 826
Elementos
Posición : 1Contenido : Mi_vector[1] = 9
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
10
VectoresVectores
• 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. Domingo T. Mandrafina
11
VectoresVectores
Ejemplo 1
Muestra resultados
Lectura delarreglo
• Ejemplo 1 - Diagrama de Jackson
Suma de los elementos
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
12
Vectores - Ejemplo1Vectores - Ejemplo1Program Ejemplo1; {Version 1}typesumandos = array[1..10] of integer;varsuma, i : integer;vec_sumandos : sumandos;beginsuma := 0;for i:= 1 to 10 do
read(vec_sumandos[i] )for i := 1 to 10 do
suma:= suma +vec_sumandos[i];writeln (´La suma de los números es´, suma);end.
Declaración de la variable arreglo
Declaración del tipo del arreglo
Lectura de los elementos del arreglo
Suma de los elementos
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
13
Vectores - Ejemplo1Vectores - Ejemplo1Program Ejemplo1; {Version 2}typesumandos = array[1..10] of integer;varsuma, i : integer;vec_sumandos : sumandos;beginsuma := 0;for i:= 1 to 10 do
beginread(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. Domingo T. Mandrafina
14
Vectores - DeclaraciónVectores - 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)
• formatotype
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. Domingo T. Mandrafina
15
Vectores - DeclaraciónVectores - Declaración
• Luego de la declaración del tipo, se declara la variable.
• formatovar
nombre_variable: nombre_del_tipo;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
16
Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej1:type
Valores = array[ -10..10 ] of real; var
precios: valores;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
17
Vectores - DeclaraciónVectores - Declaración
• Ejemplos de declaraciones:
• Ej2:
constMax= 500;
typeT_Texto = array[ 1..Max ] of char;
varTexto: T_Texto;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
18
Vectores - Manejo de índicesVectores - Manejo de índices
• Asignación de valoresTexto[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. Domingo T. Mandrafina
19
Vectores - Manejo de índicesVectores - Manejo de índices
Ej3:const
longitud = 40;altura = 30;
typehorizontal = 1..Longitud;T_Línea = Array [ horizontal ] of char;
varLinea: T_Linea
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
20
Vectores - Manejo de índicesVectores - Manejo de índices
Ej4:type
DiasSemana = (Lunes, Martes, Miercoles,Jueves, Viernes, Sabado, Domingo );T_Dias = array [DiasSemana] of integer;
varDias: T_Dias;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
21
Vectores - OperacionesVectores - Operaciones
• Con la siguiente declaración:type
T_Notas = array [1..30] of integer;var
Notas: T_Notas;
• Lectura de un vectorfor i:= 1 to 30 do
read(Notas[i] )
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
22
Vectores - OperacionesVectores - Operaciones
• Escritura de un vectorfor i:= 1 to 30 do
writeln(Notas[i] )
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
23
Vectores - OperacionesVectores - 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. Domingo T. Mandrafina
24
Vectores - Ejemplos resueltosVectores - 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. Domingo T. Mandrafina
25
Vectores - Ejemplos resueltosVectores - Ejemplos resueltosProgram Ej2; constmax = 50;typet_numeros = array[1.. max] of integer;varsuma, i : integer;promedio: real;numeros : t_numeros;beginsuma := 0;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
26
Vectores - Ejemplos resueltosVectores - Ejemplos resueltosfor i:= 1 to max do
beginread(numeros[i] )suma:= suma +numeros[i];end;
Promedio:= suma/max;writeln (´El promedio es ´,Promedio´);for i := 1 to 50 do
if numeros[i] > promediothenwriteln (´El número´, numeros[i], ´es mayor al promedio´);
end.
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
27
Vectores - Ejemplos resueltosVectores - Ejemplos resueltosProgram Ej3; constmax = 100;typet_numeros = array[1.. max] of integer;varsuma, i, n : integer;promedio: real;numeros : t_numeros;beginsuma := 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. Domingo T. Mandrafina
28
Vectores - Ejemplos resueltosVectores - Ejemplos resueltosfor i:= 1 to n do
beginread(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. Domingo T. Mandrafina
29
Vectores - Vectores Paralelos 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. Domingo T. Mandrafina
30
MatricesMatrices
• 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. Domingo T. Mandrafina
31
MatricesMatrices
• 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. Domingo T. Mandrafina
32
MatricesMatrices
9 35 4 8269 35 4 8269 35 4 826
Mi_Matriz
Nombre de la variable
Posición : 3,1Contenido : Mi_vector[3,1] = 9
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
33
Matrices - DeclaracionesMatrices - 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. Domingo T. Mandrafina
34
Matrices - DeclaracionesMatrices - 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. Domingo T. Mandrafina
35
Matrices - DeclaracionesMatrices - Declaraciones
• Ejemplos de declaraciones:
• Ej3:type
T_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas;
varMatriz: valores;
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
36
Matrices - OperacionesMatrices - Operaciones
• Con la siguiente declaración:type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var
Matriz: valores;
• Lectura de una matrizfor i:= 1 to 10 do
for j:= 1 to 10 do readln(Matriz[i,j] )
Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina
37
Matrices - OperacionesMatrices - Operaciones
• Escritura de una matrizfor 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. Domingo T. Mandrafina
38
Matrices - Ejemplos resueltosMatrices - 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. Domingo T. Mandrafina
39
Matrices - Ejemplos resueltosMatrices - Ejemplos resueltosProgram Ej4; constmax_fila = 6 ;max_col = 30;typet_tabla = array[1.. max_fila,max_col ] of char;vari, j: integer;tabla: t_tabla;suma: integer;prom_al, prom_mat:real;beginfor 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. Domingo T. Mandrafina
40
Matrices - Ejemplos resueltosMatrices - Ejemplos resueltosfor i:= 1 to max_fila do beginsuma:=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 beginsuma:=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. Domingo T. Mandrafina
41
Matrices - Ejemplos resueltosMatrices - Ejemplos resueltoswriteln (´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. Domingo T. Mandrafina
42
Arreglos multidimesionalesArreglos 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
top related