Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


Osnove C Programiranja, Vežbe od Osnovi programiranja

Osnove_C_Programiranja

Tipologija: Vežbe

2013/2014

Učitan datuma 19.02.2014.

nikolacrni
nikolacrni 🇧🇦

5

(3)

3 dokumenti

1 / 26

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
###############################################################################
Naslov: Osnove C prorgramiranja
Autor: sp1r1t
Maj 2009.
-------------------------------------------------------------------------------
SADRZAJ:
|-- O C-u
|-- Osnove
|-- Kompajliranje
|-- Tipovi Funkcija
|-- Komentari
|-- Pocetak
|-- Tipovi podataka
|-- Operatori u C-u
|-- Definisanje konstanti
|-- Funkcija printf()
|-- Start(krecemo sa pisanjem programa)
|-- Makro zamena
|-- Funkcija unosa scanf()
|-- IF naredba grananja
|-- Logicki operatori
|-- Operatori ++ i --
|-- Operatori dodele
|-- SWITCH - Operator visestrukog izbora
|-- WHILE i DO WHILE ciklusi
|-- Operator ciklusa FOR
|-- Naredba BREAK
|-- Funkcije
|-- Outro
-------------------------------------------------------------------------------
Programski jezik C, napravio neki lik po imenu Dennis Ritchie, 1972. godine
za koriscenje na unix sistemima. Iako je napravljen za sistemsko programiranje
takodje se koristi i za programiranje aplikacija.
Prvi programski jezik koji sam naucio, C, nie tezak za ucenje, jednostavna
sintaksa sve u svemu kul jezik za pocinjanje sa programiranjem.
U danasnje vreme, uglavnom se koristi za sistemsko programiranje, mada se moze
naci i raznim granama.
OSNOVE:
Pre bilo kog programskog jezika, treba nauciti osnove programiranja, sta je to
racunar uopste, kako sve to funkcionise itd. Kada ovo naucimo, bice nam lakse
da ustanovimo sta u stvari mozemo, a sta ne mozemo programiranjem da uradimo.
Svaki C program MORA da sadrzi 2 stvari:
1) biblioteke
2) main() funkciju
Biblioteke su fajlovi u kojima se nalaze neke napisane funkcije koje programer
moze da koristi kako ne bi morao da sam pise te funkcije (npr: stampanje teksta
na standardni izlaz (monitor), funkcija printf).
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a

Delimični pregled teksta

Preuzmite Osnove C Programiranja i više Vežbe u PDF od Osnovi programiranja samo na Docsity!

Naslov: Osnove C prorgramiranja Autor: sp1r1t Mail: [email protected] Maj 2009.


SADRZAJ: |-- O C-u |-- Osnove |-- Kompajliranje |-- Tipovi Funkcija |-- Komentari |-- Pocetak |-- Tipovi podataka |-- Operatori u C-u |-- Definisanje konstanti |-- Funkcija printf() |-- Start(krecemo sa pisanjem programa) |-- Makro zamena |-- Funkcija unosa scanf() |-- IF naredba grananja |-- Logicki operatori |-- Operatori ++ i -- |-- Operatori dodele |-- SWITCH - Operator visestrukog izbora |-- WHILE i DO WHILE ciklusi |-- Operator ciklusa FOR |-- Naredba BREAK |-- Funkcije

|-- Outro

Programski jezik C, napravio neki lik po imenu Dennis Ritchie, 1972. godine za koriscenje na unix sistemima. Iako je napravljen za sistemsko programiranje takodje se koristi i za programiranje aplikacija. Prvi programski jezik koji sam naucio, C, nie tezak za ucenje, jednostavna sintaksa sve u svemu kul jezik za pocinjanje sa programiranjem. U danasnje vreme, uglavnom se koristi za sistemsko programiranje, mada se moze naci i raznim granama. OSNOVE: Pre bilo kog programskog jezika, treba nauciti osnove programiranja, sta je to racunar uopste, kako sve to funkcionise itd. Kada ovo naucimo, bice nam lakse da ustanovimo sta u stvari mozemo, a sta ne mozemo programiranjem da uradimo. Svaki C program MORA da sadrzi 2 stvari:

  1. biblioteke
  2. main() funkciju Biblioteke su fajlovi u kojima se nalaze neke napisane funkcije koje programer moze da koristi kako ne bi morao da sam pise te funkcije (npr: stampanje teksta na standardni izlaz (monitor), funkcija printf).

