Vous êtes sur la page 1sur 6

Lenguaje C

(Segunda parte)
Tipos de datos en lenguaje C

Tipos bsicos y variables

Los tipos de datos bsicos definidos por C son caracteres, nmeros enteros
y nmeros en coma flotante. Los caracteres son representados por char, los
enteros por short, int, long y los nmeros en coma flotante por float y double. Los
tipos bsicos disponibles y su tamao son:

char Carcter (normalmente 8 bits)
short Entero corto con
signo
(normalmente 16 bits)
int Entero con signo (depende de la
implementacin)
unsigned Entero sin signo (depende de la
implementacin)
long Entero largo con
signo
(normalmente 32 bits)
float Flotante simple (normalmente 32 bits)
double Flotante doble (normalmente 64 bits)

La palabra unsigned en realidad es un modificador aplicable a tipos enteros,
aunque si no se especifica un tipo se supone int. Un modificador es una palabra
clave de C que indica que una variable, o funcin, no se comporta de la forma
normal. Hay tambin un modificador signed, pero como los tipos son por defecto
con signo, casi no se utiliza.

Las variables son definidas utilizando un identificador de tipo seguido del
nombre de la variable. Escriban el siguiente programa:


#include <stdio.h>
int main() {
float c, f;
f =35.0;
c =5.0 * ( farh - 32.0 ) / 9.0;
printf("->%f F son %f C\n", f, c )
return 0;
}
En el programa se declararon dos variables de tipo flotante donde c
representa una temperatura en grados Celsius y f una temperatura en
Fahrenheit, se le asigna a la variable f un valor de temperatura cualquiera, luego
se le asigna a la variable c la temperatura conversin de grados Fahrenheit a
Celsius de la temperatura asignada en f por medio de una operacin aritmtica.

Expresiones y operadores
Los distintos operadores permiten formar expresiones tanto aritmticas como
lgicas. Los operadores aritmticos y lgicos son:
+, - suma, resta
++, -- incremento, decremento
*, /, % multiplicacin, divisin, mdulo
>>, << rotacin de bits a la derecha,
izquierda.
! complemento a 2, NOT lgico
==, != igualdad, desigualdad
&&, || AND, OR lgico
<, <= menor, menor o igual
>, >= mayor, mayor o igual
En estos operadores deben tenerse en cuenta la precedencia de operadores
y las reglas de asociatividad, que son las normales en la mayora de lenguajes. Se
debe consultar el manual de referencia para obtener una explicacin detallada.
Adems hay toda una serie de operadores aritmticos con asignacin, como
pueden ser +=y ^=.
Escribamos este programa donde realizaremos operaciones aritmticas:
En el terminal escribiremos gedit polinomio.c &
/*Programa que resuelve una ecuacin de segundo grado
Recordar que el polinomio es de la forma oX
2
+ bX +c = u
La formula para calcular los valores de X es x =
-b _ b
2
-4uc
2u
*/
#include <stdio.h>
int main() {
float a, b, c, x1, x2;
a =1;
b =6;
c =9;
x1 =((-1)*b +sqrt(b*b 4*a*c)) / (2*a); //Usamos signo +para calcular x1
x2 =((-1)*b - sqrt(b*b 4*a*c)) / (2*a); //Usamos signo - para calcular x2
printf(X1=%f\n, x1);
printf(X2=%f\n, x2);
return 0;
}
Compilamos el codigo usando gcc polinomio.c o polinomio
Dara un error!!!
Por qu? Estamos usando una funcin matematica (sqrt) que calcula la raz
cuadrada de un numero.
Como lo resolvemos? Incluiremos el archivo de cabecera math.h para que
quede asi:
/*Programa que resuelve una ecuacin de segundo grado
Recordar que el polinomio es de la forma oX
2
+ bX +c = u
La formula para calcular los valores de X es x =
-b _ b
2
-4uc
2u
*/
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, x1, x2;
a =1;
b =6;
c =9;
x1 =((-1)*b +sqrt(b*b 4*a*c)) / 2*a; //Usamos signo +para calcular x1
x2 =((-1)*b - sqrt(b*b 4*a*c)) / 2*a; //Usamos signo - para calcular x2
printf(X1=%f\n, x1);
printf(X2=%f\n, x2);
return 0;
}
Compilamos de nuevo: gcc polinomio.c o polinomio
Dio otro error? Te dijo que no esta definida la funcin sqrt? Lo resolveremos
agregando lm al final de la lnea de compilacin, lo que permitir incluir la librera
math.h en nuestro programa: gcc polinomio.c o polinomio lm
Pero bueno! Para que yo quiero un programa que calcule las races de un
nico polinomio de segundo grado? Acaso cuando quiera calcular las races de
otro polinomio de grado 2 (con coeficientes diferentes) tengo que modificar el
cdigo? Podramos pensar que en lugar de usar variables, simplemente se podan
escribir los valores directamente en las ecuaciones.
La respuesta es NO! En la librera stdio.h existe una funcin que permite
introducir datos por la entrada estndar que en este caso ser el teclado.
Funcion scanf().
La funcin scanf() es anloga en muchos sentidos a printf() y se utiliza para
leer datos de la entrada estndar. La forma general de esta funcin es la siguiente:
scanf( %x1 %x2 , &var1, &var2);
Donde x1, x2, son los caracteres de conversin mostrados en la siguiente
tabla:

Carcter Tipo de dato ledo Argumento
c Cualquier carcter char
d,i Entero decimal con signo int
u Entero decimal sin signo unsigned int
o Entero octal unsigned int
X,x Entero hexadecimal unsigned int
E,e,f,g,G Numero de punto flotante float
h, l Para short, long y double
L Modificador para long
double


Por ejemplo, para leer los valores de dos variables int y double, se utilizaria la
sentencia:
int n;
double distancia;
scanf(%d, &n);
scanf(%lf, &distancia);

En algunos casos (muy particulares) se lee en una sola funcin as:
int n;
double distancia;
scanf(%d %lf, &n, &distancia);
Como ejercicios se propone lo siguiente:

- Modificar el programa que resuelve un polinomio de segundo grado para
que los coeficientes (a, b y c) deban ser introducidos por el usuario
mediante el teclado.
- Escribir un programa para lo siguiente: Una partcula se encuentra
ubicada en el origen del plano cartesiano, se le debe suministrar por
teclado una orden de movimiento que sea (d, 0) donde d es una distancia
dada en metros y 0 es un ngulo dado en grados. El programa debe dar
como salida la posicin en coordenadas (x, y) donde estar la partcula
luego de su movimiento.