Primjena računala ak.god. 2013/2014
description
Transcript of Primjena računala ak.god. 2013/2014
![Page 1: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/1.jpg)
1
Primjena računalaak.god. 2013/2014
Pomorski fakultet u Splitu
Nastavnici:
dr.sc. Anita Gudelj
mag.ing. Mirko Čorić
![Page 2: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/2.jpg)
2
PROGRAMSKI JEZIK
C
![Page 3: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/3.jpg)
3
Primjer C programa• Primjer jednostavnog C programa:
#include <stdio.h>void main()
{ /* moj prvi program u C jeziku*/
int a,b;a=3;b=4;printf(“Zbroj brojeva %d i %d je %d\n”,a,b,a+b);
}• Program je uveden kako bi se prikazali neki od sintaksnih
elemenata sa sljedećih slajdovaZADATAK: Testirati program.
![Page 4: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/4.jpg)
4
Od pisanja do izvršavanja programa• Unos izvornog programa (source code)Unos izvornog programa (source code)
– ASCII uređivač teksta (editor)• Prevođenje izvornog programa u relokatibilni program
– Poziv prevoditelja (compiler)– Otkrivanje pravopisnih pogrešaka (sintax errors)– Ispravci izvornog koda i ponovno prevodenje
• Poziv povezivača (link)Poziv povezivača (link)– Pogreške koje otkriva povezivač
• Izvođenje izvršnog programaIzvođenje izvršnog programa– Zadavanje potrebnih ulaznih podataka– Provjera programa na osnovi test podataka– Pogreške koje se otkrivaju prilikom izvršenja (run time– errors)– Logičke pogreške
![Page 5: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/5.jpg)
5
Struktura C programa• C program se sastoji od
– imenovanih blokova koji se nazivaju funkcije • u C programu mora postojati glavna (main)
funkcija koja predstavlja mjesto gdje počinje izvršenje programa – “Glavni” program = funkcija main() (fiksno
ime)
• Pravilo pisanja funkcije main:
int int main() main() void void main() main() {{ iliili {{ Blok naredbi Blok naredbiBlok naredbi Blok naredbi
return return 00; ; }} }}
![Page 6: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/6.jpg)
6
Opća struktura C programa
• Tijelo funkcije (blok naredbi) se sastoji od naredbinaredbi unutar vitičastih zagradavitičastih zagrada
• Osnovni opis bloka:– Blok započinje znakom { , a završava znakom }
– Blok obuhvaća (sadrži) deklaracije/definicije, naredbe i neimenovane blokove
– Svaka definicija/deklaracija i naredba mora završavati znakom ; ;
– Blok ne završava znakom ;; tj. iza znaka } ne piše se ;
![Page 7: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/7.jpg)
7
Primjer
/* moj prvi program u C jeziku*//* moj prvi program u C jeziku*/
#include#include < <stdio.hstdio.h>> /*/*UUkljukljuccuje datotekuje datotekuu zaglavlja zaglavlja stdio.h */ stdio.h */ voidvoid main main{{ /* Pocetak bloka *//* Pocetak bloka */ int a,b;int a,b;
a=3;a=3;b=4;b=4;printf(“Zbroj brojeva %d i %d je %d\printf(“Zbroj brojeva %d i %d je %d\
n”,a,b,a+b);n”,a,b,a+b); /*funkcija za ispis na monitor*//*funkcija za ispis na monitor*/
/* kraj bloka*//* kraj bloka*/
}}
Da bismo mogli koristiti funkcije iz Da bismo mogli koristiti funkcije iz standardne biblioteke zadustandardne biblioteke zadužženeeneza ulaz i izlaz podataka program za ulaz i izlaz podataka program zapozapoččinjemo naredbominjemo naredbom
KOMENTAR
Direktiva predprocesoru
Glavna funkcija
Tijelo funkcije
![Page 8: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/8.jpg)
8
KOMENTARI
• Sa znakovima /* otvara se prostor za komentar, a sa znakovima */ se zatvara
• U C++ -u koristi se, za kraće komentare u istoj programskoj liniji, još i dvostruka kosa crta
• c = a + b ; /* c je zbroj od a i b */
• c = a + b ; // c++ je zbroj od a i b
![Page 9: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/9.jpg)
9
Opća pravila pisanja C programa• C je jezik slobodnog formata
– mjesto početka naredbe u retku je proizvoljno– svaka izvršna naredba mora završavati znakom ;
• Dopušteno je stavljanje više naredbi u istom retkuPr: int i,n; printf("Unesite n: "); scanf("%d", &n);int i,n; printf("Unesite n: "); scanf("%d", &n);
• C C pravi razlikupravi razliku izme izmeđđu velikih i malih slovau velikih i malih slova• Ključne riječi se pišu malim slovima. Npr:
mainprintfdo
![Page 10: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/10.jpg)
10
Vježba 2
![Page 11: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/11.jpg)
11
Opća struktura C programa-ponavljanje-
![Page 12: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/12.jpg)
12
Osnovni elementi jezika C
• Skup znakova• Identifikatori• Ključne riječi• Osnovni tipovi podataka
![Page 13: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/13.jpg)
13
Skup znakova
• Programski jezik C koristi sljedeći skup znakova:– velika i mala slova engleske abecede A-Z i a-z
_– znamenke 0-9 – specijalne znakove:
+ - * / = % & #! ? ^ " ’ ~ \ |< > ( ) [ ] { }: ; . , _ (bjelina)
![Page 14: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/14.jpg)
14
Identifikatori
• Identifikatori su imena koja pridružujemo različitim elementima programa – varijablama, poljima i funkcijama.
• Pravila za pisanje identifikatora:– Sastoje se od slova i brojeva (znamenki),
s tim da prvi znak mora biti slovo– Velika i mala slova se razlikuju– Znak (donja crta) smatra se slovom– Duljina identifikatora je proizvoljna
![Page 15: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/15.jpg)
15
Ključne riječi
![Page 16: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/16.jpg)
16
VARIJABLE, TIPOVI PODATAKA
![Page 17: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/17.jpg)
17
VARIJABLE• VARIJABLA je simboličko ime za memorijsku VARIJABLA je simboličko ime za memorijsku
lokaciju u kojoj se podaci mogu pohraniti lokaciju u kojoj se podaci mogu pohraniti i i naknadno pozivati naknadno pozivati i kojemu je dodijeljeno ime– Općenito: promjenljiv podatak
• Identifikator varijabla (Identifikator varijabla (ime varijableime varijable)) je imenovani je imenovani dio memorijedio memorije
TIP PODATKATIP PODATKA određuje način korištenja varijableodređuje način korištenja varijable
![Page 18: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/18.jpg)
18
Varijable
• Simbolički se prikazuje pravokutnikom uz koji stoji ime
• Smještaj u memoriji računala
x y
x y... ...
![Page 19: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/19.jpg)
19
Pravila ze kreiranje valjanih imena Pravila ze kreiranje valjanih imena varijablivarijabli
• Identifikator varijableIdentifikator varijable
• Primjeri– salary // valjani identifikator– salary2 // valjani identifikator – 2salary // nevaljani identifikator (započinje
znamenkom)– _salary // valjani identifikator – Salary // valjani identifikator, ali se razlikuje od
salary– plaća // nevaljani identifikator (u imenu se koristi znak
'ć')
![Page 20: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/20.jpg)
20
IDENTIFIKATOR: primjeriIDENTIFIKATOR: primjeri
KeKelllyFamilylyFamily KvocijentKvocijentKEKELLLYFamilyLYFamily PostotakPostotakKeKelllyFAMILYlyFAMILY Ime_i_PrezimeIme_i_Prezime
OK.OK.
aandnd switchswitch
coutcout ..FILE..FILE
*
A-1 007A-1 007
Polje 2Polje 2 Varaždin Varaždin
![Page 21: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/21.jpg)
21
TABELA OSNOVNIH TIPOVA PODATAKA
TIP PODATKATIP PODATKA TOČNOSTTOČNOSTMEMORIJSKI MEMORIJSKI PROSTORPROSTOR U U BAJTOVIMABAJTOVIMA
KLJUČNA RIJEČKLJUČNA RIJEČ
znak (CHARACTER)znak (CHARACTER) 1 char
cijeli broj (INTEGER)cijeli broj (INTEGER) 2( ili 4) int
realni broj s pomičnom realni broj s pomičnom decimalnom točkomdecimalnom točkom
(FLOATING POINT)(FLOATING POINT)7 decimalnih znamenki 4 float
realni broj dvostruke realni broj dvostruke točnostitočnosti
(DOUBLE )(DOUBLE )
15 decimalnih znamenki
8 double
![Page 22: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/22.jpg)
22
TABELA DODATNIH TIPOVA BROJEVA
TIP PODATKATIP PODATKA RASPON RASPON VRIJEDNOSTIVRIJEDNOSTI TOČNOSTTOČNOST
MEMORIJSKI MEMORIJSKI PROSTOR U PROSTOR U BAJTOVIMABAJTOVIMA
KLJUČNE RIJEČIKLJUČNE RIJEČI
kratki cijeli broj (SHORT INTEGER)
od –128 do 127 1 (ili 2) short int
dugi cijeli broj (LONG INTEGER)
od –2147483648 do 2147483647
4 long int
realni broj maksimalane točnosti
(LONG DOUBLE )
od ± 3.4 · 10-4932 do ± 1.1 · 104932
18 decimalnih znamenki
10 long double
![Page 23: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/23.jpg)
23
VARIJABLE...• Varijable koje definira korisnik moraju biti deklarirane prije Varijable koje definira korisnik moraju biti deklarirane prije
nego će se koristiti u programunego će se koristiti u programu
• Osnovni format deklariranja varijabli jetip podatka ime_var1, ime_var2, ... ;
– TIP PODATKATIP PODATKA određuje način uporabe varijableodređuje način uporabe varijable•tip podataka jedan od četiri osnovna tipa podataka: integer, character, float ili double
•Vrijednost varijabli ovisi o njenom tipu podatkaVrijednost varijabli ovisi o njenom tipu podatka•PrimjericePrimjerice, , cjelobrojna (cjelobrojna (integerinteger)) varijabla može varijabla može poprimiti samo cjelobrojne vrijednostipoprimiti samo cjelobrojne vrijednosti ( (prpr., 2, 100, -12)., 2, 100, -12)
DEKLARIRATI VARIJABLU ZNAČI JEDNOZNAČNO ODREDITI NJEZIN TIP
int a, b, c;
![Page 24: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/24.jpg)
24
Deklaracija i inicijalizacija
int i;Deklaracija varijable ii (najavili za korištenje, odnosno zauzeli prostor u memoriji)
Ne znamo što se trenutno nalazi upisano u toj varijabli jer to zavisi od prethodnog stanja u memoriji
int i;i=0;
Nakon deklaracije negdje u programu moramo postaviti neku početnu vrijednost. Ovo se naziva inicijalizacija.
int i=0;Programeri često rade deklaraciju i inicijalizaciju zajedno
Ovo se naziva definicijom varijable.
int c, i=7,b=0; Deklaracije i definicije se mogu kombinirati.
![Page 25: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/25.jpg)
25
• Operator pridruživanja (=)• Varijabli pridružuje vrijednost Varijabli pridružuje vrijednost
• Primjer:Primjer:int sum; int sum;
sum = 500 + 15;sum = 500 + 15;
• Program deklarira varijablu Program deklarira varijablu sumsum kao tip INTEGER kao tip INTEGER
(int)(int)• U C-u vU C-u varijabli arijabli sumsum se pridružuje se pridružuje
vrijednost 500+15vrijednost 500+15 koristeći operator koristeći operator pridruživanjapridruživanja
Što znači naredba ? k=k+1;
1
k 5 6
DEKLARACIJA I PRIDRUŽIVANJE
ISTOint sum = 500 + 15;
![Page 26: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/26.jpg)
26
• Primjer deklaracije Primjer deklaracije integerinteger varijable varijable cijeli_broj cijeli_broj ::
intint cijeli_broj; cijeli_broj;cijeli_broj = cijeli_broj = 123;123;
• Primjer deklaracije float varijable realni_broj : floatfloat realni_broj;realni_broj;realni_broj= realni_broj= 123.4567; 123.4567;
• Primjer deklariranja double varijable tocniji_realni_br : doubledouble tocniji_realni_brtocniji_realni_br;
tocniji_realni_brtocniji_realni_br ==1234567.12345678E-81234567.12345678E-8;
• Primjer deklariranja znakovne varijable Primjer deklariranja znakovne varijable slovoslovo : charchar slovo;slovo;slovo = slovo = 'A'A';';
Primjeri
![Page 27: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/27.jpg)
27
Domaći rad1. Koje od navedenih deklaracija varijabli su valjane?
int a,b,c;int n = -100;long m = 2, p = 4;int2k;double x = 2 * m;float y = y * 2;double d = 0.67;float _f = 0.52;char c = '$';
2. Koji od navedenih identifikatora su valjani?identifierseven_11_gross-incomegross$income2by2average_weight_of_a_large_pizzavariable
prosječna_vrijednost3. Deklarirajte varijable za sljedeće entitete:
Broj godina osobe.Plaća zaposlenika.Broj riječi u riječniku.Slovo abecede.
![Page 28: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/28.jpg)
28
Funkcija printf
![Page 29: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/29.jpg)
29
Što će ispisati sljedeći programi?Što će ispisati sljedeći programi?Kako će ispisati?Kako će ispisati?
#include#include <stdio.h> <stdio.h>
voidvoid main()main()
{{ printfprintf("Naredbe se završavaju točka-zarezom.");("Naredbe se završavaju točka-zarezom.");
printfprintf("Izvršavanje programa počinje prvom ("Izvršavanje programa počinje prvom naredbom funkcije main().\n"); naredbom funkcije main().\n");
}}
![Page 30: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/30.jpg)
30
Funkcija printf
• Funkcija printf se može javiti u dva oblika. Prvi je jednostavniji:
printf(“neki tekst u navodnicima sa specijalnim znakovima printf(“neki tekst u navodnicima sa specijalnim znakovima \n\n””););
• Drugi oblik je znatno značajniji:– printf(“%d %d %e tekst %c\n”,in,60,fl,ch);
Poruka bi bila odštampana na ekranu u datom obliku.
Funkcija printf u ovom obliku opet štampa string koji joj je prvi argument‚ ali ono što je iza % mijenja se redom sa argumentima koji slijede. Tako se umjesto %d štampa varijabla in i to kao cjelobrojna (%d znači štampaj kao cjelobrojnu varijablu).
Znak za novi red koji je čest sastavni elemenat naredbe printf.
![Page 31: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/31.jpg)
31
FunkcijaFunkcija printfprintf• Poziv funkcije printf izgleda:printf ("printf ("opis_formataopis_formata",varijabla,varijabla,...); ",varijabla,varijabla,...);
• PrimjerPrimjer
printf("Rezultat je %d", 5);printf("Rezultat je %d", 5);
• Opis_formata može sadržavat tekst koji će se Opis_formata može sadržavat tekst koji će se ispisatiispisati
• Ukoliko prikazujete vrijednost jedne ili više varijabli, Ukoliko prikazujete vrijednost jedne ili više varijabli, potrebno je na odgovarajuće mjesto upisati opis potrebno je na odgovarajuće mjesto upisati opis formata pretvorbe za svaku varijablu formata pretvorbe za svaku varijablu Sastoji se od oznake postotka (%) iza kojeg slijedi slovo Sastoji se od oznake postotka (%) iza kojeg slijedi slovo
slovo opisuje tip podatka koji se upotrebljavaslovo opisuje tip podatka koji se upotrebljava
• Očekuje se da broj argumenta nakon stringa u naredbi Očekuje se da broj argumenta nakon stringa u naredbi printfprintf bude jednak broju “%” unutar stringabude jednak broju “%” unutar stringa
![Page 32: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/32.jpg)
32
Funkcija printf
• Formati ispisa imaju sljedeće značenje (navodimo samo Formati ispisa imaju sljedeće značenje (navodimo samo neke važnije):neke važnije):– %d cijeli brojevi– %f realni brojevi– %c znak– %bd cijeli broj sa b znamenki– %a.bf realni broj sa a pozicija i b decimalnih mjesta,
podrazumjeva se a>b– %e eksponencijalni zapis– %x heksadecimalni zapis– %o oktalni zapis...
Jedan ili više opisa formata je smješteno između Jedan ili više opisa formata je smješteno između dvostrukih navodnikadvostrukih navodnika
![Page 33: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/33.jpg)
33
Modifikatori za formatiranje ispisaSpecijalni znakovi:
\n prelazak u novi red
\t horizontalni tabulator
\v vertikalni tabulator
\b pomak za mjesto unazad (backspace)
\r postavljanje kursora na početak linije
\f nova stranica
\a zvučni signal
\\ kosa crta ulijevo
\” dvostruki navodnik
![Page 34: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/34.jpg)
34
Slijed naredbi
#include <stdio.h>
void main()
{
int zbroj;
zbroj = 500 + 15;
printf("Zbroj 500 i 15 iznosi %d\n", zbroj);
}
Sljedeći program ispisuje zbroj brojeva 500 i 15.
![Page 35: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/35.jpg)
35
Sljedeći program ispisuje dvije cjelobrojne vrijednosti
razdvojene horizontalnim tabulatorom : \t
#include#include <stdio.h> <stdio.h>voidvoid main() main(){{ intint broj1, broj2; broj1, broj2;broj1 = 10;broj1 = 10;broj2 = 15;broj2 = 15;
printfprintf("%d\t%d\n", broj1,broj2);("%d\t%d\n", broj1,broj2);}}
![Page 36: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/36.jpg)
36
Primjer programa koji pokazuje uporabu svih tipova podataka i formatiranje ispisa realnih brojeva:
##includeinclude <stdio.h> <stdio.h>main()main(){{
intint broj=10; broj=10;floatfloat novac=342.75; novac=342.75;charchar slovo='A'; slovo='A';doubledouble pi=3.14159265359; pi=3.14159265359;printf("printf("VrijednostVrijednost brojabroja jeje %d.\n", %d.\n",brojbroj););printf("printf("Kolicina novaca jeKolicina novaca je %.2f Kn.\n", %.2f Kn.\n", novacnovac ); );printf("printf("OvoOvo je je slovo slovo %c.\n", slovo );%c.\n", slovo );printf("printf("MatematickaMatematicka konstantakonstanta pi pi nana jedanaest decimalajedanaest decimala iznosiiznosi %.11f.\n", pi ); %.11f.\n", pi );
}}
![Page 37: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/37.jpg)
37
KONVERZIJA TIPA PODATKA #include#include <stdio.h> <stdio.h>
voidvoid main() main()
{{ intint broj1 = 7 broj1 = 7,, broj2 = 2; broj2 = 2;
ffloatloat kvocijent = 0; kvocijent = 0;
kvocijent = broj1 / broj2;kvocijent = broj1 / broj2;
printf("%d dijeljeno s %d je printf("%d dijeljeno s %d je %%f\f\n",broj1,broj2,kvocijent );n",broj1,broj2,kvocijent );
}}
Ispis programa:7 dijeljeno s 2 je 3.000000
![Page 38: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/38.jpg)
38
ZADATAK
• Zadano je Z=‘#’, X=-14.57889 i Y= 99.
• U programu treba ispisati vrijednosti X i Y, na slijedeći način:
– X će biti ispisan na 2 decimalna mjesta, zatim se ispisuje tabulator (\t), te znak Z, jedan razmak pa ASCII vrijednost znaka Z; nakon toga ide novi red, a zatim ispis broja Y dekatski, oktalno i heksadecimalno.
![Page 39: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/39.jpg)
39
#include <stdio.h>void main(){ int Y=99; float X=-14.57889; char Z=’#’;
printf(“Ispis rezultata: \n”); printf(“ %.2f \t %c %d \n %d %o %x \n”, X,Z,Z,Y,Y,Y);
}
![Page 40: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/40.jpg)
40
Brzi test 1
• Koja su od ovih imena pravilni nazivi varijabli
_a37 4aB a4b a 37 int int37 a&32
Navedite tipove podataka i ključne riječi
Navedite formate ispisa
Navesti primjer ispisa cjelobrojne varijable a.
![Page 41: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/41.jpg)
41
UNOS PODATAKA S TIPKOVNICE u C
• Funkcija Funkcija scanfscanf• služi učitavanju podataka sa standardnog služi učitavanju podataka sa standardnog
ulaza za vrijeme ulaza za vrijeme izvođenjaizvođenja programa (na programa (na konzoli) konzoli)
• Opća forma:Opća forma:
scanf(“kontrolni_string”,&arg_1,&arg_2, ...,&arscanf(“kontrolni_string”,&arg_1,&arg_2, ...,&arg_n);g_n);
• gdje je kontrolni string konstantni znakovni niz gdje je kontrolni string konstantni znakovni niz koji sadrži informacije o vrijednostima koje se koji sadrži informacije o vrijednostima koje se učitavaju u argumente arg 1,. . . ,arg n (%d, učitavaju u argumente arg 1,. . . ,arg n (%d, %f, %c)%f, %c)
![Page 42: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/42.jpg)
42
UNOS PODATAKA S TIPKOVNICE u C
#include <stdio.h>
void main() // program s primjerom unosa s tipkovnice
{ int broj;
printf("Unesite broj:");
scanf("%d", &broj);
printf("Broj koji ste unijeli je %d.\n", broj);
}
![Page 43: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/43.jpg)
43
KonstanteKonstante
1. Konstante koje započinju s 0 (nula) interpretiraju se kao oktalne
2. Konstante koje započinju s 0x interpretiraju se kao heksadecimalne
3. Simboličke konstante
![Page 44: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/44.jpg)
44
Simboličke konstante
• umjestoumjesto float Opseg = 2. * r * 3.14159265359;float Opseg = 2. * r * 3.14159265359;
• float Povrsina = r * r * 3.14159265359;float Povrsina = r * r * 3.14159265359;• double Oplosje = 4. * r * r * 3.14159265359;double Oplosje = 4. * r * r * 3.14159265359;• može se pisatimože se pisati
const double Pi = 3.14159265359;const double Pi = 3.14159265359;• iliili• #define Pi = 3.14159265359;#define Pi = 3.14159265359;• i ondai onda• float Opseg = 2. * r * Pi;float Opseg = 2. * r * Pi;• float Povrsina = r * r * Pi;float Povrsina = r * r * Pi;• double Oplosje = 4. * r * r * Pi;double Oplosje = 4. * r * r * Pi;
![Page 45: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/45.jpg)
45
Napiši program kojim ćeš izračunati opseg i površinu kruga za proizvoljno zadani radijus.
• ALGORITAM:
Definiranje konstante PIDefiniranje varijable rRačunanje opsega i površineIspis dobivenih rezultata
![Page 46: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/46.jpg)
46
#include<stdio.h>void main(){
const float PI=3.14;int r=10;float P=r*r*PI;float O=2*r*PI;printf("Opseg je %f\n",O);printf("Povrsina je %f\n",P);
}
![Page 47: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/47.jpg)
47
Rješenje primjera u C-u/* Aritmeticka Sredina*/#include <stdio.h>void main () { int i, j, k; float sredina; printf(“Unesi tri broja\n”);scanf("%d,%d,%d", &i,&j,&k); sredina = (i + j + k) / 3.; printf ("Aritmeticka sredina brojeva %d, %d i" " %d iznosi %f", i, j, k, sredina);printf(“\ndek %d,okt %o, heksa %x\n”,i,i,i);}
Način prekida znakovnog niza i
nastavak u novom retku
![Page 48: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/48.jpg)
48
Za domaći:
• Korištenjem scanf učitajte dekadsku vrijednost s tipkovnice u integer varijablu broj_ucenika, a potom je ispišite pomoću printf u dekadaskom, oktalnom i heksadekadskom obliku.
• Korištenjem scanf učitajte vrijednost float varijable cijena_tel_imp , a potom je ispišite pomoću printf na dva decimalna mjesta.
• Korištenjem scanf učitajte jedan znak s tipkovnice u varijablu operator, a potom ga ispišite. Preskočite razmake , tabulatore i oznake novog reda, prije upisa.
![Page 49: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/49.jpg)
Dodatak:
• Funkcija scanf(),printf(),”Cast” operatori
49
![Page 50: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/50.jpg)
Funkcija scanf()
- Omogućava formatirani unos podataka.
scanf(“kontrolni string”,&arg1,&arg2,…);
- Kontrolni string određuje format unosa podataka-Oznake formata (npr:%d,%f,%c itd) određuju koji će se tip podatka unositi s tastature, te taj podatak pridružuju argumentima.
Pr. int a;
scanf(“%d”,&a);
Dakle, unosimo cijeli broj i spremamo ga u varijablu a.
![Page 51: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/51.jpg)
-Prazno mjesto(space),\n,\t omogućuju preskakanje praznina ulaznog niza.
Pr. char a,b;
scanf(“ %c %c”,&a,&b);
-U kontrolnom stringu se mogu pojaviti i drugi znakovi.
-Njima moraju odgovarati identični znakovi na ulazu.
Pr. float a;
int j;
scanf(“%f,%d”,&a,&j);
Tada ulaz mora biti u obliku: npr. 1.456,8
![Page 52: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/52.jpg)
Pr. scanf(“%d/%d/%d”,&dan,&mjesec,&godina);
![Page 53: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/53.jpg)
Funkcija printf()
- Omogućava formatirani ispis podataka.
printf(“kontrolni string”, arg1,arg2,…);
Pr. printf(“ Nekakva poruka bez argumenata”);
Pr. Int i=5;
printf(“Vrijednost varijable i je %d”,i);
Pr. printf(“%2d”,i); varijabla “i” će prilikom ispisa na ekranu zauzeti minimalno 2 pozicije
![Page 54: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/54.jpg)
Pr. float var = 123.3456;
printf(“%.2f”,var); broj se ispisuje s 2 decimale
printf(“%8.3f”,var); broj se ispisuje s 3 decimale, a zauzima najmanje 8 pozicija prilikom ispisa
![Page 55: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/55.jpg)
“Cast” operatori
-Tip rezultata aritmetičkih izraza gdje su operandi istog tipa, odgovara tipu operanada.
Pr. int j = 2;
int i = 7;
float rez;
rez = i / j;
Rezultat izraza “i / j” je “int” tipa, dakle broj 3.
![Page 56: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/56.jpg)
- U izrazima ćemo često imati imati operande različitog tipa. U tom slučaju se konverzija odvija prema višem tipu podataka.
Pr. int x;
float y;
double z;
rez =x * y - z; rez je tipa “double”
Pr. int i = 5;
double d = 2.85;
d = i; cjelobrojna vrijednost varijable “i” se najprije pretvori u odgovarajuću realnu vrijednost i onda se pridruži varijabli “d”.
i = d; varijabli “i” se pridruži cjelobrojna vrijednost varijable d,tj.odbaci se decimalni dio.
![Page 57: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/57.jpg)
Eksplicitna pretvorba: (tip_podatka) operand; operand može
biti varijabla ili aritmetički izraz.
Pr. rez = (float) (i / j); Rezultat izraza (i / j) je sam po sebi “int” tipa (jer su oba operanda u izrazu “int” tipa).
Naredbom (float)(i / j) se taj rezultat tipa “int” pretvara u tip “float” (3 3.000000).
Nadalje: rez = (float) i / j; “cast” operator je primjenjen samo na varijablu “i” koja je sada pretvorena u “float” tip podatka.
Rezultat cijelog izraza “(float)i / j” je tipa float zbog konverzije tj. pretvorbe prema višem tipu podatka.
![Page 58: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/58.jpg)
58
2. OPERATORI
2.1. Operatori pridruživanja
2.2. Aritmetički operatori
2.3. Relacijski i logički operatori
![Page 59: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/59.jpg)
AritmetičkiAritmetičkioperatorioperatori
*
![Page 60: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/60.jpg)
UUnarni operatorinarni operatori OOperatorperatorii koji djeluju na jednom koji djeluju na jednom
operanduoperandu
predznacipredznaci+X+X unarni plusunarni plus -X -X unarni minusunarni minus
inkremeninkrementiranjetiranje X++X++ uvećaj nakonuvećaj nakon++X++X uvećaj prijeuvećaj prije
dekremendekrementiranjetiranjeX--X-- umanji nakonumanji nakon--X--X umanji prijeumanji prije
*
![Page 61: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/61.jpg)
OperatorOperatorii inkrementiranja/dekrementiranjainkrementiranja/dekrementiranja
*
• Operator Operator inkrementiranjainkrementiranja ++ povećava ++ povećava
vrijednost varijable za 1vrijednost varijable za 1• Izraz Izraz x++;x++; je ekvivalentan izrazu je ekvivalentan izrazu
x=x+1;x=x+1;
• Operator Operator dekrementiranjadekrementiranja -- smanjuje -- smanjuje
vrijednost varijable za 1vrijednost varijable za 1• Izraz Izraz x--;x--; je ekvivalentno izrazu je ekvivalentno izrazu x=x-x=x-
1;1;
![Page 62: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/62.jpg)
Prefiks i postfiks notacijePrefiks i postfiks notacije
x++ ili ++x x++ ili ++x
x-- ili --xx-- ili --x
*
Operatore inkrementiranja/dekrementiranja moguće Operatore inkrementiranja/dekrementiranja moguće je pisati ispred i iza varijable:je pisati ispred i iza varijable:
U U prefiksprefiks notaciji (++x, --x) varijabla će biti notaciji (++x, --x) varijabla će biti promijenjena prije no što će njena vrijednost biti promijenjena prije no što će njena vrijednost biti iskorištena u složenom izrazuiskorištena u složenom izrazu
U postfiks notaciji (x++, x--) varijabla će biti promijenjena nakon što će njena vrijednost biti iskorištena u složenom izrazu
![Page 63: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/63.jpg)
Prefix oblik:Prefix oblik:
... i ji = 2; 2 ?j = ++i; 3 3
... i ji = 2; 2 ?j = --i; 1 1
![Page 64: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/64.jpg)
Postfix oblik: Postfix oblik:
...... ii jj
i = 2;i = 2; 22 ??
j = i++;j = i++; 33 22
...... ii jji = 2;i = 2; 22 ??j = i--;j = i--; 11 22
![Page 65: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/65.jpg)
Prefiks i postfiks notacijePrefiks i postfiks notacije
*
Što će se ispisati:Što će se ispisati:#include <stdio.h>#include <stdio.h>void main()void main(){int i=5;{int i=5;
printf("%d\n",-i);printf("%d\n",-i);printf("%d\n",--i);printf("%d\n",--i);printf("%d\n",i++);printf("%d\n",i++);printf("%d",i);printf("%d",i);
}}
![Page 66: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/66.jpg)
Ako su početne vrijednosti cjelobrojnih Ako su početne vrijednosti cjelobrojnih varijabli zadane kao: varijabli zadane kao: int i=1, j=2, k=7;
kolike će biti vrijednosti nakon izvršavanja kolike će biti vrijednosti nakon izvršavanja sljedećih naredbi.sljedećih naredbi.
i+=j;
j=i++; k*=i;
![Page 67: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/67.jpg)
BBinarni operatoriinarni operatori
zbrajanjezbrajanje X + YX + Y oduzimanjeoduzimanje X - YX - Y množenjemnoženje X * YX * Y dijeljenjedijeljenje X / YX / Y modulomodulo X % YX % Y
Binarni su oni operatori koji se upotrebljavaju u Binarni su oni operatori koji se upotrebljavaju u kombinaciji s kombinaciji s dva operandadva operanda
Operacija modulo (%) djeluje na cjelobrojnim operandima i Operacija modulo (%) djeluje na cjelobrojnim operandima i kao rezultat daje ostatak pri cjelobrojnom dijeljenju operanadakao rezultat daje ostatak pri cjelobrojnom dijeljenju operanada
![Page 68: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/68.jpg)
int a, b;int a, b;a = a = 99; b = ; b = 22;;
Izraz Rezultat
a + b 11
a - b 7
a * b 18
a / b 4
-a/b -4
a % b 1
Primjer
float a, b;float a, b;
a = 12.5; b = 2.;a = 12.5; b = 2.;
Izraz Rezultat
a + b 14.5
a - b 10.5
a * b 25.0
a / b 6.25
a % b pogreška
![Page 69: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/69.jpg)
Prioritet osnovnih aritmetiPrioritet osnovnih aritmetiččkih kih operatoraoperatora
1. 1. ** / / % %
2. 2. ++ - - Ako u izrazu ima više operatora jednakog prioriteta,
izračunavaju se slijeva nadesno Npr:
2 + 3 / 2 * 4 – 5 * 6 % 82 + 3 / 2 * 4 – 5 * 6 % 8
2 +2 + 1 1 * 4* 4 – – 30 30 % 8% 8
22 + + 4 4 –– 66
6 6 – – 66
00
![Page 70: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/70.jpg)
Zadatak 1:Zadatak 1: Treba izračunati zbroj, razliku, Treba izračunati zbroj, razliku, umnožak, kvocijent i ostatak dva cijela brojeva. umnožak, kvocijent i ostatak dva cijela brojeva. Ispis neka bude oblika:Ispis neka bude oblika:
Unesi prvi broj:Unesi prvi broj:UUnesi drugi broj: nesi drugi broj: .... + .... = ........ + .... = ........ - .... = ........ - .... = ........ * .... = ........ * .... = ........ / .... = ........ / .... = ........ .... %%.... = ........ = ....
Zadatak 2: Zadatak 2: Potrebno je izračunati srednju Potrebno je izračunati srednju vrijednost po volji izabrana četiri cijela broja. Ispis vrijednost po volji izabrana četiri cijela broja. Ispis neka bude oblika:neka bude oblika:
Unesi cetiri cijela broja:Unesi cetiri cijela broja:
Srednja vrijednost brojeva Srednja vrijednost brojeva
...., ...., .... i .... je ........., ...., .... i .... je .....
![Page 71: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/71.jpg)
Operator dodjele tipaOperator dodjele tipa
Deklaracija i definicija varijabli:Deklaracija i definicija varijabli:int Brojnik = 1;int Brojnik = 1; int Nazivnik = 3;int Nazivnik = 3;
Želimo podijeliti dvije cjelobrojne varijable, a Želimo podijeliti dvije cjelobrojne varijable, a da rezultat bude realni broj:da rezultat bude realni broj:
Ovo je OK:Ovo je OK:float TocniKvocijent = (float)Brojnik / (float)Nazivnik;float TocniKvocijent = (float)Brojnik / (float)Nazivnik;
I ovo:I ovo: float TocniKvocijent = float(Brojnik) / float(Nazivnik);float TocniKvocijent = float(Brojnik) / float(Nazivnik);
Ali ovo nije:Ali ovo nije:float Krivo = Brojnik / Nazivnik; float Krivo = Brojnik / Nazivnik; // ispisuje nulu!!!// ispisuje nulu!!!
*
![Page 72: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/72.jpg)
Zadatak : Zadatak : Što će se ispisatiŠto će se ispisati##include <stdio.h>include <stdio.h>void main()void main()
{{int a = 10;int a = 10;float b=10.;
printf("a/3 = %d \n", a/3);
printf("b/3 = %f \n",b/3);
float c=a/3;
printf("c = %f \n", c);
c = (float)a/3; //primjena operatora dodjele tipa (float)
printf("c = %f \n", c);
c=b*a;
printf("c = %f \n", c);
}}
![Page 73: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/73.jpg)
SkraSkraćena notacijaćena notacija
U programiranju su česte operacije tipa: U programiranju su česte operacije tipa: a=a+b;a=a+b; Za operacije ovog tipa u C-u Za operacije ovog tipa u C-u susu uveden uvedenee skraćen skraćenee
notacijnotacijee::a+=b;a+=b; a-=b;a-=b; a*=b;a*=b; a a/=b;/=b; a%=b;a%=b;koje koje znače redom:znače redom:a=a+b;a=a+b; a=a-b; a=a*b;a=a-b; a=a*b; a=a a=a/b;/b; a=a%b;a=a%b;
Već ste (ja se nadam) uočili znak Već ste (ja se nadam) uočili znak ;; koji stoji na kraju koji stoji na kraju svake od naredbi i znači kraj naredbesvake od naredbi i znači kraj naredbe
![Page 74: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/74.jpg)
2.3. Relacijski i 2.3. Relacijski i logički operatori logički operatori
*
![Page 75: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/75.jpg)
Logički tipovi podatakaLogički tipovi podataka
boolbool ImamLiMnogoNovaca =FALSE; ImamLiMnogoNovaca =FALSE;boolbool JeLiVamDosadno = TRUE; JeLiVamDosadno = TRUE;
TRUE = 1; TRUE = 1; FALSE = 0;FALSE = 0;
George BoolGeorge Bool (1815-1864), (1815-1864), engleski matematičar, engleski matematičar,
utemeljitelj logičke algebreutemeljitelj logičke algebre
*
![Page 76: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/76.jpg)
Relacijski operatoriRelacijski operatori
*
Tvore atomne sudoveTvore atomne sudoveOperatorOperator ZnačenjeZnačenje Logički izrazLogički izraz RezultatRezultat
==== jednakojednako 1=1= =1=1 1 (Istina)1 (Istina)
!=!= različitorazličito 2!=2+22!=2+2 1 (Istina)1 (Istina)
>> većeveće 5>65>6 0 (Laž)0 (Laž)
>=>= veće ili jednakoveće ili jednako 6>=66>=6 1 (Istina)1 (Istina)
<< manjemanje 7<107<10 1 (Istina)1 (Istina)
<=<= manje ili jednakomanje ili jednako 7<=67<=6 00 (Laž)(Laž)
Znakovi su valjani operandi jer su predstavljeni numeričkim kodovima
Primjer: (prema ASCII kodu) 'A' < 'F' // daje 1 (slično kao i 65 < 70)
Aritmetičke operacije imaju veći prioritet od logičkih.
![Page 77: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/77.jpg)
Jednostavni logički izraziJednostavni logički izrazi
a = = ba = = boperand 1operand 1(subjekt)(subjekt)
operand 2operand 2(objekt)(objekt)
relacijarelacija(odnos)(odnos)
sudsud(tvrdnja)(tvrdnja)
*
![Page 78: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/78.jpg)
Logički operatoriLogički operatori
*
Složeniji logički izrazi formiraju se Složeniji logički izrazi formiraju se pomoću logičkih operatorapomoću logičkih operatora
Operandi logičkih operatora su logički izraziOperandi logičkih operatora su logički izrazi
Vrijednost složenog logičkog izraza bit će 0 (laž) Vrijednost složenog logičkog izraza bit će 0 (laž) ili 1 (istina)ili 1 (istina)
OperatorOperator NazivNaziv PrimjerPrimjer
! x! x negacija (negacija (notnot)) !(5 == 5)!(5 == 5) // // dajedaje 0 0
x && yx && y konjunkcija (konjunkcija (and - and - logičko ’logičko ’ii’)’)5 < 6 && 6 < 5 < 6 && 6 < 77 // // dajedaje 11
x || yx || y disjunkcija (disjunkcija (or - or - logičko ‘logičko ‘iliili’)’) 5 < 6 || 6 < 55 < 6 || 6 < 5 // // dajedaje 1 1
![Page 79: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/79.jpg)
PrimjerPrimjer
Kolike su vrijednosti varijabli k, k1 Kolike su vrijednosti varijabli k, k1 nakon što se izvrši sljedeći blok naredbinakon što se izvrši sljedeći blok naredbi
int k, k1,a=3;k=!(a==8);k1=(a+=3)>=8 || !0;
![Page 80: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/80.jpg)
PrimjerPrimjer
// Ispitivanje istinitosti// Ispitivanje istinitosti
#include <stdio.h>#include <stdio.h>void main() void main() {{int x, t1, t2, test;int x, t1, t2, test;scanf("%d", &x);scanf("%d", &x);t1 = (x - x/3*3) t1 = (x - x/3*3) ==== 0; 0;t2 = t2 = ((xx % % 7) 7) ==== 0; 0;test = t1 || t2;test = t1 || t2;printf("x = %d test = %d\n",printf("x = %d test = %d\n", x,test)x,test);;
} }
![Page 81: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/81.jpg)
Napisati program koji će utvrditi za učitani cijeli broj x je li dijeljiv i sa 3 i sa 4
definiraj cijele brojeve x, t1, t2, test učitaj (x) postavi t1 na rezultat ispitivanja djeljivosti x sa 3 postavi t2 na rezultat ispitivanja djeljivosti x sa 4 test = t1 i t2 ispiši (x, test) kraj
![Page 82: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/82.jpg)
Primjer – rješenje u C-u
#include <stdio.h >#include <stdio.h >void main () void main () {{
int x, t1, t2, test;int x, t1, t2, test;scanf(“%d”, &x);scanf(“%d”, &x);t1 = (xt1 = (x%%3) == 0;3) == 0;t2 = (x%t2 = (x%44) == 0;) == 0;
testtest== t1 t1 &&&& t2; t2;printf(“x= %d printf(“x= %d t1=%d t2=%d t1=%d t2=%d test = %d\n”, x,test = %d\n”, x,t1,t2,t1,t2, test); test);}}
![Page 83: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/83.jpg)
Složeni logički izraziSloženi logički izrazi
(a < b) && (c = = d) || (e > f)(a < b) && (c = = d) || (e > f)jednostavnijednostavnilog. izraz 1log. izraz 1
ssudud (tvrdnja)(tvrdnja)
jednostavnijednostavnilog. izraz 2log. izraz 2 jednostavnijednostavni
log. izraz 3log. izraz 3
llogičkiogički operator 1operator 1
*
llogičkiogički operator operator 22
Koja je vrijednost logičkog izraza ako cjelobrojne varijable Koja je vrijednost logičkog izraza ako cjelobrojne varijable imaju slijedeće vrijednosti a=b=1, c=d=2,imaju slijedeće vrijednosti a=b=1, c=d=2, ee = =4, f=3:4, f=3:
(a < b) && (c = = d) || (e > f)(a < b) && (c = = d) || (e > f)
00 11 11
00 11
11
&&&&
||||
![Page 84: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/84.jpg)
ako je a ako je b (a b) je
točno (1) točno (1) točno (1)
točno (1) pogrešno (0) točno (1)
pogrešno (0) točno (1) točno (1)
pogrešno (0) pogrešno (0) pogrešno (0)
* * *
‘‘ili’ tablicaili’ tablica
*
ako je a ako je b (a& & b) je
točno (1) točno (1) točno (1)
točno (1) pogrešno (0) pogrešno (0)
pogrešno (0) točno (1) pogrešno (0)
pogrešno (0) pogrešno (0) pogrešno (0)
‘‘i’ tablicai’ tablica
![Page 85: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/85.jpg)
Prioriteti ispitivanjaPrioriteti ispitivanja
(1) jednostavni logički izrazi(1) jednostavni logički izrazi
(2) negacije(2) negacije
(3) zagrade(3) zagrade
(4) konjunkcija(4) konjunkcija
(5) disjunkcija(5) disjunkcija
*
![Page 86: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/86.jpg)
Zarez: operator razdvajanjaZarez: operator razdvajanja
i = 10, i + 5; i = 10, i + 5; // // rezultat: i=15rezultat: i=15
Koristi se za Koristi se za razdvajanje izrazarazdvajanje izraza u u naredbama.naredbama.
*
![Page 87: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/87.jpg)
Operatori obnavljajućeg Operatori obnavljajućeg pridruživanjapridruživanja
Sastoje se od Sastoje se od operatoraoperatora i i znaka znaka jednakosti. jednakosti. Omogućavaju Omogućavaju kraći zapis kraći zapis naredbi:naredbi:
= += -= *= /= %== += -= *= /= %=
*
![Page 88: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/88.jpg)
Primjeri s aritmetičkim Primjeri s aritmetičkim operatorima:operatorima:
int a;
a = 20;
a += 5;
a -= 5;
a *= 5;
a /= 5;
a %= 5
a = 20a = 20
a = a = a+a+55 a=25 a=25
a = a = a -5 a -5 a = 20a = 20
a = a = a * 5 a * 5 a = 100a = 100
a = a = a / 5 a / 5 a = 20a = 20
a =a = a%5 a%5 a =a = 0 0
*
Ekvivalentni Ekvivalentni izraziizrazi
![Page 89: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/89.jpg)
Zadatak:Zadatak: Što će se ispisati: Što će se ispisati:
#include <stdio.h>#include <stdio.h>void main()void main(){{
int n = 10;n+=5; printf("n = %d \n", n);n-=20; printf("n = %d \n", n);n*=-2; printf("n = %d \n", n);n%=3; printf("n = %d \n", n);
}}
![Page 90: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/90.jpg)
Dodatak:Dodatak:
Operatori po prioritetima (hijerarhija):Operatori po prioritetima (hijerarhija):
![Page 91: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/91.jpg)
Operatori po prioritetimaOperatori po prioritetima
Unarni opUnarni op - - ! ! ++ ++ -- --
Aritm opAritm op ** / / % %
++ - -
Relacijski opRelacijski op < < <= <= > > >= >=
= == = != !=
Logičko ANDLogičko AND &&&&
Logičko ORLogičko OR ||||
op pridruživanjaop pridruživanja = += -= *= /= %== += -= *= /= %=
![Page 92: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/92.jpg)
c = a*b + d/e;c = a*b + d/e;
c = (a*(b+d)) /e;c = (a*(b+d)) /e;
t < i +1; t < i +1; t < ( i+1 ); t < ( i+1 );
5*2 >= 10; 5*2 >= 10; (5*2) >= 10; (5*2) >= 10;
1 != 7 = = 0; 1 != 7 = = 0; (1 != 7) = = 0; (1 != 7) = = 0;
1 && !0 || 1 1 && !0 || 1 rezultat je1. rezultat je1.
1 && !(0 || 1)1 && !(0 || 1) rezultat je 0. rezultat je 0.
![Page 93: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/93.jpg)
93
3. Kontrola toka program
![Page 94: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/94.jpg)
94
3. Kontrola toka program
3.1. IF3.1. IF
3.2. IF-ELSE3.2. IF-ELSE
3.3. SWITCH3.3. SWITCH
![Page 95: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/95.jpg)
95
NAREDBA if
Osnovni opći oblik ove naredbe Osnovni opći oblik ove naredbe je : je :
if( logički_if( logički_iizraz )zraz )
{{ blok_naredbi blok_naredbi ; ;}
ILIILIif( logički_if( logički_iizraz )zraz ) naredbnaredba ;a ;
![Page 96: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/96.jpg)
96
NAREDBA if
Primjer:
if ( uspjeh >= 60 ) printf(“Student je prošao. \n “);
U C U C jezikujeziku
![Page 97: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/97.jpg)
97
Pogledajmo slijedeći program koji utvrđuje je li
znak unesen s tipkovnice u rasponu od A do Z. #include <stdio.h>
void main()
{
char slovo;
printf("Unesite znak : ");
scanf(" %c", &slovo );
if( slovo >= 'A' )
if( slovo <= 'Z' ) printf("\nZnak je izmedju A i Z\n") ;
}
![Page 98: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/98.jpg)
98
2. Način – uporaba logičkog operatora
#include <stdio.h>void main() { char slovo; printf("Unesite znak : "); scanf(" %c", &slovo ); if(slovo >= 'A‘ && slovo <='Z') printf("\nZnak je izmedju A i Z\n") ;
else printf("\nZnak nije izmedju A i Z\n") ;
}
![Page 99: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/99.jpg)
9999
ASCII tablicaASCII tablica
![Page 100: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/100.jpg)
100
Zapamtite !!!
• Korištenje praznog mjesta (ispred %c) u naredbi scanf (" %c", &slovo ); omogućava ignoriranje TAB, SPACE BAR i ENTER tipke ako prethodno nije unesen neki znak.
![Page 101: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/101.jpg)
101
NAREDBE if - else dvostrana selekcija
Opći oblik ovih naredbi je : Opći oblik ovih naredbi je :
ifif( logički_( logički_iizraz )zraz )
{{blok_naredbi1blok_naredbi1;};}
elseelse
{{ blok_naredbi2 blok_naredbi2;};}
else omogućava da se izvrši naredba
kada je uvjet neistinit (jednak nuli)
![Page 102: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/102.jpg)
102
NAREDBA if – elsedvostrana selekcija
Primjer:
if ( uspjeh >= 60 ) { printf(“Student je prošao. \n “); }
else { printf("\t Student je pao ispit.\n");}
![Page 103: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/103.jpg)
103
Koju vrijednost poprimaju varijable a, b, c nakon izvršenog bloka naredbi?
void main() {
int a=3, b=10,c=15;if (!(a >b)){c=a++;b=b-a;}else b=--c; }
![Page 104: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/104.jpg)
104
Primjer: Napisati program koji učitava dva cijela broja i, ako su oba parna ispisuje njihovusumu; inače treba ispisati umnožak
#include <stdio.h>#include <stdio.h>void main() void main() {{ int int prvi_brojprvi_broj, , drugi_brojdrugi_broj;; printf(”Unesite prvi broj: ” ) ;printf(”Unesite prvi broj: ” ) ; scanf(”%d”,&prviscanf(”%d”,&prvi__broj);broj); printf(”Unesite printf(”Unesite drugidrugi broj: ” ) ; broj: ” ) ; scanf(”%d”,&scanf(”%d”,&drugi_drugi_broj);broj); if((if((pprvirvi__broj%2 == 0)&& (drugibroj%2 == 0)&& (drugi__broj%2 == 0))broj%2 == 0)) printf(”%d\n”,prviprintf(”%d\n”,prvi__broj + drugibroj + drugi__broj) ;broj) ; elseelse printf(”%d\n”,prviprintf(”%d\n”,prvi__broj broj ** drugi drugi__broj) ;broj) ;}}
![Page 105: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/105.jpg)
105
// unijeti troznamenkasti broj i ispitati da li je suma znamenki jednaka umnosku
početak
pročitaj a
ne a > 99 i a<1000 da
broj nije u s = a/100 intervalu d = (a - s*100)/10 [100,999] j = a-(s*100 +d*10) s+d+j == s*d*j da ne - ispiši rez - kraj
![Page 106: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/106.jpg)
106
// unijeti troznamenkasti broj i ispitati da li je suma znamenki jednaka umnosku#include<stdio.h>void main(){
int a, s, d, j;printf("Unesite troznamenkasti broj: ");scanf("%d",&a);
if (a<1000 && a>99) { /* Da li je broj u intervalu [100, 999]*/
s = a/100; // stotice d = (a - s*100)/10; // desetice j = a - (s*100 + d*10); // jedinice printf("Broju %d suma znamenki ",a);
if (s+d+j == s*d*j) // Da li je suma = umnozak?
printf("jest jednaka "); else printf( "nije jednaka ");
printf("umnosku njegovih znamenki. \n"); }else printf("Broj nije u intervalu [100,999]!\n");
}
![Page 107: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/107.jpg)
107
BLOKOVI if - else NAREDBI if if --else else naredbnaredbee mogu se nadovezivati mogu se nadovezivati
if( logički_if( logički_iizraz1 )zraz1 )
blok_naredbi1blok_naredbi1
else if( logički_else if( logički_iizraz2 )zraz2 )
blok_naredbi2blok_naredbi2
else if( logički_else if( logički_iizraz3 ) zraz3 )
blok_naredbi3blok_naredbi3
else if( logički_else if( logički_iizraz4 )zraz4 )
blok_naredbi4blok_naredbi4..
………………… …………………
else else
zadnji_blok_naredbizadnji_blok_naredbi
![Page 108: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/108.jpg)
108
ZADATAK
Napisati program koji omogućava unos visine (u cm) i težine (kg) za neku osobu i ispisuje jednu od sljedećih poruka: prelagan, normalan, ili pretežak, primjenom kriterija:
prelagan: težina < visina / 2.5 normalan: visina/ 2.5 <= težina <=
visina/2.3 pretežak: visina / 2.3 < težina
![Page 109: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/109.jpg)
109
#include <stdio.h>
void main()
{int tezina, visina;
printf("Unesite tezinu (kg) i visinu(cm)\n");
scanf("%d,%d%",&tezina,&visina);
if (tezina <visina/2.5)
printf(" prelagan \n");
else if (visina/2.5 <=tezina && tezina<=visina/2.3)
printf(" normalan \n");
else
printf(" pretezak \n");
}
![Page 110: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/110.jpg)
110
Sljedeći program ispituje da li je i korisnik upisao broj između 1 i 10.
![Page 111: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/111.jpg)
111
#include <stdio.h>void main(){ int broj;
printf("Unesite broj izmedju 1 i 10 : ");scanf("%d",&broj); if( broj < 1)
{ printf("\n\t Pogresno!!!\n\t Broj %d je manji od 1.\n",broj);
}
else if( broj > 10 )
{ printf("\n\tPogresno!!!\n\t Broj %d je veci od 10.\
n",broj);
}
else { printf("\n\t\tBravo !!!\n\t Broj %d je veci od 0 i manji
od 11 \n", broj); }
}
![Page 112: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/112.jpg)
112
Sljedeći program radi kao jednostavni kalkulator:
![Page 113: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/113.jpg)
113
#include <stdio.h>void main() { int nije_operator =0; char a_operator; float broj1, broj2, rezultat; printf("Unesite dva broja i operator\n"); printf(" broj1 operator broj2\n"); scanf("%f%c%f ", &broj1, &a_operator, &broj2);
if (a_operator == '*') rezultat = broj1 * broj2; else if (a_operator == '/') rezultat = broj1 / broj2; else if(a_operator == '+') rezultat = broj1 + broj2; else if(a_operator == '-') rezultat = broj1 - broj2; else nije_operator = 1;
if( nije_operator) printf("Nedozvoljeni operator.\n");
else printf("%f %c %f iznosi %f .\n", broj1, a_operator, broj2, rezultat ); }
![Page 114: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/114.jpg)
114
if naredba i uvjetni operator ?• Sljedeće dvije naredbe su ekvivalentne:1) max = a>b ? a : b2) if(a>b) max=a; else max=b;• Opći oblik je: logički_izraz ? izraz1 : izraz2
• Ako je Ako je logički_izrazlogički_izraz istinit (TRUE) tj. različit od istinit (TRUE) tj. različit od nule , izvršava se izraz1, a ako je neistinit (FALSE) nule , izvršava se izraz1, a ako je neistinit (FALSE) , tj. nula, tada se izvršava izraz2 , tj. nula, tada se izvršava izraz2
![Page 115: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/115.jpg)
115
if naredba i uvjetni operator ?• Što ispisuje slijedeći isječak koda te koje će Što ispisuje slijedeći isječak koda te koje će
vrijednosti varijable poprimiti nakon što se taj vrijednosti varijable poprimiti nakon što se taj kod izvrši?kod izvrši?
int a = 1, b = 2, c = 3, d = 4;int a = 1, b = 2, c = 3, d = 4;
printf("%d\n%d", ++a, ((d/=8) ? c-- : b--));printf("%d\n%d", ++a, ((d/=8) ? c-- : b--));
• PridruPridružživanje ima manji prioritet od dijeljenja, pa izrazivanje ima manji prioritet od dijeljenja, pa izraz d/=8d/=8 odgovaraodgovara izrazuizrazu dd = ( = (d/8d/8))
• PPrvo se a dijeli s rvo se a dijeli s 88, a zatim se rezultat ponovno posprema u, a zatim se rezultat ponovno posprema u varijablu varijablu dd
d/8d/8 = 4/ 8 = 0= 4/ 8 = 0 nova vrijednost varijable nova vrijednost varijable dd iznosi iznosi nulanula
• Vrijednost 0 Vrijednost 0 = FALSE= FALSE , pa se evaluira IZRAZ2 , pa se evaluira IZRAZ2= b--= b--
![Page 116: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/116.jpg)
116
Uvjetna naredba – kratki oblik• Treba unijeti cijeli broj različit od 0 pa ispisati apsolutnu
vrijednost broja. Ispis neka bude oblika: Upisi broj:Apsolutna vrijednost je....
#include<stdio.h>#include<stdio.h>
void main()void main()
{ int a;{ int a;
printf("Upisi broj:");printf("Upisi broj:");
scanf("%d",&a);scanf("%d",&a);
(a==0) ? printf(“ ERROr \n”) :(a==0) ? printf(“ ERROr \n”) :
(a<0)(a<0) ?? printf("Apsolutna vrijednost je %d \n",-a)printf("Apsolutna vrijednost je %d \n",-a) :: printf("Apsolutna vrijednost je %d\n ",a);printf("Apsolutna vrijednost je %d\n ",a);
}}
![Page 117: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/117.jpg)
117
#include <stdio.h>
void main()
{
int broj;
printf("Ispisat cu da li ste unijeli nulu,pozitivan ili negativan broj!\n");
printf("Unesite broj : ");
scanf("%d", &broj );(broj==0) ? printf("nula\n") : ((broj>0) ? printf("pozitivan\n") : printf("negativan\n "));
}
![Page 118: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/118.jpg)
118
Sljedeći program koristi Sljedeći program koristi ifif naredbu s naredbu s logičkim logičkim operatorom ILI (||)operatorom ILI (||) da ocijeni je li korisnikov upis da ocijeni je li korisnikov upis
uu rasponu između 1 i 10.rasponu između 1 i 10. #include#include <stdio.h> <stdio.h>voidvoid main()main() {{ intint broj; broj; printfprintf("Unesite broj izmedju 1 i 10 :("Unesite broj izmedju 1 i 10 :\n\n "); "); scanfscanf("%d", &broj);("%d", &broj); ifif (broj(broj < 1< 1 |||| brojbroj > 10> 10) )
{{printfprintf("\n\t\tPogresno!!!\n\t Broj %d nije ("\n\t\tPogresno!!!\n\t Broj %d nije između 1 i 10.\n", broj);između 1 i 10.\n", broj); } }
elseelse { { printfprintf("\n\t\tBravo !!!\n\t Broj %d je ("\n\t\tBravo !!!\n\t Broj %d je veci od 0 i manji od 11 \n", broj); }veci od 0 i manji od 11 \n", broj); }
}}
![Page 119: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/119.jpg)
119
Koju vrijednost poprimaju varijable a i b nakon izvršenog bloka naredbi?
#include <stdio.h>void main() {int a=3, b=0;if (a +=b){a+=1;b=a+1;}printf("a=%4d\n b=%d\n",a,b);}
![Page 120: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/120.jpg)
120
NAREDBA switch Naredba Naredba switchswitch je bolji način pisanja programa kada je bolji način pisanja programa kada
se pojavljuje više naredbi se pojavljuje više naredbi elseelse if if Opći oblikOpći oblik
switch ( cjelobrojni_izraz )switch ( cjelobrojni_izraz ){{ case vrijednost1: case vrijednost1:
blok_naredbi1blok_naredbi1break;break;
case vrijednost2:case vrijednost2: blok_naredbi2blok_naredbi2
break;break;case vrijednost3: case vrijednost3:
blok_naredbi3blok_naredbi3break; break;
..……
........default: default:
blok_naredbiblok_naredbi}}
![Page 121: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/121.jpg)
121
ZAPAMTI!!!
• Ključna riječ break mora biti uključena na kraju svake alternative, osim zadnje
• Ključna riječ default označava alternativu koja će biti izabrana ako nijedna od prethodnih ne odgovara vrijednosti izraza, a može biti i ispuštena
• Desna zagrada na kraju označava kraj izbora alternativa
![Page 122: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/122.jpg)
122
Pravila za switch naredbu
Vrijednosti 'case' moraju biti cjelobrojne ili znakovne konstante
Poredak 'case' izraza nije važan
‘Default’ se može smjestiti bili gdje unutar switch bloka (uobičajeno je na kraju)
Ne smiju se koristiti izrazi kao vrijednosti 'case'
![Page 123: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/123.jpg)
123
Kolika je vrijednost varijable a nakon što se izvrši sljedeći blok naredbi #include <stdio.h>#include <stdio.h>void main() void main() {{ int a=int a=3333;;
switch(a%4)switch(a%4){{ case 1: a+=2;break;case 1: a+=2;break; case 2: a-=3;break;case 2: a-=3;break; default:a+=4;default:a+=4;}}printf("\na=%d\n",a);printf("\na=%d\n",a);
}}
![Page 124: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/124.jpg)
124
#include <stdio.h>void main () { int broj; printf("Unesite brojcanu vrijednost: \n"); scanf("%d",&broj); switch (broj) { case 1:
printf("Jedan\n"); break; case 2:
printf("Dva\n"); break; case 3:
printf("Tri\n"); break; default:
printf("Unijeli ste pogresnu vrijednost\n"); break; }}
Učitati s tipkovnice brojčanu vrijednost od 1 do 3 i ispisati tu vrijednost slovima
![Page 125: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/125.jpg)
125
Napiši program koji će za brojeve 1,2,3,4 ništa ispisati, a ako je broj jednak 5 ispisati će 5, ako je nešto drugo ispisat će Pogrešan unos.
Početak
Unos broja
Ispitivanje broja
Broj je od 1-4
Broj:5
Pogrešan unos
Kraj
#include<stdio.h>void main(){ int x; printf("upiši broj"); scanf("%d",&x); switch(x) { case 1: case 2: case 3: case 4: {
printf("broj je 1-4\n");break;
} case 5:
{ printf("broj je 5\n"); break;
} default:
printf("Broj van granica\n");
}}
![Page 126: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/126.jpg)
126
Napiši program koristeći switch case naredbu kojim ćeš upisati 2 broja po želji i operator po želji +-*/ te ovisno o izboru operatora izbaciti rješenje. Početak
Unos broja1Unos broja2
Ispiši omjer
Kraj
Ispitivanje operatora
Ispiši umnožak Ispiši razliku
Ispiši zbroj
Funkcija za omjer
Funkcija za zbroj
Funkcija za umnozak
Funkcija za razliku
/
* -
+
![Page 127: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/127.jpg)
127
// kalkulator#include <stdio.h>#include <stdio.h>void main()void main(){{ charchar oper; oper; //operator//operator floatfloat broj1, broj2, rezultat; broj1, broj2, rezultat;printf("Unesite dva broja i operator \n");printf("Unesite dva broja i operator \n");scanf("%f%c%f", &broj1, &oper, &broj2);scanf("%f%c%f", &broj1, &oper, &broj2);switchswitch (oper) (oper){{ case '+':case '+':
rezultat = broj1 + broj2;rezultat = broj1 + broj2;printf("%f %c %f iznosi %f.\n", printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat );broj1,oper,broj2,rezultat );breakbreak;;
case'-':case'-':rezultat = broj1 - broj2;rezultat = broj1 - broj2;printf("%f %c %f iznosi %f.\n", printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat );broj1,oper,broj2,rezultat );breakbreak;;
case '/':case '/':rezultat = broj1 / broj2;rezultat = broj1 / broj2;printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat); printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat); break;break;
case '*':case '*':rezultat = broj1 * broj2;rezultat = broj1 * broj2;
printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat ); printf("%f %c %f iznosi %f.\n", broj1,oper,broj2,rezultat ); break;break;
default:default:printf("Nedozvoljeni operator.\n");}printf("Nedozvoljeni operator.\n");} } }
![Page 128: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/128.jpg)
128
Za domaći rad:1. Napišite C program koji omogućava korisniku
da upiše 5 brojeva između 1 i 100. Program treba izračunati prosječnu vrijednost unesenih brojeva , te odrediti koji su brojevi manji od 54 i koliko je takvih brojeva.
2. Napišite program koji ispituje (pomoću modul operatora %) da li je upisani broj paran ili neparan.
3. Proširite ZADATAK 2 za provjeru parnosti, tako da za parne i neparne brojeve dodatno ispitate djeljivost s 3, a za parne brojeve i djeljivost s 4.
![Page 129: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/129.jpg)
Dodatak:
• Kontrola toka programa:
129
![Page 130: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/130.jpg)
KONTROLA TOKA PROGRAMA
• JEDNOSTRUKO UVJETNO GRANANJE (IF)
if (uvjet) opći oblik naredbe za jednostruko grananje
{
blok naredbi;
}-ako je uvjet ispunjen(tj.istinit), izvršava se blok naredbi.
-u protivnom se blok naredbi preskače.
-blok naredbi se može sastojati od 1 ili više naredbi.
![Page 131: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/131.jpg)
Pr. int a;
scanf(“%d”,&a);
if (a>10)
{
a=a+3;
}
printf(“%d”,a);
![Page 132: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/132.jpg)
Pr.int a;scanf(“%d”,&a);if (a%2 = = 0){
printf(“Unijeli ste paran broj”);}if (a%2 != 0){
printf(“Unijeli ste neparan broj”);}- uvjet može biti bilo koji logički ili aritmetički izraz.
![Page 133: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/133.jpg)
• VIŠESTRUKA UVJETNA GRANANJA (IF)if (uvjet1) opći oblik
{
blok naredbi1;
}
else
{
blok naredbi2;
}
-Ako je uvjet1 ispunjen izvršava se blok naredbi1 i preskače blok naredbi2, u protivnom se preskače blok naredbi1 i izvršava bloknaredbi2.
![Page 134: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/134.jpg)
if (uvjet1)
{
blok naredbi1;
}
else if(uvjet2)
{
blok naredbi2;
}
…
else if(Uvjet7)
{
blok naredbi7;
}
else
{
blok naredbi8;
}
Ispitivanje niza uvjeta.
-Dakle, ako je bilo koji uvjet ispunjen izvršit će se blok naredbi pridružen tom uvjetu, a svi ostali blokovi naredbi će biti preskočeni
-Broj uvjeta nije ograničen.
![Page 135: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/135.jpg)
Pr.
int a;
scanf(“%d”,&a);
if(a%2==0)
{
printf(“Broj %d je paran”,a);
}
else
{
printf(“Broj %d je neparan”,a);
}
![Page 136: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/136.jpg)
• VIŠESTRUKA UVJETNA GRANANJA (SWITCH-CASE)Omogućava izbor jednog između više mogućih putova daljnjeg izvođenja
programa, što ovisi o vrijednosti varijable tj. izraza.
switch(izraz)
{
case konstanta1:
blok naredbi1;
break;
case konstanta2:
blok naredbi2;
break;
….
case konstanta9:
blok naredbi9;
break;
default:
blok naredbi10;
break;
}
-Prvo se izračuna vrijednost izraza,a zatim se rezultat izraza usporedi s konstantama. Ako je rezultat izraza jednak nekoj od konstanti, tada se izvršava blok naredbi pridružen toj konstanti.Ako rezultat ne odgovara ni jednoj od konstanti, izvršava se blok naredbi pridružen opciji default.-Izvršavanje bloka naredbi neke konstante se prekida naredbom break ili zagradom } koja označava kraj switch – case strukture.
![Page 137: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/137.jpg)
• Switch-case ispituje jednakost rezultata izraza i konstante, dok kod if-a izraz moze biti bilo sto.
• Dvije konstante u case ne mogu imati istu vrijednost.• Ako blok naredbi u case ne završava s break, nastavlja se izvršavati
blok naredbi idućeg case-a. Naredbe se izvršavaju sve dok se ne naiđe na break.
![Page 138: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/138.jpg)
int i;
scanf(“%d”,&i);
switch(i)
{
case 1:
printf(“Izabrali ste broj 1”);
break;
case 2:
printf(“Izabrali ste broj 2”);
break;
default:
printf(“Pogrešan izbor”);
break;
}
![Page 139: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/139.jpg)
int i;
scanf(“%d”,&i);
switch(i)
{
case 1:
case 2:
case 3:
blok naredbi 1;
break;
case 4:
case 5:
blok naredbi 2;
break;
default:
printf(“Niste unijeli niti jedan od ovih brojeva”);
break;
}
![Page 140: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/140.jpg)
PROGRAMSKE PETLJE
![Page 141: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/141.jpg)
PETLJE 141
PROGRAMSKE PETLJEPROGRAMSKE PETLJE
1.1. Petlja s eksplicitnim brojačemPetlja s eksplicitnim brojačem: : forfor
2.2. S izlazom na vrhuS izlazom na vrhu: : whilewhile
3.3. S izlazom na dnuS izlazom na dnu: do_: do_whilewhile
Petlje omogućuju ponavljanje izvođenja Petlje omogućuju ponavljanje izvođenja jedne ili više linija programskog kodajedne ili više linija programskog koda
![Page 142: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/142.jpg)
PETLJE 142
nene
4.1. Petlja s eksplicitnim brojačem4.1. Petlja s eksplicitnim brojačem: : forfor
formatfor for ((inicijalizacijainicijalizacija; uvjet; izraz_prirasta); uvjet; izraz_prirasta) // blok_naredbi // blok_naredbi
koristi se za ponavljanje izraza unutar petlje točno koristi se za ponavljanje izraza unutar petlje točno određeni broj putaodređeni broj puta
inicijalizacija kontrolne varijable
blok naredbi
promjena vrijednosti kontrolne varijable
promjena vrijednosti kontrolne varijable
uvjet
prekidprekidponavljanjaponavljanja
dada
![Page 143: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/143.jpg)
PETLJE 143
Primjer jednostavne for petlje
Primjer#include <stdio.h>int brojac;main(){ /* Program broji do 20 i ispisuje brojeve */ for (brojac = 1; brojac <= 20; brojac ++) printf("\n%d", brojac );}
brojac = 1
ispis
brojac = brojac + 1
brojac <= 20
prekidprekidponavljanjaponavljanja
dada
nene
![Page 144: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/144.jpg)
PETLJE 144
• Što će ispisati sljedeća petlja?void main() void main()
{{
for (int i=1; i<5; i++); printf('' %d\n'',i);for (int i=1; i<5; i++); printf('' %d\n'',i);
}}
![Page 145: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/145.jpg)
PETLJE 145
#include <stdio.h>#include <stdio.h>void void main()main(){{
int i,n, suma=0;int i,n, suma=0;printf("\n Unesi jedan pozitivni cijeli broj:");printf("\n Unesi jedan pozitivni cijeli broj:");
scanf("%d",&n);scanf("%d",&n);for( i = 1; i <= n; i++ )for( i = 1; i <= n; i++ )
{suma += i;}{suma += i;} printf("\n printf("\n Zbroj brojeva od 1 doZbroj brojeva od 1 do %d %d iznosiiznosi %d.\n",n,%d.\n",n,
suma)suma);;printf("\n printf("\n ProsjekProsjek brojeva od 1 do brojeva od 1 do %d %d iznosiiznosi %%.2f.2f.\n",n,.\n",n,
(float) (float) sumasuma/n/n));;}}
PRIMJER:PRIMJER: Program ispisuje sumu prvi Program ispisuje sumu prvi nn prirodnih prirodnih brojeva.brojeva.
![Page 146: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/146.jpg)
PETLJE 146
#include <stdio.h>#include <stdio.h>void void main()main(){{
int i,n, int i,n, broj,broj,suma=0;suma=0;printf("\n Unesi jedan pozitivni cijeli broj:");printf("\n Unesi jedan pozitivni cijeli broj:");
scanf("%d",&n);scanf("%d",&n);for( i = 1; i <= n; i++ )for( i = 1; i <= n; i++ )
{{scanf(“%d”,&broj) ;scanf(“%d”,&broj) ;if (broj<1 || broj>100) scanf(“%d”,&broj);if (broj<1 || broj>100) scanf(“%d”,&broj);suma += suma += brojbroj;};} printf("\n printf("\n Zbroj brojeva iznosiZbroj brojeva iznosi %d.\n",%d.\n", suma)suma);;printf("\n printf("\n ProsjekProsjek brojeva iznosi brojeva iznosi %%.2f.2f.\n",.\n", (float) (float) sumasuma/n/n));;}}
PRIMJER:PRIMJER: Program ispisuje sumu prvi Program ispisuje sumu prvi nn prirodnih prirodnih brojeva.brojeva.
![Page 147: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/147.jpg)
PETLJE 147
PRIMJER:PRIMJER: Ovaj program računa faktorijelu unesenog Ovaj program računa faktorijelu unesenog broja n. Faktorijel je umnožak svih brojeva od 1 do n:broja n. Faktorijel je umnožak svih brojeva od 1 do n:
n! =1 · 2 · 3 · 4 · ... · ( n – 2 ) · ( n – 1 ) · nn! =1 · 2 · 3 · 4 · ... · ( n – 2 ) · ( n – 1 ) · n
• Rješenje s programskom petljom s poznatim brojem ponavljanja
• Pseudokoduuččitaj (n)itaj (n)fakt:=1fakt:=1za i=1 do nza i=1 do n
fakt:=fakt*ifakt:=fakt*i
ispiši (n,faktispiši (n,fakt)
![Page 148: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/148.jpg)
PETLJE 148
Program za izračunavanje N faktorijelarješenje u C-u
#include <stdio.h>#include <stdio.h>voidvoid main()main(){{
int i=2, n;int i=2, n;intint fak=1; fak=1;printf(" Unesi prirodan broj : "); printf(" Unesi prirodan broj : "); // manji od 170 !?// manji od 170 !?scanf("%d",scanf("%d", &n);&n);
for (i;i<=n; i++)for (i;i<=n; i++){fak *=i ;}{fak *=i ;}
printf("\n\n printf("\n\n Faktorijela od %d je %Faktorijela od %d je %dd.\.\n",n,fak);n",n,fak);}}
![Page 149: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/149.jpg)
PETLJE 149
PRIMJER: PRIMJER: ISPIS ZNAKOVAISPIS ZNAKOVA
#include<stdio.h>
int main()
{
char slovo;
for( slovo = 'A'; slovo <= 'Z'; slovo++ ) { printf("%c ", slovo);} return 0;
}
![Page 150: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/150.jpg)
PETLJE 150
• U C++ i deklaracija varijabli može se izvesti u samoj petlji. U našem primjeru to bi izgledalo ovako:
#include <stdio.h>main(){ int zbroj = 0;
for(int brojac = 1; brojac <= 10; zbroj += brojac, brojac++ );
printf("Zbroj = %d\n", zbroj );return 0;}
![Page 151: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/151.jpg)
PETLJE 151
Ugniježđena Ugniježđena ForFor petlja petlja
##includeinclude < <stdiostdio..hh>>mainmain()(){ {
int i,j;int i,j;for(i=1;i<10;i++)for(i=1;i<10;i++)
{{for(j=1;j<10;j++)for(j=1;j<10;j++)
printf("%3d",i*j);printf("%3d",i*j);printf("\n");printf("\n");
}}}}
![Page 152: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/152.jpg)
PETLJE 152
4.2. Petlja s izlazom na vrhu4.2. Petlja s izlazom na vrhu: : whilewhile
uvjetuvjet
formatwhile (uvjet_izvođenja) naredba;
Blok naredbi
PrekidPrekidponavljanjaponavljanja
dada
nene
iliwhile (uvjet_izvođenja) { blok_naredbi; }
NNaredba aredba ćće se izvre se izvrššavati sve dok izraz ima avati sve dok izraz ima vrijednost istinevrijednost istine (razli(različčit od nule)it od nule)
![Page 153: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/153.jpg)
PETLJE 153
wwhilehile petlja petlja
a != 0
a = 5 primjerint a = 5;int b;while (a != 0){ printf("\n Unesi cijeli broj b:"); scanf("%d",&b); a = a - b; }
a = a -b
učitaj:b (a = 0)(a = 0)
PrekidPrekidponavljanjaponavljanja
dada
nene
![Page 154: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/154.jpg)
PETLJE 154
wwhilehile petlja petlja
• Kolika je vrijednost varijable a i b Kolika je vrijednost varijable a i b nakon izvršenog blok naredbi?nakon izvršenog blok naredbi?
void main()void main(){{int a=25,b=0,c=4;int a=25,b=0,c=4;while (a>b)while (a>b){{ a-=c;a-=c;
b++;b++;}}printf("\n a=%d\tb=%d,,,\n",a,b);printf("\n a=%d\tb=%d,,,\n",a,b);
}}
![Page 155: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/155.jpg)
PETLJE 155
Primjer programa s petljom while
#include <stdio.h>void main(){
int brojac = 0; while( brojac <= 10 )
{ printf("%d\n",brojac); ++brojac; } }
![Page 156: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/156.jpg)
PETLJE 156
Primjer: Primjer: Suma svih parnih brojeva od 1 do n.Suma svih parnih brojeva od 1 do n.
/*/*Suma svih parnih brojeva od 1 do n*/Suma svih parnih brojeva od 1 do n*/#include#include <stdio.h> <stdio.h>voidvoid main()main(){{
int int n, in, i , suma=0, suma=0; ; i=1;i=1;
printf("\n Unesite vrijednost za n!");printf("\n Unesite vrijednost za n!");scanf("%d", &n);scanf("%d", &n);
while( while( ii <= <= nn ) ) { { if( i%2==0 )if( i%2==0 )
suma+=i;suma+=i; ii++; } ++; } printf("\n printf("\n Suma svih parnih brojeva od 1 do %d iznosiSuma svih parnih brojeva od 1 do %d iznosi %d\ %d\
nn", n,", n, suma);suma); }}
![Page 157: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/157.jpg)
PETLJE 157
Primjer: izraPrimjer: izraččunati prosjek nepoznatog broja unati prosjek nepoznatog broja pozitivnihpozitivnih cijelih brojeva (brojevi se ucijelih brojeva (brojevi se uččitavaju dok se itavaju dok se ne unese 0ne unese 0))..
#include <stdio.h>#include <stdio.h>void main () void main () {{ int suma, broj, n;int suma, broj, n;
suma=0; n=0;suma=0; n=0;printf(“Unesi broj”);printf(“Unesi broj”);scanf(“d%”,&broj);scanf(“d%”,&broj); /* inicijalno /* inicijalno sstanje */tanje */while (broj!=0)while (broj!=0) {{ if (broj>0) if (broj>0)
{{ suma +=broj;suma +=broj; ++n;++n; }}
scanf(“d%”,&broj); scanf(“d%”,&broj); /* sva ostala /* sva ostala ččitanja */itanja */
}}if (n>0) printf(“Prosjek = %f\n”, float suma/n);if (n>0) printf(“Prosjek = %f\n”, float suma/n);}}
![Page 158: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/158.jpg)
PETLJE 158
4.3. Petlja s izlazom na dnu4.3. Petlja s izlazom na dnu: : do_whiledo_while
formatdo{ blok_naredbi;} while (uvjet_izvođenja);
PrekidPrekidponavljanjaponavljanja
uvjetuvjet
Blok naredbi
dada
neneNNaredba aredba ćće se izvre se izvrššavati avati
sve dok sve dok uvjetuvjet ima ima vrijednost istinevrijednost istine
ZaZa razliku od razliku od whilewhile petlje petlje vrijednost vrijednost uvjetauvjeta se se kontrolira na krajukontrolira na kraju prolaza prolaza kroz petljukroz petlju
![Page 159: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/159.jpg)
PETLJE 159
do_whiledo_while petlja petlja
a != 0
primjerint a = 5;int b;do{ printf("\n Unesi cijeli broj b:"); scanf("%d",&b); a = a - b; }while (a != 0);
a = a -b
učitaj:b
(a = 0)(a = 0)
prekidprekidponavljanjaponavljanja
dada
nene
![Page 160: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/160.jpg)
PETLJE 160
Primjer
• Sljedeći program ispisuje broj, koji unese korisnik, od kraja. To čini koristeći ostatak dijeljenja ( % operator ) da bi krajnje desnu znamenku upisao u varijablu d_znamenka.
• Početni broj se zatim dijeli sa 10, i operacija se ponavlja dok broj ne postane jednak 0.
![Page 161: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/161.jpg)
PETLJE 161
#include <stdio.h>void main(){ int broj, d_znamenka; printf("Unesite broj koji će se ispisati od kraja.\n");
scanf("%d", &broj); do
{ d_znamenka = broj % 10;
printf("%d", d_znamenka); broj = broj / 10; }
while( broj != 0 ); printf("\n"); }
![Page 162: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/162.jpg)
PETLJE 162
Uz pomoć do while petlje ispisati brojeve veće od 500 i manjih 700 koji su djeljivi sa 17. Ispisati koliko ima takvih brojeva. #include <stdio.h>void main(){int n,i; n=500; i=0; do {n++; if(n%17==0) {i++; printf(" %d-ti broj je %d \n",i,n); }} while(n<700);printf("\n Ukupno je takvih brojeva %d\n", i); }
![Page 163: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/163.jpg)
PETLJE 163
BBeskonačna peljaeskonačna pelja
• Ukoliko je u stukturi petlje uvjet za ponavljanje petlje uvijek istinit, dobije se beskonačna pelja
for(int brojac = 1;;brojac++ ); for(int brojac = 1;;brojac++ );
for(int brojac = 1; brojac <= 10; );for(int brojac = 1; brojac <= 10; );
for(int brojac = 1; brojac <= 10; for(int brojac = 1; brojac <= 10; brojac--,brojac++ );brojac--,brojac++ );
![Page 164: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/164.jpg)
PETLJE 164
5. Kontrola toka programa Kontrola toka programa Skokovi u programuSkokovi u programu
• Naredba BreakNaredba Break• Naredba ContinueNaredba Continue• Naredba GoToNaredba GoTo
![Page 165: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/165.jpg)
PETLJE 165
Naredbe skokaNaredbe skoka
• Bezuvjetni skok• Uvjetni skok
– Pomoću ovih naredbi se može eksplicitno zadati da se izvršenje programa nastavi naredbom koja je označena nekim imenom
![Page 166: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/166.jpg)
PETLJE 166
Prijevremeni prekid ponavljanja: break
Primjerint a;do { printf("Unesi broj"); scanf ("%d",&a); if (a==5)
break; //prekida petlju printf("\n%d",a);}while (a!=0);
Učitaj: a
ispis: a
a= =5
a!=0
prijevremenprijevremenii
prekidprekidponavljanjaponavljanja
ddaa
ddaa
nnee
nnee
regularniregularniprekidprekid
ponavljanjaponavljanja
Rezultat izvođenja1.primjer: 2.primjer:a=2 a=2a=2 a=2a=3 a=5a=3 <prijevremenia=0 prekid><regularni prekid>
*
ZadatakProgram opetovano učitava varijablu a.
Regularni prekid petlje: (a==0). Prijevremeni prekid petlje: (a= =5).
![Page 167: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/167.jpg)
PETLJE 167
Program koristi Program koristi breakbreak naredbu u naredbu u beskonačnoj pelji, koja ispisuje sve brojeve beskonačnoj pelji, koja ispisuje sve brojeve od 0 do 10 i prekida se kad se unese broj 5od 0 do 10 i prekida se kad se unese broj 5
#include <stdio.h>void main(){ int brojac = 0; while( brojac <= 10 ) {
printf("%d\n", brojac); if( brojac==5) break;
++brojac; }}
![Page 168: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/168.jpg)
PETLJE 168
Skok na kraj petlje: continue
Primjerint a;do { printf("Unesi broj a "); scanf ("%d",&a); if (a<=0)
continue; //preskok ispisa printf("\n%d",a);}while (a<=100);
Učitaj: a
ispis: a
a<=0
a<=100
dada
dada
nene
prekidprekidponavljanjaponavljanja
Rezultat izvođenja1.primjer: 2.primjer:a=2 <unos> a=2 <unos>a=2 <ispis> a=2 <ispis>a=0 <unos> a=5 <unos><preskok ispisa> a=5 <ispis>a=101 <unos> a=101 <unos>a=101 <ispis> a=101 <ispis><prekid> <prekid>
ZadatakProgram opetovano učitava varijablu a. Prekid
ponavljanja: (a>100). Preskok akcije:a negativno ili nula.
nene
![Page 169: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/169.jpg)
PETLJE 169
Ako želimo da se u našem programu ispišu svi brojevi od 0 do 10 osim broja 5, tada ćemo while
petlju modificirati na slijedeći način:
##includeinclude <stdio.h> <stdio.h>
voidvoid main() main()
{ {
int brojac = -1;int brojac = -1;
while( brojac < 10)while( brojac < 10)
{ ++brojac;{ ++brojac;
if( brojac==5) if( brojac==5) continue;continue;
printf("%d\n", brojac); }printf("%d\n", brojac); }
}}
![Page 170: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/170.jpg)
PETLJE 170
Naredba goto
• Naredba goto omogućava bezuvjetni skok na neku drugu naredbu unutar iste funkcije
•
• Opći oblik je:
goto oznaka_programske_linije;
• NIJE POŽELJNO KORISITITI
![Page 171: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/171.jpg)
PETLJE 171
Razmatrat ćemo slučaj kada korisnik upisuje neku vrijednost, a onda se provjerava pripada li ona zadanom rasponu, npr. između 1 i 100
Sve dok uvjet nije zadovoljen unos i provjera se ponavlja
![Page 172: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/172.jpg)
PETLJE 172
#include <stdio.h> void main() {
int broj; {
unos: printf("Unesite broj izmedju 1 i 100\n\n"); scanf("%d", &broj ); if( (broj <1) (broj>100))
{ printf("Broj je izvan zadanog raspona\n\
n"); goto unos;
} printf("Broj je %d\n", broj ); }}
![Page 173: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/173.jpg)
PETLJE 173
Program provjerava je li znak kojeg upisuje korisnik između A-Z. #include#include <stdio.h> <stdio.h> voidvoid main() main(){{ charchar znak; znak;
intint uvjet = 0; uvjet = 0;whilewhile(!uvjet)(!uvjet)
{{ printf("Unesite znak A-Z\n");printf("Unesite znak A-Z\n");
scanf(" %c", &znak);scanf(" %c", &znak); ifif((znak >= 'A') && (znak <='Z'))((znak >= 'A') && (znak <='Z'))
uvjet = 1;uvjet = 1; elseelse
printf("Znak je izvan dozvoljenog printf("Znak je izvan dozvoljenog raspona\n");raspona\n");
}} printf("Upisani znak je %c\n", znak);printf("Upisani znak je %c\n", znak);} }
![Page 174: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/174.jpg)
PETLJE 174
Izračunavanje broja dana; obično rješenjeIzračunavanje broja dana; obično rješenje
#include<iostream.h>
int main () {
int Sij,Velj,Ozu,Tra,Svi,Lip; int Srp,Kol,Ruj,Lis,Stu,Pro,DD,MM,GG,i;
Sij=Ozu=Svi=Srp=Kol=Lis=Pro=31; Tra=Lip=Ruj=Stu=30;
do{
int Velj=28;
cout<<“unesi godinu(GG): “;cin>> GG;cout<<“ unesi mjesec(MM): “;cin>> MM;cout<<“ unesi dan(DD): “;cin>> DD;cout<<endl;
if (GG%4)==0Velj=29;
int Suma=0;
deklaracija
početak
inicijalizacija
ponavljanje
veljača!
učitavanje
prestupnagodina
suma dana!
![Page 175: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/175.jpg)
PETLJE 175
Izračunavanje broja dana; switch-rješenjeIzračunavanje broja dana; switch-rješenje
include<iostream.h>int main {
//deklaracija mjeseci//inicijalizacija mjesecido {
//učitavanje datuma//prestupna godinaint Suma=0;switch (MM) {
case 12:Suma=Suma+Stu;
case 11:Suma=Suma+Lis;
case 10:Suma=Suma+Ruj;
case 9:Suma=Suma+Kol;
case 8:Suma=Suma+Srp;
case 7:Suma=Suma+Lip;
case 6:Suma=Suma+Svi;
case 5:Suma=Suma+Tra;
![Page 176: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/176.jpg)
PETLJE 176
Rješenje br. 2Rješenje br. 2
case 4:Suma=Suma+Ozu;
case 3:Suma=Suma+Velj;
case 2:Suma=Suma+Sij;
case 1:Suma=Suma+DD;
}//ispis//indikacija kraja
} while (i==1);return 0;
}
![Page 177: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/177.jpg)
PETLJE 177
1.1. Definirati varijable (brojac, x, broj poz., Definirati varijable (brojac, x, broj poz., broj neg., broj nula.)broj neg., broj nula.)
2.2. Upisati elementeUpisati elemente
3.3. Ispitati elemente pomoću IF naredbeIspitati elemente pomoću IF naredbe
4.4. Prebrojati broj pozitivnih, negativnih i Prebrojati broj pozitivnih, negativnih i broj nulabroj nula
5.5. Ispisati rezultateIspisati rezultate
Algoritam
Zadajte 10 brojeva. Izračunate i ispiši Zadajte 10 brojeva. Izračunate i ispiši broj pozitivnih brojeva, broj negativnih broj pozitivnih brojeva, broj negativnih brojeva i broj pojavljivanja nulebrojeva i broj pojavljivanja nule..
![Page 178: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/178.jpg)
PETLJE 178
#include <stdio.h> void main(){int brojac;int x, brpoz=0, brneg=0, brnula=0;for (brojac=1; brojac<=10; brojac++){
printf ("Upisi brojeve :\n");scanf(“ %d\n ",&x);if(x>0)
brpoz=brpoz+1;else if(x<0)
brneg=brneg+1;else
brnula=brnula+1;}printf("Broj pozitivnih je %d,Broj negativnih je %d, Broj nula je %d\n",
brpoz, brneg, brnula);}
![Page 179: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/179.jpg)
PETLJE 179
#include <stdio.h>void main() { int min,redni,broj, n,i; printf(" Upišite broj n:\n"); scanf("%d",&n); printf(" \n Upišite broj :\n"); scanf("%d",&broj); min=broj; redni=1;
for (i=2;i<=n;i++) { printf(" Upišite broj :\n"); scanf("%d",&broj);
if (broj<min) { min=broj; redni=i;} }
printf("\nNajmanji broj je %d\n",min); printf("to je %d broj po redu\n",redni);}
Unijeti n brojeva i ispisati najmanji broj, kao i njegov redni Unijeti n brojeva i ispisati najmanji broj, kao i njegov redni broj.broj.
![Page 180: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/180.jpg)
Dodatak:
• Kontrola toka programa pomoću programskih petlji:
180
![Page 181: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/181.jpg)
• PROGRAMSKE PETLJE-Omogućavaju višestruka uvjetna ponavljanja blokova
naredbi.
-Programske petlje s ispitivanjem uvjeta na početku (for,while)
-Programske petlje s ispitivanjem uvjeta na kraju(do-while)
![Page 182: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/182.jpg)
• FOR PETLJAfor(izraz1; izraz2; izraz3)
{
blok naredbi;
}-Izvršavanje petlje teče u koracima:
1.Postavi kontrolnu varijablu petlje na početnu vrijednost (izraz1)
2.Ispitaj da li je uvjet ponavljanja bloka naredbi petlje zadovoljen (izraz2):
NE: završi petlju;
DA: izvrši blok naredbi;
: dodijeli kontrolnoj varijabli novu vrijednost (izraz3);
: idi na 2 korak;
-izraz1 – poč. stanje.
-izraz2 – uvjet koji mora biti zadovoljen za ponavljanje bloka naredbi.
-izraz3 – izraz koji mijenja vrijednost kontrolne varijable petlje.
![Page 183: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/183.jpg)
Ispis brojeva od 1 do 10 pomoću for petlje
int main()
{
int i;
for (i=1; i<=10; i++)
{
printf(“%d”,i);
}
}
![Page 184: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/184.jpg)
• WHILE PETLJAwhile(uvjet)
{
blok naredbi;
}
-Blok naredbi u petlji se ponavlja sve dok je uvjet istinit (true), odnosno različit od nule. Kad uvjet postane lažan (false), odnosno jednak nuli, blok naredbi se neće izvršiti.
-Uvjet ponavljanja petlje se ispituje na početku petlje. To znači da blok naredbi ne mora biti izvršen niti jednom.
-I for i while petlja pripadaju istoj skupini petlji, što znači da se svaka for petlja može zamijeniti programskom petljom while.
Vrijedi i obrat.
![Page 185: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/185.jpg)
For petlja
for(izraz1;izraz2;izraz3)
{
blok naredbi;
}
Istovjetna je while petlji
izraz1;
while(izraz2)
{
blok naredbi;
izraz3;
}
![Page 186: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/186.jpg)
Ispis brojeva od 1 do 10 pomoću while petlje
int main()
{
int i=1;
while(i<=10)
{
printf(“%d”,i);
i++; //ako uklonimo ovu naredbu dobijemo beskonačnu petlju
}
}
![Page 187: Primjena računala ak.god. 2013/2014](https://reader035.fdocument.pub/reader035/viewer/2022062314/568148d7550346895db5f2b9/html5/thumbnails/187.jpg)
• DO WHILE PETLJAdo
{
blok naredbi;
} while(uvjet);-Izvršavanje petlje teče u koracima:
1.Izvrši blok naredbi.
2.Ispitaj da li je uvjet ponavljanja bloka naredbi petlje zadovoljen :
NE: završi petlju.
DA: idi na korak 1.
-Blok naredbi se mora izvršiti barem jednom.