Professional Documents
Culture Documents
Literatura
Vjebe - bodovanje
ukupno se moe dobiti 250 bodova 100 na labosima, 150 na
pismenom ispitu
100/4 = 25 bodova na svakom ispitivanju na labosima
ukupno 12 tjedana, 4 bloka po 2 ucenje + 1 ispitivanje
uvjet za potpis = minimalno 9 od 12 prisutnosti na labosima
nadoknada nema, osim za studente koji iz OPRAVDANIH
RAZLOGA ne budu
mogao prisustvovati 1 ispitnoj vjebi
vjebe se mogu odraivati iskljuivo u vlastitim terminima
Sadraj
Prvi program
#include <stdio.h>
void main()
poetak funkcije
{
printf(Dobar dan \n ");
}
kraj funkcije
naredba predprocesoru
glavna funkcija
funkcija za ispis
Elementi C-programa
definicija 2
varijable x i y
funkcija za itanje
sa ulaza
funkcija za ispis
glavna funkcija
Varijable
svi podaci moraju imati imena i tip
tip podataka je oznaka prevodiocu koliko
memorijskog prostora je potrebno za zapis
vrijednosti neke varijable
npr. deklaracija varijable a kao cijeli broj
int a znai da je prevodioc rezervirao 4
bajta memorije za zapis varijable
Varijable
...
...
P
31
mantis a < 1
KARAKTERISTIKA
EKSPONENT
30
msb
22 21
lsb msb
MANTISA
0
lsb
IEEE standard
jednostruka preciznost 32 bita
dvostruka preciznost 64 bita
decimalna toka iza prve jedinice
k-1
eksponent pomaknut za 2 -1 za k-bitni eksponent
63
62
p
0=+
1=-
52
k
11 bitni eksponent
s pomakom 1023
51
m
52 bitna mantisa
naredbe pretprocesora
deklaracija tipova podataka
deklaracija varijabli
prototipovi funkcija deklaracija tipova
funkcija i varijabli koje se unose u funkciju
definicija funkcija
Elementi jezika C
kljune rijei programskog jezika C sadre
definicje tipova podataka i naredbe programskog
jezika:
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Operatori
*/%
+< <= >= >
== !=
&
|
&&
||
?: (right->left)
= += -= (right->left)
Primjer funkcije
1:
2:
3:
4:
5:
6:
7:
Instukcije programa
instrukcije za aritmetike i logike
operacije
instrukcije za odreivanje toka programa
instrukcije za ponavljanje dijelova
programa
instrukcije za ulaz i izlaz podataka
Instrukcije za aritmetike i
logike operacije
operator pridruivanja =
operator jednakost == nejednakost !=
aritmetiki operatori:
*
/
%
+-
Instrukcije za odreivanje
toka programa
Normalan programski slijed:
instrukcija_1
instrukcija_1
instrukcija_2
instrukcija_2
instrukcija_3
...
instrukcija_3
Kontrolna instrukcija if
- jednostrana selekcija
Pseudokd
ako je logiki_izraz tada
naredbe
U C-u
if (logiki_izraz){
niz instrukcija
}
logiki_izraz
D
niz naredbi
Kontrolna instrukcija if
- dvostrana selekcija
Pseudokd
ako je logiki_izraz tada
niz_naredbi_1
inae
niz_naredbi_2
U C-u
if (logiki_izraz){
niz_naredbi_1
} else {
niz_naredbi_2
}
logiki_izraz
niz naredbi_1
niz naredbi_2
Instrukcije za ponavljanje
dijelova programa
petlje
kontrolne varijable za izvoenje iteracija
(unaprijed zadan)
logiki izrazi (ispitivanje uvjeta), koji
odreuju broj iteracija
Primjer
program ispisuje tablicu za pretvaranje stupnjeva u fahrenheitima u celsijuse prema formuli
C = (5/9)( F-32)
ispis programa:
0.0 -17.8
20.0 -6.7
40.0 4.4
60.0 15.6
80.0 26.7
100.0 37.8
120.0 48.9
140.0 60.0
160.0 71.1
180.0 82.2
200.0 93.3
220.0 104.4
240.0 115.6
260.0 126.7
280.0 137.8
300.0 148.9
Primjer
#include <stdio.h>
main ()
Deklaracija varijabli
{
i njihovih tipova
float cel, faren;
int donji, gornji, korak;
donji = 0;
gornji = 300;
korak = 20;
faren = donji;
while (faren <= gornji)
{
petlja while
cel = (5.0/9.0)*(faren-32.0);
printf("%5.1f%8.1f\n",faren,cel);
faren = faren+20;
}
}
Petlja while
while(logiki_izraz)
{
naredba_1;
naredba_2;
.
.
.
}
naredbe unutar zagrada e se izvravati sve dok je
logiki_izraz istinit (logiki_izraz > 0)
Naredbe za ponavljanja
while petlja
while (faren <= gornji)
{
cel = (5.0/9.0)*(faren-32.0);
printf("%5.1f%8.1f\n",faren,cel);
faren = faren+20;
}
for petlja
for (faren=0; faren<= 300; faren=faren+20)
printf("%5.1f%8.1f\n",faren,(5.0/9.0)*(faren-32.0));
Naredbe za ponavljanja
for petlja
for(izraz_1;izraz_2;izraz_3)
{
naredba_1;
naredba_2:
.
.
.
}
while petlja
while (uvjet)
{
naredba_1;
naredba_2:
.
.
.
}
Primjer
#include <stdio.h>
#define DONJI 0
#define GORNJI 300
#define KORAK 20
main ()
{
float faren;
printf(" F\t C\n");
for (faren=DONJI; faren<= GORNJI; faren=faren+KORAK)
printf("%5.1f\t%8.1f\n",faren,(5.0/9.0)*(faren-32.0));
}
Funcija za ispis
printf(const char *format [, argument]... )
printf(Dobar dan \n ");
printf("%f \n", rez);
printf("%5.1f\t%8.1f\n",faren,(5.0/9.0)*(fare
n-32.0));
Ispis programa
F
C
0.0 -17.8
20.0 -6.7
40.0 4.4
60.0 15.6
80.0 26.7
100.0 37.8
120.0 48.9
140.0 60.0
160.0 71.1
180.0 82.2
200.0 93.3
220.0 104.4
240.0 115.6
260.0 126.7
280.0 137.8
300.0 148.9
x1=
-b-D
x2= 2a
-b+D
2a
Struktogram
unesi vrijednosti a,b,c
izraunaj D = b2 4ac
D>0 ?
da
ne
da
D=0 ?
ne
kraj programa
#include <stdio.h>
#include <math.h>
main()
{
float a, b, c; /* parametri jednadzbe */
float dis;
/* diskriminanta
*/
/* inicijalizacija i citanje parametara */
printf("a=");
scanf("%f", &a);
printf("b=");
scanf("%f", &b);
printf("c=");
scanf("%f", &c);
/*
izracun diskriminante
*/
dis= b*b-4*a*c;
/*
izracun korijena
*/
if (dis == 0)
/* dvostruki korijen
*/
printf(" rjesenje - dvostruki korijen = %f\n", -b/(2.0*a));
else if (dis>0){
/* realni razliciti korijeni
*/
printf("1. korijen = %f\n", (sqrt(dis)-b)/(2.0*a));
printf("2. korijen = %f\n", (-sqrt(dis)-b)/(2.0*a));
}
else
/* nema realnih korijena
*/
scanf("%f", &a);
varijabla a tipa float
operator &
&a = adresa varijable a
PRIMJER
#include <stdio.h>
void main() {
float x, y, rez;
scanf("%f %f ", &x, &y);
printf("%f %f \n", x, y);
/* odredi najvei broj */
if ( x > y ) {
rez = x;
} else {
rez = y;
}
printf("%f \n", rez);
}
Prevoenje programa
programe napisane u nekom
programskom jeziku je potrebno prevesti u
strojni kod
interpreter
prevodioc (compiler)
Prevoenje programa
Z :=A + B;
MVT 1024
ADD 1025
MVF 1026
1110011001100000
1100011000001100
0111100001111001
Prevoenje programa
Prevodioc (Compiler)