Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Gost
|
Postano: 10:29 čet, 27. 11. 2003 Naslov: Funkcije? |
|
|
Imam dva lagana pitanjca u vezi funkcija, pa vas molim da pomognete:
1. Kada želimo promjeniti vrijednost neke varijable u glavnom programu pomoću funkcije, kako deklariramo tu funkciju, i kako je pozivamo?
Ja mislim da je to nešto kao:
npr. deklaracija: Funkcija SWAP(int *a, int *b){...}
poziv: SWAP(&x, &y);
ali nisam sigurna (u vezi * i &).
2. Isto pitanje sa poljima koja želimo izmjeniti u gl. programu?
npr. deklaracija: Funkcija SORT(int &a[1], int n){...}
poziv: SORT(&x[1], m);
Ovdje pogotovo nisam sigurna.
Jako vas molim da mi odgovorite jer imam pismeni 1.12., i to mi fakat treba.
Unaprijed zahvalna
Imam dva lagana pitanjca u vezi funkcija, pa vas molim da pomognete:
1. Kada želimo promjeniti vrijednost neke varijable u glavnom programu pomoću funkcije, kako deklariramo tu funkciju, i kako je pozivamo?
Ja mislim da je to nešto kao:
npr. deklaracija: Funkcija SWAP(int *a, int *b){...}
poziv: SWAP(&x, &y);
ali nisam sigurna (u vezi * i &).
2. Isto pitanje sa poljima koja želimo izmjeniti u gl. programu?
npr. deklaracija: Funkcija SORT(int &a[1], int n){...}
poziv: SORT(&x[1], m);
Ovdje pogotovo nisam sigurna.
Jako vas molim da mi odgovorite jer imam pismeni 1.12., i to mi fakat treba.
Unaprijed zahvalna
|
|
[Vrh] |
|
glenda_north Forumaš(ica)


Pridružen/a: 18. 11. 2003. (21:13:31) Postovi: (2F)16
Lokacija: NORTH
|
|
[Vrh] |
|
glenda_north Forumaš(ica)


Pridružen/a: 18. 11. 2003. (21:13:31) Postovi: (2F)16
Lokacija: NORTH
|
Postano: 12:35 čet, 27. 11. 2003 Naslov: |
|
|
E, baš sam pogledala, samo što ti ja to imam u starom PSEUDO jeziku.
1. funkcija SWAP(adr1, adr2), a poziva se sa swap(&a, &b). U C-u se adresa oznhačuje s *, tak da ti je dobro.
2.funkcija sortiraj (početak, n), a poziva se sa sortiraj (&a[1],n).
Btw., čini mi se da se još na ovom pismenom, 1. 12. piše u starom PSEUDU, bar su meni tak rekli.
GOOD LUCK! :D :D
E, baš sam pogledala, samo što ti ja to imam u starom PSEUDO jeziku.
1. funkcija SWAP(adr1, adr2), a poziva se sa swap(&a, &b). U C-u se adresa oznhačuje s *, tak da ti je dobro.
2.funkcija sortiraj (početak, n), a poziva se sa sortiraj (&a[1],n).
Btw., čini mi se da se još na ovom pismenom, 1. 12. piše u starom PSEUDU, bar su meni tak rekli.
GOOD LUCK!
_________________ GLENDA_NORTH
life is good
and goodness lasts forever
#butterfly
|
|
[Vrh] |
|
Gost
|
Postano: 22:54 čet, 27. 11. 2003 Naslov: |
|
|
Puno hvala na odgovoru. Da, znam da se piše u pseudo jeziku (za drugi jezik nisam ni znala da postoji do danas).
Jedino što me sada zbunjuje je to da li se moraju navoditi tipovi podataka argumenata funkcije(jer znam da se kod zapisa moraju navesti tipovi):
npr. Funkcija SWAP(int a, int b){...} ili Funkcija SWAP(a, b){...} :?
Molim vas, odgovorite mi još samo ovo, i obećajem da više neću dosađivati. :silence:
Po drugi puta unaprijed zahvalna!
Puno hvala na odgovoru. Da, znam da se piše u pseudo jeziku (za drugi jezik nisam ni znala da postoji do danas).
Jedino što me sada zbunjuje je to da li se moraju navoditi tipovi podataka argumenata funkcije(jer znam da se kod zapisa moraju navesti tipovi):
npr. Funkcija SWAP(int a, int b){...} ili Funkcija SWAP(a, b){...}
Molim vas, odgovorite mi još samo ovo, i obećajem da više neću dosađivati.
Po drugi puta unaprijed zahvalna!
|
|
[Vrh] |
|
krcko Forumaš nagrađen za životno djelo


Pridružen/a: 07. 10. 2002. (15:57:59) Postovi: (18B3)16
|
Postano: 23:19 čet, 27. 11. 2003 Naslov: |
|
|
Treba razlikovati deklaraciju funkcije od poziva funkcije. Kod deklaracije se navodi tip varijable, a zvjezdica znaci da se radi o pokazivacima na taj tip. Na primjer, [i]swap(int a, int b)[/i] je funkcija koja uzima dva integera (to nije dobro ako zelimo mijenjati vrijednosti varijabli), a [i]swap(int *a, int *b)[/i] funkcija koja uzima dva pointera na integere.
Kod poziva funkcije ne navode se tipovi, a zvjezdica ima drugo znacenje. U izvrsnom dijelu programa * je operator koji vraca sadrzaj na koji pokazuje pointer. Recimo, na pocetku programa deklariramo varijablu [i]int *x[/i] (pokazivac na integer). Poziv [i]prinf("%d",x)[/i] ispisat ce [b]adresu[/b] pohranjenu u varijabli x, a [i]printf("%d",*x)[/i] [b]sadrzaj[/b] koji se nalazi na toj adresi. Operator & radi suprotnu stvar - daje adresu na kojoj se nalazi sadrzaj neke varijable. Zato kod zamjene sadrzaja varijabli u glavnom programu treba pozvati funkciju ovako: [i]swap(&a, &b)[/i].
Inace, cijela ova prica odnosi se na C. No cini se da pseudojezik sve vise konvergira C-u :D Nadam se da sam uspio objasniti... ne stvoriti dodatnu zbrku...
Treba razlikovati deklaraciju funkcije od poziva funkcije. Kod deklaracije se navodi tip varijable, a zvjezdica znaci da se radi o pokazivacima na taj tip. Na primjer, swap(int a, int b) je funkcija koja uzima dva integera (to nije dobro ako zelimo mijenjati vrijednosti varijabli), a swap(int *a, int *b) funkcija koja uzima dva pointera na integere.
Kod poziva funkcije ne navode se tipovi, a zvjezdica ima drugo znacenje. U izvrsnom dijelu programa * je operator koji vraca sadrzaj na koji pokazuje pointer. Recimo, na pocetku programa deklariramo varijablu int *x (pokazivac na integer). Poziv prinf("%d",x) ispisat ce adresu pohranjenu u varijabli x, a printf("%d",*x) sadrzaj koji se nalazi na toj adresi. Operator & radi suprotnu stvar - daje adresu na kojoj se nalazi sadrzaj neke varijable. Zato kod zamjene sadrzaja varijabli u glavnom programu treba pozvati funkciju ovako: swap(&a, &b).
Inace, cijela ova prica odnosi se na C. No cini se da pseudojezik sve vise konvergira C-u Nadam se da sam uspio objasniti... ne stvoriti dodatnu zbrku...
_________________ Vedran Krcadinac
Ljudi su razliciti, a nula je paran broj.
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
|