“Mi estilo, es el arte de luchar sin luchar”

Aprendiendo C (2da Parte)

2007-10-24 09:35:21-05

Software

Bueno ya conocemos la estructura básica de un programa en C, ahora aprenderemos sobre algunas cosas mas. modificaremos el programa Hola Nena de la entrada anterior para probar mas características:

#include<stdio.h>

int main() //inicio función principal
{
int besos; //declaración de la variable tipo entero "besos"

printf("Cuantos Besos quieres darle a la nena??"); /*Despliega letrero*/
scanf("%d",  &besos); /*Recibe datos de la entrada estándar, los transforma y guarda en la variable besos*/

printf("Hola Nena quiero darte %d besos", besos); /*saluda a la nena y le dice cuantas veces quieres besarla*/

return 0; /*terminación exitosa del programa */
} //fin función principal


ahora compila...

De inicio tenemos la declaración de la variable "besos" le antecede la palabra reservada "int", en C TODAS las variables deben ser declaradas antes de ser usadas, existen diferentes tipos de datos como enteros, números de punto flotante y tipo carácter. Una formalidad muy importante,una variable es un espacio de memoria donde la computadora puede guardar un dato para utilizarlo durante el programa.

El nombre de la variable es una combinación de caracteres alfanuméricos pero cuenta con algunas restricciones:

1.-Toda variable (o constante simbólica, de esto les platico luego) debe empezar con letra.
2.- '_' cuenta como letra, sin embargo, debe evitarse por que muchas subrutinas de la biblioteca estándar empiezan con ese carácter.
3.-Las letras mayúsculas y minúsculas son DISTINTAS.

Esta ultima siempre merece un poco mas de explicación, BEsos es distinto de besos o BESOS o bEsOs. puedes comprobarlo cambiando el nombre de la variable en cualquier lugar del programa y compilarlo.

Toda variable corresponde a un tipo de datos, veamos algunos tipos de datos

Tipo de dato descripción especificador de conversión
int Números enteros %d
float Números de punto flotante %f
double Números de punto flotante de doble precisión %f
char carácter ascii %c