Kod vecine kompajlera ili IDE-a (integrated development environment), u koliko se u source ne upisu biblioteke, on automatki dodaje osnovne a to su uglavnom stdio.h i stdlib.h. main() funkcija je funkcija koju program prvu izvrsava, tacnije samo nju i zna da izvrsi, tako da, u koliko nemamo main() funkciju, program nece znati sta da pokrene. KOMPAJLIRANJE: Dok programiramo, mi ne pravimo izvrsnu verziju programa, vec samo source fajl, koji je u C-u fajl.c .Da bi od ovog source fajla napravili izvrsni fajl (exe) potreban nam je kompajler. I za Windows i za Linux platforme postoji dosta programa za kompaliranje. Ja cu navesti samo neke koje sam koristio. Windows: Turbo C - fin program, za editovaje i kompaliranje, DOS okruzejne, sto ce biti malo ruzno pocetnicima, ali znajte da je C veoma star jezik i da kada je on napravljen, nije postojo GUI, tako da, imajte postovanja. http://edn.embarcadero.com/article/ Code::Blocks - program koji ja koristim, freeware, lepo izgleda, jednostavan za koriscenje, koristi GCC kompajler, takodje, koristi se za C i C++. Preporucio bih ga onima koji planiraju da se bave C programiranjem. http://www.codeblocks.org/ Linux: GCC - Nisam neki vrstan korisnik Linuxa ali znam tu i tamo ponesto, tako da standardni kompajler, bez koga linux nije linux, takozvani GCC. http://gcc.gnu.org/ Code::Blocks - da, code blocks postoji i za linux, vec sam ispricao o njemu, tako nema potrebe da ponavljam. Evo jos jednom link. http://www.codeblocks.org/ FUNKCIJE: Da krenemo od funkcija, funkcija se definise imenom, zatim se u zagrade ubacuju parametri funkcije i telo funkcije zapocinje znakom { a zavrsava sa }. Primer funkcije (prazne)


main() { }


TIPOVI FUNKCIJA: Tipovi funkcije int i void: dakle, u zavisnosti od rezultata koji funkcija vraca delimo funkcije na int i void i to na sledeci nacin: u koliko funkcija vraca ceo broj, funkcija je int, u koliko funkcija izvrsava neku operaciju i nije nam bitno sta vraca, ili funkcija ne vraca nista, onda je funkcija void. Funkciju main() ne moramo definisati jer ona ne vraca nikakvu vrednost, mada se to moze raditi, bice prikazano i naglaseno u toku teksta. NOTE: ako nam je funkcija int, ona mora vracati neki ceo broj!

Takodje da dodam, kao dodatni parametri u funkciji printf() se koriste i takozvane komande. Primer komande je recimo za novi red a to je \n ili za TAB razmak \t Primer:


main() { printf("dobar dan\n"); printf("\n"); printf("ovo je tekst o osnovama C-a\t"); printf("vreme je 6:00"); }


Ova funkcija ce nam ekran izbaciti sledeci rezultat:

dobar dan ovo je tekst o osnovama C-a vreme je 6:


TIPOVI PODATAKA U C-u: celobrojni tip: int short long long long unsigned .... realni tip: float double znakovni tip: char primeri definisanja varijabli(podataka) i dodeljivanja vrednosti int a; int broj=5; float PI=3.14; char znak; char karakter = 'k'; OPERATORI U C-u: Aritmeticki operatori:

    • sabiranje
    • oduzimanje
    • mnozenje / - deljenje % - ostatak pri deljenju Operatori poredjenja:
  • vece = - vece ili jednako < - manje <= - manje ili jednako == - jednako != - razlicito Logicki operatori: ! - negacija && - konjugacija (takodje poznato kao 'AND' ili 'i' operator) || - disjunkcija (poznato kao 'OR' ili 'ili' operator) Operatori uvecanja ili umanjenja: ++ - uvecanje (postfiksno i prefiksno) -- - umanjenje (postfiksno i prefiksno) Operatori dodele: = op= (+=, -=, *= ...) DEFINISANJE KONSTANTI: Konstante definisemo na sledeci nacin: #define Primer: #define PI 3. FUNKCIJA PRINTF():

#include <stdio.h> #define PI 3. main () { printf("Broj PI ima vrednost %f\n", PI); }


Specifikacije konverzije: %c - char %d - int %u - ceo dekadni broj bez znaka %o - oktalni broj bez znaka %x - heksadekadni broj bez znaka %s - string %f - float, double Dakle, sada kada smo objasnili specifikacje, da objasnimo prethodni primer. Uzecu samo bitne delove koda. #define PI 3. printf("Broj PI ima vrednost %f\n", PI); Sa %f smo oznacili da tu ide neka vrednost koja je double ili float (realan broj),

Ovaj program ce nam na ekran ispisati sledeci rezultat:

veliko slovo karakter = A vrednost = 65 malo slovo karakter = a vrednost = 97


U prvoj printf() funkciji, promenljiva ima vrednost 'A' i kada ispisujemo char tip promenljive, ipisuje se 'A', ali kada ispisujemo int vrednost (%d), ispisuje se njena ASCII vrednost sto je 65. Isto vazi i za drugu printf() funkciju. Char 'a', int 97. MAKRO ZAMENA: Pre smo u tekstu imali jedan primer makro zamene, ali nisam hteo da ga naglasavam sve do sada kada cu objasniti sta je to ustvari. Primer o kome sam govorio je ovaj printf("Rezultat je %d + %d = %d",broj1, broj2, broj1+broj2); Makro zamena je sledeci kod "broj1+broj2", evo jos jednog primera. Kilogram gumenih bombona je 15 evra, koliko iznosti 5 kilograma gumenih bombona


#include <stdio.h> #define GUMENE_BOMBONE 15 main() { printf("5 kilograma gumenih bombona iznosi %d", 5GUMENE_BOMBONE); / printf("1 kilogram gumenih bombona iznosi %d", GUMENE_BOMBONE); */ }


FUNKCIJA UNOSA SCANF(): Funkcija scanf() nam sluzi za unos podataka sa tastature. Evo jednog primera kako bi lakse shvatili:


#include <stdio.h> main () { int a,b; printf("unesi dva boja za mnozenje\n"); scanf("%d %d", &a, &b); printf("proizvod brojeva %d i %d je %d", a, b, a*b); }


Kada pokrenemo program, dobicemo sledecu poruku na ekranu: unesi dva boja za mnozenje nakon toga, program ce cekati da se unesu dva broja, unosimo u sledecem formatu

nakon sto upisemo ta 2 broja i pritisnemo enter, na ekranu ce se ispisati sledece: proizvod brojeva 5 i 2 je 10 to sve izgleda ovako:


unesi dva boja za mnozenje 5 2 proizvod brojeva 5 i 2 je 10


IF NAREDBA GRANANJA: Sintaksa: if(uslov) naredba1; else naredba2; U koliko imamo vise naredbi, potrebno ih je staviti unutar {} zagrada.


if(uslov) { naredba1; naredba2; } else { naredba3; naredba4; }


Evo jednog malog i kratkog primera, kako bi lakse shvatili.

#include <stdio.h> main() { int a,b; printf("unesi dva broja\n"); scanf("%d %d", &a, &b); if(a>b) printf("Broj %d je veci od broja %d", a, b); else printf("Broj %d je veci od broja %d", b, a); }


