Está en la página 1de 37

ndice

Contenido Pg
Unidad N 5. Desarrollo de la Metodologa MAPS
Etapa N I: El Dilogo 3
Etapa N II: Las Especificaciones 6
Etapa N III: La Particin 8
Etapa N IV: Definicin de Abstraccin 10
Etapa N V: Codificacin 11
Etapa N VI: Prueba y Verificacin 12
Etapa N VII: Presentacin 13
Unidad N 6. Desarrollo de un Algoritmo en Programacin Modular o
Estructurada.
11
Unidad N 7. Probar un Algoritmo con el Concepto de Robustez. 24
Unidad N 8. Presentar el Algoritmo en Lenguaje Pascal 25
2
Unidad N 5. Desarrollo de la Metodologa MAPS
Etapa N I: El Dilogo
El problema consiste en elaborar un programa que le permita al departamento de
publicidad de la empresa DISPLUBLI optimizar las ventas, con lo cual tendrn a tiempo y
de manera rpida informacin sobre las distribuciones de publicidad realizadas por ellos.
Se debe tomar en consideracin las siguientes:
Existen tres tipos de publicaciones (Revistas, Peridicos y Libros).
Para cada tipo de publicacin existe una categora que las diferencia entre s. Por
ejemplo para el tipo de publicacin libros las categoras son: cocina, recreativos,
histricos, etc; mientras que para las revistas son de investigacin, cientficas, de
espectculos y farndulas, y por ltimo los peridicos que distribuyen presentan las
siguientes categoras: nacional de noticias, internacional de noticias y otros gneros.
Es importante tomar en cuenta la cantidad de publicaciones que se tienen, tanto por
su tipo, como por su categora; ya que esto es lo que va a determinar el stock de
publicaciones que posee la empresa y su movimiento determinar mayores ingresos
por concepto de ventas.
La entrada de los datos se realizar siguiendo la secuencia del programa de la
siguiente forma:
Para las publicaciones de revistas se requiere:
- Cdigo de Revista: Conformado por una serie de nmeros que identifican de
forma unvoca a una determinada publicacin. Es de tipo entero.
- Ttulo: Conformado por una serie de caracteres, hace referencia al nombre de la
revista. Es de tipo carcter (String).
- Precio: Almacena el costo de la revista y es de tipo real.
3
- Cantidad Disponible: Almacena la cantidad (expresada en nmeros) de revistas
(asociadas a un cdigo en especfico) que se tienen en un almacn. Es de tipo
entero.
- Nmero: Es de tipo entero y hace referencia al nmero de la revista en el
tiempo.
- Tipo: Es de tipo carcter alfanmerico y hace referencia a la categora a la que
pertenece a una determinada revista.
- Fecha de Publicacin: Almacena la fecha de publicacin del nmero de esa
revista.
- Empresa: De tipo carcter, hace referencia al nombre de la empresa que pblica
dicha revista.
Para las publicaciones de Peridicos se requiere:
- Cdigo del Peridico: Conformado por una serie de nmeros que identifican de
forma total a un peridico en especfico. Es de tipo entero.
- Ttulo: Es de tipo carcter (String). Conformado por una serie de caracteres,
hace referencia al nombre del peridico.
- Tipo: Es de tipo carcter alfanmerico y hace referencia a la categora a la que
pertenece a un determinado peridico.
- Precio: Hace referencia a el costo del peridico y es de tipo real.
- Cantidad : Es de tipo entero y hace referencia a la cantidad de peridicos
existentes asociados a un cdigo en especifico.
- Fecha de Edicin: Almacena la fecha de edicin del peridico.
- Empresa: De tipo carcter, hace referencia al nombre de la empresa que edita el
peridico.
- Idioma: De tipo Cadena, hace referencia al idioma en el cul esta redactado el
peridico.
Para las publicaciones de Libros se requiere:
4
- Cdigo del Libro: De tipo Entero, hace referencia a un cdigo conformado por
una serie de nmeros que identifican de forma permanente a ese libro.
- Ttulo: Es de tipo carcter (String), hace referencia al nombre del libro.
- Precio: Es de tipo real y hace referencia a el costo del libro.
- Tipo: Es de tipo carcter alfanmerico y hace referencia a la categora (cocina,
recreativos e histricos) a los que pertenece un libro.
- Cantidad Disponible : Es de tipo entero y hace referencia a la cantidad de
ejemplares de peridicos asociados a un libro en especifico.
- Autor: Es de tipo carcter y hace referencia al nombre de la persona que escribi
el libro.
- Idioma: De tipo Cadena, hace referencia al idioma en el cul esta redactado el
libro.
- Editorial: De tipo carcter, hace referencia a la empresa que se encarga de
distribuir y realizar dicho libro.
Es importante tomar en cuenta que para cada tipo de publicacin se har uso de la
estructura arreglo que tendr de largo la cantidad de publicaciones (por tipo) que distribuye
la empresa DISPUBLI, C.A.
El arreglo tendr la siguiente presentacin.
Revista:
Peridicos:
Libros:
5
Cada una de las casillas representa la cantidad disponible de cada publicacin
existente en los almacenes de la distribuidora. El ingreso de los datos se realizar
conociendo de antemano cuantos tipos de libros, revistas y peridicos distribuye. Sin
embargo, primero el sistema se cerciora de que tipos de publicacin es la que quiere ser
ingresada, para luego dependiendo del tipo de publicacin pedir al usuario el ingreso de los
datos asociados a ellos.
Etapa II: Las Especificaciones
Pre-Condiciones:
Entradas = (Revistas1, Revistas2, Revistas3, revistasn) ^ n > 0 ^ i {1,n}: Revista
i

{1n}

- (Cdigorevista
1
, codigorevista
n
) ^ n > 0 ^ i {1,9999999999}
- (Ttulo
1
, Ttulo
n
) ^ n > 0 ^ i {1,n}: Ttulo
i
{Secuencia de Caracteres
C
1
C
n
}
- (Precio
1
, Precio
n
) ^ n > 0 ^ i {1,n}: Precio
i
{1,1000000000}
- (CantidadDispinible
1
, CantidadDisponible
n
) ^ n > 0 ^ i {1,n}:
CantidadDisponible
i
{1,100000}
- (Nmero
1
, Nmero
n
) ^ n > 0 ^ i {1,n}: Nmero
i
{1,56}
- (Tipo
1
, Tipo
n
) ^ n > 0 ^ i {1,n}: Tipo
i
{Secuencia de Caracteres C
1

C
n
}
- (FechaPublicacin
1
, FechaPublicacin
n
) ^ n > 0 ^ i {1,n}:
FechaPublicacin
i
{131, 112,2009,2010}
6
- (Empresa
1
, Empresa
n
) ^ n > 0 ^ i {1,n}: Empresa
i
{Secuencia de
Caracteres C
1
C
n
}
Entradas= (Peridicos1, Peridicos2, Peridicos3, Peridicosn) ^ n > 0 ^ i {1,
n}: Peridicos
i
{1n}

- (Cdigoperidico
1
, Cdigoperidico
n
) ^ n > 0 ^ i {1,9999999999}
- (Ttulo
1
, Ttulo
n
) ^ n > 0 ^ i {1,n}: Ttulo
i
{Secuencia de Caracteres
C
1
C
n
}
- (Tipo
1
, Tipo
n
) ^ n > 0 ^ i {1,n}: Tipo
i
{Secuencia de Caracteres C
1

C
n
}
- (Precio
1
, Precio
n
) ^ n > 0 ^ i {1,n}: Precio
i
{1,1000000000}
- (Cantidad
1
, Cantidad
n
) ^ n > 0 ^ i {1,n}: Cantidad
i
{1,1000000000}
- (Fechaedicin
1
, Fechaedicin
n
) ^ n > 0 ^ i {1,n}: Fechaedicin
i
{131,
112,2009,2010}
- (Empresa
1
, Empresa
n
) ^ n > 0 ^ i {1,n}: Empresa
i
{Secuencia de
Caracteres C
1
C
n
}
- (Idioma
1
, Idioma
n
) ^ n > 0 ^ i {1,n}: Idioma
i
{Secuencia de Caracteres
C
1
C
n
}
Entradas= (Libros1, Libros2, Libros3, Librosn) ^ n > 0 ^ i {1,n}: Libros
i

{1n}

- (Cdigolibro
1
, codigolibro
n
) ^ n > 0 ^ i {1,9999999999}
- (Ttulo
1
, Ttulo
n
) ^ n > 0 ^ i {1,n}: Ttulo
i
{Secuencia de Caracteres
C
1
C
n
}
- (Precio
1
, Precio
n
) ^ n > 0 ^ i {1,n}: Precio
i
{1,1000000000}
7
- (Tipo
1
, Tipo
n
) ^ n > 0 ^ i {1,n}: Tipo
i
{Secuencia de Caracteres C
1

C
n
}
- (CantidadDispinible
1
, CantidadDisponible
n
) ^ n > 0 ^ i {1,n}:
CantidadDisponible
i
{1,200000}
- (Autor
1
, Autor
n
) ^ n > 0 ^ i {1,n}: Autor
i
{Secuencia de Caracteres
C
1
C
n
}
- (Idioma
1
, Idioma
n
) ^ n > 0 ^ i {1,n}: Idioma
i
{Secuencia de Caracteres
C
1
C
n
}
- (Editorial
1
, Editorial
n
) ^ n > 0 ^ i {1,n}: Editorial
i
{Secuencia de
Caracteres C
1
C
n
}
Post-Condiciones: Entrada Revistas, Priodicos, Libros = ^
Salidas = (Revistas1, Revistas2, Revistas3, revistasn) ^ n > 0 ^ i {1,n}:Revista
i

