You are on page 1of 10

Escuela de Ingeniera Mecnica.

UC

Ctedra: Computacin para ingenieros (DA4M02)

Unidad 5

5.1

INTRODUCCIN

Al separar un problema en partes (mdulos o subprogramas), es ms fcil de manejar su resolucin.

5.2

INTRODUCCIN A LA PROGRAMACIN MODULAR

Un problema se puede descomponer en pequeos problemas, que se resuelven de manera ms sencilla o de forma independiente; esto es lo que se conoce como programacin modular. Cuando se trabaja con mdulos, existir un algoritmo o programa principal o conductor, que transferir el control a los distintos mdulos o subalgoritmos, los cuales al terminar su tarea devolvern el control al programa que los invoc o llam. Los mdulos son pequeos y deben cumplir con las reglas de programacin estructurada. Las ventajas de programar de forma modular son: Varios programadores pueden trabajar simultneamente en la confeccin del programa principal, cada uno resolviendo una parte. Se podr modifica un mdulo sin afectar al resto. Un mdulo puede ser llamado desde diversas partes del algoritmo principal las veces que sean necesario.

5.3

FUNCIONES

Una funcin es un programa modular que recibe uno o varios parmetros o argumentos, y devuelve un resultado con el nombre de la funcin. Para invocar o llamar a una funcin se usa su 24
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

nombre seguido entre parntesis del argumento o argumentos. La funcin se puede escribir en cualquier instruccin en donde se necesite. Por ejemplo: Escribir (raz2 (16)) Escribir (g(p1,p2,p3)) Funcin raz2, parmetro 16 Funcin g(), parmetros p1,p2,p3

Cada lenguaje posee funciones propias como las funciones sin (u), cos(u), entre otros.

5.3.1 Declaracin de funciones

Las funciones tienen una constitucin similar a la del algoritmo (es que son pequeos algoritmos) por lo que tienen una cabecera y un cuerpo. En la cabecera se define la funcin, en el cuerpo estarn el bloque de declaraciones y el bloque de instrucciones, en este ltimo se debe incluir la instruccin devolver que devuelve el valor, luego del proceso (respuesta), al algoritmo que lo llam. Para que una funcin sea ejecutada, sta debe ser llamada y se le deben proporcionar los parmetros necesarios para procesar las instrucciones. En la definicin de funcin deben figurar una serie de parmetros, denominados parmetros formales, y en la llamada a la funcin se establece una correspondencia uno a uno, y de izquierda a derecha entre los parmetros actuales (o de llamada) y los formales, separados entre ellos por punto y coma ;. El cuerpo de la funcin se define como sigue:

<Tipo_de_dato> funcin <nombre_funcin> (lista_de_parmetros_formales) [Declaraciones_locales] Inicio Instruccin (es) Devolver (<expresin>) Fin_funcin

La lista_parmetros_formales, estar formada por una lista o sublistas de parmetros de la siguiente forma: 25
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

{E | S | E / S} <tipo_de_dato> : <nombre_del _parmetro_formal_1> ...

Las llaves representan la seleccin de una entre las distintas opciones que aparecen separadas por barra. En las funciones esta opcin por lo general es E. El tipo de dato es estndar o definido por el programador, se puede separar cada tipo de parmetros por punto y coma (;).

5.4

PROCEDIMIENTOS

Es un subalgoritmo que realiza una tarea especfica, y puede ser definido con cero (0), uno (1) o N parmetros. La entrada y salida de informacin en un procedimiento se realiza a travs de parmetros. El nombre del procedimiento no esta asociado al resultado que obtiene; se invoca a travs de la instruccin llamar_a o directamente por el nombre asignado, es decir:

Llamar_a nombre_procedimiento (lista_de_parmetros_actuales).

Los parmetros actuales no son obligatorios.

5.4.1 Declaracin de procedimientos

Esta declaracin es similar al de la funcin, la principal diferencia es que el nombre del procedimiento no esta asociado al resultado. La declaracin en pseudocdigo es:

procedimiento <nombre_procedimiento> [lista_de_parmetros_formales] [declaraciones locales] Inicio Instruccin (es) Fin_procedimiento

26
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

La lista_de_parmetros_formales, estar formada por una o varias sublistas de parmetros con el siguiente formato: {E | S | E/S} <tipo_de_dato> : <nombre_del _parmetro_formal_1> ...

Y sigue las mismas reglas de la declaracin de parmetros que en las funciones.

5.5

ESTRUCTURA DE UN ALGORITMO CON PROCEDIMIENTOS Y FUNCIONES

Los procedimientos y funciones se escriben al final de los algoritmos para no entorpecer su escritura y lectura al realizar la corrida en fro, como sigue:

algoritmo < nombre_algoritmo > const < nombre_de_constante 1 > = valor 1


. . .

< nombre_de_constante n > = valor n var < tipo_de_variable 1 > = < nombre_de_variable 1 >,,< nombre_de_variable m >
. . .

< tipo_de_variable n > = < nombre_de_variable 1 >,,< nombre_de_variable m > Inicio Instruccin (es) Llamar_a <nombre_procedimiento> [lista_de_parmetros_actuales] //la llamada a la funcin ha de realizarse en una expresin Nombre_variable = <nombre_funcin> (lista_de_parmetros) Instruccin (es) Escribir <resultado (s)> Fin

procedimiento <nombre_procedimiento> [(lista_de_parmetros_formales)] [declaraciones locales] 27


Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

Inicio Instruccin (es) Fin_procedimiento

<Tipo_de_dato> funcin <nombre_funcin> [(lista_de_parmetros_formales)] [Declaraciones_locales] Inicio Instruccin (es) Devolver (<expresin>) Fin_funcin

5.6

PASO DE PARMETROS

Cuando un algoritmo llama a un procedimiento o funcin se establece una correspondencia directa entre los parmetros actuales y los formales. Existen dos formas para realizar esta correspondencia.

1._ Posicional El nmero de parmetros actuales y formales debe ser del mismo tipo, igual numero y estar ubicados en la misma posicin, s son de mas de un tipo hay que definirlo.

Un solo tipo: (E <tipo_de_dato> : <nombre_1_del _parmetro_formal> ...) Mas de un tipo: (E <tipo_de_dato 1> : <nombre_1_del _parmetro_formal>; E <tipo_de_dato 2> : <nombre_2_del _parmetro_formal> ...)

2._ Correspondencia por el nombre explcito En ellos se indica explcitamente la correspondencia entre los parmetros reales y funcionales. 28
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

5.6.1 Clasificacin de los parmetros

Estos se clasifican en: Parmetros de entrada E Permiten solamente la transmisin de

datos/informacin desde el programa que lo invoca o llama al subprograma. Parmetros de salida S Parmetros de entrada/salida E/S Slo devuelven resultados. Funcionan enviando datos y devolviendo resultados.

En la lista de parmetros siguientes:

(E <tipo_de_dato 1> : <nombre_1_del_parmetro_formal>; S <tipo_de_dato 1> : <nombre_2_del_parmetro_formal> ...)

En donde: <nombre_1_del_parmetro_formal> es parmetro de entrada y va a proporcionar datos al subprograma. <nombre_2_del_parmetro_formal> es parmetro de salida y devolver resultados al programa principal. Aunque ambos parmetros son del mismo tipo, <tipo_de_dato 1>, se deben de escribir para cada caso sea de entrada o salida. Estas caractersticas afectarn tanto a procedimientos como a funciones. Por estas circunstancias una funcin va a tener la posibilidad de devolver valores al programa principal de dos formas:

Como valor de la funcin A travs de los parmetros

Para un procedimiento slo podr devolver resultados a travs de los parmetros, esto quiere decir, que al escribir el algoritmo se debe tener cuidado con el paso de parmetros, sobre todo al transcribir al lenguaje de mquina. Los lenguajes suelen disponer de:

29
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

Paso por valor

Los parmetros formales reciben tal cual los valores de los parmetros actuales, por lo que los cambios que se produzcan en ellos, por efecto del subprograma, no podr afectar a los parmetros actuales y no se devolver informacin al programa llamador. Los parmetros resultaran de entrada, E.

Paso por valor resultado

Al finalizar la ejecucin del subprograma los valores de los parmetros formales se transfieren a los parmetros actuales.

Paso por referencia

Lo que se pasa al procedimiento es la direccin de memoria del parmetro actual. De esta forma una variable es compartida, es decir, se puede modificar directamente en el subprograma; entonces los parmetros son de entrada/salida, E/S.

5.7

VARIABLES GLOBALES Y LOCALES

En un algoritmo una variable es global cuando el mbito en el que dicha variable se conoce es el programa principal, y local cuando se declara dentro de un procedimiento o funcin. Recordando que cuando se declara en un procedimiento o funcin toma el tipo de declaracin interna sin importar el que esta en el programa principal.

5.8

EJEMPLOS DE PROCEDIMIENTOS Y FUNCIONES

1._ Realizar un procedimiento que permita intercambiar el valor de dos variables.

Anlisis del problema

Para intercambiar el contenido de dos variables se necesita una variable auxiliar, del mismo tipo de las otras dos. Se pasan como parmetros de entrada las dos variables cuyo valor se desea intercambiar, las mismas son de entrada/salida por que se modifican en el subprograma.

30
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

Diseo del algoritmo

Procedimiento intercambio (E/S entero : a,b) var entero : aux inicio aux = a a=b b= aux fin_procedimiento // guardo el valor de a en aux // asigno el valor de b a a // asigno el valor de aux(que en realidad es a) a b //variable local

Este mismo ejemplo se puede realizar genrico para variables de otro tipo, por lo que en la cabecera del programa principal se declara un nuevo tipo de variable,

tipo tipo_datos = // tipo de datos a intercambiar

entonces la cabecera del procedimiento ser:

Procedimiento intercambio (E/S tipo_datos : a,b) var tipo_datos : aux //variable local

2._ Realizar una funcin para obtener el trmino n de la serie de Fibonacci

Anlisis del problema

La serie Fibonacci se define como: Fibonaccin = Fibonaccin-1 + Fibonaccin-2 Fibonaccin = 1 Fibonaccin = 1 para todo n>2 para n=2 para n=1 31
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

Como es repetitivo se usar un ciclo para manejar esta serie, que se iniciar desde 3 hasta n, ya que para n =2 y n=1 el valor es constante. En el ciclo cada intercambio de valores se utilizarn dos variables ltimo y penltimo. A la funcin le entra una variable entera y saldr una entera tambin.

Diseo del algoritmo

Entero Funcin Fibonacci (E entero : n) var entero : i, ltimo, penltimo, suma inicio suma = 1 ltimo = 1 penltimo = 1 desde i = 3 hasta n penltimo = ltimo ltimo = penltimo suma = ltimo + penltimo fin_desde devolver (suma) fin_funcin // inicio el acumulador // inicio de la variable // inicio de la variable

3._ Disear un procedimiento que convierta coordenadas polares (radio,ngulo) a cartesianas (x,y). x = radio * cos (ngulo) y = radio * sin (ngulo)

Diseo del algoritmo Procedimiento Polares (E real : ngulo, radio; S real : x, y) inicio 32
Elaborado por: Lucia Martino M. (rev_2_2011)

Escuela de Ingeniera Mecnica. UC

Ctedra: Computacin para ingenieros (DA4M02)

x = radio * cos (ngulo) y = radio * sin (ngulo) fin_procedimiento

4._ Disee una funcin que permita calcular el factorial de un nmero entero positivo.

Factorial n = n * n-1 * n-2 * * 1 Factorial 0 = 1 // por definicin

Diseo del algoritmo

Entero Funcin Factorial (E entero : n) var entero : i, f inicio f=1 Si n >1 entonces desde i = 2 hasta n f=f*i fin_desde fin_si devolver (f) fin_funcin // inicio el acumulador

33
Elaborado por: Lucia Martino M. (rev_2_2011)

You might also like