26.12.2014 Views

Programación Estructurada - UNPA

Programación Estructurada - UNPA

Programación Estructurada - UNPA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Universidad del Papaloapan<br />

Materia:<br />

<strong>Programación</strong> <strong>Estructurada</strong><br />

Tema:<br />

5. Modulos<br />

(funciones y procedimientos)<br />

Profesor:<br />

M. C. Bertha López Azamar<br />

Tuxtepec, Oaxaca.<br />

Octubre/2005


Modulos (funciones y procedimientos)<br />

Introducción<br />

Objetivos:<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Conocer la estructura general de un<br />

programa estructurado en el Lenguaje C y<br />

los conceptos de funciones.<br />

Comprender el ámbito de las variables y el<br />

paso de parámetros al estructurar<br />

módulos.<br />

Manejar funciones y el correspondiente<br />

paso de parámetros, permitiendo la<br />

descomposición sistemática del problema<br />

al programar.<br />

2<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Esquema general de un programa:<br />

programa secuencia de acciónes que manipulan un<br />

conjunto de datos.<br />

Un lenguaje de programación combina elementos<br />

básicos para formar la<br />

estructura del programa.<br />

Generalmente un programa tendrá dos bloque<br />

principales:<br />

Bloque de declaraciones: Se especifican todos los<br />

elementos que utiliza el programa (variables,<br />

constantes, arreglos, registros, etc.).<br />

Bloque de instrucciones: Constituido por el conjunto<br />

de operaciones que se han de realizar para la<br />

obtención de los resultados deseados.<br />

3<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Esquema general de un programa:<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

En C:<br />

• Directivas del preprocesador<br />

• Declaraciones<br />

• constantes<br />

• variables globales<br />

• declaraciones de<br />

funciones (Prototipos<br />

de funciones)<br />

•Bloque de funciones<br />

• función principal main()<br />

• funciones del usuario<br />

Cada función se sitúa entre las<br />

{ y } y contiene:<br />

- cabecera<br />

- declaración de<br />

variables locales<br />

- cuerpo de la función<br />

(bloque de instrucciones)<br />

4<br />

En Pascal:<br />

• Cabecera:<br />

(sentencia PROGRAM para<br />

escribir el nombre del<br />

programa) (es opcional)<br />

• Declaraciones:<br />

- de constantes<br />

- de tipos<br />

- de variables<br />

- de procedimientos y<br />

funciones<br />

• Cuerpo del programa:<br />

(situado entre las<br />

palabras BEGIN y<br />

END)<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Subprogramas o módulos<br />

La programación estructurada sigue el método de<br />

programación descendente (divide y vencerás)<br />

(Joyanes, 1993).<br />

La lógica de la programación modular se basa en que<br />

resulta más fácil escribir un buen programa si se divide<br />

en trozos pequeños (O’Brien & Nameroff, 1993).<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Los programas modulares son más fáciles de escribir y<br />

mantener ya que cada procedimiento o función puede<br />

ser escrito y probado independientemente del programa<br />

principal.<br />

5<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Concepto de procedimiento<br />

• son subprogramas que ejecutan un proceso<br />

específico.<br />

• es una colección de sentencias agrupadas juntas<br />

para realizar una tarea concreta.<br />

Los procedimientos se referencias por su nombre y<br />

actúan como si fuesen sentencias u ordenes.<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Programa<br />

principal<br />

Procedimiento1<br />

Procedimiento2<br />

6<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Un procedimiento puede devolver muchos valores al<br />

salir de el, un valor o ningún valor, en forma de lista<br />

de parámetros.<br />

Ningún valor esta asociado con<br />

el nombre del procedimiento, por<br />

lo que, no puede ocurrir en una<br />

expresión.<br />

En realidad, los procedimientos ya se conservan sólo<br />

en algunos lenguajes procedimentales como Pascal.<br />

En otros lenguajes, sólo se implementan funciones y<br />

los procedimientos son equivalentes a funciones que<br />

no devuelven valor (En C, se denomina función que<br />

devuelve un valor de tipo void).<br />

7<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Ejemplo de un programa en pascal que ocupa un<br />

procedimiento :<br />

Program DemoProc;<br />

var:<br />

X, Y : integer;<br />

Procedure Resta;<br />

begin<br />

X := X – 1;<br />

Y := Y – 1;<br />

end;<br />

Begin<br />

end;<br />

X := 5;<br />

Y := 10;<br />

Resta;<br />

{nombre del procedimiento}<br />

{bloque del procedimiento}<br />

{llamada al procedimiento}<br />

8<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Modulos (funciones y procedimientos)<br />

Concepto de función<br />

• Es una colección independiente de declaraciones y<br />

sentencias.<br />

• Es un segmento independiente de código fuente<br />

diseñado para realizar una tarea específica.<br />

Programa<br />

principal<br />

Función1<br />

Función2<br />

Es por tanto, un bloque de código discreto.<br />

Por lo que una función define un ámbito de bloque.<br />

Lo que significa que el código de una función es<br />

privado a esa función, y no se puede acceder a él<br />

mediante una instrucción de otra función, a menos<br />

que se haga a través de una llamada a esa función.<br />

9<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

En términos generales, no se debe definir una<br />

función dentro de otra función.<br />

Una de las características principales es:<br />

Una función devuelve un<br />

valor específico, por lo que<br />

puede ocurrir dentro de<br />

una expresión.<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Programa<br />

principal<br />

datos<br />

datos<br />

datos<br />

datos<br />

Función1<br />

10<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Por ejemplo de función en Pascal:<br />

Program DemoProc;<br />

var:<br />

Z: real;<br />

FUNCTION Area (R: Real) : Real;<br />

CONST<br />

Pi = 3,141592;<br />

BEGIN<br />

Area := Pi * R * R<br />

END;<br />

Begin<br />

End;<br />

{llamada a la función}<br />

Z := Area(25);<br />

Dentro del cuerpo de la<br />

función debe tener una<br />

asignación en alguna<br />

parte del cuerpo cuyo<br />

identificador de la<br />

izquierda es el nombre<br />

de la función, y el valor<br />

de la derecha del signo<br />

igual, es el valor de una<br />

variable o el resultado<br />

de una expresión del<br />

tipo adecuado y es el<br />

resultado que devuelve<br />

una función.<br />

11<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Por ejemplo de función en C:<br />

#define Pi 3.141592<br />

float A;<br />

float Area(float R);<br />

void main()<br />

{<br />

A = Area(25);<br />

}<br />

float Area(float R)<br />

{<br />

float a;<br />

a = Pi * R * R;<br />

return(a);<br />

}<br />

//prototipo<br />

//llamada a función<br />

//definición de función<br />

12<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Ámbito de variables<br />

Ámbito de las variables<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

El programa contiene variables que son declaradas<br />

fuera de cualquier bloque de función, y son llamadas<br />

variables globales.<br />

El poder organizar un programa en varios<br />

subprogramas implica el manejo de variables en cada<br />

bloque de código, conocidas como variables locales.<br />

13<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Variables globales:<br />

•Se declaran fuera de una función.<br />

•Se conocen y usan en cualquier parte del código<br />

del programa.<br />

•Si una local tiene el mismo nombre, todas las<br />

referencias a ese nombre de variable dentro<br />

de la función son sobre la variable local y no<br />

tienen efecto sobre la variable global.<br />

•mantienen sus valores durante toda la ejecución del<br />

programa.<br />

•Comparten información de diferentes subprogramas,<br />

sin una correspondiente entrada en la lista de<br />

parámetros.<br />

•El almacenamiento se hace en una región de<br />

memoria fija establecida para este propósito<br />

por el compilador.<br />

14<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables locales:<br />

• Se declaran dentro de un bloque de código,<br />

comúnmente en una función.<br />

• Se usan sólo por instrucciones que estén<br />

dentro del bloque de código.<br />

• No se conocen fuera de su propio bloque de<br />

código.<br />

• Otra variable en otro bloque de código puede<br />

llamarse igual, y no tiene nada que ver<br />

con ella.<br />

• Sólo existen mientras se está ejecutando el<br />

bloque en el que son declaradas.<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

15<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Ambito de las variables<br />

Variables globales<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Variables<br />

locales<br />

datos<br />

datos<br />

Variables<br />

locales<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Función<br />

datos<br />

Paso<br />

de<br />

parámetros<br />

datos<br />

Función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

16<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Paso de parámetros<br />

Modulos (funciones y procedimientos)<br />

El objetivo del uso de funciones es poder modularizar<br />

el código, permitiendo con ello simplificar la<br />

implementación de la solución del problema.<br />

Para permitir que las funciones sean generales, y<br />

puedan manipular valores o referencias de valores<br />

externos, se emplea el paso de parámetros.<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

17<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Los parámetros formales:<br />

• reciben los valores de los argumentos que se<br />

pasan a la función,<br />

• se comportan como cualquier otra variable<br />

local, por lo que igualmente tienen la<br />

misma característica de destruirse al<br />

salir de la función.<br />

Básicamente puede realizarse el paso de<br />

parámetros de dos formas :<br />

• Por valor<br />

• Por referencia<br />

18<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

El paso por valor, copia el valor de un argumento<br />

en el parámetro formal de la subrutina. Los<br />

cambios realizados sobre el parámetro no<br />

afectan al argumento.<br />

{<br />

A=5;<br />

B=7;<br />

Funcion( A, 18, B*3+4)<br />

}<br />

Argumentos<br />

(parámetros actuales –<br />

pueden ser variables,<br />

constantes, o expresiones)<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

5 18 25<br />

5 18 25<br />

Funcion(int x, int y, int z)<br />

{<br />

}<br />

Copias de valores<br />

parámetros formales<br />

19<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

La llamada por referencia, copia la dirección del<br />

argumento en el parámetro. Dentro de la<br />

subrutina se usa la dirección para acceder<br />

realmente al argumento usado en la<br />

llamada, con lo que los cambios sufridos por<br />

el parámetro se reflejan en el argumento.<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

{<br />

}<br />

A=5;<br />

B=7;<br />

Funcion( &A, &B);<br />

argumentos<br />

(parámetros actuales –<br />

deben ser variables)<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

direcciones de memoria<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Funcion(int *x, int *y)<br />

{<br />

}<br />

parámetros formales<br />

(variables de tipo<br />

puntero)<br />

20<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>


Modulos (funciones y procedimientos)<br />

Introducción<br />

Datos y tipos<br />

de datos<br />

Variable y<br />

constantes<br />

Operadores<br />

aritméticos y<br />

lógicos<br />

Expresiones<br />

Concepto de<br />

asignación<br />

Esquema<br />

general de<br />

un programa<br />

Concepto de<br />

función<br />

Concepto de<br />

procedimiento<br />

Variables<br />

globales y<br />

locales<br />

Paso de<br />

parámetros<br />

Referencias:<br />

1. Antonakos, James L. & Kenneth C. Mansfield Jr.;<br />

<strong>Programación</strong> <strong>Estructurada</strong> en C; Prentice Hall; 1997.<br />

2. Cevallos, Francisco Javier; Enciclopedia del Lenguaje C; Ed.<br />

Alfaomega; 1997.<br />

3. Deitel, H. M. & Deitel, P. J.; Como programar en Java; Pearson<br />

Educacion; 1998.<br />

4. Gottfried, Byron; <strong>Programación</strong> en C; Mc Graw Hill; Segunda<br />

edición; 1997.<br />

5. Joyanes Aguilar, Luis; Turbo Pascal 6.0; Mc Graw Hill; 1993.<br />

6. Lipschutz, Seymour; Estructura de datos; Mc Graw Hill; 1992.<br />

7. O’Brien, Stephen K & Nameroff, Steve; Turbo Pascal 7; Mc<br />

Graw Hill; 1993.<br />

8. Schildt, Herbert; Manual de referencia C; Mc Graw Hill;<br />

Cuarta edición; 2001.<br />

9. http://lenguajes-de-programacion.com/programacion.shtml<br />

21<br />

M. C. Bertha López Azamar <strong>Programación</strong> <strong>Estructurada</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!