jueves, 22 de agosto de 2013

Texto en la pantalla - Dandole formato

El uso del printf, ya sabemos que es para mostrar texto en la pantalla, pero que pasa si queremos mostrar una variable?.. bueno, supongamos que tenemos tres variables con tipos de datos distintos:

a = 5

b = 'A'  (para éste tipo de dato si queremos asignarle una letra tiene que estar entre comillas simples)

= 1.23

la forma es la siguiente:

printf("El valor de la variable a es: %i \n", a);

printf("El valor de la variable b es: %c \n", b);

printf("El valor de la variable c es: %f \n", c);
 
Ahora paso a explicar, veran que en las tres líneas está el \n . Ésto sirve para que al mostrarnos en pantalla haya un salto de línea, para que se entienda mejor, si eso no estuviera el resultado al ejecutar el algoritmo sería:

El valor de la variable a es: 5El valor de la variable b es: AEl valor de la variable c es: 1.230000 (nota: la variable float siempre muestra esos ceros si no le damos otro argumento o si no los llenamos)

Entonces siempre que quieran un "enter" en el texto tienen que poner \n.
Ahora los otros simbolos. %i %c %f éstos indican el tipo de dato de la variable en cuestion, si erramos de tipo de dato, el lenguaje C no nos dice que está mal, simplemente se los pasa por el * y no los muestra...
Pueden apreciar que la forma de escribir es primero el texto entre comillas, despues una coma, y despues la variable. Si tuvieramos más de una variable en la misma línea, el orden en que las llamamos es el orden en el cual se mostraran en pantalla:

printf("Las variables son: %i , %c y %f", a, b, c);

Esto mostraría en pantalla:

Las variables son: 5 , A y 1.23000

Ahora veamos que pasa si hacemos lo siguiente:

letra = 'A';
printf( "El número ASCII de la letra %c es: %i.", letra, letra ); 

Ésto nos mostraría en pantalla:

El código ASCII de la letra A es 65.

Pasa por el tipo de dato que le dimos para que mostrase, el tipo caracter es a la vez un tipo numérico y un tipo letra, por eso podemos hacer eso.

miércoles, 21 de agosto de 2013

Introducir datos

Me estaba olvidando de algo muy importante, el Leer datos, en C nosotros en vez de utilizar esa funcion, usamos scanf. Para verlo mejor haré un programita que almacene un número.

1:  #include <stdio.h>  
2:  int main(){  
3:     int a;  
4:     printf("Ingrese un numero");  
5:     scanf("%i",&a);  
6:     return 0;  
7:  }  

(noten que definí la variable "a" dentro del main, por ende ésta variable es una variable local que solo puede ser utilizada por la función main y todo lo que esté adentro de ella)

Analicemos la linea 5: scanf. como había dicho es la funcion equivalente a leer, pero ahora paso a explicar los simbolos que tiene adentro: "%i" significa que lo que va a ingresar tiene que ser un número entero (integer, por eso la "i"), y el &a significa que el valor ingresado se guardará en la variable "a".
Éste procedimiento es obligatorio para todo scanf.

Y bien, con ésto ya podemos ingresar datos en nuestro programa.

Operadores en C y otras cosas.

Ok, en pseudocódigo asignabamos el valor a una variable con una flecha, en C utilizamos el símbolo igual "=" y para hacer comparaciones es doble igual "==". Los otros simbolos que son diferentes del pseudocódigo y los nuevos operadores son:

++ (incremento, sumarle 1)
-- (decremento, restarle 1)
% (módulo o resto)
!= (distinto)

por ejemplo para asignarle el valor a una variable escribimos.

a = 5

si queremos comparar si la variable a vale 5 entonces

a == 5

si queremos incrementarle a la variable...(ejemplo bobo que funciona)

a == 5 ?  verdadero

a ++

a == 5 ? falso
a == 6 ? verdadero

Módulo o resto de una division

a = 11 % 2

a ?  vale 1

Si queremos ver si el valor de "a" es distinto de 1

a = 1
a != 1 ? falso

En la siguiente entrada, control de flujo (condicionales)

El clásico "Hola mundo"

Hola mundo es el primer ejemplo para aprender algo en cualquier lenguaje de programación.
y... como ésta no es la exepción, aquí les doy un programita que lo UNICO que hace es, escribir en pantalla, "Hola mundo".-

1:  #include <stdio.h>  
2:  #include <conio.h>  
3:  int main(){  
4:     printf("Hola Mundo");  
5:     getch();  
6:     return 0;  
7:  }  

Las líneas 1 y 2 que dicen #include sirven para importar "librerías", éstas librerías tienen las funciones que necesitamos para escribir en pantalla (stdio.h) y para pausar la pantalla (conio.h) *en linux esa librería es al dope*. Como verán, éstas librerías tienen la extencion .h  siempre la tendrán, y mayormente utilizaremos éstas dos. *para los tutoriales

En la tercera línea declaramos la funcion main como tipo int. La función main, siempre estará en todos los programas de C porque como su nombre lo dice en inglés, es la parte principal del mismo.
Como es una función, le ponemos paréntesis, y abrimos corchete para indicar que comienza el programa (el corchete es como un entonces en una condición en pseudocódigo).

Línea 4: printf("Hola mundo");... traducido ésto a pseudocódigo es Escribir("Hola mundo"). Ésta es la línea donde indíca que escriba en pantalla, "printf" es ésa funcion, y está dentro de la librería "stdio.h".
Nóten que hay un punto y coma al final de la línea, ésto indica que la instrucción terminó, y que pasemos a la siguiente línea..


Linea 5: getch();.... ésta línea no la utilizaremos en Linux (supongo) porque solo sirve para esperar que el usuario presione enter para pasar a la siguiente linea, lo pongo porque si ejecutan el programa solo con el printf, se les va a abrir una ventana y se les va a cerrar sin que puedan leer el hola mundo (hagan la prueba)... *tal vez sirva para otra cosa el getch()...que se yo, no le doy importancia jeje...
Línea 6: return 0; como main es una función, tiene obligatoriamente que devolver un valor, por lo general devolverá 0 si el programa se ejecutó y 1 si hubo algún error. Tambien se podría obviar esta linea si en vez de declararlo al main como entero, lo hubieramos declarado como void (vacío) para que no necesitemos un valor de retorno, pero ésto en windows les dará problemas al compilarlo.

Línea 7: }   no hay mucho que decir... es solo un corchete para cerrar la función main.

Para probar ésto, solo vayan al Dev-C++, habran un nuevo código fuente, y copien el código de más arriba (sin los números de línea...), denle luego a ejecutar >> compliar y ejecutar (o F9) y habrán hecho el primer programa, el clásico ''Hola mundo"... 

Tipos de datos en C

Tengo en cuenta que los vagos saben los tipos de datos en pseudocódigo, entonces aquí les daré el equivalente de los tipos de datos en C

int = entero (valores posibles del -32767 al 32767)

float = real (valores posibles del 3,4 x 10 elevado a -38 al 3,4 x 10 elevado a 38)

char = caracter (valores posibles del -128 al 128 (eh que no eran letras? si, ya lo veremos)

Hasta ahora eso es lo equivalente a lo que vimos en pseudocódigo. En lenguaje C tambien tenemos otros tipos de datos.

long = entero largo(o grande) (valores posibles del -2.147.483.647 a 2.147.483.647)

double = doble del float (1,7 x 10 elevado a -307 a 1,7 x 10 elevado a 307)

 Para ser buenos programadores debemos saber utilizar bien el espacio en memoria... es decir, no voy a asignar una variable como double para almacenar el numero "10", seria un desperdicio total de memoria...

Aca les dejo una linda tablita para que vean y entiendan mejor.
Tipo Datos almacenados Nº de Bits Valores posibles (Rango)
char Caracteres 8 -128 a 128
int enteros 16 -32.767 a 32.767
long enteros largos 32 -2.147.483.647 a 2.147.483.647
float Nums. reales (coma flotante) 32 3,4E-38 a 3,4E38
double Nums. reales (coma flotante doble) 64 1,7E-307 a 1,7E308

Lo que podemos hacer en C al declarar una variable es que si por ejemplo, no queremos usar valores negativos, entonces ponemos al lado unsigned

unsigned char tiene como valores posibles del 0 al 264 (por ejemplo)

Hablando de char, porque tiene valores numéricos si es de tipo caracter? pues la respuesta es sencilla.
Si nosotros le asignamos el valor 65 a una variable char, ésta será el caracter "A", y porque? porque 65 es el valor de ése caracter en la tabla ASCII estándar. En otra entrada les muestro cómo utilizarla de ésta forma para que no queden confundidos...




Bien, ya con ésto, y el programa que les dejé en la primera entrada, creo que pueden comenzar a ver realmente un programa en sí.