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

CarlosProgramar

Preciso de ajuda para projecto em PASCAL - Urgente

26 mensagens neste tópico

Eu sou aluno do 11º ano e tou com dificuldades para começar a elaborar este projecto...  :wallbash:

Eu tenho k fazer um projecto que leia as informações pessoais de uma pessoa (Nome, Sexo (Masculino ou feminino), Idade (Até 150 anos), Nacionalidade,Habilitação para conduzir)... Não peço que me façam o trabalho, mas alguem da dicas sff??

Abraço.........  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então, tens alguma ideia? Eu dou-te algumas. Tens que arranjar maneira de armazenar dados (arrays), tens que arranjar maneira de pedir dados às pessoas (writeln e readln), tens que arranjar maneira de limitar algumas respostas (ifs).

Começa devagarinho a escrever o pseudo-código (ou português estruturado) e vê onde tens dúvidas :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A informação é para ser guardada permanentemente ? ou so vai existir enquanto o programa estiver a ser executado ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A informação só vai existir enkuanto o programa tiver a ser executado!  :D

Tou á nora..  :D Alguem me diz uma maneira de começa?

Eu acho k vou ficar maluco..  :cheesygrin: Não me sái nada..

Abraço..  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Começa por um papel, e uma caneta :D

1. Pedir ao utilizador o Nome

1.1 Guardar o nome

2. Pedir ao utilizador a Idade

2.1 Verificar se a idade é menor que 150 anos

2.2 Se sim, guardar a idade

2.3 Se não, alertar, e pedir outra vez (ou sair do programa, depende do que queres)

...

...

E por ai fora :D Já é uma ajuda? :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dpois kd alguem puder dê uma vista d olhos nisto e volte a postar.. Corrigido, claro..  :P .. O que fiz foi isto:

-------------------------------------------------------------------------->

Program Dados_Pessoais

uses crt;
var Nome:String[50];
    Idade:Intiger;
    Sexo:string[15];
    IdadeConduzir:intiger;
clrscr;
    writeln('Nome:');
    readln(Nome);
    writeln('Idade');
    	If Idade >150 then
	Writeln ('Idade errada. Introduza uma idade inferior a 150:');
	readln (Idade);
    writeln('Sexo:');
If Sexo <> Masculino or Feminino then
	writeln ('Introduza novamente o tipo de sexo:');
else
	If Sexo = Masculino or Feminino then
		writeln ('Sexo');
		readln (Sexo);
    writeln('Introduza novamente a idade:');
    	If IdadeConduzir >= 18 then
	writeln ('IdadeConduzir');
	readln (IdadeConduzir);
end. 

------------------------------------------------------------------------------>

Abraço..  :P

     

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/*offtopic*/

CarlosProgramar - quando criares um tópico mete no assunto o assunto da duvida

CarlosProgramar - para postares código usa a tag [ code = linguagem ] ... [ code ], e trocas linguagem pela linguagem (sem espaços), ex:

uses crt;
var Nome:String[50];
    Idade:Intiger;
    Sexo:string[15];
    IdadeConduzir:intiger;
clrscr;

/*offtopic*/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Tens de ter atenção aos tipos de dados na declaração da Idade e IdadeConduzir, definiste ambas as variáveis como 'Intiger', e deveria ser 'Integer'.

Depois tem relação à comparação da string sexo, as strings deviam tar entre plicas, e estás a fazer essa comparação antes de fazeres o readln para a variável. Já não me lembro se existe alguma funcção em Pascal do tipo upper ou lower para converter os caracteres da string para maiusulas ou minusculas respectivamente, mas seria uma boa ideia utilizares caso existisse, porque o utilizador pode introduzir o sexo todo em minusculas, maiusculas ou apenas com a primeira letra maisucula, etc. Ficaria algo do género

writeln('Sexo:');
Readln(Sexo);
   If upper(Sexo) <> 'MASCULINO' or 'FEMININO' then
      writeln ('Introduza novamente o tipo de sexo:');
      readln(Sexo);
   else
      writeln ('Sexo');
      writeln (Sexo);

Espero ter ajudado.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez não faça muita diferença nos dias de hoje uma vez que quase todos os computadores têm no minimo 256 MB de memória mas devias usar Byte em vez de Integer, a diferênça é só uma: O Integer ocupa na memória 2Kb enquanto que o Byte ocupa apenas 1Kb.

Integer aceita números inteiros de -32766 a 32767.

Byte aceita números inteiros de 0 a 255.

A idade não precisa de ser um número muito grande nem decimal nem negativo por isso o Byte é a melhor opção...

