Programación estructurada en C. Empleo de Funciones

Objetivos

Realización

Código Fuente

Test de Autoevaluación

Cuestiones


TITULO: PROGRAMACION ESTRUCTURADA EN C. EMPLEO DE FUNCIONES.

 

 

Objetivos

En esta práctica se pretende, como objetivo fundamental, que el alumno utilice la herramienta más potente que tiene el lenguaje de programación C para realizar una programación estructurada, las funciones. Para ello se ha elegido un programa que mediante la implementación de varios menús, pueda estructurarse con el empleo y diseño de varias funciones.

 

Realización

Para la realización de la práctica se ha pensado en un programa que llamaremos "areas" (extensiones .c .o y .exe) que calcule las áreas, perímetros o ambos, de los siguientes polígonos: Cuadrado, Triángulo equilátero, círculO, Hexágono y Sector circular.

El programa presentará como primera pantalla (menú principal) la opción de elegir uno de los polígonos antedichos además de la opción de Finalizar. Este menú puede ser del estilo que se presenta a continuación:

 

Quiere hacer cálculos sobre el polígono:

Cuadrado

Triángulo equilátero

circulO

Hexágono

Sector circular

Finalizar

Elige la opción por la letra que aparece en mayúscula =>

 

 

Una vez seleccionado el polígono correspondiente, aparecerá un subsiguiente menú del estilo:

 

OPCION: "Sector circular"

Quiere hallar el

Area,

Perímetro,

aMbos,

Volver al menu principal

Elija la opción por su letra en mayúscula =>

 

 

 

 

A continuación, una vez seleccionada una de las anteriores opciones, el programa pedirá los datos necesarios para realizar el cálculo solicitado. Un ejemplo de la ejecución puede ser:

OPCION: "Sector circular"

Quiere hallar el

Area,

Perímetro,

aMbos,

Volver al menu principal

Elija la opción por su letra en mayúscula => a (selección introducida la a)

Introduce el lado o en su caso el radio => 1 (dato introducido el 1)

Introduce el ángulo (radianes) del sector circular =>3.14 (dato introducido 3.14 rad.)

El área del Sector circular es: 1.57 (respuesta del programa 1.57)

Para continuar pulse una tecla...

 

 

 

En esta situación, al pulsar una tecla volveremos al menú de OPCION: "Sector circular" en que nos encontrábamos anteriormente por si se desea realizar un nuevo cálculo sobre el polígono ya seleccionado. En caso contrario, se elegirá la opción de volver al menú principal para cambiar de polígono, o bien finalizar la ejecución del programa.

Ahora se presenta una nueva ejecución completa del programa "areas":

 

Quiere hacer cálculos sobre el polígono:

Cuadrado

Triangulo equilatero

circulO

Hexagono

Sector circular

Finalizar

Elige la opción por la letra que aparece en mayúscula => o

 

 

Nuevo menú que aparecerá:

 

OPCION: "círculO"

Quiere hallar el

Area,

Perímetro,

aMbos,

Volver al menu principal

Elija la opción por su letra en mayúscula => m

Introduce el lado o en su caso el radio => 1

El área del circulO es: 3.14

El perímetro del circulO es: 6.28

Para continuar pulse una tecla...

 

 

A continuación, para finalizar, después de pulsar una tecla retornamos al menú OPCION: "círculO" donde seleccionaríamos la opción de volver al menú principal y en este seleccionaríamos la opción de finalizar:

 

 

Quiere hacer cálculos sobre el polígono:

Cuadrado

Triangulo equilatero

circulO

Hexagono

Sector circular

Finalizar

Elige la opción por la letra que aparece en mayúscula => f

Programa finalizado.

 

 

Como posibles funciones estándar a utilizar en el programa tendríamos:

 

#include <stdio.h>: las funciones ya conocidas: printf(), scanf(), getchar()...

#include <ctype.h>: int toupper(int c); devuelve el valor de c en mayúscula. Si ya era mayúscula retorna el mismo carácter, si era minúscula lo retorna en mayúscula. La función complementaria sería tolower.

 

#include <conio.h>: int getch(); obtiene carácter desde teclado sin esperar el retorno de carro. No se guarda en bufer de teclado ni se presenta en pantalla.

clrscr(); borra la pantalla completa, para una nueva presentación.

 

#include <math.h>: double sqrt(double x); calcula raiz cuadrada de x.

double pow(double base,double exponente); calcula base elevado a exponente.

 

Por último, quizás sea necesaria la utilización de una cadena de caracteres. Para ello saber que se puede:

Definir como: char cadena[20]; /*reserva de espacio por 20 caracteres*/

Inicializar como: char cadena[]="Hexágono"; /*se establece la cadena con la secuencia indicada*/

Introducirla como parámetro de una función: funcion(cadena);

El prototipo de la función anterior sería: tipo funcion(char cadena[] );

 

 

Nota: Cuando finaliza una función se saldrá de la misma utilizando el return correspondiente. No se podrá salir invocando al ‘main’.

 

Codigo Fuente Esqueleto de Ejemplo

El siguiente código fuente se entrega a modo de ejemplo que el alumno deberá ampliar, mejorar, estructurar y comentar adecuadamente.
areas.c

Cuestiones

 

1)Enumera todas las funciones que has utilizado describiendo la tarea de cada una de ellas de forma muy breve.

2)Especifica qué parámetros recibe y devuelve cada una de las funciones implementadas.

3)¿Alguna función llama a otra función? ¿Cuántas y cuáles?.

4)¿Qué nivel de anidamiento, mayor, tienes en las llamadas a tus funciones?.

Nota: El "main" también es una función (la principal).