Stranica 1 od 4 123 ... PosljednjiPosljednji
Prikazujem rezultate 1 do 30 od 110

Tema: Tečaj C-a za sve uzraste by cham3leon

  1. #1
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Tečaj C-a za sve uzraste by cham3leon

    Kao što je već Luka rekao, C i nije baš najidealniji programski jezik za početnike, ali čak i ako niste prije programirali, može ga se naučiti. Zato ću nastojati da objasnim i najmanje sitnice koje bi mogle zbunjivati potpune početnike kako biste zaista razumjeli kako ovaj jezik funkcionira. Između svakog dijela možete slobodno postavljati bilo kakva pitanja, past će možda i neki kratki zadačić i slično

    1. OSNOVE

    Ovdje sam odlučio ubacit i nešto o radu s DEV-C++ IDE-om. Naravno, možete koristiti bilo koji IDE kojeg nađete, samo da podržava C jezik. Inače radim na KDevelopu na Linuxu, ali pošto pretpostavljam da svi koristite Windows, uzet ćemo Dev C++ kao "službeni". Na jednom od prošlih VIDI diskova sam našao wxDEV C++, malo poboljšanu verziju gorespomenutoga koja će isto poslužiti svrsi.

    http://wxdsgn.sourceforge.net/S- wxDEV C++

    http://www.bloodshed.net/dev/devcpp.htmlS- DEV-C++

    http://www.codecutter.net/tools/quincy/S- Quincy - jedan jednostavan IDE na koji sam jednom naletio, možda vam i to bude dosta.

    Jedina stvar na koju morate paziti jest da nađete verziju IDE-a koja sadrži libraryje (biblioteke) i compiler (prevodioc) jer bez njih vam nijedan kod neće raditi.


    Slijedi primjer kreiranja novog jednostavnog programa u wxDEV-C++-u:

    Prvo morate otvoriti novi projekt koji će sadržavati vaš program. File -> New -> Project, kao na slici:


    Zatim ćete na izbor dobiti nekoliko predložaka za projekte. Odaberite "Console Application", odnosno program koji će se izvoditi u konzoli. Također, ispod odaberite da vam projekt bude u C, a ne C++ jeziku. Nakon toga, (slika 2) morate dodati novi file u svoj projekt. U tom C fileu ćete zapravo pisati kod.



    I sada možemo početi programirati. Možda vam se u fileu već otvorio i neki predložak, ali mi ćemo početi s vlastitim programom, za sada klasični početnički "Hello world", nešto najjednostavnije što u ovom jeziku možete napisati. Pomoći će nam da prikažemo nekoliko bitnih dijelova C koda.
    Code:
    #include <stdio.h>
    
    int main ()
    {
    printf("Zdravo svijete!!");
    
    system("pause");
    return EXIT_SUCCESS;
    }
    Počnimo od početka - #include <stdio.h>
    Ove naredbe većina IDE-ova označava zeleno iz preglednosti. Radi se o pretprocesorskim naredbama.
    Funkcija ovih naredbi je da definiraju koje će biblioteke (libraryje) ovaj program koristiti. Biblioteke su zapravo zbirke funkcija, odnosno naredbi koje možemo koristiti u našem programu. stdio.h, odnosno Standard input/output sadrži naredbe za očitavanje i ispisivanje podataka. Naredba za ispisivanje printf (print function) je primjerice sadržana u ovoj datoteci.

    Zatim, promotrimo naredbu - main ()
    Main je glavna funkcija vašeg programa. Što je točno funkcija zasada nećemo detaljno objašnjavati, to će doći do izražaja kasnije, ali zasad je bitno znati da ova naredba označava sam kod vašeg programa. "Tijelo" vašeg programa, da budemo precizniji. Vitičaste zagrade su ovdje jako bitna stvar, označavaju što će se sve događati tokom izvođenja glavne funkcije main.

    U ovom slučaju, sve što će se u programu izvesti jest jedna printf funkcija, koja, kao što rekoh, služi za ispisivanje nečega na ekran. To "nešto" može biti neka brojčana vrijednost, znak, ili u našem slučaju rečenica "Hello World!!" koju smo zapisali s navodnicima unutar zagrada funkcije printf. Općenito, printf će ispisati ono što zapišete u njegove zagrade s navodnicima. Više od toga zasad ne trebate znati.

    Također uočite kako iza printf-a stoji i jedan ";". Ovaj znak je potrebno staviti poslije svake naredbe koju napišete u programu, a poslužit će kako bi računalo znalo da s time naredba završava, te da je ono što slijedi iduća naredba. Zapravo, mogli biste pisati sve naredbe u istom redu samo ih odvajajući točka-zarezima i dobili biste istu stvar, samo što bi to bilo kudikamo nepreglednije, ali shvaćate poantu - prelazak u novi red ne označava početak nove naredbe, za to služi ";".

    return naredba označava što funkcija vraća, ali zasad je dovoljno znati da ako upišemo

    return EXIT_SUCCESS;

    program će ispisati poruku "Press any key to continue", i kad pritisnete tipku, zatvorit će se. Ovu naredbu ćemo na jednak način koristiti u gotovo svim daljnjim programima.

    system ("pause"); je naredba koju inače nikad nisam koristio u kombinaciji s returnom, ali sam primijetio radeći u Dev-C++-u da bez nje program niti ne čeka da korisnik pritisne tipku, već samo izađe iz programa. Osnovno govoreći, ovo je jedna od system funkcija, u ovom slučaju čeka korisnikov "odgovor" kod izlaska iz programa.

    To bi bio naš početnički program, idući puta ćemo preći na nešto korisnije i opipljivije, te ćemo po prvi put koristiti i varijable, čime počinjemo "stvarno" programirati. U međuvremenu, postajte sva pitanja koja vas muče.

    Isprobajte sami. Napišite ovako nešto u vašem IDE-u i probajte pokrenuti. Za korisnike Dev-Cpp-a samo stisnite F9.

  2. #2
    Senior Member Small step for mankind
    Datum registracije
    Sep 2008
    Postova
    2.076

    Re: Tečaj C-a za sve uzraste by cham3leon

    Ovo nisi mogao napraviti u bolje vrijeme. Uskoro pišem test, a moj glupi profesor nezna ništa objasnit. Svaka čast

  3. #3
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    Pa šta ti je ovo od neke koristi? Jer mislim, nismo još ni počeli zapravo.

  4. #4
    Senior Member Giant leap for forum
    Datum registracije
    Jan 2009
    Lokacija
    Kutina, Rijeka, Shibuya
    Postova
    3.905

    Re: Tečaj C-a za sve uzraste by cham3leon

    Svaka čast, trebala bi mi pomoć oko C-a
    I am an island.

  5. #5
    Senior Member Small step for mankind
    Datum registracije
    Sep 2008
    Postova
    2.076

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao cham3leon
    Pa šta ti je ovo od neke koristi? Jer mislim, nismo još ni počeli zapravo.
    Vjerovao ili ne, ovo mi je od koristi (minimalne, ali ipak je). A i mislio sam i na uskorašnji (nadam se ) nastavak tečaja

  6. #6
    Senior Member My way or the highway
    Datum registracije
    Dec 2006
    Lokacija
    Behind the blue eyes
    Postova
    7.757

    Re: Tečaj C-a za sve uzraste by cham3leon

    Sve pohvale na početku vodiča, takve stvari su uvijek dobre i konstruktivne.

    No neznam čemu učenje (novaka) C-u kada je bolje odmah početi sa C++.

  7. #7
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    Pa evo onda i nastavka.

    2. Pređimo na stvar

    Možda prebrzo dajem idući dio tutoriala, ali očekujem da bi iz onog prvog gradiva trebalo ostati malo nejasnoća i pitanja, pa krenimo mi s nečim konkretnijim. Još uvijek smo na potpunim osnovama, pa ni ovo neće biti teško. Nadam se da ste isprobali primjer iz prošlog dijela. Nisam napomenuo, kako biste u DEV-Cpp pokrenuli vaš program, samo stisnite F9.

    U ovom dijelu počet ćemo koristiti varijable. Varijable su jednostavno rečeno vrijednosti kojima smo dodali ime tako da ih možemo označiti. Dakako, njihove vrijednosti možemo mijenjati na razne načine, zavisno što želimo učiniti s njima.

    Prije svega, moramo razumjeti kako u C jeziku, varijable dijelimo po tipovima podataka koje sadrže. Jako je važno kojeg je određena varijabla tipa, jer to znači da se u tu varijablu mogu pohraniti samo podaci tog oblika. Slijedi pregled najvažnijih tipova podataka koje ćete koristiti u C-u. Skraćenice služe pri deklaraciji varijabli:

    Integer..................int - Cjelobrojni tip podataka
    Floating point.........float - realni brojevi, dakle ovdje je moguće pohraniti i decimalne brojeve
    Character..............char - Znakovi

    Naravno, to nisu svi tipovi podataka koje C koristi, tu su i short integer, long, double i slično, međutim, za ovakav početnički tečaj nisu ni bitni. Od ostalog treba napomenuti kako i navedeni tipovi podataka mogu biti i signed ili unsigned, što znači da mogu ili ne moraju sadržavati predznak. Također imajte na umu da character tip podataka zapravo sadrži ASCII kod, odnosno broj koji odgovara nekom znaku. Budete li se puno bavili sa slovima i riječima, ponekad će vam dobro doći i ASCII tablicaSu kojoj možete točno vidjeti koji ASCII broj odgovara kojem znaku.

    Prije svake radnje sa varijablama u programu potrebno ih je prvo deklarirati, odnosno rezervirati mjesto za njih u računalnoj memoriji. U deklaraciji navodite tip varijable, te njezino ime koje može biti bilo kakvo, samo mora početi slovom a ne brojem. Evo primjer:

    Code:
    int broj;
    U ovom primjeru deklarirali smo varijablu koju smo u naletu kreativnosti nazvali "broj" i rekli da je cjelobrojnog tipa (integer) dodavanjem već navedene skraćenice ispred imena. Sad smo joj odredili sudbinu, i ona će moći spremati samo cijele brojeve, a nikako decimalne. Ako želite deklarirati više varijabli istog tipa podatka, kraće ćete to učiniti na ovakav način -
    Code:
    float a, b, y, x, lol, rofl, pcplay;
    - čime u jednoj liniji definirate cjelobrojne varijable nazvane "a", "b", "y", "x", "lol", "rofl" i "pcplay". Samo nemojte zaboraviti ";" na kraju.

    Pa počnimo s našim programom onda. Cilj ovaj put je program koji zbraja dva broja i ispisuje rezultat na ekran. Krajnje jednostavno.

    Prvo počnimo od pretprocesorskih naredbi. #include-at ćemo <stdio.h> bez kojeg nema ništa, a ovaj put bih ubacio i <stdlib.h>. Iskreno, ne znam točno šta ova druga radi, ali kad god pišem program, i ona je includeana :>
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    Slijedi main() funkcija koja sadržava naš program. Napisat ću je odmah, pa ćemo poslije analizirati.
    Code:
    int main()
    {
    int a, b, c;
    
    printf("Upisi prvi broj: ");
    scanf("%d", &a);
    
    printf("Upisi drugi broj: ");
    scanf("%d", &b);
    
    c = a + b;
    printf("Rezultat je %d", c);
    
    system("pause");
    return EXIT_SUCCESS;
    }
    E sad se po prvi put susrećemo sa nekim naoko čudnovatim stvarima, primjerice ovi postotci i ampersandovi, što je pa to?
    Za početak, pogledajmo onu prvu scanf naredbu. Kao što printf služi za ispisivanje nečega na standardni izlaz (monitor), tako scanf služi za očitavanje sa standardnog ulaza ( tipkovnice) što znači, da će nakon printf naredbe pričekati da korisnik nešto napiše i stisne enter.
    Zatim moramo raščistiti što znači "%d". Sve ove oznake koje sadrže znak % su tzv. format specifieri. Dakle, oni određuju format koji će se u ovom slučaju upisati u program. %d označava da se traži cjelobrojna dekadska vrijednost. Zapravo, evo odmah pregleda f. specifiera:

    Integer.................%d (za dekadski brojevni sustav, za druge treba provjeriti, mislim da je oktalno %o, hexadekadski %h, itd.)
    Floating point.........%f
    Character..............%c

    Ono što specifier %d govori scanf funkciji je "Kad korisnik unese jednu vrijednost, zapiši je kao cjeli broj", a onda ovaj dodatak izvan navodnika kaže "zapiši tu vrijednost u varijablu a". Znak & ispred toga je adresni operator, i tu mora biti zato jer scanf funkciji zapravo treba reći da zapiše vrijednost na memorijsku adresu varijable "a". Što to znači naučit ćete dosta kasnije, zasad je dovoljno samo da znate da morate stavljati taj & kod scanf funkcije.

    Kako biste bolje razumjeli kako to funkcionira, recimo da kad bi stavili ovako nešto -

    scanf ("%d %c", &a, &b)

    to bi značilo da se očekuje od korisnika da unese jedan cijeli broj, stisne razmak, i unese neki znak, te da se broj sprema u varijablu a, i znak u b. Možemo staviti i "%d , %c", pa korisnik mora unijeti broj, stisnuti razmak, upisati zarez, opet razmak i upisati neki znak. Kako god zamislite.

    Ista fora je i sa drugim upisivanjem broja, a zatim najobičnijom matematičkom formulom izračunamo c koji nam je zbroj prva dva broja. Nakon toga printf funkcija ispisuje rezultat. Primijetite da koristi istu sintaksu kao i scanf. Format specifier %d kaže "tu gdje ja sad stojim neka se ispiše cjelobrojna vrijednost", a nakon navodnika se napiše i odakle, s time da primijećujete da ovdje nisam koristio &. Dakle, kod printf-a za razliku od scanf-a NE IDE adresni operator &. Zašto u scanf za razliku od toga ide i & ne bih znao reći, ali tako to jeste. Pazite da ne pobrkate!

    Ostalo već znate, funkcija za izlazak iz programa, i slično. Eventualno u sadržaj printf-ova možete ubaciti i \n koji funkcionira slično kao format specifier, samo što govori da se na njegovom mjestu pređe u novi red. Čisto radi preglednosti. Možete probati i slične programe sa dijeljenjem (/), množenjem (*), oduzimanjem (-). Mislim da ovo zaista nije bilo teško, ako nešto nije jasno, pitajte.

    @ReiKo: Zato jer ne znam C++ :>
    Odnosno, možda bih ga znao da ne moram opet ove godine slušati programiranje u C-u koje, eto, kroz dvije godine koliko ga radim već dovoljno znam da mogu napraviti tutorial. btw, nisam imao pojma da je za početnike bolji C++...

  8. #8
    Senior Member Nuke me please
    Datum registracije
    Dec 2009
    Postova
    289

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao cham3leon
    /
    jeste, ja sam počeo sa C raditi, ali kad sam kupio tracerovu knjigu vidio sam koliko je lakši C++, tamo nema format specifiera keke ^^

  9. #9
    Senior Member Small step for mankind
    Datum registracije
    Sep 2008
    Postova
    2.076

    Re: Tečaj C-a za sve uzraste by cham3leon

    I zato si kvouto cijeli post? -.-

  10. #10
    Senior Member Giant leap for forum
    Datum registracije
    Jan 2009
    Lokacija
    Kutina, Rijeka, Shibuya
    Postova
    3.905

    Re: Tečaj C-a za sve uzraste by cham3leon


    = Citat = Izvorno postao wavefunct
    = Citat = Izvorno postao cham3leon
    Pa evo onda i nastavka.

    2. Pređimo na stvar

    Možda prebrzo dajem idući dio tutoriala, ali očekujem da bi iz onog prvog gradiva trebalo ostati malo nejasnoća i pitanja, pa krenimo mi s nečim konkretnijim. Još uvijek smo na potpunim osnovama, pa ni ovo neće biti teško. Nadam se da ste isprobali primjer iz prošlog dijela. Nisam napomenuo, kako biste u DEV-Cpp pokrenuli vaš program, samo stisnite F9.

    U ovom dijelu počet ćemo koristiti varijable. Varijable su jednostavno rečeno vrijednosti kojima smo dodali ime tako da ih možemo označiti. Dakako, njihove vrijednosti možemo mijenjati na razne načine, zavisno što želimo učiniti s njima.

    Prije svega, moramo razumjeti kako u C jeziku, varijable dijelimo po tipovima podataka koje sadrže. Jako je važno kojeg je određena varijabla tipa, jer to znači da se u tu varijablu mogu pohraniti samo podaci tog oblika. Slijedi pregled najvažnijih tipova podataka koje ćete koristiti u C-u. Skraćenice služe pri deklaraciji varijabli:

    Integer..................int - Cjelobrojni tip podataka
    Floating point.........float - realni brojevi, dakle ovdje je moguće pohraniti i decimalne brojeve
    Character..............char - Znakovi

    Naravno, to nisu svi tipovi podataka koje C koristi, tu su i short integer, long, double i slično, međutim, za ovakav početnički tečaj nisu ni bitni. Od ostalog treba napomenuti kako i navedeni tipovi podataka mogu biti i signed ili unsigned, što znači da mogu ili ne moraju sadržavati predznak. Također imajte na umu da character tip podataka zapravo sadrži ASCII kod, odnosno broj koji odgovara nekom znaku. Budete li se puno bavili sa slovima i riječima, ponekad će vam dobro doći i ASCII tablicaSu kojoj možete točno vidjeti koji ASCII broj odgovara kojem znaku.

    Prije svake radnje sa varijablama u programu potrebno ih je prvo deklarirati, odnosno rezervirati mjesto za njih u računalnoj memoriji. U deklaraciji navodite tip varijable, te njezino ime koje može biti bilo kakvo, samo mora početi slovom a ne brojem. Evo primjer:

    Code:
    int broj;
    U ovom primjeru deklarirali smo varijablu koju smo u naletu kreativnosti nazvali "broj" i rekli da je cjelobrojnog tipa (integer) dodavanjem već navedene skraćenice ispred imena. Sad smo joj odredili sudbinu, i ona će moći spremati samo cijele brojeve, a nikako decimalne. Ako želite deklarirati više varijabli istog tipa podatka, kraće ćete to učiniti na ovakav način -
    Code:
    float a, b, y, x, lol, rofl, pcplay;
    - čime u jednoj liniji definirate cjelobrojne varijable nazvane "a", "b", "y", "x", "lol", "rofl" i "pcplay". Samo nemojte zaboraviti ";" na kraju.

    Pa počnimo s našim programom onda. Cilj ovaj put je program koji zbraja dva broja i ispisuje rezultat na ekran. Krajnje jednostavno.

    Prvo počnimo od pretprocesorskih naredbi. #include-at ćemo <stdio.h> bez kojeg nema ništa, a ovaj put bih ubacio i <stdlib.h>. Iskreno, ne znam točno šta ova druga radi, ali kad god pišem program, i ona je includeana :>
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    Slijedi main() funkcija koja sadržava naš program. Napisat ću je odmah, pa ćemo poslije analizirati.
    Code:
    int main()
    {
    int a, b, c;
    
    printf("Upisi prvi broj: ");
    scanf("%d", &a);
    
    printf("Upisi drugi broj: ");
    scanf("%d", &b);
    
    c = a + b;
    printf("Rezultat je %d", c);
    
    system("pause");
    return EXIT_SUCCESS;
    }
    E sad se po prvi put susrećemo sa nekim naoko čudnovatim stvarima, primjerice ovi postotci i ampersandovi, što je pa to?
    Za početak, pogledajmo onu prvu scanf naredbu. Kao što printf služi za ispisivanje nečega na standardni izlaz (monitor), tako scanf služi za očitavanje sa standardnog ulaza ( tipkovnice) što znači, da će nakon printf naredbe pričekati da korisnik nešto napiše i stisne enter.
    Zatim moramo raščistiti što znači "%d". Sve ove oznake koje sadrže znak % su tzv. format specifieri. Dakle, oni određuju format koji će se u ovom slučaju upisati u program. %d označava da se traži cjelobrojna dekadska vrijednost. Zapravo, evo odmah pregleda f. specifiera:

    Integer.................%d (za dekadski brojevni sustav, za druge treba provjeriti, mislim da je oktalno %o, hexadekadski %h, itd.)
    Floating point.........%f
    Character..............%c

    Ono što specifier %d govori scanf funkciji je "Kad korisnik unese jednu vrijednost, zapiši je kao cjeli broj", a onda ovaj dodatak izvan navodnika kaže "zapiši tu vrijednost u varijablu a". Znak & ispred toga je adresni operator, i tu mora biti zato jer scanf funkciji zapravo treba reći da zapiše vrijednost na memorijsku adresu varijable "a". Što to znači naučit ćete dosta kasnije, zasad je dovoljno samo da znate da morate stavljati taj & kod scanf funkcije.

    Kako biste bolje razumjeli kako to funkcionira, recimo da kad bi stavili ovako nešto -

    scanf ("%d %c", &a, &b)

    to bi značilo da se očekuje od korisnika da unese jedan cijeli broj, stisne razmak, i unese neki znak, te da se broj sprema u varijablu a, i znak u b. Možemo staviti i "%d , %c", pa korisnik mora unijeti broj, stisnuti razmak, upisati zarez, opet razmak i upisati neki znak. Kako god zamislite.

    Ista fora je i sa drugim upisivanjem broja, a zatim najobičnijom matematičkom formulom izračunamo c koji nam je zbroj prva dva broja. Nakon toga printf funkcija ispisuje rezultat. Primijetite da koristi istu sintaksu kao i scanf. Format specifier %d kaže "tu gdje ja sad stojim neka se ispiše cjelobrojna vrijednost", a nakon navodnika se napiše i odakle, s time da primijećujete da ovdje nisam koristio &. Dakle, kod printf-a za razliku od scanf-a NE IDE adresni operator &. Zašto u scanf za razliku od toga ide i & ne bih znao reći, ali tako to jeste. Pazite da ne pobrkate!

    Ostalo već znate, funkcija za izlazak iz programa, i slično. Eventualno u sadržaj printf-ova možete ubaciti i \n koji funkcionira slično kao format specifier, samo što govori da se na njegovom mjestu pređe u novi red. Čisto radi preglednosti. Možete probati i slične programe sa dijeljenjem (/), množenjem (*), oduzimanjem (-). Mislim da ovo zaista nije bilo teško, ako nešto nije jasno, pitajte.

    @ReiKo: Zato jer ne znam C++ :>
    Odnosno, možda bih ga znao da ne moram opet ove godine slušati programiranje u C-u koje, eto, kroz dvije godine koliko ga radim već dovoljno znam da mogu napraviti tutorial. btw, nisam imao pojma da je za početnike bolji C++...
    jeste, ja sam počeo sa C raditi, ali kad sam kupio tracerovu knjigu vidio sam koliko je lakši C++, tamo nema format specifiera keke ^^



    Mogao si ga bar u spoiler stavit
    I am an island.

  11. #11
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao wavefunct
    = Citat = Izvorno postao cham3leon
    /
    jeste, ja sam počeo sa C raditi, ali kad sam kupio tracerovu knjigu vidio sam koliko je lakši C++, tamo nema format specifiera keke ^^
    Osim što je poražavajuće vrsnost i kompleksnost jezika poput Ca i C++a srozavati na usporedbu korištenja ispisnih metoda; morat ću te ispraviti - C++, uz izlazne tokove, i dalje nudi printf i scanf. Također, globalno gledano, C je lakši jer ima manje mogućnosti. Želiš li savladati cijeli C trebat će ti manje vremena nego za obaviti istu radnju s C++om. Opet, želiš li savladati C++ samo u mjeri koja je dovoljna da zamijeni C, C++ će biti lakši.
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  12. #12
    Senior Member Nuke me please
    Datum registracije
    Dec 2009
    Postova
    289

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao Luka
    = Citat = Izvorno postao wavefunct
    = Citat = Izvorno postao cham3leon
    /
    jeste, ja sam počeo sa C raditi, ali kad sam kupio tracerovu knjigu vidio sam koliko je lakši C++, tamo nema format specifiera keke ^^
    Osim što je poražavajuće vrsnost i kompleksnost jezika poput Ca i C++a srozavati na usporedbu korištenja ispisnih metoda; morat ću te ispraviti - C++, uz izlazne tokove, i dalje nudi printf i scanf. Također, globalno gledano, C je lakši jer ima manje mogućnosti. Želiš li savladati cijeli C trebat će ti manje vremena nego za obaviti istu radnju s C++om. Opet, želiš li savladati C++ samo u mjeri koja je dovoljna da zamijeni C, C++ će biti lakši.
    znam da C++ nudi printf i scanf, ali C ne nudi cin

  13. #13

    Re: Tečaj C-a za sve uzraste by cham3leon

    PIH za mene je C mačiji kašalj ili pseći lavež

    Usput tko ce ici na info kup ove godine strašno me zanima

    Ja i moj frend imamo svoj rad na C-u

  14. #14
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao MasterOFDisaster
    PIH za mene je C mačiji kašalj ili pseći lavež

    Usput tko ce ici na info kup ove godine strašno me zanima

    Ja i moj frend imamo svoj rad na C-u
    Činjenica da kažeš "imamo rad na C-u" mi uvodi sumnju na tvoju postavku o trivijalnosti Ca za tebe.
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  15. #15
    Senior Member My way or the highway
    Datum registracije
    Dec 2006
    Lokacija
    Behind the blue eyes
    Postova
    7.757

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao Luka
    = Citat = Izvorno postao MasterOFDisaster
    PIH za mene je C mačiji kašalj ili pseći lavež

    Usput tko ce ici na info kup ove godine strašno me zanima

    Ja i moj frend imamo svoj rad na C-u
    Činjenica da kažeš "imamo rad na C-u" mi uvodi sumnju na tvoju postavku o trivijalnosti Ca za tebe.


  16. #16
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    Hajdehajde, idemo dalje. Jedino što sam zaboravio napomenuti u vezi prethodnog zadatka je da smo ga mogli izvesti i bez deklariranja varijable c, i bez linije gdje se u "c" zapisuje zbroj a i b. U tom slučaju, bilo bi dovoljno napisati (a+b) kao argument u printf naredbi, umjesto "c". Dakle, ovo:
    Code:
    printf("Rezultat je %d", (a+b))
    Također vas molim da ne spamate temu nepotrebnim komentarima o vašem programerskom znanju i raspravi koji je jezik bolji. Ako se modovi slažu, mogu i pobrisati suvišne postove.

    4. Grananje

    Sad pomalo dolazimo i na logičke operacije poput grananja. Ponekad ćete htjeti da je vaš program u stanju izvršiti različite stvari, a ne samo jednu jedinu skriptu koja se izvršava u slijedu kao u prošlom zadatku. Recimo da nam treba program koji može zbrajati i oduzimati.

    Grananje je ustvari dijeljenje programa na više paralelnih nizova naredbi, pri čemu će program prema zadanom kriteriju odabrati koja grana će se izvršiti, a koja neće. Najosnovnija naredba grananja koju ćete vjerojatno i najviše koristiti je "if" naredba. Ona izgleda ovako:
    Code:
    if (a==0)
       {
       
       }
    U zagradu gore kod ključne riječi if pišemo kriterij (uvjet) po kojem ćemo granati, a u vitičaste zagrade pišemo slijed naredbi (isto kao što smo dosad naučili) koje će se izvršiti ako je kriterij zadovoljen. U ovom slučaju, naredbe koje bismo napisali u vitičaste zagrade izvršile bi se ako je varijabla a jednaka nuli, u suprotnom bi bile zanemarene. Primijetite kako sam malo uvukao vitičaste zagrade if-a, skupa sa naredbama koje bi tamo bile zapisane. Naravno da to nije potrebno, ali ovako je mnogo preglednije da znate kojoj naredbi pripadaju te zagrade, te što se unutar tog grananja dešava, pogotovo kad budete pisali malo duže programe. ";" se u ovoj funkciji ne stavlja na kraj, kao ni kod velike većine funkcija koje koriste vitičaste zagrade i imaju svoje pod-naredbe.

    Vjerojatno ste također primijetili da je u uvjetu izraz zapisan sa dva znaka "=". To dakako, nije greška.
    U C programskom jeziku, a=0 bi značilo da u varijablu a zapisujemo broj 0. Međutim, kad napišemo a==0, time ispitujemo JE LI a jednak nuli. (a==0) zapravo poprima neke vrijednosti. Ako je istina da je a jednak nuli, taj izraz u zagradi poprimit će vrijednost 1 (što znači "istinit"), a ako nije, poprimit će vrijednost 0 (neistinit).
    Na taj način zapravo funkcionira if naredba kao i mnoge slične joj. Uvjet kod "if"-grananja, kao i kod sličnih naredbi, funkcionira tako da će se naredbe u if-u izvršiti ako je uvjet različit od nule, a ako je jednak nuli, sve to se neće izvršiti.

    Da smo umjesto toga u zagradu za kriterij napisali a = 0, to bi postavilo uvjet na vrijednost nula, što znači da se naredbe nikad ne bi odvrtile. Isto bismo postigli da smo napisali if(0), dok bi if(1), ili bilo koji drugi broj različit od nule značilo da bi se te naredbe uvijek izvršavale. Zato pazite na tu duplu jednakost kod usporedbe brojeva, to je česta greška.

    Dakako, ponekad će nam uz ispitivanje jednakosti trebati i ispitivanje nejednakosti, zatim je li nešto veće od nečeg drugog, i slično. Pa evo odmah kratke tablice:

    ==...........................ako je jednako...
    !=............................ako nije jednako...
    <=...........................ako je manje od, ili jednako...
    >=...........................ako je veće od, ili jednako...
    <.............................ako je manje od...
    >.............................ako je veće od...

    Ponekad ćete htjeti da vam se neke naredbe izvrše ako je ispunjeno više uvjeta. Tada vaša if naredba može izgledati ovako:
    Code:
    if ((a==0) && (b==0))
       {
    
       }
    U ovom primjeru, dva uvjeta su povezana logičkim AND (I) operatorom (&&), što znači da će se naredbe u if funkciji izvršiti samo ako je ispunjen i prvi i drugi uvjet. Dakle, sad će se naredbe u if-u izvršiti samo ako su i a i b jednaki nuli. Osim I moguće je koristiti i ILI (OR) operator, evo tablice za brzu referencu:

    &&.............AND............Izvrši samo ako su svi uvjeti ispunjeni
    ||..............OR..............Izvrši ako je ispunjen barem jedan uvjet

    Primjerice, sljedeća if naredba će se izvršiti ako je ili a ili b jednako 10, a da pritom c mora biti nula:
    Code:
    if (((a==10) || (b==10)) && (c==0))
       {
    
       }
    Tko se prije nije susretao sa logikom, ovo mu je možda malo preteško za shvatiti, ali ubuduće ćemo rijetko imati više od jednog uvjeta pa ovo nećemo koristiti dok ne ovladate if naredbom.

    Pa riješimo onda slijedeći zadatak: Treba napisati program koji će izračunati zbroj dva broja ako korisnik napiše 1, ili razliku tih brojeva, ako korisnik upiše 2.
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main
    {
    int a, b, c, x; //a je prvi broj, b drugi, c rezultat, a x služi za izbor rač. operacije
    
    printf("Unesi prvi broj: ");
    scanf("%d", &a);
    printf("Unesi drugi broj: ");
    scanf("%d", &b);
    printf("Koja operacija? 1 (+) ili 2 (-)? ");
    scanf("%d", &x)
    
    if (x == 1) //Provjeravamo je li izbor računske operacije 1 za zbrajanje
    {
    c = a + b; //Ako jest, rezultat je zbroj tih brojeva
    printf ("Rezultat je %d", c);
    }
    
    else if (x==2) //Ako izbor nije 1, provjeravamo je li možda 2, pa ako je, oduzimamo.
    {
    c = a - b;
    printf ("Rezultat je %d", c);
    }
    
    else  //ako nije ni to, onda ispisuje ovu poruku:
    {
    printf("Error. Unesite 1 ili 2.");
    }
    system("pause");
    return EXIT_SUCCESS;
    }
    Ranije sam također trebao objasniti da dva sleša (//) prije teksta u nekom retku taj tekst označavaju kao komentar, pa će on ostati u kodu kako bi se ostavile zabilješke o radu pojedinih dijelova programa ili bilo čega drugoga koje će prevodioc za C ignorirati.
    Vidjeli ste i else te else if naredbe na djelu. Kad se postave iza postojećeg if-a, ukoliko uvjet tog if-a nije zadovoljen, "else if" će provjeriti valja li neki drugi uvjet, pa onda izvršiti svoje naredbe. Možete nanizati koliko hoćete takvih naredbi iza if-a da pokrijete sve slučajeve koji vas zanimaju.
    "Else" naredba će se pak izvršiti čim se ne zadovolji uvjet originalnog if-a bez ikakve dodatne provjere drugih uvjeta. Ako uz if imate i else if i else naredbe, svi else if-ovi moraju biti prije else-a (iz logičkih principa).

    Još jedna stvar koju moram napomenuti - svaki if, else ili else if koji u svom bloku naredbi sadržavaju samo jednu naredbu, mogu se pisati bez vitičastih zagrada, a ta jedna naredba se piše odmah iza if-a sa ";" na kraju:
    Code:
    if (a==0) printf("Varijabla a je jednaka nuli.");
    Upamtite da se ovako može pisati samo kad if pokreće jednu jedinu naredbu. Inače vam vitičaste ne ginu

    Probajte if-ovima izvesti razne algoritme, uspoređivanje brojeva i slične egzibicije, postajte pitanja i nedoumice, a nakon toga možemo dalje na megazabavne petlje.

  17. #17
    Senior Member My way or the highway
    Datum registracije
    Dec 2006
    Lokacija
    Behind the blue eyes
    Postova
    7.757

    Re: Tečaj C-a za sve uzraste by cham3leon

    Lijepo, lijepo samo tako naprijed.

  18. #18
    Senior Member Nuke me please
    Datum registracije
    Dec 2009
    Postova
    289

    Re: Tečaj C-a za sve uzraste by cham3leon

    oodlično napravljeno, al mi je nešto upalo u oko...

    "megazabavne petlje" ???

    haha koji g33k keke ^^

  19. #19

    Re: Tečaj C-a za sve uzraste by cham3leon

    Svaka cast na tutorialu, treba imat volje i znanja za tako nesto ... Treba pomoc nadobudnim programerima . Zanima me kako ces pokazivace objasnit, s obzirom da su pokazivaci takorec najvazniji i najtezi dio c jezika za shvatiti. Enivej, keep up the good work
    A vi... Kako te?

  20. #20
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    A čuj, primila me volja kad je bilo nekoliko zainteresiranih ljudi, sad više nisam siguran prati li ovo tko. S time da sam išao od totalne nule nastojeći objasniti što razumljivije. Nadam se da pokazivači neće bit problem...

    Idući nastavak možete očekivati negdje krajem radnog tjedna. Na faxu nas upravo jebu sa 2 ispita ovaj tjedan, + treba se pripremat za završne idući tjedan, valjda stignem te petlje

  21. #21
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    Prije megazabavnih petlji ipak treba odraditi nešto što nisam ugurao u gornji post sa grananjem, a to je još jedna naredba kojom možemo granati naš program. Ime joj je switch/case, a namjena ista kao i kod if-a: da obilježi određene naredbe koje želimo izvoditi samo ako je ispunjen neki logički uvjet, međutim switch je praktičan tamo gdje if nije.

    Konkretno, naći će se situacija kada ćemo imati kontrolnu varijablu koja će služiti za odabir daljnjih procesa koje će program izvesti (primjerice kalkulator sa više mogućih računskih operacija gdje je za svaku potrebno napisati neki kod koji se izvodi ako je ta operacija odabrana) i gdje će među mnogo operacija odlučiti o operaciji koju treba izvesti ovisno o stanju jedne kontrolne varijable.
    U takvom slučaju trebalo bi kod if funkcije napisati jedan if za prvo stanje, a onda čitavu vojsku else if-ova za ostala stanja gdje bi svaki put nanovo u zagradama napisali koju to varijablu provjeravamo. Za takve stvari postoji switch. Evo primjera njegove sintakse:
    Code:
    switch (a)
    {
    case 1 :
                printf("Odabrali ste broj jedan");
                break;
    case 2 :
                printf("Odabrali ste broj dva");
                break;
    case 3 :
                printf("Odabrali ste broj tri");
                break;
    }
    Pa krenimo redom. Odmah na početku kod naredbe switch u zagradi ne stoji uvjet poput if-a, već ovdje upisujemo varijablu koju želimo da program provjerava, a zatim za svaki slučaj njene vrijednosti napišemo jedan "case" blok u kojem navodimo naredbe koje će se izvršiti ukoliko varijabla koju ispitujemo ispunjava taj uvjet u trenutku provjere. Case riječi koje slijede označavaju različite slučajeve koje želimo ispitati. U ovom trenutku zanima nas je li "a" jednak 1, 2, ili 3. Jednostavno za svaki od slučaja napišemo case, razmak, vrijednost od "a" za neki slučaj, te dvotočku, a nakon nje nižemo blok naredbi koje želimo da se izvrše u tom slučaju, a kraj tih naredbi označavamo naredbom "break".

    Prvi put se susrećemo sa breakSnaredbom koja je praktički dio sintakse ove naredbe jer bez nje bi vam se osim npr. slučaja 2 izvršio i slučaj 3. Dakle, break naredbom kažete programu da iskoči iz switch naredbe nakon što obavi sve za taj slučaj. Koristit ćemo je i u petljama za istu namjenu.

    Također, nakon svih case-ova obično se (po potrebi, nije nužno) dodaje i default. Kad napišete default, to je kao da ste upisali jedan case i umjesto vrijednosti varijable koja se ispituje naredili mu da ovo što slijedi čini ako se ne ispuni niti jedan od gornjih uvjeta. Dakle, isto kao što ste pisali case, napišete i default, ovaj put bez ikakve vrijednosti, već samo nakon riječi dodate dvotočku i pišete naredbe, te završavate taj blok ponovo break naredbom. pazite i na to da cijelu switch naredbu, dakle sve caseove i default smjestite u vitičaste zagrade kako biste označili da to sve pripada gore spomenutom switchu.

    To bi bila sva mudrost vezana za switch/case. Ako tko uopće prati ovu seriju tutoriala, molim vas da se javite, mogu usput pokazat neki kratki praktičan primjer ili zadatak prije nego krenem(o) na petlje. I naravno, ako ima problema, poteškoća i nedoumica, pitajte.

  22. #22
    Senior Member Giant leap for forum
    Datum registracije
    Nov 2007
    Lokacija
    on way to the moon
    Postova
    3.850

    Re: Tečaj C-a za sve uzraste by cham3leon

    E evo mene počelo zanimat programiranje,pa da nešto i naučim.Skinuo sam Dev Cpp od ovdje http://wxdsgn.sourceforge.net/?q=node/4Sa kad idem pokrenut sa #include <stdio.h> onda mi neće pokrenut a kad mi je #include <cstdlib>;#include <iostream> onda oće,možeš objasnit zašto.Jesam ja nešto krivo skinuo?
    Ako se nekad osjetiš malen, zapostavljen i depresivan... Uvijek se sjeti da si nekad bio najbrži spermić u svojoj grupi

  23. #23
    Junior Member Plants Vs Zombies
    Datum registracije
    Aug 2009
    Postova
    29

    Re: Tečaj C-a za sve uzraste by cham3leon

    Dok kreiraš novi projekt naići ćeš u čarobnjaku na jednom screenu na kružić koji moraš označiti vjerojatno ti je označeno na C++ ti označi C

  24. #24
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: Tečaj C-a za sve uzraste by cham3leon

    = Citat = Izvorno postao la50
    E evo mene počelo zanimat programiranje,pa da nešto i naučim.Skinuo sam Dev Cpp od ovdje http://wxdsgn.sourceforge.net/?q=node/4Sa kad idem pokrenut sa #include <stdio.h> onda mi neće pokrenut a kad mi je #include <cstdlib>;#include <iostream> onda oće,možeš objasnit zašto.Jesam ja nešto krivo skinuo?
    stdio.h je zastario header. Iako ga po standardu svi kompajleri moraju ponuditi, dobar dio njih ga ne nudi. (umjesto "stdio.h" sad možeš koristiti "cstdio", s tim da on koristi imenike pa ćeš morati dodati liniju "using namespace std;" negdje prije main()-a)
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  25. #25
    Senior Member Giant leap for forum
    Datum registracije
    Nov 2007
    Lokacija
    on way to the moon
    Postova
    3.850

    Re: Tečaj C-a za sve uzraste by cham3leon

    Evo prošao sam drugi dio tečaja uspješno xD.I sad me zanima dal se može napisat kvadratna jednadžba sa ± tj bez da moram pisat forumulu za svaki x pojedinačno,nije problem pisat formulu jer ionako se treba promjenit samo plus odnosno minus u formuli.Ovako sam napisao taj način.

    Code:
    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    
    int main()
    {
    int a, b, c, x1,x2;
    
    printf("Upisi vrijednost a: ");
    scanf("%d", &a);
    
    printf("Upisi vrijednost b: ");
    scanf("%d", &b);
    
    printf("Upisi vrijednost c: ");
    scanf("%d", &c);
    
    x1=-b-sqrt(b*b-4*a*c)/2*a ;
    x2=-b+sqrt(b*b-4*a*c)/2*a ;
    printf("Vrijednost x1 je %d " , x1);
    printf("Vrijednost x2 je %d " , x2);
    
    system("pause");
    return EXIT_SUCCESS;
    }
    Ako se nekad osjetiš malen, zapostavljen i depresivan... Uvijek se sjeti da si nekad bio najbrži spermić u svojoj grupi

  26. #26
    Senior Member Master Blaster
    Datum registracije
    Nov 2005
    Lokacija
    Zadar
    Postova
    4.028

    Re: Tečaj C-a za sve uzraste by cham3leon

    Predlažem da kasnije otvaraš posebne teme, kako ne bismo previše zatrpali tutoriale netematskim komentarima.

    Problem za koji pitaš je više umne prirode, problem organizacije i lijepoga kôda; a ne programerski problem (iako bi se to jednom moglo promijeniti).

    Najjednostavnije rješenje bi bilo stvoriti dodatne varijable koje bi držale dijelove formule koji su isti (poput diskriminante), pa će kod biti pregledniji. Nešto egzotičnije rješnje bi bilo pokazivačima na funkcije, ili čak kombinacijom klasa i overloadanja operatora...
    The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
    <3 <3 <3 <3 <3 <3 <3
    ŠIRI SA MNOM LJUBAV Cherry!

  27. #27
    Senior Member Giant leap for forum
    Datum registracije
    Nov 2007
    Lokacija
    on way to the moon
    Postova
    3.850

    Re: Tečaj C-a za sve uzraste by cham3leon

    Ok neću više temu krcat svojim postovima jer ovo je ipak tutorial.
    Kameleone tebe moram pohvalit za ovo i puno hvala.
    Ako se nekad osjetiš malen, zapostavljen i depresivan... Uvijek se sjeti da si nekad bio najbrži spermić u svojoj grupi

  28. #28
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    O fala Isusu, ovo netko i prati. Kao što je Luka lijepo rekao, ovo je više problem same matematičke, a ne programerske logike, ali nađe se uvijek načina da se takve stvari malo skrate, uvođenje varijable za diskriminantu je jedini logičan potez koji bi se napravio da se ovako nešto skrati, ali kod ovako jednostavnih zadataka, mislim da nema potrebe.

    Petlje očekujte idući tjedan, vjerojatno već u ponedjeljak

  29. #29
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: Tečaj C-a za sve uzraste by cham3leon

    Idemo dalje. Usput da kažem da možete postati slobodno svoja pitanja ovdje, kao i probleme s kojima se susrećete pa da ih svi zajedno riješimo. To bi bila i poanta tutoriala u forumskom threadu, inače sam mogao jednostavno prepisati skripte iz FER-a i malo ih doraditi da budu razumljivije. Samo nastojte ne postati nekakve nevezane ili nepotrebne komentare.

    5. Petlje

    Kao što ćete sigurno često trebati odvojiti neki kod koji će se izvršavati samo pod određenim uvjetima uz pomoć grananja, tako ćete često trebati natjerati neke dijelove programskog koda da se izvrše više puta. Takav kod zove se petlja.

    Krenut ćemo sa whileSpetljom jer je nekako bliža if - naredbama pa će vam možda biti lakša za razumjeti.
    Poput if-a, while naredba za petlju se sastoji od ključne riječi while, zatim zagrada u kojima stoji uvjet za izvršavanje petlje, te vitičastih zagrada koje sadrže kod petlje.
    Slično kao kod if-a, ali s jednom razlikom - dok god je uvjet ispunjen, petlja se nanovo izvršava, tj. izvršavaju se sve njezine naredbe koje ste nanizali u vitičastim zagradama, i prestat će s iteriranjemS(kružnim ponavljanjem) tek kada uvjet gore više ne bude bio ispunjen. Evo jednostavnog primjera while petlje koja nam broji do pet. Koristit ćemo varijablu b koja će biti brojač.

    Code:
    b = 1;
    while (b <= 5)
    {
    printf("%d\n", b);
    b++;
    }
    Prvo smo b postavili na vrijednost jedan, tako da brojenje počne od 1. Uvjet jest da se brojanje prestane izvršavati kad b postane veće od 5, odnosno da se izvršava dok god je b manje ili jednako pet.
    printf naredba ima u argumentu samo jedan format specifier, koji kaže da će na njegovo mjesto biti ispisan cijeli broj, a nakon njega sam dodao \n koji možda nisam spominjao ranije. To je "znak" za novi red, odnosno, kao što biste napisali bilo kakva slova u argument printf funkcije, možete upisati i specijalne znakove poput ovog. \n kao da kaže (nemojte to shvatiti baš skroz doslovno) printf funkciji "tu sad stisni enter" kako bi prešla u novi red. Osim navedenog, postoji i \t znak, ako se ne varam, koji služi za pomicanje tabulatora, odnosno kao da stisnete TAB.

    b++; je skraćeni oblik naredbe b = b + 1. Ovime bismo inače rekli da nova vrijednost b postane stara vrijednost uvećana za jedan, ili kraće rečeno, da se vrijednost b poveća za jedan. U narodu poznato kao inkrementiranjeSvarijable. Isto tako možete koristiti i b-- za dekrementiranje, odnosno smanjivanje za jedan. Imajte na umu ipak da morate pisati puni oblik ako želite in/dekrementirati broj za više (ili manje) od 1.

    Dakle, ono što se u ovoj petlji događa, jest slijedeće:
    Nakon što se provjeri uvjet, te utvrdi da je b doista manji ili jednak 5, petlja se po prvi put izvršava. Na ekran se ispisuje broj 1 i prelazi u novi red. Zatim se varijabla b povećava za jedan. Petlja kreće isponova, i ponovo se provjerava je li uvjet ispunjen. Uvjet jeste ispunjen, jer je b trenutno 2, što je još uvijek manje od 5. Na ekran se ispisuje broj 2, prelazi u novi red, a b se sad povećava na tri.
    Tako se izvrši i treća iteracija, i četvrta, te na kraju peta gdje se ispiše broj 5, pređe u novi red i poveća b na 6, a tada se šesta iteracija neće više izvršiti jer uvjet petlje više nije zadovoljen, odnosno b nije više manji ili jednak 5.

    Osim ovakvog oblika, ova petlja postoji i u do - whileSobliku. U pravilu izgleda ovako:
    Code:
    do
    {
    
    }
    while (b <= 5);
    Kao što vidite, uvjet se sada piše na kraju, kod while naredbe, te poslije dolazi ";". Razlika je u tome što će se sada uvjet ispitati na kraju, a petlja će se bar jednom izvršiti bez obzira na uvjet, pa tek na kraju početne iteracije provjeriti treba li se izvršiti ponovo. Manje ćete ju koristiti nego običnu while petlju, ali katkad jako dobro dođe.

    Nadalje, petlja koja će vam možda biti najpraktičnija, iako u nekim primjerima ne može zamijeniti while petlju, zgodnija je za korištenje kod uobičajenih radnji. Ime joj je for petlja.

    Code:
    for (b = 1 ; b <= 5 ; b++)
    {
    printf("%d\n", b);
    }
    Radi se o petlji koja radi apsolutno isto što i prvi primjer s while petljom, brojanje do pet, ali ovaj put preko for petlje.
    Primjećujete da je uvjet nekako kompliciraniji. Kod for petlje, uvjet ima tri dijela odvojena točka-zarezima:

    1. Postavljamo varijablu za koju želimo da nam bude brojač na neku početnu vrijednost
    2. Određujemo uvjet koji mora biti zadovoljen da bi se petlja izvršavala
    3. Određujemo kako će se povećavati brojač u svakoj iteraciji. U ovom slučaju za jedan.

    Također vidite kako nismo unutar petlje nigdje morali povećavati brojač. To je zato što for petlja radi sa brojačem, odnosno morate imati brojač kako biste napisali for petlju. Petlja će ga sama povećavati u svakoj iteraciji.

    Još jedna stvar koju treba spomenuti u vezi petlji. Ukoliko uvjet bude stalno zadovoljen, petlja će nastaviti unedogled. U narodu poznato kao beskonačna petlja, ako je program sadrži, morat ćete ga prekidati na silu. Osim neispunjavanja uvjeta, petlju može prekinuti i naredba break;Skoju ste već vidjeli. Primjerice, ako u petlji tražite od korisnika da upiše nekoliko brojeva za redom, možete ponuditi opciju da upisivanje prestaje kad korisnik upiše, ne znam, nulu, pa unutar petlje napišete nešto kao

    if(a = 0) break;

    što će pod uvjetom da a postane nula prekinuti petlju i dopustiti da se ostatak koda izvrši.

    Nadam se da će vam ovo biti shvatljivo. Pa da izmislimo neki zadačić za vježbu, nešto kratko. Bilo bi možda prelagano da radim varijacije na temu ove brojalice, pa ajmo ovako: Probajte napisati program koji će tražiti od korisnika da unese dva broja, zatim ispisati njihov zbroj, i tada ispočetka, a ako korisnik unese nulu kao bilo koji od ta dva broja, izlazi se iz programa.
    Ako ne bude išlo, provajdam rješenje uskoro.

  30. #30
    Senior Member Giant leap for forum
    Datum registracije
    Nov 2007
    Lokacija
    on way to the moon
    Postova
    3.850

    Re: Tečaj C-a za sve uzraste by cham3leon

    Evo moje zadaće,ali nepotpuna je(nadam se da je za dva barem) jer nisam baš skužio kako bi napravio da nakon što izračuna normalno(da su a i b>0) opet zbraja tako u nedogled dok su a i b>0.Slika
    Ako se nekad osjetiš malen, zapostavljen i depresivan... Uvijek se sjeti da si nekad bio najbrži spermić u svojoj grupi

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •