Newsgroup: it.comp.lang.pascal
Titolo: Domanda funzioni pascal

Salve a tutti!
Volevo porvi un mio assillante dubbio sulle funzioni in pascal: quando
all'interno di una di esse devo restituire il valore di ritorno devo
riferirmi solo al nome della funzione stessa o posso anche usare la
parola result??
Vi faccio due esempi per capire meglio xD
Devo obbligatoriamente usare questo tipo di sintassi (ho lasciato
stare i parametri perché in questo momento non interessano xD):
function Nome_Funzione: Tipo_Restituito;
begin
...
Nome_Funzione:=Valore_Da_Restituire;
end;
o posso fare anche così:
function Nome_Funzione: Tipo_Restituito;
begin
...
Result:=Valore_Da_Restituire;
end;
La seconda sintassi viene riconosciuta perfettamente da DevPascal
invece TurboPascal si impianta dicendo che non riconosce
l'identificatore. Come è possibile sta cosa??? Quale dei due
compilatori ha "ragione"???
Grazie mille a chiunque possa risolvere il mio dilemma xD
Spero di essermi piegato bene xD Grazie xD

 La seconda sintassi viene riconosciuta perfettamente da DevPascal
Ciao, purtroppo non ti so rispondere, ma voglio segnalarti, se già non 
lo conosci, 
http://www.freepascal.org/
 è molto più aggiornato del 
DevPascal.
Ciao, Mario

Grazie Mario xD ma a me non interessa cambiare compilatore.. la mia
domanda è il motivo per il turbo pascal si impianta mentre il Dev
pascal riconosce la sintassi.. Ho fatto alcune ricerche ma non sono
riuscito a capire se usare il result è una cosa lecita o no nel
linguaggio pascal.. Grazie comunque xD

Scriveva Alessandro Pasqualini venerdì, 11/03/2011:

Io il Turbo Pascal lo usavo quasi vent'anni fa' a scuola e quindi non 
ricordo ...
Da 4 o 5 anni uso Lazarus, e quindi indirettemente il Free Pascal, e 
adesso uso solo il Result. La cosa comoda è che se cambi nome alla 
funzione, hai una cosa in meno di cui ricordarti, altrimenti dovresti 
cambiare anche "l'interno" della funzione.
Anche nei sorgenti di FreePascal e Lazarus, scritti da gente che ne sa 
moooolto più di me, viene usato praticamente solo il Result.
Ciao, Mario

Scusa Mario devo aver sbagliato a premere il bottone.. comunque ho
guardato i sorgenti presenti come esempio in dev Pascal e viene usato
il result xD Mi sento realizzato: se lo usano loro vorrà dire che è
lecito xD Grazie ancora Mario:)

 Spero di essermi piegato bene xD Grazie xD
La domanda � un po' complicata perch� dipende tutto dal punto di vista.
Il pascal sebene standardizato ( ISO 7185 versione iniziale, ISO 10206 
versione "estesa" contente ad esempio gli oggetti ) ha, come tutti i 
linguaggi del resto, molte varianti o dialetti. Questi dialetti vengono 
introdotti dai compilatori che a mano mano che cambiano versione 
arrichiscono il loro dialetto.
Questo vale per tutti i linguaggi. Il pascal � un linguaggio 
particolare, per molti anni sebene ci fosse uno standard c'era un 
dialetto che era standard di facto. Il dialetto introdotto da borland 
nei sui compilatori prima con la seria TurboPascal e poi con Delphi.
Quindi la vera domanda � "a quale standard ti vuoi riferire"? Se 
prendiamo il pascal primordiale ( ISO 7185 ) sicuramente non aveva il 
"result" ( molto comodo devo dire ).
La variabile implicita result viene introdotta, da quel che so, dal 
Delphi ma non so in che versione.
Spero di essere stato utile.

La mia domanda è sorta in quanto a scuola stiamo imparando questo
linguaggio, anche se personalmente lo conosco da alcuni anni, e
durante un compito in classe ho usato la sintassi con il result e
avendo usato il Dev-Pascal non ho avuto problemi nella compilazione.
Quando la prof ha consegnato il compito corretto ha detto che non
conoscevo la sintassi in quanto, secondo lei, non avevo dichiarato la
variabile result, e mi ha mostrato che con il Turbo Pascal
effettivamente si impallava dicendo che non riconosceva
l'identificatore, così ho cercato di spiegare alla prof l'uso del
result al posto del nome della funzione, ma mi ha mostrato un libro
sulla programmazione pascal (mooolto vecchio) dove non si accennava
all'uso del result. La mia domanda è: Perchè il Turbo Pascal si
impianta mentre il Dev-Pascal accetta la sintassi?? Sono andato a
cercare negli iso del pascal e non si parla del result, nemmeno
nell'object Pascal. Delphi non deriva dall'object Pascal?? Perchè
l'introduzione del result?? e poi è così sbagliato averlo usato???
chiedo scusa per il mare di domanda ma sta cosa mi ha davvero sorpreso
xD
Grazie comunque xD

 chiedo scusa per il mare di domanda ma sta cosa mi ha davvero sorpreso
Scusami una domanda: ma voi a scuola con cosa programmate? Turbo Pascal 
o Dev-Pascal?

Il problema è proprio questo: la prof inizialmente ci ha detto di
usare il Turbo Pascal ma nei computer della scuola era presente anche
Dev-Pascal. Poi un po' per insistenza mia, che preferisco il Dev-
Pascal, e un po' perchè i miei compagni hanno scoperto che Dev-Pascal
è fatto in grafica, si è convinta a lasciarci usare anche questo.

 � fatto in grafica, si � convinta a lasciarci usare anche questo.
