Programming Course in C# ¡Free!

C# to Pascal converter

 Saturday, April 06, 2013 published by Exercises C#
Proposed exercise

Create a program to convert simple C# programs, such as the following one, to Pascal language:

using System;

public class Comparador
{
    public static void Main()
    {
        int numero1,numero2,numero3;

        Console.WriteLine("Dime un numero entero");
        numero1=Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Dime otro numero entero");
        numero2=Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Dime otro numero entero");
        numero3=Convert.ToInt32(Console.ReadLine());


        if((numero1>=numero2) && (numero1>=numero3))
            Console.WriteLine("{0} es el numero mayor",numero1);
        else
        {
            if((numero2>=numero1) && (numero2>=numero3))
                Console.WriteLine("{0} es el numero mayor",numero2);

            else
            {
                if((numero3>=numero2) && (numero3>=numero1))
                    Console.WriteLine("{0} es el numero mayor",numero3);
            }
        }
    }
}

The equivalent Pascal program would be:

(* Comparar tres números *)

program Comparador;
begin
  var numero1,numero2,numero3: integer;

  WriteLn('Dime un numero entero');
  ReadLn(numero1);

  WriteLn('Dime otro numero entero');
  ReadLn(numero2);

  WriteLn('Dime otro numero entero');
  ReadLn(numero3);


  if((numero1>=numero2) and (numero1>=numero3)) then
    WriteLn(numero1, ' es el numero mayor');
  else
    begin
    if((numero2>=numero1) and (numero2>=numero3)) then
      WriteLn(numero2, ' es el numero mayor')
    else
      begin
        if((numero3>=numero2) and (numero3>=numero1)) then
          WriteLn(numero3, ' es el numero mayor');
      end
    end
end.

Output



Solution


using System;
using System.IO;

class CSharpToPascal
{
static void Main()
{
string nameFileCSharp = Console.ReadLine();
string nameFilePascal = nameFileCSharp.Substring(0, 
nameFileCSharp.LastIndexOf(".")) + ".pascal";

StreamReader fileCSharp = File.OpenText(nameFileCSharp);
StreamWriter filePascal = File.CreateText(nameFilePascal);

string line;
do
{
line = fileCSharp.ReadLine();
if (line != null)
{
line = line.Replace("Console.WriteLine", "WriteLn");
line = line.Replace("\"", "\'");
line = line.Replace("==", " = ");
line = line.Replace("=", " = ");
line = line.Replace("public static void Main()", "");
line = line.Replace("{", "begin");
line = line.Replace("}", "end;");
line = line.Replace("}", "end.");
line = line.Replace("}", "end");
line = line.Replace("using System;", "");
line = line.Replace("public class", "program");

if (line.Contains("int ")) 
{
line = line.Replace("int ", "var ");
line = line.Replace(";", ": integer;");
}


if (line.Contains(" = Convert.ToInt32(Console.ReadLine());"))
{
line = 
line.Replace(" = Convert.ToInt32(Console.ReadLine());","");

line = "ReadLn(" + line + ");";
}

filePascal.WriteLine(line);
}

} 
while (line != null);

fileCSharp.Close();
filePascal.Close();
}
}