Está en la página 1de 7

UNIVERSIDAD NACIONAL DE INGENIERA

Facultad de Ingeniera Industrial y de Sistemas


Prof. G. A. Salinas A.
1. TECNICASDE PROGRAMACIN
Existen varias tcnicas de programacin, citaremos algunas importantes relacionadas con nuestro curso::
Programacin Estructurada
Programacin Modular
Programacin Orientadas a Objetos
1.1 PROGRAMACIN MODULAR
Consiste en realizar varios programas con funciones especificas, luego unirlos y obtener el programa deseado.
Inicialmente un problema es dividido en sub problemas llamados mdulos (subprogramas), mdulos que se
integran para satisfacer los requerimientos del problema.
Ventajas:
Facilidad de modificacin :cada modulo es una implementacin especifica y se conoce su ubicacin.
Fcil de resolver un problema.
De fcil mantenimiento de los programas: modificar o expandir, agregar nuevos mdulos.
1.1.1
Cohesin o Acoplamiento. Es el grado de interrelacin de los elementos internos de un mdulo.
Significa que cada modulo debe realizar una tarea especifica.
Facilidad de Programacin. Permite construir y probar los mdulos por separado. Adems
facilita la etapa de prueba por ejemplo:

n
Pruebas = m + n

Pruebas = m*n

Facilidad de Mantenimiento. Solo se modifica el modulo necesario


programa.

en lugar de todo el

No afecta al modulo

Afecta al modulo

Independencia o desacoplamiento. Es el grado de dependencia entre dos mdulos. Cada modulo


debe ser lo mas independiente posible de tal manera que al quitarlo o al reemplazarlo por otro modulo
siempre y cuando las especificaciones de entrada y salida sean las mismas - no debe afectar al resto
del programa.
1.2 ENCAPSULAMIENTO
Tambin denominado Ocultamiento de la Informacin, o Caja Negra. Cuando un modulo invoca a otro
modulo, este modulo no debe conocer los detalles internos de implementacin del segundo modulo, o en otras
palabras para el primer modulo debe ser indiferente lo cual produce mdulos independientes que se
comunican con otros a travs de la informacin necesaria.
Ventajas:
Fcil de leer y comprender.
Fcil de resolver un problema.
De fcil mantenimiento de los programas: modificar o expandir, agregar nuevos mdulos.
1.1.2

UNI-FIIS L. P. ESTRUCTURADO

G. A. Salinas A.

FUNCIONES

Pag.

1 de 7

2. SUBPROGRAMAS.
Muchos problemas reales que se plantean tienen cierta complejidad y a veces son de gran tamao. Lo mas
adecuado es descomponer el problema en partes cuya solucin sea mas fcil y sencilla. La programacin de
cada una de estas partes se realiza independientemente de las otras, a veces por diferentes personas.
El DISEO DESCENDENTE o diseo TOP DOWN consiste en una serie de descomposiciones sucesivas del
problema inicial, que reciben el refinamiento progresivo de tal manera que cada parte sea suficientemente
reducida y sencilla para su DESARROLLO y MANTENIMIENTO.
La utilizacin de esta tcnica de diseo tiene los objetivos siguientes:
Simplificacin del problema y de los subprogramas resultantes de cada descomposicin
Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes
personas.
El programa principal queda estructurado en forma de bloques o mdulos lo que hace sencilla su
mantenimiento y su lectura.
El subprograma recibe valores del subprograma que lo referencia, hace los clculos y los devuelve o retorna
los resultados al subprograma que lo llam
Para utilizacin de esta tcnica requiere el conocimiento y la aplicacin de los siguientes conceptos.
2.1 Definicin
Un subprograma es un modulo que ejecuta un algoritmo completo e independiente y que es utilizado a
travs de una instruccin de referenciado o llamada desde el Programa Principal (generalmente) o
desde cualquier otro Subprograma. Vase figura.
Subprograma: abstraccin de una unidad de programa representada por una unidad de ejecucin ms
simple. Los detalles irrelevantes se ocultan al usuario de la abstraccin
2.2 Programa Principal y Subprogramas
Con esta tcnica el programa quedar constituido por un Programa Principal y Subprogramas.
Programa Principal. Describe la solucin completa y consta principalmente de llamadas a
subprogramas. Estas llamadas son indicaciones al procesador de que debe continuar la ejecucin
del programa en el subprograma llamado (sede el control al subprograma), retornando al punto de
partida una vez que haya concluido. (Vase figura)
El programa principal puede contener adems, variables, instrucciones y estructuras de control.
Un programa principal tendr pocas lneas y en l se vern claramente lo que hace el programa en
diferentes pasos que ha de seguir para obtener los resultados deseados.

Solo son
llamadas los
subprogramas
referenciados

ACCION PPrincipal( )
...
...
f1( )
...
...
...
...
...
fn( )
...
...
FIN_ACCION

UNI-FIIS L. P. ESTRUCTURADO

G. A. Salinas A.

ACCION fl ( )
...
...
...
f12( )
...
...
...
FIN_ACCION

ACCION f12( )
...
...
...
FIN ACCION

Son llamados o referenciados


desde porgrama principal
PPrincipal( )

ACCION f2( )
...
...
...
FIN_ACCION

ACCION fn1( )
...
...
...
FIN ACCION

ACCION fn ( )
...
fn1( )
...
FIN_ACCION

FUNCIONES

Son llamados o
referenciados desde
un Subprograma

Pag.

2 de 7

Subprogramas. A estos se les denomina declaracin Funciones de Prototipo ( C y C++) y


figuran agrupados en lugar distinto al programa principal. La implementacin de estos
programas se hace antes o despus del programa principal y su estructura coincide bsicamente
con la de un programa con alguna diferencia en el encabezado. Por tanto un subprograma puede
contener sus propios subprogramas correspondiente a un refinamiento del mismo.
La misin de un subprograma es resolver de manera independiente una parte del problema. Un
subprograma siempre realiza un operacin concreta del contexto del problema, a veces se
convierte en subprograma un conjunto de instrucciones, por ejemplo leer datos de alumno, en
vez de repetir estas instrucciones para cada alumno en el programa, esto aparece una sola vez en
el subprograma y cada vez que queramos leer los datos de alumno llamaremos a este
subprograma.
Un subprograma es ejecutado por el procesador slo cuando es llamado por el programa
principal o por otro subprograma. (Vase figura)

2.3 Subprogramas Internos.


Estos subprogramas aparecen junto al programa principal. La sintaxis es la siguiente:
Seudo cdigo
ACCION Nombre_Funcin (Lista de parmetros)
//Cuerpo de la Funcin
FIN_ACCION

En C
Tipo_Retorno Nombre_Funcin (Lista de parmetros)
{
// Cuerpo de la funcin
}

Diagrama de Flujo

Nombre

Inicio

Inicio

...
Nombre

...

...
Fin

Fin

2.4 Subprogramas Externos


Son aquellos que figuran fsicamente separadas del programa principal, esto es, en distintos archivos
fuente. Pueden ser compilados en forma separada. En el Lenguaje C y C++ se denomina archivos de
extensin h.

2.5 Alcance de las Variables.


Se denomina ALCANCE de una VARIABLE a la porcin o modulo de un programa en ;la que la
definicin de dicha variable es VALIDA. Las diferentes variables que manipula un programa como
constantes, variables, arreglos, archivos, subprogramas, etc. Se clasifican segn su mbito, esto es, en el
lugar donde son conocidos. Pues un programa real consta de varios cientos de miles de lneas de cdigo
no llevar un control de los nombres de variables que utilizamos sera catastrfico, pues ltimamente se
ha creado el espacio de nombres , cada nombre de variables pertenece a un espacio de nombres para
referirnos a esa variable deberamos nombrar el espacio seguido del operador de mbito luego
nombre de variable.

UNI-FIIS L. P. ESTRUCTURADO

G. A. Salinas A.

FUNCIONES

Pag.

3 de 7

Variables Locales. Son variables cuyo mbito est restringido slo al lugar donde fueron
declarados, por ejemplo las variables declaradas en una funcin o subprograma solo son validos
para ese subprograma fuera de l son desconocidos y su valor es indefinido.
Variables Globales. Son variables cuyo mbito se extiende al programa principal y a todos los
subprogramas. En C, C++ se declara antes del programa principal.
2.6 Parmetros (Variables de Enlace)
De acuerdo a los conceptos ya vistos, todos los programas utilizan datos entrada luego de procesarlos
producen resultados o datos de salida.
Los subprogramas tambin pueden realizar operaciones de entrada salida con los dispositivos estndar,
pero por lo general los datos de entrada provienen del programa llamante y los resultados o datos salida
son enviados al programa llamante, para realizar estas operaciones se utilizan parmetros, cada ves que
es llamado un subprograma los datos de entrada le son pasados por medio de variables denominados
parmetros de entrada y los resultados le son devueltos mediante las mismas u otras variables.
Parmetros Actuales o Reales. Son variables o datos enviados en cada llamada al subprograma
por el programa o subprograma llamante. Los parmetros actuales o reales pueden variar en cada
llamada.
Parmetros Formales. Son variables locales de un subprograma utilizados para el envi y la
recepcin de los datos. Los parmetros formales son siempre fijos para cada subprograma. Los
parmetros formales se comportan como variables locales, con la particularidad de que cada
llamada al subprograma se identifican con los parmetros actuales
En cualquier caso, debe haber una correspondencia entre los parmetros actuales y formales en
NUMERO, TIPO de DATO y la POSICIN que ocupan en la lista de parmetros. Osea que deben
cumplir las siguientes reglas:
El nmero de parmetros formales debe coincidir con el de parmetros reales.
El i-simo parmetro real se corresponde con el i-simo formal.
El tipo de dato del i-simo parmetro real debe ser igual que el del i-simo formal.
Los parmetros de un subalgoritmo pueden ser de cualquier tipo.
Los nombres de un parmetro formal y su correspondiente real pueden o noser diferentes.
2.7 Paso de Parmetros
El proceso de envi y recepcin de datos y de resultados mediante variables se denomina pase de
parmetros. El pase de parmetros puede realizar de dos manera, pase por valor y por referencia:
Pase por Valor (Parmetros de ENTRADA). Es la manera de suministrar datos de entrada al
subprograma. Un parmetro actual pasado por valor contiene el dato de entrada para el
subprograma, esta variable no puede ser modificada por el subprograma que copia su valor al
parmetro formal correspondiente para poder utilizarlo. Desde el punto fsico, en el paso por valor
no se proporciona la variable al programa, sino solamente su contenido, evitando as su
modificacin.
Pase por Referencia (Parmetros de Entrada y Salida o Parmetros de Salida). Es la manera de
suministrar datos de salida o de entrada y salida al subprograma. Un parmetro actual pasado
por referencia es una variable del programa o subprograma llamante, que PUEDE CONTENER o
NO datos para el subprograma llamado quien debe colocar el resultado en esa variable. Dicha
variable queda a disposicin del programa llamante una vez concluida la ejecucin del
subprograma.. Desde el punto fsico, en el paso por referencia se proporciona la direccin o
referencia de la variable, por lo que el programa lo utiliza como propia, modificndolo si es
necesario para depositar en ella los resultados.
Ventajas y Desventajas
Pase por:
VALOR
REFERENCIA

UNI-FIIS L. P. ESTRUCTURADO

VENTAJAS
Parmetros: Constantes y expresiones
Evita efectos laterales
Asla
Uso de Memoria Eficiente

G. A. Salinas A.

FUNCIONES

DESVENTAJAS
Uso de Memoria Ineficiente
Parmetros: Solo Variables
Efectos Laterales

Pag.

4 de 7

2.8 Subprogramas
Se conocen tres tipos, funciones, procedimientos y predicados. Es un conjunto de instrucciones que se
pueden llamar desde cualquier parte del un programa. Un subprograma no se puede declarar dentro de
una funcin, esto es, no se puede anidar. Formato:
La instruccin RETORNAR( ) termina la ejecucin del subprograma, retornando el control al programa
o subprograma que lo llam o referenci. Se muestra una correspondencia con el lenguaje C.
ACCION NombreFunc (Lista de parmetros)
//Declaracin de variables
//Cuerpo de la funcin
RETORNAR(Expresion)
FIN_ACCION

TipoRetorno NombreFunc (Lista de parmetros)


{
//Declaracin de variables
//Cuerpo de la funcin
return(Expresion); //Expresin es de TipoRetorno
}

PROCEDIMIENTO NombreProc (Lista de


parmetros)
//Declaracin de variables
//Cuerpo de la funcin
FIN_ACCION

void NombreProc (Lista de parmetros)


{
//Declaracin de variables
//Cuerpo de la funcin
}

PREDICADO NombrePred (Lista de


parmetros)
//Declaracin de variables
//Cuerpo de la funcin
RETORNAR(Expresion)
FIN ACCION

bool NombreProc (Lista de parmetros)


{
//Declaracin de variables
//Cuerpo de la funcin
return(Expresion); //Expresin de Tipo Booleano
}

2.9 Recursividad.
Consiste en permitir que un subprograma se llame a si mismo para resolver una versin reducida del problema
original. La recursividad es una tcnica de programacin que se puede utilizar en lugar de la iteracin para
resolver determinados tipos de problemas.
Ejemplo 1. Ordenar 3 nmeros enteros
ACCION Principal ( )
VARIABLES:
REAL Num1, Num2, Num3, Temp.
Leer(Num1)
Leer(Num2)
Leer(Num3)
SI(Num1>Num2)
temp=Num1
Num1=Num2
Num2=Temp.
FIN_SI
SI(Num1>Num3)
temp=Num1
Num1=Num3
Num3=temp
FIN_SI
SI(Num2>Num3)
temp=Num2
Num1=Num3
Num3=Temp.
FIN_SI
Escribir(Num1,Num2,Num3)
FIN_ACCION
UNI-FIIS L. P. ESTRUCTURADO

Ahora con Funciones:


ACCION Principal ( )
LEER(Num1)
LEER(Num2)
LEER(Num3)
Ordenar(&Num1, &Num2)
Ordenar(&Num1, &Num3)
Ordenar(&Num2, &Num3)
ESCRIBIR (Num1, Num2, Num3)
FIN_ACCION
ACCION Ordenar (ENTERO *x, *y )
VARIABLES
REAL Aux
SI(x > y)
Aux *x
*x *y
*y Aux
FIN_SI
FIN_ACCION

G. A. Salinas A.

FUNCIONES

Pag.

5 de 7

#incluede <...>
int main( )
{
int Num1, Num2, Num3, Temp;
scanf(%d%d%d, &Num1, &Num2, &Num3);
Ordenar(Num1, Num2);
Ordenar(Num1, Num3);
Ordenar(Num2, Num3);
printf(%d%d%d, Num1, Num2, Num3);
}
int Ordenar (int *x, int *y)
{
int Aux;
if(x > y)
{
Aux *x ;
*x *y;
*y Aux;
}
}
Ejemplo 2 . Hallar el rea triangulo

Prototipos de Funcin

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

Pase por Referencia


Pase por Valor

void LeerDatos(float *B, float *H);


float CalcularArea(float Vb, float Vh);
void Mostrar(float Va);
Programa principal
conformada generalmente
por llamadas a funciones

int main( )
{
float Base, H, Area;
LeerDatos(&Base, &H);
Area = CalcularArea(Base, H);
Mostrar(Area);
cout << "\n\n";
system("pause");
return(0);
}
void LeerDatos(float *B, float *H)
{
Implementacin de la Funcin
float Base, Altura;
cout <<"*** AREA DEL TRIANGULO ***\n\n";
cout <<"Ingrese la base ---> ";
cin >>Base;
Actualizando variables de salida
cout <<"Ingrese Altura ---> ";
cin >>Altura;
*B = Base;
*H = Altura;
}
Retorno de variable
float CalcularArea(float Vb, float Vh)
{
float Area;
Area = (Vb*Vh)/2;
return(Area);
}
void Mostrar(float Va)
{
printf("Area = %6.2f", Va);
}
UNI-FIIS L. P. ESTRUCTURADO
G. A. Salinas A.
FUNCIONES
Pag.

Llamada por Referencia


Llamada por Valor

Variables de Salida

Variables de Entrada

Variables de Entrada

6 de 7

Ejemplo 3. Funciones paso de parmetros por valor y por referencia.


#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <conio.c>
/*
Funcio03
Analice la salida del programa y trate de explicar
cada una de las instrucciones del programa.
*/
int menu ( );
void Intercambiar(int *i, int *j);
void Intercambiar1(int &i, int &j);
int Factorial (int n);
float Potencia (float x, int n);
Prototipos
de funcin
int main()
{
//system("CLS");
int a;
cout<<"CALCULO DEL FACTORIAL";
cout<<"\n\nIngrese un entero < 10 : ";
cin>>a;
cout<<"\nFactorial de "<< a << " es ";
cout<< Factorial(a)<<"\n\n";;
Llamada a
funcin:
//system("CLS");
int b, x;
cout<<"
POTENCIACION ";
cout<<"\n\nIngrese la base < 10 : ";
cin>>b;
Llamada a
cout<<"Ingrese el exponente < 10 : "; funcin:
cin>>x;
cout<<"\n Potencia de ";
cout<< b<<" a la "<< x << " es ";
cout<< Potencia(b,x)<<"\n\n";
int Num1, Num2;
Num1 = 100;
Num2 = 900;
cout <<"USANDO APUNTADORES \n\n";
printf("ANTES : Num1 = %d , Num2 = %d\n",
Num1, Num2);
Intercambiar(&Num1, &Num2);
printf("DESPUES : Num1 = %d , Num2 = %d\n", Num1,
Num2);

cout <<"USANDO LA REFERENCIA \n\n";


Intercambiar1(Num1, Num2);
printf("DESPUES : Num1 = %d , Num2 = %d\n",
Num1, Num2);
system("PAUSE");
return(0);
}

Una funcin puede


llamarse cuantas
veces sea necesario

UNI-FIIS L. P. ESTRUCTURADO

G. A. Salinas A.

void Intercambiar(int *i, int *j)


{
int Aux;
Pase por Referencia
Aux = *i;
con apuntadores
*i = *j;
(variables de
*j = Aux;
entrada/salida)
}
void Intercambiar1(int &i, int &j)
{
int Aux;
Pase por Referencia
Aux = i;
con referencia
i = j;
(variables de
j = Aux;
entrada/salida)
}
// Son funciones recursivas
int Factorial(int n)
{
if(n == 0)
{
return (1);
}
else
{
return(n*Factorial(n-1));
}
}
float Potencia (float x, int n)
{
if(n == 0)
Pase por Valor
{
(variables de
return (1);
entrada)
}
else
{
return(x*Potencia(x, n-1));
}
}
//Implemente usando un Menu de opciones
int Menu()
{
int op;
printf(" M E N U \n\n");
printf("1. Factorial \n");
printf("2. Potencia \n");
printf("3. Intercambiar Valores \n");
//...
printf("3. Terminar \n\n");
do{
printf("Digite su opcion ---> ");
scanf("%d",&op);
}while(op<1 || op>3);
return(op);
}

FUNCIONES

Pag.

7 de 7

También podría gustarte