Capisco. Beh Dev-Pascal sicuramente � comodo l'ho usato anch'io per un 
piccolo lasso di tempo.
Comunque ricordati che Dev-Pascal � solo un IDE e che il cuore �, il 
compilatore, FreePascal.
Comunque se la tua professoressa � abbituata al dialetto BP usa quello e 
vivi felice. Al limite comprati un buon manuale. Con il vecchio BP si 
puossono fare un sacco di cose interessanti ( considera che � l'unico 
compilatore pascal che ho installato ora, anche se per motivi nostalgici 
sopratutto ).

Si hai ragione.. Però è molto più comodo il Dev-Pascal. Però mi sono
già riproposto di scrivere il sorgente con il Dev-Pascal e prima di
consegnare la prossima volta controllo che funzioni anche sul Turbo
Pascal. Il problema è che la mia prof è convinta che non si possa
usare il result solo perchè non va sul Turbo... Vabbè proverò a
spiegarle quello che gentilmente mi hai illustrato tu. Grazie Mille xD
Ti chiedo un'altra cosa: uno standard iso (tipo quello del pascal) è
il dialetto più usato e conosciuto?? Grazie ancora per il tuo aiuto xD

 dichiarnadolo a mano ;)
Ho provato ma non restituisce il valore della funzione, a dire la
verità nelle mie prove non è stato restituito niente. Puoi gentilmente
spiegarmi come fai a usare il result anche sul Turbo Pascal??
Grazie Mille xD


function miafunzione : tiporitorno;
var result : tiporitorno;
begin
    ....
    result := risultato;
    ....
    miafunzione := result;
end;

 il dialetto più usato e conosciuto?? Grazie ancora per il tuo aiuto xD
Se ho capito la domanda, e non ne sono sicuro, a differenza del C dove 
ANSI C è ritenuto molto importante ( anche se molti si ci alontanano ) 
per il pascal gli standard non li conosce quasi nessuno e tutti, o 
quasi, usano il dialetto Borland.
In particolare il Turbo Pascal 7 è stato uno standard incontrastato per 
diversi anni ( alemeno tutti gli anni 90 ).
C'è da considerare che almeno io ho iniziato ad usare intesivamente 
Delphi dalla versione 5 ( 1999 ) ma non ho mai considerato mischiato le 
cose. Conoscevo le differenze dei due dialetti e li tenevo separati. ( 
che in effetti sembravano quasi due linguaggi diversi, basti pensare che 
delphi ha la parola chiave class mentre il bp usa il vecchio object )
Quando qualcuno mi dice "Sai programmare in pascal" penso ancora oggi al 
dialetto di Borland/Turbo Pascal 7 e gli rispondo con orgoglio 
affermativamente. Questo non toglie che se qualcuno mi dice "Sai 
programmare in delphi" io non gli dica di sì ;)

Se ho capito bene il delphi non è altro che l'evoluzione del vecchio
turbo pascal, quindi credo sia logico che il dialetto sia simile ma
non uguale, e che il delphi abbia sostanzialmente allargato il
dialetto del Turbo Pascal. Ora la Bloodshed quando ha "inventato" il
Dev-Pascal ha ritenuto più vantaggioso basarsi sul dialetto del delphi
perché più nuovo. Quindi i sorgenti scritti con Turbo Pascal vengono
compilati a pieno dal Dev-Pascal ma non è possibile dire lo stesso
perchè il secondo compilatore utilizza un dialetto più nuovo rispetto
al primo. Correggimi se ho sbagliato qualche cosa nel mio ragionamento
xD


Tutto giusto tranne che Dev-Pascal è solo un IDE ( interfaccia ) che si 
"poggia" su FreePascal. Tra parentesi da quel che so il FreePascal ha un 
suo dialetto "legermente" diverso.

Grazie mille xD
Mi sei stato davvero utile xD adesso ho le conoscenze per tirami su il
voto della verifica xD
Grazie Grazie xD

Mi è venuta in mente un altra domanda xD. Il pascal che viene
insegnato nei libri è quello dello standard iso o è un dialetto del
linguaggio?? Grazie ancora xD

Ciaoooo xD Guardando i Vecchi topic ho notato che parlavi di una
dicitura del tipo:
program mio_programma(in,out);
...
io non ho mai usato questa dicitura, personalmente ho sempre usato:
program mio_programma;
...
Volevo chiederti se per caso è stata la Borland con il suo dialetto a
cambiare la prima sintassi nella seconda o come mai si usa la seconda
adesso??? grazie mille xD

 linguaggio?? Grazie ancora xD
Diprende dal libro. Il mio libro di riferimento insegna il Turbo Pascal 
7 con tutti i tool e contro tool.


La prima ( con in e out ) è la diciura "standard" il borland l'ha 
eliminata ( perché fondamentalmente non serve a un beep ).
Nel dialetto borland è ammissibile una qualunque lista di parametri che so
program mio_programma( a, b, c, d, e, f );
intanto vengono alegramente ignorati perché, come viene detto dalla 
guida "it's purely informative and has no meaning to the program itself"

 guida "it's purely informative and has no meaning to the program itself"
Ma in teoria a che servirebbe?? Cosa indicano i parametri dentro le
parentesi??? Grazie xD


Dovrebbero essere i parametri di ingresso ( in ) e di uscita ( out ) del 
programma. In altre parole la tastiera ( in ) e lo schermo ( out ).
Di preciso non so come si dovrebbero usare.

 Di preciso non so come si dovrebbero usare.
Grazie mille mi sei stato di grandissimo aiuto:)