sábado, 11 de diciembre de 2010

Primeros pasos en C

Porque todos hemos sido novatos en esto de la programación, este post va dirigido a todos los que están empezando a programar y están un poco perdidos.
El lenguaje C, es un lenguaje de alto nivel creado en 1972 para implementar sistemas operativos, aunque no creo que ninguno de vosotros tenga intención de usarlo para eso ^^
Antes de ponernos a programar como locos, hay que tener en cuenta una serie de cosas:


El compilador
Es un programa que necesitaremos para transformar nuestro código fuente (el programa que haremos en C) a código maquina (el lenguaje que entiende nuestro ordenador).
Existen muchos compiladores, la elección depende de vosotros (bueno y de vuestro sistema operativo, pero eso como cualquier programa).
Yo usaré el gcc de mi Mac OS X, es decir, compilare mediante comandos con el terminal.


La estructura de un programa en C
Una vez que hemos elegido la herramienta de desarrollo que usaremos, ahora es cuando podemos empezar a programar, pero no al tun tun. Primero tendremos que saber que es lo que vamos a hacer y para ello lo primero es conocer la estructura que tiene un programa en C.
  • Directivas del preprocesador
Son una colección de instrucciones especiales que se ejecutan al principio de la compilación.
Las mas habituales son:
#include: incluir ficheros de cabecera
Existentes en el compilador: #include < nombreFich.h>
#include < stdio.h>
Existentes en el directorio actual (pueden ser ficheros propios): #include "nombreFich.h"
#include "misFunciones.h"

#define: definir constantes
#define identificador valor
#define pi 3.1416
NOTA: Un identificador valido es una secuencia de letras, números y subrayado que siempre empieza por letra. Distingue entre mayúsculas y minúsculas. Se aplica esta norma tanto a constantes, como a variables, nombres de funciones, etc.

  • Declaraciones globales
Declaraciones accesibles desde cualquier punto del programa. Pueden ser variables o prototipos de funciones.

Variables: Representan información que varía durante la ejecución, de ahí su nombre
tipoDato idVariable nombre=valor;
int numero=10;
No es obligatorio inicializarlas en la declaración:
int numero;
Tipos de datos simples:
- Enteros:
int: -32768 - 32767
unsigned int: 0 - 65535
short int: -128 - 127
long: -2147483648 - 2147483647
unsigned long: 0 - 4294967295
- Reales
float: 3.4 x 10^-38 - 3.4 x 10^38 (precision 7 digitos)
double: 1.7x10^-308 - 1.7x10^308 (precision 15 digitos)
long double: 3.4x10^-4932 - 3.4x10^4932 (precision 19 digitos)
- Caracteres
char: 0 - 255
- Lógicos
Verdadero o falso: se representa con un dato de tipo int (1:verdadero, 0:falso)

Prototipos de funciones: Son las cabeceras de las funciones (ver Declaración de otras funciones) seguidas de ;

  • Función main
Punto de entrada al programa. Solo puede haber una.
void main()
{
//bloque de sentencias
}
void: significa que no devuelve nada.

Otra forma de escribir la función main es esta:
int main()
{
//bloque de sentencias
return 0;
}
en este caso main devuelve un int por lo que al final del método habrá que hacer un return (ver Declaración de otras funciones)

  • Declaración de otras funciones
Las funciones son conjuntos de sentencias que realizan una función. Mejoran la legibilidad, depuración y mantenimiento de los programas.
Las funciones tienen dos partes: cabecera (corresponde con el prototipo) y cuerpo.
tipoDevuelto idFuncion (parametrosFormales)//cabecera de la función
{
//aqui empieza el cuerpo
//sentencias
return expresion;
}
Una función termina cuando se encuentra un return, si no hay return termina cuando acaba el cuerpo.

Tipo devuelto: puede ser cualquiera de los tipos fundamentales explicados anteriormente. Si no devuelve nada se usa void. . Para devolver un valor a la función se usa return.
int suma ()
{
...
return expresion; //el tipo de la expresión tiene que coincidir con el tipo devuelto
}

void suma()
{
...
}

Identificador: debe cumplir las restricciones de los identificadores expuestas anteriormente.

Parámetros formales: Son opcionales, puede que la función no reciba nada en la llamada. En el caso de que se pongan, hay que especificar el tipo de cada uno de ellos.
int suma (int a, int b)
{
...
}

Las funciones las explicaré con más detalle en post futuros.

No hay comentarios:

Publicar un comentario