Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Enteros
Los enteros son el tipo de dato ms primitivo en C. Se usan para representar nmeros
enteros. Pero siempre se pueden encontrar otras aplicaciones para los nmeros enteros.
En general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short, int, long y long long.
Es decir que para el lenguaje C existen diferentes tamaos de nmeros enteros que,
segn el compilador y la plataforma de hardware, pueden tener desde 1 byte hasta 8
bytes (para ms detalles busca en la referencia).
int a;
unsigned int a;
signed long a;
signed long long a = 10000000;
Todos los nmeros son representados en memoria mediante una cadena de bits. En el
caso de los nmeros con signo, el bit ms significativo es el que se usa para representar
el signo. La representacin de los nmeros negativos se realiza mediante el
complemento a dos, que es una tcnica que permite operar con los nmeros negativos
de forma lgica.
1000000000001000
Flotantes
Se denomina flotantes a los tipos de datos que representan a los nmeros reales, ya que
utilizan un sistema de representacin basado en la tcnica de coma flotante, que
permite operar con nmeros reales de diversas magnitudes, mediante un nmero
decimal llamado mantisa y un exponente que indica el orden de magnitud.
El tipo de dato flotante en lenguaje C slo tiene dos tamaos: el float y el double, que
son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar
nmeros decimales, como para represantar nmeros enteros con un orden de magnitud
muy grande.
La forma de declarar una variable flotante es escribiendo en una lnea uno de los tipos
de datos flotantes y a continuacin el nombre de la variable y tal vez algn valor que se
les quiera dar.
Algunos ejemplos:
float a;
double a = 1e23;
double a = 3.1416;
float a = 4e-9;
double a = -78;
Hay que tener en cuenta que aunque los valores flotantes son ms convenientes para
algunas aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que
los nmeros flotantes no necesariamente tienen soporte de hardware, en particular en las
plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar
los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como
23.45.
Para el caso de los flotantes de 4 bytes, se utiliza 1 bit para el signo, 8 bits para el
exponente y 23 bits para el valor del nmero. El procedimiento para almacenar un
nmero en una variable flotante es el siguiente:
En cuanto a la forma de declarar variables de tipo char es la misma forma que con los
otros tipos.
char a;
char a = 's';
char a = 48;
Como puedes ver, se le puede asignar un nmero a una variable char, ya que se trata de
un tipo entero. En algunas situaciones particulares se utiliza el tipo char para
contadores, porque permite que ocupen slo un byte en memoria.
Es importante notar que con la llegada de la codificacin UTF-8, los caracteres de los
diversos idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipo char ya no
alcanza para la representacin de todos los caracteres. Por ello, el estndar C99
introduce el tipo wchar que puede ocupar ms de 1 byte, segn sea necesario para la
codificacin utilizada por el sistema.
Operadores Precedencia
Operadores Precedencia
* / Izq. a Der.
+ - Izq. a Der.
= Der. a Izq.
Empezando por las ltimas preguntas, el operador de asignacin s crea una expresin,
como los operadores de suma, resta, multiplicacin y divisin, y esa expresin tiene un
resultado, que es el valor que obtiene el lado izquierdo al realizar la operacin. En
cuanto a saber qu se debe ejecutar primero, el ordenador tiene una lista de precedencia,
segn la cual siempre ejecuta primero las multiplicaciones y divisiones, de izquierda a
derecha, a continuacin las sumas y restas, de izquierda a derecha, y a continuacin las
asignaciones, de derecha a izquierda.
main( )
{}
Como nos podemos imaginar, este programa no hace nada, pero contiene la parte ms
importante de cualquier programa C y adems, es el ms pequeo que se puede escribir y que
se compile correctamente. En el se define la funcin main, que es la que ejecuta el sistema
operativo al llamar a un programa C. El nombre de una funcin C siempre va seguida de
parntesis, tanto si tiene argumentos como si no. La definicin de la funcin est formada por
un bloque de sentencias, que esta encerrado entre llaves {}.
#include <stdio.h>
main( )
printf("Hola amigos!\n");
Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera lnea indica que se
tengan en cuenta las funciones y tipos definidos en la librera stdio (standard input/output).
Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la funcin main se
incluye una nica sentencia que llama a la funcin printf. Esta toma como argumento una
cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El smbolo \n
indica un cambio de lnea.
Hay un grupo de smbolos, que son tratados como caracteres individuales, que especifican
algunos caracteres especiales del cdigo ASCII. Los ms importantes son:
\a Alerta
\b Espacio atrs
\f Salto de pgina
\n Salto de lnea
\r Retorno de carro
\t Tabulacin horizontal
\v Tabulacin vertical
\\ Barra invertida
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:
Las variables son definidas utilizando un identificador de tipo seguido del nombre de la variable.
Veamos el siguiente programa:
#include <stdio.h>
main()
farh = 35.0;
Hay un tipo muy importante que se representa por void que puede significar dos cosas
distintas, segn su utilizacin. Puede significar nada, o sea que si una funcin devuelve un
valor de tipo void no devuelve ningn resultado, o puede significar cualquier cosa, como puede
ser un puntero a void es un puntero genrico a cualquier tipo de dato. Ms adelante veremos
su utilizacin.
Expresiones y operadores
Los distintos operadores permiten formar expresiones tanto aritmticas como lgicas. Los
operadores aritmticos y lgicos son:
+, - suma, resta
| OR booleano
^ EXOR booleano
~ complemento a 1
#include <stdio.h>
Declaracin
main ( ) de objetos
{
Asignacin
int a, b; de valores
int c;
Funcin Principal
a = 5;
b = 3;
Sentencias
c = a + b; (Cuerpo del
programa)
printf (%d + %d = %d, a,
b, c);
En C, todas las sentencias van seguidas de `;' (excepto las funciones). Adems, todos los
objetos han de ser declarados previamente, ya sean variables, funciones, constantes, etc.
3. Identificadores
Los nombres que pueden recibir los objetos son cadenas alfanumricas que no
comiencen por un nmero, si bien, dependiendo del compilador, solo diferenciarn unos
objetos de otros los primeros `m' caracteres de la cadena. As podemos encontrar
compiladores que usan desde 8 hasta 32 caracteres en los nombres de objetos.
Tampoco es posible usar caracteres especiales (`,,/,\,*, etc.) para dar nombre a un
objeto; as como tampoco pueden usarse los nombres reservados de C: tanto funciones
como tipos de datos, etc. Y, al igual que las mquinas Unix, el lenguaje C diferencia
entre maysculas y minsculas, por lo que para l no ser lo mismo el objeto `aux', que
el objeto `aUx'
4. Tipos de Datos.
Los enteros suelen tener un tamao de 2 bytes, es decir, 16 bits lo que posibilita poder
almacenar 216 nmeros o lo que es lo mismo un rango que va desde 0 a 65535. Si bien
los enteros largos suelen ser el doble de grandes que los enteros, as si para una
mquina el entero es de 2 bytes, el entero largo ser de 4, lo que posibilitar un rango de
0 a 4.294.967.295. Es posible, dependiendo de la mquina que el entero tenga un
tamao de 4 bytes, en cuyo caso el entero largo tendr un tamao de 8 bytes.
La modificacin de cualquiera de estos por la palabra unsigned hace que los rango sean
estrictamente positivos; en su ausencia, estos rangos estn particionados en mitad de
positivos y mitad de negativos.
Los reales son tipos de datos que sirven para representar nmeros decimales y en coma
flotante. En C los tenemos de simple y doble precisin, que nicamente varan en la
cantidad de decimales que pueden almacenar.
Por su parte el tipo carcter es un tipo de dato muy especial en C. Sirve para almacenar
un nico carcter, si bien C lo almacena en memoria como su correspondiente ASCII,
de modo que dependiendo del formato de salida que le demos al dato as podremos
obtener una letra u un nmero. (A65, B66, C67, $36, a97, b98, f102, etc.)
Cabe sealar que en C no existe un tipo de dato cadena especfico. C almacena las
cadenas como vectores de caracteres y su tratamiento requiere de funciones especficas
que nos permitan asignar una cadena a un variable en tiempo de compilacin.
Las secuencias de escape son cdigos utilizados a la hora de formatear una cedana de
texto. Se utilizan para aadir lineas en blanco, para desplazar la posicin de puntero en
la pantalla, para hacer que `pite' la mquina, etc. Las ms comunes son las siguientes:
Cracter Argumento
\n nueva lnea
\f alimentacion de impresin
6. Operadores:
En C existen una gran varieadad de operadores que permiten realizar desde una simple
asignacin hasta un conjunto considerable de operaciones aritmtico - lgicas.
6.1Operadores aritmticos:
+ suma
- resta
* producto
divisin entera (si int /int o divisin real
/ si int/float,doublefloat double o si
float,double/intfloat, double)
Por ejemplo:
Float a
a=-a
6.2.Operadores lgicos:
== equivalencia o comparacin
!= diferente
&& y
|| o
! no
++ incremento
-- decremento
b=a (1 se asigna)
a=a+1(2 se incrementa.
+=
Estos operadores funcionan de la
siguiente forma:
-=
suma +=i es igual que poner
*= suma=suma+i
7.Jerarqua de datos.
int/float (float)
int/float float.
casting : altera la jerarqua, para que nos devuelva un tipo de dato determinado.
int a;
float x;
a=2
x=3.15
a=x; asignamos un float a un entero. Dependiendo del margen de error, dar un error y
otro; no dar error si damos un cast a un entero (int),
x= a/(int)x; divide un entero entre otro entero (un float truncado que se reduce hasa un
entero), que dar un entero, en este caso y con los valores anteriores de a y x, dar 0.
a=2;
x=1003+20;