La evaluación final del curso de programación en C está diseñada para poner a prueba los conocimientos y habilidades que has adquirido a lo largo de todos los módulos. Esta evaluación consistirá en una serie de ejercicios prácticos y preguntas teóricas que abarcarán los temas clave del curso. A continuación, se detallan las instrucciones y los componentes de la evaluación.

Instrucciones Generales

  1. Tiempo Estimado: Se recomienda dedicar al menos 3 horas para completar la evaluación.
  2. Formato de Entrega: Los ejercicios prácticos deben ser entregados en un archivo comprimido (.zip) que contenga todos los archivos fuente (.c) y cualquier otro archivo necesario para la compilación y ejecución de los programas.
  3. Criterios de Evaluación: Se evaluará la corrección, eficiencia, legibilidad y documentación del código. Además, se valorará la correcta implementación de las mejores prácticas y técnicas de optimización aprendidas.

Componentes de la Evaluación

  1. Preguntas Teóricas

Responde las siguientes preguntas de manera concisa y clara:

  1. Tipos de Datos y Variables:

    • ¿Cuál es la diferencia entre una variable y una constante en C?
    • Explica la conversión de tipos implícita y explícita con ejemplos.
  2. Flujo de Control:

    • Describe cómo funcionan las sentencias if-else y proporciona un ejemplo.
    • ¿Cuál es la diferencia entre los bucles for, while y do-while?
  3. Funciones:

    • ¿Qué es una función recursiva? Proporciona un ejemplo.
    • Explica el concepto de ámbito y vida de las variables con ejemplos.
  4. Punteros:

    • ¿Qué es un puntero y cómo se declara en C?
    • Explica la aritmética de punteros con un ejemplo.
  5. Asignación Dinámica de Memoria:

    • ¿Cuál es la diferencia entre malloc y calloc?
    • ¿Qué es una fuga de memoria y cómo se puede evitar?

  1. Ejercicios Prácticos

Implementa los siguientes programas en C:

  1. Calculadora Básica:

    • Crea un programa que implemente una calculadora básica que pueda realizar operaciones de suma, resta, multiplicación y división. El programa debe utilizar funciones para cada operación y manejar errores como la división por cero.
    #include <stdio.h>
    
    float suma(float a, float b) {
        return a + b;
    }
    
    float resta(float a, float b) {
        return a - b;
    }
    
    float multiplicacion(float a, float b) {
        return a * b;
    }
    
    float division(float a, float b) {
        if (b != 0) {
            return a / b;
        } else {
            printf("Error: División por cero.\n");
            return 0;
        }
    }
    
    int main() {
        float num1, num2;
        char operador;
    
        printf("Introduce el primer número: ");
        scanf("%f", &num1);
        printf("Introduce el operador (+, -, *, /): ");
        scanf(" %c", &operador);
        printf("Introduce el segundo número: ");
        scanf("%f", &num2);
    
        switch (operador) {
            case '+':
                printf("Resultado: %.2f\n", suma(num1, num2));
                break;
            case '-':
                printf("Resultado: %.2f\n", resta(num1, num2));
                break;
            case '*':
                printf("Resultado: %.2f\n", multiplicacion(num1, num2));
                break;
            case '/':
                printf("Resultado: %.2f\n", division(num1, num2));
                break;
            default:
                printf("Operador no válido.\n");
        }
    
        return 0;
    }
    
  2. Gestión de Memoria Dinámica:

    • Escribe un programa que lea una lista de números enteros desde el usuario, los almacene en un arreglo dinámico y luego calcule y muestre la suma y el promedio de los números. Utiliza malloc y free para la gestión de memoria.
    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        int n, i;
        int *arr;
        int suma = 0;
        float promedio;
    
        printf("Introduce el número de elementos: ");
        scanf("%d", &n);
    
        arr = (int *)malloc(n * sizeof(int));
        if (arr == NULL) {
            printf("Error de asignación de memoria.\n");
            return 1;
        }
    
        printf("Introduce los elementos:\n");
        for (i = 0; i < n; i++) {
            scanf("%d", &arr[i]);
            suma += arr[i];
        }
    
        promedio = (float)suma / n;
    
        printf("Suma: %d\n", suma);
        printf("Promedio: %.2f\n", promedio);
    
        free(arr);
        return 0;
    }
    
  3. Manejo de Archivos:

    • Crea un programa que lea el contenido de un archivo de texto y cuente el número de palabras en el archivo. El nombre del archivo debe ser proporcionado por el usuario.
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    int main() {
        FILE *file;
        char filename[100];
        char ch;
        int word_count = 0;
        int in_word = 0;
    
        printf("Introduce el nombre del archivo: ");
        scanf("%s", filename);
    
        file = fopen(filename, "r");
        if (file == NULL) {
            printf("No se puede abrir el archivo %s\n", filename);
            return 1;
        }
    
        while ((ch = fgetc(file)) != EOF) {
            if (isspace(ch)) {
                in_word = 0;
            } else if (in_word == 0) {
                in_word = 1;
                word_count++;
            }
        }
    
        fclose(file);
    
        printf("Número de palabras en el archivo: %d\n", word_count);
    
        return 0;
    }
    

  1. Proyecto Final

Desarrolla un proyecto que integre varios conceptos aprendidos en el curso. El proyecto debe ser una aplicación completa que resuelva un problema real o simulado. Aquí hay algunas ideas de proyectos:

  • Sistema de Gestión de Biblioteca: Un programa que permita gestionar libros, usuarios y préstamos.
  • Juego de Adivinanza de Números: Un juego interactivo donde el usuario debe adivinar un número generado aleatoriamente por el programa.
  • Agenda de Contactos: Un programa que permita almacenar, buscar y eliminar contactos.

El proyecto debe incluir:

  1. Descripción del Proyecto: Un documento que describa el propósito del proyecto, las funcionalidades implementadas y las instrucciones para compilar y ejecutar el programa.
  2. Código Fuente: Todos los archivos fuente necesarios para compilar y ejecutar el programa.
  3. Documentación: Comentarios en el código y un archivo README que explique cómo usar el programa.

Conclusión

La evaluación final es una oportunidad para demostrar tu dominio de la programación en C. Asegúrate de revisar todos los conceptos y prácticas aprendidas a lo largo del curso. ¡Buena suerte!

Curso de Programación en C

Módulo 1: Introducción a C

Módulo 2: Tipos de Datos y Variables

Módulo 3: Flujo de Control

Módulo 4: Funciones

Módulo 5: Arreglos y Cadenas

Módulo 6: Punteros

Módulo 7: Estructuras y Uniones

Módulo 8: Asignación Dinámica de Memoria

Módulo 9: Manejo de Archivos

Módulo 10: Temas Avanzados

Módulo 11: Mejores Prácticas y Optimización

Módulo 12: Proyecto y Evaluación Final

© Copyright 2024. Todos los derechos reservados