Procedure vs funktioner

Tags:    visual-basic

<< < 12 > >>
Hejsa, er der en der kort kan beskrive nogle af de fællestræk som findes mellem procedure og funktioner??

Ligeledes hvis det er, en lille kort gennemgang af de forskellige! Eller måske en url hvor man kunne blive klogere selv :D



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hejsa, er der en der kort kan beskrive nogle af de fællestræk som findes mellem procedure og funktioner??

Ligeledes hvis det er, en lille kort gennemgang af de forskellige! Eller måske en url hvor man kunne blive klogere selv :D

En function giver et resultat, Procedure gør ikke
-
neuroman? det' da mig :D
Aloha - Er du fresh???



Hejsa, er der en der kort kan beskrive nogle af de fællestræk som findes mellem procedure og funktioner??

Ligeledes hvis det er, en lille kort gennemgang af de forskellige! Eller måske en url hvor man kunne blive klogere selv :D
En function giver et resultat, Procedure gør ikke
-
neuroman? det' da mig :D
Aloha - Er du fresh???


Hmmm, det passer nu ikke helt. Du kan sagtens lave en procedure som returnere en værdi vha "byref" foran parameteret (VB bruger default "byval" ved alle parameter hvis du ikke angiver "byref"). Men det er rigtigt at funktioner returnere en værdi (det vil den altid). Der i mod behøver en procedure ikke at gøre det, men den kan godt.

Normalt vil du bruge en funktion når du kun skal ha' returneret 1 resultat (dog vil der være nogle situationer hvor man vælger en procedure i stedet for) og ellers en procedure.

Michael.[Redigeret d. 19/03-03 18:22:35 af Michael Skovslund]



Hvis du ved hvad en function er:

En function giver kalderen en værdi tilbage.
En procedure er en function der ikke giver en værdi tilbage.

Hvis du ved hvad er procedure er:

En procedure udförer et stykke arbejde kan tager imod argumenter.
En function gör det samme, men sender et argument tilbage til kalderen.

Brug:

En procedure kalder man bare.
procXXX();

En function samler man (hvis man vil) retur værdien op for.
yyy = funcXXX();


Se bort fra syntax fejl, jeg er lige ved at skulle til at starte på Delphi og det er 9 år siden jeg kikkede på Pascal sidst , så måske er det := og uden ; eller hvad ved jeg.



Hejsa, er der en der kort kan beskrive nogle af de fællestræk som findes mellem procedure og funktioner??

Ligeledes hvis det er, en lille kort gennemgang af de forskellige! Eller måske en url hvor man kunne blive klogere selv :D
En function giver et resultat, Procedure gør ikke
-
neuroman? det' da mig :D
Aloha - Er du fresh???

Hmmm, det passer nu ikke helt. Du kan sagtens lave en procedure som returnere en værdi vha "byref" foran parameteret (VB bruger default "byval" ved alle parameter hvis du ikke angiver "byref"). Men det er rigtigt at funktioner returnere en værdi (det vil den altid). Der i mod behøver en procedure ikke at gøre det, men den kan godt.

Normalt vil du bruge en funktion når du kun skal ha' returneret 1 resultat (dog vil der være nogle situationer hvor man vælger en procedure i stedet for) og ellers en procedure.

Michael.[Redigeret d. 19/03-03 18:22:35 af Michael Skovslund]

Hva ved jeg, som om jeg koder i det forvirrende crap anyways :/
-
neuroman? det' da mig :D
Aloha - Er du fresh???



Hvis du ved hvad en function er:

En function giver kalderen en værdi tilbage.
En procedure er en function der ikke giver en værdi tilbage.

Hvis du ved hvad er procedure er:

En procedure udförer et stykke arbejde kan tager imod argumenter.
En function gör det samme, men sender et argument tilbage til kalderen.

Brug:

En procedure kalder man bare.
procXXX();

En function samler man (hvis man vil) retur værdien op for.
yyy = funcXXX();


Se bort fra syntax fejl, jeg er lige ved at skulle til at starte på Delphi og det er 9 år siden jeg kikkede på Pascal sidst , så måske er det := og uden ; eller hvad ved jeg.


Ganske rigtig (syntax-mæssigt), men det som var min hensigt var at fortælle at du sagtens kan får værdier returneret/ændret via en procedure og ikke kun via en funktion!

Michael.



Ganske rigtig (syntax-mæssigt), men det som var min hensigt var at fortælle at du sagtens kan får værdier returneret/ændret via en procedure og ikke kun via en funktion!

Michael.


Igen: Du kan ikke RETURNERE fra en procedure.

Reference parametre er en anden boldgade.
Lad os sige at du har en funcion og en procedure, begge med 3 parametre.
I proceduren kan du ændre værdierne i de 3 parametre, hvis de er referencer.
I functionen kan du det samme PLUS du kan sende en extra helt ny værdi/reference tilbage.


Rent brugsmæssigt er det rigtigt at man ikke behöver hold sig til functioner hvis man skal have feedback, reference overförte parametre kan göre samme trick.
MEN .. det er rent logisk udemærket at bruge functioner afligevelle .. det er renere, det ser mere simpelt ud, mere læsbart og så er der er grund til at der er både functioner og procedurer .. ellers kunne man vel droppe den ene, ikke ?

Jeg mener ikke at parametre overfört pr reference er dumt i alle tilfælde, men blot for fx at få status eller et resultat tilbage .. der passer function bedre.
Mindre forvirring, mere simpelt.

right ?




Igen: Du kan ikke RETURNERE fra en procedure.

Reference parametre er en anden boldgade.
Lad os sige at du har en funcion og en procedure, begge med 3 parametre.
I proceduren kan du ændre værdierne i de 3 parametre, hvis de er referencer.
I functionen kan du det samme PLUS du kan sende en extra helt ny værdi/reference tilbage.


Rent brugsmæssigt er det rigtigt at man ikke behöver hold sig til functioner hvis man skal have feedback, reference overförte parametre kan göre samme trick.
MEN .. det er rent logisk udemærket at bruge functioner afligevelle .. det er renere, det ser mere simpelt ud, mere læsbart og så er der er grund til at der er både functioner og procedurer .. ellers kunne man vel droppe den ene, ikke ?

Jeg mener ikke at parametre overfört pr reference er dumt i alle tilfælde, men blot for fx at få status eller et resultat tilbage .. der passer function bedre.
Mindre forvirring, mere simpelt.

right ?

Jamen igen, så giver jeg dig ret :)

Funktioner skal bruges hvor det er smart (f.eks. ved returnering af et status parameter) og procedure hvor det er smart. Om det er mere læsbart eller ej, så må man gå ud fra at når man bruger en funktion så ved man også om det er byref eller ej. Jeg mener ikke det bliver nemmere eller sværere at læse om du bruger det ene eller det andet.

Et lille sidespring:
Hvis vi så kigger lidt dybere ned i COM (som VB jo er) så vil du også kunne se at alle procedure og funktioner faktisk returnere en værdi (HRESULT) og din return værdi (fra en funktion) kommer fra din parameter liste. Dette har selvfølgelig intet med syntax delen at gøre, men bare en lille tanke-torsk!

Nå, nok om funktioner og procedure......Jeg tror vi er enige!

Michael.




Et lille sidespring:
Hvis vi så kigger lidt dybere ned i COM (som VB jo er) så vil du også kunne se at alle procedure og funktioner faktisk returnere en værdi (HRESULT) og din return værdi (fra en funktion) kommer fra din parameter liste. Dette har selvfølgelig intet med syntax delen at gøre, men bare en lille tanke-torsk!

Nå, nok om funktioner og procedure......Jeg tror vi er enige!

Michael.


He he .. du er lige så stædig som mig.

At alle kald i COM giver en værdi tilbage, hvad beviser det?
Ikke noget andet end at alle kald skal aflevere status .. og derfor er alle kald i COM functioner .. dybest set .. uanset om de så levere noget tilbage (er functioner) eller ej (er procedurer) i laget over .. (her VB).
Come on.

Jeg ved du bare mener at man kan klare sig uden functioner, og det er rigtigt.
Men kun med functioner kan du sende et resultat tilbage som en return værdi.

Brug det så til det du vil, men du ændrer det ikke uanset hvordan du argumenterer for det.

At COM ifölge dig implementere alle kald igennem functioner (for at kunne trace om det gik godt) er så noget helt andet.
Om ens compiler laver x*256 om til en lshift 8 ved compilering ændrer ikke noget ved programmeringssproget selv .. blot udförelsen.

Glæder mig allerede til at se hvad du kommer med næst ;)
Jonatan




Et lille sidespring:
Hvis vi så kigger lidt dybere ned i COM (som VB jo er) så vil du også kunne se at alle procedure og funktioner faktisk returnere en værdi (HRESULT) og din return værdi (fra en funktion) kommer fra din parameter liste. Dette har selvfølgelig intet med syntax delen at gøre, men bare en lille tanke-torsk!

Nå, nok om funktioner og procedure......Jeg tror vi er enige!

Michael.

He he .. du er lige så stædig som mig.

At alle kald i COM giver en værdi tilbage, hvad beviser det?
Ikke noget andet end at alle kald skal aflevere status .. og derfor er alle kald i COM functioner .. dybest set .. uanset om de så levere noget tilbage (er functioner) eller ej (er procedurer) i laget over .. (her VB).
Come on.

Jeg ved du bare mener at man kan klare sig uden functioner, og det er rigtigt.
Men kun med functioner kan du sende et resultat tilbage som en return værdi.

Brug det så til det du vil, men du ændrer det ikke uanset hvordan du argumenterer for det.

At COM ifölge dig implementere alle kald igennem functioner (for at kunne trace om det gik godt) er så noget helt andet.
Om ens compiler laver x*256 om til en lshift 8 ved compilering ændrer ikke noget ved programmeringssproget selv .. blot udförelsen.

Glæder mig allerede til at se hvad du kommer med næst ;)
Jonatan

hehe..god morgen :)

Her er det næste ;0)

Som jeg så pænt skrev så var det "et lille sidesprig/tanketorsk" og ikke noget omkring procedure funktion syntaxen.

Men lad os opsumere:
1. En funktion kan returnere en (kun 1) værdi samt den kan ændre en eller flere (lokale hos kalderen) værdier, øverført via parameter listen.
2. En procedure kan IKKE returnere en værdi, men den kan ændre en eller flere (lokale hos kalderen) værdier, øverført via parameter listen.

- Enig??

AArrrgghh....kan ikke komme på flere irreterende postulater.....damn.....med mindre du har noget at tilføje :)

HOV!!!!!
Hvad med exceptions???....kan det kaldes for en returværdi???.....nnaaa....jeg tror bare vi stopper her :)

Ha en god dag
Michael.




Men lad os opsumere:
1. En funktion kan returnere en (kun 1) værdi samt den kan ændre en eller flere (lokale hos kalderen) værdier, øverført via parameter listen.
2. En procedure kan IKKE returnere en værdi, men den kan ændre en eller flere (lokale hos kalderen) værdier, øverført via parameter listen.

- Enig??

HOV!!!!!
Hvad med exceptions???....kan det kaldes for en returværdi???.....nnaaa....jeg tror bare vi stopper her :)

Michael.


He he ..

1: Vi er enige
2: Exceptions er (som det betyder) undtagelser. Hvordan de implementeres har jeg en mistanke om er forskelligt fra sprog, og jeg skal ikke göre mig klog på hvordan det foregår i VB .. og slet ikke underliggende COM lag osv.

Kan du se? Jeg sagde næsten også bare "Vi er enige" ;)
Jonatan

PS: Og nu kommer kommentaren der holder os körende ;)
Du sagde at fælles for procedurer og functioner var
den kan ændre en eller flere (lokale hos kalderen) værdier, øverført via parameter listen
.
Hvad med "ingen eller flere" istedet for "en eller flere" ?
Har du aldrig lavet netop en procedure der ikke havde parametre?[Redigeret d. 20/03-03 12:32:01 af Jonatan Hertel]



<< < 12 > >>
t