Vous êtes sur la page 1sur 7

Universidad Nacional Abierta y a Distancia UNAD

CURSO: 301304 Introduccin a la Programacin


Docente: Mirian Benavides R.

Tema: Funciones
EJERCICIOS DE APOYO

A continuacin encontrar 2 programas, el primero no incluye funciones diseadas por el
programador, en el segundo programa se desarrollo el mismo ejercicio, pero incluyendo funciones
diseadas por el programador, para que analicen la diferencia en la codificacin.

Ustedes pueden seleccionar la codificacin de cada programa y copiarla en el entorno de
desarrollo para compilarlo y ejecutarlo, as pueden visualizar los resultados.

Les aclaro que los programas fueron desarrollados y compilados en Borland C++ 5.02, por lo tanto
si los ejecutan en Dev C++ algunas funciones generarn errores.

Les recomiendo analizar muy bien cada sentencia y tratar de cambiarlo para mejorarlo. Recuerden
que la programacin slo se puede aprender practicando.


PROGRAMA 1: SIN FUNCIONES DISEADAS POR PROGRAMADOR

#include <stdio.h>
#include <conio.h>

main()
{ int op, a,b,c, resultado;
do
{ clrscr();
gotoxy(5,3); printf("PROGRAMA SIN UTILIZAR FUNCIONES DEL PROGRAMADOR");
gotoxy(30,5); printf("MENU");
gotoxy(10,7); printf("1. Suma");
gotoxy(10,9); printf("2. Resta");
gotoxy(10,11); printf("3. Multiplicacion");
gotoxy(10,13); printf("4. Division");
gotoxy(10,15); printf("5. Salir");
gotoxy(5,18); printf("Elija el numero de la operacion a realizar : ");
gotoxy(50,18); scanf("%d", &op);
switch(op)
{ case 1: clrscr();
gotoxy(15,5); printf("SUMA DE 3 NUMEROS POSITIVOS");
gotoxy(5,8); printf("Digite el primer numero : ");
gotoxy(33,8); scanf("%d",&a);
while(a<0)
{ gotoxy(10,20); printf("Numero incorrecto, se requiere un numero positivo");
gotoxy(33,8); printf(" ");
gotoxy(33,8); scanf("%d",&a);
}
gotoxy(10,20); printf(" ");
gotoxy(5,10); printf("Digite el segundo numero : ");
gotoxy(33,10); scanf("%d",&b);
while(b<0)
{ gotoxy(10,20); printf("Numero incorrecto, se requiere un numero positivo");
gotoxy(33,10); printf(" ");
gotoxy(33,10); scanf("%d",&b);
}
gotoxy(10,20); printf(" ");
gotoxy(5,12); printf("Digite el tercer numero : ");
gotoxy(33,12); scanf("%d",&c);
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
while(c<0)
{ gotoxy(10,20); printf("Numero incorrecto, se requiere un numero positivo");
gotoxy(33,12); printf(" ");
gotoxy(33,12); scanf("%d",&c);
}
gotoxy(10,20); printf(" ");
resultado=a+b+c;
gotoxy(10,14); printf("%d + %d + %d = %d",a,b,c,resultado);
gotoxy(5,17); printf("Digite una tecla para volver al menu ");
getch();
break;
case 2: clrscr();
gotoxy(25,5); printf("RESTA");
gotoxy(5,8); printf("Digite el primer valor: ");
gotoxy(33,8); scanf("%d",&a);
gotoxy(5,10); printf("Digite el segundo valor: ");
gotoxy(33,10); scanf("%d",&b);
resultado=a-b;
gotoxy(15,14); printf("%d - %d = %d",a,b,resultado);
gotoxy(20,16); printf("DIGITE UNA TECLA PARA CONTINUAR ...");
getch();
break;
case 3: clrscr();
gotoxy(25,5); printf("MULTIPLICACION");
gotoxy(5,8); printf("Digite el primer valor: ");
gotoxy(33,8); scanf("%d",&a);
gotoxy(5,10); printf("Digite el segundo valor: ");
gotoxy(33,10); scanf("%d",&b);
gotoxy(5,12); printf("Digite el tercer valor: ");
gotoxy(33,12); scanf("%d",&c);
resultado=a*b*c;
gotoxy(10,15); printf("%d x %d x %d = %d",a,b,c,resultado);
gotoxy(10,17); printf("Digite una tecla para continuar");
getch();
break;
case 4: clrscr();
gotoxy(15,5); printf("DIVISION");
gotoxy(5,8); printf("Digite el primer valor : ");
gotoxy(33,8); scanf("%d",&a);
gotoxy(5,10); printf("Digite el segundo valor : ");
gotoxy(33,10); scanf("%d",&b);
while(b==0)
{ gotoxy(10,15); printf("Valor incorrecto, la division entre 0 no es posible");
gotoxy(10,16); printf("Digite un nuevo valor");
gotoxy(33,10); printf(" ");
gotoxy(33,10); scanf("%d",&b);
gotoxy(10,15); printf(" ");
gotoxy(10,16); printf(" ");
}
resultado=a/b;
gotoxy(10,14); printf("%d / %d = %d",a,b,resultado);
gotoxy(10,16); printf("Digite una tecla para continuar");
getch();
break;
case 5: clrscr();
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
gotoxy(20,15); printf("Fin del programa");
gotoxy(20,17); printf("Digite una tecla para salir");
getch();
break;
default: gotoxy(10,20);printf("No existe esa opcion");
gotoxy(10,21); printf("Digite una tecla para continuar");
getch();
gotoxy(50,18); printf(" ");
}
} while((op!=5));
}

