Funkcije = potprogrami ?

poruka: 9
|
čitano: 5.972
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Funkcije = potprogrami ?

jesu li funkcije isto što i u npr. basicu potprogrami? po ovom primjeru, koji ispisuje 0, nisu. 

 

#include <iostream>

#include <cstdlib>

using namespace std;

 

void funkcija(int);

void funkcija(int broj)

{

   broj += 3;

   return;

}

int main()

{

   int nekiBroj = 0;

   funkcija(nekiBroj);

   cout << nekiBroj;

   return 0;

}

dakle ako one nisu potpogrami, što jesu potpogrami? ima togu u c++?

 

Poruka je uređivana zadnji put sub 9.10.2010 23:43 (King of Games).
Moj PC  
0 0 hvala 0
16 godina
offline
RE: Funkcije = potprogrami ?

-razlika je 'gramatičke prirode', tj samo razlikovanje SUBrutine=PODprogram ili Funkcije, što funkcije vraća vrijednost, dok sub može i nemora. Inače podprogram ili subrutina je nastala nakon omrznutog GoTo, kasnije se pojedine (standardizirane)rutine izvuklo u vanjski .lib ili .dll pa ih možemo zvati vanjske rutine, includamo ih itd. recimo open-save.

 

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
17 godina
offline
Funkcije = potprogrami ?

Ova funkcija ti ne vraća 0, međutim nemaju nikakve veze varijable u glavnom programu sa varijablama funkcije, mogu biti čak i istog imena, ali radi

se o različitim varijablama sa različitim memorijskim adresama koje se nalaze u različitim memorijskim blokovima.

Dakle funkcije nisu dio glavnog programa, one se samo pozivaju iz glavnog programa(i iz drugih funkcija) i vraćaju vrijednost u program iz kojeg su pozvane.

Preko pokazivača i referenci možeš stvoriti vezu između varijabli u glavnom programu i varijabli u funkcijama, i tako mijenjati vrijednosti varijabli u glavnom programu.

Dakle ispravan kod bi izgledao ovako:

a) slučaj kad iz glavnog programa pozivaš funkciju i predaješ vrijednost varijable kao argument funkcije:


#include<iostream>

using namespace std;


int Zbroji(int m, int n) {        // pošto funkcija vraća cijeli broj mora biti tipa int

             return m+n;          // varijable m i n u ovoj funkciji su druge varijable od onih m i n u glavnom programu

}

int main() {

             int m, n;

             cout<< Zbroji(m, n) << endl; // poziv funkcije zbroji kojoj se kao argumenti predaju varijable m i n. Na ovaj poziv funkcija vraća vrijednost i zato dobijemo ispis zbroja

             return 0;                    // funkcije

}


b) slučaj kad preko referenci stvaraš vezu između varijabli glavnog programa i varijabli funkcije:



#include<iostream>

using namespace std;


void Promijeni(int &m, int &n) {   // funkcija ne vraća nikakvu vrijednost u glavni program, zato je tipa void

       int c;                      // deklariraju se reference &m i &n koje pokazuju na varijable a i b glavnog programa

       c = m;                      // referencama &m i &n zamjenjujemo  vrijednost varijablama a i b koje se nalaze u glavnom programu   

       m = n;

       n = c;

}



int main() {

    int  a = 5;

    int  b = 7;                     

    Promijeni(a, b);                // poziv funkcije Promijeni

    cout<< "a =" << a << " " << "b = " << b <<  endl;  // nakon što se funkcija izvrši na ekranu će ispisati a = 7 b = 5

    return 0;

}







 
3 0 hvala 1
14 godina
neaktivan
offline
RE: Funkcije = potprogrami ?

@Floki zasto u ovom drugom primjeru koristi &m,&n ...pocetnik sam pa ako mos pojasnit..

zelim rec da ako stavim te & znaci da tijekom programa sta se radi sa variablama m,n(variablama funkcije) da se isto onda dogada sa a i b??? tj. da a,b ne trebaju ovisit o returnu..

Poruka je uređivana zadnji put ned 10.10.2010 14:33 (calex3).
17 godina
offline
RE: Funkcije = potprogrami ?
calex3 kaže...

@Floki zasto u ovom drugom primjeru koristi &m,&n ...pocetnik sam pa ako mos pojasnit..

Taj znak & označava memorijsku adresu, njime u stvari deklariraš posebnu varijablu koja se naziva referrenca a koja izgleda ovako:

int a = 5; // deklaracija i inicjalizacija cjelobrojne varjable a

int &refa = a // deklariraš i inicijaliziraš referencu cjelobrojnog tipa refa, dakle tom varijablom koja je referenca pokazuješ na varijablu a

Koja je svrha toga?

Vrlo jednostavno, ta posebna varijabla referenca koja pokazuje u ovom slučaju na memorijski prostor varijable a nam omogućuje da preko nje mijenjamo vrijednost varijable a

To činimo na sljedeći način:

refa = 7;

sada smo u stvari promijenili vrijednost varijable a (nismo pridružili broj 7 varijabli refa nego varijabli a)

Sada ti naredba

cout<< a << endl; ispisuje vrijednost 7

Slične stvari su pokazivači, a o tom sam pisao ovdje:

http://www.bug.hr/forum/topic/programiranje/c-brza-pitanja-iz-objektno-orij-programiranja/65597.aspx?page=2

 

17 godina
offline
RE: Funkcije = potprogrami ?
calex3 kaže...

@Floki zasto u ovom drugom primjeru koristi &m,&n ...pocetnik sam pa ako mos pojasnit..

zelim rec da ako stavim te & znaci da tijekom programa sta se radi sa variablama m,n(variablama funkcije) da se isto onda dogada sa a i b??? tj. da a,b ne trebaju ovisit o returnu..

U tom i jest bit, preko tih referenci mijenjamo vrijednosti varijabli na koje one pokazuju

Dakle, ja sam u primjeru učinio ovo:

int &m = a;  // usmjerio sam referencu da pokazuje na varijablu a

Kasnije sam u stvari naredbom:

m = n;

varijabli a pridružio vrijednost varijable b, pošto referenca m pokazuje na varijablu a, a referenca n na varijablu b

Poruka je uređivana zadnji put ned 10.10.2010 15:02 (Floki).
16 godina
neaktivan
offline
RE: Funkcije = potprogrami ?
Floki kaže...
calex3 kaže...

@Floki zasto u ovom drugom primjeru koristi &m,&n ...pocetnik sam pa ako mos pojasnit..

zelim rec da ako stavim te & znaci da tijekom programa sta se radi sa variablama m,n(variablama funkcije) da se isto onda dogada sa a i b??? tj. da a,b ne trebaju ovisit o returnu..

U tom i jest bit, preko tih referenci mijenjamo vrijednosti varijabli na koje one pokazuju

Dakle, ja sam u primjeru učinio ovo:

int &m = a;  // usmjerio sam referencu da pokazuje na varijablu a

Kasnije sam u stvari naredbom:

m = n;

varijabli a pridružio vrijednost varijable b, pošto referenca m pokazuje na varijablu a, a referenca n na varijablu b

 Shvati ovako ,referenca je alias tvoje varijable i što god radio s imenom reference (adrese tvoje prvobitne varijable ) to radiš i samoj varijabli.
Reference su dakle posebni "tipovi" kad ih deklariraš.Lakše je raditi s adresama varijabli nego sa samim varijablama(u 70% slučajeva :))...kad malo odprogramiraš shvatiti ćeš što kolege govore.To je kao da imaš "nadimak" i što god tebi pod tvojim "nadimkom" netko napravio to je tebi zapravo napravio.Za razliku od pokazivača reference kad jednom vežeš za adresu ,ne možeš je mijenjati ,a pokazivač možeš preusmjeravati.Preprosto rečeno ali kao jedno mini pravilo.

 

Private
14 godina
neaktivan
offline
RE: Funkcije = potprogrami ?

to sam i mislija odma ...

hvala puno ljudi :D

ovo ce mi dobro doc u daljnjem programiranju..

15 godina
neaktivan
offline
Funkcije = potprogrami ?

hvala ljudi, mogao sam nastavit čitat pa bi znao... 

Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice