Duvidas de programação

Jammin @

Power Member
Tenho feito uns programinhas em pascal mas inda tenho uma duvidas...

E possivel dar 1 menu de entrada em que utilizador escolhe o que precisa... exemplo:

Bem vindo...
O que deseja fazer:
1. Calcular area do rectangulo
2. Calcular area..

A pessoa carregava 2 e iri para esse programa...

É possivel dar 1 interface a um programa em pascal?

Obrigado desde já..
 
Yep!

Fazes o texto, e fazes uns quantos Writelns com esse texto, após isto fazes um Readln e guardas esse valor.

Como validar esse valor? Podes usar uma série de ifs, ou então usa a instrução Case.

Dentro de cada uma dessas validações, executas as acções que pretenderes, ou chamas os procedimentos que as executam ;)

HecKel
 
O que tu queres fazer é um output que esteja lá um menu, pressionas qualquer número que corresponde ao menu e ir logo para esse programa, fazes o que quiseres, se quiseres voltar ao inicio pressionas um botao e ele volta ao inicio...

Fiz uns quantos programas assim, e até não é dificil, depois é optimizar (cores) PASCAL serve para aprenderes noções base da programação, quanto mais aprendes mais queres fazer, e depois vais levado a outra linguagem.


Nesta linha

Código:
writeln('o rectangulo tem a area de ',z, ' ',q, ');
muda para

Código:
writeln('o rectangulo tem a area de ',z:2:4, ' ',q:2:4, ');
O que isto faz é para o lado direito da virgula (4) mete só até 4 números por exemplo em vez de dar 0000000000 dava 0000 para o lado esquerdo o 2 é só a enfeitar porque se reparares consegues meter mais do que 2 números.

Já não me lembro onde se metem esses números, mas penso que sejam onde disse.
 
Última edição:
Yep, é normal. Deve-se ao tipo da variável.

Isso dá para "formatar", não tenho é a certeza como, julgo que é algo como:

Código:
Writeln("valor" + var:N:M)

Sendo N e M inteiros que definem os limites, N para a parte inteira, M para a parte decimal.

Realço que não tenho a certeza desta parte da formatação, procura no google por isto.

HecKel
 
Código:
program euroescmenu (input,output);
uses crt;
var
    esc,euro:real;
    a,b,opc:integer;

procedure clear ;
      begin
        a:=1;
        repeat
        writeln;
        a:=a+1;
        until a>=25
     end;
     procedure clear2 ;
      begin
        b:=1;
        repeat
        writeln;
        b:=b+1;
        until b>=9
     end;


procedure eurosescudos;
   begin
      clear;
      TextColor(black);
      TextBackground(green);
      writeln('Insira um valor em euros');writeln;
      write('euro ->>  ');
      read(euro);clear;
      writeln('O valor de Euro ', euro:0:0);writeln;
      writeln('Cooresponde a ',(euro * 200.482):0:0,' $ 00');writeln;
      readln;
   end;
procedure escudoseuros;
   begin
      clear;
      TextColor(black);
      TextBackground(green);
      writeln('Insira um valor em escudos');writeln;
      write('esc ->>  ');
      read(esc);clear;
      writeln('O valor de ',esc:0:0,' $ 00 ');writeln;
      writeln('Cooresponde a Euro ',(esc / 200.482):2:3);writeln;
      readln;
   end;
procedure naoopcao;
    begin
      while (opc < 1) or ( opc >3) do
       begin
         TextColor(black);
         TextBackground(green);
         writeln('            op‡Æo errada !!!! ','digite de novo uma opcao entre (1 e 3)');writeln;
         write('                                  opc ->>  ');
         readln(opc);
       end;
    end;

procedure opcao;
    begin
      TextColor(black);
      TextBackground(green);
      writeln;
      writeln('                      Escolha uma opcao entre (1 e 3) ');writeln;
      write('                                  opc ->>  ');
      readln(opc);
      naoopcao;
    end;


  procedure fim;
      begin
          clear;
          TextColor(black);
          TextBackground(blue);
          writeln('                 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ');
          writeln('                 º               Programa feito por              º ');
          writeln('                 º         Jos‚ Alfredo Andrade Ribeiro          º ');
          writeln('                 º                         A                     º ');
          writeln('                 º                   04 - 12 - 2001              º ');
          writeln('                 º                                               º ');
          writeln('                 º          Muito obrigado Voltem sempre!!!!     º ');
          writeln('                 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ');
          clear2;
          readln;
       end;

procedure menu;
   begin
      clear;
      TextColor(black);
      TextBackground(red);
      writeln;
      writeln('               ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ');
      writeln('               º  PROGRAMA DE COMVERSAO DE EUROS EM ESCUDOS º ');
      writeln('               º               E VICEVERSA !!!!             º ');
      writeln('               ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ');
      writeln;writeln;
      writeln('                                ÉÍÍÍÍÍÍÍÍÍÍ»                   ');
      writeln('                    ÉÍÍÍÍÍÍÍÍÍÍ͹   MENU   ÌÍÍÍÍÍÍÍÍÍÍ» ');
      writeln('                    º           ÈÍÍÍÍÍÍÍÍÍͼ          º ');
      writeln('                    º                                 º ');
      writeln('                    º      1 ->> Escudos / Euros      º ');
      writeln('                    º      2 ->> Euros / Escudos      º ');
      writeln('                    º      3 ->> Sair                 º ');
      writeln('                    º                                 º ');
      writeln('                    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ');
      writeln;writeln;writeln;writeln;
      opcao;
    end;

    begin
  clear;
   repeat
      menu;
       case opc of

       3:begin
            TextColor(black);
            TextBackground(blue);
            fim;
         end;
       1:begin
           escudoseuros;
           readln;
         end;
       2:begin
           eurosescudos;
           readln;
         end;
       end
       until (opc = 3);
end.

tens aqui um programa feito por mim com menu, espero que ajude

erspero que ajude
 
Última edição:
depois em cada procedure area() ou areatriangulo(), etc

tens de fazer uma cena do tipo

deseja continuar sim/não

se sim vai para o menu (chamas o menu novamente), se não sai do programa

mais ou menos isso

procedure continuar

Código:
procedure continuar;
  begin
     clear;
     writeln('Deseja continuar (s/n)');
     writeln('');
     write('          opc ==> ');
     readln(opc);
     aceitar;
     if opc = 's'then
        begin
           dados;
           clear;
           resultado;
           continuar;
        end
           else
             if opc = 'n' then
               begin
                 clear;
                 nao;
                 readln;
             end;
  end;

tens aqui um topico com alguma ajuda em pascal

http://www.techzonept.com/showthread.php?t=166664&highlight=pascal
 
Última edição:
Sei muito pouco de programação entao não percebo algumas das sintaxes...

por exemplo clear e para voltar ao inicio?



clear foi um procedure (funcao) que ele criou ...
e pelo que eu vi, a funcao desse procedure e apenas inserir 25 linhas em branco, ou seja, limpar o ecra!!
espero que o criador da procedure me corrija caso eu esteja errado...
 
o maps_5 tem razão no que disse da procedure clear

eu acho que o codigo esta bastante bem sintetizado e perceptivel.

uma questão de olhares para ele e tentar percebelo.

espero que ja tenha ajudado
 
Back
Topo