Está en la página 1de 49

Programacin Estructurada.

Subprogramas, Procedimientos y
Funciones
Tema II
Introduccin a los subalgoritmos o subprogramas. Funciones. Declaracin e
invocacin de funciones. Procedimientos (subrutina). Procedimientos
versus Funciones. Sustitucin de parmetros. mbito: Variables locales y
globales. Funciones y Procedimientos con parmetros. Efectos laterales.

Introduccin a los subalgoritmos o subprogramas


Soluciona problemas complejos al dividirlos en subprogramas y
luego dividirlos estos en otros mas simples, hasta que estos sean
mas fciles de resolver. Esta tcnica se llama divide y vencers .

Introduccin a los subalgoritmos o subprogramas

Se dice que el programa principal invoca al subprograma, el


subprograma ejecuta la tarea y luego devuelve el control al
programa.

Introduccin a los subalgoritmos o subprogramas

Un programa puede llamar a su ves a sus


propios subprogramas

Procedimientos y funciones
Supongamos que queremos escribir un programa que pida al usuario
el valor de un cierto ngulo en grados sexagesimales, calcule su
tangente y escriba su valor con dos decimales. En una primera
aproximacin podramos escribir:

Procedimientos y funciones

Procedimientos y funciones
Concretando algunas de las ideas introducidas
Pascal proporciona mecanismos para ampliar los procedimientos y funciones
predefinidos, definiendo otros nuevos a la medida de las necesidades del programador.
Cada procedimiento o funcin es, en s mismo, un pequeo programa, tanto por su
estructura sintctica (con encabezamiento, declaraciones y cuerpo) como por su
cometido (resolver un problema concreto con los datos recibidos y ofrecer los
resultados obtenidos).
Existen dos puntos de consideracin de estos subprogramas: su definicin, donde se
introducen, y su llamada, donde se utilizan.
En su definicin, ambas clases de subprogramas operan sobre datos genricos, sus
parmetros, que tomarn valores en cada llamada, esto es, cuando se hace uso de
los subprogramas para unos datos particulares.
Un procedimiento es un subprograma que desempea el papel de una instruccin,
mientras que una funcin es un subprograma que desempea el de una expresin,
puesto que calcula un valor, que se reemplaza por la llamada a la funcin.

Procedimientos y funciones
Este distinto cometido se refleja en su llamada: los procedimientos se
usan como las dems instrucciones.

Mientras que las funciones representan un valor, por lo que tienen sentido
como expresiones:

Por el contrario, no est permitido ni tiene sentido llamar a una funcin como un
procedimiento:

Tampoco llamar a un procedimiento como una funcin:

Funciones y Procedimientos: Subprogramas


Los parmetros
Los parmetros permiten que el programa y los procedimientos y funciones puedan comunicarse entre s
intercambiando informacin. De esta forma las instrucciones y expresiones componentes de los
subprogramas se aplican sobre los datos enviados en cada llamada ofreciendo una flexibilidad
superior a los subprogramas sin parmetros. Al mismo tiempo, si la ejecucin de los subprogramas
produce resultados necesarios en el punto de la llamada, los parmetros pueden actuar como el
medio de transmisin de esos resultados.

Son canales de comunicacin para pasar datos ente programas y subprogramas en ambos sentidos.

Estn asociados a variables. constantes, expresiones, etc., y por tanto, se indican mediante los
correspondientes identificadores o expresiones.

Se utilizan en la llamada o invocacin al subprograma se denominan parmetros actuales, reales o


argumentos, y son los que entregan la informacin al subprograma.

Los parmetros que la reciben en el subprograma se denominan parmetros formales o ficticios y se


declaran en la cabecera del subprograma.

Los parmetros son opcionales y si no se necesitan no se deben usar. Para utilizarlos es necesario
declararlos: PROCEDURE nombre (lista de parmetros);

En una llamada a un subprograma tiene que verificarse que:


El nmero de parmetros formales debe ser igual al de actuales.
Los parmetros que ocupen el mismo orden en cada una de las Listas deben ser compatibles
en tipo.

COMUNICACIN CON SUBPROGRAMAS: Parmetros

La lista de parmetros esta compuesta de los nombres de


los mismos y del tipo de datos que representan, los del
mismo tipo se separan con comas "," y cada tipo diferente
se separa con punto y coma ";".
Procedure Ejemplo(a, b : Integer; c, d : String);
Para llamar a un procedimiento que utiliza parmetros se
pueden utilizar como tales otras variables o constantes,
siempre y cuando sean del mismo tipo que los declarados.
Ejemplo(1, 2, 'Hola', 'Adios');

Ej. Programa que use parmetros ..


PROGRAM Parmetros;
VAR
Saludo : String;
PROCEDURE Imprime_5 (a : String);
VAR
Contador : Integer;
BEGIN
FOR contador := 1 to 5 DO
{Imprime 5 veces la cadena almacenada }
WriteLn(a);
{en la variable "a", que es la informacin}
END;
{que llega como parmetro }
BEGIN
Saludo := 'Bienvenidos al programa';
Imprime_5 (Saludo);
{llama al procedimiento Imprime_5, usando como}
{parmetro la variable Saludo }
Imprime_5 ('Fin');
{Utiliza la cadena "fin" como parmetro }
END.

Parmetros
En Pascal, es obligatorio indicar el tipo de los parmetros que pasan como
argumentos a los subprogramas. En el caso de una funcin, se debe
indicar adems el tipo del resultado que se devuelve al programa principal
subprograma que efectu la llamada.
No es obligado que el(los) argumento(s) de una funcin sea(n) del mismo tipo
que su resultado.

Parmetros formales y reales


Cuando se define un subprograma es necesario dar
nombres a los parmetros para poder mencionarlos.
A

los parmetros utilizados en la definicin de


procedimientos y funciones se les denomina parmetros
formales. (ficticios).

En cambio, a los argumentos concreto utilizados en la


llamada de un subprograma se les llama parmetros
reales.

Mecanismos de paso de parmetros


Supongamos, en primer lugar, que esta variable tiene un valor que le
ha sido asignado previamente en el programa, por ejemplo 10, y a
continuacin esta variable es pasada como parmetro al
procedimiento Write.
El proceso seguido es el siguiente:

En cambio, supongamos ahora que utilizamos el procedimiento Read con la


misma variable a, y que el usuario escribe por el teclado un valor distinto al que
tenga a, por ejemplo 20.

Mecanismos de paso de parmetros


Parmetros por valor: En este caso, se calcula el valor de los parmetros reales
y despus se copia su valor en los formales, por lo tanto los parmetros
reales deben ser expresiones cuyo valor pueda ser calculado. Este
mecanismo se llama paso de parmetros por valor y tiene como
consecuencia que, si se modifican los parmetros formales en el cuerpo del
subprograma, los parmetros reales no se ven afectados. Dicho de otra
forma, no hay transferencia de informacin desde el subprograma al
programa en el punto de su llamada. Por lo tanto, los parmetros por valor
actan slo como datos de entrada al subprograma.
Parmetros por referencia (o por direccin o por variable):: En este otro caso, se
hacen coincidir en el mismo espacio de memoria los parmetros reales y los
formales, luego los parmetros reales han de ser variables. Este segundo
mecanismo se denomina paso de parmetros por referencia (tambin por
direccin o por variable), y tiene como consecuencia que toda modificacin
de los parmetros formales se efecta directamente sobre los parmetros
reales, y esos cambios permanecen al finalizar la llamada.

Creacin de los procedimientos


1.- Que debe hacer el procedimiento
2.- Declaramos el procedimiento, despus de haber declarado variables y
constantes, antes del cuerpo del programa principal.

PROCEDURE Titulo;
BEGIN
WriteLn ('Programa de Turbo Pascal');
END;

Uso de los procedimientos


Una vez declarado el procedimiento es posible utilizarlo como una instruccin
de Turbo Pascal. Al uso de un procedimiento se le conoce como llamada al
procedimiento.
PROGRAM Procedimientos;
PROCEDURE Titulo;
BEGIN
WriteLn ('Programa de Turbo Pascal');
END;
BEGIN
WriteLn ('Programa ejemplo del uso de procedimientos');
Titulo;
{Llama al procedimiento}
WriteLn;
Titulo;
{Vuelve a llamar al procedimiento}
END;

mbito y visibilidad de los identificadores


Los identificadores declarados o definidos en el programa principal, se denominan
globales, y su mbito es (son visibles en) todo el programa, incluso dentro de
los subprogramas (excepto si en stos se declara una variable con el mismo
identificador, la cual ocultar a la variable global homnima.
Los identificadores declarados o definidos dentro de subprogramas se denominan
locales, slo son vlidos dentro de los subprogramas a los que pertenecen y,
por tanto, no son reconocidos fuera de ellos (es decir, quedan ocultos al resto
del programa).
Si dentro de un subprograma se define otro, se dice que los parmetros locales
del subprograma superior se denominan no locales con respecto al
subprograma subordinado y son visibles dentro de ambos subprogramas.
Los objetos globales se crean al ejecutarse el programa y permanecen definidos
hasta que ste termina. En cambio, los objetos locales se crean en el momento
de producirse la llamada al subprograma al que pertenecen y se destruyen al
terminar ste.

MBITO: VARIABLES LOCALES Y GLOBALES

MBITO: VARIABLES LOCALES Y GLOBALES

Variables locales y globales

En Pascal cada
identificador tiene un
campo de accin,
solo dentro de ste
campo es posible
utilizarlo. Ej.: Las
variables, que pueden
ser globales o locales.

PROGRAM Variables;
VAR
Hola : String;
PROCEDURE prueba;
VAR
Adis : String;
BEGIN
{En esta seccin si es posible usar la variable Hola}
Adis := 'Adios, que les vaya bien';
WriteLn (Adis);
END;
BEGIN
{En esta seccin no se reconoce a la variable Adis}
Hola := 'Hola, bienvenidos al programa';
WriteLn (Hola);
WriteLn (Adis);
{Al compilar el programa se generar un error ya}
prueba;
END.

Criterios de localidad

Los diferentes mbitos de validez de los identificadores, correctamente utilizados,


permiten alcanzar una gran independencia entre el programa principal y sus
subprogramas, y entre stos y los subprogramas en ellos contenidos.

De esta forma se puede modificar un subprograma sin tener que cambiar los dems,
facilitando tanto el diseo del programa como posteriormente su depuracin y
mantenimiento.

Facilitan la utilizacin de subprogramas ya creados (bibliotecas de subprogramas) dentro


de nuevos programas, eliminando las posibles interferencias entre los objetos del
programa y los de los subprogramas.

Condiciones:
Principio de mxima localidad: Todos los objetos particulares de un subprograma,
necesarios para que desempee su cometido, deben ser locales al mismo.
Principio de autonoma de los subprogramas: La comunicacin con el exterior debe
realizarse exclusivamente mediante parmetros, evitndose dentro de los subprogramas
toda referencia a objetos globales.

Efectos laterales

Hemos visto distintos mecanismos por los cuales un procedimiento o


funcin pueden devolver o enviar resultados al programa principal (o a otro
procedimiento o funcin).

Tanto para los procedimientos como para las funciones, dichos valores
pueden enviarse mediante parmetros por referencia.

Una tercera va consiste en utilizar las variables globales, porque dichas


variables son reconocidas en cualquier lugar del bloque. Dicha asignacin
es correcta, al menos desde el punto de vista sintctico.

Sin embargo, esta ultima posibilidad merma la autonoma de los


subprogramas, y es perjudicial porque puede introducir cambios en
variables globales y errores difciles de detectar.

Otras recomendaciones sobre el uso de


parmetros
Parmetros por valor y por referencia
Se recomienda emplear parmetros por valor siempre que
sea posible (los argumentos no se alteran) y reservar los
parmetros por referencia para aquellos casos en que sea
necesario por utilizarse como parmetros de salida.
Cuando se trabaja sobre datos estructurados grandes (ej.
vectores o matrices) puede estar justificado pasar dichas
estructuras por referencia, aunque solamente se utilicen
como parmetros de entrada, porque de esta forma no hay
que duplicar el espacio en la memoria para copiar la
estructura local, sino que ambas comparten la misma
posicin de memoria. Tambin se ahorra el tiempo necesario
para copiar de la estructura global a la local.

Otras recomendaciones sobre el uso de


parmetros
Parmetros por referencia y funciones
En Pascal, tanto los procedimientos como las
funciones pueden utilizar parmetros por valor y
por referencia.
Sin embargo la utilizacin de los parmetros por
referencia no es apropiada en las funciones,
porque su cometido natural consiste solo en
hallar el valor que representan.

Otras recomendaciones sobre el uso de


parmetros

Funciones con resultados mltiples


Las funciones tienen en Pascal la
limitacin de devolver nicamente valores
pertenecientes a tipos simples.
Si queremos que un subprograma
devuelva valores mltiples, se recomienda
utilizar procedimientos.

Desarrollo correcto de subprogramas

Hay dos aspectos de inters:

la llamada es la que efecta un cierto encargo",


y la definicin la que debe cumplimentarlo.

El necesario acuerdo entre definicin y llamada se


garantiza por medio de la especificacin, mas o menos
formalmente.

En lo que respecta a la definicin, para asegurar la


correccin de un subprograma lo consideraremos como lo
que es: un pequeo programa. As, la tarea esencial en
cuanto al estudio de su correccin consistir en considerar
sus instrucciones componentes y garantizar que cumple
con su cometido, que es el descrito en la especificacin.

Para cada subprograma especificaremos su interfaz de una


forma semi-formal. Para ello explicitaremos al principio de
cada subprograma una precondicin que describa lo que
precisa el subprograma para una ejecucin correcta y una
poscondicin que indique los efectos que producira.

Definicin de las funciones


Las funciones son, al igual que los procedimientos, un conjunto de sentencias
que se ejecutan constantemente, la diferencia entre stas y los
procedimientos es que las funciones regresan un valor.

FUNCTION nombre(parmetros) : tipo_de_datos;

FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos nmeros reales}


