5_Subprogramas

28
Pseudocódigo 1 Programación Modular Programación Modular Subprogramas Subprogramas Pablo Romero

description

lp

Transcript of 5_Subprogramas

  • Pseudocdigo

    1

    Programacin ModularProgramacin ModularSubprogramasSubprogramas

    Pablo Romero

  • AGENDAPseudocdigo

    Programacin modular Subprogramas Ejemplo Procedimiento Declaracin, Definicin y Llamada Ejemplo Funcin Declaracin, Definicin y Llamada mbito de variables: local y global Paso de parmetros: por valor y referencia Ejercicios

    2

  • 3PROGRAMACIN MODULAR La programacin modular es una metodologa de

    programacin que consiste en organizar un programa en mdulos.

    En la etapa de diseo de un programa se aplica la estrategia Divide y vencers.

    En la etapa de implementacin, cada uno de los subproblemas se implementa a travs de un mdulo.

    Los lenguajes de programacin brindan diferentes mecanismos para implementar mdulos.

    Los mdulos ms simples son los procedimientos y funciones.

  • 4SUBPROGRAMAS Subprogramas: bloques de cdigo que llevan a

    cabo una tarea concreta (= resuelven un subproblema concreto) Tienen un propsito Tienen unas precondiciones Permiten reutilizar cdigo de manera sencilla y segura

    Pueden ser usados ms de una vez en el programa principal sin necesidad de reescribir todo (o copiar-pegar)

    Ayudan a que el cdigo del programa principal sea Legible: Resulta ms sencillo leer slo el nombre del

    subprograma que todo su cdigo Ordenado: Cada subprograma ocupa un lugar concreto

    dentro de todo el cdigo

  • 5SUBPROGRAMAS

  • SUBPROGRAMAS

    6

    Ejemplo: Podemos pensar en subprogramas para Mostrar un men de opciones Pedirle datos al usuario Calcular el mximo de 3 nmeros

    De hecho, ya conocemos (y hemos utilizado) algunos subprogramas que no hemos implementado nosotros Para operar con nmeros: sqrt, pow, Para operar con arreglos de caracteres: strcpy,

  • SUBPROGRAMAS

    7

  • SUBPROGRAMAS: EJEMPLO 1

    8

    Hallar el cociente y resto de una divisinAccin division (entero n1, entero n2, entero &c, entero &r) //PrototipoAccin Principal DV Entero num1, num2, coc, res Inicio leer(num1, num2) division(num1,num2,coc,res) Llamada a procedimiento escribir(coc,res)FinAccin division (entero n1, entero n2, entero &c, entero &r)Inicio cn1 div n2 rn1 mod n2FAccin

  • 9PROCEDIMIENTO Son subprogramas que realizan una tarea

    determinada y devuelven 0 o ms de un valor. Se utilizan para estructurar un programa y mejorar su claridad y generalidad.

    Debido a que devuelven ms de un resultado, NO UTILIZAN la palabra reservada retornar, y los parmetros pueden ser:- de ENTRADA Slo se utilizan para que los subprogramas que llaman al procedimiento le pasen datos al mismo.- de ENTRADA/SALIDA Se utilizan por parte de los subprogramas que llaman, para pasarle datos al procedimiento, y por parte del procedimiento para pasar los resultados obtenidos al subprograma que lo ha llamado.

  • PROCEDIMIENTO: DECLARACIN, DEFINICIN, LLAMADA Declaracin o prototipo

    Accin identificador (lista de parmetros) Definicin

    Accin identificador (lista de parmetros) DV //Variables locales Inicio sentencias fAccin

    Llamada o Invocacinidentificador (lista de parmetros)

    10

  • SUBPROGRAMAS: EJEMPLO 2

    11

    Hallar el cuadrado de un nmeroEntero Accin cuadrado(Entero n) //PrototipoAccin PrincipalDV Entero k, cuad //Variables locales a PrincipalInicio k3 cuad cuadrado(k) Llamada a la funcin escribir(Cuadrado , cuad)FinEntero Accin cuadrado(Entero n)DV Entero k //Variable local a cuadradoInicio kn*n retornar k FAccin

  • 12

    FUNCIN Son subprogramas que realizan una determinada

    tarea y devuelven un nico resultado o valor. Se utilizan para crear operaciones nuevas no incluidas en el lenguaje.

    El resultado devuelto se indica mediante la palabra reservada retornar, y TODOS LOS PARMETROS son de ENTRADA.

  • FUNCIN: DECLARACIN, DEFINICIN Y LLAMADA

    13

    Declaracin o prototipotipo Accin identificador (lista de parmetros)

    Definicintipo Accin identificador (lista de parmetros) DV //Variables locales Inicio sentencias Faccin

    Llamada o Invocacinidentificador (lista de parmetros) //Obs: retorna valor

  • 14

    EJEMPLO 3

    Escribir subprograma para hallar el factorial de un nmeroEntero Accin factorial (Entero num) Entero i, factor1 Para i de 1 a num hacer

    factorfactor*i Fpara retornar factorFAccin

  • MBITO DE VARIABLES El buen uso de la programacin modular requiere

    que los mdulos sean independientes. Esto se consigue intentando satisfacer dos

    condiciones: Cada mdulo se disea sin conocimiento del diseo de

    otros mdulos La ejecucin de un subprograma particular no tiene por

    que afectar a los valores de las variables de otros subprogramas.

    Dado que se permite el anidamiento en la llamada a subprogramas, es necesario evitar problemas con los identificadores definidos en varias partes del cdigo.

    15

  • MBITO DE VARIABLES: VARIABLE LOCAL Son aquellas que se declaran en el cuerpo de la

    funcin. Solo son "visibles" o "usables" dentro de la funcin donde se han declarado.

    Dos funciones diferentes, pueden utilizar los mismos nombres de variables sin "interferencias ya que se refieren a posiciones diferentes de memoria.

    16

  • MBITO DE VARIABLES: VARIABLE LOCAL

    Accin PrincipalDV Entero k Variable local a PrincipalInicio k3 escribir(Cuadrado , cuadrado(k))FinEntero Accin cuadrado(Entero n)DV Entero k Variable local a cuadradoInicio kn*n retornar k FAccin

    17

  • Es aquella que se define fuera del cuerpo de cualquier funcin, normalmente al principio del programa y antes de cualquier funcin (En C++ despus de la definicin de los archivos de biblioteca (#include) y de la definicin de constantes simblicas).

    El mbito de una variable global son todas las funciones que componen el programa, cualquier funcin puede acceder a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su direccin de memoria en cualquier parte del programa.

    Al programar usando procedimientos y funciones, no utilizaremos en nuestras aplicaciones las variables globales, pues atenta contra la modularidad y el bajo acoplamiento que son lo que deseamos. 18

    MBITO DE VARIABLES: VARIABLE GLOBAL

  • 19

    MBITO DE VARIABLES: VARIABLE GLOBAL

  • PARMETROS ACTUALES O REALES Son las variables de enlace definidas en el programa

    principal y que se usan como argumentos dentro de los parntesis que posee una llamada a un subprograma.

    Accin Principal

    DV

    Entero num1, num2, coc, res

    Inicio

    leer(num1, num2)

    division(num1,num2,coc,res) Llamada a procedimiento

    escribir(coc,res)

    Fin

    20

    Parmetros actuales

  • PARMETROS FORMALES O FICTICIOS Son las variables de enlace definidas en la entrada

    de un subprograma, que aceptan los valores de los parmetros actuales que se usan en la llamada al subprograma y se comportan como otras variables locales.

    Entero Accin cuadrado(Entero n)DV Entero k //Variable local a cuadradoInicio kn*n retornar k FAccin

    21

    Parmetro formal

  • 22

    PASO DE PARMETROS: POR VALOR El paso de parmetros por valor consiste en copiar

    el contenido de la variable que queremos pasar en otra dentro del mbito local del subprograma. Se tendrn dos valores duplicados e independientes, con lo que la modificacin de uno no afecta al otro.

  • 23

    PASO DE PARMETROS: POR VALOR

  • 24

    PASO DE PARMETROS: POR VALOR

    Accin PrincipalDV Entero k, cuad //Variables locales a PrincipalInicio k3 cuadcuadrado(k) k es parmetro real escribir(Cuadrado , cuad)FinEntero Accin cuadrado(Entero n) n es parmetro formalDV Entero k //Variable local a cuadradoInicio kn*n retornar k FAccin

  • El paso de parmetros por referencia consiste en proporcionar al subprograma al que se quiere pasar el argumento, la direccin de memoria del dato. En este caso se tiene un nico valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y subprograma al que se pasa el argumento, por lo que cualquier accin sobre el parmetro se realiza sobre el mismo dato en la memoria.

    25

    PASO DE PARMETROS: POR REFERENCIA

  • La variable X es en realidad una direccin de memoria que apunta a la variable Y. Para poder usar X tendremos que anteponer siempre un &.

    Todos los cambios que hagamos dentro de la funcin miFuncion sobre la variable X se reflejarn en el parmetro actual correspondiente, en este caso Y.

    26

    PASO DE PARMETROS: POR REFERENCIA

  • 27

    PASO DE PARMETROS: POR REFERENCIA Hallar el cociente y resto de una divisinAccin division (entero n1, entero n2, entero &c, entero &r) //PrototipoAccin Principal DV Entero num1, num2, coc, res Inicio leer(num1, num2) division(num1,num2,coc,res) escribir(coc,res)FinAccin division (entero n1, entero n2, entero &c, entero &r)Inicio cn1 div n2 rn1 mod n2FAccin

  • EJERCICIOS

    28

    Pgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16Pgina 17Pgina 18Pgina 19Pgina 20Pgina 21Pgina 22Pgina 23Pgina 24Pgina 25Pgina 26Pgina 27Pgina 28