View Full Version : Pascal


Ze21038
15-12-2007, 23:44
boas,
eu estou a aprender pascal, ja sei fazer umas coisitas :-D..
A questao e' a seguinte eu estou a preceber de pascal, mas o problema e' que a linguagem de programacao mais utilizada nao e' o pascal..
As linguagens de programacao sao parecidas?
senao estou a aprender pra nada...:lol:
cumprimentos

Ze21038
16-12-2007, 00:46
Boas eu tenho aqui um problemazinho, o programa nao tem problemas corre mas chega a' altura de inserir os dados , e puf sai fora...

program ze;
uses crt;
var
opcao:integer;
conta:integer;
i:array[1..100] of integer;
ncd:array[1..100] of string;
tp:array[1..100] of string;
a:integer;
{--------------------------------------------------------------}
procedure prepara;
begin
clrscr;
gotoxy(35,1);
writeln('Gestão de Cds');
writeln('_________________________________________ ______________________________________________');
end;
{--------------------------------------------------------------}

procedure opp1;
begin
prepara;
writeln(' ');
writeln('Escreva o Codigo do Cd');
readln(i[a]);
writeln('Escreva o Nome do Cd ou DvD');
readln(ncd[a]);
writeln('Escreva o Tipo de Cd ou DvD');
readln(tp[a]);

end;
{--------------------------------------------------------------}

procedure opp2;
begin
prepara;
writeln('O codigo do Cd ou DvD -> ');
writeln('O Nome do Cd ou DvD -> ');
writeln('O Tipo de Cd ou DvD -> ');
readln;
end;
{--------------------------------------------------------------}
procedure opp3;
begin
prepara;
writeln(' ');
writeln('Este Programa Foi Desenvolvido Por : Ze21038');
writeln(' ');
writeln('Versão 1.0.');
readln;
end;

{--------------------------------------------------------------}
procedure menu;
begin
if opcao=1 then
begin
opp1;
end;
if opcao=2 then
begin
opp2;
end;
if opcao=3 then
begin
opp3;
end;
end;


{--------------------------------------------------------------}
begin
while opcao <> 4 do
begin
prepara;
writeln(' ');
writeln('1)Inserir Na Lista');
writeln(' ');
writeln('2)Listar');
writeln(' ');
writeln('3)About');
writeln(' ');
writeln('4)Sair');
writeln(' ');
readln(opcao);
menu;
end;
writeln('Fim');
readln;
end.


Acho que o erro esta na parte a vermelho...

Algem me pode ajudar?

ruivilela
16-12-2007, 12:33
Não te quero desiludir, mas Pascal é uma linguagem obsoleta. Usada nos anos 80, até à extinção do DOS (1995/6/7). Continou em Janelas (windows) com o Delphi.

Nem é boa para aprender, pelo motivo acima, mas o melhor seria passar a C (ao menos que sejas obrigado) que tanto é usado em (Linux como Windows). Depois dai há as variantes C++ C#. Algumas pessoas preferem primeiro aprender Lisp, Prolog, ou Haskell.

Podias ser mais específico e dizer qual o erro ? Já estou ferrugento para o Pascal. Há um problema com o Pascal a partir dos computadores com mais de 200MHz :). Precisa de um patch para cada EXE compilado.

Ze21038
16-12-2007, 13:12
eu sou obrigado a usar esta reliquia este ano:(..
o erro que da e' quando corro o programa i vou inserir dados no procedure opp1, ele sai fora com um erro eskesito..
cumprimentos

Armadillo
17-12-2007, 00:14
Na minha opiniao Pascal é uma linguagem optima para aprender, visto ser muito verbosa.
Tens o VisualBasic, que nao sendo igual, tem algumas semelhanças e é mto usada em ambiente de produçao.

Apos teres interiorizado o forma de desenvolver bons algoritmos, o passo seguinte será passares ao C.

Em relaçao ao teu erro esquesito, podias dizer qual é?

Ze21038
17-12-2007, 16:22
o erro esta na parte vermelha penso eu..
eu compilo e ele nao da erros, quando ponho a correr o programa aparece o menu, tudo normal, quando vou incerir ele sai fora, com um erro esquesito...
algem pode ajudar?
cumprimentos

Armadillo
17-12-2007, 16:35
Ja nao pego em Pascal aos anos mas vamos la ver se me lembro


procedure opp1;
begin
prepara;
writeln(' ');
writeln('Escreva o Codigo do Cd');
readln(i[a]);
writeln('Escreva o Nome do Cd ou DvD');
readln(ncd[a]);
writeln('Escreva o Tipo de Cd ou DvD');
readln(tp[a]);
end;

porque é que dizes readln(i[a]); ?
Como nao tens o [a] definido na procedure vai-te dar erro. tens que definir um valor para [a].

Filipe_O
17-12-2007, 20:11
Ja nao pego em Pascal aos anos mas vamos la ver se me lembro


procedure opp1;
begin
prepara;
writeln(' ');
writeln('Escreva o Codigo do Cd');
readln(i[a]);
writeln('Escreva o Nome do Cd ou DvD');
readln(ncd[a]);
writeln('Escreva o Tipo de Cd ou DvD');
readln(tp[a]);
end;

porque é que dizes readln(i[a]); ?
Como nao tens o [a] definido na procedure vai-te dar erro. tens que definir um valor para [a].

Tens a certeza?eu acho que o a é uma variavel global que esta bem definida.o "a" vai assumir o valor que o utilizador introduzir para o array "i".o "a" é uma varavel global que nao neccessita de declaração no procedimento.Depois de escreveres o codigo do cd ele sai-te do programa?Fiquem Bem

Ze21038
18-12-2007, 13:48
sim depois de escrever o codigo do cd ele sai do programa, e a variavel ta defenida no inicio do programa...
cumprimentos

r3pek
18-12-2007, 15:49
tens k definir o valor do "a" nalgum sitio antes do usares pk senão kd inseres os dados ele vai tar-te a aceder ao i[0] (pk o "a" tem 0) e como a posição 0 do array "i" não existe, ele estoira. Tem atenção k cada vez k inseres um registo tens k incremetar o "a".

Ze21038
19-12-2007, 21:21
entao tenho que defenir o "a" no procedure?
ou o que tenho que alterar para isto funcionar...
obrigado
cumprimentos

rpnetwork
19-12-2007, 21:24
Podias por um:
Repeat
(Instruções)
writeln("deseja sair? (Y/N)");
sn = readkey;
Until sn = y
Basicamente o pascal é para tu aprenderes a construir sintaxe
so podes dizer que sabes aprender a programar quando aprenderes C
aposto que no teu próximo ano vais aprender VB6, ai vais-te sentir (mesmo) desapontado

Ze21038
19-12-2007, 23:19
porque me vou sentir desapontado'?
cumprimentos