Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


tema 4 programcion estrucutrada y modular, Apuntes de Informática

Asignatura: MTP 1, Profesor: , Carrera: Ingeniería Técnica de Informática de Gestión, Universidad: UJAEN

Tipo: Apuntes

Antes del 2010

Subido el 30/10/2007

helena_vv
helena_vv 🇪🇸

3.9

(14)

59 documentos

1 / 23

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Tema 4. Programación
Estructurada y Modular
Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 2
Objetivos
Realizar una descomposición modular de un problema
Conocer los principios de programación estructurada
Identificar las diferencias entre procedimiento y función
Conocer y utilizar el paso de parámetros a los distintos
módulos: por valor y referencia
Realizar llamadas a módulos
Conocer y utilizar el ámbito de variables
Conocer los efectos laterales que pueden producirse por
una programación incorrecta
Conocer y utilizar distintos criterios de descomposición
modular
Conocer y aplicar diversos estilos de programación para
realizar algoritmos fáciles de entender y mantener
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Vista previa parcial del texto

¡Descarga tema 4 programcion estrucutrada y modular y más Apuntes en PDF de Informática solo en Docsity!

Tema 4. Programación

Estructurada y Modular

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 2

Objetivos

‡ Realizar una descomposición modular de un problema

‡ Conocer los principios de programación estructurada

‡ Identificar las diferencias entre procedimiento y función

‡ Conocer y utilizar el paso de parámetros a los distintos

módulos: por valor y referencia

‡ Realizar llamadas a módulos

‡ Conocer y utilizar el ámbito de variables

‡ Conocer los efectos laterales que pueden producirse por

una programación incorrecta

‡ Conocer y utilizar distintos criterios de descomposición

modular

‡ Conocer y aplicar diversos estilos de programación para

realizar algoritmos fáciles de entender y mantener

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 3

Tema 4. Programación Estructura y

Modular

  1. Introducción
  2. Programación Modular
  3. Programación Estructurada
  4. Subalgoritmos: Funciones y Procedimientos
  5. Paso de parámetros
  6. El proceso de invocación y el manejo de la pila
  7. Ámbito de las variables
  8. Criterios de descomposición modular
  9. Estilos de programación

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 4

Introducción

‡ ¿Por qué usar una programación modular y estructurada?

„ Reutilización de módulos

„ Resolución de problemas difíciles mediante problemas más

sencillos (Técnica Divide y Vencerás)

‡ Ventajas

„ Simplificación del problema

„ Subproblemas diseñados independientemente

„ Posibilidad de parametrizar los módulos (reusabilidad)

„ Estructuración en módulos permite una lectura, prueba,

verificación y mantenimiento más sencillo

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 7

Tipos de módulos

‡ Cuando un módulo A utiliza otro módulo B se dice que el módulo

A activa , llama o invoca a dicho módulo B

„ Al módulo que activa otro módulo se le denomina módulo llamador,

llamante o simplemente módulo principal (en nuestro caso, el

módulo A)

„ Al módulo que es invocado se le llama módulo subordinado (en

nuestro caso, el módulo B)

„ Hay 2 tipos de módulos subordinados

‡ Funciones
‡ Procedimientos

‡ Para poder utilizar un módulo solo hay que llamar a ese módulo

desde un módulo principal

‡ Tanto los procedimientos como las funciones se declaran antes del

cuerpo principal del algoritmo

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 8

Parámetros de un módulo

‡ La comunicación del módulo principal y los módulos

subordinados se debe realizar únicamente a través de unos

parámetros especificados cuando se declara el módulo

‡ Estos parámetros constituyen la entrada y la salida al

subalgoritmo

‡ Hay que distinguir entre

„ parámetros formales : son los que aparecen en la

declaración del subalgoritmo

„ parámetros actuales o reales : son los que aparecen en la

invocación al módulo (es decir, en el módulo principal)

‡ Debe haber el mismo número de parámetros formales y

actuales

‡ La correspondencia entre parámetros formales y actuales

se realiza uno a uno teniendo en cuenta la posición que

ocupan

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 9

Subalgoritmos: Funciones

‡ Una función es un bloque de sentencias que realizan una

tarea específica devolviendo un único valor al punto de

llamada

‡ Tipos de funciones

„ Funciones predefinidas : están incorporadas al lenguaje de

programación y pueden ser utilizadas directamente (no se

declaran, simplemente se invocan)

‡ Ejemplos: sqrt(n), abs(n), rand()…

„ Funciones definidas por el usuario : utilizadas cuando las

funciones predefinidas no permiten realizar el tipo de cálculo

deseado, y es el usuario el que debe implementar, mediante

estructuras de control adecuadas, la tarea a realizar

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 10

Subalgoritmos: Funciones

‡ El formato de declaración de una función es el siguiente:

‡ El tipo devuelto por la función debe ser simple (entero, carácter,

real, lógico, puntero)

‡ Cuando se invoca a una función siempre se devuelve un valor que

será del tipo especificado en la función

‡ Cada función se invoca utilizando su nombre junto con los

parámetros actuales dentro de una expresión (que debe ser de un

tipo compatible con el tipo que devuelve la función)

FUNCION nombre (var1:tipo; var2:tipo; ...): tipoDevuelto

Variables locales

Modulos locales

INICIO

Sentencias

DEVOLVER (valor)

FIN_FUNC

Parámetros formales

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 13

Seminario 4

‡ Programación estructurada

‡ Jueves 8 de noviembre de 8’30 a 9’30 (grupo A),

y de 15’30 a 16’30 (grupo B)

‡ Relación de ejercicios del tema 4

„ Ejercicios 1, 4, 10

‡ Diapositiva 14, 27 y 28 del tema 4

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 14

Ejercicio de invocación a funciones

Suponiendo z=3 y v una variable
entera, indicar cuáles de las
siguientes sentencias son incorrectas
y por qué. En caso de ser correcta,
indicar el resultado obtenido

v ← factorial(z*2)

v ← factorial(3.0)

ESCRIBIR(factorial(z)*2)

LEER(factorial(3))

LEER(factorial(z))

Factorial(4) ← v

Factorial(z) ← v

v ← factorial(factorial(3))

v ← factorial(factorial(z)/2)

PARA i=1 HASTA z HACER

v ← factorial(i)

FIN_PARA

Suponiendo a=2, b=4, c y d variables
reales y v una variable lógica, indicar
cuáles de las siguientes sentencias son
incorrectas y por qué. En caso de ser
correcta, indicar el resultado obtenido

v ← menor(5,4)

v ← menor(a,b)

ESCRIBIR(menor)

LEER(menor(4,4))

v ← menor(c,d) OR NOT menor(c,d)

Menor(c,d) ← VERDAD

v ← menor(menor(a,b),b)

v ← menor(a*2,factorial(b))

PARA i=1 HASTA 5 HACER

SI menor(i,3) ENTONCES

ESCRIBIR(factorial(i))

FIN_SI

FIN_PARA

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 15

Subalgoritmos:Procedimientos

‡ Un procedimiento es un subalgoritmo que ejecuta un proceso

específico

‡ Ningún valor está asociado con el nombre del procedimiento

‡ El formato de declaración de un procedimiento es el siguiente:

‡ Si el parámetro formal se va a utilizar como salida al procedimiento

debe estar precedido de la palabra VAR

‡ Para invocar o llamar a un procedimiento se pone el nombre del

procedimiento como si fuera una sentencia normal del programa,

seguido de una lista de parámetros actuales

PROCEDIMIENTO nombre([ VAR ] var1:tipo;[ VAR ] var2:tipo;...)

Constantes y Variables locales

Modulos locales

INICIO

Sentencias

FIN_PROC

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 16

Ejemplo de Procedimientos (I)

ALGORITMO gestion. VARIABLES opcion:ENTERO {-------- Procedimiento que muestra el menú en pantalla ----------} PROCEDIMIENTO mostrar_menu INICIO ESCRIBIR(‘1.- Insertar nuevos datos’) ESCRIBIR(‘2.- Modificar datos existentes’) ESCRIBIR(‘3.- Borrar datos’) ESCRIBIR(‘4.- Terminar’) ESCRIBIR(‘Introduzca una opción’) FIN_PROC {-------------------Módulo principal---------------} INICIO REPETIR REPETIR mostrar_menu {llamada al procedimiento} LEER(opcion) HASTA (opcion>0) AND (opcion<5) CASO opcion 1: insertar( parametros ) {llamada al módulo de inserción} 2: modificar( parametros ) {llamada al módulo de modificación} 3: borrar( parametros ) {llamada al módulo de borrado} FIN_CASO HASTA opcion= FIN

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 19

Tipos de paso de parámetros

‡ El paso de parámetros es fundamental para la

comunicación entre módulos

‡ Los parámetros deben constituir la única entrada

y salida a un módulo