EXPLICACIN PROGRAMA 1

1. El problema que resolvemos es realizar las 4 operaciones bsicas (suma, resta, multiplicacin
y divisin), con cierta cantidad de nmeros y ciertas condiciones establecidas.
Suma: sumar 3 nmeros digitados por el usuario, con la condicin de que sean
positivos.
Resta: restar 2 nmeros digitados por el usuario y mostrar la respuesta.
Multiplicar: multiplicar 3 nmeros digitados por el usuario
Divisin: dividir 2 nmeros digitados por el usuario, con la condicin de que el segundo
nmero no puede ser cero (0), porque es un error dividir entre cero (0).

2. El lenguaje C tiene infinidad de funciones propias del lenguaje. En la codificacin he incluido
algunas, que aunque sencillas son muy tiles en el momento de presentar la informacin en
pantalla. Para utilizarlas se debe incluir la librera conio.h
clrscr(); se utiliza para limpiar pantalla (no funciona bien en Dev C++)
gotoxy(); se utiliza para ubicar la informacin el cursor en unas coordenadas
especficas de la ventana (no funciona bien en Dev C++).
La ventana de presentacin de resultados est conformada por 24 filas y 80 columnas
aproximadamente. En su sintaxis se debe incluir 2 argumentos de tipo numrico
entero, pueden utilizar directamente los valores o trabajar con variables; el primero
corresponde a la posicin de la columna y el segundo a la posicin de la fila.
Ej. 1: gotoxy(5,10); printf(Bienvenidos); //escribe en la columna 5, fila 10 la palabra
Bienvenidos.
Ej. 2: int f=8, c=10; //definimos 2 variables y les asignamos valores
gotoxy(c,f); printf(Programacin); //escribe en la columna 10, fila 8 la palabra
programacin.





PROGRAMA 2: CON FUNCIONES DISEADAS POR PROGRAMADOR

#include <stdio.h>
#include <conio.h>

int ValidarNumeroPositivo(int);
void suma();
int resta(int,int);
void multiplicacion(int,int,int);
void division();

main()
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
{ int op, rtaResta, r1,r2, m1,m2,m3;
do
{ clrscr();
gotoxy(5,3); printf("Bienvenido a un sencillo programa de las operaciones basicas ");
gotoxy(30,5); printf("MENU");
gotoxy(10,7); printf("1. Suma");
gotoxy(10,9); printf("2. Resta");
gotoxy(10,11); printf("3. Multiplicacion");
gotoxy(10,13); printf("4. Division");
gotoxy(10,15); printf("5. Salir");
gotoxy(5,18); printf("Elija el numero de la operacion a realizar : ");
gotoxy(50,18); scanf("%d", &op);
switch(op)
{ case 1: suma();
break;
case 2: clrscr();
gotoxy(25,5); printf("RESTA");
gotoxy(5,8); printf("Digite el primer valor: ");
gotoxy(33,8); scanf("%d",&r1);
gotoxy(5,10); printf("Digite el segundo valor: ");
gotoxy(33,10); scanf("%d",&r2);
rtaResta=resta(r1,r2);
gotoxy(15,14); printf("%d - %d = %d",r1,r2,rtaResta);
gotoxy(20,16); printf("DIGITE UNA TECLA PARA CONTINUAR ...");
getch();
break;
case 3: clrscr();
gotoxy(25,5); printf("MULTIPLICACION");
gotoxy(5,8); printf("Digite el primer valor: ");
gotoxy(33,8); scanf("%d",&m1);
gotoxy(5,10); printf("Digite el segundo valor: ");
gotoxy(33,10); scanf("%d",&m2);
gotoxy(5,12); printf("Digite el tercer valor: ");
gotoxy(33,12); scanf("%d",&m3);
multiplicacion(m1,m2,m3);
break;
case 4: division();
break;
case 5: clrscr();
gotoxy(20,15); printf("Fin del programa");
gotoxy(20,17); printf("Digite una tecla para salir");
getch();
break;
default: gotoxy(10,20);printf("No existe esa opcion");
gotoxy(10,21); printf("Digite una tecla para continuar");
getch();
gotoxy(50,18); printf(" ");

}
} while((op!=5));
}

int ValidarNumeroPositivo(int z)
{ while(z<0)
{ gotoxy(10,20); printf("Numero incorrecto, se requiere un numero positivo");
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
gotoxy(33,8); printf(" ");
gotoxy(33,8); scanf("%d",&z);
}
return(z);
}

void suma()
{ int a,b,c,resultado;
clrscr();
gotoxy(15,5); printf("SUMA DE 3 NUMEROS POSITIVOS");
gotoxy(5,8); printf("Digite el primer numero : ");
gotoxy(33,8); scanf("%d",&a);
a=ValidarNumeroPositivo(a);
clrscr();
gotoxy(5,8); printf("Digite el segundo numero : ");
gotoxy(33,8); scanf("%d",&b);
b=ValidarNumeroPositivo(b);
clrscr();
gotoxy(5,8); printf("Digite el tercer numero : ");
gotoxy(33,8); scanf("%d",&c);
c=ValidarNumeroPositivo(c);
resultado=a+b+c;
gotoxy(10,14); printf("%d + %d + %d = %d",a,b,c,resultado);
gotoxy(5,17); printf("Digite una tecla para volver al menu ");
getch();
}

int resta(int c,int d)
{ int resResta;
clrscr();
gotoxy(15,5); printf("RESTA");
resResta=c-d;
return(resResta);
gotoxy(10,10); printf("Digite una tecla para continuar");
getch();
}

void multiplicacion(int a, int b, int c)
{ int resMultiplicacion;
clrscr();
resMultiplicacion=a*b*c;
gotoxy(15,5); printf("MULTIPLICACION");
gotoxy(2,10); printf("%d x %d x %d = %d",a,b,c,resMultiplicacion);
gotoxy(10,13); printf("Digite una tecla para continuar");
getch();
}

void division()
{ int n1,n2,resDivision;
clrscr();
gotoxy(15,5); printf("DIVISION");
gotoxy(5,8); printf("Digite el primer valor : ");
gotoxy(33,8); scanf("%d",&n1);
gotoxy(5,10); printf("Digite el segundo valor : ");
gotoxy(33,10); scanf("%d",&n2);
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
while(n2==0)
{ gotoxy(10,15); printf("Valor incorrecto, la division entre 0 no es posible");
gotoxy(10,16); printf("Digite un nuevo valor");
gotoxy(33,10); printf(" ");
gotoxy(33,10); scanf("%d",&n2);
gotoxy(10,15); printf(" ");
gotoxy(10,16); printf(" ");
}
resDivision=n1/n2;
gotoxy(10,14); printf("%d / %d = %d",n1,n2,resDivision);
gotoxy(10,16); printf("Digite una tecla para continuar");
getch();
}

EXPLICACIONES DEL PROGRAMA 2


1. A diferencia del primer ejercicio, ahora utilizaremos funciones diseadas por el programador
que nos permiten utilizar un bloque de cdigo que se escribi una sola vez y que podemos
reutilizar en diferentes partes del programa, sin necesidad de volver a escribirlo, simplemente
llamamos la funcin utilizando la sintaxis adecuada.
Otra ventaja de utilizar funciones definidas por el programador es que podemos estructurar y
organizar mejor el programa, as la funcin principal no tendr toda la codificacin, sino que el
programa estar dividido en partes.


