zxz 06.08.2013 09:53
Predmet:Procedure,funkcije,sub,argumenti,parametri

Rasprava u vezi termina koji se koriste za pojedine dijelove koda.

Getsbi 06.08.2013 12:17
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Razlika između parametara kod procedura i argumenata kod funkcija je Å¡to su parametri opcioni, a argumenti obavezni. Otuda i razlika u nazivima. Ovo napominjem zbog konvencije koje bi se trebalo pridržavati pri pisanju programskog koda. Procedure mogu da se pozovu na vrednosti parametara iz nekih drugih procedura i ne moraju.

Sub subname [( parameterlist )]
    statements
End Sub


Function functionname (argumentlist)
    statements
EndFunction

Funkciji najčeÅ¡će zadajete argument sa forme i iz tabele podataka. Mada verovatno ima i drugih načina.
Funkcija bez bar jednog argumenata ne postoji.

Ovako nešto ne postoji:

Function functionname ()
    statements
EndFunction


To Å¡to su inženjeri Microsofta u sintaksi dozvolili, ne mora da znači da je ispravno.
Neko bi mogao da se pozove na ugrađenu funkciju Now() i kaže da nema argument. Međutim i ona ima obavezni argument, a to je sistemski datum i vreme.

Ovo je važno kako bi smo znali kada da započnemo koje zaglavlje.

pmiroslav 06.08.2013 12:53
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Citiraj Getsbi:

Funkcija bez bar jednog argumenata ne postoji.
Ovako nešto ne postoji:

Function functionname ()
    statements
EndFunction



Ovo me zbunjuje. Ako funkcija bez argumenata ne postoji Å¡to je onda ovo u primjeru

PreuzmiIzvorni kôd (vbnet):
  1. Function UpisLog()
  2. '*******************************************
  3. 'Ime:      UpisLog   (Function)
  4. 'Sadržaj: Upisuje u tabelu A_Logovanje
  5.         'logovanja
  6. 'Autor:     ZXZ
  7. 'Datum:      listopad 15, 2007, 08:19:59
  8. 'Adresa: Tuzla BiH
  9. 'Email:     izonic@inet.ba
  10. 'Ulazni parametri:
  11. 'Izlazni parametri:
  12. '*******************************************
  13. Dim db As Database 'novo
  14. Dim rs As Recordset
  15.  
  16. 'Set Rs = Util.Db.OpenRecordset("A_Logovanje")
  17.  
  18. Set rs = db.OpenRecordset("A_Logovanje", dbOpenDynaset)
  19.  
  20. rs.AddNew
  21. rs!KorisnikID = M_Oper.OperID
  22. rs!VrijemeLog = M_Oper.VrijemeLog
  23. rs.Update
  24. rs.Close
  25. End Function
ili ovo
PreuzmiIzvorni kôd (vbnet):
  1. Function tkoRadiIme()
  2. tkoRadiIme = M_Oper.ImeO
  3. End Function

zxz 06.08.2013 15:14
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Ovje je u stvari vise pitanje kako sta zvati.
Opet to dolazi po meni zbog loseg prevoda.
Wikipedija:
Citat:
Procedure su planovi koji utvrđuju neki nužan način postupanja u budućim aktivnostima. To je preciziranje kako određena aktivnost mora biti obavljena.
Cesto dolazi do zabune jer neki programski jezici kao sto je paskal(delphi) Imaju nazive Function i procedure.

E sad Variabla i argument.
variabla-znaci nesto variabilno promjenjljivo a argument nesto argumentovano.

Po meni to ide ovako:
function ImeProcedure(variabla1,variabla2)
Sam naziv promjenjljive jeste variabla jer je promjenjljiva a kada pozivamo:
dim a
a=Imeprocedure(argument1,argument2)
ovdje dodjeljujemo vrijednost variabli i to je argument ili vrijednost.

Getsbi 06.08.2013 20:48
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Kao Å¡to reče ZXZ, ovo je stvar kako Å¡ta zvati, a onda kako Å¡ta pisati.
Po meni su oba gornja primera procedure. Prva za punjenje tabele "A_Logovanje", a druga puni promenljivu "tkoRadiIme". Pretpostavljam da su vrednosti koje se tamo spominju neke Public varijable napunjene prilikom logovanja na aplikaciju.

Da bi ispunilo uslov za funkciju trebalo bi da potražuje argument i vraća vrednost. Recimo ona čuvena
Function slovima(broj)
---- ' [Namerno neću pisati ceo kod
--- ' da nebih opteretio poruku
End Funtion


Pa onda u Reportu napišeš u Control Source nevezanog text boxa, recimo u podnožju strane:
=slovima([ukupno])
Rezultat je slovni ispis nekog novčanog iznosa. To bi bila prava funkcija.

Ovo je kako i sama tema kaže Rasprava u vezi termina koji se koriste za pojedine dijelove koda.

Ja sam za uvođenje konvencije (dogovora) u pisanju koda, kad već Microsoftovi inženjeri nisu to reÅ¡ili kroz sintaksu.

zxz 06.08.2013 20:53
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Da Kao sto je Getsbi naveo bitno je da mi prihvatimo isti termin ili pak da razumijemo jedni druge.
Na internetu je to saroliko cak i od jednog programskog jezika do drugog.
Neki programski jezici imaju samo funkcije i klase.

pmiroslav 07.08.2013 07:18
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Opet meni nešto nije jasno.
Na početku teme ZXZ kaže:
Citiraj ZXZ:

Tip procedure može biti:
-Sub
-Function (Funkcija)
A ovdje gore Getsbi kaže:
Citiraj Getsbi:

Po meni su oba gornja primera procedure.
Jasno mi je da su procedure ali dali su sub procedure ili Funkcije. Jer ja nešto što može biti Sub mogu nazvati i Function. Da li sam u pravu?

zxz 07.08.2013 08:59
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Da u pravu si, neki to i tako kazu.
Procedura je postupak rjesavanja nekog problema a funkcija je rjesenje problema.
Naj bitnije je znati u cemu se sub razlikuje od Function a to je da sub nemoze u imenu vratiti neku vrijednost.
U nekim jezicima n i ne postoje sub kako sam vec negdje naveo ne sjecam se gdje.

pmiroslav 07.08.2013 12:25
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Bit ću dosadan dok ne bude potpuno jasno.
Sub procedura ne može vratiti vrijednost i npr:
PreuzmiIzvorni kôd (vbnet):
  1. Private Sub Dugme_Click()
  2.     Dim stDocName As String
  3.     stDocName = "NarivReporta"
  4.     DoCmd.OpenReport stDocName, acPreview
  5. End Sub
I isto to možemo napisati i kao funkciju:
PreuzmiIzvorni kôd (vbnet):
  1. Function OtvoriReport()
  2.     Dim stDocName As String
  3.     stDocName = "NarivReporta"
  4.     DoCmd.OpenReport stDocName, acPreview
  5. End Function

I sada to pozvati sa istog dugmeta sa
Call OtvoriReport()

Dok obrnuto ako neka funkcija treba vratiti neku vrijednost to ne možemo napisati kao Sub

zxz 07.08.2013 13:50
Predmet:Re: Procedure,funkcije,sub,argumenti,parametri

Samo je razlika sto sub mouze vratiti vrijednost u imenu.
Function Moja()
Moja=2
end function

sub Mojasub()
Mojasub=2
end sub
Ovo drugo nemece raditi,

Nemozes biti dosadan samo pitaj.
Forum sluzi za to i pitanja su na mjestu.