‡ Existen 2 tipos de paso de parámetros

„ Paso por valor o copia

„ Paso por referencia o variable

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 20

Paso de parámetros por valor

‡ Es el que se utiliza por defecto

‡ Los parámetros formales reciben una copia de los valores

de los parámetros actuales y no es posible cambiar su valor

‡ El parámetro actual puede ser cualquier expresión

compatible con el tipo del parámetro formal

‡ Los cambios que se producen en los parámetros formales

como consecuencia de la ejecución de las sentencias

incluidas en el subalgoritmo no tienen ningún efecto (y por

tanto no producen un cambio) en los parámetros actuales

‡ El paso por valor se utiliza cuando los parámetros se van a

utilizar únicamente como entrada ya que no se pueden

pasar valores de retorno al punto de llamada

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 21

Ejemplo de paso de

parámetros por Valor (I)

ALGORITMO paso_p_valor.

VARIABLES

num:ENTERO

PROCEDIMIENTO incremento(a:ENTERO)

INICIO

aÅa+

ESCRIBIR(‘Dentro del procedimiento el número vale ’,a)

FIN_PROC

1.[Entrada del número num]

LEER(num)

2.[Llamada al procedimiento]

incremento(num)

3.[Mostrar el resultado]

ESCRIBIR(‘Fuera del procedimiento el número vale ’,num)

4.[Fin]

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 22

Ejemplo de paso de

parámetros por Valor (II)

ALGORITMO paso_p_valor.

VARIABLES

num, i :ENTERO

PROCEDIMIENTO incremento(a:ENTERO)

INICIO

aÅa+

ESCRIBIR(‘Dentro del procedimiento el número vale ’,a)

FIN_PROC

1.[Entrada del número num]

LEER(num)

2.[Llamada al procedimiento]

PARA i=1 HASTA 4 HACER

incremento(num)

FIN_PARA

3.[Mostrar el resultado]

ESCRIBIR(‘Fuera del procedimiento el número vale ’,num)

4.[Fin]

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 25

Ejemplo de paso de

parámetros por Referencia (II)

ALGORITMO paso_p_referencia.

VARIABLES

num, i :ENTERO

PROCEDIMIENTO incremento( VAR a:ENTERO)

INICIO

aÅa+

ESCRIBIR(‘Dentro del procedimiento el número vale ’,a)

FIN_PROC

1.[Entrada del número num]

LEER(num)

2.[Llamada al procedimiento]

PARA i=1 HASTA 4 HACER

incremento(num)

FIN_PARA

3.[Mostrar el resultado]

ESCRIBIR(‘Fuera del procedimiento el número vale ’,num)

4.[Fin]

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 26

Reglas para la asociación de

parámetros

‡ Debe haber el mismo número de parámetros actuales que

de formales

‡ Un parámetro actual asociado con un parámetro formal por

referencia debe ser una variable (no puede ser una

constante o una expresión)

‡ Pasaremos por valor las variables que se utilicen en un

módulo pero que no queremos que se modifique su valor en

el módulo llamante (parámetro de entrada)

‡ Las variables que deseamos que el módulo llamado

modifique su valor y se vea reflejado en el módulo llamante

las pasaremos por referencia (parámetro de entrada/salida)

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 27

Ejercicio asociación de parámetros

Considerando el siguiente esqueleto de
algoritmo, determinar si las instrucciones de
llamada al procedimiento son válidas
ALGORITMO demo
CONSTANTES
pi=3.
dos=
inicial=‘N’
VARIABLES
dia,mes,año,p,q:ENTERO
horas, tarifa,cantidad,u,v:REAL
codigo,clase:CARÁCTER
PROCEDIMIENTO calcular( a: REAL;
VAR b: REAL;
m: ENTERO;
VAR k,n: ENTERO;
VAR c: CARACTER)
1. Calcular(u,v,dos,p,q,codigo)
2. Calcular(pi,u,dos,p,v,clase)
3. Calcular(horas,u,dos,dia,año,clase)
4. Calcular(’16’,horas,pi,13,año,clase)
5. Calcular(pi*horas,pi,dos,dia,año,clase)
6. Calcular(pi,pi*horas,dos,dia,año,clase)
7. MIENTRAS u>0 HACER
Calcular(u,v,dos,p,q,codigo)
FIN_MIENTRAS
8. Calcular(0,horas,(p+1)/2,dia,año,codigo)
9. Calcular(sqrt(cantidad),tarifa,7,p,q,Inicial)
10. Calcular(dos,cantidad,dia,p+q,dia,clase)
11. ESCRIBIR(Calcular(u,v,dos,p,q,codigo))

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 28

