clase 6 computacion 2009 c lase 6 tipos de datos pascal estructurados simples primitivos no...

48
Clase 6 COMPUTACION 2009 Clase 6

Upload: susana-ana-isabel-montes-lozano

Post on 02-Feb-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

Clase 6 COMPUTACION

2009 Clase

6

Page 2: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

Tipos de Datos Tipos de Datos PASCALPASCAL Tipos de Datos Tipos de Datos PASCALPASCAL EstructuradosEstructurados

SimplesSimples

PrimitivosPrimitivos

No primitivosNo primitivos

IntegerIntegerRealReal CharCharBooleanBooleanStringString

ArchivosArchivos RegistrosRegistros

Arreglos

Vectores

Matrices

N-dimensionales

Page 3: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 3

Marca Cilindrada Precio Stock

HONDA 100 5000 $ 7

HONDA 220 7800.50 $ 2

SUZUKI 450 14000 $ 3

HARLEY_D 800 50000 $ 0

KAWASAKI 650 30000 $ 3

Marca Cilindrada Precio Stock

HONDA 100 5000 $ 7

HONDA 220 7800.50 $ 2

SUZUKI 450 14000 $ 3

HARLEY_D 800 50000 $ 0

KAWASAKI 650 30000 $ 3

Page 4: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 4

ProblemaProblema

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 variable estructuradaestructurada

Page 5: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 5

Estructura para guardar Estructura para guardar datosdatos

KAWASAKIHONDA SUZUKI HARLEY_D

Page 6: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 6

Estructura para guardar Estructura para guardar datosdatos

Marca_motos

1 2 3 4

KAWASAKIHONDA SUZUKI HARLEY_D

Page 7: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 7

DATOS ESTRUCTURADOSDATOS 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 masmas de una componente.

Page 8: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 8

DATOS ESTRUCTURADOSDATOS 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.)

Page 9: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 9

Un

DATOS ESTRUCTURADOSDATOS 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.

Page 10: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 10

DATOS ESTRUCTURADOSDATOS 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.

Page 11: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 11

Un

DATOS ESTRUCTURADOSDATOS 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)

Page 12: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 12

Estructura de arregloEstructura de arreglo

HONDA SUZUKI HARLEY_D KAWASAKI

Marca_motos

1 2 3 4

Todas las componentes son del mismo tipo (string[8])

Son 4 componentes

Page 13: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 13

Método de estructuración de Método de estructuración de los ARREGLOSlos ARREGLOS

Un arreglo es una colección ordenada de variables todas las cuales tienen el mismo mismo tipo 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 fijonúmero fijo de componentes.

Page 14: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 14

ARREGLOS: propiedadesARREGLOS: propiedades

1. Todas las componentes poseen el mismo tipo de dato.

1. Todas las componentes poseen el mismo tipo de dato.

El tipo de componentes de Marca_motos es string[8]

El tipo de componentes de Marca_motos es string[8]

Page 15: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 15

ARREGLOS: propiedadesARREGLOS: 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. .

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)

La variable Marca_motos tiene una estructura con una dimension (un índice)

Page 16: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 16

ARREGLOS: propiedadesARREGLOS: propiedades

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)

Array[0..4]

Array[0..3;0..4]

Array[0..2,0..3,0..4]

n=1

n=2

n=3

Page 17: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 17

ARREGLOS: propiedadesARREGLOS: 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.

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

El limite inferior de Marca_motos es 1 y el límite superior es 4

Page 18: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 18

ARREGLOS: propiedadesARREGLOS: 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.

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 4El tamaño de Marca_motos es 4

Page 19: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 19

ARREGLOS: propiedadesARREGLOS: 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):

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]Marca_motos[2]

Page 20: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 20

Arreglos unidimensionales (o Arreglos unidimensionales (o vectores)vectores)

-0.3 123.5 0.009 13 -9.08 555.6

Componentes

1 2 3 4 5 6

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.

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.

VEC

Page 21: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 21

Arreglos unidimensionales (o Arreglos unidimensionales (o vectores)vectores)

-0.3 123.5 0.009 13 -9.08 555.6

1 2 3 4 5 6 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.

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.

Page 22: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 22

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).

Tipos de datos asociados a un Tipos de datos asociados a un vectorvector

Page 23: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 23

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).

TYPE VECTOR = array[1..20] of real;

Identificador de tipo

Tipo indice

Tipo base

Declaración de tipo de un vectorDeclaración de tipo de un vector

El tipo índice debe ser escalar

Page 24: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 24

TYPE VECTOR = array[1..20] of real;

Vector: una dimensión = un Vector: una dimensión = un índice índice

Limite inferior del índice

Limite inferior del índice

Limite superior del índice

Limite superior del índice

Todas las variables del tipo VECTOR podrán tener una extensiónextensió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ñotamaño de hasta 20 componentes

Todas las variables del tipo VECTOR podrán tener una extensiónextensió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ñotamaño de hasta 20 componentes

Extensión con un subrango

Page 25: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 25

TYPE NOMBRE = array[-5..5] of string[8];

Vector: una dimensión = un índice Vector: una dimensión = un índice

Limite inferior del índice

Limite inferior del índice

Limite superior del índice

Limite superior del índice

