sábado, 21 de diciembre de 2013

Tutoriales de programación en C/C++, Borland y Turbo C.



Aquí dejo un par de tutoriales de programación en lenguaje C muy útiles para problemas concretos, no los encontraras en ningún lado porque yo mismo los hice en base a mi propia experiencia a lo largo de los años que pasé, mientras estaba en la universidad estudiando la carrera de informática. Suerte.

Tutorial 1.- Cómo calcular millones de datos sin que la PC se vuelva loca en c/c++
Tutorial 2.- Cómo hacer que en operaciones el resultado me dé en números decimales y enteros según sea el caso, en la misma operación.

TUTORIAL 1


Para empezar las típicas funciones como int, float sólo permiten la entrada de datos enteros o reales, y aunque el resultado sea un número entero, de todos modos te lanza el valor con decimales, y por cierto no te permite manejar muchos datos, cantidades arriba de los 35,000 en enteros tiene problemas la pc trabajando con C/C++, y las operaciones con float[reales] sólo abarca cantidades menores de 10,000000 dígitos.

Ejemplo:

//programa que al introducir un número lo multiplique por 8
 
#include<conio.h>
#include<stdio.h>
float a,b;               //aquí declaro a las variables reales, pues
main()                  //son más precisas
{
clrscr();
printf("Dame un dato: ");
                 //para empezar aquí cualquier resultado
scanf("%f",&a);             //me va a dar con decimales, aunque sea entero

b=a*8;

printf("\n\n Resultado=%f",b);  //no puedo ponerle que sólo acepte enteros
getch();                         //pues si alguien pone un número real todo
}                                //el resultado sería erróneo.

En este programa aunque el resultado sea entero me va a dar con decimales, por ejemplo si le meto 8 en el programa me va a dar 64.00000 como resultado, y en el caso que le meta el número 0.31 el resultado seria  2.480000, aunque es correcto me da muchos números decimales extras.

Pero acaso hay una manera en la cual yo pueda tratar números enteros y reales al mismo tiempo?, como por ejemplo que al hacer una división si el resultado es un número entero sólo me ponga el número sin decimales, y si en esta misma división el resultado sea un valor real, me ponga el resultado con decimales, tratándolas en la misma operación, y es más, números mayores a 10,000000????

Pues mi respuesta es Sí.

Con la función double puedes declarar variables de esta forma, ya sin preocuparte si son enteros o reales, o números muy largos, ejemplo:

double a,b,x1;

y la manera de asignarles valor en un programa es la siguiente:

printf("Dame un numero: ");
scanf("%lf",&a);   //probablemente lf significa long float

Y para tratar esos datos o concatenarlos es la siguiente:

printf("El numero es: %g",a);

Veamos un ejemplo de cómo utilizar esta función:

//Programa que saca raíz cuadrada con resultado exacto

#include <conio.h>
#include <stdio.h>
#include <math.h>        //para hacer algunas operaciones matemáticas
             //complejas, la librería math.h es la solución

double c,raiz;           //aquí declaro las variables con double

main()
{
clrscr();

printf("Dame un numero: ");
scanf("%lf",&c);            //aquí se declaró la variable como tipo lf

raiz=sqrt(c);              //operación para calcular la raíz

printf("\nEl resultado es: %g",raiz); //para concatenar el resultado se utiliza
                      //la funcion %g en vez de %i o %f
getch();                              //que son las típicas.
}

Por ejemplo una vez que corramos el programa si metemos el número 5, el resultado
nos dará 2.236060, pero si metemos el numero 4 nos dará por resultado 2, y esto
sin decimales.....oralee!!!!!



TUTORIAL 2

1.1 CÓMO CONTROLAR EL NÚMERO DE DECIMALES QUE ME ARROJE UN RESULTADO

2.0 TIPS Y TRUCOS DE CÓMO ESCRIBIR EN C++, Y TÉCNICAS DE ESPACIADO

(1.0) controlar el número de decimales en un resultado
Para empezar, hay ocasiones en que al realizar un programa el resultado de alguna operación te da con muchísimos decimales(alrededor de 8), y en algunos casos sólo necesitamos de cifras con pocos decimales de precisión para que nos cuadre. Existen funciones en el lenguaje c/c++ que no puede tratar cantidades con muchos decimales, por ejemplo ésta: x=a*x2*x2+b*x2+c; para resolver este problema se utiliza esta función en el printf (%.4f)(%.4g), cual quiera de los 2 casos funciona si fueran cantidades reales float, o compuestas double. Lo que está diciendo arriba es que nuestra operación tendrá 4 decimales de precisión en el resultado, ejemplo:


//Programa que realiza una división de 2 números cualquiera (enteros o reales)
// con 4 decimales de precisión.

#include <conio.h>
#include <stdio.h>
double a,b,resultado;
main()
{
clrscr();
printf("Dame numero uno y dos: ");
scanf("%lf %lf",&a,&b);
resultado=a/b;
printf("\n\nSolucion de A entre B es:%.4g",resultado);// el número .4 indica que el resultado sera
getch();                                           //con 4 decimales de precisión
return 0;
}

Por alguna extraña razón, a veces cuando utilizas %.2g hay problemas, puede que no reconozca bien las variables double, pero usando el resultado con variables float %.2f ese problema se ve solucionado.


(2.0) TRUCOS PARA ESCRIBIR EN C++, Y TÉCNICAS DE ESPACIADO.
Bien es sabido que a veces necesitamos escribir mucho texto y varias cosas en C/C++, aquí les voy a dar algunos tips y ejemplos:
 
 printf("Hola como estan, yo me llamo esteban"
       " me gusta mucho salir a caminar y "
       "ademas me la estoy pasando bien");

Esto que acabamos de escribir se imprimirá en pantalla de esta manera:

Hola como estan, yo me llamo esteban me gusta mucho salir a caminar y ademas
me la estoy pasando bien.
También existen casos en que necesitamos espaciar un poco en el programa, para evitar tener que dejar en blanco una gran parte del programa en la función printf, he aquí algunos ejemplos:


printf("\t\t\tResultados:");  //Esto aparecerá de la siguiente forma:

                       Resultados:

chequen el gran espacio en blanco, otra forma es la que sigue:

printf("%35s Valores",""); //esto imprimirá en pantalla lo que sigue:

                                  valores
Vean cuanto espacio avanzó "valores" sin necesidad de dejarlo en blanco en el código fuente, esto se debe a que %35s es que avanzará 35 espacios hacia adelante y luego imprimirá la palabra "valores". En esta función printf("%35s Valores",""); después de la coma pusimos "", esto significa que nuestro cursor avanzara 35 espacios y al final imprimirá el dato que encuentre bajo comillas, en este ejemplo no hay nada("") y sólo avanza.


Veamos otro ejemplo con esta función:

printf("1.%30s\n2.%30s\n3.%30s","nombre","edad","ocupacion");

Esta función imprimirá en pantalla lo siguiente:

1.                        nombre
2.                          edad
3.                     ocupacion
Vemos en este ejemplo que cada vez que el programa encuentra %30s avanza hacia adelante y luego antes de que se acaben los 30 espacios, escribe la primera palabra que encuentra y luego se va así sucesivamente, como si se tratara de un programa x que concatena variables, sólo que en este caso son palabras o datos.

Como en el caso visto arriba, si %30s hace que avance 30 espacios, toma en cuenta la palabra que va a concatenar, si es hola sólo avanzará 26 espacios pues los otros 4 espacios son para la palabra hola y así a completen 30 espacios.

veamos este otro ejemplo:


printf("%s %15s %12s %32s","Nombre","Apellido","Edad","  Fecha de nacimiento"
       "\n\nEsteban\t\tAngeles\t\t20\t10 de febrero de 1984");

Esto imprimirá en pantalla lo siguiente:


Nombre        Apellido        Edad    Fecha de nacimiento

Esteban         Angeles        20       10 de febrero de 1984

 
Otro ejemplo de concatenar mensajes es la siguiente manera:


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

char *mensaje1="Te estaba esperando";
char *mensaje2="Esteban";
char *mensaje3="Jamas vuelvas a dejarnos";

main()
{
clrscr();
printf("%s\n%19s\n%s",mensaje1,mensaje2,mensaje3);
getch();
}

Este programa imprimirá lo siguiente:

Te estaba esperando
            Esteban
Jamas vuelvas a dejarnos


Espero te hayan servido estos breves pero útiles tutoriales de lenguaje C. En otro post de este blog pondré los códigos fuentes de pequeños pero potentes programas de C/C++ que hice a lo largo de toda la carrera que estoy seguro te servirán, por ejemplo contraseñas, contadores, relojes, menús y algunas otras curiosidades. Saludos desde México.

No hay comentarios:

Publicar un comentario