Professional Documents
Culture Documents
Principi Programiranja2
Principi Programiranja2
as II
Tip podataka float
Osnovno o algoritmima
FLOAT
Realni brojevi u pokretnom zarezu (nazivaju se float ili real)
zauzimaju 4 ili 8 bajtova memorije raunara (za nas manje bitno).
Primjer kod 4-bajtnog (32-bitnog) zapisa:
prvi bit je predznak
0 pozitivan broj
1 negativan
23 bita za zapis osnovice realnog broja 8 bita za zapis eksponenta
npr. 234 10
6
Domen i operacije kod float-a
Iz datog naina zapisa slijede i ogranienja u pogledu
najmanjeg i najveeg broja koji se moe zapisati
pomou float-a, kao i preciznosti koju float moe da
tretira (oigledno, broj t ne moe da se zapie
beskonano precizno).
A=B+C gdje su A, B i C float-i se obavlja na isti nain
kao to je bilo opisano za cijele brojeve, ali sa tom
razlikom to se za privremene promjenljive u
registrima ostavlja prostor i tumae na nain
pogodan za float.
Domen i operacije kod float-a
A=B+C gdje su A i C float, a B cijeli broj se obavlja na
sljedei nain:
kompajler vidi da se sabiraju razliiti tipovi podataka, uoava se
da je za smjetaj float-a potrebno vie prostora;
za operande operacije sabiranja u registrima procesora se
zauzme prostor kao da je u pitanju sabiranje float-a;
to znai da se prilikom presipanja B iz memorije u registre B
konvertuje u float;
ovo se naziva implicitnom konverzijom;
zatim se operacija obavi kao za float;
opisana operacija nema efekta na promjenljivu B u memoriji,
ve samo na privremenu promjenljivu (kojoj se ne moe
pristupiti iz programa) u registrima.
Domen i operacije kod float-a
A=B+C, gdje su B i C float-i, a A cijeli broj:
obavlja se operacija kao kod floata i rezultat (privremena
promjenljiva) smjesti u registre procesora kao float;
sada rezultat treba presuti iz registara procesora u
memorijsku lokaciju za promjenljivu A;
kako je A cijeli broj dolazi do odsjecanja necjelobrojnog
dijela.
Na primjer, A=2.3+4.1 rezultuje u ovom sluaju u A=6.
A=B+C gdje su B i C cijeli, a A float:
Operacija se obavi kao za cijele, a zatim dobijeni rezultat
prebaci u promjenljivu koja je float.
Domen i operacije kod float-a
Na primjer, A=B/C gdje su B i C cijeli brojevi B=4 i
C=3 daje A=1 bez obzira da li je u pitanju float ili
cijeli broj.
Isto to daje operacija na konstantama: A=4/3.
Operacija A=4.0/3.0 daje: A=1.333....338 ako je A
float
decimalni zarez u
programiranju
12 trojki i 13.-ta osmica ako je float sa 4 bajta
memorije (slino i kod 8-bajtog zapisa float-a)
Zbog ogranienja u memoriji operacije sa floatima daju greku koja je
kod 4-bajtnog zapisa reda veliine 1 10
-13
po operaciji. Za mali broj
operacija greka je relativno mala, a recimo za 1 10
12
operacija greka je
reda veliine broj_operacija x greka_za_operaciju=1 10
-1
, odnosno ne
moe se uzeti kao pouzdana ak ni na prvu decimalu.
Operacije kod floata i zapis konstanti
Float se moe primjenljivati u svim relacijama poreenja
sa pravilima kao u matematici.
Dozvoljeni zapisi konstanti tipa float su:
1, -134, 23 kao cijeli broj, ali ako ce cijeli broj pridruuje float-u
A=-134;
1.0, 2.34, -0.35, .34 ak i za cijeli broj se moe koristiti taka da
bi naglasila da je u pitanju float ako je to potrebno; ako broj
pone sa . to podrazumjeva da je nula ispred;
1e6, 1e-12 3.456e-3 ovo je tzv. eksponencijalni zapis gdje eb
oznaava 10
b
; tako je 3.456 10
-3
.
Implicitna i eksplicitna konverzija
Ako promjenljive razliitih tipova podataka uestvuju
u operacijama i raunar jednu promjenljivu prebaci u
vii tip podatka (tip podatka koji zauzima veu
memoriju u registru) da bi izvrio odgovarajuu
operaciju nad usklaenim operandima to se naziva
implicitnom konverzijom.
Korisnik moe da izvri eksplicitnu konverziju (ovo se
preporuuje) kojom se podeava u kakvom e se
obliku pojaviti promjenljive u pojedinim operacijama.
Npr. INT2FLOAT(I)+B i FLOAT2INT(F)+A
konvertuj cijeli broj u float
konvertuj float u cijeli broj
Napomena!!!
Neki programski jezici e odraditi operaciju A=B/C
ako je A float kao da je operacija sa float-ima bez
obzira to je na lijevoj strani.
Ovo obino rade matematiki paket (npr. MATLAB i
MATHEMATICA) koji su namjenjeni za matematika
izraunavanja, a ne klasini vii programski jezici.
Mi emo ovu problematiku tretirati kao kod viih
programskih jezika.
Algoritamski koraci
Mi emo podrazumjevati sljedee algoritamske korake:
Alokaciju promjenljivih (zauzimanje memorijskog prostora za
promjenljive);
Unos podataka;
Sekvencu;
Selekciju;
Ciklus;
Izlaz podataka;
Smatraemo da se dealokacija (brisanje promjenljivih) obavlja
automatski od strane kompajlera);
Program moe da ima izostavljen neki od predmetnih koraka ili vie
pojedinih koraka;
Program moe pozivati potprograme;
Program ima poetak i kraj.
Poetak i kraj
Oznake
Start
End
Pseudo kod
Svaki algoritamski korak emo predstavljati
grafikom oznakom i pseudo kodom koji je
razliit od bilo kog programskog jezika, a opet
veoma slian kodu tzv. paskaloidnih jezika u
koje spadaju svi jezici koji se ue na VR.
Poetak programa neemo predstavljati pseudo
kodom, dok e oznaka za kraj biti END.
Alokacija promjenljivih
Oznaka
A: FLOAT
B: INTEGER
C: CHAR
D: LOGICAL
Strelica stie od starta programa
Dozvoljeni naziv promjenljive praen dvotakom
i nazivom tipa te promjenljive.
Ovaj se korak mora obaviti prije bilo koje druge naredbe.
U okviru pseudo koda se moe navesti na isti nain kao ovdje bez
isprekidanih linija okolo.
UNOS I IZLAZ U PROGRAM
Korisniki ili na neki drugi nain moraju biti zadate
vrijednosti promjenljivih nad kojima se vre
operacije. Ovaj dio se naziva unos podataka. Rezultat
programa se prikazuje ili na neki pogodan nain
koristi. Taj dio se naziva izlazom podataka.
Oznake
N,A
Ulaz
X1,C
Izlaz
Pseudokod
Input N,A
Output X1,C
SEKVENCA
Oznaka Pseudo kod
X=2
X=2 Pojedinana naredba
X=A+B
Y=X*X
Z=Y-2
Niz naredbi.
Strelice ukazuju na redosljed
izvravanja. Ako se izostave
podrazumjeva se odozgo na
dolje u programu.
X=A+B
Y=X*X
Z=Y-2
Selekcija
Oznaka
X>0
Y=X
Da
Ne
Tumaenje
Ako je X vee od nule
postavi vrijednost Y na
vrijednost X. Ako nije
ne ini nita.
Pseudo kod
IF(X>0)
Y=X
ENDIF
Selekcija Apsolutna vrijednost
Primjer raunanja apsolutne vrijednosti broja.
Apsolutna vrijednost (oznaka |X|) je jednaka samom
broju X ako je vei ili jednak od nule, a X ako je
manji od nule.
Matematiki se ovo moe oznaiti kao:
, ako je 0,
| |
, u ostalim slucajevima.
X X
X
X
>
Selekcija - Primjer
START
X:FLOAT
Y:FLOAT
X>0
Y=X
X
Y=-X
Y
END
DA
NE
Pseudo kod
X:FLOAT
Y:FLOAT
INPUT X
IF X>0
Y=X
ELSE
Y= - X
ENDIF
OUTPUT Y
END
Sloena selekcija
2
4
2 4
4 0 ili 1
drugdje
X X
X X
Y
X X
X
>
< s
= =