La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

COMPUTACION 2009 Clase 6 Clase 6.

Presentaciones similares


Presentación del tema: "COMPUTACION 2009 Clase 6 Clase 6."— Transcripción de la presentación:

1 COMPUTACION 2009 Clase 6 Clase 6

2 Tipos de Datos PASCAL Estructurados Simples Archivos Registros
Arreglos Primitivos N-dimensionales Vectores No primitivos String Boolean Matrices Char Real Integer

3 Computación - Facultad de Ingeniería
Marca Cilindrada Precio Stock HONDA $ HONDA $ SUZUKI $ HARLEY_D $ KAWASAKI $ 4/16/2017 Computación - Facultad de Ingeniería

4 Computación - Facultad de Ingeniería
Problema Almacenar toda la información anterior en memoria. Si bien se puede almacenar en variables simples, no es una solución de carácter general. Una buena solución es almacenar la información en una variable estructurada 4/16/2017 Computación - Facultad de Ingeniería

5 Estructura para guardar datos
SUZUKI HONDA HARLEY_D KAWASAKI 4/16/2017 Computación - Facultad de Ingeniería

6 Estructura para guardar datos
KAWASAKI HONDA SUZUKI HARLEY_D Marca_motos 4/16/2017 Computación - Facultad de Ingeniería

7 Computación - Facultad de Ingeniería
DATOS ESTRUCTURADOS El usuario puede combinar lógicamente datos simples para formar estructuras compuestas que representen apropiadamente la información a procesar. Un tipo estructurado difiere de un tipo simple en que las variables de un tipo estructurado tienen mas de una componente. 4/16/2017 Computación - Facultad de Ingeniería

8 Computación - Facultad de Ingeniería
DATOS ESTRUCTURADOS Cada componente de un tipo estructurado es una variable que puede tener una estructura simple o estructurada. En el nivel mas bajo, las componentes de una variable estructurada tienen tipos simples (y cada una de ellas pueden ser usadas como variables simples: asignadas, leidas, etc.) 4/16/2017 Computación - Facultad de Ingeniería

9 Computación - Facultad de Ingeniería
DATOS ESTRUCTURADOS Un tipo de dato estructurado se caracteriza por el(los) tipo(s) de sus componentes y, sobre todo, por el método de estructuración. Cada uno de estos métodos es una opción que puede manejar el programador a traves de la sección TYPE. Un 4/16/2017 Computación - Facultad de Ingeniería

10 Computación - Facultad de Ingeniería
DATOS ESTRUCTURADOS Por lo tanto, todos los datos estructurados deben, en última instancia, ser construidos a partir de datos primitivos. Ejemplo: el número complejo toma la forma de un par ordenado de números reales. 4/16/2017 Computación - Facultad de Ingeniería

11 Computación - Facultad de Ingeniería
DATOS ESTRUCTURADOS Una estructura de datos es un conjunto de datos reunidos bajo un único nombre colectivo (su identificador). Los tipos estructurados de PASCAL que veremos son: Arreglos (ARRAY) Registros (RECORDS) Archivos (FILES) Un 4/16/2017 Computación - Facultad de Ingeniería

12 Computación - Facultad de Ingeniería
Estructura de arreglo HONDA SUZUKI HARLEY_D KAWASAKI Todas las componentes son del mismo tipo (string[8]) Son 4 componentes Marca_motos 4/16/2017 Computación - Facultad de Ingeniería

13 Computación - Facultad de Ingeniería
Método de estructuración de los ARREGLOS Un arreglo es una colección ordenada de variables todas las cuales tienen el mismo tipo (esto es, tienen un tipo homogéneo). Cada uno de los elementos de la colección se llaman componentes del arreglo. Los arreglos poseen un número fijo de componentes. 4/16/2017 Computación - Facultad de Ingeniería

14 Computación - Facultad de Ingeniería
ARREGLOS: propiedades 1. Todas las componentes poseen el mismo tipo de dato. El tipo de componentes de Marca_motos es string[8] 4/16/2017 Computación - Facultad de Ingeniería

