Professional Documents
Culture Documents
40 Algoritmos y Programacin I
Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina
Sntesis Terica
Ctedra: Ing. Domingo T. Mandrafina
Indice
Vectores y Matrices
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.
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: Ing. Domingo T. Mandrafina 5
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: Ing. Domingo T. Mandrafina 6
Vectores y Matrices
Reales Enteros Char Boolean Enumerados String arrays set record file
7
Estticas
Complejas
Dinmicas (punteros)
Algoritmos y Programacin I - Ctedra: Ing. 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 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: Ing. Domingo T. Mandrafina 8
Vectores
Elementos Mi_vector 9 5 6 2 4 8 3
Nombre de la variable
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
10
Vectores
Ejemplo 1 - Diagrama de Jackson
Ejemplo 1
Muestra resultados
11
Vectores - Ejemplo1
Program Ejemplo1; {Version 1} type Declaracin del tipo del arreglo 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 Lectura de los elementos del arreglo read(vec_sumandos[i] ) for i := 1 to 10 do suma:= suma +vec_sumandos[i]; writeln (La suma de los nmeros es, suma); Suma de los elementos end.
Algoritmos y Programacin I - Ctedra: Ing. Domingo T. Mandrafina 12
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: Ing. Domingo T. Mandrafina
13
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: Ing. Domingo T. Mandrafina 14
Vectores - Declaracin
Luego de la declaracin del tipo, se declara la variable. formato
var
nombre_variable: nombre_del_tipo;
15
Vectores - Declaracin
Ejemplos de declaraciones: Ej1:
type
Valores = array[ -10..10 ] of real;
16
Vectores - Declaracin
Ejemplos de declaraciones: Ej2: const
Max= 500;
type
T_Texto = array[ 1..Max ] of char;
17
18
const
longitud = 40; altura = 30; type horizontal = 1..Longitud; T_Lnea = Array [ horizontal ] of char; var Linea: T_Linea
19
20
Vectores - Operaciones
Con la siguiente declaracin:
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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina 21
Vectores - Operaciones
Escritura de un vector
for i:= 1 to 30 do writeln(Notas[i] )
22
Vectores - Operaciones
Con la siguiente declaracin:
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 Programacin I - Ctedra: Ing. Domingo T. Mandrafina 23
24
25
26
28
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.
30
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)
31
Matrices
Mi_Matriz 9 5 6 2 4 8 3 9 5 6 2 4 8 3 9 5 6 2 4 8 3
Nombre de la variable
32
Matrices - Declaraciones
Ejemplos de declaraciones:
Ej1:
type
T_matriz = array[ 1..10, 1..10 ] of real;
33
Matrices - Declaraciones
Ejemplos de declaraciones:
Ej2:
type
T_matriz = array[ 1..10 ] of array [ 1..10 ] of real;
34
Matrices - Declaraciones
Ejemplos de declaraciones:
Ej3:
type
T_filas = array[ 1..10 ] of of real; T_Matriz = array[ 1..10 ] of of T_filas;
35
Matrices - Operaciones
Con la siguiente declaracin:
type T_matriz = array[ 1..10 ] of array [ 1..10 ] of real; var Matriz: valores;
36
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.
37
38
41
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.