2. Explicacin de las funciones diseadas por el programador.
Funcin para validar que el nmero digitado por el usuario sea positivo. Si el usuario
digita un nmero negativo el programa deber informarle del error y solicitarle que
digite nuevamente el nmero. Esta funcin se utilizar 3 veces para el caso de la
suma, pero la codificacin necesaria se escribe 1 sola vez y cuando la necesitemos,
simplemente la volvemos a llamar.
int ValidarNumeroPositivo(int);
La funcin ValidarNumeroPositivo, recibe como argumento un valor entero, en su
interior lo valida y devuelve el valor entero siempre y cuando sea positivo

En la funcin suma, recibimos 3 valores enteros, cada vez que el usuario digita un
nmero, llamamos a la funcin ValidarNumeroPositivo para que realice el trabajo de
verificar que sea positivo.
Cuando los valores han sido debidamente comprobados los sumamos e imprimimos el
resultado.
La funcin suma no recibe parmetros, ni tampoco devuelve valores, por eso se define
de tipo void y dentro de los parntesis no se indica ningn tipo de variable.
Dentro de la funcin se realizan las operaciones y se imprimen resultados.
void suma();

En la funcin resta, los dos datos se solicitan en la funcin principal main() y se enva a
la funcin resta. En la funcin resta, se realiza la operacin y el resultado se enva a la
funcin main() para que all se imprima. Se debe indicar que tipo de datos recibe y que
tipo de dato enva despus de ejecutarse.
Int resta(int, int);

En la funcin multiplicacin, se reciben 3 datos enteros, enviados desde la funcin
principal main() se multiplican y se imprimen los resultados dentro de la funcin
Universidad Nacional Abierta y a Distancia UNAD
CURSO: 301304 Introduccin a la Programacin
Docente: Mirian Benavides R.

Tema: Funciones
multiplicacin. Como no enva resultados a la funcin principal main(), se ha definido
de tipo void
void multiplicacin (int, int, int)

En la funcin divisin no se reciben datos desde la funcin principal main(), ni tampoco
se retorna ningn dato a la funcin principal main()
As que todo se realiza dentro de la funcin divisin, esto es, recibir 2 nmeros enteros,
validar que el segundo nmero sea diferente de 0, realizar la divisin e imprimir el
resultado. Como la funcin divisin no devuelve resultados a la funcin principal
main(), entonces se define como tipo void y como tampoco recibe datos desde la
funcin principal main, entonces no utiliza parmetros.
void divisin()

3. Organizacin de la codificacin.
Incluir las libreras a utilizar, en este caso slo utilizamos las libreras:
o stdio.h que nos permite trabajar las funciones: printf() y scanf()
o conio.h que nos permite trabajar las funciones getch(), clrscr() y gotoxy()
Declaracin del prototipo de las funciones que vamos a desarrollar:
o int ValidarNumeroPositivo(int);
o void suma();
o int resta(int,int);
o void multiplicacion(int,int,int);
o void division();
Funcin principal main() que es indispensable en todo programa de lenguaje C
o Declaramos variables
o Realizamos un ciclo para el men, de tal manera que cada vez que se ejecute
una opcin, el programa vuelva a mostrar el men de opciones hasta que el
usuario elija la opcin 5 para terminar el programa. El ciclo se ejecutar
mientras el usuario digite valores diferentes a 5 (con 5 termina).
o Tambin utilizamos switch para indicar las tareas que se deben realizar en
cada opcin del men
Opcin 1: llamamos a la funcin suma()
Opcin 2: solicitamos 2 nmeros y los enviamos a la funcin resta.
Como la funcin resta devuelve un valor, entonces debemos recibir
ese dato en una variable, en este caso, de tipo int, porque as se
declaro al inicio del programa. El valor que nos retorna la funcin resta
lo imprimimos.
Opcin 3: solicitamos 3 datos de tipo entero y los enviamos a la
funcin multiplicacin.
Opcin 4: llamamos a la funcin divisin.
Opcin 5: informamos que es el fin del programa y lo terminamos.
default: si el usuario digita un valor diferente a las opciones del men
se le informa y se borra la opcin digitada para que digite nuevamente
el nmero correcto
Finalizamos la funcin main()
Desarrollo de las funciones diseadas por el programador
o Codificacin de la funcin: int ValidarNumeroPositivo(int z)
o Codificacin de la funcin: void suma()
o Codificacin de la funcin: int resta(int c, int d)
o Codificacin de la funcin: void multiplicacin(int a, int b, int c)
o Codificacin de la funcin: void division()

Vous aimerez peut-être aussi