Ejercicio asociación de parámetros

Considerando el siguiente esqueleto de
algoritmo, determinar si las instrucciones de
llamada a los subalgoritmos son válidas
ALGORITMO demo
CONSTANTES
pi=3.
dos=
VARIABLES
dia,mes,año,p,q:ENTERO
horas, tarifa,cantidad,u,v:REAL
codigo,clase:CARÁCTER
FUNCION f(x,y:REAL;
d:ENTERO):REAL
PROCEDIMIENTO calcular( a: REAL;
VAR b: REAL;
m: ENTERO;
VAR k,n: ENTERO;
VAR c: CARÁCTER)
  1. Cantidad Åf(pi,tarifa,mes)
  2. tarifa Åf(horas,dia,dos)
  3. F(horas,tarifa,mes)
  4. ESCRIBIR(f(0,0,0))
  5. Calcular(u,v,p,dos,dia,codigo)
  6. horas Ådosf(pi,cantidad)/(2.71tarifa)
  7. cantidad Åf(pi*horas,(2.71+dia)/tarifa,dos)
  8. SI mes=dos ENTONCES Año Åf(horas,f(tarifa,pi,dos),dia) FIN_SI
  9. SI u>0 ENTONCES cantidad Åcalcular(u,v,dos,p,q,codigo) FIN_SI
  10. SI Calcular(sqrt(cantidad),tarifa,7,p,q,Inicial)> ENTONCES ESCRIBIR(‘OK’)
  11. MIENTRAS f(cantidad,0,0)>0 HACER cantidad Åf(cantidad,0,0) FIN_MIENTRAS
  12. Calcular(f(u,v,dia),tarifa,7,p,q,codigo)
  13. Calcular(tarifa, f(u,v,dia),7,p,q,codigo)
  14. Cantidad Åf(a,b,dia)

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 31

El proceso de invocación y el

manejo de la Pila (II)

ALGORITMO principal. VARIABLES…… ………… {----------Módulo M---------} MODULO M INICIO…… ………… FIN {----------Módulo N ---------} MODULO N INICIO…… ………… llamada…… a MODULO M ………… FIN {----------Módulo P---------} MODULO P INICIO…… ………… llamada…… a MODULO N ………… FIN {------- Comienza el módulo principal -----} INICIO…… ………… llamada…… a MODULO P ………… FIN

Entorno del módulo M

Entorno del programa principal

Entorno del módulo N PILA

Entorno del módulo P

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 32

Ejemplo del uso de la pila

ALGORITMO uso_pila.
VARIABLES
i,n:ENTERO
suma:REAL
FUNCION factorial(a:ENTERO):ENTERO
VARIABLES
fact,i:ENTERO
INICIO
factÅ 1
PARA i=2 HASTA a HACER
fact Å fact*i
FIN_PARA
factorial Å fact
FIN_FUNC
1.[Inicio algoritmo]
LEER(n)
suma Å 0
PARA i=1 HASTA n HACER
suma Å suma+factorial(i)/i
FIN_PARA
ESCRIBIR(‘Resultado ’,suma)
4.[Fin]

Antes de la llamada al módulo

Entorno del módulo principal

i n suma

PILA

Entorno del módulo principal

i n suma

PILA

Entorno del módulo principal

i n suma

PILA

Entorno de la función factorial

i fact factorial a

Tras la llamada a Factorial
Tras devolver el control al módulo principal

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 33

Tipos de variables

‡ Variable local

„ Se declara dentro de un subalgoritmo

„ Su valor se conoce dentro del subalgoritmo donde se

define

„ Si otro subalgoritmo declara una variable con el mismo

nombre se trata de otra variable distinta

‡ Variable global

„ Se declara en el algoritmo principal

„ Su valor se conoce en cualquier parte del algoritmo

incluidos los subalgoritmos declarados

„ Si otro subalgoritmo declara una variable con el mismo

nombre, la variable global no tendrá efecto (no se

conocerá) dentro de dicho subalgoritmo

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 34

Ámbito de las variables

‡ Se puede definir el ámbito de una variable , y lo notaremos como v,

como aquellos módulos de un programa en los que la variable tiene

validez, es decir, aquellos módulos de un programa que pueden utilizar

esa variable (módulos donde la variable es visible)

‡ Se dice que el ámbito v de una variable es global respecto a un módulo M

