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