Conversor De C A C# - Ejercicio De Programacion C# Sharp

Este ejercicio consiste en crear un programa que convierta programas simples en C a C#, como el siguiente ejemplo, asegurando que el programa resultante compile correctamente. La tarea implica leer un programa escrito en C y generar un archivo con la misma lógica y estructura en C#. El programa debe identificar las estructuras del lenguaje C (como printf, scanf, tipos de datos, estructuras de control) y mapearlas a su equivalente en C#, de modo que el resultado sea un código funcional en C#. Además, se debe probar el programa con otros programas en C similares para asegurarse de que la conversión sea correcta. Este ejercicio pone a prueba la comprensión de ambos lenguajes y la habilidad para realizar conversiones entre ellos.

 Categoría

Administración de Archivos

 Ejercicio

Conversor De C A C#

 Objectivo

Cree un programa para convertir programas de C simples, como el siguiente, a C#:

Nota: el programa resultante debe compilar correctamente. Pruébelo con otros programas C similares.

 Ejemplo Ejercicio C#

 Copiar Código C#
// Import necessary namespaces
using System; // System namespace for basic input/output and file handling
using System.IO; // File handling functions (read/write)
using System.Text.RegularExpressions; // Regex operations for pattern matching and replacements

class CToCSharpConverter // Define the CToCSharpConverter class that will handle the conversion
{
    static void Main(string[] args) // Entry point of the program
    {
        // Ensure the user has provided a file to convert
        if (args.Length != 1) // Check if no file path is provided
        {
            Console.WriteLine("Usage: CToCSharpConverter "); // Inform the user about the correct usage
            return; // Exit the program if the file argument is missing
        }

        string inputFilePath = args[0]; // Store the input file path provided by the user

        // Check if the provided file exists
        if (!File.Exists(inputFilePath)) // Check if the input file doesn't exist
        {
            Console.WriteLine("Error: The C file does not exist."); // Notify the user about the missing file
            return; // Exit the program if the file does not exist
        }

        try
        {
            // Read the contents of the C file
            string cCode = File.ReadAllText(inputFilePath); // Read the entire content of the input file

            // Convert the C code to C# by applying transformations
            string cSharpCode = ConvertCToCSharp(cCode); // Call the method to convert C code to C#

            // Generate the C# file path (changing the file extension from .c to .cs)
            string outputFilePath = Path.ChangeExtension(inputFilePath, ".cs"); // Modify the file path to have a .cs extension

            // Write the converted C# code to the output file
            File.WriteAllText(outputFilePath, cSharpCode); // Save the converted C# code into a new file

            Console.WriteLine($"Conversion complete. C# code saved to {outputFilePath}"); // Inform the user about the successful conversion
        }
        catch (Exception ex) // Catch any exceptions that occur during the file reading or writing process
        {
            Console.WriteLine($"An error occurred: {ex.Message}"); // Print the error message if something goes wrong
        }
    }

    static string ConvertCToCSharp(string cCode) // Method to convert C code to C# code
    {
        // Convert includes to C# using 'using' keyword
        cCode = Regex.Replace(cCode, @"#include\s+<([^>]+)>", "using $1;"); // Replace #include statements with C# using statements

        // Convert 'int main()' to 'static void Main()' for the entry point
        cCode = Regex.Replace(cCode, @"\bint\s+main\s*\(\)\s*{", "static void Main() {"); // Change C's main to C#'s static Main

        // Convert 'printf' to 'Console.WriteLine'
        cCode = Regex.Replace(cCode, @"printf\s*\(([^)]+)\);", "Console.WriteLine($1);"); // Replace printf statements with Console.WriteLine

        // Handle 'return 0;' to remove it as it's not needed in C#
        cCode = Regex.Replace(cCode, @"\breturn\s+0\s*;", ""); // Remove return 0; as it is not necessary in C#

        // Add 'using System;' at the beginning for Console.WriteLine
        if (!cCode.Contains("using System;")) // Check if the using System; statement is already included
        {
            cCode = "using System;\n\n" + cCode; // Add 'using System;' at the start of the code if it's missing
        }

        // Handle other basic conversions (e.g., char to string, int to int, etc.)
        // For now, let's just handle basic `printf` to `Console.WriteLine` and main conversion.

        return cCode; // Return the converted C# code
    }
}

 Salida

Command-Line Example:
CToCSharpConverter example.c

Conversion complete. C# code saved to example.cs

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Divisor de archivos

    Este ejercicio consiste en crear un programa que divida un archivo (de cualquier tipo) en partes de un tamaño específico. El programa debe recibir como parámetros el nombre ...

  •  Cifrar un archivo BMP

    Este ejercicio consiste en crear un programa que encripte y desencripte un archivo de imagen BMP cambiando la marca "BM" en los primeros dos bytes a "MB" y viceversa. Para e...

  •  Conversor CSV

    Este ejercicio consiste en crear un programa que lea un archivo CSV con cuatro bloques de datos separados por comas (tres de texto y uno numérico) y genere un archivo de tex...

  •  Comparador de archivos

    Este ejercicio consiste en crear un programa en C# que determine si dos archivos (de cualquier tipo) son idénticos, es decir, si tienen el mismo contenido. El ...

  •  Mostrar BPM en la consola

    Este ejercicio consiste en crear un programa en C# que decodifique un archivo de imagen en formato Netpbm (en particular, el formato P1, que es para imá...

  •  Ancho y alto de PCX

    Este ejercicio consiste en crear un programa en C# que verifique si un archivo es una imagen en formato PCX y, si es así, extraiga y muestre las dimensiones (a...