Um conselho que te dou é ires-te habituando para quando fizeres um programa a sério e precisares de o optimizar já teres uma ideia  por onde começar.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MAiDEN_DuDE e Exoduz obriado pelas dicas  :P.. Agora na linha 16 "If Sexo <> 'Masculino' or 'Feminino' then" tá a dar-me u seguinte erro: "Error 41: Operand types do not match operator."  Alguem sabe o que se passa?  :wallbash: E já agora, como é que eu armazeno os dados num ficheiro de texto?

Abraço  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Em relação ao erro, já não estou bem recordado, mas a comparação não deveria ser feita assim

If Sexo <> 'Masculino' and Sexo <>  'Feminino' then

?

E atenção ao operador que utilizas, já que o operador lógico OR nesse caso iria retornar sempre TRUE mesmo que o utilizador introduzisse masculino ou feminino.

Em relação aos ficheiros, aqui há tempos escrevi algo sobre isso. Fica o link: Uso de ficheiros em PASCAL.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

MAiDEN_DuDE obrigado pela dica.. mas continua a dar u mesmo erro...  :wallbash:

Não conseues descobrir u k se passa???

Abraço  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então pessoal? Ninguem me dá uma resposta?  :fartnew2:

Vá lá.. Uma ajudinha n custa nada.. E já agora.. Inda nao percebi bem como guardar os dados num ficheiro de texto..  :wallbash:  Já só tenho 1 semana pa akabar este projeto....  :)

Abraço  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:P Entao pessoal.. Ninguem me dá uma ajudinha?

Tou a kumeçar a fikar a raska..  :wallbash:

Vá lá digam kualker koisa, ta?  :P

E alguem me sabe explikar melhor kumu guardo os dados num ficheiro de texto?

Abraço  :smoke:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Carlos, devias investir mais tempo a procurar soluções e não esperar que o pessoal aqui te faça o trabalho.

Google it! Pesquisando por "pascal file write" tens logo no primeiro hit:

- http://www.learn-programming.za.net/learn_pascal_programming.html

- http://www.learn-programming.za.net/programming_pascal_learn10.html

PS: Agradeço que escrevas os teus posts de acordo com as normas do fórum, i.e., em português correcto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá eu sou um aluno do 10º da escola D. Pedro V e decidi tentar ajudar, eu fiz um programa sei que o programa pode não ser consistente nem estar como muitos querem mas é o que sei e já agora houve sitios em que me faltou a imaginação para fazer. Eu já pus aqui o programa mas já retirei para não se chatearem comigo por tar a dar o codigo, mas se puder meter eu meto

As dicas que posso são:1-em vez de usares um if para ver se o sexo é usar um ciclo e como else metes escolha não valida

                                      2- se quiseres o ciclo if as opções tem de ser entre parentesis do tipo

                                                                                                if (sexo<>M) and (sexo<>F) then

                                                                                                            writeln('opção não valida');

                                      o mesmo podes fazer com a idade

                                      3-e um ciclo case para a condução

não sei se fui bem explicito, mas se não for compreensivel nas dicas posso por o programa novamente

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa noite,

Em resposta ao teu pedido de ajuda fiz um pequeno programa que penso que serve para o efeito, no entanto convém que o compiles e testes.

Aqui fica;

program rapaz;
uses crt;
var dados:array [1..5] of longint;
    repetir:char;

procedure input;
begin
repeat
  writeln ('Insira o nome:');
  readln (dados[1]);
  repeat
   writeln ('Insira a idade: (de 1 a 150)');
   readln (dados[2]);
   if (dados[2] < 0) or (dados[2] > 150) then
    begin
     clrscr;
     writeln ('Insira novamente a idade: (de 1 a 150)');
     readln (dados[2]);
    end;
  until (dados[2] > 0) or (dados[2] < 150);
  writeln ('Insira o Sexo:');
  readln (dados[3]);
  writeln ('Insira a Nacionalidade:');
  readln (dados[4]);
  writeln ('Tem habilitação para conduzir?');
  writeln (dados[5]);
  writeln ('Informação preenchida com sucesso!');
  writeln ('Deseja repetir o processo? sim (s) ou nao (n)?');
  readln (repetir);
  readkey;
until (repetir = 'n');
end;

procedure output;
begin
clrscr;
writeln ('----------------------------------');
writeln ('         Dados Recolhidos         ');
writeln ('----------------------------------');
writeln ('Nome: ',dados[1],'                ');
writeln ('Idade: ',dados[2],'               ');
writeln ('Sexo: ',dados[3],'                ');
writeln ('Nacionalidade: ',dados[4],'       ');
writeln ('Pode Conduzir: ',dados[5],'       ');
writeln ('----------------------------------');
readkey;
end;

