PDA

View Full Version : chi è che sbaglia


M86
09-10-2002, 15:12
Vi posto questo listato copiato pari pari da un libro

PROGRAM divisione(input, output);
TYPE interopositivo=1..maxint;
interononnegativo=0..maxint
VAR
x, y:interopositivo;
quoziente,resto:interononnegativo
BEGIN
write('x='); readln(x), writeln;
write('y='); readln(y), writeln
resto:=x
quoziente:=0
WHILE resto>=y DO
BEGIN
quoziente:=quoziente+1
resto:=resto-y
END
writeln(x:1,'diviso per', y:1,'uguale', quoziente:1, 'resto', resto:1)
END


Quando vado a dire al programma di compilare dice che c'è un errore di sintassi; ora o sbaglia in qualcosa il libro da cui ho copiato o è il compilatore che ha qualcosa che non va, vedete se potete fare qualcosa
mi sono insospettito quando ho provato a far fare la stessa cosa ad un altro prgramma con nomi delle variabili diversi e quando ho provato con quello del libro ho avuto lo stesso problema

cionci
09-10-2002, 15:23
Magari se riporti per intero l'errore del compilatore facciamo prima :)

M86
09-10-2002, 17:32
3.pas(4,1) Fatal: Syntax error, ; expected but VAR found
Detto fatto:)

Deep73
09-10-2002, 17:39
mai + facile.... manca un ; dopo maxint.

E' ormai prassi che nei listati i libri fanno notevoli errori di tipografia (specie ahimè in quelli scolastici).... a volte sono voluti, altre volte no.

Cmq. è un utile esercizio per debuggare un prog.

Un genio è il il Dott. Marco Cantù ormai sulla breccia da anni coi suoi libri sul Pascal e su Delphi in particolare.... mai trovato un errore nei suoi listati!

Deep73
09-10-2002, 17:42
rivedendo il listato.... ho le traveggole io o si sono dimenticati praticamente un casino di ";" alla fine delle istruzioni?

Nel Pascal alla fin fine è sempre meglio abbondare ; rispetto a non metterli (eccetto UN solo caso.... indovinate quale).

cionci
09-10-2002, 17:45
Sì...in effetti ne mancano una marea...
Sopo il Begin non ci dovrebbe volere il ";"...

Deep73
09-10-2002, 17:50
Originariamente inviato da cionci
[B]Sì...in effetti ne mancano una marea...
Sopo il Begin non ci dovrebbe volere il ";"...

ma anche il . alla fine dell' END finale :rolleyes:
'na tragedia insomma :D

Cmq. il ; ci va di solito sempre. E' opzionale solo nell'instruzione PRIMA di un END. NON va assolutamente messo nel blocco THEN in un flusso IF...THEN...ELSE.

Ciau.

badaze
09-10-2002, 19:11
Se mi ricordo bene....

PROGRAM divisione(input, output);
TYPE interopositivo=1..maxint;
interononnegativo=0..maxint;
VAR
x, y:interopositivo;
quoziente,resto:interononnegativo ;
BEGIN
write('x='); readln(x), writeln;
write('y='); readln(y), writeln ;
resto:=x ;
quoziente:=0 ;
WHILE resto>=y DO
BEGIN
quoziente:=quoziente+1 ;
resto:=resto-y ;
END ;
writeln(x:1,'diviso per', y:1,'uguale', quoziente:1, 'resto', resto:1) ;
END.

strano comunque readln(x), writeln; avrei scritto readln(x); writeln;

M86
10-10-2002, 11:47
Si poi capito l'andazzo li ho corretti tutti e funziona; ora mi spiegate un'altra cosa; sono arrivato a studiare i cicli annidati e porco troia sono un macello, c'è un sistema per impararli ad usarli senza impazzire???

badaze
10-10-2002, 13:37
il più semplice è di mettere sempre il begin ed il end.


for a:=1 to 10 do begin

while b < 20 do begin

if a=5 then begin

end
else begin

end;

end;
end;

il Pascal è un linguaggio semplicissimo rispetto ad altri (x chi conosce il Lisp ).

M86
10-10-2002, 15:00
perdona l'ignoranza ma...
che è il lisp???

badaze
10-10-2002, 16:33
Lisp è un linguaggio x l'intelligenza artificiale, molto potente ma anche molto duro da imparare xche bisogna riflettere in ricorsivo. A confronto Pascal è semplicissimo !!!

M86
10-10-2002, 18:40
Originariamente inviato da badaze
[B]Lisp è un linguaggio x l'intelligenza artificiale, molto potente ma anche molto duro da imparare xche bisogna riflettere in ricorsivo. A confronto Pascal è semplicissimo !!!

che ficata, un linguaggio per IA, dove si studia ad ingegneria informatica scommetto...
Che usa reti neurali e simili?

cionci
10-10-2002, 18:41
Eccon un esempio : ftp://ftp.digitool.com/pub/mcl/contrib/nregex.lisp

cionci
10-10-2002, 18:49
Originariamente inviato da M86
[B]che ficata, un linguaggio per IA, dove si studia ad ingegneria informatica scommetto...
Dalle mie parti non lo fanno...
Ci "insegnano" parzialmente il Prolog...e poi via tutto in C++...reti neurali incluse (che sono una figata pazzesca)...