Inglês Instrumental em Pascal

Program AULA_BASICA_DE_INGLES_INSTRUMENTAL;
uses crt;
var
opcao : integer;

    // Site: http://programjm.blogspot.com.br/
    // Autor: João Matheus Santos Assis.

    {
     Neste programa pretende-se desenvolver habilidades de
     leitura e Escrita de Números, Dias da Semana e Meses do
     Ano na Lingua Inglesa.

     Aqui é proporcionado condições de tradução de palavras,
     sendo uma forma dinâmica e até mesmo educativa de
     aprender o Inglês Instrumental.

     O Inglês Instrumental é o Inglês com Objetivos Específicos,
     ou seja, entender textos das áreas de interesse do aluno.
     Neste caso este programa fornece ferramenta úteis para quem
     é iniciante no Inglês e buscam testar a escrita.
    }


    procedure numero;
    // Aqui colocamos as variáveis que serão usadas só neste procedimento.
    var
    vetorNumero : array[1..10] of String;
    vetorVerificacaoNumero : array[1..10] of String;
    numeroDeAcerto: integer;
    i : integer;
    begin

        numeroDeAcerto := 0;

        for i := 1 to 10 do begin
            write (i, ' - ');
            readln(vetorNumero[i]);
        end;

        {
         No vetorVerificacaoNumero é definido a resposta
         correta, ou seja, os Numeros de 1 à 10 em Inglês.
        }
        vetorVerificacaoNumero[1] := 'ONE';
        vetorVerificacaoNumero[2] := 'TWO';
        vetorVerificacaoNumero[3] := 'THREE';
        vetorVerificacaoNumero[4] := 'FOUR';
        vetorVerificacaoNumero[5] := 'FIVE';
        vetorVerificacaoNumero[6] := 'SIX';
        vetorVerificacaoNumero[7] := 'SEVEN';
        vetorVerificacaoNumero[8] := 'EIGHT';
        vetorVerificacaoNumero[9] := 'NINE';
        vetorVerificacaoNumero[10] := 'TEN';

        writeln;

        {
         Aqui é feito a correção do questionário; Tanto a resposta
         estando Certa como Errada é mostrado os Numeros em Inglês.
        }
        for i := 1 to 10 do begin
            if (UpCase(VetorNumero[i]) = vetorVerificacaoNumero[i]) then begin
               writeln (' Correct! ', i ,' - ', vetorVerificacaoNumero[i]);
               numeroDeAcerto := numeroDeAcerto + 1;
            end else
                writeln ('   Wrong! ', i, ' - ', vetorVerificacaoNumero[i]);
        end;

        writeln;
        // Exibindo o número de acerto do usuário.
        writeln('Number of Hits: ', numeroDeAcerto);

        // É esperado aqui que o usuário pressione uma tecla para continuar.
        readln;
    end;



    procedure diaDaSemana;
    //Aqui colocamos as variáveis que serão usadas só neste procedimento.
    var
    vetorDiaDaSemana : array[1..7] of String;
    vetorVerificacaoDiaDaSemana : array[1..7] of String;
    numeroDeAcerto : integer;
    i : integer;
    begin

        numeroDeAcerto := 0;

        for i := 1 to 7 do begin
            // chr(167): retorna um caractere da Tabela Ascii.
            write (i, chr(167) ,' Day of the week - ');
            readln(vetorDiaDaSemana[i]);
        end;

        vetorVerificacaoDiaDaSemana[1] := 'SUNDAY';
        vetorVerificacaoDiaDaSemana[2] := 'MONDAY';
        vetorVerificacaoDiaDaSemana[3] := 'TUESDAY';
        vetorVerificacaoDiaDaSemana[4] := 'WEDNESDAY';
        vetorVerificacaoDiaDaSemana[5] := 'THURSDAY';
        vetorVerificacaoDiaDaSemana[6] := 'FRIDAY';
        vetorVerificacaoDiaDaSemana[7] := 'SATURDAY';

        writeln;

        for i := 1 to 7 do begin
            if (UpCase(vetorDiaDaSemana[i]) = vetorVerificacaoDiaDaSemana[i]) then begin
               writeln (' Correct! ', i, chr(167), ' Day of the week - ',
               vetorVerificacaoDiaDaSemana[i]);
               numeroDeAcerto := numeroDeAcerto + 1;
            end else
            writeln ('   Wrong! ', i , chr(167) ,' Day of the week - ',
            vetorVerificacaoDiaDaSemana[i]);
        end;

        writeln;
        writeln('Number of Hits: ', numeroDeAcerto);

        readln;
    end;



    procedure mesesDoAno;
    // Aqui colocamos as variáveis que serão usadas só neste procedimento.
    var
    vetorMesesDoAno : array[1..12] of String;
    vetorVerificacaoMesesDoAno : array[1..12] of String;
    numeroDeAcerto : integer;
    i : integer;
    begin

        numeroDeAcerto := 0;

        for i := 1 to 12 do begin
            write (i, chr(167) ,' Month of the year - ');
            readln(vetorMesesDoAno[i]);
        end;

        vetorVerificacaoMesesDoAno[1] := 'JANUARY';
        vetorVerificacaoMesesDoAno[2] := 'FEBRUARY';
        vetorVerificacaoMesesDoAno[3] := 'MARCH';
        vetorVerificacaoMesesDoAno[4] := 'APRIL';
        vetorVerificacaoMesesDoAno[5] := 'MAY';
        vetorVerificacaoMesesDoAno[6] := 'JUNE';
        vetorVerificacaoMesesDoAno[7] := 'JULY';
        vetorVerificacaoMesesDoAno[8] := 'AUGUST';
        vetorVerificacaoMesesDoAno[9] := 'SEPTEMBER';
        vetorVerificacaoMesesDoAno[10] := 'OCTOBER';
        vetorVerificacaoMesesDoAno[11] := 'NOVEMBER';
        vetorVerificacaoMesesDoAno[12] := 'DECEMBER';

        writeln;

        for i := 1 to 12 do begin
            if (UpCase(vetorMesesDoAno[i]) = vetorVerificacaoMesesDoAno[i]) then begin
               writeln (' Correct! ', i , chr(167) ,' Month of the year - ',
               vetorVerificacaoMesesDoAno[i]);
               numeroDeAcerto := numeroDeAcerto + 1;
            end else
            writeln ('   Wrong! ', i , chr(167) ,' Month of the year - ',
            vetorVerificacaoMesesDoAno[i]);
        end;

        writeln;
        writeln('Number of Hits: ', numeroDeAcerto);

        readln;
    end;



    {
     Aqui é feito o procedimento cabeçalho do Menu Ativo,
     facilitando assim a compreenção do software para o usuário.
    }
    procedure cabecalho(Titulo: String);
    var
    linha: integer;
    begin
  
        // Escreve traço (-) e espaço em brancos ( ).
        for linha := 1 to 39 do
            write ('- ');
     
        // Quebra de Linha.
        writeln;
     
        // Escreve espaço em branco seguido pelo Título enviado por parâmetro.
        for linha := 1 to 30 do
            write (' ');

        writeln (Titulo);
     
        for linha := 1 to 39 do
            write ('- ');
     
        writeln;
        writeln;
    end;
  


    // Programa Principal.
    begin

        // O Laço de repetição só terá fim quando o usuário digitar 4 como opção.
        repeat
     
            cabecalho ('ENGLISH INSTRUMENTAL');

            // Menu de Opção.
            writeln (' 1 - NUMBERS');
            writeln (' 2 - DAYS OF THE WEEK');
            writeln (' 3 - MONTHS OF THE YEAR');
            writeln (' 4 - EXIT');
            writeln;

            // Leitura da Opção escolhida.
            write ('Enter option: ');
            readln(opcao);


            // Apaga o que estiver na tela.
            clrscr;
     
     
            // Seletor responsável por desviar para o parâmetro correspondente.
            CASE (opcao) OF

                1 : begin
                    cabecalho ('NUMBERS');
                    Numero;
                end;
          
                2 : begin
                    cabecalho ('DAYS OF THE WEEK');
                    diaDaSemana;
                end;
          
                3 : begin
                    cabecalho ('MONTHS OF THE YEAR');
                    mesesDoAno;
                end;
            end;

            clrscr;
     
        until (opcao = 4);

        readkey;
    end.



Palavras-Chaves: Número, Dias da Semana, Meses do Ano, Sair do Programa, Questionário, Teste de Aprendizado, Software Educacional, Caixa Alta em Pascal, Vetor, Operadores Condicionais, Uso do Case,  If...Then, Procedimentos, Procedure, Laço de repetição, Repeat...Until, For...To, Número de Acertos, Menu de Opção, Limpar a tela, Quebra de Linha, Parâmetro, Título da aplicação, Lógica de Programação, Resposta, Correção, Tabela Ascii, Dev-Pascal, Usuário, Inglês Instrumental, Pascal.





Feito no Dev-Pascal 1.9.2 | Executável




Feito no Dev-Pascal 1.9.2 | Executável