1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvidas de programação

Discussão em 'Programação' iniciada por Jammin @, 14 de Agosto de 2007. (Respostas: 11; Visualizações: 856)

  1. Jammin @

    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á..
     
  2. HecKel

    HecKel The WORM

    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
     
  3. Jammin @

    Jammin @ Power Member

    isto e normal em pascal?
    estes numeros certos mas com muitos 0?
    [​IMG]
     
  4. loster

    loster I'm cool cuz I Fold

    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: 15 de Agosto de 2007
  5. HecKel

    HecKel The WORM

    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
     
  6. alfinete

    alfinete Power Member

    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: 15 de Agosto de 2007
  7. alfinete

    alfinete Power Member

    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: 15 de Agosto de 2007
  8. alfinete

    alfinete Power Member

    gostava de saber se funcionou a minha ajuda?

    espero eue sim
     
  9. Jammin @

    Jammin @ Power Member

    Sei muito pouco de programação entao não percebo algumas das sintaxes...

    por exemplo clear e para voltar ao inicio?
     
  10. loster

    loster I'm cool cuz I Fold

    Onde vês o procedure clear, é o nome que o procedimento tem.
     
  11. maps_5

    maps_5 Power Member



    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...
     
  12. alfinete

    alfinete Power Member

    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
     

Partilhar esta Página