BEGIN
Promedio := (a + b) / 2;
END;

Uso de las funciones


PROGRAM Funciones;
VAR
X, Y, Z : Real;

Como las funciones devuelven


un valor especfico la forma
ms usual de utilizarlas es
por medio de asignaciones
de una variable a la
funcin.

FUNCTION Promedio (a, b : Real) : Real;


{Promedio de dos nmeros reales}
BEGIN
Promedio := (a + b) / 2;
END;
BEGIN
X := 5.89;
Y := 9.23;
Z := Promedio (X, Y);
{Iguala Z al valor devuelto por la funcin
Promedio}
WriteLn('El promedio de ',X,' y ',Y,' es:
',Z);
END.

Procedimientos Pre establecidos en Pascal


Procedimieto HALT
El procedimiento HALT ya se habia revisado anteriormente, pero se tom
como una instruccin, siendo que es realmente un procedimiento
predefinido de Turbo Pascal que nos permite terminar nuestro programa en
cualquier punto del mismo.
El procedimiento EXIT provoca la salida del procedimiento que se est
ejecutando y nos regresa al lugar de donde fue llamado.
Procedimientos INC y DEC
El procedimiento INC incrementa en 1 el contenido de cualquier variable de
tipo entero, es lo mismo en un programa teclear:
Variable := Variable + 1;
o telcear:
Inc(Variable);
El procedimiento DEC decrementa en 1 el valor de cualquier variable de
tipo entero que se le indique, se usa igual que INC:
DEC (Variable);

Procedimiento versus funcin


Los procedimientos y funciones son subprogramas cuyo diseo y misin son
similares, sin embargo, existen unas diferencias esenciales entre ellos:
1. Un procedimiento es llamado desde el algoritmo o programa principal
mediante su nombre y una lista de parmetros actuales, o bien con la
instruccin llamar_a (call).
Al llamar al procedimiento se detiene momentneamente el programa que
se estuviera realizando y el control pasa al procedimiento llamado.
Despus de que las acciones del procedimiento se ejecutan, se regresa a
la accin inmediatamente siguiente a la que se llam.
2. Las funciones devuelven un valor, los procedimientos pueden devolver 0,1 o
n valores y en forma de lista de parmetros.
3. El procedimiento se declara igual que la funcin, pero su nombre no est
asociado a ninguno de los resultados que obtiene.

Programacin Estructurada
Los avances tecnolgicos no necesariamente estn acompaados por una evolucin en las
tcnicas de construccin de programas.
Se requieren programas mas complejos y de gran tamao.
Diseo Descendente o Diseo Top-Down. Consiste en una serie de descomposiciones
sucesivas del problema inicial, que describen el refinamiento progresivo del conjunto de
instrucciones que van a formar parte del programa.
Las tcnicas de desarrollo y diseo de programas, que se utilizan en la programacin
convencional o lineal, tienen inconvenientes, sobre todo a la hora de verificar y modificar
programas.
Tcnicas que facilitan la comprensin del programa: Programacin estructurada
Pioneros de esta metodologa: Dijkstra, Warnier, Jackson, Chapin y Bertini; y de los
Lenguajes de Programacin Estructurada Niklaus Wirth, Dennis Ritchie y Kenneth
Thompson.
Estructura: Es la descomposicin ordenada de las partes de un todo. Conjunto de
elementos interrelacionados que forman un todo.
Programacin Estructurada: Consiste en el diseo, escritura y prueba de un programa,
construido con estructura, o sea con una organizacin ordenada del todo en partes
interdependientes.

Herramientas. Estructuras Bsicas. Figuras Lgicas.


Teorema de la Estructura
Aporte de BOHN y JACOPINI (1966). Matemticamente todo problema puede
resolverse con tres figuras lgicas (secuencia, alternativa y repetitiva o
iterativa).
La programacin estructurada se consigue mediante la descomposicin en
partes, segmentos, rutinas o subproblemas interdependientes; que pueden
ser considerados como las unidades razonablemente pequeas, que deben
representar por si mismas un contenido lgico, coherente y completo.
Esta segmentacin debe realizarse de lo general a lo particular, organizando
por niveles con grado de detalle creciente, hasta lograr que todos los
tratamientos hayan sido explcitamente considerados.
Esto se puede esquematizar de distintas maneras (conjuntos, segmentos,
llaves).
Este procedimiento recibe el nombre de refinamiento paso a paso, el lema
didctico es: divide y ser fcil.

Programacin estructurada
Los bloques de un diagrama de flujo
pueden ser de cuatro clases
distintas
Smbolos terminales, que indican el
principio y el final del algoritmo. Se
representan usando valos.
Smbolos de entrada y salida de
datos. Respectivamente, significan
lectura y escritura.
Bloques de procesamiento de datos,
que realizan operaciones con los
datos ledos o con datos privados.
Se representan mediante
rectngulos que encierran la
especificacin del proceso.
Nudos de decisin, en los que se
elige entre dos o ms alternativas.
Segn las alternativas sean dos
(generalmente dependiendo de una
expresin lgica) o ms de dos.

Programacin estructurada
Diagramas y diagramas propios

Figuras Lgicas
Secuencia: En este caso, las instrucciones
se ejecutan una despus de la otra sin
omitir ninguna de ellas.
Begin
N := 0;
Write (Nombrey Apellido, NYA);
N := N + 1
End.

Figuras Lgicas
Seleccin: La seleccin de alternativas en Pascal se realiza con alguna de las
dos siguientes formas :

Figuras Lgicas
Iteracin:

Las formas de iteracin sirven para ejecutar ciclos


repetidamente, dependiendo de que se cumplan ciertas condiciones. Una
estructura de control que permite la repeticin de una serie determinada de
sentencias se denomina bucle1 (lazo o ciclo).

El cuerpo del bucle contiene las sentencias que se repiten. Pascal proporciona
tres estructuras o sentencias de control para especificar la repeticin:

Teorema de la Estructura

Se basa en el concepto de diagrama o programa propio, el mismo consiste en


que toda estructura tenga un solo punto de entrada y un solo punto de
salida.
Un diagrama es estructurado si tiene nicamente como figuras lgicas:
secuencia, capacidad de decisin y capacidad de repeticin; y si adems
est construido con estructura.
Recursos abstractos: descomponer una tarea compleja en acciones mas
simples. Se debe abstraer del como se va a resolver una determinada
rutina.
Diseo descendente; descomposicin del problema de arriba hacia abajo en
forma analtico deductivo, avanzado de lo general a lo particular
,organizado por niveles con grado de detalle creciente, hasta lograr que
todos los tratamientos hayan explcitamente considerados.

Mtodos
Con la filosofa de la programacin estructurada distintos autores han desarrollados trabajos
que varan unos de otros en el mtodo, pero todos tienen como bases los conceptos
tericos de Dijkstra.
Mtodo Jackson. La filosofa del mismo tiene caractersticas comunes con la programacin
estructurada. Las estructuras bsicas se llaman diagramas de bloques y se representan
con los smbolo. La representacin de la secuencia de acciones se hace en forma de
rbol, leyndose de izquierda a derecha a un mismo nivel.
PROGRAMA

INICIO

PROCESO

FIN

*
FIN DE ARCHIVO

SECUENCIAL

ALTERNATIVA

REPETITIVA

IMPRIME
TOTALES

TOTALES

CALCULO
CARGAS
FAMILIARES

TIENE

NO TIENE

CALCULO HORAS
EXTRAS

HAY HORAS

NO HAY

Mtodo Bertini
En esta metodologa las estructuras bsicas se representan con los siguientes smbolos.
Estas estructuras forman los que se denominan rboles programticos, donde cada nivel
es, como en otros modelos, los refinamientos que se van realizando.

PROGRAMA

SECUENCIAL

ALTERNATIVA

REPETITIVA

PROGRAMA
PARA CADA
EMPLEADO

FIN

INICIO

HORAS

EXTRAS

CARGA

FAMILIA

NO

SI

NO

SI

Mtodo Warnier
Una de las caractersticas de esta manera de hacer programas estructurados consiste
en la representacin por medio de lo que se denomina cuadro de descomposicin en
secuencias, forma grfica que utiliza llaves para representar los niveles de
descomposicin del problema.
Las estructuras bsicas de esta metodologa son las siguientes:
Secuencia: acciones especificadas que no son ni repeticiones ni alternativas. La
secuencia de acciones es de arriba hacia abajo en el cuadro de descomposicin de
secuencia
Repetitiva: En esta estructura, entre parntesis se escribe el nmero de veces que
se repite

PRINCIPIO
(1 vez)

PRINCIPIO
(1 vez)

TRATAMIENTO A
(0, 1 vez)

REPETITIVA

TRATAMIENTO
(t veces)

FINAL
(1 vez)

ALTERNATIVA
TRATAMIENTO B
(1, 0 vez)

FINAL
(1 vez)

Comparacin con programacin tradicional

Veamos un ejemplo prctico


A partir de los datos ingresados por teclado (Libreta,
Nota1 y Nota2), se desea informar la condicin del
alumno (Libre, Regular o Promocin).
Para regularizar y/o promocionar se deber aprobar los
dos parciales.
Al final informar cuantos alumnos hay en cada una de las
condiciones.

PROGRAM USO_PROCEDIMIENTO;
USES CRT;
VAR
CANT_ALUMNOS:INTEGER;
CANT_REG:INTEGER;
CANT_LIB:INTEGER;
CANT_PROM:INTEGER;
CONDICION:STRING[10];
LIBRETA:INTEGER;
NOTA1:REAL;
NOTA2:REAL;

PROCEDURE VERCONDICION;

PROCEDURE PRIPROG;
BEGIN
CANT_ALUMNOS:=0;

BEGIN
CANT_REG:=0;
CANT_LIB:=0;
IF PROMEDIO (NOTA1, NOTA2) >= 7 THEN
BEGIN
CANT_PROM:= CANT_PROM + 1;
CONDICION:='PROMOCIONO';
END

CANT_PROM:=0;
INGRESODATOS;
END;

ELSE
BEGIN
CANT_REG:=CANT_REG + 1;
CONDICION:='REGULARIZO';
END;

FUNCTION PROMEDIO (N1, N2:REAL):REAL;


BEGIN
PROMEDIO:= (N1 + N2)/ 2;

PROCEDURE INGRESODATOS;
BEGIN
CLRSCR;

END;

END;

GOTOXY(10, 10); WRITE (' INGRESE LIBRETA ( 0-PARA FINALIZAR) ' );


GOTOXY(50, 10); READLN(LIBRETA);
IF LIBRETA <> 0 THEN
BEGIN
GOTOXY(10, 12); WRITE (' INGRESE PRIMER NOTA
GOTOXY(50, 12); READLN(NOTA1);
GOTOXY(10, 14); WRITE (' INGRESE SEGUNDA NOTA
GOTOXY(50, 14); READLN(NOTA2);
END;
END;

PROCEDURE PROCESO;
BEGIN
IF(
' );NOTA1 >= 6) AND (NOTA2 >= 6) THEN
VERCONDICION
ELSE
' );
BEGIN
CANT_LIB:= CANT_LIB + 1;
CONDICION:='LIBRE'
END;
MOSTRAR;

PROCEDURE MOSTRAR;

WHILE LIBRETA <> 0 DO


BEGIN

GOTOXY(10, 10);

READKEY;
END;

END;
PRIPROG;

BEGIN
CLRSCR;

WRITELN(LIBRETA, '
CONDICION);

BEGIN
CLRSCR;

PROCESO;

********************************** ',

INGRESODATOS;
END;
FINPROGRAMA;
READKEY;
END.

PROCEDURE FINPROGRAMA;
BEGIN
CLRSCR;
GOTOXY(10, 10); WRITE(' TOT. REGULARES ------>
');
GOTOXY(10, 12); WRITE(' TOT. LIBRES
------> ');
GOTOXY(10, 14); WRITE(' TOT.PRIOMOCIONAL -----> ');
GOTOXY(35, 10); WRITE(CANT_REG:4);
GOTOXY(35, 12); WRITE(CANT_LIB:4);
GOTOXY(35, 14); WRITE(CANT_PROM:4);
END;

Ventajas

Mejor comprensin del problema: se avanza de lo general a lo particular, segmentando en partes


interrelacionadas. Todo programa estructurado puede ser ledo desde el principio al fin, sin
interrupciones, en la secuencia normal de lectura. Mejor clarificacin del problema.

Amortigua la lgica individual: tiende a la construccin lgica normalizada, amortiguando la lgica


individual que en principiantes alcanza altos niveles, y despus se arraigan en los programadores
provocando dificultades en la transferencia del mantenimiento de programas.

Facilita el trabajo en equipo: Las distintas partes o subprogramas pueden encomendarse a


distintas personas. Un programa puede hacerse entre varias personas.

Propende a la formacin de la biblioteca propia: Puesto que muchas de estas rutinas pueden
constituir procesos comunes a otras aplicaciones, con lo que se ahorra tiempo de programacin.

Facilita la prueba: Ya que sta se realiza sobre partes razonablemente pequeas, lo que hace mas
fcil identificar los errores. Se realiza un claro seguimiento del problema.

Facilita la legibilidad de la documentacin: Por ende permite una fcil transferencia de la


aplicacin entre distintos programadores, evitando as los dueos de programas, solo lo entienden
los que lo hicieron. El mismo diagrama sirve para documentar.

Facilita la optimizacin, el mantenimiento y las modificaciones: Como est compuesto por


partes razonablemente pequeas, rpidamente individualizables, es ms fcil depurar, mantener o
modificar las mismas. Las modificaciones afectan solamente algunas partes.

Inconveniente: Mayor tiempo de ejecucin y mayor nmero de instrucciones

Ventajas
Se cometen menos errores: Por la misma naturaleza del mtodo, que divide en partes al problema, y cada
una de esas partes tienen menos instrucciones que el diagrama hecho en forma convencional.
La demostracin terica es la siguiente : e = k * n2 (1)
Donde :
e: cantidad de errores que se cometen en un programa
k: factor de proporcionalidad que depende de la experiencia del programador
n: nmero de instrucciones del programa
O sea la cantidad de errores es directamente proporcional al cuadrado del nmero de instrucciones y a la
experiencia del programador.
Supongamos que el programa de n instrucciones lo dividimos en dos subprogramas de n1 y n2 instrucciones
respectivamente, donde n n1 + n2 y en el que la cantidad de errores de cada subprograma es:
e1 = k * n12; e2 = k * n22
Si sumamos:
et = e1 + e2 = k (n12 + n22)
(2)
Si en la frmula (1) reemplazamos n por su equivalente n1 + n2, se obtiene:
e = k (n1 + n2)2 = k (n12 + n22 + 2 n1 n2) = k (n12 + n22) + k 2 n1 n2

(3)

Si restamos al error del programa e (3), el error de los subprogramas et (2), se tiene:
 = e - et = k 2 n1 n2
Donde  es la cantidad mayor de errores que se cometen en la programacin tradicional respecto de la
estructurada.
Esta deduccin nos dice que cuando mayor sea la cantidad de subprogramas en que se divide un programa
tradicional, mayor ser la diferencia .

Conclusin

La programacin estructurada es una disciplina de programacin


desarrollada sobre los siguientes principios bsicos:

1. La percepcin de una estructura lgica en el problema. Esta


estructura debe reflejarse en las acciones y datos involucrados en
el algoritmo diseado para la solucin.
2. La realizacin de esa estructura mediante un proceso de
refinamiento progresivo, abordando en cada momento nicamente
un aspecto del problema.
3. El uso de una notacin que asista al refinamiento progresivo de la
estructura requerida.

Bibliografa

Plantillas de clase de teoria de AEDII 2013. Mgter. Vallejos, Oscar A.

Libros

Fundamentos de programacin. Algoritmos, estructuras de datos y objetos; Luis Joyanes Aguilar;


2003; Editorial: MCGRAW-HILL. ISBN: 8448136642.

ALGORITMOS, DATOS Y PROGRAMAS con aplicaciones en Pascal, Delphi y Visual Da Vinci.


De Guisti. Armando. 2001. editorial: Prentice Hall. ISBN: 987-9460-64-2

FUNDAMENTOS DE PROGRAMACIN. Libro de Problemas en Pascal y Turbo Pascal; Luis


Joyanes Aguilar Luis Rodrguez Baena y Matilde Fernandez Azuela; 1999; Editorial: MCGRAWHILL. ISBN: 844110900.

PROGRAMACIN; Castor F. Herrmann,Mara E. Valesani.; 2001; Editorial: MOGLIA


S.R.L..ISBN: 9874338326.

Internet

Algoritmos y Programacin en Pascal. Cristbal Pareja Flores y Otros. Cap. 6, 7 y 8.

También podría gustarte