Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Zukhe

Pascal Problema com pascal simples (principiante)

Recommended Posts

Program Pzim ;
var x,y:integer;

Begin
   y:= 30;
    x := y;
    repeat
      begin
        readkey;
        if readkey = #65 then
        begin
          x := x -1;
        end
        else
        if readkey = #68 then
        begin
          x := x +1;
        end
        else
        if readkey = #83 then
        begin
          y := y +1;
        end
        else
        if readkey = #87 then
        begin
          y := y -1;
        end;
        write ('X');
        gotoxy (x,y);
      end;
End.

O programa aponta que o ultimo "END" não deveria existir, é um código tão curto e não consigo enxergar o problema, alguém ai consegue?

"Erro sintático na linha 32..."

" 'END' não esperado!"

adicionado 1 minuto depois

faltou o until

adicionado 1 minuto depois

filha da *****

adicionado 1 minuto depois

sou um *****

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Zukhe.

 

Foi apenas um detalhe na sintaxe... repeat  não precisa de begin/end. Apenas o seu until.

 

Segue seu código original indentado:

Program Pzim ;
var 
  x,y:integer;
Begin
y:= 30;
x := y;
repeat
  begin
  readkey;
  if readkey = #65 then
    begin
    x := x -1;
    end
  else
    if readkey = #68 then
      begin
      x := x +1;
      end
    else
      if readkey = #83 then
        begin
        y := y +1;
        end
    else
      if readkey = #87 then
        begin
        y := y -1;
        end;
    write ('X');
    gotoxy (x,y);
  end;
End.

Obs.: esses if não precisam de begin/end. Basta apagá-los. Lembrando que antes do else não teme tirar o ";".

 

 

Por favor, posta o seu código final para analisarmos.

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Program Pzim ;
    var x,y,xt1,xt2,xt3,yt,h,C,del:integer;
    
    Begin
      y:= 30;
      x := 75;
      repeat
          readkey;
          begin  //movimentação FODELASTICA da nave espacial
            if readkey = #65 then
            begin
              x := x -1;
            end
            else
            if readkey = #68 then
            begin
              x := x +1;
            end
            else
            if readkey = #83 then
            begin
              y := y +1;
            end
            else
            if readkey = #87 then
            begin
              y := y -1;
            end;
            
            clrscr;                     // clear screeen
            gotoxy(x,y -5);
            writeln ( '    /\     ' );                  // nave espacial em ascii
            gotoxy(x,y -4);
            writeln ( '   (  )    ' );
            gotoxy(x,y -3);
            writeln	( '   (  )    ' );
            gotoxy(x,y -2);
            writeln ( '  /|/\|\   ' );
            gotoxy(x,y -1);
            writeln ( ' /_||||_\  ' );
          end;
      until readkey = #27;
      
    	del := 200;
      repeat        // formação de destroços fodelastica tb
          yt:= 0;
          C:= 0;
          xt1:= random(50);         // posição do primeiro obstaculo
          xt2:= 50 + random(50);              //do segundo
          xt3:= 95 + random(50);                      // do terceiro
          repeat
            c := c +1;
              begin
                gotoxy(xt1,yt + c);
                writeln (#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219,'               ',#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219);      // primeiro obstaculo
              end;
              begin
                gotoxy(xt2,yt + c);
                writeln (#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219);    // segundo
              end;
              begin
                gotoxy(xt3,yt + c);
                writeln (#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219,'               ',#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219+#219);      // terceiro
                delay (del);           // definição da dificuldade
              end;
              clrscr;
          until C = 45;
        
      until 7 = 1;             // GOOOOOOLLLL DA ALEMANHA
    End.

    Consegui fazer os dois sistemas funcionarem.....em paralelo.....agora falta fazer funcionar simultaneamente, alguma coisa com procedure ou function me ajudaria? Obrigado pela ajuda!  ps.: Sim, eles estão descaradamente separados, embora, no mesmo programa, mas ainda não tive nenhuma ideia pra deixar simultâneo, por isso deixei assim.

    Editado por Simon Viegas
    Alterar tipo de CODE para "C Languages"

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @Zukhe.

     

     

    Em 11/11/2017 às 20:25, Simon Viegas disse:

    Obs.: esses if não precisam de begin/end. Basta apagá-los. Lembrando que antes do else não teme tirar o ";".

    Nenhum comentário?

     

     

     

    22 horas atrás, Zukhe disse:

    Consegui fazer os dois sistemas funcionarem.....em paralelo.....agora falta fazer funcionar simultaneamente, alguma coisa com procedure ou function me ajudaria?

    Então, creio que paralelo e simultaneamente sejam a mesma coisa. Mas no caso, o Pascal executa as instrução de modo sequencial mesmo. Pelo menos no nível atual de programação... (existe a possibilidade de uso de threads, mas acho que não vem ao caso).

     

     

     

    22 horas atrás, Zukhe disse:

    Sim, eles estão descaradamente separados, embora, no mesmo programa, mas ainda não tive nenhuma ideia pra deixar simultâneo, por isso deixei assim.

    Analisando o código e fazendo alguns testes, acho que já consegui entender como mais ou menos deve funcionar o programa. Acho que dá para fazer de modo sequencial mesmo. Abaixo tento explicar.

     

     

     

    Mas vamos lá. Alguns pontos:

     

    1) IDENTIFICAÇÃO DA TECLA PRESSIONADA

    Ao invocar a function ReadKey, o programa trava e fica aguardando a tecla ser pressionada. No caso, do jeito que você fez, ficará aguardando uma tecla para cada if... mas o que provavelmente você precisa é que leia apenas uma tecla e depois analise ela. Use algo assim:

    var
      tecla:char;
    ...
    tecla:=ReadKey;

    E usa a variável tecla nos if... e no until. Dessa forma, lerá a tecla apenas uma vez para cada loop.

     

     

     

    2) ESTRUTURA DE PROGRAMAÇÃO

    A estrutura atual está dividida em duas partes: a nave e a sua movimentação; e os destroços e sua movimentação.

     

    Pelo que eu vi, dá para fazer as duas estruturas funcionarem "de modo alternado", ou seja, deixar os destroço caindo, e se pressionar uma tecla, movimenta a nave, e volta novamente para os destroços até que nova tecla seja pressionada... no caso, a "simultaneidade" será simulada.

     

    Antes de entrar na tentativa de como fazer alternar entre uma parte e outra, sugiro antes reorganizar cada umas delas.

     

     

    ***

     

    Resumidamente:

    Pegue apenas uma das estruturas e deixe funcionando certinho. Depois partimos para outra, e após juntamos as duas. É melhor fazer assim por que seria complicado tentar fazer as 3 coisas ao mesmo tempo (nave, destroços e juntar).

     

    No aguardo.

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×