1 Arreglos Unidimensionales Un arreglo es una estructura de datos en la que se almacena una colección de datos del mismo tipo. Ejemplo, el arreglo A contiene números enteros: (Gp:) 34 (Gp:) 56 (Gp:) 12 (Gp:) 5 (Gp:) 28 (Gp:) 44 (Gp:) 9 (Gp:) 67 (Gp:) 19 (Gp:) 21 (Gp:) 54 (Gp:) 85 (Gp:) A (Gp:) 1 2 3 4 5 6 7 8 9 10 11 12 (Gp:) posición
(Gp:) A[1] := 34 A[2] := 56 A[3] := 12 ……. ……. A[12]: = 85 (Gp:) Primer elemento del arreglo A. (Gp:) Segundo elemento del arreglo A. (Gp:) Doceavo elemento del arreglo A. (Gp:) Tercer elemento del arreglo A.
2 Declaración TYPE nombre = ARRAY[1..n] OF TIPO_DATO Ejemplo: TYPE vector = ARRAY[1..100] OF INTEGER; semaforo = (rojo, amarillo, verde); trafico = ARRAY[1..30] OF semaforo; VAR X: vector; Asignación X[i] := dato; Arreglos Unidimensionales
3 Ejemplo Arreglos Unidimensionales PROGRAM arreglos; CONST N = 10; TYPE vector = ARRAY[1..N] OF CHAR; VAR A: vector; i: INTEGER; BEGIN FOR i := 1 TO N DO BEGIN WRITELN(Ingrese caracter ,i, : ); READLN(A[i]) END END.
4 Ejercicio Arreglos Unidimensionales Escriba un programa que permita encontrar la primera posición de un carácter en una frase contenida en un arreglo. c o m p u t a d o r A 1 2 3 4 5 6 7 8 9 10 11 12 Si queremos obtener la posición de la letra t, el programa debe entregar el número 6.
5 Solución Arreglos Unidimensionales PROGRAM buscar_caracter; CONST Largo = 20; TYPE vector = ARRAY[1..Largo] OF CHAR; VAR X: vector; ch: CHAR; i, pos: INTEGER; FUNCTION buscar(A: vector; dato: CHAR): INTEGER; VAR i: INTEGER; {variable local} BEGIN i := 1; WHILE (i < = Largo) AND (A[i] < > dato) DO i := i + 1; buscar := i END; BEGIN WRITELN(Ingrese frase: ); FOR i := 1 TO Largo DO READ(X[i]); WRITELN(Ingrese caracter a buscar: ); READ(ch); pos := buscar(X, ch); IF pos > Largo THEN WRITELN(No se encuentra el caracter) ELSE WRITELN(El caracter ,ch, está en la posición , pos) END.
6 Ejercicio: Buscar el mínimo valor y su posición en un arreglo de enteros de largo 10. Arreglos Unidimensionales PROGRAM minimo; CONST Largo = 10; TYPE arreglo = ARRAY[1..Largo] OF INTEGER; VAR A: arreglo; i,pos,min: INTEGER; BEGIN WRITELN(Ingrese , Largo, números: ); FOR i := 1 TO Largo DO READLN(A[i]); min := A[1]; {el primer valor ingresado} pos := 1; {se guarda la posición del menor valor} FOR i := 2 TO Largo DO IF A[i] < min THEN BEGIN min := A[i]; pos := i END; WRITELN(El mínimo es , min, y está en la posición , pos) END.
7 STRING Es una sucesión de 1 ó más caracteres. Declaración VAR nombre: STRING[tamaño]; El tamaño máximo es de 255 caracteres. Uso READLN(nombre); o también nombre := Programación de Computadores;
Arreglos Unidimensionales (Gp:) Si se ubiera definido como ARRAY habría que leer caracter a caracter. Pero al ser del tipo STRING esto es posible.
8 Largo de un STRING largo := LENGTH(nombre_del_string);
Asignación str1 := str2 , si tienen el mismo tamaño no hay problema. si str1 > str2 , se almacena str2 en str1 y toma el largo de str2. si str1 < str2 , str2 es truncado hasta el tamaño de str1. Arreglos Unidimensionales
9 Ejercicio: Escriba un programa que guarde una frase en un STRING de largo máximo y convierta las minúsculas en mayúsculas. Arreglos Unidimensionales PROGRAM minusculas_en_mayusculas; CONST Largo = 255; VAR S: STRING[Largo]; L,i: INTEGER; BEGIN WRITE('Ingrese frase: '); READLN(S); L:=LENGTH(S); FOR i:=1 TO L DO IF (S[i] >= 'a') AND (S[i] < = 'z') THEN S[i] := CHR(ORD(S[i])-32); WRITELN(S) END.
10 Ejercicio: Calcular el promedio en un arreglo de largo 100, el cual puede no estar lleno completamente. Arreglos Unidimensionales PROGRAM Calcular_Promedio; CONST L = 255; TYPE vector = ARRAY[1..L] OF INTEGER; VAR A: vector; n: INTEGER; respuesta: CHAR;
BEGIN n := 0; REPEAT n := n + 1; WRITE(Ingrese número: ); READLN(A[n]); WRITE(Desea ingresar otro número (s/n): ); READLN(respuesta); UNTIL (respuesta = n) OR (n = L); WRITELN(El promedio es , Promedio(A,n)) END. FUNCTION Promedio(X: vector, k: INTEGER): REAL; VAR suma,i: INTEGER; prom: REAL; BEGIN suma := 0; FOR i := 1 TO k DO suma := suma + X[i]; prom := suma / k; Promedio := prom END;
11 Ordenamiento Burbuja Consiste en ir comparando los casilleros con el de abajo, de manera de ir dejando los menores o más livianos arriba y los mayores o más pesados abajo. Arreglos Unidimensionales (Gp:) 15 (Gp:) 8 (Gp:) 4 (Gp:) 50 (Gp:) 3
(Gp:) 8 (Gp:) 15 (Gp:) 4 (Gp:) 50 (Gp:) 3
(Gp:) 8 (Gp:) 4 (Gp:) 15 (Gp:) 50 (Gp:) 3
(Gp:) 8 (Gp:) 4 (Gp:) 15 (Gp:) 50 (Gp:) 3
(Gp:) 8 (Gp:) 4 (Gp:) 15 (Gp:) 3 (Gp:) 50
(Gp:) 8 (Gp:) 4 (Gp:) 15 (Gp:) 3 (Gp:) 50
(Gp:) 4 (Gp:) 8 (Gp:) 15 (Gp:) 3 (Gp:) 50
(Gp:) 4 (Gp:) 8 (Gp:) 15 (Gp:) 3 (Gp:) 50
(Gp:) 4 (Gp:) 8 (Gp:) 3 (Gp:) 15 (Gp:) 50
(Gp:) Aquí se encontró el número mayor.
(Gp:) Aquí se encontró el segundo número mayor.
12 Ordenamiento Burbuja (continuación) Arreglos Unidimensionales (Gp:) 4 (Gp:) 8 (Gp:) 3 (Gp:) 15 (Gp:) 50
(Gp:) 4 (Gp:) 8 (Gp:) 3 (Gp:) 15 (Gp:) 50
(Gp:) 4 (Gp:) 3 (Gp:) 8 (Gp:) 15 (Gp:) 50
(Gp:) Aquí se encontró el tercer número mayor.
(Gp:) 4 (Gp:) 3 (Gp:) 8 (Gp:) 15 (Gp:) 50
(Gp:) 3 (Gp:) 4 (Gp:) 8 (Gp:) 15 (Gp:) 50
(Gp:) Aquí se tiene el arreglo ordenado.
Página siguiente |