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.
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();
}
}