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 con float o double).
  • 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 el tipo_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) o tipo_de_dato nombre_del_array[filas][columnas]; (para arrays bidimensionales).
  • %p: Especificador de formato utilizado en printf 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 con scanf, 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.

Entradas relacionadas: