Introducción a C
## Objetivos de Aprendizaje
- Comprender la historia e importancia de C
- Configurar el entorno de desarrollo de C
- Escribir y ejecutar tu primer programa en C
- Comprender los conceptos básicos de la sintaxis de C
## ¿Qué es C?
C es un lenguaje de programación procedimental desarrollado por Dennis Ritchie en Bell Labs en 1972. Fue diseñado para implementar el sistema operativo UNIX.
```c
#include
int main(void) {
printf("Hello, World!\n");
return 0;
}
```
## ¿Por qué Aprender C?
### Características Clave
- **Acceso de bajo nivel** - Manipulación directa de memoria
- **Eficiencia** - Ejecución rápida, tiempo de ejecución mínimo
- **Portabilidad** - Se ejecuta en prácticamente cualquier plataforma
- **Fundamento** - Inspiró C++, Java, Python y más
- **Control** - Control completo sobre los recursos del sistema
### Usos Comunes
| Área | Ejemplos |
|------|----------|
| Programación de Sistemas | Sistemas operativos, controladores, sistemas embebidos |
| Software de Aplicación | Bases de datos, compiladores, intérpretes |
| Sistemas Embebidos | Microcontroladores, dispositivos IoT |
| Desarrollo de Juegos | Motores de juegos, gráficos de alto rendimiento |
## Instalando C
### Linux
```bash
sudo apt-get install build-essential
```
### macOS
```bash
xcode-select --install
```
### Windows
Instala MinGW o usa WSL (Windows Subsystem for Linux)
### Verificar Instalación
```bash
gcc --version
```
## Tu Primer Programa
### Archivo: hello.c
```c
#include
int main(void) {
printf("Hello, World!\n");
return 0;
}
```
### Compilar y Ejecutar
```bash
gcc hello.c -o hello # Compilar
./hello # Ejecutar el programa
```
Salida:
```text
Hello, World!
```
## Estructura de un Programa en C
```c
#include // Directiva del preprocesador
int main(void) { // Función principal (punto de entrada)
// Declaraciones
return 0; // Estado de retorno
}
```
### Componentes
1. **Directivas del preprocesador** - Declaraciones `#include`
2. **Función principal** - Punto de entrada de cada programa en C
3. **Declaraciones** - Comandos a ejecutar
4. **Declaración de retorno** - Estado de salida (0 = éxito)
## Comentarios
```c
// Comentario de una sola línea
/*
* Comentario de
* múltiples líneas
*/
```
## La Función printf
```c
// Salida básica
printf("Hello\n");
// Salida con formato
printf("Name: %s, Age: %d\n", "Alice", 30);
// Secuencias de escape
printf("Tab:\tTab\n");
printf("Newline:\nDone\n");
printf("Backslash: \\\n");
printf("Percent: %%");
```
### Especificadores de Formato
| Especificador | Tipo |
|---------------|------|
| `%d` | int |
| `%f` | float/double |
| `%c` | char |
| `%s` | string |
| `%p` | puntero |
| `%%` | % literal |
## La Función main
### Formas Estándar
```c
int main(void) {
return 0;
}
int main(int argc, char *argv[]) {
// argc: conteo de argumentos
// argv: valores de argumentos
return 0;
}
```
### Argumentos de Línea de Comandos
```c
#include
int main(int argc, char *argv[]) {
printf("Program: %s\n", argv[0]);
for (int i = 1; i < argc; i++) {
printf("Arg %d: %s\n", i, argv[i]);
}
return 0;
}
```
```bash
gcc main.c -o main
./main Alice 42
```
Salida:
```text
Program: ./main
Arg 1: Alice
Arg 2: 42
```
## Entrada con scanf
```c
#include
int main(void) {
int age;
printf("Enter your age: ");
scanf("%d", &age);
printf("You are %d years old\n", age);
return 0;
}
```
## IDEs
### IDEs Populares
- VS Code (recomendado con extensión C/C++)
- CLion
- Eclipse CDT
- Code::Blocks
## Estándares de C
| Estándar | Año | Características |
|----------|------|----------|
| C89/C90 | 1989 | C ANSI original |
| C99 | 1999 | Comentarios `//`, `bool`, `stdint.h` |
| C11 | 2011 | Multihilo, soporte Unicode |
| C17 | 2017 | Corrección de errores, sin nuevas características |
| C23 | 2023 | Estándar más reciente |
```bash
gcc -std=c11 hello.c -o hello
```
## Resumen
- C fue creado en 1972 por Dennis Ritchie
- GCC es el compilador GNU C (usa `gcc --version` para verificar)
- Cada programa en C necesita la función `main()`
- `gcc file.c -o program` compila código C
- `printf()` muestra texto con formato
- `scanf()` lee entrada
- Comentarios: `//` o `/* */`
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →