Máquina de acceso secuencial
Una secuencia es una colección de elementos del mismo tipo.
Pueden representarse de diferentes formas. Para acceder al elemento de la posición p, hay que recorrer los p-1 elementos anteriores.
El recorrido termina cuando se alcanza la marca de fin de secuencia.
Primitivas para el acceso secuencial
Nombre_Tipo = TIPO Secuencia de Tipo_Base
SC = TIPO Secuencia de Carácter
SR = TIPO Secuencia de Real
Comenzar (S), Avanzar (S), EA (S), Crear(S), Registrar (S, e), Marcar (S)
PROBLEMA: Dada una secuencia con solo ceros y unos, calcular el número de ceros y unos que contiene.
LÉXICO
S: Secuencia de carácter;
NumCeros, NumUnos : Entero;
ALGORITMO
NumCeros = 0; NumUnos = 0;
Comenzar (S);
MIENTRAS EA (S) < > MarcaFin HACER
SI EA (S) = 0 ENTONCES numCeros = numCeros + 1
SI_NO numUnos = numUnos + 1
FIN_SI;
AVANZAR (S)
FIN_MIENTRAS;
Escribir(Ceros = , numCeros,unos = , numUnos)
FIN
Componentes de una iteración
ü Inicialización: instrucciones que se ejecutan para inicializar las variables que participan de la iteración.
ü Condición de terminación: expresión booleana que determina cuando acaba la iteración.
ü Cuerpo: conjunto de instrucciones que se ejecutan mientras no se cumple la condición de terminación.
ü Finalización: conjunto de instrucciones que deben ejecutarse cuando la iteración termina.
Se presentan tres composiciones iterativas en las que la finalización viene determinada por una condición.
Estas son la composición MIENTRAS, REPETIR, ITERAR.
Lo que las diferencia es el lugar donde se comprueba la condición: al principio, al final, en un punto intermedio del ciclo. Y también si es una condición de terminación o de continuación.
Composiciones iterativas condicionales
Diseño iterativo: noción de invariante
El invariante de un ciclo, INV, es una condición que se cumple al inicio y a cada paso de la iteración. Cuando finaliza la iteración, el hecho de que se satisfaga el invariante y la condición de terminación implica que se alcanzó la solución.
Pasos para una solucion iterativa
Dada una especificación de un problema de recorrido de secuencias, la estrategia de una solución iterativa consta de los siguientes pasos:
Identificar qué variables son necesarias a partir de la poscondición.
Establecer el invariante del ciclo.
Aplicar un razonamiento inductivo.
Escribir el algoritmo iterativo.
Composicion MIENTRASEsquema General
Aini;
//E0
MIENTRAS Cc HACER
//Ek
Acuerpo
//Ek+1
FIN_MIENTRAS;
//En
Afin
EJERCICIO
Dado un conjunto de valores enteros, calcular e imprimir : promedio de los valores positivos, sumatoria de negativos. El lote termina cuando se ingresa un valor cero.
LEXICO
SumaPos, CanPos, SumaNeg, Numero : Entero;
ALGORITMO
SumaPos? 0; CanPos ? 0; SumNeg ? 0;
Leer(Numero);
MIENTRAS Numero < > 0 HACER
SI Numero > 0
ENTONCES
Inc(CanPos); SumaPos = SumaPos + Numero;
SI_NO
SumaNeg = SumaNeg + Numero
FIN_SI
FIN_MIENTRAS;
Escribir(SumaPos, SumaNeg);
FIN.
Otros Ejemplos
Escriba algoritmos que :
Dado un numero entero en pesos lo desglose según los billetes legales.
Dado un numero entero < = 106 descomponerlo en dd hh mm ss.
LEXICO
B100, B50, B20, B10, B5, B2, Monedas, Num : Entero;
MAXIMO = 65000;
Leer(Num)
MIENTRAS Numero > 0 HACER
SEGÚN Num
Num 100 .. MAXIMO : B100?Num Div 100; Num?Num B100*100;
Num 50 .. 99 : B50?Num Div 50; Num?Num B50*50;
Num 20 .. 49 : B20?Num Div 20; Num?Num B20*20;
Num 10 .. 19 : B10?Num Div 10; Num?Num B10*10;
Num 5 .. 9 : B5?Num Div 5; Num?Num B5*5;
Num 2 .. 4 : B2?Num Div 2; Num?Num B2*2;
Num 1 : Monedas = 1; Num = 0;
FIN_SEGUN
FIN_MIENTRAS
Página siguiente |