La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.

Presentaciones similares


Presentación del tema: "Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto Programación de Computadores Lenguaje Pascal."— Transcripción de la presentación:

1 Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto Programación de Computadores Lenguaje Pascal

2 Sesión 12: Tipos de datos Estruturados Programación de Computadores Lenguaje Pascal TEMARIO Tipos de datos Estruturados String Búsqueda y oredenamiento

3 Introducción: Cuando se requiere ocupar grupos de caracteres estructurados en una secuencia, se dispone del tipo de datos string. En una variable de tipo string se pueden almacenar entre 1 y 255 caracteres. Ejemplo: VAR nombre:string; {la variable puede contener hasta 255 caracteres} Si no se inicializa...... writeln(nombre); {en pantalla aparece cualquier cosa} nombre:= ‘Juan Perez’ writeln(nombre); {en pantalla aparece Juan Perez} Si se desea, se puede especificar el largo de un string Ejemplo: VAR marca:string[5]; {la variable puede contener hasta 5 caracteres} Sesión 12: Tipos de datos Estruturados: String Programación de Computadores Lenguaje Pascal

4 ...... marca:= ‘honda’; writeln(‘marca:’, marca); {marca:honda} marca:= ‘yamaha’; writeln(‘marca:’, marca); {marca:yamah} Otra característica del tipo string es que se pueden acceder a los caracteres como si la variable fuera una arreglo Ejemplo: VAR i,largo: INTREGER; Ramo:string[20];........ ramo:=‘Programacion’; largo:=LENGTH(ramo); {función que determina el largo de un string} FOR i:=1 TO largo DO write(ramo[largo-i+1); {en pantalla noicamargorp} También se puede leer como cualquier variable, Ejemplo: READLN(ramo); {si se ingresa: programación de computadores} WRITELN(ramo);{se imprime programación de comp} Sesión 12: Tipos de datos Estruturados: String Programación de Computadores Lenguaje Pascal

5 Finalmente, dos strings se pueden concatenar mediante el operador + Ejemplo: VAR Ramo, sigla:string[20];........ ramo:=‘Programacion’; sigla:= ‘ IWI-131’ ramo:=ramo + sigla } WRITELN(ramo);{se imprime Programación IWI-131} Sesión 12: Tipos de datos Estruturados: String Programación de Computadores Lenguaje Pascal

6 Ejercicio1: Hacer un programa pascal que verifique si un string es palíndrome. Ejemplo abccba es palíndrome. PROGRAM compara; VAR original,inverso:STRING; largo,i:INTEGER; BEGIN WRITE('Ingrese String:'); READLN(original); largo:=LENGTH(original); inverso:=original; FOR i:=1 TO largo DO inverso[i]:=original[largo - i + 1]; IF original= inverso THEN writeln('El string:',original,' es palindrome') ELSE writeln('El string:',original,' NO es palindrome') END. Sesión 12: Tipos de datos Estruturados: String Programación de Computadores Lenguaje Pascal