begin {Programa Principal}
input;
output;
end.

Nota: A formatação e identação podera ser necessário corrigi-la, no forum peder a formatação.

Espero ter ajudado,

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim ele não vai aprender... Arranjar programas feitos não é o melhor caminho... Carlos devias arranjar uns manuais/livros/ebook's e ir aprendendo por ti mesmo...  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
:) O programa tá altamente... Obrigado.. Eu fiz umas alterações (Bastantes  ;) ) e fikou fixe... Mas dá-me um erro..  :wallbash: E n sei kmu descobrir kual é... diz: "invalid numeric format ".. Eu acho que tem a haver com as variáveis.. Mas como disse antes: NÃO PERCEBO NADA DE ARRAY's..  :rant_01: Alguem me dá uma ajuda?
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:) O programa tá altamente... Obrigado.. Eu fiz umas alterações (Bastantes  ;) ) e fikou fixe... Mas dá-me um erro..  :wallbash: E n sei kmu descobrir kual é... diz: "invalid numeric format ".. Eu acho que tem a haver com as variáveis.. Mas como disse antes: NÃO PERCEBO NADA DE ARRAY's..  :rant_01: Alguem me dá uma ajuda?

Podes começar por postar o código para assim te poder-mos ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

De nada ;) O problema em principio terá a ver com o tipo de variaveis, ou o tipo de dados que o array tem ...

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu tambem não pus o codigo porque assim não ia aprender mas pronto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim  o erro é mesmo das variaveis. o array dados não pode ser assim

como esta em longint tanto o nome como a nacionalidade e outros vao dar erro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguem que me ajude se faz favor.

alguem me pode corrigir este programa em pascal ?( o programa contem alguns erros que nao consigo resolver, gostava que alguem o corrigi-se de modo a que ele funcione correctamente.) :D

program ProjectoFlores;

type dados=record

  nome:string;

  NIB:integer;

  morada:string;

  flores:string;

  quantidade:integer;

  preco:real;

end;

type flor=record

  nome:string;

  quantidade:integer;

  preco:real;

end;

var fich1:file of dados;

    fich2: file of flor;

    fich:text;

    op:integer;

var d:dados;

var flor2:flor;

    f:string;

procedure menu;

begin

  writeln ('|-----------------------------------|');

  writeln ('|        Escolha a Opção            |');

  writeln ('|-----------------------------------|');

  writeln ('|[1] -Tabela Produtos/Preços        |');

  writeln ('|[2] -encomenda                    |');

  writeln ('|[3] -Visualizar encomeda          |');

  writeln ('|[4] -Fechar Programa              |');

  writeln ('|-----------------------------------|');

  writeln ('Insira a sua escolha:');

  readln  (op);

  end;

procedure florr;

begin

  assign(fich,'flor.txt');

  reset(fich);

  while not eof(fich) do

  begin

  readln(fich,f);

  writeln(f);

  end;

  readln;

  close(fich);

end;

procedure cliente;

begin

  assign(fich1,'encomenda.txt');

  rewrite(fich1);

  writeln('Introduza o seu nome');

  readln(d.nome);

if d.nome <> 'cancelar' then

begin

  writeln('Introduza a sua Morada');

  readln(d.morada);

  close(fich1);

  reset(fich1);

  seek(fich1,0);

while not eof(fich1) do

begin

read(fich1,d);

  writeln('Nome: ', d.nome, ' Morada: ', d.morada, ' Quantidade: ', d.quantidade, ' Flor: ' , d.flores);

end;

  readln;

  close(fich);

end;

procedure encomenda;

begin

  assign(fich1,'totalpagar.txt');

  reset(fich1);

  seek(fich1,0);

  while not eof(fich1) do

  begin

  read(fich1)

  if d.flores='Tulipa' or 'Rosa' then

  d.preco:=(1*d.quantidade)

  else d.preco:=(0.80*d.quantidade);

  writeln('O preço a pagar é',d.preco);

  readln;

  writeln('Qual a(s) flor(s) que deseja encomendar?');

  readln(d.flores);

  writeln('Que quantidade deseja encomendar?');

  readln(d.quantidade);

  write(fich1, d);

end;

  close(fich1);

end;

begin

florr;

repeat menu;

case op of

1:cliente;

2:e;

until(op=3);

readln();

end.

(desde já...Obrigado)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora