Está en la página 1de 9

Curso: Algoritmos I

Profesor: Ing. Erick Nez

FACULTAD DE INGENIERA INDUSTRIAL Y DE


SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Subprogramacion
Los subprogramas son pequeos programas que pueden usarse para dividir un programa por tareas. Entre las
tareas ms comunes en un programa estn las tareas para recolectar datos, calcular,mostrar informacin o
coordinar la ejecucin de otros subprogramas.
Los subprogramas para recolectar datos son los responsables de recoger los datos que el programa
necesita para realizar su labor. En esta categora estn los subprogramas que:

piden los datos al usuario


adquieren los datos a travs de otros medios de entrada (por ejemplo, archivos)

Los subprogramas que realizan clculos, reciben los datos que necesitan de los subprogramas que
recolectan datos o de otros subprogramas que realizan clculos. Entre las tareas efectuadas por los
subprogramas de esta categora estn las operaciones para:

evaluar frmulas (por ejemplo, F = 9/5C + 32)


determinar propiedades (por ejemplo, es un nmero positivo?)
comparar cantidades (por ejemplo, es un nmero mayor que otro nmero?)

Los subprogramas para mostrar informacin presentan al usuario los resultados producidos por los
subprogramas que realizan clculos. Adems, pueden usarse para mostrar instrucciones al usuario de
cmo usar el programa o para qu es el programa.
En la ltima categora, subprogramas que coordinan tareas, estn los subprogramas que gobiernan otros
subprogramas. En otras palabras, son subprogramas que le indican a otros subprogramas cuando deben
realizar su tarea y que datos deben recibir.
Un ejemplo de un subprograma que gobernar otros subprogramas es el main.

Programacin Estructurada
La programacin estructurada es una tcnica para escribir programas de manera clara. Para ello se utilizan
nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o
instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).

Programacin Modular
La programacin modular es un paradigma de programacin que consiste en dividir un programa en mdulos o
subprogramas con el fin de hacerlo ms legible y manejable, Se presenta histricamente como una evolucin de
la programacin estructurada para solucionar problemas de programacin ms grandes y complejos de lo que
sta puede resolver.
Diseo descendente (de arriba hacia abajo): En la solucin de problemas grandes, es conveniente dividirlo en
problemas mas pequeos (sub-problemas), los cuales a su vez pueden dividirse en sub-problemas ms
pequeos. Este es un proceso de refinamiento por pasos, etapas o capas. Comenzando desde lo ms general
hasta lo ms especifico.

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

Rutinas: Piezas pequeas diseadas para ejecutar una tarea especfica. Permiten desarrollar y mantener
programas grandes y mdulos. Pueden ser de dos tipos:
Funciones
Procedimientos
Procedimientos subrutinas son subprogramas que realizan una tarea especfica, reciben datos del
exterior a travs de parmetros o envan informacin al exterior a travs de parmetros, y no tienen
instruccin de retorno. Por ejemplo, una subrutina que imprima en pantalla el nmero mayor de dos
nmeros ingresados como parmetros. Puede haber subrutinas que no tengan parmetros, por
ejemplo, una subrutina que indique el propsito del programa.
Las funciones son subprogramas que reciben datos del exterior a travs de parmetros y envan un solo
valor al exterior a travs del nombre de la funcin (instruccin de retorno). Estos subprogramas son el
equivalente a las funciones matemticas, por ejemplo, la funcin que retorna la distancia entre dos
puntos necesita cuatro parmetros que reciban las cuatro coordenadas de los dos puntos. Otro ejemplo
es la funcin que retorna la raz cuadrada de un nmero. Las funciones tendrn como mnimo un
parmetro. Ambas funciones envan sus resultados a travs de la instruccin de retorno.

Funciones en C++
En lenguaje C y C++ no existe diferencia entre funciones y procedimientos: a todas las subrutinas se les llama
funciones. Una funcin se declara una vez pero puede usarse (mediante llamadas) tantas veces como sea
necesario.
TIPOS DE FUNCIONES EN C, C++
Funciones de Biblioteca: Los lenguajes C y C++ tiene sus propias funciones incorporadas que permiten
realizar ciertas operaciones o clculos de uso comn.
Funciones definidas (diseadas o codificadas) por el programador para realizar determinadas tareas.
BIBLIOTECA ESTNDAR DE C,C++
Contiene una amplia coleccin de funciones para llevar a cabo clculos matemticos comunes:
Manipulacin de cadenas de caracteres.
Manipulacin con caracteres
Operaciones estndares de entrada y salida
Operaciones matemticas
Una biblioteca de funciones comunes es construida una vez en un archivo de biblioteca que se proporciona
como parte del compilador de C/C++.
stdlib.h, math.htime.h, ctype.hstring.h, stdio.h, malloc.h, conio.h,iostream.h

Definiendo una funcin


Una funcin es un conjunto de lneas de cdigo que realizan una tarea especfica y puede retornar un valor. Las
funciones pueden tomar parmetros que modifiquen su funcionamiento. Las funciones son utilizadas para
descomponer grandes problemas en tareas simples y para implementar operaciones que son comnmente
utilizadas durante un programa y de esta manera reducir la cantidad de cdigo. Cuando una funcin es invocada
se le pasa el control a la misma, una vez que esta finaliz con su tarea el control es devuelto al punto desde el
cual la funcin fue llamada.

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

<tipo> [clase::] <nombre> ( [Parmetros] )


{
cuerpo;
}
Ejemplo de una funcin
Para comenzar, vamos a considerar el caso en el cual se desea crear la funcin cuadrado(), misma que deber
volver el cuadrado de un nmero real (de punto flotante), es decir, cuadrado() aceptar nmeros de punto
flotante y regresar una respuesta como nmero flotante.
Nota: aunque para la funcin que veremos el tipo de retorno coincide con el tipo de parmetro pasado, algunas
veces las cosas pueden cambiar, es decir, no es obligatorio que una funcin reciba un parmetro de un tipo y
que tenga que regresar una respuesta de dicho tipo.
// regresar el cuadrado de un nmero
double cuadrado(double n)
{
return n*n;
}
Definicin: La definicin de una funcin consta de la cabecera de la funcin y
del cuerpo. Su forma general es:
tipo_retorno nombre_funcion(tipo1 argum1, tipo2 argum2, ... ,tipoN argumN)
{
//cuerpo de la funcion
return (expresion); //optativo
}
La primera lnea recibe el nombre de encabezamiento (header) y el resto de la definicin encerrado entre
llaves- es el cuerpo (body) de la funcin.
Cada funcin puede disponer de sus propias variables, declaradas al comienzo de su cdigo. Estas
variables son del tipo auto, es decir, slo son visibles dentro de la funcin, se crean cada vez que se ejecuta
la funcin y permanecen ocultas para el resto del programa.
La lista de argumentos, tambin llamados argumentos formales, es una lista de declaraciones de
variables, precedidas de su tipo correspondiente y separadas por comas (,). Los argumentos formales son
la forma ms natural y directa para que una funcin reciba valores desde el programa que le llama. Si no se
desea pasar ningn valor a la funcin se puede poner void en los parntesis.
tipo_retorno: cuando una funcin es ejecutada, puede devolver al programa que le ha llamado un valor
(el valor de retorno), cuyo tipo debe ser especificado en el encabezamiento de la funcin.
Si no se desea que devuelva nada, el tipo de retorno debe ser void.
La sentencia return permite devolver el valor. Si no se especifica el tipo_retorno, se asume que es int por
defecto.
Declaracin: Toda funcin debe ser declarada antes de ser utilizada en el programa que realiza la llamada. Esta
se hace mediante el prototipo de la funcin. La forma general del prototipo coincide con la primera lnea de la
definicin el encabezamiento-, con tres pequeas diferencias:

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

En vez de la lista de argumentos formales o parmetros, basta incluir slo los tipos de dichos
argumentos.
El prototipo termina con un carcter (;).
Los valores pueden ser inicializados si se desea.
La declaracin de las funciones mediante los prototipos suele hacerse al comienzo del fichero, despus de los
#include.

Llamada: La llamada a una funcin se hace incluyendo su nombre en una expresin o sentencia del programa
principal o de otra funcin. Este nombre debe ir seguido de una lista de argumentos separados por comas y
encerrados entre parntesis. A los argumentos incluidos en la llamada se les llama argumentos actuales, y
pueden ser no slo variables y/o constantes, sino tambin expresiones.

Sobrecarga de Funciones: Casi siempre es recomendable dar nombres distintos a funciones diferentes, pero que
pasa cuando las tareas a realizar son las mismas pero con diferentes tipos de datos? En este caso es ms
conveniente darle a las funciones el mismo nombre, pero con argumentos de distinto tipo, que sern los que
permitan al compilador llamar a una u otra funcin.

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

Paso de argumentos por valor: Hasta ahora los ejemplos que hemos visto han utilizado este mecanismo. La
llamada por valor significa que una copia del argumento se pasa al parmetro de la funcin. Esto significa que
todo lo que se realice en el cdigo de la funcin no va a alterar el valor del argumento usado para llamar a la
funcin.

En el ejemplo, al pasar como argumento la variable r, se hace una copia en la variable radio, la cual es una
variable local de la funcin AreaCirculo, por lo tanto los cambios realizados sobre esta variable no afectan a la
del programa principal.
Paso de argumentos por Referencia: Es el mecanismo de pasar argumentos mediante las direcciones en lugar
de valores. Debe utilizarse siempre y cuando la funcin deba devolver argumentos modificados. Un caso de
particular inters es el paso de arrays (vectores, matrices y cadenas de caracteres). Los argumentos
formales deben ser declarados como punteros a los argumentos actuales, que sern las direcciones.

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

VARIABLES LOCALES Y VARIABLES GLOBALES


Como se discuti en clase, cuando uno llama una funcin, no es necesario saber los tipos y los nombres de las
variables que se declaran en la definicin de dicha funcin. Simplemente se requiere de conocer el tipo de los
argumentos que necesita y el tipo de valor que regresa.
Esto se debe a que en C++ las variables que se definen en las funciones son independientes de las variables que
se definen en la funcin main (programa principal) o en cualquier otra funcin. Si se declara una variable en una
funcin y se declara otra variable con el mismo nombre en la funcin principal del programa (main), estas dos
variables, aunque tengan el mismo nombre, se consideran como dos variables diferentes. Observe el siguiente
ejemplo:

la variable cuadrado se declara tanto en la funcin main como en la funcin square y la declaracin es idntica:

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

double cuadrado;
Sin embargo, la variable cuadrado de la funcin main y la variable cuadrado de la funcin square se consideran
como dos variables diferentes.

Variables Locales
Las variables que se declaran dentro del cuerpo de una funcin se dice que son locales a dicha funcin o que
tienen un alcance local. En el ejemplo, hay una variable llamada cuadrado que es local a la funcin main y otro
variable tambin llamada cuadrado pero que es local a la funcin square. Dichas variables son diferentes. Los
valores que toma una variable local dentro de una funcin pueden ser completamente distintos a los que tome
una variable del mismo nombre pero que sea local a otra funcin.
Se dice que una variable local es usada (definida, modificada, etc.) nicamente dentro de la funcin en la que es
definida

Constantes y Variables Globales


Las constantes y las variables tambin pueden tener alcances globales. Es decir, es posible que una misma
variable o constante puedan ser utilizadas por diferentes funciones y que (en el caso de variables) puedan ser
modificadas por cada una de ellas. Cuando esto ocurre, se dice que se tiene constantes globales o variables
globales.
Para que el compilador considere a una variable como global, es necesario definirlas al comienzo del programa,
antes de la funcin main y del resto de las funciones del programa. Es prctica comn colocar todas las
constantes globales y las variables globales en grupo, justo por debajo de las directivas include y antes de los
prototipos de las funciones.
El uso de constantes globales es muy comn, sin embargo, el uso de variables globales generalmente no es
necesario y muy frecuentemente provoca dificultades en entender del algoritmo del programa, por lo cual las
variables globales casi no se utilizan. En el siguiente ejemplo, observe que la constante PI es una constante
global, mientras que las variables area y volumen son variables locales definidas en la funcin main y en otras
funciones. No obstante que hay variables con el mismo nombre, stas son variables locales y por tanto se trata
de variables diferentes.
//Programa para el calculo del area de un circulo y el volumen de una esfera
//usando dos funciones. Se usa el mismo valor de radio para los dos calculos.
#include <iostream.h>
#include <stdlib.h>
#include <math.h>

const double PI = 3.14159; /* Tiene alcance global. Se coloca por debajo de los include y
antes de los prototipos */
/* Prototipos */
double area_circulo(double radio);
double volumen_esfera(double radio);
int main( )
{
double radio_de_ambos, area, volumen; /*Alcance local*/
cout<<Dame el radio del circulo y de la esfera \n; cin>>radio_de_ambos;
area = area_circulo(radio_de_ambos);
volumen = volumen_esfera(radio_de_ambos);

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

cout<<El area del circulo es <<area<<\n; cout<<El volumen de la esfera es <<volumen<<\n;


cout<<\n;
system(PAUSE); return 0;
}
/*Observe que las dos funciones siguientes usan la constante global PI*/
/* Funcion para el calculo del area de un circulo */
double area_circulo(double radio)
{
double area; /* Alcance local, diferente de la variable definida en main */
area = PI * pow(radio, 2.0);
/* Uso de constante global */
return area;
}
/* Funcion para el calculo del volumen de una esfera */
double volumen_esfera(double radio)
{
double volumen; /*Alcance local, diferente de la variable definida en main*/
volumen = (4.0/3.0) * PI * pow(radio, 3.0);
return volumen;
/* Uso de constante global */
}

Ejemplo de Funciones

Curso: Algoritmos I
FACULTAD DE INGENIERA INDUSTRIAL Y DE
SISTEMAS
Carrera Profesional de Ingeniera de Sistemas

Profesor: Ing. Erick Nez

Crear programa que intercambia valores de 2 variables

Ejercicios
1.- Realizar un programa que realice las 4 operaciones Bsicas, ingresando 2 nmeros por teclado.
Suma
Resta
Multiplicacin
valor absoluto
- Cada operacin deber ser una funcin.
- tener un procedimiento de escritura en pantalla del resultado de la las operaciones
2.- Realizar un programa que determine si un numero es par o impar, en caso sea cero dir Cero no es
par ni impar, un procedimiento que realice el ingreso de datos y otro que realice la verificacin si es
par o impar.

3.- Programa que dispone de un men de asignaturas, habr que elegir uno y salga en pantalla
la opcin seleccionada, si se ingresa un valor incorrecto deber decir Opcin Incorrecta
Con funciones y procedimientos.
4.- programa que calcule el salario neto de una persona a partir de un salario base y unas horas
trabajadas. El salario base por hora se podr elegir desde un men (100, 125, 160,200 y otros) ,
la opcin otros nos pedir el salario base.
Nota: Retenciones: 15% Si salario <= 1000
18% si salario >1000 y 2000
25% si salario >2000
Con funciones y procedimientos (por lo menos dos funciones)

También podría gustarte