si M pertenece al ámbito de v, es decir, el módulo M ve esa variable y

puede utilizarla. De esta manera, el ámbito de una variable engloba los

siguientes módulos:

„ El propio módulo M en que ha sido declarada la variable.
„ Cualquier módulo M' incluido en M, ya sean hijos o nietos, siempre y cuando en
M' no haya sido declarada otra variable ni exista ningún parámetro formal cuyo
identificador coincida con el identificador de la variable

‡ Las constantes y variables locales son aquellas constantes y variables que

un módulo necesita por sí mismo, y que no son necesarias en el resto del

programa (no son visibles para módulos superiores)

‡ La residencia en memoria de estas variables y constantes locales se sitúa

en el entorno del módulo, es decir, en la pila, por lo que su tiempo de vida

coincidirá precisamente con el tiempo que dure el módulo en ejecutarse

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 37

Ejercicio ámbito (I)

Considerando el siguiente esqueleto de algoritmo, determinar si las afirmaciones son ciertas

ALGORITMO reglas_ambito
VARIABLES
a,b:ENTERO
FUNCION F1(x:REAL):REAL
VARIABLES b,c:ENTERO
INICIO……………..
FIN_FUNC {F}
PROCEDIMIENTO P1(d:REAL)
VARIABLES e,f:ENTERO
PROCEDIMIENTO P2(a:REAL)
VARIABLES e,g:ENTERO
INICIO…………….. {P2}
FIN_PROC {P2}
INICIO {P1}
FIN_PROC {P1}
INICIO {Módulo principal}
FIN {Módulo principal}
1. La variable a declarada en el algoritmo principal
es una variable global
2. La variable a declarada en el algoritmo principal
es accesible en la función F
3. La variable a declarada en el algoritmo principal
es accesible en el procedimiento P
4. Se puede acceder a la función F1 en el
procedimiento P
5. La variable g es accesible solamente en el
procedimiento P
6. La instrucción b Å c en la parte de instrucciones
de F1 asignaría el valor de c a la variable global
b
7. Se puede usar la instrucción ESCRIBIR(F1(f)) en
la parte de instrucciones de P
8. Se puede usar la instrucción P2(3) en la parte de
instrucciones de P
9. Se puede acceder a la variable f en P
10.Se puede usar la instrucción P2(b) en la parte de
instrucciones del algoritmo principal
11.Se puede usar la instrucción P1(F1(a)) en la
parte de instrucciones del programa principal

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 38

Ejercicio ámbito (II)

‡ Describir la salida del siguiente algoritmo o explicar por qué se produce un error.
ALGORITMO reglas_ambito
FUNCION producto(x:ENTERO):ENTERO
INICIO
DEVOLVER(3*x)
FIN_FUNC
FUNCION suma(x:ENTERO):ENTERO
FUNCION producto(a:ENTERO):ENTERO
INICIO
DEVOLVER(4*a)
FIN_FUNC
INICIO {suma}
DEVOLVER(5+producto(x))
FIN_FUNC {suma}
INICIO {Módulo principal}
ESCRIBIR(producto(2),suma(2))
ESCRIBIR(suma(producto(3)),producto(suma(3))
FIN {Módulo principal}

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 39

Ejercicio ámbito (III)

‡ Describir la salida del siguiente algoritmo o explicar por qué se produce un

error.

ALGORITMO reglas_ambito

VARIABLES num,i:ENTERO

PROCEDIMIENTO P(VAR num:ENTERO)

INICIO

i Å i+

num Å 2*num

FIN_PROC

INICIO {Módulo principal}

i Å 1

num Å 3

MIENTRA i<=4 HACER

ESCRIBIR(i,num)

P(num)

ESCRIBIR(i,num)

i Å i+

FIN_MIENTRAS

FIN {Módulo principal}

Metodología y Tecnología de la Programación I - Tema 4. Programación Estructurada y Modular 40

Ejercicio ámbito (IV)

‡ Describir la salida del siguiente algoritmo o explicar por qué se produce un

error.

ALGORITMO reglas_ambito

VARIABLES num,mitad:ENTERO

PROCEDIMIENTO doble(VAR num:ENTERO)

INICIO

num Å 2*num

FIN_PROC

INICIO {Módulo principal}

num Å 4

mitad Å 2

ESCRIBIR(mitad)

ESCRIBIR(num)

doble(mitad)

ESCRIBIR(mitad)

ESCRIBIR(num)

FIN {Módulo principal}