Programación en C

9
Programación en C Tipos de datos ENTEROS Los enteros son el tipo de dato más primitivo en C. Se usan para representar números enteros. Pero siempre se pueden encontrar otras aplicaciones para los números enteros. En general se pueden usar para representar cualquier variable discreta. Los tipos de datos enteros son: short , int , long y long long , cada uno representando un número entero de un tamaño o capacidad determinado. Según el compilador y la plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en memoria (para más detalles busca en la referencia). Además, el lenguaje C hace la distinción de si el entero es con signo ( signed ) o sin signo ( unsigned ). En caso de que no se declare si es con signo o sin signo, se toma con signo. Algunos ejemplos de declaraciones de enteros: int a; unsigned int a; signed long a; signed long long a = 10000000; Todos los números son representados en memoria mediante una cadena de bits. En el caso de los números con signo, el bit más significativo es el que se usa para representar el signo. La representación de los números negativos se realiza mediante el complemento a dos, que es una técnica que permite operar con los números negativos de forma lógica. A modo de ejemplo, la representación en memoria del número -8 en una variable de 2 bytes, entera, con signo, sería la siguiente: 1111111111111000 FLOTANTES

description

algoritmos y lenguaje de programación

Transcript of Programación en C

Programacin en CTipos de datos

ENTEROSLos 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,longylong long, cada uno representando un nmero entero de un tamao o capacidad determinado. Segn el compilador y la plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte hasta 8 bytes en memoria (para ms detalles busca en lareferencia).Adems, el lenguaje C hace la distincin de si el entero es con signo (signed) o sin signo (unsigned). En caso de que no se declare si es con signo o sin signo, se toma con signo.Algunos ejemplos de declaraciones de enteros: 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, elbit ms significativoes el que se usa para representar el signo. La representacin de los nmeros negativos se realiza mediante elcomplemento a dos, que es una tcnica que permite operar con los nmeros negativos de forma lgica.A modo de ejemplo, la representacin en memoria del nmero -8 en una variable de 2 bytes, entera, con signo, sera la siguiente: 1111111111111000

FLOTANTESSe denomina flotantes a los tipos de datos que representan a los nmeros reales, ya que utilizan un sistema de representacin basado en la tcnica decoma flotante, que permite operar con nmeros reales de diversas magnitudes, mediante un nmero decimal llamadomantisay un exponente que indica elorden de magnitud.El tipo de dato flotante en lenguaje C slo tiene dos tamaos: elfloaty eldouble, que son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar nmeros decimales, como para representar 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 plataformasintegradas. 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:1. Se convierte a binario la parte entera.2. Se coloca el signo en el bit ms significativo de la misma manera que en los enteros (1 para el - y 0 para el +).3. Se mueve la coma (en la representacin binaria de la parte entera) hasta que est a la derecha del primer uno y ste se descarta (el uno ms significativo). El valor del exponente ser el nmero de posiciones que se movi la coma. El exponente usa la representacin de un entero con complemento a dos.4. Se convierte en binario la parte decimal del nmero. Esto usando el peso de los bits. el bit decimal ms significativo vale 1/2, el siguiente vale 1/4, el otro 1/8, el otro 1/16 y as hasta completar lo que falta para los 23bits del valor.5. Se concatena todo y ese es el valor flotante representado en memoria.

CARACTERESLos caracteres se representan utilizando el tipochar, que tiene slo 1 byte de tamao. Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del sistema. El tipochares tambin un tipo entero, ya que puede tomar valores de 0 a 255. Por lo tanto tambin puede sersignedounsigned.En cuanto a la forma de declarar variables de tipochares la misma forma que con los otros tipos. char a; char a = 's'; unsigned char a = 48;Como puedes ver, se le puede asignar un nmero a una variablechar, ya que se trata de un tipo entero. En muchas situaciones se utiliza el tipocharpara almacenar nmeros pequeos, ya que ocupa en memoria slamente un byte.Es importante notar que con la llegada de la codificacinUTF-8, los caracteres de los diversos idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipocharya no alcanza para la representacin de todos los caracteres posibles. Por ello, el estndar C99 introduce el tipowcharque puede ocupar ms de 1 byte, segn sea necesario para la codificacin utilizada por el sistema.

Estructura de un programa en C.Todo programa escrito en C consta de una o msfunciones, una de las cuales se llamamain. El programa siempre comenzar por la ejecucin de la funcinmain.Cada funcin debe contener:Unacabecerade la funcin, que consta del nombre de la funcin, seguido de una lista opcional deargumentosencerrados con parntesis.

Una lista dedeclaracinde argumentos, si se incluyen estos en la cabecera.

Unasentencia compuesta, que contiene el resto de la funcin.

Los argumentos son smbolos que representan informacin que se le pasa a la funcin desde otra parte del programa . (Tambin se llamanparmetrosa losargumentos).Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las llaves pueden contener combinaciones de sentencias elementales (denominadas sentencias de expresin) y otras sentencias compuestas. As las sentencias compuestas pueden estar anidadas, una dentro de otra. Cada sentencia de expresin debe acabar en punto y coma (;).Loscomentariospueden aparecer en cualquier parte del programa, mientras estn situados entre los delimitadores /* ................ */ (por ejemplo: /*esto es un ejemplo*/). Los comentarios son tiles para identificar los elementos principales de un programa o simplemente para orientar a un posible usuario de ese cdigo.Todo fichero fuente en C sigue la siguiente estructura; para verla ms claramente pondremos un ejemplo con sus correspondientes comentarios, que nos vayan explicando cada una de las partes, muchas de las cosas que se vean, no se conocen an, pero nos servirn para hacernos una idea de cmo se estructura un programa:

Ejemplo:#include #include /*#include del sistema:Se deben especificar todos los ficheros de cabecera (ficheros con extensin .h) correspondientes a las libreras de funciones utilizadas.Son libreras implementadas y listas para que nosotros las usemos,con slo llamar a la funcin que tenga implementada dentro dicha librera. Por ejemplo: la instruccin printf est incluida dentro de stdio.h, por tanto, cuando decidamos usarla, tendremos que poner en esta seccin:#include */

#include /*#include de la aplicacin:Ficheros de cabecera creados para el fichero fuente. Se puede decir que estos son los que yo he creado, que son invocados escribiendo su nombre seguido de.h. (Ms tarde explicaremoscmo se crean). Si lo pongo entre signos: < > (como lo tenemos en este ejemplo), dicha librera ser buscada en el directorio del compiladorINCLUDEque contiene las libreras. Si por el contrario pongo: #include "lista.h", entonces, dicha librera ser buscada 1 en el directorio actual, y luego, si no est,ser buscada en el directorio del compiladorINCLUDE*/

extern void salida(void);/*externvariables globales externas: Variables globales que voy a definir en otros mdulos que voy a usar en este mdulo. Asalidale hemos asignado el tipo de almacenamientoextern, pues tiene que ser accedida desde otro archivo distinto de aquel en que es definida; por tanto, ha de ser una funcin externa. */

#define CIERTO 1 #define FALSO 0/*#definedefinicin de macros y constantes simblicas.*/

typedef struct {int dia;int mes;int ano; }FECHA;/*typedefdefinicin de tipos: me sirve para crearme un tipo distinto de los preestablecidos de partida.*/

int suma (int , int);/*Declaracin de los prototipos de las funciones implementados en este mdulo:La declaracin de una funcin le da informacin al compilador de una funcin que va a ser utilizada pero que todava no ha sido implementada. En particular le dice al compilador qu tipo de datos requiere y cul devuelve la funcin. En el ejemplo, la funcin con nombresumarecibe dos nmeros enteros y da como salida otro nmero entero.*/

extern int a,b,c;/*Declaracin de variables globales de este mdulo:externdeclaracin de funciones externas a este mdulo: Funciones que se utilizan en este mdulo y que estn implementadas en otro mdulo.staticdeclaracin de las funciones internas no visibles para otros mdulos: Funciones que se implementan en este mdulo y que no pueden ser utilizadas en otros mdulos.*/

main(){........................} int suma(int x,int y){......................}/*Implementacin de las funciones:Se implementan todas las funciones del mdulo incluida la funcinmain().*/