Professional Documents
Culture Documents
REA DE INGENIERA
CARRERA INGENIERA DE SISTEMAS
TRABAJO PRACTICO: INFORME DE ROBUSTEZ Y ALGORITMOS.
ASIGNATURA: COMPUTACIN
CODIGO: 231
INFORME DE COMPUTACIN
NOMBRE DEL ESTUDIANTE: FRANCIS VARGAS
CDULA DEL ESTUDIANTE: 12.075.137
CENTRO LOCAL: ANACO CARRERA 280
NMERO DE ORIGINALES:
FIRMA DEL ESTUDIANTE:
LAPSO: 2013-2
Robustez y Algoritmos
Begin
{pre: entrada = (Notas1 , Notas2, . . . Notasn) ^ n > 0 ^
{Paso 1. Obtenemos la lista de calificaciones}
WhiteLn(Introducir las lista de calificaciones:};
Readlista(Notas);
{Paso 2. Calcular n o nmero de calificaciones en la lista}
n := Lengthlista(notas);
if n > 0 then
begin
{entrada = ^ n>0}
Paso 3: Calculamos Sum = la suma de las calificaciones de la list:
Sum:=0;
i :=1;
white i <=n do
begin
sum := Sum + Notas [ i ]
i := i + 1
end
end;
{Paso 4. Calculamos CM = Sum/n}
CM = Sum/n
{Sum = Sum i {1, . . .. n} : Notas, ^ CM = Sum/n}
{Paso 5. Se muestra CM}
WhiteLn(La CM de esas calificaciones es = , CM : 5 : 2)
end { if }
{post: entrada = ^
salida = Sum i {1, . . ., n}
end. {calculaCM}
Cuerpo del programa CalculaCM
Finalmente, consideremos el caso en que la entrada no es completamente numrica:
{Paso 1. Obtenemos la lista de calificaciones}
WhiteLn(introducir la lista de calificaciones:);
Readlista (Notas);
n:= LengthLista(Notas);
if ListError or (n=0) then
entradavlida := false
else
begin
entradavlida := true;
for i := 1 to n do
if Notas [ i ] < 0) or (Notas[ i ] > 4) then
entradavlida := false;
end;
if not entradavlida then
WhiteLn (entrada no valida. Programa terminda)
else begin
. . .
{Paso 1. Obtenemos la lista de calificaciones}
repeat
WhiteLn(introducir la lista de calificaciones:);
Readlista (Notas);
n:= LengthLista(Notas);
if ListError or (n=0) then
entradavlida := false
else
begin
entradavlida := true;
for i := 1 to n do
if Notas [ i ] < 0) or (Notas[ i ] > 4) then
entradavlida := false;
end;
until entradavlida;
Especificaciones (Mtodo Cesar de Cifrado), que Convirti el Mensaje
{pre: entrada = una serie de mensajes, siendo cada uno una serie de frecuencia de
caracteres c7, . . ., cn representando una codificacin utilizando el mtodo de cesar
{post: salida = una serie de textos decodificados de la forma d1, . . ., dn en la que
cada d, satisface la relacin c1 = Csar ( d1 ) ^c1 es un carcter alfabtico para todo
i en {1, . . ., n} : c1 = d1}
SERGEANT PEPPERS LONELY HEARTS CLUB BAND
En el Mensaje Codificado
VHUJHDQW SHSSHUV ORQHOB KHDUWV FOXE EDQG
Se muestra arriba, la salida debera ser SERGEANT PEPPERS LONELY
HEARTS CLUB BAND
Donde Csar( di ) representa la codificacin Csar del i-simo carcter di
Letra (l) Cesar (l) Letra (l) Csar (l)
a d A D
b e B E
x a X A
y b Y B
z c Z C
El programa necesita ejecutar tres pasos principales para cada mensaje que
decodifica. En el paso de entrada se obtendr el mensaje decodificado,
repeat
{paso 1. Odtener el mensaje}
{Paso 2. Descodificar el mensaje.}
{paso 3. Escribir el mensaje descodificado.}
Until no existe ms mensajes para decodificar
Descodificar(mensaje)
{pre: mensaje = c1, c2, . . ., cn}
{post: resultado = d1, d2, . . ., dn ^para todo i in {1, . . ., n}
d1 = CsarInversa( c1 )}
CsarInversa (c)
{pre: c es un carcter}
{post: resultado = d, y bien de es alfabetico ^ Csar (d) = c or d no es alfabtico ^d=
c}
Funtion descodificar (mensaje: string): string;
var
i: interger;
descodificado: string;
begin
{pre: mensaje= c1, c2, . . ., cn}
descodificado:= mensaje;
for i:= 1 to length(mensaje) do
descodificado [ i ]:= CsarInversa(mensaje[i]);
Descodificar: Descodificado
{post: resultado= d1, d2, . . ., dn ^para todo i in {1,, n}:
end;
funtion CsarInversa (c: char): char;
var
d: cahr;
j: integer;
alpha: string;
begin
{pre: c es un carcter}
alpha:= concat(abcdefghijklmnopqrstuvwxyz,
(ABCDEFGHIJKLMNOPQRSTUVWXYZ);
J:= pos(c,alpha); {busca c en el alfabeto}
case j of
o:
d:= c; {no es alfabetico}
1..3:
d:=alpha[23 + j] {descodifica a, b,c}
4..26:
D:= alpha[j 3]; {descodifica d,e,, z}
27..29:
d:= alpha[23 + j]; {descodifica A, B,C}
30..52:
d:= alpha[j 3]; {descpdifica D,E,, Z}
end;
Teniendo todo lo anterior en mente, podemos escribir el esboza de programa
siguiente:
Program Criptografia;
{el programa descodifica una serie de mensajes y escribe cada uno descodificado; se
supone que cada mensaje se ha cadificado utilizando la cifra de Csar}
Fuction CesarInversa
Funtion Descodificar
var
mensaje, descodificado: string;
begin
{pre: entrada= una serie de lneas, conteniendo cada una un mensaje codificado}
Repeat
{paso 1. Obtener el mensaje}
WhiteLn(Introducir en una sola lnea un mensaje codificado, y`);
WhiteLn(Pulsar <RET> para terminar:);
ReadLn(mensaje);
{Paso2. Descodificar el mensaje.}
Descodificado:= descodificar(mensaje);
{Paso 3. Escribir el mensaje descodificado. }
WhiteLn(El mensaje decodificado es: )
WhiteLn(descodificado);
Until mensaje =
var Archivo: text
Reset(ArchivoTexto,codificado,txt);
El paso 1 deberia alterarse para que tome la entrada del archivo, en lugar de
tomarla desde el teclado, en la forma siguiente:
ReadLn(ArchivaTexto, mensaje)
WhiteLn(mensaje);
Finalmente, la condicin de terminacin del bucle repeat debe explorar el final
del archivo de entrada en la forma siguiente:
until not eot (ArchivoTexto);
Es evidente que, separadamente, se debe preparar en la forma adecuada el
archivo codificado.txt para que incluya los textos codificados antes de ejecutar esta
nueva versin del programa.