Está en la página 1de 19

Programación Estructurada Capítulo 3

Capítulo III

49 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

3.- Programación Modular.


Cuando la tarea de programación a desarrollar va más allá de unas cuantas líneas de
código, es conveniente la utilización de módulos, es decir, partes más pequeñas que el
programa original y que, por su menor tamaño, hacen más eficiente el proceso de
desarrollo de un sistema mediano o grande. En lenguaje C, los módulos se denominan
funciones.

Es práctica común de programación la combinación de funciones previamente


incluidas en bibliotecas con funciones definidas por el programador. Los sistemas de
programación que se apegan al estándar ANSI C incluyen una biblioteca estándar, por
lo general, documentada.

Algunas bibliotecas incluidas en el estándar ANSI C son: stdio.h, stdlib.h, math.h,


ctype.h, string.h, time.h, entre otras.

3.1 Reusabilidad.
Es la capacidad que tienen las funciones de ser utilizadas en diferentes programas.
Gracias a la reusabilidad, los programas se pueden desarrollar de una manera más
eficiente. El uso de las funciones incluidas en la biblioteca estándar ANSI C, es un
ejemplo de reusabilidad en lenguaje C.

3.2 Abstracción.

Es la condición de poder utilizar una función conociendo su nombre y sabiendo qué


datos se le deben entregar y qué datos se espera recibir de ésta, sin tener que saber
cómo la función realiza su trabajo internamente. Esta capacidad de las funciones
permite pensar en ellas como “cajas negras” que realizan determinadas operaciones.

50 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Las relaciones entre los módulos de los programas se pueden representar mediante
diagramas jerárquicos, por ejemplo, la Figura 1:

main

función 1 función 2 función 3

función 4 función 5

Figura 1.- Diagrama de Estructura de Módulos (DEM)

Desde el punto de vista de la abstracción, el programa principal, es decir, la función


main, invoca a las funciones 1, 2 y 3 en su oportunidad, sin importar cómo cada una de
ellas realiza su tarea. Adicionalmente, la función 1 invoca a las funciones 4 y 5 para
realizar su tarea, sin tener que saber cómo operan internamente.

3.3.- Funciones definidas por el programador.


Las funciones definidas por el programador necesitan tener un nombre, declararse en
un prototipo, definirse en una sección de código aparte del módulo principal main y
definir un valor de retorno.

Nombre de la función.- es cualquier identificador válido en lenguaje C (referirse al


documento “Apuntes de lenguaje C”, pág. 1).

Prototipo de la función.- es un enunciado contenido en la función main que informa al


compilador que la función main va a utilizar la función que se está definiendo. Este
enunciado de prototipo de función puede incluirse en la sección de directrices del
preprocesador o en la sección de declaración de variables. El prototipo de función
debe indicar el tipo de valor que la función retorna, el nombre de la función y el tipo de
parámetro(s) que la función espera, esto último entre paréntesis. Opcionalmente, y
como buena práctica de programación, se recomienda incluir los nombres de los
parámetros y no solo su tipo, de este modo, se da mayor claridad al enunciado.

Es importante hacer notar que para cada función que se vaya a usar en el programa, es
necesario incluir su prototipo de función; por lo tanto, si son muchas las funciones que
51 Facultad de Ingeniería / Veracruz
Programación Estructurada Capítulo 3

se van a usar, conviene tenerlas todas contenidas en un archivo de encabezado (con


extensión .h ). Un ejemplo de esto son todas las funciones matemáticas que se incluyen
en math.h; como programador, puedes generar tus propios archivos de encabezado
incluyendo en estos las funciones que consideres conveniente.

Definición de la función.- la forma general de la definición de una función es la


siguiente:

tipo-de-valor-de-retorno nombre-de-la-función(lista-de-parámetros)
{
declaraciones
enunciados
}

Valor de retorno.- las funciones, por lo general, se invocan, se les pasa uno o varios
parámetros, éstas realizan una o varias operaciones y retornan un valor al módulo o
función que las invocó. Un enunciado return seguido de la variable o expresión con el
valor de retorno es usualmente la culminación de la definición de la función.

Cuando una función no retorna ningún valor, se debe utilizar la palabra void en su
prototipo y en su definición; además, su enunciado de retorno de valor deberá ser
solamente la palabra return seguida de punto y coma (;).

Los parámetros que se escriben en la definición de la función se denominan


parámetros formales, mientras que los parámetros que se escriben en el enunciado de
programa que invoca a la función, se llaman parámetros reales. Cuando se invoca una
función, cada valor de parámetro real se copia al respectivo parámetro formal. La
función usará el valor del parámetro formal para realizar los cálculos
correspondientes.

Los parámetros y variables definidos en una función no son vistos por la función que
los llama, sus valores son usados al interior de la función en que se definen sin afectar
el valor del parámetro que reside en la función o módulo que llama.

52 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Ejercicios:

Ejercicio 7.-

1.- Convertir grados Fahrenheit a Celsius usando una función definida por el
programador; la función usa un valor de retorno.

2.- Análisis de entrada / salida.

En este planteamiento se tendrán como entrada los valores de los grados Fahrenheit
proporcionados por el usuario; la salida serán los grados Celsius usando una función
definida.

Variable en grados F. Resultado en grados C.


Programa

3.- Solución en lenguaje cotidiano.

 Declarar e inicializar variables.


 Declarara prototipo de función
 Inicializar variables “Celsius” y “Fahrenheit”.
 Solicitar al usuario la cantidad de grados a convertir.
 Se invoca la función para que ésta realice la conversión.
 Mostrar el resultado de la conversión.
 Terminar programa.

4.- Diagrama de flujo.-

INICIO

Leer °F

C  (F-32)* 5/9

Desplegar °C

FIN

53 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

5.- Código fuente en lenguaje C:

54 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Ejercicio 8.-

1.- Convertir grados Celsius a Fahrenheit usando una función definida por el
programador; la función usa un valor de retorno.

2.- Análisis de entrada / salida.

En este planteamiento se tendrán como entrada los valores de los grados Celsius
proporcionados por el usuario; la salida serán los grados Fahrenheit usando una
función definida.

Variable en grados C. Resultado en grados F.


Programa

3.- Solución en lenguaje cotidiano.

 Declarar e inicializar variables.


 Declarara prototipo de función
 Inicializar variables “Celsius” y “Fahrenheit”.
 Solicitar al usuario la cantidad de grados a convertir.
 Se invoca la función para que ésta realice la conversión.
 Mostrar el resultado de la conversión.
 Terminar programa.

4.- Diagrama de flujo.-

INICIO

Leer °C

F  C* 9/5 + 32

Desplegar °F

FIN

55 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

5.- Código fuente en lenguaje C:


// convertir grados Celsius a Fahrenheit

56 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Ejercicio 9.-

1.- Uso de una función que recibe un valor, lo despliega, pero no retorna nada al
programa que la llama.

2.- Análisis de entrada / salida.

En este planteamiento se tendrá como entrada un valor entero proporcionado por el


usuario, se invoca la función, se le pasa el parámetro, la función despliega el
parámetro y no retorna nada. .

Valor entero. Resultado sin retorno


Programa

3.- Solución en lenguaje cotidiano.

 Declarar valor entero.


 Imprimir en pantalla el funcionamiento del programa.
 Solicitar al usuario un número entero.
 Se invoca la función y ésta despliega el parámetro.
 La función no retorna valor al programa.
 Finalizar el programa.

57 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

4.- Diagrama de flujo.-

INICIO
Sin retorno

Declarar
entero
variables

FIN
Programa

Entero

Sin retorno

FIN

58 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

5.- Código fuente en lenguaje C:

59 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Ejercicio 10.-

1.- Uso de una función que recibe un valor, lo despliega, lo modifica internamente y lo
despliega de nuevo; la función no retorna nada al programa que la llama, éste vuelve a
desplegar el valor original de la variable.

2.- Análisis de entrada / salida.

En este planteamiento se tendrá como entrada un valor entero proporcionado por el


usuario, se invoca la función, se le pasa el parámetro, la función despliega el
parámetro, lo incrementa y lo vuelve a desplegar; la función no retorna valor alguno
al programa y éste despliega el valor original.

Variable entero. Entero, entero + 1.


Programa

3.- Solución en lenguaje cotidiano.

 Declarar valor entero.


 Imprimir en pantalla el funcionamiento del programa.
 Solicitar al usuario un número entero.
 Se invoca la función y ésta despliega el parámetro.
 La función incrementa el valor y lo despliega de nuevo.
 La función no retorna valor al programa.
 El programa imprime de nuevo el número proporcionado por el usuario.
 Finalizar el programa.

60 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

4.- Diagrama de flujo.-

INICIO Sin retorno (entero)

Declarar entero  entero + 1


variables

entero
Programa
FIN

entero

Sin retorno

entero

FIN

61 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

5.- Código fuente en lenguaje C:

62 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Ejercicio 11.-

1.- Programa que usa un menú con opciones para convertir de litros a galones o de
galones a litros, luego, para hacer la conversión, invoca a funciones definidas por el
programador incluidas como módulos separados del programa principal pero
incluidos en el mismo archivo de código fuente. Estas funciones de conversión, a su
vez, invocan a funciones definidas por el programador, contenidas en un archivo de
biblioteca, llamado misfunc.h, contenido en el directorio c:\lcc\include.

2.-Analisis Entra / Salida

En este planteamiento se tendrá como entrada un valor de elección en litros o galones


proporcionado por el usuario, en el programa se realiza la conversión y en la salida se
tendrá galones o litros dependiendo de la entrada.

litros o galones Programa galones o litros

3.- Solución en lenguaje cotidiano.

 Declarar e inicializar variables.


 Declarara prototipo de función
 Inicializar variables “litros” y “galones”.
 Solicitar al usuario la cantidad de litros o galones a convertir.
 Se invoca la función para que ésta realice la conversión.
 Mostrar el resultado de la conversión.
 Terminar programa.

63 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

4.-Diagrama de flujo:

Programa principal

INICIO

Inicializar Variables, seguir  1


#include <misfunc.h>

l_ to_ g
g_ to_l

F
Seguir = 1

V
Menú

Elección

Bifurcar según elección

elección 1 elección 2 elección 3 default

l_to_g g_to_l Seguir  0 Seguir  0

“servido”

FIN

64 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

l_to_g g_to_l

Declarar Declarar

Litros ? galones ?

litros galones

galones  convlg (litros) litros  convgl (galones)

galones litros

FIN FIN

Biblioteca misfunc.h

65 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

5.- Código fuente en lenguaje C:

66 Facultad de Ingeniería / Veracruz


Programación Estructurada Capítulo 3

Biblioteca misfunc.h

“g_to_l” y “l_to_g”

float convlg(float lit) // definición de la función


{
return lit/3.785; // valor que la función retorna
}
float convgl(float gal) // definición de la función
{
return gal*3.785; // valor que la función retorna
}

67 Facultad de Ingeniería / Veracruz

También podría gustarte