Descargar

Tipos de datos estructurados

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    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.

    edu.red

    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

    edu.red

    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.

    edu.red

    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.

    edu.red

    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.

    edu.red

    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.

    edu.red

    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.

    edu.red

    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

    edu.red

    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.

    edu.red

    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;

    edu.red

    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.

    edu.red

    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.

    Partes: 1, 2
    Página siguiente