# Fundamentos de C - Lección 1

Esta página o sección necesita una revisión de ortografía y gramática. Puedes ayudar editándolo
Si usted es de las personas que nunca ha programado, este curso es para usted. Aprender los fundamentos de un lenguaje de programación es como abrir las puertas a la oportunidad y a la aventura. Y, en estos tiempos, aprender a programar, aún a un nivel básico, es bastante beneficioso, ya que el lenguaje C proporciona una base para la comprensión de los conceptos básicos de programación. Si sabe cómo programar en C, puede aprender C++, C#, Java, y muchos lenguajes adicionales de programación.

## Comenzando

Para empezar a programar en lenguaje C, necesitará un compilador como Turbo C, GCC, TCC o Dev-C++. Si usa el sistema operativo GNU puede usar el compilador de C, llamado GCC (GNU Compiler Collection).
Para este curso usaremos el compilador Dev-C++.
Una vez que haya obtenido e instalado Dev-C++ en su computador, puede empezar a programar. He aquí un pequeño ejemplo con la clásica aplicación Hola mundo:
Ejecute Dev-C++, vaya al menú Archivo y en el submenú Nuevo seleccione Archivo Fuente, (El atajo de teclado es Ctrl+N).
Escriba esto en su compilador:
Seguidamente vaya al menú Ejecutar y seleccione el submenú Compilar y Ejecutar, (El atajo de teclado es F9).
Guau. Ahí está. Su primera aplicación en C. Excitante. Y todo lo que tomó fue escribir algunas palabras.
Hemos dicho que usaremos Dev-C++ en este curso, pero puede estar tentado a usar otro compilador tal como Tiny C Compiler o the GNU Compiler Collection.
Debe tener mucho cuidado al realizar su elección, especialmente si eres principiante, porque a menudo puede usar un código que no es estándar para 'ayudarte'.
Si desea aprender correctamente el lenguaje C, debe conocer y comprender las normas ANSI/ISO C de modo que tenga una idea de lo que haces. Un ejemplo de lo anterior es que el archivo de cabecera <conio.h> no está definido por el estándar de C.
Dentro de la estructura de un programa en C existen elementos básicos tales como tipos de datos, operadores, expresiones, variables, constantes, directivas de preproceso, palabras reservadas y caracteres especiales; los cuales pasaremos a explicar a continuación.

## Tipos de Datos

El compilador de C reconoce unos tipos de datos estándar como enteros, flotante y carácter. Estos tipos de datos son:
* char: ocupa un byte en memoria, se suele utilizar para almacenar caracteres, pues el ASCII-E usa exactamente 8 bits para representar un caracter. (-128 a +127 ó 0 a 255).
* int: ocupa 4 bytes y es actualmente el tamaño de la palabra de un ordenador de 32 bits, salvo que se esté en posesión de un ordenador de 64 bits con un SO que lo soporte (-2^31 a 2^31-1 ó 0 a 2^32-1).
* long ó long int: generalmente ocupa dos palabras (64 bits u 8 bytes) pero depende del ordenador.
* float: ocupa una palabra y se usa para representar números reales dado que su rango es mucho mayor, usaremos este tipo para la representación de números reales.
* double: ocupa dos palabras y tiene una capacidad mucho mayor que un float.
* short: ocupa dos bytes en memoria, lo usaremos exclusivamente cuando vayamos a necesitar grandes cantidades de memoria y nos sobre precisión, si no, utilizaremos o el int o char, por cuestiones de arquitectura del ordenador (-2^15 a 2^15-1 ó 0 a 2^16-1).
* unsigned: se usa para especificar que la variable no tiene signo, por lo que "aumenta" su capacidad en cuanto a número positivos.
* void: esto no es un tipo de dato en sí mismo, pero se usa para determinar que una función no recibe parámetros o no devuelve un resultado. No pueden existir variables del tipo void.
| Tipo | Rango | Bytes | Bits |
| char | -128 ... 127 (ASCII) | 1 | 8 |
| int | -32.768 ... 32.767 | 2 | 16 |
| long | -2.147.483.648 ... 2.147.483.647 | 4 | 32 |
| float | 3.4*10^-38 ... 3.4*10^38 | 4 | 32 |
| double | 1.7*10^-308 ... 1.7*10^308 | 8 | 64 |
| void | Valor nulo | nulo | - |
la sintaxis para declarar variables o constantes con los diferentes tipos de datos es:

## Operadores

Los programas en C constan de datos, sentencias y expresiones. Una expresión es una ecuación matemática, tal como 25*13. en esta expresión el símbolo (*) es el operador de multiplicación y los números 25 y 13 se llaman operandos.
El lenguaje C soporta diferentes tipos de operadores: aritméticos, lógicos, y relacionales.

### Operadores Aritméticos

Se utilizan para crear expresiones aritméticas; estas pueden resultar de la unión de variables o constantes con operadores.
Nota: El operador módulo ( % ) se utiliza para calcular el resto del cociente entre dos enteros , y NO puede ser aplicado a variables del tipo float ó double.
| Operador | Simbolo | Ejemplo | Significado |
| Suma | + | a + b | a más b |
| Resta | - | a - b | a menos b |
| Multiplicación | * | a * b | a por b |
| División | / | a / b | a dividido b |
| Residuo | % | a % b | a residuo de b |
| Signo (negativo) | - | -a | a negativo |

### Operadores Relacionales

Son aquellos operadores que se utilizan para la toma de decisiones que se puedan necesitar dentro de un programa.
| Operador | Simbolo | Ejemplo | Significado |
| Igual | == | x == y | x es igual a y |
| Diferente | != | x != y | x es diferente de y |
| Mayor que | > | x > y | x es mayor que y |
| Mayor o igual que | >= | x >= y | x es mayor o igual que y |
| Menor que | < | x < y | x es menor que y |
| Menor o igual que | <= | x <= y | x es menor o igual que y |

### Operadores Lógicos

Son operadores usados para realizar conectividad lógica en las expresiones.
Nota: C interpreta cualquier número entero distinto de 0 (cero) como verdadero, ya sea positivo como negativo, por lo que para usar el tipo de dato boolean no definido en C podremos usar tanto un int como un char (el short no es aconsejable usarlo salvo problemas de memoria, cosa que a partir del año 2000 no suele ocurrir salvo al programar algunos microprocesadores).
| Operador | Simbolo | Ejemplo | Significado |
| Y (AND) | && | (a>b) && (c<d) | a es mayor que b y c es menor que d |
| O (OR) | || | (a>b) || (c<d) | a es mayor que b o c es menor que d |
| NEGACION (NOT) | ! | !(a>b) | a no es mayor que b |

### Operadores de Incremento o Decremento

Estos operadores permiten incrementar o decrementar en una unidad el valor de una variable
| Ejemplo | Significado |
| Variable++ | El valor de la variable incrementa después de una operación |
| ++Variable | El valor de la variable incrementa antes de una operación |
| Variable-- | El valor de la variable disminuye después de una operación |
| --Variable | El valor de la variable disminuye antes de una operación |
También es posible crear variables de incremento o decremento mayores a la unidad, asi:
| Ejemplo | Significado |
| Variable+=3 | La variable incrementa su valor en 3 unidades |
| Variable-=5 | La variable decrementa su valor en 5 unidades |

### Precedencia de Operadores

La precedencia de los operadores determina el orden en que se ejecutaran las operaciones dentro de las expresiones.
Lo siguiente lista todos los operadores del C en orden descendente de precedencia. Los operadores en el mismo renglón tienen la misma precedencia.
Nivel 1: ->
Nivel 2: ! ~ ++ -- *(indireccion) &(direccion de) +(unario) -(unario)
Nivel 3: *(multiplicación) / %
Nivel 4: + -
Nivel 5: << >>
Nivel 6: < <= => >
Nivel 7: == !=
Nivel 8: &(AND a nivel de bit)
Nivel 9: ^
Nivel 10: |
Nivel 11: &&
Nivel 12: ||
Nivel 13: ?:
Nivel 14: = += -= /= %= &= ^= |= <<= >>=
Nivel 15: ,
* Proyecto: Programación en C
* Anterior: Programación en C — Fundamentos de C - Lección 1 — Siguiente: Fundamentos de C - Lección 2