Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
fjsmoreira

Duvida Em ciclo!!

Recommended Posts

fjsmoreira

Boa Tarde!!

Era o seguinte, estou a fazer o projecto de 1ºAno da universidade, e precisa de uma pequena ajuda.

Como posso eu fazer um ciclo infinito que não seja infinito?  :(

isto é, preciso que o ciclo nunca pare a não ser quando eu carregue numa tecla do computador.

Espero que me consigam ajudar...o projecto era para entregar ontem!  :fartnew2:

Abraços!!!

Share this post


Link to post
Share on other sites
pmg

for (; {
  /* resto do ciclo infinito, antes do teste */
  if (tecla_premida()) break;
  /* resto do ciclo infinito, depois do teste */
}

E a função `tecla_premida()` teria o seguinte protótipo:

/* devolve 0 se não houve/não está uma tecla premida;
* ou 1 se tiver havido/estiver uma tecla premida. */
int tecla_premida(void);

A definição propriamente dita da função `tecla_premida()` não é possível fazer sem saber muito mais do ambiente onde queres usá-la. Se for em Windows é duma maneira, se for em Linux é doutra; e se for para o microprocessador do meu frigorífico não é possível pois o meu frigorífico não tem teclas :P


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
fjsmoreira

Muito Obrigado!!

mas....nao estou a entender mt bem...peço desculpa  :down:

o ambiente é windows.

mais uma vez, obrigado!

cumprimentos.

Share this post


Link to post
Share on other sites
Jeronimus Linuxius
Como posso eu fazer um ciclo infinito que não seja infinito?  :(

Não percebi... foste muito rápido. :-P

isto é, preciso que o ciclo nunca pare a não ser quando eu carregue numa tecla do computador.

Um ciclo infinito em C fica assim:

for (; {
    // Código do ciclo aqui.
}

Dentro do ciclo, se executares um break, o ciclo sai.

Do entanto, para fazeres (uma coisa parecida com) o que queres, o melhor é mesmo:

fgetc(stdin);

Que só termina se premires ENTER (ou uma linha de texto seguida de um ENTER).

Se queres que ele termine mesmo com qualquer tecla, então é bem mais complicado, e nem seque é possível fazer de maneira portável. A biblioteca do C não está desenhada para esse tipo de interface tão interactivo.

No Linux, então, é uma seca... Tens de meter o terminal em raw mode (porque by default o terminal está em cooked mode, o que significa que o programa não "vê" nada do que tu digitas até premires enter).

Espero que me consigam ajudar...o projecto era para entregar ontem!

Projecto?

JJ

Share this post


Link to post
Share on other sites
fjsmoreira

Obrigado!! :( Era isso mesmo que eu queria....

:)

Ciclo infinito sem ser infinito... :D quando carregas ENTER deixa de ser infinito pois já acabou! :P

e essa do projecto, tenho um projecto para entregar ontem... mas precisa disso para por lá! ;)

Muito Obrigado mais uma vez. Abraço!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.