Ir ao conteúdo

Posts recomendados

Postado

Meu projeto :D Login: anonymousLPH senha: 9637zx

{ Objetivo --> Usar tudo o que aprendi }
////
////
////
Program Diaria ;
Var  i, V: integer;
Login, Senha, BV, Crono: String;
////
Procedure Cronometro;
var
hi,mi,si,csi,hh,mm,ss,cs:word;
Begin
  ClrScr;
  hi:=0;
  mi:=0;
  si:=0;
  csi:=0;
  cs:=0;
  gettime(hi,mi,si,csi);
  TextColor(2);
  Lowvideo;                                                                             //cronometro
  gotoxy(80,12);
  Write ('Hora atual:');
  Repeat
    gettime(hh,mm,ss,cs);
    gotoxy(80,14);
    Write (hh,':',mm,':',ss,':',cs);
  until keypressed;
  gotoxy(48,16);
  Lowvideo;
  Write('Demorou, ',hh-hi,' Horas/ ',mm-mi,' minutos/ ',ss-si,' segundos/ ',cs-csi,' centésimos, para executar a tarefa!');
  readkey;
  readln;
End;
Procedure Armazem;
Var Day : Array[1..100] of string;
Valor, i : integer;
Continuar : String;
Begin
  GotoXY(50,22);
  TextBackGround(10);
  TextColor(14);
  Write ('LUIZ, QUANTAS TAREFAS DESEJA ARMAZENAR HOJE ? (1,2,3,4...)   ');
  TextBackground(White);
  Textcolor(LightBlue);
  Write ('-->');
  TextBackGround(Black);
  Write('   ');
  Readln(Valor);
  For i:= 1 to valor do
  Begin
    Clrscr;
    GotoXY(66,22);
    Write ('Digite a - ',i,' - tarefa: ');
    Readln(Day[i]);
    Clrscr;
    Repeat
      GotoXY(62,24);
      Write ('QUAL TAREFA DESEJA CONSULTAR ? (1,2,3,4...)   ');
      Readln(i);
      GotoXY(68,26);
      TextBackGround(14);
      TextColor(LightRed);
      Writeln ('A TAREFA A FAZER É  ->> ', Day[i],' <<- ');
      TextBackGround(Black);
      GotoXY(50,30);
      Write ('Deseja Iniciar a contagem de tempo para fazer essa tarefa ? (SIM/NAO) ');
      Readln(Crono);
      If (Upcase(Crono)) = 'SIM' then
        Begin
          Cronometro;
        end;
        //Armazenagem
        TextColor(14);
        GotoXY(68,28);
        Write ('Deseja continuar ? (SIM/NAO) -> ');
        Readln(Continuar);
        
        Clrscr;
      Until (Upcase(Continuar)) = 'NAO';
      end;
    End;
    
    ////
    Begin                     //Login and senha
      GotoXY(74,3);
      BV:= 'BEM VINDO LUIZ !!! :D ';
      TextBackground(Black);
      For i:= 1 to Length(BV)do
      Begin
        TextColor(Blink + 12);
        Write (BV[i]);
        Delay(50);
      end;                // termina o Welcome
      While V <> 1 do
      Begin
        Textbackground(black);
        GotoXY(3,6);
        TextBackGround(1);
        TextColor(blink+Red);
        lowvideo;
        Write ('|||||||||||||||||||||| Digite seu Login:   ');
        TextColor(White);
        TextBackGround(Black);
        Write('  ');
        TextBackGround(4);
        Write (' >>> ');
        TextBackGround(Black);
        TextColor(2);
        Write('  ');
        TextColor(Red);
        Read (Login);
        TextBackGround(Black);
        
        If (Upcase(Login)) = 'ANONYMOUSLPH' then
          Begin
            GotoXY (70,6);
            TextBackGRound(BLUE);
            TextColor(LightGreen);
            Write (' V ');
            V:= 1;
            GotoXY(55,11);
            TextColor(Green);
            Writeln('Login Correto!!! ');
          end
          Else
          Begin
            GotoXY (70,6);
            TextBackGround(BLUE);
            TextColor(LightRed);
            Write (' X ');
            V:= 2;
            GotoXY(55,11);
            TextColor(RED);
            Writeln('Login incorreto!!!');
          end;
          
          
          GotoXY(3,8);
          TextBackGround(1);
          TextColor(blink+Red);
          lowvideo;
          Write ('||||||||||||||||||||| Digite sua Senha:    ');
          TextColor(White);
          TextBackGround(Black);
          Write('  ');
          TextBackGround(4);
          Write (' >>> ');
          TextBackGround(Black);                               
          TextColor(2);
          Write('  ');
          TextColor(Red);
          Readln(Senha);
          TextBackGround(Black);
          
          If (Upcase(Senha)) = '9637ZX' then
            Begin
              GotoXY (70,8);
              TextBackGRound(BLUE);
              TextColor(LightGreen);
              Write (' V ');
              V:= 1;
              GotoXY(55,10);
              TextColor(Green);
              Writeln('Senha correta!!!');
            end
            Else
            Begin
              GotoXY (70,8);
              TextBackGround(BLUE);
              TextColor(LightRed);
              Write (' X ');
              V:=2;
              GotoXY(55,10);
              TextColor(RED);
              Writeln('Senha incorreta!!!');
            end;
            
            If V <> 1 then
            Begin
              TextBackGround(Black);
            end;
            
            Writeln;
            TextColor(Red+Blink);
            GotoXY(20,12);
            TextBackGround(LightRed);
            Textcolor(White+Blink);
            Writeln('---Press Enter---');
            TextBackGround(Black);
            Readkey;
            Clrscr;
          end;
          
          Case V of
            1:
            Begin
              Armazem;
            end
            else
            Begin
              V:= 99;
            end;
            
            
          End;
          
        End.

 

  • Curtir 1
  • Membro VIP
