Fundamentos del lenguaje
35 pasos en 7 series de C.
C desde el principio. Tipos, operadores, control de flujo, funciones, arreglos y cadenas, y después las clases de almacenamiento y printf y scanf. Treinta y cinco pasos, y el lenguaje entero es más pequeño de lo que este tour lo hace parecer.
Lo que toma tiempo en C no es la sintaxis. Es saber qué hace la máquina con ella, algo que empieza aquí y en realidad no termina nunca.
Variables y tipos
- Variables y printfDeclarar variables con tipo e imprimirlas.
- Tipos, casts y sizeofConvertir entre los tipos numéricos de C de forma explícita.
- Constantes, macros, enumsLas varias maneras en que C nombra un valor fijo.
- Tipos enteros de ancho fijostdint.h te da anchos exactos, algo que int y long no prometen.
- Punto flotantefloat, double y por qué nunca los comparas con igualdad.
- Límites y desbordamientoCada tipo entero tiene un rango; cruzarlo envuelve o es comportamiento indefinido.
- Promoción de enterosLos tipos chicos se promueven a int; mezclar con y sin signo convierte al que tiene signo.
Operadores y flujo
- OperadoresAsignación compuesta, incremento y el ternario que reemplaza un if corto.
- CondicionalesRamificar con if/else y el operador ternario.
- Bucles for y whileLos bucles de C: por contador y por condición.
- do whileEl bucle que siempre corre una vez, ideal para menús y reintentos.
- Sentencias switchRamificación de varias vías con casos que caen al siguiente (fall-through).
- Enums como estadoUn enum nombra los estados, y un switch sobre él hace visibles los huecos.
- FizzBuzzEl clásico ejercicio de entrevista para bucles y condicionales.
Funciones
- FuncionesDefinir y componer funciones, incluidas las static.
- Clases de almacenamientostatic, extern y automático: dónde vive una variable y cuánto dura.
- MCDEl algoritmo de Euclides, todavía la respuesta correcta más corta tras dos mil años.
- Prueba de primalidadDivisión por tanteo hasta la raíz cuadrada, que es suficiente.
- Fibonacci iterativoFibonacci sin recursión: dos variables y un bucle.
- RecursiónUn caso base y un problema más chico, en la pila en vez de en un bucle.
- Torres de HanóiRecursión que mueve una pila entera confiando en el caso más chico.
Arreglos y cadenas
- ArreglosArreglos de tamaño fijo: inicializar e iterar.
- El máximo de un arregloEncuentra el elemento mayor y muestra por qué la longitud debe viajar con el arreglo.
- Cadenas de caracteresRecorrer una cadena terminada en nulo carácter por carácter.
- strlen a manoAvanza hasta el byte cero terminador: una cadena de C no es más que eso.
- Clasificar caracteresctype.h responde qué es un carácter, sin codificar rangos ASCII a mano.
Valores y almacenamiento
- sizeof y alineaciónsizeof mide almacenamiento, y un struct suele ser más grande que la suma de sus campos.
- Corrección con constconst en un parámetro es una promesa a quien llama, y el compilador la hace cumplir.
- Inicializadores designadosC99 te deja nombrar los miembros y elementos que inicializas.
- Literales compuestosUn valor sin nombre de tipo struct o arreglo, construido donde se necesita.
Entrada y salida
- Conversiones de printfLa cadena de formato es un lenguajito: ancho, precisión y el especificador correcto por tipo.
- Leer entrada de forma segurascanf corta: revisa su valor de retorno y nunca dejes un %s sin límite.
Bis
- average.cUn programa completo: leer números de un archivo, promediarlos, manejar las fallas.
- histogram.cImprimir un histograma de texto con los conteos dados como argumentos.
- number_facts.cUn programa completo: leer números de argv y reportar datos de cada uno.