1 / 14

Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto

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

nishi
Download Presentation

Tipos de datos Estruturados String y ordenamiento Prof:Eridan Otto

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: String 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}

  4. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: String ...... 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}

  5. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: String 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}

  6. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: String • 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.

  7. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: String • 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.

  8. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: Ordenamiento 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. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: Ordenamiento 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. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: Ordenamiento 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; END;

  11. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: Ordenamiento 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, suponiendoarreglo 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. Programación de Computadores Lenguaje Pascal Sesión 12: Tipos de datos Estruturados: Búsqueda 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. Programación de Computadores Lenguaje Pascal Sesión 12: Subprogramas: búsqueda binaria Buscar: ‘carrasco’ Arrreglo de apelleidos : alfaro andrade carmona carrasco gutierrez hernandez zamora • Izq der medio encontrado apellido[medio] • 7 4 TRUE carrasco Buscar: ‘fernandez’ • Izq der medio encontrado apellido[medio] • 7 4 FALSE carrasco • 5 7 6 FALSE hernandez • 5 5 5 FALSE gutierrez • 5 4 FALSE Sale izq > der

  14. Fin Clase 12

More Related