Documente Academic
Documente Profesional
Documente Cultură
Programacin 1
InCo - FING
Contents
1 Tipo subrango
1.1
Subrangos de enteros . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Subrangos de caracteres . . . . . . . . . . . . . . . . . . . . . . .
1.3
1.4
Subrangos en general . . . . . . . . . . . . . . . . . . . . . . . . .
2 Arreglos
2.1
Tipos estructurados . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
Declaracin de un arreglo . . . . . . . . . . . . . . . . . . . . . .
2.4
Ejemplos de arreglos . . . . . . . . . . . . . . . . . . . . . . . . .
2.5
Tipos Annimos . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6
2.7
Accediendo un arreglo . . . . . . . . . . . . . . . . . . . . . . . .
2.8
Inicializacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9
Recorridas de arreglos . . . . . . . . . . . . . . . . . . . . . . . .
10
10
10
Tipo subrango
1.1
Subrangos de enteros
1.2
Subrangos de caracteres
type
letra = A..Z;
digito = 0..9;
decimal
= 0..9;
1.3
1.4
Subrangos en general
Arreglos
2.1
Tipos estructurados
Cada elemento del tipo est formado por un conjunto de valores (una estructura)
Tipos estructurados de Pascal:
Arreglos (array)
Registros (record)
Conjuntos (set)
2.2
Motivacin
2.3
Declaracin de un arreglo
2.4
Ejemplos de arreglos
type
rango = 33..90;
arr1 = array [char] of integer; (* 256 celdas *)
arr2 = array [33..90] of real;
arr3 = array [integer] of char; (* demasiado grande! *)
arr4 = array [0..9] of arr3;(* matriz *)
arr5 = array [rango] of boolean;
2.5
Tipos Annimos
type
(* indice anonimo *)
arreglo = array [0..9] of real;
var
(* arreglo anonimo *)
a : array [A..Z] of boolean;
Los tipos annimos se utilizan comnmente cuando un tipo slo aparece una vez.
2.6
2.7
Accediendo un arreglo
Cada celda del arreglo se puede acceder como una variable independiente.
Suponemos a del tipo array [1..10] of integer
(* asignaciones *)
a[1]:= 12;
a[10]:= 90;
....
a[i]:= i+1; (* i en el intervalo [1,10]
*)
a[i+4]:= 20; (* i+4 en el intervalo [1,10] *)
a[200]:= 23; (* error, fuera de rango *)
a:= 0;
(* error *)
2.8
Inicializacin
2.9
Recorridas de arreglos
2.10
Bsqueda en un arreglo
if exito then
WriteLn(exito)
else
WriteLn(fracaso)
2.11
Bsqueda (2)
Usando while
i:= 1;
exito:= false;
while (i<=M) and not exito do
begin
exito:= (a[i] = X);
i:= i+1;
end;
if exito then
WriteLn(exito)
else
WriteLn(fracaso)
2.12
Bsqueda (3)
2.13
Bsqueda (4)
exito:= false;
while (i<=M) and not exito do
begin
exito:= (a[i] = X);
i:= i+1;
end;
Se podra escribir directo la condicin
(i <= M) and (a[i] <> X) ?
Respuesta: Depende de cmo se evalen las expresiones booleanas.
2.14
Evaluacin de booleanos
2.15
2.16
i:= 1;
(* circuito corto *)
while (i <= M) and (a[i] <> A) do
i:= i+1;
if i<=M then
WriteLn(exito)
else
WriteLn(fracaso);
Free Pascal evala siempre con circuito corto.
Cuando i toma el valor M+1, no se accede a a[i]
2.17
Bsqueda (5)
2.18
Bsqueda (6)
2.19
Bsqueda contextual
2.20
Otro ejemplo
2.21
Arreglos Multidimensionales
10
a[i][j]
a[i,j]
La segunda es la ms utilizada.
Mas sobre arreglos multidimensionales: Seccin 9.3 de Konvalina*
11