You are on page 1of 16

Pseudocódigo

Programación Modular
Subprogramas

Pablo Romero

AGENDA
 Pseudocódigo

 Programación modular
 Subprogramas
 Ejemplo
 Procedimiento
 Declaración, Definición y Llamada
 Ejemplo
 Función
 Declaración, Definición y Llamada
 Ámbito de variables: local y global
 Paso de parámetros: por valor y referencia
 Ejercicios
2

1

cada uno de los subproblemas se implementa a través de un módulo.  Los lenguajes de programación brindan diferentes mecanismos para implementar módulos. SUBPROGRAMAS  Subprogramas: bloques de código que llevan a cabo una tarea concreta (= resuelven un subproblema concreto)  Tienen un propósito  Tienen unas precondiciones  Permiten reutilizar código de manera sencilla y segura  Pueden ser usados más de una vez en el programa principal sin necesidad de reescribir todo (o copiar-pegar)  Ayudan a que el código del programa principal sea  Legible: Resulta más sencillo leer sólo el nombre del subprograma que todo su código  Ordenado: Cada subprograma ocupa un lugar concreto dentro de todo el código 4 2 .  En la etapa de diseño de un programa se aplica la estrategia “Divide y vencerás”.PROGRAMACIÓN MODULAR  La programación modular es una metodología de programación que consiste en organizar un programa en módulos.  Los módulos más simples son los procedimientos y 3 funciones.  En la etapa de implementación.

SUBPROGRAMAS 5 SUBPROGRAMAS  Ejemplo: Podemos pensar en subprogramas para…  Mostrar un menú de opciones  Pedirle datos al usuario  Calcular el máximo de 3 números  …  De hecho. … 6 3 . …  Para operar con arreglos de caracteres: strcpy. ya conocemos (y hemos utilizado) algunos subprogramas que no hemos implementado nosotros  Para operar con números: sqrt. pow.

entero &c.num2.res) Llamada a procedimiento escribir(coc. entero n2. entero &r) Inicio cn1 div n2 rn1 mod n2 8 FAcción 4 . num2. entero &c.SUBPROGRAMAS 7 SUBPROGRAMAS: EJEMPLO 1  Hallar el cociente y resto de una división Acción division (entero n1.coc. num2) division(num1. res Inicio leer(num1. coc. entero n2.res) Fin Acción division (entero n1. entero &r) //Prototipo Acción Principal DV Entero num1.

y por parte del procedimiento para pasar los 9 resultados obtenidos al subprograma que lo ha llamado. y los parámetros pueden ser: .  Debido a que devuelven más de un resultado. para pasarle datos al procedimiento. DEFINICIÓN. Se utilizan para estructurar un programa y mejorar su claridad y generalidad.PROCEDIMIENTO  Son subprogramas que realizan una tarea determinada y devuelven 0 o más de un valor. NO UTILIZAN la palabra reservada retornar. LLAMADA  Declaración o prototipo Acción identificador (lista de parámetros)  Definición Acción identificador (lista de parámetros) DV //Variables locales Inicio sentencias Facción  Llamada o Invocación 10 identificador (lista de parámetros) 5 .de ENTRADA/SALIDA Se utilizan por parte de los subprogramas que llaman.de ENTRADA Sólo se utilizan para que los subprogramas que llaman al procedimiento le pasen datos al mismo. . PROCEDIMIENTO: DECLARACIÓN.

12 6 . y TODOS LOS PARÁMETROS son de ENTRADA.  El resultado devuelto se indica mediante la palabra reservada retornar.SUBPROGRAMAS: EJEMPLO 2  Hallar el cuadrado de un número Entero Acción cuadrado(Entero n) //Prototipo Acción Principal DV Entero k. cuad //Variables locales a Principal Inicio Leer(k) cuad cuadrado(k) Llamada a la función escribir(“Cuadrado “. Se utilizan para crear operaciones nuevas no incluidas en el lenguaje. cuad) Fin Entero Acción cuadrado(Entero n) DV Entero c //Variable local a cuadrado Inicio cn*n 11 retornar c FAcción FUNCIÓN  Son subprogramas que realizan una determinada tarea y devuelven un único resultado o valor.

FUNCIÓN: DECLARACIÓN. DEFINICIÓN Y LLAMADA  Declaración o prototipo tipo Acción identificador (lista de parámetros)  Definición tipo Acción identificador (lista de parámetros) DV //Variables locales Inicio sentencias retornar resultado Facción 13  Llamada o Invocación identificador (lista de parámetros) //Obs: retorna resultado EJEMPLO 3 Escribir subprograma para hallar el factorial de un número Entero Acción factorial (Entero num) Entero i. factor1 Para i de 1 a num hacer factorfactor*i Fpara retornar factor FAcción 14 7 .

 Esto se consigue intentando satisfacer dos condiciones:  Cada módulo se diseña sin conocimiento del diseño de otros módulos  La ejecución de un subprograma particular no tiene por que afectar a los valores de las variables de otros subprogramas. SUBPROGRAMAS: EJEMPLO  Hallar las raíces de una ecuación cuadrática 16 8 .ÁMBITO DE VARIABLES  El buen uso de la programación modular requiere que los módulos sean independientes. es necesario evitar problemas con los identificadores definidos en varias partes 15 del código.  Dado que se permite el anidamiento en la llamada a subprogramas.

real b. real b. real &raiz1. r2 Inicio leer(coef1. coef3) cuadratica(coef1. r2) Llamada a procedimiento 17 escribir(r1. real c) DV Real d Inicio d (b*b-4*a*c) retornar d FAcción Acción cuadratica(real a.c) **0. coef3 Real r1.c) **0. coef2. real c. SOLUCIÓN //Prototipo Real Acción discri(real a. r1.b. real &raiz2) Inicio raiz1 (-b + discri(a. real c) Acción cuadratica(real a.5) / (2*a) raíz2 (-b – discri(a. coef2.b. coef2. real b. real &raiz1. coef3. r2) Fin SOLUCIÓN Real Acción discri(real a.5) / (2*a) 18 FAcción 9 . real c. real b. real &raiz2) Acción Principal DV Real coef1.

pueden utilizar los mismos nombres de variables sin "interferencias“ ya que se refieren a posiciones diferentes de memoria. 19 ÁMBITO DE VARIABLES: VARIABLE LOCAL Acción Principal DV Entero k Variable local a Principal Inicio k3 escribir(“Cuadrado “. cuadrado(k)) Fin Entero Acción cuadrado(Entero n) DV Entero k Variable local a cuadrado Inicio kn*n 20 retornar k FAcción 10 .  Dos funciones diferentes.ÁMBITO DE VARIABLES: VARIABLE LOCAL  Son aquellas que se declaran en el cuerpo de la función. Solo son "visibles" o "usables" dentro de la función donde se han declarado.

se puede hacer referencia a su dirección de memoria en cualquier parte del programa. normalmente al principio del programa y antes de cualquier función (En C++ después de la definición de los archivos de biblioteca (#include) y de la definición de constantes simbólicas). pues atenta contra la modularidad y el bajo acoplamiento que son lo que deseamos. cualquier función puede acceder a dichas variables para leer y escribir en ellas.ÁMBITO DE VARIABLES: VARIABLE GLOBAL  Es aquella que se define fuera del cuerpo de cualquier función. no utilizaremos en nuestras aplicaciones las variables globales.  El ámbito de una variable global son todas las funciones que componen el programa.  Al programar usando procedimientos y funciones. Es decir. 21 ÁMBITO DE VARIABLES: VARIABLE GLOBAL 22 11 .

num2) division(num1.coc. num2. Acción Principal DV Entero num1.num2. coc.res) Llamada a procedimiento escribir(coc. que aceptan los valores de los parámetros actuales que se usan en la llamada al subprograma y se comportan como otras variables locales. Parámetro formal Entero Acción cuadrado(Entero n) DV Entero k //Variable local a cuadrado Inicio kn*n retornar k 24 FAcción 12 .PARÁMETROS ACTUALES O REALES  Son las variables de enlace definidas en el programa principal y que se usan como argumentos dentro de los paréntesis que posee una llamada a un subprograma.res) 23 Fin PARÁMETROS FORMALES O FICTICIOS  Son las variables de enlace definidas en la entrada de un subprograma. res Inicio Parámetros actuales leer(num1.

25 PASO DE PARÁMETROS: POR VALOR =Z 26 13 . Se tendrán dos valores duplicados e independientes.PASO DE PARÁMETROS: POR VALOR  El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos pasar en otra dentro del ámbito local del subprograma. con lo que la modificación de uno no afecta al otro.

el programa principal y subprograma al que se pasa el argumento.PASO DE PARÁMETROS: POR VALOR Acción Principal DV Entero k. 28 14 . por lo que cualquier acción sobre el parámetro se realiza sobre el mismo dato en la memoria. En este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes. la dirección de memoria del dato. cuad) Fin Entero Acción cuadrado(Entero n) n es parámetro formal DV Entero c //Variable local a cuadrado Inicio cn*n 27 retornar c FAcción PASO DE PARÁMETROS: POR REFERENCIA  El paso de parámetros por referencia consiste en proporcionar al subprograma al que se quiere pasar el argumento. cuad //Variables locales a Principal Inicio Leer(k) cuadcuadrado(k) k es parámetro real escribir(“Cuadrado “.

num2) division(num1. entero &r) //Prototipo Acción Principal DV Entero num1. coc.PASO DE PARÁMETROS: POR REFERENCIA Mi Procedimiento void miProcedimiento ( miProcedimiento (  La variable X es en realidad una dirección de memoria que apunta a la variable Y.res) Fin Acción division (entero n1. entero &r) Inicio cn1 div n2 30 rn1 mod n2 FAcción 15 . num2. res Inicio leer(num1. entero n2.res) escribir(coc. Para poder usar X tendremos que anteponer siempre un &. entero &c.coc. entero n2. entero &c. en este caso Y. PASO DE PARÁMETROS: POR REFERENCIA  Hallar el cociente y resto de una división Acción division (entero n1.  Todos los cambios que hagamos dentro del procedimiento “miProcedimiento” 29 sobre la variable X se reflejarán en el parámetro actual correspondiente.num2.

EJERCICIOS  Use subprogramas y paso de parámetros para hallar la suma de los n términos de 1 1 1 1+ + + +⋯ 2! 3! 4!  Usando subprogramas halle las raíces de la ecuación cuadrática 31 16 .