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.
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()