Fundamentos de Programación en C: Conceptos Clave y Sintaxis Esencial
Enviado por Nacho y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 8,91 KB
Conceptos Fundamentales de Programación en C
Variables y Constantes
Constantes
Las constantes son datos cuyo valor no puede cambiar durante la ejecución de un programa. Se definen comúnmente con #define nombre_de_la_constante valor_de_la_constante
.
Operadores en C
Un operador es un símbolo que permite manipular datos. Existen varios tipos:
- Operador de Asignación (
=
): Se utiliza para asignar un valor a una variable. - Operadores Aritméticos: Permiten realizar operaciones matemáticas como suma (
+
), resta (-
), multiplicación (*
) y división (/
). Los operadores de incremento (++
) y decremento (--
) tienen mayor precedencia que la multiplicación y división. - Operador Módulo (
%
): Calcula el resto de una división. Solo funciona con números enteros (no confloat
odouble
). - Operadores de Comparación/Relacionales: Se usan para comparar valores. Ejemplos:
==
(igual a),!=
(distinto de). - Operadores Lógicos:
&&
(AND): Devuelve verdadero (1) si ambas condiciones son verdaderas.||
(OR): Devuelve verdadero (1) si al menos una de las condiciones es verdadera.!
(NOT): Invierte el valor de verdad de una condición (si es verdadera, la convierte en falsa, y viceversa).
- Operador
sizeof
: Permite conocer el tamaño en bytes de una variable o tipo de dato.
Tipos de Datos y Unidades de Información
Tipos de Datos Flotantes (float
, double
)
Los especificadores de formato %f
y %lf
se utilizan para mostrar números decimales por pantalla. Es importante recordar que la división entre dos números enteros resultará en un número entero (la parte decimal se trunca).
Bits y Bytes
- Bit: La unidad de información más pequeña, que solo puede tomar los valores 0 o 1.
- Byte: Un conjunto de 8 bits. Puede representar valores desde 0 hasta 255.
Entrada y Salida Básica
Funciones get
y getche
Se utilizan para que el usuario introduzca un carácter por teclado. getche()
muestra el carácter pulsado en pantalla, mientras que get()
no lo hace.
Función fflush(stdout)
Limpia el búfer de salida estándar, forzando la impresión de su contenido en pantalla.
Estructuras de Control de Flujo
Bucles (Estructuras Iterativas)
Bucle for
Estructura de control iterativa. (Nota: La sentencia for
no lleva punto y coma al final de su declaración, a menos que sea una sentencia vacía).
Bucle while
Repite un bloque de código mientras una condición sea verdadera. Ejemplo:
int contador = 0;
while (contador < 100) {
contador++;
printf("Número %i\n", contador);
}
Bucle do-while
Similar a while
, pero garantiza que el bloque de código se ejecute al menos una vez, ya que la condición se evalúa después de la ejecución. Sintaxis:
do {
instrucciones;
} while (condicion);
Sentencias Condicionales
Sentencia if
Ejecuta un bloque de código si una condición es verdadera. Sintaxis:
if (condicion) {
instrucción;
}
Sentencia if-else
Ejecuta un bloque de código si la condición es verdadera, y otro bloque si es falsa. Sintaxis:
if (condicion) {
// Código si la condición es verdadera
} else {
// Código si la condición es falsa
}
Sentencia if-else-if
Permite evaluar múltiples condiciones en secuencia. Sintaxis:
if (condicion1) {
// Código si condicion1 es verdadera
} else if (condicion2) {
// Código si condicion2 es verdadera
} else {
// Código si ninguna de las condiciones anteriores es verdadera
}
Sentencia switch
Permite seleccionar un bloque de código a ejecutar entre varias opciones, basándose en el valor de una variable. Sintaxis:
switch (variable) {
case opcion1:
// Código a ejecutar si variable es igual a opcion1
break;
case opcion2:
// Código a ejecutar si variable es igual a opcion2
break;
default:
// Código a ejecutar si variable no coincide con ninguna opción
break;
}
Salto Incondicional
Sentencia goto
Permite realizar un salto incondicional a una etiqueta definida en el programa. Aunque funcional, su uso se desaconseja en la programación moderna por dificultar la legibilidad y el mantenimiento del código. Ejemplo:
printf("Línea 1\n");
goto linea3;
printf("Línea 2\n"); // Esta línea no se ejecutará
linea3:
printf("Línea 3\n");
Estructuras de Datos y Funciones
Funciones
Bloques de código reutilizables que realizan una tarea específica.
- Sintaxis General:
tipo_de_retorno nombre_de_la_funcion (tipo_parametro1 nombre_parametro1, ...)
tipo_de_retorno
: El tipo de dato que la función devuelve (ej.int
,float
,void
si no devuelve nada).nombre_de_la_funcion
: Identificador único (puede contener letras, números y guiones bajos, pero no puede empezar con un número).- Argumentos (o parámetros): Variables que se pasan como datos a la función.
- Cuerpo de la función: Contiene la lógica y las instrucciones a ejecutar.
return
: Sentencia que devuelve un valor al punto donde la función fue llamada. El valor devuelto debe coincidir con eltipo_de_retorno
.
Arrays (Arreglos)
Colecciones de variables del mismo tipo, identificadas por un nombre común y diferenciadas por un índice.
- Declaración:
tipo_de_dato nombre_del_array[tamaño];
(para arrays unidimensionales) otipo_de_dato nombre_del_array[filas][columnas];
(para arrays bidimensionales). %p
: Especificador de formato utilizado enprintf
para imprimir la dirección de memoria de una variable en formato hexadecimal.
Strings (Cadenas de Texto)
En C, las cadenas de texto son arrays de caracteres terminados en un carácter nulo (\0
).
- Declaración:
char nombre_cadena[tamaño_maximo];
(ej.char texto[20];
). - Lectura con
scanf
: Al leer cadenas conscanf
, no se utiliza el operador de dirección (&
) antes del nombre del array, ya que el nombre del array ya representa su dirección de inicio.
Manejo de Archivos en C
Puntero FILE
Es la base para la manipulación de archivos. Se declara un puntero de tipo FILE
para almacenar la información sobre el archivo (ej. FILE *origen;
).
Función fopen()
Abre un archivo. Sintaxis: FILE *fopen(const char *nombre_fichero, const char *modo);
Modos de apertura:
"r"
: Abre el fichero para lectura."w"
: Crea un fichero nuevo para escritura. Si ya existe, borra su contenido."a"
: Abre un fichero para escritura al final (añadir). Si no existe, lo crea.
Función feof()
Detecta el final de un fichero. Sintaxis: int feof(FILE *fichero);
Constante EOF
Representa el "Fin de Fichero". Se puede comprobar si un carácter leído es EOF
(ej. while (letra != EOF)
).
Función fclose()
Cierra un archivo, vaciando los búferes y guardando los cambios en disco. Sintaxis: int fclose(FILE *fichero);
Devuelve 0 si se cierra correctamente, o EOF
si hay un error. Ejemplo de verificación:
if (fclose(fichero) != 0) {
printf("Problemas al cerrar el fichero\n");
}
Función fgets()
Lee una línea completa de un fichero. Sintaxis: char *fgets(char *buffer, int longitud_max, FILE *fichero);
Devuelve la dirección de buffer
si tiene éxito, o NULL
si se encuentra EOF
o ocurre un error antes de leer caracteres.