Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Objetivos Introducir las sentencias de composicin iterativa de Pascal y su equivalencia con las composiciones MIENTRAS, REPETIR e ITERAR vistas en clase de teora junto con algunos ejemplos de su uso. Presentar los paquetes de los que haremos uso para definir y utilizar variables de tipo secuencia. Estudiar la utilizacin de todo lo anterior en programas Pascal resolviendo problemas sencillos de recorrido que manejen secuencias del primer modelo de acceso secuencial.
Pascal
repeat S until cond No incluida, hay que expresarla ediante iteraciones in!initas while o repeat" con una parada central ediante un brea " while true do be!in S1# i" cond then brea # S2 end o $ien" repeat S1# i" cond then brea # S2 until "al#e
NOTA IMPORTANTE: El uso correcto de brea est! circunscrito e clusivamente a este tipo de iteraciones. $ajo ninguna circunstancia se debe utilizar brea para salir de una iteracin que no sea de este tipo. "o contrario ser! considerado un grave fallo de concepto y sancionado de manera acorde.
Problema 1. %upongamos el problema de la pr!ctica tres, en la que realiz!bamos la codificacin de un car!cter introducido por teclado. &'mo resolvera el problema si en lugar de un car!cter tuviese que codificar una frase(
TratamientoInicial_MSC1 (R); Cargar_Fichero_MSC1 (S, 'entrada1.txt'); Comenzar_MSC1 (S); Arrancar_MSC1 (R); (* Esquema de recorrido del primer modelo *) while EA_MSC1 (S) <> MSC1_MarcaFin do begin if (EA_MSC1 (S) >= 'a') and (EA_MSC1 (S) <= 'z') then c_conv := chr (ord (EA_MSC1 (S)) + Distancia) else c_conv := EA_MSC1 (S); Registrar_MSC1 (R, c_conv); Avanzar_MSC1 (S); end; Marcar_MSC1 (R); Salvar_Fichero_MSC1 (R, 'salida1.txt'); End.
Ejemplo 2: El siguiente programa carga el contenido de un archivo de te to cuyo nombre es entrada2.txt en una secuencia de enteros %. + continuacin escribe por la salida est!ndar el contenido de esta secuencia al mismo tiempo que va registrando en otra secuencia 8 el cuadrado de cada n7mero que aparece en %. 9inalmente graba el contenido de 8 en un archivo de te to cuyo nombre es salida2.txtProgram secuencias_enteros_1; Uses Unitmse1; Var S, R : Mse1; Begin TratamientoInicial_Mse1 (S); TratamientoInicial_Mse1 (R); Cargar_Fichero_Mse1 (S, 'entrada2.txt'); Comenzar_Mse1 (S); Arrancar_Mse1 (R); while EA_Mse1 (S) <> Mse1_MarcaFin do begin Write (EA_Mse1 (S), ', '); Registrar_Mse1 (R, EA_Mse1 (S) * EA_Mse1 (S)); Avanzar_Mse1 (S); end; Marcar_Mse1 (R); Salvar_Fichero_Mse1 (R, 'salida2.txt') end.
Ejemplo 3: El siguiente programa carga el contenido de un archivo de te to, que contiene las notas de un curso, cuyo nombre es entrada3.txt en una secuencia de reales S y muestra por pantalla el n7mero de notas que superan el cinco.
Var
Begin TratamientoInicial_Msr1 (S); Cargar_Fichero_Msr1 (S, 'entrada3.txt'); Comenzar_Msr1 (S); while EA_Msr1 (s) <> Msr1_MarcaFin do begin if EA_Msr1(s) >= Aprobado then cont:=cont+1; Avanzar_Msr1 (S) end; Write ('El nmero de aprobados es: ', cont) end.
Problema 2: + continuacin se muestran un par de versiones de un mismo programa Pascal, que utilizan una m!quina secuencial de caracteres del primer modelo de acceso secuencialProgram cuenta; uses UnitMsc1; var S : Msc1; cont : Integer; begin TratamientoInicial_MSC1 (S); Cargar_Fichero_Msc1(S,'datos.txt'); Comenzar_Msc1(S); cont := 0; while Ea_Msc1(S)<> Msc1_MarcaFin do begin Write (EA_Msc1 (S), ','); cont := cont + 1; Avanzar_Msc1 (S); end; WriteLn; WriteLn ('Nro. de datos: ', cont) end. Program cuenta; uses UnitMsc1; var S : Msc1; cont : Integer; begin TratamientoInicial_MSC1 (S); Cargar_Fichero_Msc1(S,'datos.txt'); Comenzar_Msc1(S); cont := 0; while Ea_Msc1(S)<> Msc1_MarcaFin do begin Avanzar_Msc1 (S); Write (EA_Msc1 (S), ','); cont := cont + 1; end; WriteLn; WriteLn ('Nro. de datos: ', cont) end.
&'u!l de los dos es el correcto( &Por qu#( +ntes de ejecutarlos intente predecir cu!l sera el resultado que se producira al compilar y ejecutar cada uno de ellos. 8ealice estos procesos con ambos y compare los resultados con sus hiptesis. Problema 3: ,ada una secuencia de enteros S, escriba un algoritmo que cree una nueva secuencia formada por la secuencia de sumas parciales de S 5S3, S3 ! S4, S3 ! S4 ! S;, ..6. Por ejemplo para la secuencia de entrada- 3, <, =, ;, =, >. "a secuencia de salida sera- 3, =, 3?, 3;, 3@, 4<. Problema 4: Escriba un algoritmo que obtenga la interseccin de dos conjuntos de enteros representados como secuencias ordenadas crecientemente. Trabajo personal del alumno Problema 1 Escriba una funcin que simule la evolucin del marcador en un partido de tenis. "os datos de entrada son el marcador actual y qu# jugador ha ganado el punto en juego. 'omo resultado se mostrar! por pantalla el nuevo marcador. )tilice esta funcin para escribir un algoritmo que simule la evolucin de un partido de tenis, supuesto que la entrada es una secuencia S de caracteres- 132 y 142, que indica qu# jugador ha ganado cada punto. Para cada elemento de la secuencia se indicar! el nuevo marcador del partido. %e supondr! que el partido lo gana el jugador que consigue seis juegos. Por ejemplo, si S A /3344334430, la salida sera- /quinceBnada0, /treintaB nada0, /treintaBquince0, /iguales a treinta0, /cuarentaBtreinta0, /juego para el jugador 30, /nadaBquince0, /nadaBtreinta0, /quinceBtreinta0. Problema 2 "a 'aja de ahorros del *editerr!neo gestiona la atencin a los clientes mediante un sistema autom!tico. ,ispone de un n7mero fijo de ventanillas de atencin 5C, constante entera positiva conocida6. 'ada cliente, para ser atendido, debe pulsar un botn de turno, si hay alguna ventanilla libre, una pantalla digital mostrar! en mensaje 5/Pase06, en caso contrario mostrar! el mensaje 5/Espere por favor06 y el usuario se pondr! en una cola, hasta que pueda ser atendido, en el momento que un empleado quede libre, la pantalla mostrar! el mensaje 5/Pase06 si la cola no est! vaca. Escriba un algoritmo que muestre en pantalla, en el momento oportuno, cada uno de estos dos mensajes. "a entrada del algoritmo ser! una secuencia de valores enteros- /30, /40 , que sigue el primer modelo de acceso secuencial. El /30 indica una peticin por parte de un cliente, el /40 que una ventanilla ha quedado libre. Inicialmente todas las ventanillas estar!n libres.