{1n}
(Peridicos1, Peridicos2, Peridicos3, Peridicosn) ^ n > 0 ^ i {1,
n}}:Peridicos
i
{1n}
(Libros1, Libros2, Libros3, Librosn) ^ n > 0 ^ i {1,n}}:Libros
i
{1n}
Etapa III: La Particin
Este problema se puede plantear a travs de las siguientes rutinas:
1. Inicializar los arreglos de publicaciones, libros y peridicos.
2. Ingresar datos de Peridicos.
3. Ingresar datos de Libros.
4. Ingresar datos de Revistas.
8
5. Mostrar los datos ingresados.
6. Ordenar Publicaciones.
7. Generar Reportes.
Cada una de estas rutinas pueden ser divididas en las siguientes rutinas:
1. Inicializar los arreglos de publicaciones, libros y peridicos.
1.1. Asignar valor de Vacio a cada uno de los arreglos.
2. Ingresar datos de Revistas
2.1.Leer Cdigo de la revista
2.2.Leer Ttulo
2.3.Leer Precio
2.4.Leer Cantidad disponible
2.5.Leer Nmero
2.6.Leer Tipo
2.7.Leer Fecha de Publicacin
2.8.Leer Empresa
3. Ingresar datos de Peridicos.
3.1. Leer Cdigo del peridico
3.2. Leer Ttulo
3.3. Leer Tipo
3.4. Leer Precio
3.5. Leer Cantidad
3.6. Leer Fecha de edicin
3.7. Leer Empresa
3.8. Leer Idioma
4. Ingresar datos de Libros
4.1. Leer Cdigo del libro
4.2. Leer Ttulo
4.3. Leer Precio
4.4. Leer Tipo
4.5. Leer Cantidad Disponible
4.6. Leer Autor
4.7. Leer Idioma
9
4.8. Leer Editorial
5. Mostrar los datos ingresados.
5.1. Mostrar datos de Peridicos.
5.2. Mostrar datos de Libros.
5.3. Mostrar datos de Revista.
6. Ordenar Publicaciones.
6.1. Generar Bsqueda por cdigo.
6.2. Mostrar Resultados.
7. Generar Reportes.
7.1. Generar Bsqueda por cdigo
7.2. Generar Bsqueda por Tipo de Publicacin
7.3. Mostrar Bsqueda.
7.4. Generar Reporte Impreso.
Etapa IV: Definicin de Abstraccin
10
Etapa V: Codificacin
Este punto se corresponde con el objetivo N 8, su presentacin se deja para que se
aborde dicho objetivo con el fin de vitar repeticiones. (Ver Pg. 24).
Etapa VI: Prueba y Verificacin
Consiste en probar y validar que el sistema realizado bajo el lenguaje de
programacin Pascal, se puede ejecutar sin inconveniente; lo que quiere decir, todas las
salidas arrojadas por el sistema son correctas y las entradas cumplen todas las condiciones
para que el sistema pueda procesar los datos que ingresan y de esta forma generar las
respuestas asociadas de acuerdo a lo que se pide.
Etapa VII: Presentacin
11
Esta etapa consiste en aadir los comentarios adecuados para documentar el sistema,
con lo cual se puede clarificar el propsito del mismo, asimismo, se colocan los nombres
del autor o autores, as como, como la fecha y la utilizacin de aquellas rutinas que sern
utilizadas en una u otra ocasin dentro de las instrucciones.
Unidad N 6. Diseo del Algoritmo usando Tcnicas de Programacin Estructurada
Algoritmo Publicaciones
Declaracin Tipo
Revista = arreglo de [n] de Revi
Peridico = arreglo de [s] de Perio
Libro = arreglo de [m] de Lib
Revi = Registro de
Codigor, Cantidadr, Diar , Mesr, Aor, numero: Entero
Titulor, Empresar, tipor: Caracter
Precior: real
Fin Registro
Perio = Registro de
Cdigop, cantidadp, diap, mesp, aop: Entero
Titulop, tipo, empresap, idiomap: carcter
Preciop: real
Fin Registro
Lib = Registro de
Codigol, cantidadl: Entero
Titulol, autor, idiomal, editorial, tipol: carcter
Preciol: real
Fin de Registro
Declaracin Variable
N,m,s,i, tipo: Entero
Opcin: carcter
Inicio
Escribir Bienvenidos al Programa de Optimizacin de Ventas de la Empresa
DISPUBLI
Escribir A travs del siguiente Men, escoger la opcin con la cul desea Trabajar
12
Repetir
Escribir 1.- Ingresar Publicaciones de Revistas
Escribir 2.- Ingresar Publicaciones de Peridicos
Escribir 3.- Ingresar Publicaciones de Libros
Escribir 4.- Bsquedas de Publicaciones
Escribir 5.- Generar Reportes
Escribir 6.- Salir
Leer Opcion
Hasta opcin 1 y opcin 6
Si (opcin = 1) entonces
Revistas (revista, n)
Sino
Si (opcin = 2) Entonces
Peridicos (peridico, s)
Sino
Si (Opcin = 3) Entonces
Libros (libro, m)
Sino
Si (Opcin = 4) Entonces
Busqueda (revista, peridico, libro)
Sino
Si (Opcin = 5) Entonces
Reportes (revista, peridico, libro)
Sino
Si (Opcin = 6) Entonces
Escribir Gracias por usar el sistema Buen da
Fin
Fin
Fin
Fin
Fin
Fin
Fin.
Revistas (revista, codigor, titulor, precior, cantidadr, numero, tipor, diar, mesr, aor,
13
empresar, n)
Inicio
Escribir Ingrese las Siguientes:
Repetir
Escribir Cuntos Tipos de Revistas va a Ingresar al Sistema:
Leer N
Hasta N 0
Para i = 0 hasta N hacer
Repetir
Escribir Cdigo de la Revista:
Leer revista[i].codigor
Hasta (revista[i].codigor 0 y revista[i].codigor 99999999)
Repetir
Escribir Ttulo de la Revista:
Leer revista[i].titulor
Hasta (revista[i].titulor <> )
Repetir
Escribir Precio de la Revista:
Leer revista[i].precior
Hasta (revista[i].precior 1)
Repetir
Escribir Cantidad de Ejemplares disponibles de la Revista:
Leer revista[i].cantidadr
Hasta (revista[i].cantidadr 1)
Repetir
Escribir Nmero de la Revista:
Leer revista[i].numero
Hasta (revista[i].numero 1)
Repetir
Escribir Seleccione su Tipo:
Escribir 1.- De Investigacin
Escribir 2.- Cientficas
Escribir 3.- Espctaculos Y Farndula
Escribir 4.- Otros
Leer Tipo
Hasta (tipo 0 y tipo 4)
14
Si (tipo = 1) entonces
revista[i].Tipor R01
Sino
Si (tipo = 2) Entonces
revista[i].Tipor R02
Sino
Si (tipo = 3) Entonces
revista[i].Tipor R03
Sino
Si (tipo = 4) Entonces
revista[i].Tipor R04
Fin
Fin
Fin
Fin
Escribir Fecha de Publicacin:
Repetir
Escribir Da:
Leer revista[i].diar
Hasta (revista[i].diar 1 y revista[i].diar 31)
Repetir
Escribir Mes:
Leer revista[i].mesr
Hasta (revista[i].mesr 1 y revista[i]. mesr 12)
Repetir
Escribir Ao:
Leer revista[i].aor
Hasta (revista[i].aor =2009)
Repetir
Escribir Empresa que Edita la Revista:
Leer revista[i].Empresar
Hasta (revista[i].empresar <> )
Fin Para
Fin
15
Peridicos (periodico, m)
Inicio
Escribir Ingrese las Siguientes:
Repetir
Escribir Cuntos Tipos de Peridicos va a Ingresar al Sistema:
Leer M
Hasta M 0
Para i = 0 hasta M hacer
Repetir
Escribir Cdigo del Peridico:
Leer periodico[i].codigop
Hasta (periodico[i].codigop 0 y periodico[i].codigop 99999999)
Repetir
Escribir Ttulo del Peridico:
Leer periodico[i].titulop
Hasta (periodico[i]. periodico[i].titulop <> )
Repetir
Escribir Seleccione su Tipo:
Escribir 1.- Nacional de Noticias
Escribir 2.- Nacional Deportivo
Escribir 3.- Internacional de Noticia
Escribir 4.- Otros
Leer Tipo
Hasta (tipo 1 y tipo 4)
Si (tipo = 1) entonces
periodico[i]. Tipor P01
Sino
Si (tipo = 2) Entonces
periodico[i].Tipop P02
Sino
Si (tipo = 3) Entonces
periodico[i].Tipop P03
Sino
Si (tipo = 4) Entonces
periodico[i].Tipop P04
Fin
16
Fin
Fin
Fin
Repetir
Escribir Precio del Peridico:
Leer periodico[i].preciop
Hasta (periodico[i].preciop 1)
Repetir
Escribir Cantidad de Ejemplares disponibles del Peridico:
Leer periodico[i].cantidadp
Hasta (periodico[i].cantidadp 1)
Escribir Fecha de Publicacin:
Repetir
Escribir Da:
Leer periodico[i].diap
Hasta (periodico[i].diap 1 y periodico[i].diap 31)
Repetir
Escribir Mes:
Leer periodico[i].mesp
Hasta (periodico[i].mesp 1 y periodico[i].mesp 12)
Repetir
Escribir Ao:
Leer periodico[i].aop
Hasta (periodico[i].aop = 2009)
Repetir
Escribir Empresa que Edita el Peridico:
Leer periodico[i].Empresap
Hasta (periodico[i].empresap <> )
Repetir
Escribir Idioma en que es Editado el Peridico:
Leer periodico[i].Idiomap
Hasta (periodico[i].Idiomap <> )
Fin Para
Fin
Libros (libro, codigol, titulol, preciop, tipol, cantidadl, autor, idiomal, editorial, s)
17
Inicio
Escribir Ingrese las Siguientes:
Repetir
Escribir Cuntos Tipos de Libros va a Ingresar al Sistema:
Leer S
Hasta S 0
Para i = 0 hasta S hacer
Repetir
Escribir Cdigo del Libro:
Leer libro[i].codigol
Hasta (libro[i].codigol 0 y libro[i].codigol 99999999)
Repetir
Escribir Ttulo del Libro:
Leer libro[i].titulol
Hasta (libro[i].titulol <> )
Repetir
Escribir Precio del Libro:
Leer libro[i].preciol
Hasta (libro[i].preciol 1)
Repetir
Escribir Seleccione su Tipo:
Escribir 1.- Cocina
Escribir 2.- Recreativos
Escribir 3.- Histricos:
Escribir 4.- Otros
Leer Tipo
Hasta (tipo 1 y tipo 4)
Si (tipo = 1) entonces
libro[i].Tipol L01
Sino
Si (tipo = 2) Entonces
libro[i].Tipol L02
Sino
Si (tipo = 3) Entonces
libro[i].Tipol L03
Sino
18
Si (tipo = 4) Entonces
libro[i].Tipol L04
Fin
Fin
Fin
Fin
Repetir
Escribir Cantidad de Ejemplares disponibles del Libro:
Leer libro[i].cantidadl
Hasta (libro[i].cantidadl 1)
Repetir
Escribir Nombre del Autor del Libro:
Leer libro[i].autor
Hasta (libro[i].autor <> )
Repetir
Escribir Idioma en que es Editado el Libro:
Leer libro[i].Idiomal
Hasta (libro[i].Idiomal <> )
Repetir
Escribir Editorial que Produce el Libro:
Leer libro[i].editorial
Hasta (libro[i].editorial <> )
Fin Para
Fin
Busqueda (revista, peridico, libro, n, m, s)
Declaracin Variables
Opc : Carcter
C: Entero
Inicio
Escribir Escoja el Tipo de Bsqueda:
Repetir
Escribir 1.- Revistas:
Escribir 2.- Peridicos:
Escribir 3.- Libros:
Leer Opc
19
Hasta (Opc 1 y Opc 3)
Repetir
Escribir Ingrese el Cdigo a Buscar:
Leer c
Hasta (c 0 y c 99999999)
Si (Opc = 1) entonces
Para i=1 hasta N Hacer
Si ( Revista [i] = c) entonces
Mostrarrevista (revista[i])
Fin si
Fin Para
Sino
Si (Opc = 2) Entonces
Para i=1 hasta M Hacer
Si ( Periodico [i] = c) entonces
Mostrarperiodico (Periodico[i])
Fin si
Fin Para
Sino
Si (Opc = 3) Entonces
Para i=1 hasta S Hacer
Si ( Libro [i] = c) entonces
Mostrarlibro (Libro[i])
Fin si
Fin Para
Fin
Fin
Fin
Fin
Reportes (revista, peridico, libro)
Declaracin Variables
Opc : Caracter
Inicio
Escribir Escoja el Tipo de Reporte:
20
Repetir
Escribir 1.- Por Publicaciones:
Escribir 2.- Por Tipo:
Leer Opc
Hasta (Opc 1 y Opc 2)
Si (Opc = 1) entonces
ReportePubli(revista, peridico, libro)
Sino
Si (Opc = 2) Entonces
Reportetipo (revista, peridico, libro)
Fin
Fin
Fin
Mostrarrevista (revista)
Inicio
Escribir Datos de la Revista
Escribir Cdigo, Revista[i].codigor
Escribir Ttulo, Revista[i].titulor
Escribir Precio, Revista[i].precior
Escribir Cantidad Disponible, Revista[i].cantidadr
Escribir Nmero, Revista[i].numero
Escribir Tipo, Revista[i].tipor
Escribir Fecha de Pblicacin, Revista[i].diar /Revista[i].mesr
/Revista[i].aor
Escribir Empresa, Revista[i].empresar
Fin
Mostrarperiodico (periodico)
Inicio
Escribir Datos del Peridico
21
Escribir Cdigo, Peridico[i].codigop
Escribir Ttulo, Peridico[i].titulop
Escribir Tipo, Peridico[i].tipop
Escribir Precio, Peridico[i].preciop
Escribir Cantidad, Peridico[i].cantidadp
Escribir Fecha de Edicin, Peridico[i].diap /Peridico[i].mesp
/Peridico[i].aop
Escribir Empresa, Peridico[i].empresap
Escribir Idioma, Peridico[i].Idiomap
Fin
Mostrarlibro (libro)
Inicio
Escribir Datos del Libro
Escribir Cdigo, Libro[i].codigol
Escribir Ttulo, Libro[i].titulol
Escribir Precio, Libro[i].preciol
Escribir Tipo, Libro[i].tipol
Escribir Cantidad, Libro[i].cantidadl
Escribir Autor, Libro[i].Autor
Escribir Idioma, Libro[i].Idiomal
Escribir Editorial, Libro[i].Editorial
Fin
Reportepubli (revista, peridico, libro)
Declaracin Variables
22
Opc : Carcter
C: Entero
Inicio
Escribir Escoja el Tipo de Reporte:
Repetir
Escribir 1.- Revistas:
Escribir 2.- Peridicos:
Escribir 3.- Libros:
Leer Opc
Hasta (Opc 1 y Opc 3)
Repetir
Escribir Ingrese el Cdigo a Buscar:
Leer c
Hasta (c 0 y c 99999999)
Si (Opc = 1) entonces
Para i=1 hasta N Hacer
Si ( Revista [i] = c) entonces
Mostrarrevista (revista[i])
Imprimir Revista [i]
Fin si
Fin Para
Sino
Si (Opc = 2) Entonces
Para i=1 hasta M Hacer
Si ( Periodico [i] = c) entonces
Mostrarperiodico (periodico[i])
Imprimir periodico [i]
Fin si
Fin Para
Sino
Si (Opc = 3) Entonces
Para i=1 hasta N Hacer
Si ( Libro [i] = c) entonces
Mostrarlibro (Libro[i])
Imprimir periodico [i]
23
Fin si
Fin Para
Fin
Fin
Fin
Fin
ReporteTipo (revista, peridico, libro)
Declaracin Variables
Opc, C: Carcter
Inicio
Escribir Escoja el Tipo de Reporte:
Repetir
Escribir 1.- Revistas:
Escribir 2.- Peridicos:
Escribir 3.- Libros:
Leer Opc
Hasta (Opc 1 y Opc 3)
Repetir
Escribir Ingrese el Tipo de Categora de Publicacin a Buscar:
Leer C
Hasta (C <> )
Si (Opc = 1) entonces
Para i=1 hasta N Hacer
Si ( Revista [i] = c) entonces
Mostrarrevista (revista[i])
Imprimir Revista
Fin si
Fin Para
Imprimir Revista
Sino
Si (Opc = 2) Entonces
Para i=1 hasta M Hacer
Si ( Periodico [i] = c) entonces
24
Mostrarperiodico (periodico[i])
Fin si
Fin Para
Imprimir Periodico
Sino
Si (Opc = 3) Entonces
Para i=1 hasta S Hacer
Si ( Libro [i] = c) entonces
Mostrarlibro (Libro[i])
Fin si
Fin Para
Imprimir Libro
Fin
Fin
Fin
Fin
Unidad N 7. Probar el Algoritmo Utilizando el Concepto de Robustez
Desde mi punto de vista el algoritmo necesita mensajes validadores en todos y cada
uno de los datos de entrada en el arreglo; es decir, cuando se est ingresando cualquier dato
en caso que no cumpla con los parmetros preestablecido en el cdigo fuente y
pseudocdigo se le debe mostrar un mensaje que le indique que el dato ingresado es errado
y como debe ingresarlo. Ejemplo:
Repetir
25
Escribir Cantidad de Ejemplares disponibles de la Revista:
Leer revista[i].cantidadr
Hasta (revista[i].cantidadr 1)
Si (revista[i].cantidadr 0)
Escribir Dato ingresado de forma incorrecta. La cantidad debe ser
mayor a Uno 1 para que sea considerado vlido:
Fin Si
Por otro lado, es importante tener en cuenta que al momento de ser ingresado los
cdigo tanto para las revistas, peridicos y los libros, se debe tener en cuenta que para que
no quede la menor oportunidad de que existan cdigos repetidos (bien porque el usuario se
equivoc al ingresar los datos o porque quiso hacerlo), es necesario mandar a hacer una
bsqueda en toda la estructura del arreglo para verificar que ese dato que se est ingresando
verdaderamente no se encuentre en ninguna posicin de dicho arreglo. Ejemplo:
Para i= 0 hasta S hacer
Repetir
Escribir Cdigo del Libro:
Leer Codigol
Hasta (Codigol 0 y Codigol 99999999)
Para j=0 hasta S Hacer
Si (Libro.codigol = Codigol) Entonces
Escribir Cdigo Repetido ya se encuentra almacenado. Intente de
Nuevo
Sino
Libro[i].codigol Codigol
Fin Si
Fin Para
Unidad N 8. Cdigo en Pascal
program dispubli(input, output); //Cabeceras del programa
uses Crt,printer; //Directorio de librerias, printer se usar para
imprimir desde pascal.
Type //Declaracin de Tipo
revi = record //Registro que contiene los datos de las revistas
codigor, nuero, diar, esr, anor, cantidadr! integer"
26
titulor,e#resar, ti#or ! string"
#recior! real"
end"
#erio = record //Registro que contiene los datos de los
#eriodicos
codigo#, dia#, es#, ano#, cantidad#! integer"
titulo#,e#resa#, ti#o#, idioa#! string"
#recio#! real"
end"
li$ = record //Registro que contiene los datos de las
li$rerias
codigol,cantidadl! integer"
titulol,editorial, idioal, autor, ti#ol! string"
#reciol! real"
end"
revista = arra% &1..50' o( revi" // revista es un arreglo de registro del ti#o revi
#eriodico = arra% &1..50' o( #erio" // #eriodico es un arreglo de registro del ti#o #erio
li$ro = arra% &1..50' o( li$" // li$ro es un arreglo de registro del ti#o li$
var // Declaracin de variables
ti#o, o#cion! $%te"
n, , s, i ! integer"
revista1! revi" // reali)* la declaraci*n de las varia$les asociadas
a los ca#os registros
#eriodico1! #erio"
li$ro1!li$"
r! revista"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++
procedure revistas (var revista1: revi;var r: revista); // en este #rocedieiento se
ingresan los datos a ser alacenados en el arreglo a trav,s de los ca#os del registro.
begin
-riteln ./0ngresando 1atos al 2istea/3"
(or i!=1 to 50 do $egin
re#eat
$egin
-riteln ./45digo de Revistas/3"
readln .revista1.codigor3"
end"
until .revista1.codigor6=13 and .revista1.codigor7=999993"
re#eat
$egin
-riteln ./89tulo de la Revista/3"
readln .revista1.titulor3"
end"
until .revista1.titulor76//3"
re#eat
$egin
-riteln ./:recio de la Revista/3"
readln .revista1.#recior3"
end"
until .revista1.#recior76 03"
27
re#eat
$egin
-riteln ./4antidad de ;<e#lares de la revista/3"
readln .revista1.cantidadr3"
end"
until .revista1.cantidadr6=13 and .revista1.cantidadr7=100003"
re#eat
$egin
-riteln ./=>ero de la Revista/3"
readln .revista1.nuero3"
end"
until .revista1.nuero6=13 and .revista1.nuero7=563"
re#eat
$egin
-riteln ./2eleccione su 8i#o de Revista/3"
-riteln ./1.+ 1e 0nvestigaci5n/3"
-riteln ./2.+ 4ient9(icas/3"
-riteln ./3.+ ;s#ect culos % ?arandula/3"
-riteln ./4.+ @tros/3"
readln .ti#o3"
end"
until.ti#o6=13 and .ti#o7=43"
i( .ti#o = 13 tAen
$egin
revista1.ti#or!= /R01/"
i( .ti#o = 23 tAen
$egin
revista1.ti#or!= /R02/"
i( .o#cion = 33 tAen
$egin
revista1.ti#or!= /R03/"
i( .o#cion = 43 tAen
revista1.ti#or!= /R04/"
end"
end"
end"
end"
-riteln ./0ngrese ?ecAa de :u$licaci5n/3"
re#eat
$egin
-riteln ./19a/3"
readln .revista1.diar3"
end"
until .revista1.diar6=13 and .revista1.diar7=313"
re#eat
$egin
-riteln ./Bes/3"
readln .revista1.esr3"
end"
until .revista1.esr6=13 and .revista1.esr7=123"
re#eat
$egin
-riteln ./CDo/3"
28
readln .revista1.anor3"
end"
until .revista1.anor=20093"
re#eat
$egin
-riteln ./;#resa que ;dita la Revista/3"
readln .revista1.e#resar3"
end"
until .revista1.e#resar76//3
r E revista1"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure periodicos .var #eriodico1! #erio" F! #eriodico3"
// en este #rocediiento se ingresan los datos a ser alacenados en el arreglo a trav,s de los
ca#os del registro.
$egin
-riteln ./0ngresando 1atos al 2istea/3"
(or i!=1 to 50 do $egin
re#eat
$egin
-riteln ./4*digo de los :eri5dicos/3"
readln .#eriodico1.codigo#3"
end"
until .#eriodico1.codigo#6=13 and .#eriodico1.codigo#7=999993"
re#eat
$egin
-riteln ./89tulo del :eri5dico/3"
readln .#eriodico1.titulo#3"
end"
until .#eriodico1.titulo#76//3"
re#eat
$egin
-riteln ./2eleccione su 8i#o de :eri5dico/3"
-riteln ./1.+ =acional de =oticias/3"
-riteln ./2.+ =acional 1e#ortivo/3"
-riteln ./3.+ 0nternacional de =oticia/3"
-riteln ./4.+ @tros/3"
readln .ti#o3"
end"
until.ti#o6=13 and .ti#o7=43"
i( .ti#o = 13 tAen
$egin
#eriodico1.ti#o#!= /:01/"
i( .ti#o = 23 tAen
$egin
#eriodico1.ti#o#!= /:02/"
i( .o#cion = 33 tAen
$egin
#eriodico1.ti#o#!= /:03/"
i( .o#cion= 43 tAen
$egin
#eriodico1.ti#o#!= /:04/"
29
end"
end"
end"
end"
re#eat
$egin
-riteln ./:recio del :eri5dico/3"
readln .:eriodico1.#recio#3"
end"
until .#eriodico1.#recio#76 03"
re#eat
$egin
-riteln ./4antidad de ;<e#lares del :eri5dico/3"
readln .#eriodico1.cantidad#3"
end"
until .#eriodico1.cantidad#6=13 and .#eriodico1.cantidad#7=100003"
-riteln ./0ngrese ?ecAa de ;dici5n del :eri5dico/3"
re#eat
$egin
-riteln ./19a/3"
readln .#eriodico1.dia#3"
end"
until .#eriodico1.dia#6=13 and .#eriodico1.dia#7=313"
re#eat
$egin
-riteln ./Bes/3"
readln .#eriodico1.es#3"
end"
until .#eriodico1.es#6=13 and .#eriodico1.es#7=123"
re#eat
$egin
-riteln ./CDo/3"
readln .#eriodico1.ano#3"
end"
until .#eriodico1.ano#=20093"
re#eat
$egin
-riteln ./;#resa que ;dita el :eri5dico/3"
readln .#eriodico1.e#resa#3"
end"
until .#eriodico1.e#resa#76//3"
re#eat
$egin
-riteln ./0dioaen el que se ;dita el :eri5dico/3"
readln .#eriodico1.idioa#3"
end"
until .#eriodico1.idioa#76//3"
end"
#eriodicoE #eriodico1"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure libros (var libro1: lib;var l: libro);
30
// en este #rocediiento se ingresan los datos a ser alacenados en el arreglo a trav,s de los
ca#os del registro.
$egin
-riteln ./0ngresando 1atos al 2istea/3"
(or i!=1 to 50 do $egin
re#eat
$egin
-riteln ./45digo del Gi$ro/3"
readln .li$ro1.codigol3"
end"
until .li$ro1.codigol6=13 and .li$ro1.codigol7=999993"
re#eat
$egin
-riteln ./89tulo del Gi$ro/3"
readln .li$ro1.titulol3"
end"
until .li$ro1.titulol76//3"
re#eat
$egin
-riteln ./:recio de la Revista/3"
readln .revista1.#recior3"
end"
until .li$ro1.#reciol76 03"
re#eat
$egin
-riteln ./2eleccione su 8i#o de Gi$ro/3"
-riteln ./1.+ 4ocina/3"
-riteln ./2.+ Recreativos/3"
-riteln ./3.+ Hist5ricos/3"
-riteln ./4.+ @tros/3"
readln .ti#o3"
end"
until.ti#o6=13 and .ti#o7=43"
i( .ti#o = 13 tAen
$egin
li$ro1.ti#ol!= /G01/"
i( .ti#o = 23 tAen
$egin
li$ro1.ti#ol!= /G02/"
i( .o#cion = 33 tAen
$egin
li$ro1.ti#ol!= /G03/"
i( .o#cion= 43 tAen
$egin
li$ro1.ti#ol!= /G04/"
end"
end"
end"
end"
re#eat
$egin
-riteln ./4antidad de ;<e#lares de la revista/3"
readln .li$ro1.cantidadl3"
31
end"
until .li$ro1.cantidadl6=13 and .li$ro1.cantidadl7=100003"
re#eat
$egin
-riteln ./=o$re del Cutor del Gi$ro/3"
readln .li$ro1.autor3"
end"
until .li$ro1.autor76 //3"
re#eat
$egin
-riteln ./0dioa en que esta ;ditado el Gi$ro/3"
readln .li$ro1.idioal3"
end"
until .li$ro1.idioal76//3"
re#eat
$egin
-riteln ./;ditorial que ;dit5 el li$ro/3"
readln .li$ro1.editorial3"
end"
until .li$ro1.editorial76//3"
end"
li$roE li$ro1"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure mostrarrevista (revista, var i: integer);
// se encarga de mostrar los datos almacenados en el arreglo revista.
$egin
-riteln ./1atos de la Revista/3"
-riteln ./45digo!/,revista&i'.codigor3"
-riteln ./89tulo!/,revista&i'.titulor3"
-riteln ./:recio!/,revista&i'.#recior3"
-riteln ./4antidad!/,revista&i'.cantidadr3"
-riteln ./=>ero!/,revista&i'.nuero3"
-riteln ./8i#o!/,revista&i'.ti#or3"
-riteln ./?ecAa de :u$licaci5n!/,revista&i'.diar,///,revista&i'.esr,///,revista&i'.anor3"
-riteln ./;#resa!/,revista&i'.e#resa3"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure mostrarperiodico (periodico);
// se encarga de mostrar los datos almacenados en el arreglo peridico.
$egin
-riteln ./1atos del :eri5dico/3"
-riteln ./45digo!/,#eriodico&i'.codigo#3"
-riteln ./89tulo!/,#eriodico&i'.titulo#3"
-riteln ./8i#o!/,#eriodico&i'.ti#o#3"
-riteln ./:recio!/,#eriodico&i'.#recio#3"
-riteln ./4antidad!/,#eriodico&i'.cantidad#3"
-riteln ./?ecAa de ;dici5n!/,#eriodico&i'.dia#,///,#eriodico&i'.es#,///,#eriodico&i'.ano#3"
-riteln ./;#resa!/,#eriodico&i'.e#resa#3"
-riteln ./0dioa!/,#eriodico&i'.idioa#3"
32
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure mostrarlibro (libro);
// se encarga de mostrar los datos almacenados en el arreglo libro.
$egin
-riteln ./1atos del Gi$ro/3"
-riteln ./45digo!/,li$ro&i'.codigol3"
-riteln ./89tulo!/,li$ro&i'.titulol3"
-riteln ./:recio!/,li$ro&i'.#reciol3"
-riteln ./8i#o!/,li$ro&i'.ti#ol3"
-riteln ./4antidad!/,li$ro&i'.cantidadl3"
-riteln ./Cutor!/,li$ro&i'.Cutor3"
-riteln ./0dioa!/,li$ro&i'.idioal3"
-riteln ./;ditorial!/,li$ro&i'.editorial3"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure busueda (revista, periodico, libro); //!rocedimiento ue se encarga de
"acer las b#suedas dentro de los arreglos por el m$todo de la burbu%a simple
var
o#c, c! integer"
$egin
-riteln ./;sco<a el 8i#o de I>squeda/3"
re#eat
$egin
-riteln ./1.+ Revistas/3"
-riteln ./2.+ :eri5dicos/3"
-riteln ./3.+ Gi$ros/3"
readln .o#c3"
end"
until.o#cion6=13 and .o#cion7=33"
re#eat
$egin
-riteln ./0ngrese el 45digo a Iuscar/3"
readln .c3"
end"
until.c6=13 and .c7=999999993"
i( .o#cion = 13 tAen
$egin
(or i!= 1 to 50 do $egin
ostrarrevista.revista3"
end"
end"
i( .o#cion = 23 tAen
$egin
(or i!= 1 to 50 do $egin
i( .#eriodico&i'= c3 tAen
$egin
ostrar#eriodico.#eriodico3"
end"
end"
33
i( .o#cion = 33 tAen
$egin
(or i!= 1 to 50 do $egin
i( .li$ro&i'= c3 tAen
$egin
ostrarli$ro.li$ro3"
end"
end"
end"
end"
end"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure reportepubli(revista, &'eridico, libro); // desde ac( se muestran los
reportes de las publicaciones y se imprimen
var
o#c, c! integer"
$egin
-riteln ./;sco<a el Re#orte 1eseado/3"
re#eat
$egin
-riteln ./1.+ Revista/3"
-riteln ./2.+ :eri5dicos/3"
-riteln ./3.+ Gi$ros/3"
readln .o#c3"
end"
until.o#c6=13 or .o#c7=33"
re#eat
$egin
-riteln ./0ngrese el 45digo a Iuscar/3"
readln .c3"
end"
until.c6=13 and .c7=999999993"
i( .o#cion = 13 tAen
$egin
(or i!= 1 to 50 do $egin
i( .o#cion = 13 tAen
$egin
ostrarrevista.revista3"
-riteln .0st,/revista/3" // ;sta lJnea es #ara generar la i#resi*n de los datos contenidos en
la revista
end"
end"
i( .o#cion = 23 tAen
$egin
(or i!= 1 to 50 do $egin
i( .#eriodico&i'= c3 tAen
$egin
ostrar#eriodico.#eriodico3"
-riteln .0st,/#eriodico/3" / ;sta lJnea es #ara generar la i#resi*n
end"
34
end"
i( .o#cion = 33 tAen
$egin
(or i!= 1 to 50 do $egin
i( .li$ro&i'= c3 tAen
$egin
ostrarli$ro.li$ro3"
-riteln .0st,/li$ro/3" / ;sta lJnea es #ara generar la i#resi*n
end"
end"
end"
end"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure reportetipo(revista, periodico, libro);
// en este procedimiento se generan reportes por las categor)as y por los tipos
e*istente.
$egin
var
o#c, c! integer"
$egin
-riteln ./;sco<a el Re#orte 1eseado/3"
re#eat
$egin
-riteln ./1.+ Revista/3"
-riteln ./2.+ :eri5dicos/3"
-riteln ./3.+ Gi$ros/3"
readln .o#c3"
end"
until.o#c6=13 or .o#c7=33"
re#eat
$egin
-riteln ./0ngrese el 45digo a Iuscar/3"
readln .c3"
end"
until.c6=13 and .c7=999999993"
i( .o#cion = 13 tAen
$egin
(or i!= 1 to 50 do $egin
i( .o#cion = 13 tAen
$egin
ostrarrevista.revista3"
end"
end"
-riteln .0st,/revista/3"
i( .o#cion = 23 tAen
$egin
(or i!= 1 to 50 do $egin
i( .#eriodico&i'= c3 tAen
35
$egin
ostrar#eriodico.#eriodico3"
end"
end"
-riteln .0st,/#eriodico/3"
i( .o#cion = 33 tAen
$egin
(or i!= 1 to 50 do $egin
i( .li$ro&i'= c3 tAen
$egin
ostrarli$ro.li$ro3"
end"
end"
-riteln .0st,/li$ro/3"
end"
end"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++
procedure reportes (revista, periodico, libro); // Desde este procedimiento se puede
acceder a generar los reportes tanto por tipo como por las publicaciones
var
o#c! entero
$egin
-riteln ./;sco<a el 8i#o de Re#orte/3"
re#eat
$egin
-riteln ./1.+ :or :u$licaciones/3"
-riteln ./2.+ :or 8i#o/3"
readln .o#c3"
end"
until.o#c=13 or .o#c=23"
i( .o#c = 13 tAen
$egin
re#orte#u$li.revista,#eriodico,li$ro3"
i( .o#cion = 23 tAen
$egin
re#orteti#o.revista, #eriodico,li$ro3"
end"
end"
end"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++//
//!rograma !rincipal en +engua%e !ascal, contiene un men# ue presenta las opciones
del sisetma
$egin
-riteln ./Iienvenidos al :rograa de @#tii)aci5n de Kentas de la ;#resa 102:LIG0/3"
-riteln ./C travMs del siguiente Ben> escoger la o#ci5n con la cu l desea tra$a<ar/3"
re#eat
$egin
36
-riteln ./1.+ 0ngresar :u$licaciones de Revistas/3"
-riteln ./2.+ 0ngresar :u$licaciones de :eri5dicos/3"
-riteln ./3.+ 0ngresar :u$licaciones de Gi$ros/3"
-riteln ./4.+ I>squeda de :u$licaciones/3"
-riteln ./5.+ Nenerar Re#ortes/3"
-riteln ./6.+ 2alir/3"
readln .o#cion3"
end"
until.o#cion6=13 and .o#cion7=63"
i( .o#cion = 13 tAen
$egin
revistas.revista1,r3"
i( .o#cion = 23 tAen
$egin
#eriodicos.#eriodico1,#eriodico3"
i( .o#cion = 33 tAen
$egin
li$ros.li$ro1,li$ro3"
i( .o#cion = 43 tAen
$egin
$usqueda.revista,#eriodico,li$ro3"
i( .o#cion = 53 tAen
$egin
re#ortes.revista,#eriodico,li$ro3"
end"
end"
end"
end"
end"
end.
37

También podría gustarte