Todas las variables del tipo NOMBRE podrán tener una extensiónextensió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ñotamaño de hasta 11 componentes

Todas las variables del tipo NOMBRE podrán tener una extensiónextensió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ñotamaño de hasta 11 componentes

Page 26: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 26

TYPE VECTOR = array[1..20] of real; VAR VEC1,VEC2:VECTOR;

BEGIN ………….

Declaración de variables con Declaración de variables con estructura de vector: ejemploestructura de vector: ejemplo

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.

Page 27: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 27

TYPEVECTOR= 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;

Subíndices de un vector: Subíndices de un vector: ejemplosejemplos

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.

Page 28: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 28

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]);

…………

Subíndices de un vector: Subíndices de un vector: ejemplos (sigue)ejemplos (sigue)

Page 29: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 29

Arreglos unidimensionales: Arreglos unidimensionales: almacenamientoalmacenamiento

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]:= -101.2;{se modificó el contenido de la 4ta componente}FOR I:=1 TO 6 DO VEC[I]:=0; {todas las componentes toman el valor 0}

Page 30: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 30

Arreglos unidimensionales: Arreglos unidimensionales: accesoacceso

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.

Page 31: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 31

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]);

Arreglos unidimensionales: Arreglos unidimensionales: accesoacceso

Page 32: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 32

Lectura de un vector de N Lectura de un vector de N componentescomponentes

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

Page 33: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 33

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;

ObservaciónObservación

Page 34: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 34

Ejemplos: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.

Page 35: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

Sumar todos los componentes y almacenar el resultado a continuación del último componente.

Sumar todos los componentes y almacenar el resultado a continuación del último componente.

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],' ');READLNEND.

Page 36: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

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; FOR i:=1 TO n DO WRITE(control[i],' '); WRITELN; READLNEND.

Colocar en otro vector una P si la componente correspondiente es par, y colocar una I si es impar.

Colocar en otro vector una P si la componente correspondiente es par, y colocar una I si es impar.

Page 37: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

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]); WRITELNEND.

Agregar un elemento en la posición k-ésima.

Agregar un elemento en la posición k-ésima.

Page 38: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

Funciones low y highTYPE vector=array [1..30] of longint;VAR vec:vector;

Begin vec[32]:=23456;

04/22/23Computación - Facultad de

Ingeniería 38

Range check error !!!

La extensión es de 1 a 30 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}

Page 39: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

Arrays y strings

Los strings son vectores de caracteres. Es posible acceder a los caracteres de un stringmediante 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]); 04/22/23

Computación - Facultad de Ingeniería 39

Error:element zero can’t be accessed

Page 40: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

VECTORES PARALELOS: ejemploSean los siguientes datos:

Apellido y n. Depto. Expensas Pagó?MARTINEZ,Juan 4 A 50 $ SiGONZALEZ Pedro 1 B 100 $ No

ALONSO Maria 2 D 30 $ SiALONSO Marcelo 5 H 120 $ si

Se desea tener un listado de los propietarios que no han pagado las expensas. Imprimir apellido y nombre, departamento y deuda.

Page 41: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

VECTORES PARALELOS:VECTORES PARALELOS:

Apellido y n. Depto. Expensas Pagó?MARTINEZ,Juan 4 A 50 $ SiGONZALEZ Pedro 1 B 100 $ No

ALONSO Maria 2 D 30 $ SiALONSO Marcelo 5 H 120 $ 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

Page 42: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

VECTORES PARALELOS:VECTORES PARALELOS:

Apellido y n. Depto. Expensas Pagó?MARTINEZ,Juan 4 A 50 $ SiGONZALEZ Pedro 1 B 100 $ No

ALONSO Maria 2 D 30 $ SiALONSO Marcelo 5 H 120 $ si

AyN Depto Expen Pago (vector de (vector de (vector de (Vector String) string) reales) booleano)

Page 43: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 43

Vectores paralelosVectores paralelosLos vectores paralelos pueden ser usados para almacenar grupos degrupos de datos de diferentes tipos 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 50 $ Si MARTINEZ,Juan 4A 50 $ Si Grupo de datos de un propietario

Page 44: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 44

Vectores paralelosVectores 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 integridadintegridad de los datos.

MARTINEZ,Juan 4A 50 $ Si MARTINEZ,Juan 4A 50 $ Si

Estos datos están asociados entre si (son todos del mismo propietario) y NO deben mezclarse con los datos de otro propietario.

Page 45: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

04/22/23Computación - Facultad de

Ingeniería 45

Vectores paralelosVectores paralelos

Como se tiene variosvarios 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 paralelovector paralelo.

Para almacenar y recuperar los ítems de cada unidad, se usan componentes del mismo índicecomponentes del mismo índice en cada uno de los vectores paralelos.

Page 46: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

VECTORES PARALELOS: ejemplo

Apellido y n. Depto. Expensas Pagó? IndiceMARTINEZ,Juan 4 A 50 $ SiGONZALEZ Pedro 1 B 100 $ No

ALONSO Maria 2 D 30 $ SiALONSO Marcelo 5 H 120 $ si

11

22

33 44

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.

Page 47: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

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);

Page 48: Clase 6 COMPUTACION 2009 C lase 6 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Integer Real Char Boolean String Archivos Registros

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.