Programma in Pascal ?

Vincenzo983
Devo scrivere un programma in Pascal in cui quest'ultimo mi deve scrivere la retta in forma esplicita ed implicita, dati i valori a, b, c.
Me lo potete correggere poichè il compilatore mi fa l'errore ?

Program Retta;
var
a:integer;
b:integer;
c:integer;

begin
a:= (*Inserisci valore variabile*);
b:= (*Inserisci valore variabile*);
c:= (*Inserisci valore variabile*);

writeLn(a,'x +',b,'y +',c,'= 0');
writeLn;
writeLn('y =',-(a/b),'x',-(c/b));

readLn;
end.

Risposte
Cronovirus
Mi sapresti dire cosa significa questo?
a:= (*Inserisci valore variabile*);


Sopratutto fai readLn alla fine del programma.. che senso ha?

Zero87
Alla metà dei miei anni attuali facevo programmi in pascal. Non vedo "use crt" (o "uses crt" non ricordo) che ci facevano mettere sotto al nome del programma come fosse un dogma.
Non ho mai capito a cosa servisse.

Comunque
"Cronovirus":
Sopratutto fai readLn alla fine del programma.. che senso ha?

Per dar modo di far leggere il risultato all'utente poiché altrimenti il programma darebbe il risultato e una frazione di secondo dopo finirebbe, chiudendosi. Quello vuol dire, in pratica, di dire all'utente di premere invio per chiudere il programma.
Alla mia epoca ci facevano inserire un "repeat until keypressed".

Comunque per me l'errore è dove te l'ha segnalato Cronovirus. Per esempio, io farei

writeln('Dammi il coefficiente a');
readln(a);
writeln('Dammi il coefficiente b');
readln(b);
ecc...

A distanza di minimo 12 anni... me lo ricordo ancora il caro Pascal?

onlyReferee
"Zero87":
Alla metà dei miei anni attuali facevo programmi in pascal. Non vedo "use crt" (o "uses crt" non ricordo) che ci facevano mettere sotto al nome del programma come fosse un dogma.
Non ho mai capito a cosa servisse.
[...]

Alla metà dei miei attuali anni ero nella stessa tua situazione (essendo coetanei) per via dei programmi in Pascal.

Hai fatto liceo scientifico ad indirizzo sperimentale :?: In tal caso penso tu sia la prima persona che io conosca ad aver frequentato tale scuola con questo indirizzo che ha fatto un minimo di programmazione.
Lo "uses crt" (con la "s" :P ) comunque serve a "dire" al programma che deve usare delle librerie per richiamare determinate funzioni. In questo caso "crt" è quella che raggruppa la maggior parte di funzioni per manipolare l'interfaccia di output standard (il video). Forse ricorderai come unitamente a questa istruzione poco dopo seguiva il comando "clrscr" per spazzar via tutto ciò che era stampato a schermo in quel momento.
"Zero87":

[...]
Comunque
[quote="Cronovirus"]Sopratutto fai readLn alla fine del programma.. che senso ha?

Per dar modo di far leggere il risultato all'utente poiché altrimenti il programma darebbe il risultato e una frazione di secondo dopo finirebbe, chiudendosi. Quello vuol dire, in pratica, di dire all'utente di premere invio per chiudere il programma.
Alla mia epoca ci facevano inserire un "repeat until keypressed".
[...]
[/quote]
Ah che bello che era il "repeat-until" :!: Noi lo usavamo tanto quando c'era da scrivere programmi in cui era previsto un menu. E' andato scomparendo poi nei vari linguaggi di programmazione sostituito nella maggior parte dei casi dal "do-while" (che ricordiamolo funziona diversamente da "repeat-until" per via del test che viene effettuato sulla condizione).
"Zero87":

[...]
Comunque per me l'errore è dove te l'ha segnalato Cronovirus. Per esempio, io farei

writeln('Dammi il coefficiente a');
readln(a);
writeln('Dammi il coefficiente b');
readln(b);
ecc...

A distanza di minimo 12 anni... me lo ricordo ancora il caro Pascal?

Quoto, c'è anche secondo me un errore nella lettura dei valori in quanto bisogna utilizzare il comando "readln" per leggere. Scritto nella versione attuale postata da Vincenzo98 non potrà mai compilare infatti.
Per il resto, riguardo alla tua ultima frase: il primo linguaggio di programmazione che si impara è un po' come il primo amore: non si scorda mai 8-) :!:

axpgn
A proposito di "anzianità" ... CRT = cathodic ray tube ... tu pensa che questi forse non ne hanno visto uno ... :D

[ot]Cmq, per quelli come me (voi, cioè zero e ref, siete ancora molto giovani ... :wink: ) la cosa che più ci colpisce (se appena appena ci fermiamo un attimo a rifletterci) è il fatto che non avete idea di cosa sia stato il muro di Berlino (inteso non come simbolo fine a se stesso ma come rappresentante di TUTTA un'epoca ...): ve lo garantisco, non potete capire ...[/ot]

Cordialmente, Alex

Cronovirus
A dire la verità io non ho mai scritto niente in pascal ma leggendo il programma ho visto quella riga e mi sono detto: UAO, metto due parentesi e faccio read e write contemporaneamente tipo java, senza pero specificare alcunché. Ancora più compatto di python. Ovviamente poi sono andato a vedere e non era cosi :) :-P

Vincenzo983
"Zero87":
Alla metà dei miei anni attuali facevo programmi in pascal. Non vedo "use crt" (o "uses crt" non ricordo) che ci facevano mettere sotto al nome del programma come fosse un dogma.
Non ho mai capito a cosa servisse.

Comunque
[quote="Cronovirus"]Sopratutto fai readLn alla fine del programma.. che senso ha?

Per dar modo di far leggere il risultato all'utente poiché altrimenti il programma darebbe il risultato e una frazione di secondo dopo finirebbe, chiudendosi. Quello vuol dire, in pratica, di dire all'utente di premere invio per chiudere il programma.
Alla mia epoca ci facevano inserire un "repeat until keypressed".

Comunque per me l'errore è dove te l'ha segnalato Cronovirus. Per esempio, io farei

writeln('Dammi il coefficiente a');
readln(a);
writeln('Dammi il coefficiente b');
readln(b);
ecc...

A distanza di minimo 12 anni... me lo ricordo ancora il caro Pascal?[/quote]

Program Retta;
var
a:integer;
b:integer;
c:integer;

begin
writeln('Inserisci il coefficiente a');
readln(a);
writeln('Inserisci il coefficiente b');
readln(b);
writeln('Inserisci il coefficiente c');
readln(c);

writeLn(a,'x +',b,'y +',c,'= 0');
writeLn;
writeLn('y =',-(a/b),'x',-(c/b));

readLn;
end.

Ho corretto quella parte ma il compilatore mi dice che c'è un'altro errore qui :
writeLn(a,'x +',b,'y +',c,'= 0');
writeLn;
writeLn('y =',-(a/b),'x',-(c/b));

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.