View Full Version : chi è che sbaglia
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
Magari se riporti per intero l'errore del compilatore facciamo prima :)
3.pas(4,1) Fatal: Syntax error, ; expected but VAR found
Detto fatto:)
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!
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).
Sì...in effetti ne mancano una marea...
Sopo il Begin non ci dovrebbe volere il ";"...
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.
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;
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???
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 ).
perdona l'ignoranza ma...
che è il lisp???
Lisp è un linguaggio x l'intelligenza artificiale, molto potente ma anche molto duro da imparare xche bisogna riflettere in ricorsivo. A confronto Pascal è semplicissimo !!!
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?
Eccon un esempio : ftp://ftp.digitool.com/pub/mcl/contrib/nregex.lisp
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)...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.