8
08/29/22 1 Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ... Prenošenja nizova kao argumenata može se analizirati na problemu određivanja broja studenata koji su imali natprosečne rezultate na proveri znanja iz osnova programskog jezika C. Algoritam ovog problema se može razložiti na sledeće module Učitavanje vrednosti elemenata niza Izračunavanje prosečnog rezultata Prebrojavanje natprosečnih rezultata Ispis izlaznog izveštaja

Op11 15

Embed Size (px)

DESCRIPTION

Za razliku od znaka, koji nastaje i mimo čovekove volje, svaki simbol je uvek ljudska tvorevina. Već je rečeno da se univerzum otkriva kroz nepregledno mnoštvo znakova u kojima čovek pronalazi određena značenja. Samo se po sebi razume da čulima, kojima ostvaruje prvi kontakt i upija znak iz okruženja, čovek ne može dosegnuti značenje znaka. U proces poimanja znaka uključuju se, gotovo trenutno posle čulne percepcije, razum i emocije. To je trenutak u procesu preobražaja znaka u simbol.Sliku sveta, u prostorno vremenskom beskraju, čovek sagledava i stiče mnoštvom znakova ili signala. • Znak se, budući da ukazuje na nešto, uvek ispoljava kroz jedinstvo dva svoja strukturna elementa - oznaku i označeno. Najčešće su oznaka i označeno posebni entiteti: • Slovo A je oznaka za glas A • Ime označava ličnost • Suza u oku radost ili tugu Za razliku od znaka, koji nastaje i mimo čovekove volje, svaki simbol je uvek ljudska tvorevina. Već je rečeno da se univerzum otkriva kroz nepregledno mnoštvo znakova u kojima čovek pronalazi određena značenja. Samo se po sebi razume da čulima, kojima ostvaruje prvi kontakt i upija znak iz okruženja, čovek ne može dosegnuti značenje znaka. U proces poimanja znaka uključuju se, gotovo trenutno posle čulne percepcije, razum i emocije. To je trenutak u procesu preobražaja znaka u simbol.

Citation preview

Page 1: Op11 15

04/10/23 1

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

•   Prenošenja nizova kao argumenata može se analizirati na problemu određivanja broja studenata koji su imali natprosečne rezultate na proveri znanja iz osnova programskog jezika C.

• Algoritam ovog problema se može razložiti na sledeće module

Učitavanje vrednosti elemenata niza Izračunavanje prosečnog rezultata Prebrojavanje natprosečnih rezultata Ispis izlaznog izveštaja

Page 2: Op11 15

04/10/23 2

Example No ….• Main()• Int n,i,broj,ocena[50]; /*niz od 50 elemenata*/• Float prosek();• Print('\nUnesi broj takmicara:');• Scan(%d',&n);• /*ucitavanje elemenata niza*/• print('\nUnesi rezultate:\n');• for (i:=0;i<n;i++)• {• print('ocena[%d]+',i);• scan('%d”,&ocena[i])• }

• To be continue…

Page 3: Op11 15

04/10/23 3

Contnue….• /*prebrojavanje natprosecnih rezultata*/• broj=0• for(i=0;i<n;i++)• if(ocena[i]>prosek(ocena,n))• broj++;• printf(''prosecan rezultat je:%f.\n'',prosek(ocena,n));• printf (''natprosecne rezultate je imalo:%d takmicara.\n'',broj);• }• Float prosek(int x [],int n)• {• int i,suma;• suma=0;• for(i=0;i<n;suma+=x[i],i++);• return((float)suma/n);

Page 4: Op11 15

04/10/23 4

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

• Pri definiciji funkcije prosek() koja se poziva iz main () deklaracija Int x[]

• kreira, ne niz, već pokazivač na niz•  Float prosek(int x [],int n)• {• int i,suma;• suma=0;• for(i=0;i<n;suma+=x[i],i++);• return((float)suma/n);• }

Page 5: Op11 15

04/10/23 5

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

• Poziv funkcije • Prosek (ocena,n) sadrži ime ocena koje predstavlja

adresu nultog elementa od najviše 50 elemenata.• Time se pri pozivu funkcije predaje pokazivačka

konstanta (adresa nultog elementa niza)• Ocena = &ocena[0]•  • To znači da je formalni parametar funkcije

pokazivačkog tipa pa se u funkciji prosek() može izvršiti deklaracija na sledeći način

• prosek(int *x,int n)

Page 6: Op11 15

04/10/23 6

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

• Operatori • Int x [];• Int*x;• Su ekvivalentni jer oba deklarišu promenljivu x kao pokazivač

na niz celih brojeva • ... Operatori koji u funkciji prosek () koriste pokazivač *X

rade sa nizom ocena koji se nalazi u telu funkcije main() Poziv funkcije inicijalizuje pokazivač X tako da pokazuje na ocena [0] Kada index i u funkciji prosek () uzme vrednost 4 tada je izraz x [4] ekvivalentan sa *(x+4).

Page 7: Op11 15

04/10/23 7

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

• Znači pošto (x+0) pokazuje na ocena [0] to x+4 pokazuje na ocena [4] Prenos jednodimenzionalnih nizova se ostvaruje navođenjem imena niza u pozivu funkcije bez ikakvog indeksa. Na ovaj način u funkciju se prenosi informacija (adresa ) o lokaciji niza u pozivajućoj funkciji.

Page 8: Op11 15

04/10/23 8

Funkcije, nizovi, pokazivači, parametri, prenošenje argumenata ...

• Čak i deklaracija x [100] ima isto značenje kao i x [] jer C kompajler generiše kod koji funkciji predaje pokazivač tako da je beznačajna specificirana dužina niza.

•  X== &x[0] • X +0== &x[0] • X+2 ==&x[2] /*jer su im iste adrese*/•  *(x+2) == x[2] /*jer su im iste vrednosti*/• *(x+i) == x[i]•  Prema tome jednodimenzionalni nizovi se prenose

isključivo po adresi