Programación Modular - Subprogramas o funciones

415 views 34 slides Apr 28, 2024
Slide 1
Slide 1 of 34
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34

About This Presentation

Programación Modular, una manera de organizar las funciones ordenadamente.


Slide Content

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
subproblemasse 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: EJEMPLO1
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 modn2
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: EJEMPLO2
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ÓNY
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
EJEMPLO3
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 numhacer
factorfactor*i
Fpara
retornar factor
FAcción

ÁMBITODEVARIABLES
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

ÁMBITODEVARIABLES: VARIABLELOCAL
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

ÁMBITODEVARIABLES: VARIABLELOCAL
Acción Principal
DV
Entero kVariable 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
ÁMBITODEVARIABLES: VARIABLEGLOBAL

23
ÁMBITODEVARIABLES: VARIABLEGLOBAL

PARÁMETROS ACTUALESOREALES
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 FORMALESOFICTICIOS
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
PASODEPARÁMETROS: PORVALOR
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
PASODEPARÁMETROS: PORVALOR
= Z

28
PASODEPARÁMETROS: PORVALOR
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 memoriadel
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
PASODEPARÁMETROS: PORREFERENCIA

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
PASODEPARÁMETROS: PORREFERENCIA
Mi Procedimiento
voidmiProcedimiento(
miProcedimiento(

31
PASODEPARÁMETROS: PORREFERENCIA
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 modn2
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
Tags