Vectores matricesi

32
VECTORES Y MATRICES VECTORES Y MATRICES 1

Transcript of Vectores matricesi

VECTORES Y MATRICESVECTORES Y MATRICES

1

Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 2

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 3

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 4

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 5

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 6

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 7

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 8

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)

• formato

typenombre_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 9

Vectores - DeclaraciónVectores - Declaración

• Luego de la declaración del tipo, se declara la variable.

• formato

varnombre_variable: nombre_del_tipo;

Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 10

Vectores - DeclaraciónVectores - Declaración

• Ejemplos de declaraciones:

• Ej1:

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

var

precios: valores;

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

Vectores - DeclaraciónVectores - Declaración

• Ejemplos de declaraciones:

• Ej2:

const

Max= 500;

typeT_Texto = array[ 1..Max ] of char;

var

Texto: T_Texto;

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

Vectores - Manejo de índicesVectores - 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. Domingo T. Mandrafina 13

Vectores - Manejo de índicesVectores - 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. Domingo T. Mandrafina 14

Vectores - Manejo de índicesVectores - 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. Domingo T. Mandrafina 15

Vectores - OperacionesVectores - 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. Domingo T. Mandrafina 16

Vectores - OperacionesVectores - Operaciones

• Escritura de un vector

for i:= 1 to 30 do writeln(Notas[i] )

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

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 18

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 19

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 20

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] > promediothen

writeln (´El número´, numeros[i], ´es mayor al promedio´);end.

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

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 22

Vectores - Ejemplos resueltosVectores - Ejemplos resueltos

for 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 23

MatricesMatrices

9 35 4 826

9 35 4 826

9 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 24

Matrices - DeclaracionesMatrices - Declaraciones

• Ejemplos de declaraciones:

• Ej1:

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

var

Matriz: valores;

Algoritmos y Programación I - Cátedra: Ing. Domingo T. Mandrafina 25

Matrices - DeclaracionesMatrices - Declaraciones

• Ejemplos de declaraciones:

• Ej2:

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

var

Matriz: valores;

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

Matrices - DeclaracionesMatrices - Declaraciones

• Ejemplos de declaraciones:

• Ej3:

typeT_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. Domingo T. Mandrafina 27

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 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. Domingo T. Mandrafina 28

Matrices - OperacionesMatrices - 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. Domingo T. Mandrafina 29

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 30

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 31

Matrices - Ejemplos resueltosMatrices - Ejemplos resueltos

for 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 32

Matrices - Ejemplos resueltosMatrices - 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.