You are on page 1of 7

UNIVERSIDAD NACIONAL ABIERTA

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.

You might also like