Logo Studenta

Semana 5

¡Este material tiene más páginas!

Vista previa del material en texto

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) 
Entero i, 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 discri(real a, real b, real c)
Acción cuadratica(real a, real b, real c, real &raiz1, real &raiz2) 
Acción Principal
DV
Real coef1, coef2, coef3
Real r1, r2
Inicio
leer(coef1, coef2, coef3)
cuadratica(coef1, coef2, coef3, r1, r2) Llamada a procedimiento
escribir(r1, r2)
Fin
18
SOLUCIÓN
Real Acción discri(real a, real b, real c)
DV
Real d
Inicio
d b*b-4*a*c
retornar d
FAcción
Acción cuadratica(real a, real b, real c, real &raiz1, real &raiz2) 
Inicio 
raiz1 (-b + discri(a,b,c) **0.5) / (2*a)
raíz2 (-b – discri(a,b,c) **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*nretornar 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
http://es.wikipedia.org/wiki/Direcci%C3%B3n_de_memoria
 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
EJERCICIOS
 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

Continuar navegando

Materiales relacionados

10 pag.
67dea93e16cb29a8eb5b8f05232cf003

User badge image

Alvaro Javier Morales

361 pag.