SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
PROGRAMACIÓN Y FUNDAMENTOS
DE ALGORÍTMICA
PROGRAMACIÓN MODULAR
SUBPROGRAMAS
Pablo Romero
LOGRO DE LA SESIÓN
 Al finalizar la sesión el estudiante elabora
seudocódigo empleando módulos para resolver
problemas.
2
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
3
4
PROGRAMACIÓN MODULAR
 La programación modular es una metodología de
programación que consiste en organizar un
programa en módulos.
 En la etapa de diseño de un programa se aplica la
estrategia “Divide y vencerás”.
 En la etapa de implementación, 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.
 Los módulos más simples son los procedimientos y
funciones.
5
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
6
SUBPROGRAMAS
SUBPROGRAMAS
7
 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, ya conocemos (y hemos utilizado)
algunos subprogramas que no hemos
implementado nosotros
 Para operar con números: sqrt, pow, …
 Para operar con arreglos de caracteres: strcpy, …
SUBPROGRAMAS
8
SUBPROGRAMAS: EJEMPLO 1
9
 Hallar el cociente y resto de una división
Acción division (entero n1, entero n2, entero &c, entero &r) //Prototipo
Acción Principal
DV
Entero num1, num2, coc, res
Inicio
leer(num1, num2)
division(num1,num2,coc,res) Llamada a procedimiento
escribir(coc,res)
Fin
Acción division (entero n1, entero n2, entero &c, entero &r)
Inicio
cn1 div n2
rn1 mod n2
FAcción
10
PROCEDIMIENTO
 Son subprogramas que realizan una tarea
determinada y devuelven 0 o más de un valor. Se
utilizan para estructurar un programa y mejorar su
claridad y generalidad.
 Debido a que devuelven más de un resultado, NO
UTILIZAN la palabra reservada retornar, y los
parámetros pueden ser:
- de ENTRADA Sólo 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: DECLARACIÓN, DEFINICIÓN,
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
identificador (lista de parámetros)
11
SUBPROGRAMAS: EJEMPLO 2
12
 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 “, cuad)
Fin
Entero Acción cuadrado(Entero n)
DV
Entero c //Variable local a cuadrado
Inicio
cn*n
retornar c
FAcción
13
FUNCIÓN
 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 PARÁMETROS
son de ENTRADA.
FUNCIÓN: DECLARACIÓN, DEFINICIÓN Y
LLAMADA
14
 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
 Llamada o Invocación
identificador (lista de parámetros) //Obs: retorna resultado
15
EJEMPLO 3
Escribir subprograma para hallar el factorial
de un número
Entero Acción factorial (Entero num)
DV
Entero i, factor
Inicio
factor1
Para i de 1 a num hacer
factorfactor*i
Fpara
retornar factor
FAcción
ÁMBITO DE VARIABLES
 El buen uso de la programación modular requiere
que los módulos sean independientes.
 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.
 Dado que se permite el anidamiento en la llamada
a subprogramas, es necesario evitar problemas
con los identificadores definidos en varias partes
del código.
16
SUBPROGRAMAS: EJEMPLO
 Hallar las raíces de una ecuación cuadrática
17
SOLUCIÓN
//Prototipo
Real Acción hallarDiscrim(real a, real b, real c)
Acción hallarRaices(real a, real b, real c, real &raiz1, real &raiz2)
Acción Principal
DV
Real coef1, coef2, coef3 //Entrada
Real r1, r2 //Salida
Inicio
Leer(coef1, coef2, coef3)
hallarRaices(coef1, coef2, coef3, r1, r2) Llamada a procedimiento
Escribir(r1, r2)
Fin
18
SOLUCIÓN
Real Acción hallarDiscrim(real a, real b, real c)
DV
Real d
Inicio
d b*b-4*a*c
retornar d
FAcción
Acción hallarRaices(real a, real b, real c, real &raiz1, real &raiz2)
DV
Real d
Inicio
d hallarDiscrim(a,b,c)
raiz1 (-b + d **0.5) / (2*a)
raíz2 (-b – d **0.5) / (2*a)
FAcción
19
Á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.
 Dos funciones diferentes, pueden utilizar los
