Funkcije u C

Tornado1

Početnik
Poruka
14
Ja se izvinjavam sto nisam bio aktivan na forumu jer sam bio na moru pa sad ima i skola pa znate mora da se uci.

Da li bi hteli da mi pomognete za funkcije u C.

Ne kapiram zasta sluzi.

Na primer sta ja sad mogu da radim sa ovom funkcijom.

int broj(int n, int k);

Bio vi vam puno zahvalan kad bi mi pomogli.:worth::worth:
 
Bilo bi uzaludno sad kad bi ti neko na forumu objasnjavao osnove programiranja, tako da ti je najbolje da nadjes neku dobru knjigu i polako s njom da krenes moras biti uporan to je najbitnije.
Sad funkcije su osnova proceduralnog nacina programiranja i sluze da kod podelis u odredjene celine, funkcije mogu da imaju povratnu vrednost i parametre, kao sto sam rekao sve to mozes nauciti ili iz knjige ili iz nekog tutorijala.
Sad ako se pitas zasto mi hteli da podelimo nas kod cim pocnes nesto ozbiljnije da radis ubrzo ces shvatiti zasto, zamisli pises program koj ima 10 000 linija kod-a i ti to sve stavis u main funkciji bilo bi suludo.

Znaci poenta je da tebi treba dobra literatura i ukapiraces funkcije.
 
Подели па владај, познат принцип.

Може да се направи програм који израчунава векторски производ, и он ће да рачуна векторски производ. Може и да се направо функција која рачуна векторски производ, па да се помоћу ње напише више програма. Први нека њоме рачуна векторски производ, а други нека је користи као помоћ при одређивању конвексности полигона. :)

Програми се не издељују само на функције, већ и на раздвојене фајлове. Ако не због прегледности, а оно да се не би за сваку измену у коду све изнова компајлирало. Када се нешто писано у C/C++ подели у више фајлова, пре линковања је потребно компајлирати само оне фајлове који су измењени.

На крају, цели делови програма могу да се издвоје у библиотеке.

Узми програмирај и само ће ти се касти. :) Ако ти се не програмира, научи, положи и ради нешто друго. :)
 
Ja bi samo zeleo da dobijem pomoc za ovo sto se nalazi u unutra.

int nesto(int a, int b);

Zanima me za ovo sto je pocrnjeno.
Jer ne kapiram zasta sluzi dal to moze da se koristi nekako.


Molim te mi pomogni.
 
Gledaj ovako, funkciju uglavnom pravis pre "int main-a" i nju kasnije mozes da pozoves u "main-u". Sluzi ti da ako imas nesto vise puta da radis ti napises samo funkciju i posle je pozivas. Funkcija moze da vraca neku vrednost, ali i ne mora vec samo moze da menja neke stvari i u tom slucaju ti uglavnom trebaju globalne promenljive, ali mislim da je uzaludno da ti objasnjavam sad to ako ne znas ni ove prve da kucas :D

Npr. za ovu tvoju funkciju ti bi mogao da napises

int nesto (int a, int b),

ovo int a, int b su parametri koje ti zadajes na osnovu kojih ces nesto da racunas. I sad mozes da napises npr. funkciju koja ce da izracuna zbir ova dva broja

int nesto (int a, int b)
{
return a+b;
}

a posle u "main-u" da je pozivas ovako:

c=nesto(a, b)

sad je c=a+b, sto znaci da je ono return a+b; vrednost koju ce c da dobije

E sad ovo sto sam ti objasnio je samo povrsno, ali ti probaj pa cim naidjes na neki problem kazi pa cu usput sve da ti objasnim :D
 
int nesto(int a, int b);

Zanima me za ovo sto je pocrnjeno.
Важи. Хајдемо од почетка. То што си написао се зове "декларација функције". Она не садржи опис оног што функција ради већ само описује како она изгледа. У преводу, то твоје је ОПИС функције која:

1. се зове "nesto"
2. прима два аргумента "a" и "b" типа "int" (int = цели бројеви)
3. враћа резултат типа "int"

Дакле, у математичком запису, то је nesto(a, b). Пошто је то што си записао само декларација функције, твој запис не носи и оно што ф-ја у ствари ради. Она би нпр. могла да служи за сабирање бројева, и онда би њена дефиницја била:

Kod:
int nesto(int a, int b)
{ return a + b; }

Примети два битна појма овде: декларација и дефиниција. :) Ваљда није предугачко, трудио сам се да одговор лепо формирам.
 
Poslednja izmena:
Znam da sam dosadan ali samo jos ovo da pitam.

Kako moze da ovi argumenti a i b dobiju vrednost u funkciji nesto.


Ako ne kapirate evo ovako da bolje objasnim.

Znaci kada return funkcija vraca a i b tj. return a +b;

i onda kad se poyove sa varijablom c onda je ona c=a+b

ali koliko je vrednost a i b.

Samo jos to da mi pomognite.

Hvala unapred!!!
 
Vrednost a i b ti zadajes kad pozivas funkciju, znaci to int a, int b nema nikave veze sa onim a i b koje ti definises u main-u vec se oni koriste samo u toj funkciji. Ti kad pozivas funkciju ne moras da pises

c=nesto (a, b)

vec umesto a i b mogu da stoje bilo koje vrednosti
 
Kod:
#include <stdio.h>
#include <stdlib.h>

void sabiranje(int x,int y)
{
    int result;
    result = x+y;
    printf("Suma od %d i %d je %d.\n\n",x,y,result);
}

int main()                      // ovde ti pocinje program
{
    sabiranje(10,15);                 // ovde pozivas funkciju sabiranje
    sabiranje(55,64);                 // i opet je pozivas
    sabiranje(168,325);               // i jos jednom
    system("PAUSE");
    return 0;
}
 
Poslednja izmena:
cek, cek malo prvo neka nauci decko int funkcije, mada je to i trazio :D

Kod:
#include <cstdlib>
#include <iostream>

using namespace std;

int nesto(int a, int b)
{
 return a+b;   
}



int main(int argc, char *argv[])
{
    int a, b, c;
    
    cin >> a >> b;  // unosis dva broja koja sabiras
    
    c=nesto(a, b);
    
    cout << c;
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

E sad mislim da je bitno i ovo da znas da bi razumeo sve.
Postoje globalne i lokalne promenljive. Globalne definises van bilo koje funkcije i kasnije mozes da ih koristis kad god hoces dok se lokalne promenljive definisu u funkciji i koriste se samo u njoj. Tako da ono a i b koje sam koristio u funkciji nema nikakve veze sa ovim a i b u main-u. A da sam a i b definisao pre funkcije mogao bih da ih koristim i u funkciji i u main-u. Pa bi onda funkciju pisao ovako

int nesto(a, b)
{
return a+b;
}

a ne ovako

int nesto(int a, int b)
{
return a+b;
}
 
Evo već je shvatio, ali što ste ga zbunjivali time što ste stavili ista imena varijabli u mainu i u funkciji? :D

Lakše bi bilo da ste stavili:

int nesto (int a, int b) { return a + b; }

int main () {
int c = 3, d = 4, e;

e = nesto (c, d);
}

Da shvati da su imena a i b samo lokalna imena za proslijeđene argumente... :)
 

Back
Top