Ir ao conteúdo
  • Cadastre-se

Galera que manja nas bruxaria do pascal aí, ajudem!


Posts recomendados

É que a professora mandou fazer um questionário em pascal, mas aí fiz no Pzim. 
Mas ela disse q só acieta na miséria do DevPascal, disse que se os programas não rodarem no dev, vai zerar a questão. 
Daí testei os programas no Dev, e a maioria, não, todos não rodaram. 


Se tiver respostas, logo após eu posto os programas, caso contrário...

Link para o comentário
Compartilhar em outros sites

Eu fazia uma pequena gambiarra quando tinha de programar em pascal no curso.

Fazia todo o código no notepad++ e rodava no compilador do pascal, dessa forma o código que eu colocava no notepad++ saia da mesma forma que se eu colocasse o código através do compilador do pascal.

Link para o comentário
Compartilhar em outros sites

Eu fazia uma pequena gambiarra quando tinha de programar em pascal no curso.

Fazia todo o código no notepad++ e rodava no compilador do pascal, dessa forma o código que eu colocava no notepad++ saia da mesma forma que se eu colocasse o código através do compilador do pascal.

Huum, mas o problema nem é esse meu caro. 

É o seguinte: 

Eu coloco o programa no Dev de boas, coloco o [uses crt; e o readkey;], para que o resultado saia na interface.

Mas assim que chega no resultado com o programa já rodando, ele saai. 

Não da o resultado nem nada, deixa você no vácuo, kkk 

 

Ajude ae, se souber o que é ! 

 

Desde já agradecido ;)

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá...

 

Huum, mas o problema nem é esse meu caro. 

É o seguinte: 

Eu coloco o programa no Dev de boas, coloco o [uses crt; e o readkey;], para que o resultado saia na interface.

Mas assim que chega no resultado com o programa já rodando, ele saai. 

Não da o resultado nem nada, deixa você no vácuo, kkk 

 

Ajude ae, se souber o que é ! 

 

Desde já agradecido ;)

 

Sem o código não posso dá uma opinião mais precisa, mas se o programa tiver "fechando sem mostrar o resultado", pode ser porque, ao chegar no final do programa, o "interpretador" executa o comando "END.", e este serve justamente "encerrar o programa"... daí, o resulto é simplesmente fechar mesmo... ou seja, tem compilador que ao executar esse "end."... "encerra o programa e continua com a tela aberta", mas tem outros que "ao encerrar o programa, simplesmente fecha o mesmo"... dando uma impressão que não mostrou o resultado... RESUMIDAMENTE: nestes casos, ele mostrou resultado, e fechou logo depois (não dando tempo de visualizar - mas mostrou! :) )...

 

Uma forma de solucionar esse problema seria colocando algo que "pause" (interrompa o fluxo de execução das instruções) o programa antes de fechar... ex.:
 

...readln;END.

Esse readln vai "tentar ler algo do teclado", logo, para continuar terá que dar um ENTER... vai ter o mesmo efeito que um "pause".... outro exemplo:

...writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln;END.

Sacou?

Caso essa questão não seja o seu caso, favor informar mais detalhes... se possível poste o código e qual problema está ocorrendo.

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá...

 

 

Sem o código não posso dá uma opinião mais precisa, mas se o programa tiver "fechando sem mostrar o resultado", pode ser porque, ao chegar no final do programa, o "interpretador" executa o comando "END.", e este serve justamente "encerrar o programa"... daí, o resulto é simplesmente fechar mesmo... ou seja, tem compilador que ao executar esse "end."... "encerra o programa e continua com a tela aberta", mas tem outros que "ao encerrar o programa, simplesmente fecha o mesmo"... dando uma impressão que não mostrou o resultado... RESUMIDAMENTE: nestes casos, ele mostrou resultado, e fechou logo depois (não dando tempo de visualizar - mas mostrou! :) )...

 

Uma forma de solucionar esse problema seria colocando algo que "pause" (interrompa o fluxo de execução das instruções) o programa antes de fechar... ex.:

 

...readln;END.
Esse readln vai "tentar ler algo do teclado", logo, para continuar terá que dar um ENTER... vai ter o mesmo efeito que um "pause".... outro exemplo:

...writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln;END.
Sacou?

Caso essa questão não seja o seu caso, favor informar mais detalhes... se possível poste o código e qual problema está ocorrendo.

 

No aguardo.

 

E aê cara! 

Obrigaado pela resposta, mas eu já tinha até resolvido.

POrém essa sua resposta é bem válida pra mim, já que eu nem uso esse comondo no fim. O programa fica até mais legalcolocando ele.

writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln;END.
O que estava acontecendo era que antes de colocar "VAR" e depois as variáveis, tinha que ter o comando "uses crt", e antes de finalizar o programa com "END.", tinha que colocar "Readkey();" (NO PZIM, QUANDO COMEÇA A FAZER A ESTRUTURA DO PROGRAMA ELE SÓ VEM COM O:- PROGRAM - VAR - BEGIN E POR FIM O END; - JÁ O DEV ELE JÁ VEM COM ESSES E: PROGRAM - USES CRT; - VAR - BEGIN - READKEY(); E POR FIM O END.

Eu nem sei explicar bem o que é desses (uses crt; e readkey();, por que é meu primeiro ano estudando programação, mas é isso aí.

ANTES

Program Q10;varkinicial,kfinal,kcombustivel,kganho: real;lucro, mconsumo, pcombustivel: real ;Beginwriteln('Digite o Km inicial: ');readln(kinicial);writeln('Digite o Km final: ');readln(kfinal);writeln('informe a quantidade de combustivel comsumida : ');readln(kcombustivel);writeln('qual o preço do combustivel?');readln(pcombustivel);writeln('Quanto voce ganhou ?: ');readln(kganho);lucro:=kganho-((kcombustivel)*pcombustivel);mconsumo:=(kfinal-kinicial)/kcombustivel;writeln('Media de consumo: ',mconsumo:0:1);writeln('Lucro: ',lucro:0:1);end.
DEPOIS:Program Q10;uses crt;varkinicial,kfinal,kcombustivel,kganho: real;lucro, mconsumo, pcombustivel: real ;Beginwriteln('Digite o Km inicial: ');readln(kinicial);writeln('Digite o Km final: ');readln(kfinal);writeln('informe a quantidade de combustivel comsumida : ');readln(kcombustivel);writeln('qual o preço do combustivel?');readln(pcombustivel);writeln('Quanto voce ganhou ?: ');readln(kganho);lucro:=kganho-((kcombustivel)*pcombustivel);mconsumo:=(kfinal-kinicial)/kcombustivel;writeln('Media de consumo: ',mconsumo:0:1);writeln('Lucro: ',lucro:0:1);writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln; //com o uso do comando q você colocou, hehe! kkreadkey;end. 
Então, muito obrigado pela sua resposta.

Um grande abraço! \o

Da uma olhada nesse programa aqui velho, se puder.

Ver se não tem nada que possa melhorar ou sei la.

Valeu

Lista de Exercícios.zip

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá
 

Eu nem sei explicar bem o que é desses (uses crt; e readkey();, por que é meu primeiro ano estudando programação, mas é isso aí.

 
Funciona mais ou menos assim: o comandos que qualquer linguagens de programação devem ser previamente definidos..., ou seja, "só podemos executar algo que já existe". No caso do Pascal, esses comandos básicos como readln, write, writeln, for, while, repeat, já são previamente "carregados" e "disponibilizados" para os programados... (explico melhor mais abaixo)
 
No coso da ReadKey, ela é uma function (função) que NÃO ESTÁ NA LISTA DE COMANDOS PADRÕES... ou seja, como se não existisse (ainda)...  Daí, para esses casos, essa linguagem permite carregar "comandos extras"... que estão em estruturas chamadas unit (biblioteca)... O comando para carregar, adivinha? "uses".

RESUMIDAMENTE
O ReadKey pertence a unit CRT (ou WinCRT, para alguns compiladores), e este não é carragado por padrão, daí...
 
Exemplo:

Program xxxx;uses //comando para carregar bibliotecas CRT, //Biblioteca que contém comandos extras, como ReadKey, KeyPressed, ClrScr, TextColor, TextBackgroudn etc DOS; //Bibliotaca que contém comandos como DateTime... (não lembro de outros, rs)

Esse DOS é outra unit que tem outros comando... só como exemplo... :)
 
Ao carregar a(s) unit, automaticamente os comandos passam a ser disponíveis para o código. Se você observar, o "exe" gerado vai ficar maior, pois teve que incorporar a biblioteca!

Obs.: Os comandos básicos citados acima também estão em bibliotecas, basicamente numa de nome System, só que este já são carregadas automaticamente... (não precisa carregar - seria como ao carregar o Pascal, internamente seja executado um uses System, sacou?)
 
 
 
Em relação a "evitar que o programa feche"
 

Program Q10;uses crt;varkinicial,kfinal,kcombustivel,kganho: real;lucro, mconsumo, pcombustivel: real ;......writeln('Media de consumo: ',mconsumo:0:1);writeln('Lucro: ',lucro:0:1);writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln; //com o uso do comando q você colocou, hehe! kkreadkey;end. 

Perceba que ambos os comandos estão sendo usados para a mesma finalidade... Então, tanto o ReadLN, tanto o ReadKey, são comando que servem para "ler dados do teclado"... e essa característica, de ler, faz com que o programa "pare" e fique aguardando esses dados... Daí, aproveitamos isso e "simulamos um pause"..

No caso do ReadLN, aguarda "um ENTER". No caso do ReadKey, aguarda "qualquer* tecla".
 

RESUMIDAMENTE

Ou você usa um, ou usa o outro...

 

ou

writeln('FIM DO PROGRAMA - pressione ENTER para finalizar');readln; //servindo como pause, já que para para ler o tecladoend.

ou

writeln('FIM DO PROGRAMA - pressione qualquer tecla para finalizar');readkey; //servindo como pause, já que para para ler o teclado - comando pertencente a bliblioteca CRTend.

No aguardo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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