Programación Estructurada - UNPA
Programación Estructurada - UNPA
Programación Estructurada - UNPA
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>