Postado

Traduzir para VisuAlg? para que?

 

Geralmente seria o oposto... eu sugiro fica apenas no Pascal...  é o "pai" do VisuAlg, mais robusto e didático. VisuAlg é para dar um pontapé inicial... como já pegou o gosto, não acho interessante voltar.

 

A não ser que tenha um motivo específico...

adicionado 0 minutos depois

Quase tudo que você faz no VisuAlg, vai fazer no Pascal, mas o oposto não. O VisuAlg é muito limitado em relação as funcionalidades e uso.

  • Curtir 1
  • Membro VIP
Postado
4 horas atrás, AnonymousLPH disse:

@Simon Viegas Entendo, eu só queria colocar no VisualG3 pra ver como iria ficar, dizem que fica com visual diferente, de programa mesmo, não tudo preto. 

 

De qualquer sorte, o VisuAlg não gera arquivos ".exe". Em fim... acho que não vale a pena nem tentar.

 

 

Sobre o seu código:

5 horas atrás, AnonymousLPH disse:

  For i:= 1 to valor do
  Begin
    Clrscr;
    GotoXY(66,22);
    Write ('Digite a - ',i,' - tarefa: ');
    Readln(Day[i]);
    Clrscr;
    Repeat
      GotoXY(62,24);
      Write ('QUAL TAREFA DESEJA CONSULTAR ? (1,2,3,4...)   ');
      Readln(i);

 

Nesse exemplo aí, ali na última linha, você está sobrescrevendo o valor de i, sendo que este já está sendo controlado pelo for. Logo, vai bugar tudo. Mas independente desse uso incorreto, evite usar a nomenclatura de variável i em outros fins que não seja para percorrer um vetor (é uma convensão). Para pegar  o "número da tarefa" que deseja, poderia usar:

numTarefa :integer;

Entende?

 

Outra ponto que interessante seria não misturar inglês com português... isso também entra na questão da "coerência" no código. Ou faz tudo em inglês, ou faz tudo em português... (obs.: claro que podem existir exceções, mas para quê usar Day se simplesmente poderia ser Dia, já que a estrutura está em português?)

 

Abaixo segue um exemplo de sugeriria algumas alterações da procedure Armazem():

obs.: por quê "Armazem"? é de "armazen" mesmo ou seria uma 'abreviatura' de "Armazenar" ou "Armazenagem"? em fim..

 

procedure armazem();
  var
    tarefas :array[1..100] of string;
    qtdTarefas,
    numTafera,
    i :byte;
    ligarCronometro :char;
    continuar :char;
  begin
  TextBackground(LightGreen);
  TextColor(14);
  GotoXY(50,22);
  write  ('LUIZ, QUANTAS TAREFAS DESEJA ARMAZENAR HOJE ? (1,2,3,4...)   ');
  TextBackground(White);
  Textcolor(LightBlue);
  write  ('-->');
  TextBackground(Black);
  write  ('   ');
  readln(qtdTarefas);
  for i:= 1 to qtdTarefas do
    begin
    ClrScr;
    GotoXY(66,22);
    write  ('Digite a - ', i, ' - tarefa: ');
    readln(tarefas[i]);
    ClrScr;
    repeat
      GotoXY(62,24);
      write ('QUAL TAREFA DESEJA CONSULTAR ? (1,2,3,4...)   ');
      readln(numTafera);
      TextBackground(Yellow);
      TextColor(LightRed);
      GotoXY(68,26);
      writeln ('A TAREFA A FAZER É  ->> ', tarefas[numTafera],' <<- ');
      TextBackground(Black);
      GotoXY(50,30);
      write ('Deseja Iniciar a contagem de tempo para fazer essa tarefa ? (SIM/NAO) ');
      readln(ligarCronometro);
      if (Upcase(ligarCronometro)) = 'S' then
        cronometro();
      TextColor(14);
      GotoXY(68,28);
      write  ('Deseja continuar ? (SIM/NAO) -> ');
      readln(continuar);
      ClrScr;
      until (UpCase(continuar)) = 'N';
    end;
  end;

 

 

Cara... dê uma olha no tópico abaixo! tem um monte de coisinhas que aposto que você vai se amarrar...😃

 

 

De cara já daria para aproveitar as de ajustes de cores:

 

Em 04/03/2010 às 13:03, Simon Viegas disse:

procedure Formatar(corTexto, corFundo:byte);
{ *** Formata o texto e a tela do Pascal *** }

 

 

e

 

Em 04/03/2010 às 13:03, Simon Viegas disse:

procedure WritePic(cor:byte; texto:String);
{imprime texto colorido - nao desce a linha}

procedure WriteLNPic(cor:byte; texto:String);
{ *** Imprime texto colorido - desce a linha *** }

 

A depender alterar o WritePic(), para:

procedure WritePic(corTexto, corFundo:byte; texto:String);

:D

 

  • Curtir 1
  • Membro VIP
Postado
8 horas atrás, AnonymousLPH disse:

@Simon Viegas N consegui entender esse lance de mudar a cor de fundo do pascal, essa procedure, não aprendi parâmetros direito...

 

Deu uma olhada lá no tópico [Pascal] Projeto UNIT de utilidades? A ideia lá é utilizar uma unit com procedimentos notáveis... mas no seu caso, a ideia seria ir lá e "copiar" as ideias que já existem. Copia o trecho e joga no seu código.

 

Para usar o que "muda a cor do texto apenas para uma linha", apenas insira essas duas procedure no seu código.

 

Aí, toda vez que você quiser imprimir apenas uma linha com uma cor diferente, mas que as configurações de cores volte para o anterior, usa uma delas.

 

Ex.:

TextColor(Yellow); //para exemplificar a cor que está no momento
...
...
writeln('Essa linha vai sair em amarelo')
WriteLNPic(White, 'Essa linha vai sair em branco mais claro');
writeln('Essa linha vai sair em amerelo'); //vai continuar com a cor original

Ou seja: esse procedimento pode ser útil para simplificar quando quer apenas imprimir uma linha com uma cor diferente. Outra grande vantagem é que você não precisa saber que cor estava antes, pois ela vai deixar como estava após executar. Obs.: se você vai imprimir várias linhas de uma cor, talvez seja melhor invocar o TextColor() mesmo... vai do caso.

 

Se você analisar, está recebendo 2 parâmetros. É só seguir o raciocínio.. se eu quero 3 (pois preciso de mais um para a cor do fundo, que não foi "pensado" no momento), basta lá e inserir mais um parâmetro na assinatura. Algo como:

 

14 horas atrás, Simon Viegas disse:

A depender alterar o WritePic(), para:


procedure WritePic(corTexto, corFundo:byte; texto:String);

 

ou

procedure WritePic(corTexto:byte; corFundo:byte; texto:String);

E dentro do procedimento utilizar essas variáveis. Lá no WritePicLN(), faz também os ajustes necessários.

 

Por aí vai.

 

Qualquer dúvida é só postar.

adicionado 2 minutos depois

...e claro, na hora de invocar o procedimento, passar os 3 parâmetros, ex.:

WriteLNPic(White, Blue, 'Essa linha vai sair em branco mais claro e cor o fundo azul');

 

  • Membro VIP
Postado
8 minutos atrás, AnonymousLPH disse:

@Simon Viegas Entendi perfeitamente a parte do parâmetro, mas, n entendi a parte das UNIT, fui lá, dei uma lhada e n entendi aquele USES CRT, {biblioteca com comandos extas} CRT_FCH;, pois não funcionou no meu pzim 6.0

 

 

Você não precisa entender a unit, mas apenas parte do conteúdo dela...

 

1 hora atrás, Simon Viegas disse:

Deu uma olhada lá no tópico [Pascal] Projeto UNIT de utilidades? A ideia lá é utilizar uma unit com procedimentos notáveis... mas no seu caso, a ideia seria ir lá e "copiar" as ideias que já existem. Copia o trecho e joga no seu código.

 

adicionado 3 minutos depois

Olhe apenas as funções e procedimentos... não se preocupe com o resto.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...