adf.ly

Mostrando entradas con la etiqueta programar. Mostrar todas las entradas
Mostrando entradas con la etiqueta programar. Mostrar todas las entradas

lunes, 17 de octubre de 2011

6. Programación en C - Entrada

Entrada

La entradas es el metodo para comunicarse con el programa, generalmente o por lo menos por ahora, el metodo de entrada mas usado es el teclado. Hay otras formas de entradas como puede ser el raton, scaner, codigos de barras, etc... cada uno de estos necesitan una configuracion especial, que dependera del hardware y drivers, cosa que por ahora no puedo realizar.

La funcion de entrada se encuentra en la libreria <stdio.h>, esta es la libreria input-output (entrada-salida). Y para poder usarla usaremos la funcion siguiente:

scanf ("%tipo de dato",&espacio en memoria -variable-);

Ej:
scanf ("%i",&a);

Explico:
scanf: es la etiqueta de la funcion, la cual nos permite realizar la entrada de datos.
%tipo: Depende del tipo de dato que queramos capturar. Revisar
&variable: & define la ruta de memoria asignada para la variable creada.

Sabias Que:
Para leer una cadena de caracteres (%s) - (char [valor]), NO es necesario usar el signo de ruta de memoria. La cadena de caracteres, ya es una ruta de memoria.


Sabias Que:
No es necesario imprimir antes de hacer una lectura, pero es necesario hacerle saber al usuario que datos queremos que ingrese.

Bien, esta funcion es muy parecida a el printf, es sencilla asi que no veo la necesidad de expandirme mucho.

Dejare algunos ejemplos y usteden modifiquenlos hasta comprender el uso del scanf.


Ejemplos #1:

Hacer lo siguiente:
Pedir nombre.
Leer nombre.
Imprimir nombre.
(usar printf para la etiquetas y scanf para leer datos, usar variables para guardar dato en memoria.)


#include <stdio.h>
#include <stdlib.h>

int main()
{
    char name[40];//entre corchetes asigno la cantidad máxima de caracteres a guardar
    printf ("Cual es tu nombre?\n");//etiqueta
    scanf ("%s",name); //%c para un caracter, %s para cadenas de caracteres.
    printf ("\n Su nombre es: %s \n",name);//etiqueta
    system ("pause");
    return 0;

}

Ejemplo #2:

Hacer la suma de dos numeros. 
Pueden hacer variantes: 
Suma de 3 o mas.
Cambiar suma por resta (-), multiplicacion (*), division (/), modulo (%), etc...
Cambiar entradas de tipo de datos de int a float, double, etc...


//Mini calculadora de suma.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,resul;
    printf ("Por favor ingrese sus dos numeros a sumar\n\n");
    scanf ("%i %i",&a,&b);
    resul=a+b; //este paso se puede incluir directamente en el printf.
              //printf ("La suma de %i y %i es de: %i\n",a,b,a+b);
             //pero mejor asignamos una variable para guardar el resultado.
    printf ("La suma de %i y %i es de: %i\n",a,b,resul);
    system ("pause");
    return 0;
    

}

Ejemplo #3:

¿Modulo?, este es un operador de C, en el cual se nos devuelve el residuo de una division, Ej:
6 modulo 3 = 0. (ya que 6 dividido entre 3 = 2, y da como residuo 0).
Para usar el modulo, usamos el operador %, escribire de nuevo el codigo anterior pero usando modulo.

//Mini calculadora de Modulos.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b,resul;
    printf ("Por favor ingrese sus dos numeros\n\n");
    scanf ("%i %i",&a,&b);
    resul=a%b; 
    printf ("El Modulo de %i y %i es de: %i\n",a,b,resul);
    system ("pause");
    return 0;
    

}

Bien, la practica ya es cuestion de ustedes, no me detengo mucho, por que si ya ves programacion, esto es demasiado sencillo, sino, te costara un poco, pero lo tomaras rapidamente.




5. Programación en C - Impresión de Tipo de Datos

Impresión de Tipos de datos.

Para imprimir los tipos de datos necesitamos ciertos caracteres de conversión, para que la función printf  reconozca de que tipo estamos hablando y pueda imprimirlo como tal.

Ej:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int a = 3;
   printf ("El valor asignado de a es: %i",a);

system ("pause");
return 0;
}