Kod ovog primera postavljamo pitanje, sta ako unesemo dva ista broja. npr 5 i 5 program ce ispisati sledece "Broj 5 je veci od broja 5" sto nije tacno. Evo programa koji resava to, a i ujedno je primer if unutar if grananja.


#include <stdio.h> main() { int a,b; printf("unesi dva broja\n"); scanf("%d %d", &a, &b); if(a==b) printf("Brojevi su jednaki");

else if(a>b) printf("%d je veci od %d", a, b); else printf("%d je veci od %d", b, a); }


LOGICKI OPERATORI(! && ||): Prethodno smo ih u tekstu napomenuli, ali sada cemo ih objasniti i objasniti njihovo koriscenje. Logicki operator za negaciju ili!. Primer:


#include <stdio.h> main() { int broj=5; if(broj!=5) printf("broj je razlicit od 5"); else printf("broj je jednak broju 5"); }


Ovde imamo jedno IF grananje u kome pise sledece, ako je broj razlicit od 5 (broj!=5), ispisi poruku da je razlicit, u suprotnom, ispisi poruku da je broj jednak broju 5. Logicki operator za konjugaciju, i, AND, && Primer:


#include <stdio.h> main() { int n,m; printf("unesi dva broja\n"); scanf("%d %d", &n, &m); if(n==3 && m==3) printf("oba uneta broja su jednaka broju 3"); else printf("jedan ili ni jedan od unetih brojeva nije jednak broju 3"); }


Evo 2 primera izlaza (u zavisnosti od unosa) programa:

unesi dva broja 3 3 oba uneta broja su jednaka broju 3


i drugi:

unesi dva broja 2 3 jedan ili ni jedan od unetih brojeva nije jednak broju 3


Kao sto vidimo, moraju biti zadovoljena oba uslova da bi se ispisala poruka da su oba broja jednaka broju 3. A sada cemo objasniti kako napraviti program kome ce biti dovoljan samo jedan uslov od navedena dva.

Logicki operator za disjunkciju, ili, OR, || Primer:


#include <stdio.h> main() { int n,m; printf("unesi dva broja\n"); scanf("%d %d", &n, &m); if(n==3 || m==3) printf("jedan ili oba od unetih brojeva su jednaki broju 3"); else printf("ni jedan od brojeva koji je unet nije jednak broju 3"); }


Evo 2 primera izlaza programa, u zavisnosti od unetih brojeva:

unesi dva broja 3 8 jedan ili oba od unetih brojeva su jednaki broju 3


i drugi:

unesi dva broja 2 4 ni jedan od brojeva koji je unet nije jednak broju 3


OPERATORI ++ i --: Operator ++ je operator uvecanja i oznacava isto sto i +1. primer: x++; je isto sto i x = x + 1;. Ovo se isto odnosi i na operator umanjenja --. Postfiksni oblik: Postfiksni oblik operatora npr. uvecanja je sledeci: x++;. Evo jednog primera kako bi lakse shvatili:


#include <stdio.h> main() { int x=5,y; y = x++; printf("x = %d", x); printf("y = %d", y); }


Program ce nam izbaciti sledece:

x = 6 y = 5


suma=suma-broj suma-=broj suma=sumabroj suma=broj suma=suma/broj suma/=broj


SWITCH - OPERATOR VISESTRUKOG IZBORA Ovo je odlican operator kojim omogucujemo visestruko grananjei izvrsavanje razlicitih komandi. Switch se moze zameniti i sa vise if naredbi. Sintaksa: switch(izraz) { case konstanta1: naredba1; break; case konstanta2: naredba2; break; case konstanta3: naredba3; break; default: naredba4; Izraz koji stavljamo unutar switch(izraz) mora da bude ceo broj (int) ili char koji se interno konvertuje u int. Svaki case (slucaj) moramo zavrsiti komandom break; jer ce u suprotnom program izvrsavati redom ostale slucajeve, a mi to ne zelimo. Slucaj (case) default, oznacava komandu ili niz komandi koji ce se izvrsiti ako izraz ne ispunjava ni jedan od navedenih slucajeva, i posle njega ne moramo staviti break;. Slucaj default se moze izostaviti. Inace komanda break; se koristi za nasilno izlazenje iz komande ili operatora. Evo odma i primera switch operatora. Napisacemo program koji za uneti redni broj dana u nedelji ispisuje ime dana u nedelji, npr. 1 = ponedeljak, 2 = utorak...


#include <stdio.h> main() { int dan; printf("Unesi redni broj dana u nedelji\n"); scanf("%d", &dan); switch(dan) { case 1: printf("ponedeljak"); break; case 2: printf("utorak"); break; case 3: printf("sreda"); break; case 4: printf("cetvrtak"); break; case 5: printf("petak"); break; case 6: printf("subota"); break; case 7: printf("nedelja"); break; default: printf("uneli ste pogresan broj"); } }


Program ce nam za uneti broj 3 ispisati 'sreda' Evo jos jednog primera koriscenja switch operatora gde vise slucajeva (case-ova) ima isti rezultat. Program koji za uneti redni broj meseca ispisuje koliko mesec ima dana, sa podrskom za prestupnu godinu.(1 = januar ili sijecanj)


#include <stdio.h> main() { int mesec; char ch; printf("unesi redni broj meseca:\n");

scanf("%d", &mesec); fflush(stdin); switch(mesec) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 dan u mesecu"); break; case 4: case 6: case 9: case 11: printf("30 dana u mesecu"); break; case 2: printf("da li je godina prestupna d/n?\n"); scanf("%c", &ch); if(ch == "D" || ch == "d") printf("29 dana u mesecu"); else printf("28 dana u mesecu"); break; default: printf("unet je pogresan broj"); } }


Program ima 3 grananja, mesece koji imaju 31 dan, mecese koji imaju 30 dana i trece grananje mesec koji ima 28 ili 29 dana u zavisnosti od toga da li je godina presupna ili ne. Evo i izlaza programa:


unesi redni broj meseca: 5 31 dan u mesecu


Takodje, ako unesemo broj 2 odnosno drugi mesec, dolazimo do if grananja i to izgleda ovako:


unesi redni broj meseca: 2 da li je godina prestupna d/n? d 28 dana u mesecu


Koristio sam jednu komandu, koju do sada nisam objasnjavao, a to je fflush(stdin); Ovo sluzi da se ocisti buffer kako ne bi doslo do mesanja inputa, i primeticete da sam stavio izmedju dve scanf() funkcije. Ovo treba koristiti kako ne bi imali problema mada se problemi javljaju samo kod char tipa podataka. WHILE I DO WHILE CIKLUSI: Ciklus je niz naredbi koji se izvrsava odredjeni broj ponavljanja. Svaki ciklus ima izlazni kriterijum, nakon koga prestaje ponavljanje naredbi. Imamo 2 vrste WHILE ciklusa, sa preduslovom i postuslovom. U principu imaju isti princip rada a razliku cemo primetiti u daljem tekstu.

  • sa preduslovom: WHILE
  • sa postuslovom: DO WHILE Sintaksa za ciklus WHILE: while(uslov) { naredba1; naredba2; naredba3;

Kako bi bolje shvatili WHILE ciklus, odradicemo jedan primer u kome cemo koristiti i brojac. Program koji ispisuje poruku na ekranu 10 puta.


#include <stdio.h> main() { int brojac=0; while(brojac<10) { printf("ovo je neka poruka\n"); brojac++; } }


Brojac krece od 0. Desavanja u ciklusu: ispise poruku, uveca brojac za 1, ispise poruku, uveca brojac za 1, i to sve dok je ispunjen uslov ciklusa a to je da je brojac<10, sto znaci da kada brojac bude bio 9, to ce biti zadnji put da se ciklus izvrsio (jer je krenuo od 0). Isti efekat bi dobili i da smo definisali pocetnu vrednost brojacu 1, i da smo kao uslov stavili brojac<=10 sto ce ukljuciti i slucaj kada je brojac=10. Beskonacni ciklusi: Za slucaj da zatrebaju ili da se susretnete sa njima, da znate o cemu se radi. Da bi ovo uspelo, potrebno je postaviti uslov koji ce uvek biti tacan. Evo nekoliko primera beskonacnih ciklusa (pisacu samo telo ciklusa, a ne ceo program jer je ostatak nebitan)


while(1) { printf("ovo ce se ispisivati sve dok nasilno ne ugasim program\n"); }


Kao sto sam napomenuo, potrebno je da je uslov uvek tacan, 1 je uvek TRUE, tako da je ciklus beskonacan. Evo jos jednog primera pogresno postavljenog uslova:


#include <stdio.h> main() { int i; while(i>0) { printf("ovo je neki tekst\n"); i++; } }


Petlja je takodje beskonacna i ispisivace 'ovo je neki tekst' sve dok nasilno ne ugasimo program. Toliko o beskonacnim petljama, evo jos koji primer kako bi lakse shvatili koriscenje ciklusa. Program koji ispisuje brojeve od 1 do N (broj N korisnih unosi sa tastature)


#include <stdio.h> main() { int n, broj=1;

printf("unesi broj n: "); scanf("%d", &n); while(broj<=n) { printf("%d\n", broj); broj++; } }


U kodu vidimo da ce se ciklus izvrsavati sve dok je varijabla broj manja ili jednaka od varijable n. U telu svakog ciklusa varijabla broj ispise svoju prethodnu vrednost i poveca se za 1. Evo jos 1 program cisto za vezbu. Program koji sabira sve brojeve od 1 do N (broj N korisnik unosi preko tastature)


#include <stdio.h> main() { int n, broj=1, zbir=0; printf("unesi broj n: "); scanf("%d", &n); while(broj<=n) { zbir=zbir+broj; broj++; } printf("zbir brojeva od 1 do %d je %d\n", n, zbir); }


Program se ponasa isto kao i prethodni, s jednom razlikom, ne ispisuje brojeve na ekran, vec ih sabira sa prethodnom vrednosti varijable zbir. Znaci, na pocetku zbir=0, broj=1, i da kazemo da je korisnik uneo broj 3. Evo kako izgleda tablica brojeva:


n: 3 3 3 broj: 1 2 3 zbir: 1 3 6


Komandom 'zbir=zbir+broj;' smestamo zbir stare vrednosti promenljive zbir i promenljive broj, u novu vrednost promenljive zbir. Posto zvuci dosta konfuzno napravio sam malu semu kako bi lakse shvatili: OPERATOR CIKLUSA FOR: Operator ciklusa FOR omogucuje bolji zapis ciklusa WHILE, ali nam i on, kao i WHILE sluzi za ponavljanje naredbi odredjeni broj puta.

Kao sto vidimo, koristili smo promenljivu tipa char i kroz FOR petlju izredjali sve kombinacije pocevsi od A pa sve do Z tako sto smo promenljivoj ch dali pocetnu vrednost 'A', uslov je bio sve dok ch nije manje ili jednako sa 'Z' (ch<='Z') i nakon svakog prolaza kroz petlju, ch smo uvecavali za 1 (ch++). Ovaj isti program smo mogli da odradimo i na sledeci nacin:


#include <stdio.h> main() { int ch; for(ch=65;ch<=90;ch++) printf("ASCII kod za %c je %d\n", ch, ch); }


Sada cemo napisati program koji racuna zbir brojeva koje korisnik unosi:

#include <stdio.h> main() { int n, broj, i, suma=0; printf("koliko brojeva zelis da saberes?\n"); scanf("%d",&n); for(i=1;i<=n;i++) { printf("Unesi %d. broj\n", i); scanf("%d", &broj); suma=suma+broj; } printf("suma unetih brojeva je: %d", suma); }


Kao sto vidimo iz koda, nakon pokretanja programa, korisnika prvo pitamo koliko brojeva zeli da sabere, taj broj koji unese je uslov, odnosno, do tog broja ce se izvrsavati FOR petlja. Nakon unesenog broja, program trazi korisniku da unese jedan po jedan broj i nakon unetog poslednjeg broja, izbaci poruku o konacnoj sumi. sada cemo napisati rogram koji ispisuje sve brojeve od 0 do 99, ali koriscenjem 2 FOR petlje.


#include <stdio.h> main() { int jedinica, desetica; for(desetica=0;desetica<10;desetica++) for(jedinica=0;jedinica<=9;jedinica++) printf("%d\n",10*desetica+jedinica); }


Zasto sam ovo uradio preko dve FOR petlje, a ne preko jedne, objasnicu kasnije, sada da objasnim princip rada ovog programa. Prvo da objasnim princip rada dve FOR petlje. Kao sto vidimo na primeru, desetica krece od 0 i ide do 9, jedinica isto, samo sam ih malo drugacije napisao cisto kako bih pokazao dva nacina zapisa istoga ('broj<10' je isto sto i 'broj<=9'). E sad, prva vrednost za deseticu je 0 i ona se nece promeniti sve dok se unutrasnja FOR petlja kompletno ne izvrsi, sto znaci, desetica=0, jedinica ce izredjati svoje vrednosti od 0-9, pa ce se tek onda desetica povecati na 1, a jedinica ce se opet izredjati od 0-9 i sve tako dok desetica ne bude 9, i jedinica 9.

desetica=0 | jedinica=0 1 2 3 4 5 6 7 8 9 desetica=1 | jedinica=0 1 2 3 4 5 6 7 8 9 desetica=2 | jedinica=0 1 2 3 4 5 6 7 8 9 .... desetica=9 | jedinica=0 1 2 3 4 5 6 7 8 9


Da objasnim i ispis(10*desetica+jedinica). Ovo je malo matematike. Izvrsava se ovako:

100 + 0 = 0 100 + 1 = 1 100 + 2 = 2 ..... 100 + 9 = 9 101 + 0 = 10 101 + 1 = 11 ..... 109 + 7 = 97 109 + 8 = 98 10*9 + 9 = 99


Iskoristio sam ovaj lagani primer kako bih objasnio kako se koristi petlja u petlji. Evo sada primera koji ce se malo teze odraditi preko jedne FOR petlje, pa koristimo tri. Napisacemo program koji ispisuje sve trocifrene brojeve kod kojih je cifra desetica manja od 5, a cifra jedinica neparna(1,3,5,7,9).


#include <stdio.h> main() { int i,j,k; for(i=0;i<10;i++) for(j=0;j<5;j++) for(k=1;k<10;k+=2) printf("%d\n",100i+10j+k); }


Radi na istom principu kao i prethodni primer. i - stotine, j - desetice, k - jedinice posto smo rekli samo trocifrene brojeve, i ima opseg od 1-9, posto smo rekli da cifra desetice mora da bude manja od 5, j ima opseg 0-4, i da cifra jedinice bude neparna k mogu da budu sledeci brojevi 1,3,5,7,9.


i=1 ; j=0 ; k=1 | 1001 + 100 + 1 = 101 i=1 ; j=0 ; k=3 | 1001 + 100 + 3 = 103 i=1 ; j=0 ; k=5 | 1001 + 100 + 5 = 105 ..... i=1 ; j=1 ; k=1 | 1001 + 100 + 1 = 111 i=1 ; j=1 ; k=3 | 1001 + 100 + 3 = 113 ..... i=2 ; j=0 ; k=1 | 1002 + 100 + 1 = 201 i=2 ; j=0 ; k=3 | 1002 + 100 + 1 = 203 .....