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
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
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
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.
chiedo scusa per il mare di domanda ma sta cosa mi ha davvero sorpreso
xD
Grazie comunque xD
> La mia domanda è: Perchè il Turbo Pascal si
> impianta mentre il Dev-Pascal accetta la sintassi??
Perché come ti ho detto fanno riferimento a due dialetti diversi.
Il DevPascal fa riferimento al dialetto introdotto con Delphi mentre il
turbo pascal fa riferimento al suo dialetto. Tra parentesi c'è
differenza tra le versioni. Un codice scritto per Turbo Pascal 7 ( il
più diffuso dei "Turbo Pascal" è poco probabile che funzioni con
versioni precedenti.
Tanto per fare un esempio prendiamo un oggetto:
- nel Turbo Pascal 7 esistono entrambe le parole chiavi public e private
- nel Turbo Pascal 6 esiste solo la parola chiave private
- nel turbo pascal 5 non esistono ( tutto è pubblico e tanti saluti )
> Sono andato a
> cercare negli iso del pascal e non si parla del result, nemmeno
> nell'object Pascal.
Mi soprendere del contrario.
> Delphi non deriva dall'object Pascal??
Delphi è l'object pascal. Delphi è la prosecuzione del Turbo Pascal che
dalla versione 5 è "orientabile" ad ogetti. Tanto e vero che almeno fino
a Delphi 6 la versione del compilatore non era 6 ma 13 perché si metteva
idealmente dopo il Borland Turbo Pascal with object 7 ( nome completo
del Turbo Pascal ).
> Perchè
> l'introduzione del result?? e poi è così sbagliato averlo usato???
Perché è comodo. Il compilatore fa quello che il 90% delle volte devi
fare tu.
No non è "sbagliato" è del tutto lecito se stai usando un compilatore
che capisce quel dialetto. Diciamo che teoricamente sarebbe meglio
evitarlo perché come hai visto non tutti i compilatori lo capiscono.
Io personalmente qunado programmo in BP uso lo stesso result
dichiarnadolo a mano ;)
{ Pero' delphi generà errore se lo si fa perché a definire la varibile
ci pensa lui per noi }
> 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?
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 ).
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;
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ì ;)
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.
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
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"
> 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"
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.
> 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.
Grazie mille mi sei stato di grandissimo aiuto:)