Este programa lo que hace es imprimir por pantalla: El valor asignado de a es 3, ya hemos usado printf para imprimir una cadena de caracteres ("Hola Mundo"), pero con printf también podemos imprimir los datos de cada variable, usando esta forma:

%Tipo de dato: Aquí es donde se coloca de que tipo de dato se esta hablando, para que el compilador aparte la cantidad de memoria necesaria para cada uno, seria imposible guardar un tipo de dato long double (de 10 byte) en un tipo de dato int (de 2 byte). Si se hace esto, no dará error, pero la impresión mostrada no sera verdadera.

,variable: Al cerrar comillas (""), decimos que terminamos el texto (fin de cadena de caracteres), y le decimos que en %i, imprima el valor que tiene a.

Otro ejemplo:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int a = 2;
   printf ("El valor de a es: %i y su cuadrado es: %d",a,a*a);
   system ("pause");
   return 0;
}

Si observaron bien, en donde este %tipo, se remplazara por el valor de la variable, para incluir varias impresiones de variables solo hay que agregar %tipo y las variables en el orden que se desea. El %d, no es mas que decir %i, es otra alternativa sin ninguna característica que la distinga de %i.

Ahora les dejo un listado de los caracteres de conversión que se usan para cada tipo de dato.
Como ya vieron %i, solo se usa para imprimir enteros, pero que hay si quiero imprimir caracteres o decimales...vean la siguiente tabla.

d,i : Para enteros con signo en base 10.
u:    Para enteros sin signo en base 10.
o:    Para enteros sin signo en base 8.
x:    Para enteros sin signo en base 16 (01...abcdef).
X:   Para enteros sin signo en base 16 (01...ABCDEF).
f:     Para doubles (menos precisión), usado para floats.
e:    Para doubles (mas precisión), usado para double.
E:   Para doubles, usado para long double.
g:    Para doubles con signo en formato f o e.
G:   Igual que g, usando el exponente E.
c:    Para caracteres, usado con char.
s:    Para cadena de caracteres, usado con char [valor].


Ahora si podemos practicar, les dejare solo unos cuantos ejemplos, modifiquenlos a su antojo para practicar.

//Imprimir mi nombre.

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char name[20]="Gustavo Chavarria";
   printf ("Mi nombre es: %s.\n",name);
   system ("pause");
   return 0;

}

//Imprime el valor de pi

#include <stdio.h>
#include <stdlib.h>

int main()
{
   const float pi = 3.1416;
   printf ("El valor de pi es: %f ",pi);

system ("pause");
return 0;

/* Al ejecutar el programa verán que les sale dos ceros mas, para eliminar eso usamos, punto, la cantidad de dígitos y el carácter del tipo.
En este ejemplo, quedaría así.

printf ("El valor de pi es: %.4f",pi);

Si remplazas esto en la linea de impresión anterior, veras como se eliminan los dos ceros, en vez de cuatro puedes poner cualquier valor, para reducirlo.
Prueba cambiándolo a 3 y a 2, veras que solo disminuye la cantidad de dígitos.

*/
}

Ahora es cuestion de ustedes que y cuanto quieren practicar.
Para avanzar mas rapido y comprender todo lo que aqui se te dice, recuerda leer el Wikilibro: Programacion en C.


Anterior                                                                     Siguiente



sábado, 15 de octubre de 2011

4. Programacion en C - Tipos de Datos

Tipos de Datos

Los tipos de datos son expresiones que se utiliza en dependencia de que es lo que se este trabajando. Los tipos de datos son varios y su funcion es clasificar, como su nombre lo dice, los datos con los que se van a trabajar.

Tipos de Datos:

Tipos de datos enteros: char, int, long, enum.
Tipos de datos reales: float, double y long double.
Otros: void.

Tipo Char (Tipo caracter = 1 byte)

Sirve para guarda caracteres, cada caracter corresponde a 1 byte. Ej. Hola, tiene 4 byte. Sin embargo los valores no son guardados como alfanumericos, sino que lo son en forma numeral, esto es usando el ASCII con un rango de -128 a 127 (siendo de 0 a 127 propios del codigo ASCII).

char letra = 'A';
ó
char letra = 65;

Tipo Int (Tipo entero = 2 byte)

El tipo int es para definir valores enteros sin decimales (Z). El rango que puede tomar es de -32768 a 32767.

int num = 22;
int a = 14;
int xxx = 100;

Tipo Long (Tipo entero con formato largo = 4 byte)

Es igual que int, pero su única caracteristica es la inclusion de mas numeros desde -2147483648 hasta 214748347.

long num = 22;
long a = 214748347;

Tipo enumerado

enum, lo que hace es, como su nombre lo dice, enumerar los tipos de datos, crear una enumeracion es definir un nuevo tipo de dato,denominados tipo enumerado y declarar una variable de este tipo. La sintaxis es la siguiente.

enum tipo_enumerado
{
/*Definicion de nombres de constantes enteras */
}

Ej:

enum arcoiris
{
    rojo,amarillo,verde,azul,blanco
};

Con enum, es como si desarrollemos un tipo de dato nuevo, es por eso que para usarlo es necesario llamarlo como si de otro tipo de datos fuese.
Ej:

enum arcoiris color;

Esta es una forma de hacerlo, pero hay la funcion enum nos permite declarar una variable en su misma funcion.
Ej:

enum arcoiris
{
     rojo,amarillo,verde,azul,blanco
}color;

De esta forma la variable ya queda declarada.
Enum, es una enumeracion, eso quiere decir que cada uno de sus valores (en este caso, rojo,amarillo...), tienen un valor de posicion (enumerado) comenzando desde 0, asi:
rojo = 0.
amarillo = 1.
verde = 2.
azul = 3.
blanco = 4.

Pero esto se puede modificar a nuestra conveniencia, solo hay que asignarle el numero que se quiere.
Ej.

enum arcoiris
{
    rojo,amarillo,verde=100,azul,blanco
};

La enumeracion siguiente daria el siguiente orden.

rojo = 0.
amarillo = 1.
verde = 100.
azul = 101.
blanco = 102.

Tipo Float (Reales de precision simple = 4 byte)

En este tipo de dato podemos almacenar numeros decimales. El rango de posibles valores es:
-3,402823E+38  a  -1,175494E-38 para numeros negativos.
1,175494E-38  a  3,402823E+38  para numero positivos.

Un número real de simple precision no tiene mas de 7 digitos significativos.
La verdad yo NO soy cientifico, es por eso que 7 digitos, me parece una barbaridad, es decir en vez de definir:
PI = 3.1416
con float podriamos definirlo como:
PI = 3.141592

Ahora definamos PI usando float, es como un int o char, asi que no prestaremos mucha atencion, quedaria asi:

float pi = 3.1416;

Tipo Double (Reales de precision doble = 8 bytes)

Ya se podran imaginar, este es un float x2, en este se pueden almacenar numeros reales en el rango de:
-1,79769E+308  a  -2,22507E-308 para numeros negativos.
2,22507E-308   a  1,79769E+308 para numeros positivos.

Con una presicion de 16 digitos significativos.
Bien ya les dije, no soy cientifico (jejeje), pero necesitaremos este tipo, a la hora de trabajar calculos matematicos o fisicos grandes.
Para definirla lo hacemos igual que el float:

double pi = 3.141593;

La diferencia se nota al usar E o e.

Tipo Long Double (doble formato largo = 10 byte)

Los valores que comprenden son:

-1.189731E+4932  a  -3.362103E-4932 para numeros negativos
3.362103E-4932  a  1.189731E+4932  para numeros positivos

Un numero real de doble formato largo puede tener hasta 19 digitos significativos.
Ej:

long double y = 3.14e+425;

Tipo Void

Especifica un conjunto vació de valores. En realidad void no es un tipo, aunque por su forma de utilizarlo lo colocamos aquí. Debido a que no es un tipo, no se puede declarar una variable tipo void.

void a; //da error, no se puede declarar una variable tipo void.

El uso que se le da a void es muy diferente, alguno de los casos son:

Indicar que una función no acepta argumentos:
double fx(void);

Declarar funciones que no retornan ningún valor.
int main (void)

Declarar un puntero generico, esto es, un puntero a un objeto de tipo desconocido.
void *p;

Constantes

Las constantes son datos que en el programa no cambian su valor y que es necesario que permanesca asi.
Hay dos formas de declarar constantes:

Antes de la función principal:

#include <stdio.h>
#include <stdlib.h>

#define pi 3.1416
#define hi "Hola mundo"

La otra forma es dentro de una función ej:

int main()
{
   const int a = 3;
   const float pi = 3.1416;
}

Las diferencias están mas que claras, pero a eso hay que agregar que usando #define, estamos diciendo que esa constante estará disponible para todo el programa y usando const decimos que esa constante estará disponible solo para esa función, en este caso la función principal main.
Ademas con const, debemos indicar el tipo de dato que usara esa constante (int, float, double...) con # define eso se omite.

Sabias Que:
No es lo mismo declarar que inicializar?
Declarar: int a;
Inicializar: int a =3;

Sabias Que:
El valor en Bytes de cada tipo, en realidad depende de cada compilador, es decir que en Pelles C y Dev C++ los valores de estos puede diferir.


No dejare, Ejercicios en esta ocasión, los dejare para el siguiente post, ya que para practicar con los tipos de datos necesitamos otros conocimientos (algo sencillo), pero que lo daré en la siguiente ocasión.



Anterior                                                                     Siguiente




Aprende Lenguaje C [Conmigo]

Aprende Lenguaje C


Hola mundo, en esta ocasión les voy a enseñar un poco del lenguaje C, resulta que soy estudiante de sistema y se me ocurrió que ya que me gusta bloggear y me encanta programar, la mejor forma de aprender seria haciendo una serie de tutoriales en donde practique todo lo que he aprendido, además de que otros podrían aprender de estos.
Es decir una arma de doble filo, aprendo y al mismo tiempo enseño, por lo que en teoría aprendo el doble...jejeje.

Bien este solo es la introducción.
Antes de ponernos a trabajar les dejare, lo que necesitamos.

Yo uso Windows, C es un lenguaje aceptados por casi todas las plataformas, así que no habrá problemas con esto, pero digo que yo uso windows, por que daré las opciones (lo que necesitamos) para programar en C desde Windows.

Programas:

Pelles C: Dicen que es un programa muy bueno para comenzar a programar en C. Sin embargo en mi opinión no es un compilador muy potente y siempre necesitamos pasarnos a otros.

Dev C++: Este es el que uso yo, creo que es el mejor y que es mejor iniciar y acomodarse aquí, que empezar en otro lado y luego acomodarse.

Para reforzar sus conocimientos, de manera teorica, les recomiendo lean este Wikilibro, es muy bueno.
Wikilibro - Programacion en C.
Siguiente




Colocare un pequeño índice de todos los temas que vaya posteando.

  • ÍNDICE:

  1. Aprender lenguaje C.
  2. Historia de C.
  3. Introducción.
  4. Hola mundo desde C.
  5. Tipos de datos.
  6. Impresión de tipos de datos.
  7. Entrada.
  8. Expresiones.
  9. Condicionales.
  10. Bucles.
  11. Funciones.
  12. Vectores.

Ire agregando poco a poco cada post y actualizare el indice.


1. Programacion en C - Historia

Historia

Bien, espero ya hallan leido mi Post Anterior, ahora vamos con el BlaBla, pero no hay que olvidar que esto es muy importante, primero vamos con historia, luego con Teoria, pero siempre me gusta dejarles ejercicios o por lo menos ya dejarles la introduccion a la practica, por que al fin y al cabo, la programacion es pura practica y la teoria solo es un requisito.

[Wikipedia]

El lenguaje de programación C fue creado por Dennis Ritchie entre 1969 y 1973 cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el diseño del sistema operativo UNIX. C fue creado para poder escribir dicho sistema operativo en un lenguaje de alto nivel, independiente del hardware donde se ejecutara.

Contar con un lenguaje de alto nivel permitió el avance de los sistemas operativos, ya que el mismo código podía ser utilizado en las distintas plataformas, propiciando la reutilización de código y reduciendo los tiempos de desarrollo. Así es que los sistemas operativos basados en UNIX, el sistema BSD, el sistema GNU/Linux y muchos otros fueron desarrollados en C.

Además, con el paso del tiempo se han desarrollado cientos de bibliotecas que permiten a los programadores de C utilizar el código desarrollado por otros para la realización de tareas comunes. Esto, a su vez, ha propiciado el desarrollo de aplicaciones en lenguaje C.

Actualmente es imposible contar la cantidad de aplicaciones y herramientas desarrolladas en C.

=======>
Como podran ver el lenguaje C, es un lenguaje muy potente, es mas algunos le dicen el lenguaje de los sistemas operativos, ya que hasta el mismo windows esta hecho en partes por el lenguaje C y sus variantes como C#.

En el siguiente post, introduciremos de lleno todo lo referente al lenguaje C, es decir todos los conceptos que necesitamos para trabajar con C.

Anterior                                                                     Siguiente