mismos nombres de variables sin "interferencias“
ya que se refieren a posiciones diferentes de
memoria.
20
Á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
retornar k
FAcción
21
 Es aquella que se define fuera del cuerpo de cualquier función,
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).
 El ámbito de una variable global son todas las funciones que
componen el programa, cualquier función puede acceder a
dichas variables para leer y escribir en ellas. Es decir, se
puede hacer referencia a su dirección 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. 22
ÁMBITO DE VARIABLES: VARIABLE GLOBAL
23
ÁMBITO DE VARIABLES: VARIABLE GLOBAL
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.
Acción Principal
DV
Entero num1, num2, coc, res
Inicio
leer(num1, num2)
division(num1,num2,coc,res) Llamada a procedimiento
escribir(coc,res)
Fin
24
Parámetros actuales
PARÁMETROS FORMALES O FICTICIOS
 Son las variables de enlace definidas en la entrada
de un subprograma, que aceptan los valores de los
parámetros actuales que se usan en la llamada al
subprograma y se comportan como otras variables
locales.
Entero Acción cuadrado(Entero n)
DV
Entero k //Variable local a cuadrado
Inicio
kn*n
retornar k
FAcción
25
Parámetro formal
26
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. Se
tendrán dos valores duplicados e independientes,
con lo que la modificación de uno no afecta al otro.
27
PASO DE PARÁMETROS: POR VALOR
=
Z
28
PASO DE PARÁMETROS: POR VALOR
Acción Principal
DV
Entero k, cuad //Variables locales a Principal
Inicio
Leer(k)
cuadcuadrado(k) k es parámetro real
escribir(“Cuadrado “, cuad)
Fin
Entero Acción cuadrado(Entero n) n es parámetro formal
DV
Entero c //Variable local a cuadrado
Inicio
cn*n
retornar c
FAcción
 El paso de parámetros por referencia consiste en
proporcionar al subprograma al que se quiere
pasar el argumento, la dirección 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
acción sobre el parámetro se realiza sobre el
mismo dato en la memoria.
29
PASO DE PARÁMETROS: POR REFERENCIA
 La variable X es en realidad una dirección de memoria que apunta a la
variable Y. Para poder usar X tendremos que anteponer siempre un &.
 Todos los cambios que hagamos dentro del procedimiento “miProcedimiento”
sobre la variable X se reflejarán en el parámetro actual correspondiente, en
este caso Y.
30
PASO DE PARÁMETROS: POR REFERENCIA
Mi Procedimiento
void miProcedimiento (
miProcedimiento (
31
PASO DE PARÁMETROS: POR REFERENCIA
 Hallar el cociente y resto de una división
Acción division (entero n1, entero n2, entero &c, entero &r) //Prototipo
Acción Principal
DV
Entero num1, num2, coc, res
Inicio
leer(num1, num2)
division(num1,num2,coc,res)
escribir(coc,res)
Fin
Acción division (entero n1, entero n2, entero &c, entero &r)
Inicio
cn1 div n2
rn1 mod n2
FAcción
PREGUNTAS
32
PROBLEMA
 Use subprogramas y paso de parámetros para
hallar la suma de los n términos de
1 +
1
2!
+
1
3!
+
1
4!
+ ⋯
 Usando subprogramas halle las raíces de la
ecuación cuadrática
33
RESUMEN
 Subprogramas
 Tipos
 Diferencias
 Parámetros
 Tipos
 Paso de parámetros
34

Más contenido relacionado

Similar a Programación Modular - Subprogramas o funciones

Similar a Programación Modular - Subprogramas o funciones (20)

Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVRMicrocontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
Microcontroladores: Programación en lenguaje ensamblador de Atmel Studio AVR
 
2do parcial c
2do parcial c2do parcial c
2do parcial c
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
 
050 Componentes de un programa Python.pdf
050 Componentes de un programa Python.pdf050 Componentes de un programa Python.pdf
050 Componentes de un programa Python.pdf
 
Cap7 2
Cap7 2Cap7 2
Cap7 2
 
BORLAND
BORLANDBORLAND
BORLAND
 
Visual c++
Visual c++Visual c++
Visual c++
 
Clase 2
Clase 2Clase 2
Clase 2
 
Logica subprogramas
Logica subprogramasLogica subprogramas
Logica subprogramas
 
5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx5. PROGRAMACION ESTRUCTURADA C++.pptx
5. PROGRAMACION ESTRUCTURADA C++.pptx
 
07 funciones
07 funciones07 funciones
07 funciones
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
CURSO DE PROGRAMACION BASICA - Cap 5
CURSO DE PROGRAMACION BASICA - Cap 5CURSO DE PROGRAMACION BASICA - Cap 5
CURSO DE PROGRAMACION BASICA - Cap 5
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓNNIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
 
Programacion Modular lic en informa.pdf
Programacion Modular  lic en informa.pdfProgramacion Modular  lic en informa.pdf
Programacion Modular lic en informa.pdf
 

Último

Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfCarlosSanchez452245
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)Samuel Solís Fuentes
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfUPSE
 
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxUPSE
 
Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocioMagemyl Egana
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxcorreafrancoci00
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptxalzabenjaminci00
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocioMagemyl Egana
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...juanforero141
 

Último (9)

Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdf
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
 
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
 
Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocio
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocio
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
 

Programación Modular - Subprogramas o funciones

  • 1. PROGRAMACIÓN Y FUNDAMENTOS DE ALGORÍTMICA PROGRAMACIÓN MODULAR SUBPROGRAMAS Pablo Romero
  • 2. LOGRO DE LA SESIÓN  Al finalizar la sesión el estudiante elabora seudocódigo empleando módulos para resolver problemas. 2
  • 3. 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 3
  • 4. 4 PROGRAMACIÓN MODULAR  La programación modular es una metodología de programación que consiste en organizar un programa en módulos.  En la etapa de diseño de un programa se aplica la estrategia “Divide y vencerás”.  En la etapa de implementación, 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.  Los módulos más simples son los procedimientos y funciones.
  • 5. 5 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
  • 7. SUBPROGRAMAS 7  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, ya conocemos (y hemos utilizado) algunos subprogramas que no hemos implementado nosotros  Para operar con números: sqrt, pow, …  Para operar con arreglos de caracteres: strcpy, …
  • 9. SUBPROGRAMAS: EJEMPLO 1 9  Hallar el cociente y resto de una división Acción division (entero n1, entero n2, entero &c, entero &r) //Prototipo Acción Principal DV Entero num1, num2, coc, res Inicio leer(num1, num2) division(num1,num2,coc,res) Llamada a procedimiento escribir(coc,res) Fin Acción division (entero n1, entero n2, entero &c, entero &r) Inicio cn1 div n2 rn1 mod n2 FAcción
  • 10. 10 PROCEDIMIENTO  Son subprogramas que realizan una tarea determinada y devuelven 0 o más de un valor. Se utilizan para estructurar un programa y mejorar su claridad y generalidad.  Debido a que devuelven más de un resultado, NO UTILIZAN la palabra reservada retornar, y los parámetros pueden ser: - de ENTRADA Sólo 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.
  • 11. PROCEDIMIENTO: DECLARACIÓN, DEFINICIÓN, 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 identificador (lista de parámetros) 11
  • 12. SUBPROGRAMAS: EJEMPLO 2 12  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 “, cuad) Fin Entero Acción cuadrado(Entero n) DV Entero c //Variable local a cuadrado Inicio cn*n retornar c FAcción
  • 13. 13 FUNCIÓN  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 PARÁMETROS son de ENTRADA.
  • 14. FUNCIÓN: DECLARACIÓN, DEFINICIÓN Y LLAMADA 14  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  Llamada o Invocación identificador (lista de parámetros) //Obs: retorna resultado
  • 15. 15 EJEMPLO 3 Escribir subprograma para hallar el factorial de un número Entero Acción factorial (Entero num) DV Entero i, factor Inicio factor1 Para i de 1 a num hacer factorfactor*i Fpara retornar factor FAcción
  • 16. ÁMBITO DE VARIABLES  El buen uso de la programación modular requiere que los módulos sean independientes.  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.  Dado que se permite el anidamiento en la llamada a subprogramas, es necesario evitar problemas con los identificadores definidos en varias partes del código. 16
  • 17. SUBPROGRAMAS: EJEMPLO  Hallar las raíces de una ecuación cuadrática 17
  • 18. SOLUCIÓN //Prototipo Real Acción hallarDiscrim(real a, real b, real c) Acción hallarRaices(real a, real b, real c, real &raiz1, real &raiz2) Acción Principal DV Real coef1, coef2, coef3 //Entrada Real r1, r2 //Salida Inicio Leer(coef1, coef2, coef3) hallarRaices(coef1, coef2, coef3, r1, r2) Llamada a procedimiento Escribir(r1, r2) Fin 18
  • 19. SOLUCIÓN Real Acción hallarDiscrim(real a, real b, real c) DV Real d Inicio d b*b-4*a*c retornar d FAcción Acción hallarRaices(real a, real b, real c, real &raiz1, real &raiz2) DV Real d Inicio d hallarDiscrim(a,b,c) raiz1 (-b + d **0.5) / (2*a) raíz2 (-b – d **0.5) / (2*a) FAcción 19
  • 20. Á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.  Dos funciones diferentes, pueden utilizar los mismos nombres de variables sin "interferencias“ ya que se refieren a posiciones diferentes de memoria. 20
  • 21. Á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 retornar k FAcción 21
  • 22.  Es aquella que se define fuera del cuerpo de cualquier función, 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).  El ámbito de una variable global son todas las funciones que componen el programa, cualquier función puede acceder a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su dirección 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. 22 ÁMBITO DE VARIABLES: VARIABLE GLOBAL
  • 23. 23 ÁMBITO DE VARIABLES: VARIABLE GLOBAL
  • 24. 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. Acción Principal DV Entero num1, num2, coc, res Inicio leer(num1, num2) division(num1,num2,coc,res) Llamada a procedimiento escribir(coc,res) Fin 24 Parámetros actuales
  • 25. PARÁMETROS FORMALES O FICTICIOS  Son las variables de enlace definidas en la entrada de un subprograma, que aceptan los valores de los parámetros actuales que se usan en la llamada al subprograma y se comportan como otras variables locales. Entero Acción cuadrado(Entero n) DV Entero k //Variable local a cuadrado Inicio kn*n retornar k FAcción 25 Parámetro formal
  • 26. 26 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. Se tendrán dos valores duplicados e independientes, con lo que la modificación de uno no afecta al otro.
  • 27. 27 PASO DE PARÁMETROS: POR VALOR = Z
  • 28. 28 PASO DE PARÁMETROS: POR VALOR Acción Principal DV Entero k, cuad //Variables locales a Principal Inicio Leer(k) cuadcuadrado(k) k es parámetro real escribir(“Cuadrado “, cuad) Fin Entero Acción cuadrado(Entero n) n es parámetro formal DV Entero c //Variable local a cuadrado Inicio cn*n retornar c FAcción
  • 29.  El paso de parámetros por referencia consiste en proporcionar al subprograma al que se quiere pasar el argumento, la dirección 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 acción sobre el parámetro se realiza sobre el mismo dato en la memoria. 29 PASO DE PARÁMETROS: POR REFERENCIA
  • 30.  La variable X es en realidad una dirección de memoria que apunta a la variable Y. Para poder usar X tendremos que anteponer siempre un &.  Todos los cambios que hagamos dentro del procedimiento “miProcedimiento” sobre la variable X se reflejarán en el parámetro actual correspondiente, en este caso Y. 30 PASO DE PARÁMETROS: POR REFERENCIA Mi Procedimiento void miProcedimiento ( miProcedimiento (
  • 31. 31 PASO DE PARÁMETROS: POR REFERENCIA  Hallar el cociente y resto de una división Acción division (entero n1, entero n2, entero &c, entero &r) //Prototipo Acción Principal DV Entero num1, num2, coc, res Inicio leer(num1, num2) division(num1,num2,coc,res) escribir(coc,res) Fin Acción division (entero n1, entero n2, entero &c, entero &r) Inicio cn1 div n2 rn1 mod n2 FAcción
  • 33. PROBLEMA  Use subprogramas y paso de parámetros para hallar la suma de los n términos de 1 + 1 2! + 1 3! + 1 4! + ⋯  Usando subprogramas halle las raíces de la ecuación cuadrática 33
  • 34. RESUMEN  Subprogramas  Tipos  Diferencias  Parámetros  Tipos  Paso de parámetros 34