Newsgroup: it.lavoro.informatica
Titolo: non riesco a capire differenza tra funzioni e subroutine

Salve, cercando in internet ho trovato questo:
'La differenza con le subroutine č che le subroutine eseguono solo azioni,
le seconde calcolano e restituiscono valori.'
Sembra semplicissimo eppure non mi č chiaro: cosa si intende esattamente per
restituzione di un valore? Per come la vedo io negli
esempi che vi riporto qui sotto entrambe restituiscono il valore di un
calcolo numerico, quindi probabilmente sbaglio ad interpretare la parola
valore. In internet ho trovato solo questa e un paio di frasi molto simili
per spiegarne la differenza, al che mi chiedo... ci sono intere pagine solo
per
spiegare cosa č una variabile, viene spiegata in tutte le salse possibili e
immaginabili, ma per una cosa come questa, che secondo me č molto piů
difficile
da capire rispetto ad una variabile, solo poche righe tutte uguali.
___FUNCTION_________
dim inizio, numero
Function calcolonumero(numero)
for inizio = 1 to numero
calcolonumero= calcolonumero * numero
response.write calcolonumero
response.write "<br>"
next
end function
calcolonumero(5)
___SUBROUTINE__________
dim numero1, numero2, risultato
sub calcolonumero2(numero1, numero2)
risultato= numero1*numero2
response.write risultato
end sub
numero1=10
numero2=20
calcolonumero2 numero1, numero2

 le seconde calcolano e restituiscono valori.'
hai sbagliato gruppo.
prova su it.scienza.informatica, piu' appropriato di questo per il tuo
problema.
-- 
FabMind

 wrote in message
news:iQLmd.13706$n%2.1...@tornado.fastwebnet.it...
| Salve, cercando in internet ho trovato questo:
|
| 'La differenza con le subroutine è che le subroutine eseguono solo
azioni,
| le seconde calcolano e restituiscono valori.'
|
| Sembra semplicissimo eppure non mi è chiaro: cosa si intende
esattamente per
| restituzione di un valore? Per come la vedo io negli
| esempi che vi riporto qui sotto entrambe restituiscono il valore di
un
| calcolo numerico, quindi probabilmente sbaglio ad interpretare la
parola
| valore. In internet ho trovato solo questa e un paio di frasi molto
simili
| per spiegarne la differenza, al che mi chiedo... ci sono intere
pagine solo
| per
| spiegare cosa è una variabile, viene spiegata in tutte le salse
possibili e
| immaginabili, ma per una cosa come questa, che secondo me è molto
più


 globale_ ovvero in una variabile vista da varie parti del programma.
Ti ringrazio per le informazioni, ho letto solo ora la tua risposta, ma
direi che spiegata così è già più chiaro
Saluti

 void, o in altre parole non restituisce) fa calcoli e basta.
Questo non è vero. O, meglio, è vero in svariati linguaggi (VB, C, ...) ma
non di principio.
Una funzione è la traslazione in linguaggio di programmazione del concetto
matematico di applicazione funzionale: un numero (una mela, un qualsiasi
elemento di un insieme) che provenga da un altro (o da un insieme di altri)
secondo una regola _dichiarativa_ qualsiasi.
L'amico Giacomino dovrà pensare ad una funzione come ad un numero a tutti
gli effetti, che potrà essere utilizzato all'interno delle convenzioni
aritmetiche consentite per il tipo di numero che la funzione ritorna, che
potrà essere base di calcolo per altre funzioni (composizione), ecc ...
Una funzione matematica, per sua stessa definizione, da stessi risultati a
partire da stessi valori. Una funzione VB o C non garantisce stessi
risultati a partire da stessi parametri. Basta che la funzione modifichi e
utilizzi un valore all'esterno del suo scope per aggirare questo vincolo.
Nelle funzioni c'è (o meglio ci dovrebbe essere) l'obbligo di non comportare
modifiche "al contorno" (nessun "accoppiamento patologico" col chiamante).
In molti linguaggi (quali Pascal o ADA) è inibito, infatti, il passaggio per
referenza dei parametri a funzione. Inoltre è sempre deprecato (in alcuni
compilatori ADA si può decidere di bloccarne la validità a livello di
compilazione) l'utilizzo di qualsiasi oggetto non costante al di fuori dello
scope della funzione stessa.
In alcuni linguaggi particolari (tipo Prolog) non esiste per nulla il
concetto di procedura, ma solo quello di funzione.
Ne dubbio che si tratti di funzione o precedura si farebbe bene a
considerare se si tratti di raggruppare logicamente un gruppo di istruzioni
contigue, magari per farne riuso altrove (procedura) o se, al contrario, si
tratti interpretare un gruppo di attività di calcolo come un unico risultato
finale (funzione).
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 concetto di procedura, ma solo quello di funzione.
Scusa ma puzzi di ingegnere da bestia he he.
Fatto Ingegneria del SW con Ghezzi ?
Nicola


 ha scritto:
| Ne dubbio che si tratti di funzione o precedura si farebbe bene a
| considerare se si tratti di raggruppare logicamente un gruppo di
istruzioni
| contigue, magari per farne riuso altrove (procedura) o se, al
contrario, si
| tratti interpretare un gruppo di attività di calcolo come un unico
risultato
| finale (funzione).
|
giusto.
inoltre possiamo aggiungere che nei linguaggi fortemente object
oriented, facciamo un esempio: il c#, non ha nemmeno piu' senso il
concetto di funzione (globale).
tutto deve stare all'interno di una classe, oppure nisba per cui
sparisce un po' il concetto di libreria come sola lista di funzioni