15 Computación - Facultad de Ingeniería
ARREGLOS: propiedades 2. Los arreglos poseen dimensión y se reconoce por la cantidad de índices que posee el arreglo. Un índice indica dimensión 1 y representa una columna de datos, un arreglo de dimensión 2 representa una tabla de datos dispuesta en filas y columnas, un arreglo de dimensión 3 representa una tabla de datos el múltiples páginas, etc. . La variable Marca_motos tiene una estructura con una dimension (un índice) 4/16/2017 Computación - Facultad de Ingeniería

16 Computación - Facultad de Ingeniería
ARREGLOS: propiedades Array[0..4] Array[0..3;0..4] Array[0..2,0..3,0..4] n=1 n=2 n=3 2. Los arreglos poseen dimensión: n=1: dimensión 1 (arreglo unidimensional) n=2: dimensión 2 (arreglo bidimensional) n=3: dimensión 3 (arreglo tridimensional) 4/16/2017 Computación - Facultad de Ingeniería

17 Computación - Facultad de Ingeniería
ARREGLOS: propiedades 3. Los arreglos tienen límites inferior y superior para cada dimensión. Estos límites determinan la extensión de los valores que son usados como subíndices para la dimensión. El valor de cada límite puede ser positiva, negativa o cero. Los límites de una dimensión se definen en una especificación de arreglo. El limite inferior de Marca_motos es 1 y el límite superior es 4 4/16/2017 Computación - Facultad de Ingeniería

18 Computación - Facultad de Ingeniería
ARREGLOS: propiedades 4. El tamaño de un arreglo (esto es, el número de componentes) se indica cuando se define el arreglo y queda invariable a partir de ese momento. El cálculo del número de componentes se logra multiplicando entre si la cantidad de elementos que el arreglo posee en cada dimensión. El tamaño de Marca_motos es 4 4/16/2017 Computación - Facultad de Ingeniería

19 Computación - Facultad de Ingeniería
ARREGLOS: propiedades 5. Cada componente de un arreglo se denota explícitamente, y es accedida, directamente, mencionando el nombre del arreglo seguido de una expresión encerrada entre corchetes , a la que llamaremos índice del arreglo ( o simplemente subíndice). Ejemplo para denotar la segunda componente (suzuki): Marca_motos[2] 4/16/2017 Computación - Facultad de Ingeniería

20 Computación - Facultad de Ingeniería
Arreglos unidimensionales (o vectores) Componentes VEC Identificador del vector Subíndices Inicialmente usaremos arreglos unidimensionales de datos simples: se almacenó 6 datos reales (con variables simples deberíamos usar 6 identificadores de variable simple para tenerlos todos en forma simultanea en memoria). Posteriormente veremos vectores mas complejos. 4/16/2017 Computación - Facultad de Ingeniería

21 Computación - Facultad de Ingeniería
Arreglos unidimensionales (o vectores) VEC 1.- Todas las componentes son reales 2.- La variable Vec tiene una estructura unidimensional 3.- La extensión es 1,2,3,4,5,6 4.- El tamaño de Vec es 6 5.- Acceso mediante nombre de la estructura e índice entre corchetes. 4/16/2017 Computación - Facultad de Ingeniería

22 Computación - Facultad de Ingeniería
Tipos de datos asociados a un vector Claramente notamos que un vector tiene asociado DOS tipos de datos: 1)TIPO BASE ( o TIPO COMPONENTE): es el tipo de los elementos o componentes (visto como propiedad 5). 2)TIPO INDICE: es el tipo de los valores usados para acceder individualmente a los elementos del vector (subíndices). 4/16/2017 Computación - Facultad de Ingeniería

23 Computación - Facultad de Ingeniería
Declaración de tipo de un vector TYPE VECTOR = array[1..20] of real; Tipo indice Identificador de tipo Tipo base En la sección TYPE declaramos el identificador de tipo, la palabra reservada array, un subrango para indicar los límites de la extensión de los valores que seran usados como subíndices para la única dimensión y el tipo base (el tipo de las componentes). El tipo índice debe ser escalar 4/16/2017 Computación - Facultad de Ingeniería

24 Computación - Facultad de Ingeniería
Vector: una dimensión = un índice Extensión con un subrango TYPE VECTOR = array[1..20] of real; Limite inferior del índice Limite superior del índice Todas las variables del tipo VECTOR podrán tener una extensión máxima de 1,2,3,4,5,6,7, ,18,19,20 Todas las variables del tipo VECTOR podrán tener un tamaño de hasta 20 componentes 4/16/2017 Computación - Facultad de Ingeniería

25 Computación - Facultad de Ingeniería
Vector: una dimensión = un índice TYPE NOMBRE = array[-5..5] of string[8]; Limite inferior del índice Limite superior del índice Todas las variables del tipo NOMBRE podrán tener una extensión máxima de -5,-4,-3,-2,-1,0,1,2,3,4,5 Todas las variables del tipo NOMBRE podrán tener un tamaño de hasta 11 componentes 4/16/2017 Computación - Facultad de Ingeniería

26 Computación - Facultad de Ingeniería
Declaración de variables con estructura de vector: ejemplo TYPE VECTOR = array[1..20] of real; VAR VEC1,VEC2:VECTOR; BEGIN …………. Cuando se declara variables de un tipo estructurado, se le indica al sistema que reserve espacio en memoria, para cada una de ellas. Para VEC1 se reserva 20 posiciones reales. Lo mismo para VEC2. 4/16/2017 Computación - Facultad de Ingeniería

27 Computación - Facultad de Ingeniería
Subíndices de un vector: ejemplos TYPE VECTOR= array[1..20] of REAL; Index= -5..5; NOMBRE= array [Index] of STRING[8]; Fruta=(manzana,naranja,pera,uvas,kiwi); Estacion=(otonio,invierno,primavera,verano); COSECHA=array[estacion] of fruta; {La extensión es otonio,invierno, primavera,verano} VAR Vec:VECTOR; Nombre_motos:NOMBRE; A:COSECHA; I:integer; C:array[0..100] of real; Si bien puede usarse el tipo array sin identificador de tipo, en general no se aconseja esta práctica. Solo se justifica si se lo usa para una única variable. 4/16/2017 Computación - Facultad de Ingeniería

28 Computación - Facultad de Ingeniería
Subíndices de un vector: ejemplos (sigue) BEGIN Nombre_motos[1]:=‘HONDA’; Nombre_motos[-5]:= ‘GILERA’; A[invierno]:=naranja; {En invierno tenemos naranjas frescas !} A[verano]:=uvas VEC[3]:=3+VEC[10]-VEC[5]*2; I:=15; C[I*3]:=VEC[3]/VEC[1]; READLN(Nombre_motos[0]); WRITELN(‘El resultado es =‘,C[45]); ………… 4/16/2017 Computación - Facultad de Ingeniería

29 Computación - Facultad de Ingeniería
Arreglos unidimensionales: almacenamiento A través de la lectura de un vector podemos almacenar valores en las componentes: FOR J:= 1 TO 6 DO READLN(VEC[J]); Igualmente mediante la asignación directa : VEC[4]:= ;{se modificó el contenido de la 4ta componente} FOR I:=1 TO 6 DO VEC[I]:=0; {todas las componentes toman el valor 0} 4/16/2017 Computación - Facultad de Ingeniería

30 Computación - Facultad de Ingeniería
Arreglos unidimensionales: acceso Los subíndices son computables, i.e., pueden ser expresiones (de un tipo ordinal) mas complejas que una constante o variable. X:= VEC[I+1]-VEC[J-2]; El tiempo que se requiere para extraer una componente no depende del valor del selector(índice); por lo que el arreglo se denomina estructura de acceso aleatorio. 4/16/2017 Computación - Facultad de Ingeniería

31 Computación - Facultad de Ingeniería
Arreglos unidimensionales: acceso Para acceder (o extraer) los elementos de esta estructura lo hacemos a través del nombre del vector seguido por el subíndice entre corchetes. En nuestro ejemplo, los accedemos así: VEC[1], VEC[2], , VEC[6] Y usamos a cada componente como variables de tipo real: A:= VEC[1]+VEC[4] * 3.4; FOR I:=1 TO 6 DO WRITELN(VEC[I]); 4/16/2017 Computación - Facultad de Ingeniería