Sigamos, la función printf definida en la biblioteca de entrada y salida estándar "stdio.h"  "imprime" su argumento con o sin formato, en el segundo "printf" podemos ver un %d, esto es un especificador de conversion, indica que va a imprimir un valor de tipo int,  también podemos ver de nuevo a '\n'. En general, la funcion "printf" tiene como primer argumento una cadena de caracteres entre comillas dobles ("), con cada % uno de los argumentos siguientes seran sustituidos por su correspondiente, deben ser iguales en numero y tipo.

Existen caracteres que por su naturaleza o por tener algún significado especial, requieren ser escritos de una manera un poco distinta, como por ejemplo el carácter nueva linea (un enter, pues), aqui hay una pequeña lista de los caracteres que se muestran con secuencias de escape, notece que cada uno cuenta como un solo carácter.

\a Alerta Emite un aviso sonoro
\b Espacio atras
\" Imprime comillas
\n Nueva Linea
\r Retorno de carro
\t Tabulacion
\% Imprime simbolo "por ciento" (%)
\\  Imprime diagonal invertida
\0 Carácter Nulo (MUY IMPORTANTE)

Ahora veremos la funcion "scanf", esta funcion "lee" un dato de la entrada estandar (normalmente el teclado) y lo asigna al espacio de memoria apuntado por una variable, el simbolo '&' es necesario para indicar la asignacion del espacio de memoria.

Probemos otro ejemplo para reafirmar y utilizar nuevos conceptos

#include<stdio.h>

int main()
{
float desayuno, comida, cena, total;

printf("Dime cuanto gastas en el desayuno,comida y cena\n");
scanf("%f%f%f", &desayuno, &comida, &cena); /*Lee 3 numeros flotantes*/

total=desayuno+comida+cena;  //Operaciones aritmeticas
printf("Gastas en total: %f\n",total);

return 0;
}/*fin del programa*/


¿Que hay de nuevo aqui? pues usamos el especificador de conversion %f para indicar que recibimos e imprimimos numeros de punto flotante (¿por que conversion? lo explicare con mas detalle despues, pero recibimos una secuencia de caracteres desde el teclado, cuando scanf lee algo, lo convierte para poder trabajar con el).Tambien usamos opereciones aritmeticas, en C hay definidas opereraciones  aritmeticas, logicas, de comparacion entre otras. veamos la siguiente tabla:

simbolo tipo descripcion ejemplo
+ Aritmetico Suma a + b
- Aritmetico Resta c - d
* Aritmetico Multiplicacion a * d
/ Aritmetico Divicion e / r
% Aritmetico Modulo (resto) a%2
(  ) ---- Parentesis (a+b)*c
== Comparacion Igualdad a == b
!= Comparacion Desigualdad c != d
< Comparacion Menor que a < b
> Comparacion Mayor que a > b
>= Comparacion Mayor o igual que a >= b
<= Comparacion Menor o igual que a <= b
&& Logico AND logico si && si
|| Logico Or logico Si || No
! Logico Not logico !NO
 

Si no entiendes el uso de alguno de estos simbolos, no te preocupes,apenas vamos empezando, con ejemplos y ejercicios los aprenderas en poco tiempo. es importante anotar que en C el valor falso corresponde a 0, el verdadero es cualquier otro numero,no existe un tipo bool como en otros lenguajes,pero la verdad no es necesario.

Haremos un programa pequeño programa que nos sirva de ayuda para entender como se usan los operadores aritmeticos, cuando veamos la instruccion if mostraremos e luso de las demas.

#include<stdio.h>

int main()
{
int a, b, suma, resta, mult, div,  mod, comp; /*declaramos la variables que vamos a usar*/

printf("Escribe dos enteros, pueden ser negativos:");
scanf("%d %d",&a, &b);

suma=a+b;
resta=a-b;
mult=a*b;
div=a/b;
mod=a%b;

printf("a + b=%d \na - b=%d \na * b=%d,a / b=%d \na mod b= %d\n",suma,resta,mult,div,mod);

printf("Veamos por son importantes los parentesis\n");

comp=a*b-suma;
printf("a * b - (a+b)= %d \n",comp);

comp=a * (b - sum);
printf("a*(b - (a + b)=%d\n",comp);

printf("Notaste alguna diferencia ????\n);

return 0;
} //Fin programa principal


compila.....

OK, hoy vimos:

1.-Defincion de variables.
2.-Tipos basicos de datos.
3.-printf y secuancias de escape.
4.-scanf y especificadores de conversion basicos.
5.-operadores aritmeticos (mencionamos de comparacion y logicos)

La siguiente entrada seran ejercicios, si tienes dudas o sugerencias o dije algo mal y estas enojado por eso, comentalo, tratare de responder lo mas pronto posible.

Permalink: http://www.mononeurona.org/users/entry/vendaval/884


Comments Comentblogs:
1.- cibat cibat wrote:

Hacia rato que tenia ganas de volver a agarrar C, espero poder darme chance para volver a codear con él :) gracias por el material!.

2007-10-25 09:43:22-05

New Comentblog

Captcha



Login



Remember me:
vendaval
Alberto Rodriguez Sanchez Estudiante de Ingenieria en Computacion en la UAM-A, programo en C, C#, Python y Haskell. Uso Debian GNU/Linux, Mac-OS X, OpenSolaris, NetBSD y Win2. Pienso especializarme en computo cientifico y criptografia que son mis grandes pasiones.

Tambien pienso que la programacion computacional es un Arte y que un programa de computadora puede llegar a ser realmente bello si cumple con algunas caracteristicas, prefiero la Sintaxis Avanzada en los programas por que muestra un dominio del lenguaje y un buen grado de abstraccion.

NetBSD, C, Enlightenment y VI(M) son mis SO, Lenguaje de programación, manejador de ventanas y editor favoritos.

Practico Limalama y JKD (soy seguidor de la filosofía de Bruce Lee) y tambien escribo con cierta regularidad en este blog.

"Se como el agua, pero piensa como el fuego"
alchemy corn pop cryptography dark side education hacking humor ladies mathematics music my life nanoblogging no more triviality programming martial arts
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
vendaval wrote:
Con una mentira suele irse muy lejos, pero sin esperanzas de volver
on 24/7/08

asarch wrote:
Simon. De preferencia ponle una nalga pa' que llame la atencion
on 25/6/08

vendaval wrote:
hola roberto, lo mejor seria poner lo que quieres comunicarnos como una noticia en portada
on 28/3/08

roberto wrote:
como envio un email a todos los miembros de mononeurona
on 26/3/08

vendaval wrote:
pienso que debria crear una version viva para ms necesidades
on 28/1/08

asarch wrote:
O tambien en: http://www.openbsd.org/ en la forma más pura que puedas encontrar en la red
on 26/1/08

¿Qué estuve haciendo?
=( Se em barrio y estoy en un curso de GNU/linux para usuarios Noveles
1 day, 9 hours ago
Tambien escribo recetas de cocina y chistes =P
1 day, 23 hours ago
@Tuanis: En tu Blog pones sobre lo que te interesa, yo hablo de computacion, aunque
1 day, 23 hours ago
Manda mas o menos la receta Saidjose, asi pruebo a ver si sale
3 days, 15 hours ago
cuando se haga la monochelada estaria chido para acompañar.
3 days, 21 hours ago
yo estoy probando cocinar costillas a la BBQ en Carbon, si me salen bien
3 days, 21 hours ago
Estudio a fondo un asunto sobre la nueva red de la uam
4 days, 22 hours ago
@asarch: hablales bonito de mi. que voy a oaxaca en enero.
1 week, 1 day ago
Pero en la biblioteca Central no estaban, aunque tienen sus tesoros =)
1 week, 5 days ago
Me di una vuelta a CU a ver si tenian algunos libros que ocupo.
1 week, 5 days ago
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.