7 Ejercicio2: Leer dos strings el primero más largo que el segundo.Indicar cuantas veces está contenido el segundo en el primero. Ejemplo, primero:’tres tristes tigres’, buscar ‘es’. Rutee. PROGRAM substr; VAR original,segundo:STRING; largo,largob,i,j,cant:INTEGER; encontrado:BOOLEAN; BEGIN REPEAT WRITE('Ingrese String:'); READLN(original); WRITE('Ingrese String a buscar:'); READLN(segundo); largo:=LENGTH(original); largob:=LENGTH(segundo) UNTIL largo > largob cant:=0; FOR i:=1 TO largo-largob + 1 DO begin encontrado:=TRUE; For j:= 1 TO largob DO begin IF original[i+j-1]<> segundo[j] THEN encontrado:=FALSE; IF encontrado THEN cant:=cat+1; end end; writeln('El string contiene:',cant,‘substrings ') END. Sesión 12: Tipos de datos Estruturados: String Programación de Computadores Lenguaje Pascal

8 Sesión 12: Tipos de datos Estruturados: Ordenamiento Programación de Computadores Lenguaje Pascal Problema: dada una lista de elementos ordenarla, por ejemplo descendente de mayor a menor. Se divide el problema en tres partes, Lectura de datos, ordenamiento y despliegue. PROGRAM bubble; CONST tamMax = 100; (*definiciones globales*) TYPE arr=array[1..tamMax] of INTEGER; VAR total,paramTam:INTEGER; numeros: arr; FUNCTION leeareglo( tam:INTEGER) :INTEGER; PROCEDURE ordena(tot:INTEGER); PROCEDURE imprime( nume:arr; total:INTEGER); BEGIN total := 0; (*inicializa contador*) total := leeareglo(tamMax); (*arreglo contador*) ordena(total); imprime(numeros,total); END.

9 Sesión 12: Tipos de datos Estruturados: Ordenamiento Programación de Computadores Lenguaje Pascal Solución: Se lee hasta una cantidad tope de elementos o ingreso de un dato negativo. La función devuelve la cantidad de elementos a ordenar; FUNCTION leeareglo(tam:INTEGER) :INTEGER; VAR parada:BOOLEAN; max,numleido,indice:INTEGER; BEGIN numleido:=0; indice:=1; parada:=TRUE; WHILE (indice <= tam) and parada DO BEGIN READLN(numleido); IF numleido > 0 THEN BEGIN numeros[indice]:=numleido; indice:=indice + 1 END ELSE parada:= FALSE; END; IF (indice= tam) THEN WRITELN(‘ completos los elementos del arreglo, no se puede seguir leyendo mas...'); END; leeareglo:=indice END;

10 Sesión 12: Tipos de datos Estruturados: Ordenamiento Programación de Computadores Lenguaje Pascal Solución: se procede a ordenar; PROCEDURE ordena(tot:INTEGER); VAR i,pivote,tope,busca:INTEGER; BEGIN tope:=0; busca:=0; pivote:=0; FOR tope:=1 TO tot - 1 DO FOR busca:=tope+1 TO tot DO IF (numeros[busca]>numeros[tope]) THEN (*INTERCAMBIO BUBBLE*) BEGIN pivote:=numeros[tope]; numeros[tope]:=numeros[busca]; numeros[busca]:=pivote END;

11 Sesión 12: Tipos de datos Estruturados: Ordenamiento Programación de Computadores Lenguaje Pascal Solución: se procede a desplegar arreglo ordenado; ROCEDURE imprime( nume:arr; total:INTEGER); VAR i:INTEGER; BEGIN WRITELN('Elementos ordenados:'); FOR i:=1 to total DO WRITELN(nume[i]) END; Ruteo, suponiendo arreglo con valores 4 7 8 2 5 Tope = 1 7 4 8 2 5 8 4 7 2 5 Tope = 2 8 7 4 2 5 Tope = 3 8 7 5 2 4 Tope = 4 8 7 5 4 2

12 Sesión 12: Tipos de datos Estruturados: Búsqueda Programación de Computadores Lenguaje Pascal Problema: Si un arreglo está desordenado, se puede hacer una función que dado un valor entregue su posición en el arreglo. Para esto hay que recorrerlo completamente. Suponga un arreglo de strings ya ordenado, entonces la búsqueda se puede hacer mucho más rápidamente. Este procedimiento se llama búsqueda binaria. FUNCTION busqueda(elem:STRING;arr:ARRAY[1..100] OF STRING,cant:INTEGER):INTEGER; VAR izq,der,medio:INTEGER; encontrado:BOOLEAN; BEGIN izq:=1;der:=cant;encontrado:=FALSE; WHILE (izq<=der) AND NOT encontrado DO BEGIN medio:=(izq+der) DIV 2; IF arr[medio] = elem THEN encontrado:=TRUE ELSE IF arr[medio]<elem THEN izq := medio +1 ELSE der := medio-1; END; IF encontrado THEN busqueda:= medio ELSE busqueda:= -1; END.

13 Sesión 12: Subprogramas: búsqueda binaria Programación de Computadores Lenguaje Pascal Buscar: ‘carrasco’ Arrreglo de apelleidos : alfaro andrade carmona carrasco gutierrez hernandez zamora Izq der medio encontrado apellido[medio] 17 4 TRUE carrasco Buscar: ‘fernandez’ Izq der medio encontrado apellido[medio] 17 4 FALSE carrasco 5 7 6 FALSE hernandez 5 5 5 FALSE gutierrez 5 4 FALSE Sale izq > der

14 Fin Clase 12


Descargar ppt "Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto Programación de Computadores Lenguaje Pascal."

Presentaciones similares


Anuncios Google