32 Computación - Facultad de Ingeniería
Lectura de un vector de N componentes PROGRAM lect_vect; TYPE Vector=array[1..50] of real; VAR N,i:integer; A:vector; BEGIN Write('Cant.elem. del vector( <=50 )'); Readln(N); For i:=1 to N do Begin Write('Ingrese el elemento ',i); Readln(A[i]) End END. Se ingresa componente a componente 4/16/2017 Computación - Facultad de Ingeniería

33 Computación - Facultad de Ingeniería
Observación El tamaño de los arreglos PASCAL no pueden cambiar durante la ejecución del programa (i.e. poseen asignación estática de memoria). A fin de agilizar la modificación del tamaño de un vector se puede usar una constante: CONST Numero_maximo=100; TYPE Vector_tres=array[1..numero_maximo] of integer; 4/16/2017 Computación - Facultad de Ingeniería

34 Computación - Facultad de Ingeniería
Ejemplos: Escriba y ejecute programas PASCAL para: Luego de ingresar un vector de enteros de N componentes: 1) Sumar todos los componentes y almacenar el resultado a continuación del último componente. 2)Colocar en otro vector una P si la componente correspondiente es par, y colocar una I si es impar. 3) Agregar un elemento en la posición k-ésima. 4/16/2017 Computación - Facultad de Ingeniería

35 program primero; uses crt; TYPE vector=array [1..30] of longint; VAR vec:vector; i,n:integer; suma:longint; BEGIN CLRSCR; WRITE( 'Ingrese cantidad de elementos <=29 '); READLN(n); FOR i:=1 to n do begin WRITE('Ingrese un elemento entero[',i,'] '); READLN(vec[i]) end; suma:=0; FOR i:=1 to n do suma:=suma+vec[i]; vec[n+1]:=suma; FOR i:=1 TO n+1 DO WRITELN(vec[i],' '); READLN END. Sumar todos los componentes y almacenar el resultado a continuación del último componente.

36 program segundo; TYPE vector=array [1..30] of longint; pi=array [1..30] of char; VAR vec:vector; control:pi; i,n:integer; BEGIN WRITE( 'Ingrese cantidad de elementos <=29 '); READLN(n); FOR i:=1 to n do begin WRITE('Ingrese un elemento entero[',i,'] '); READLN(vec[i]) end; FOR i:=1 TO n DO IF odd(vec[i]) THEN control[i]:=‘I' ELSE control[i]:=‘P'; FOR i:=1 TO n DO WRITE(vec[i],' '); WRITELN; WRITE(control[i],' '); READLN END. Colocar en otro vector una P si la componente correspondiente es par, y colocar una I si es impar.

37 Agregar un elemento en la posición k-ésima.
program tercero; TYPE vector=array [1..30] of longint; VAR vec:vector; i,n,k:integer; nuevo:longint; BEGIN WRITE( 'Ingrese cantidad de elementos <=29 '); READLN(n); FOR i:=1 to n do begin WRITE('Ingrese un elemento entero[',i,'] '); READLN(vec[i]) end; WRITE('Ingrese el elemento que desea intercalar '); READLN(nuevo); REPEAT WRITE('Ingrese posicion donde desea intercalarlo '); READLN(k); UNTIL (k>=1) and (k<=n); FOR i:=n DOWNTO k DO vec[i+1]:=vec[i]; vec[k]:=nuevo; FOR i:=1 to n+1 DO write(vec[i]); WRITELN END. Agregar un elemento en la posición k-ésima.

38 Computación - Facultad de Ingeniería
Funciones low y high TYPE vector=array [1..30] of longint; VAR vec:vector; Begin vec[32]:=23456; Range check error !!! La extensión es de 1 a 30 Para verificar el rango puede usar las funciones low y high que devuelven los extremos de la extensión (o rango). Writeln(low(vec)); {devuelve 1} Writeln(high(vec)); {devuelve 30} 4/16/2017 Computación - Facultad de Ingeniería

39 Computación - Facultad de Ingeniería
Arrays y strings Los strings son vectores de caracteres. Es posible acceder a los caracteres de un string mediante una sintaxis de array. Los string están indexados desde 0, pero el primer carácter se encuentra en la posición 1. Cadena:=‘Este es un ejemplo de string’; C:=cadena[4]; {e} D:=cadena[10]; {n} Writeln(cadena[0]); Error:element zero can’t be accessed 4/16/2017 Computación - Facultad de Ingeniería

40 VECTORES PARALELOS: ejemplo
Sean los siguientes datos: Apellido y n Depto Expensas Pagó? MARTINEZ,Juan A $ Si GONZALEZ Pedro B $ No ALONSO Maria D $ Si ALONSO Marcelo H $ si Se desea tener un listado de los propietarios que no han pagado las expensas. Imprimir apellido y nombre, departamento y deuda.

41 VECTORES PARALELOS: Apellido y n. Depto. Expensas Pagó?
MARTINEZ,Juan A $ Si GONZALEZ Pedro B $ No ALONSO Maria D $ Si ALONSO Marcelo H $ si AyN Depto Expen Pago Colección de datos del mismo tipo: string Colección de datos del mismo tipo: string Colección de datos del mismo tipo: real Colección de datos del mismo tipo: booleano

42 VECTORES PARALELOS: Apellido y n. Depto. Expensas Pagó?
MARTINEZ,Juan A $ Si GONZALEZ Pedro B $ No ALONSO Maria D $ Si ALONSO Marcelo H $ si AyN Depto Expen Pago (vector de (vector de (vector de (Vector String) string) reales) booleano)

43 Computación - Facultad de Ingeniería
Vectores paralelos Los vectores paralelos pueden ser usados para almacenar grupos de datos de diferentes tipos. Las características asociadas a cada grupo pueden ser representadas apropiadamente con esta estructura de datos. Por ejemplo, un grupo puede estar constituido por los datos de un propietario, o datos sobre un libro o datos sobre un alumno, etc. MARTINEZ,Juan 4A $ Si Grupo de datos de un propietario 4/16/2017 Computación - Facultad de Ingeniería

44 Computación - Facultad de Ingeniería
Vectores paralelos Cada una de las características de un grupo (por ejemplo Nombre, Dirección, Autor, etc.) deben almacenarse y recuperarse de manera tal de mantener la integridad de los datos. MARTINEZ,Juan 4A $ Si Estos datos están asociados entre si (son todos del mismo propietario) y NO deben mezclarse con los datos de otro propietario. 4/16/2017 Computación - Facultad de Ingeniería

45 Computación - Facultad de Ingeniería
Vectores paralelos Como se tiene varios grupos de datos (p.e. varios propietarios), se puede almacenar en un vector la misma característica correspondiente a cada grupo. Esto se puede hacer con cada una de las características. De ahí la noción de vector paralelo. Para almacenar y recuperar los ítems de cada unidad, se usan componentes del mismo índice en cada uno de los vectores paralelos. 4/16/2017 Computación - Facultad de Ingeniería

46 VECTORES PARALELOS: ejemplo
Apellido y n Depto Expensas Pagó? Indice MARTINEZ,Juan A $ Si GONZALEZ Pedro B $ No ALONSO Maria D $ Si ALONSO Marcelo H $ si 1 2 3 4 Si el índice es igual a 1, el primer grupo de datos está representada en las primeras componentes de cada uno de los cuatro vectores.

47 Program vect_paralelo;
Type Vec1=array[1..100] of string[25]; Vec2=array[1..100] of real; Vec3=array[1..100] of boolean; Var Depto,AyN:vec1; Expen:vec2; Pago:vec3; N,I,J,k:integer; Aux:char; Begin Write(‘Cant. de deptos’);Readln(N);

48 For i:=1 to N do Begin Writeln(‘Departamento ‘,i); Write(‘Apellido y nom.’);readln(AyN[i]); Write(‘Nro. De departamento’); readln(depto[i]); Write( ‘Expensas ‘); readln(expen[i]); Write(‘Ingrese S si pago, N sino pago’); REPEAT Readln(aux) UNTIL aux=‘S’ or aux=‘N’; pago[i]:=aux=‘S’; end; for i:=1 to N do if not(pago[i]) then writeln(AyN[i],depto[i],expen[i]); end.


Descargar ppt "COMPUTACION 2009 Clase 6 Clase 6."

Presentaciones similares


Anuncios Google