Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
Programiranje 2 (550)
Tipovi podataka 1
Programiranje 2
Tipovi podataka
Programiranje 2 2
Sadržaj� Tipovi podataka
� Znak� Cijeli broj� Realni brojevi
� Ispis varijabli� Formatiranje ispisa
Programiranje 2 (550)
Tipovi podataka 2
Programiranje 2 3
Tipovi podataka� Tip podataka označava način kodiranja i operacije koje je
dozvoljeno primijeniti na programske varijable, pohranjene u memoriji računala.
� Deklaracija varijable – dodjela tipa podataka varijabli.� Definicija varijable – rezerviranje memorije za varijablu.� Položaj varijable u memoriji se naziva adresa ili
memorijska referenca varijable.� Postoje 4 osnovna tipa podataka u C-u:
� znak – char� cijeli broj – integer� realni broj s pomičnim zarezom – floating point� realni brojevi s eksponentom - double
Programiranje 2 4
Znak � Znak tip podataka se odnosi na pojedinačne znakove.� Ključna riječ za definiranje znaka je char.
� Znak se obavezno navodi u jednostrukim navodnicima ili ASCII vrijednost.
� Primjer:� char a = ‘A’;� char a = 65;
Oznaka Interval vrijednosti Zauz. mem.
char -127 .. 1280 .. 255 1 byte
Programiranje 2 (550)
Tipovi podataka 3
Programiranje 2 5
ASCII vrijednosti � American Standard Code for Information Interchange
– ASCII� 7 bitni kod ( ukupno 128 različitih znakova) koji se
koristi za kodiranje slova, znamenki i ostalih tzv. kontrolnih znakova.� Prva 32 znaka su kontrolni znakovi različitih
namjena.� Preostali znakovi predstavljaju slova abecede (velika
i mala), pravopisne i matematičke simbole.� U Hrvatskoj se koristi modifikacija ASCII
standarda.
Programiranje 2 6
ASCII tablica
Programiranje 2 (550)
Tipovi podataka 4
Programiranje 2 7
IBM EBCDIC � EBCDIC (Extended Binary Code Decimal Interchange
Code)� 8 bitni kod (256 znakova)
� Prvih 128 znakova identično ASCII standardu.� Ostali znakovi (>128) predstavljaju različite
grafičke i matematičke simbole, te slova koja nisu obuhvaćena ASCII standardom.
� Npr. znakovi Č, Ć ,Ž, Š, ð, č, ć, ž, š, đ su obuhvaćeni EBCDIC-852 standardom (tzv. dos code page 852).
Programiranje 2 8
Modificirani ASCII i EBCDIC-852Modificirani ASCII za Hr EBCDIC - 852
dec hex ASCII HR dec hex EBCDIC-852
64 40 @ Ž 166 A6 Ž
91 5B [ Š 230 E6 Š
92 5C \ Đ 209 D1 Đ
93 5D ] Ć 172 AC Ć
94 5E ^ Č 143 8F Č
96 60 ´ Ž 167 A7 Ž
123 7B { Š 231 E7 Š
124 7C | Đ 208 D0 Đ
125 7D } Ć 134 86 Ć
126 7E ~ Č 159 9F Č
Programiranje 2 (550)
Tipovi podataka 5
Programiranje 2 9
Cijeli broj� U ovaj tip podataka spadaju pozitivni i negativni cijeli
brojevi.� Ključna riječ za definiranje cijelog broja je int� Opseg vrijednosti:
Oznaka Interval vrijednosti Zauz. mem.[signed] int[signed] short[signed] long
-2147483648 .. 2147483647-32768 .. 32767
-2147483648 .. 2147483647
4 bytea2 bytea4 bytea
unsigned [int]unsigned shortunsigned long
0 .. 4 294 967 2950 .. 65535
0 .. 4 294 967 295
4 bytea2 bytea4 bytea
Programiranje 2 10
Realni broj s pomičnim zarezom� Obuhvaćeni su i pozitivni i negativni realni brojevi.� Ključna riječ za definiranje realnog broja s pomičnim
zarezom je float.
� float varijabla se ispisuje na 6 decimalnih mjesta (NE odnosi se na preciznost broja nego na broj znamenki koje printf() ispisuje).
� Primjer:float broj = 3.5678;
Oznaka Interval vrijednosti Zauz. mem.
float min ± 1.175494351*10-38
max ± 3.402823466*1038 4 byte
Programiranje 2 (550)
Tipovi podataka 6
Programiranje 2 11
Realni brojevi s eksponentom� Obuhvaćeni su pozitivni i negativni eksponencijalni brojevi.� Ključna riječ koja se koristi za njihovu definiciju je
double.
� Primjer:double broj1 = 3.25E4; // broj1 = 3.25*104
double broj2 = 2.85E-5; // broj2 = 2.85*10-5
Oznaka Interval vrijednosti Zauz. mem.
double min ± 2.2250738585072014*10-308
max ± 1.7976931348623158*10308 8 byte
Programiranje 2 12
Ispis varijabli� Za ispis varijabli se koristi naredba printf().� Sintaksa:
printf(“xxxx spF1 xxx spF2 …”, var1, var2);� spF1 i spF2 – predstavljaju specifikatore formata za varijable
var1 i var2� Specifikatori formata označavaju tip varijable koja se
ispisuje:� %d – cijeli broj� %c – znak� %s – string (niz znakova)� %f – realni broj s pomičnim zarezom� %e – realni broj s eksponentom
Programiranje 2 (550)
Tipovi podataka 7
Programiranje 2 13
Primjer programa s osnovnim tipovima pod.� Napisati program koji definira četiri varijable i dodjeljuje
im slijedeće vrijednosti:� sum (cijeli broj) = 10� real1 (realni broj s pomičnim zarezom) = 2.21� slovo (znak) = A� real2 (realni broj s eksponentom) = 2.01*106
Uz to je potrebno i ispisati sve vrijednosti na ekran s jednim printf-om.
Programiranje 2 14
Formatiranje ispisa� Za formatiranje ispisa kod funkcije printf() se koriste
“escape” znakovi:� \n – prelazak u novi red� \t – “tab” pomak u desno� \r – postavljanje na početak linije� \a – zvono� \b - pomak u lijevo za 1 mjesto (briše prethodni znak)
� Kako ispisati navodnike ( ‘ “ \)?
� \’� \”� \\
Programiranje 2 (550)
Tipovi podataka 8
Programiranje 2 15
Primjer 1:� Što će ispisati donja naredba printf?
printf(“\t%d\n\t%c\n\t%s\n”, 1, ‘H’, “Hana”);
Primjer 2:� Što će raditi program?
#include <stdio.h>
void main() {
char znak1 = 3;char znak2 = 1000;
printf("\n znak1 = %c \n znak2 = %c \n\n", znak1, znak2);}
Programiranje 2 16
� 1000decimalno = (0011 1110 1000)binarno
� (1110 1000)binarno = 232decimalno (DOS code page 852)
Programiranje 2 (550)
Tipovi podataka 9
Primjer 2:
Programiranje 2 17
Programiranje 2 18
Pretvorba tipova podataka� Automatska pretvorba – kad se kod matematičkih
operacija miješaju različiti tipovi podataka tada se tipovi niže preciznosti automatski pretvaraju u tipove više preciznosti.:
char -> int -> unsigned -> long -> float -> double� Primjer:
int j = 5, k = 7;float x = 2.1, y;
y = j + 7.1*(x + k);
1. Računa se izraz u () i k se pretvarau float
2. Rezultat iz () se množi s realnomkonstantom 7.1
3. Pošto je rezultat realan broj vrši sepretvorba j u float i računa se suma
Programiranje 2 (550)
Tipovi podataka 10
Programiranje 2 19
Pretvorba tipova podataka� Pretvorba pri dodjeli vrijednosti – pretvorba iz tipova niže preciznosti
u tip više preciznosti ide “bez problema”.
� Primjer 1:float x;int i = 3;x = i;
� Primjer 2:int i = -3;unsigned u;u = i;
� Primjer 3:float x = 7.99;int i;i = x;
Programiranje 2 20
Pretvorba tipova podataka� Što će raditi program?
� S obzirom da su sve vrijednosti tipa int s desne strane znaka = računa se rezultat tipa int i onda se on pridodjeljuje float tipu.
Programiranje 2 (550)
Tipovi podataka 11
Programiranje 2 21
Pretvorba tipova podataka� Eksplicitna pretvorba – ukoliko se ispred nekog izraza ili
varijable upiše oznaka tipa u zagradama:(novi_tip) varijabla_ili_izraz
� Na ovaj način se naređuje prevodiocu da se promjeni tip varijable ili izraza na tom mjestu.
� Naziva se još i “cast” operator
Programiranje 2 22
Zadaci za vježbe:1. Napisati program koji definira 4 varijable (char, int, float,
double). Ispisati sve četiri varijable, zajedno s njihovim adresama i izračunati koliko su byteova u memoriji sve te varijable zajedno zauzele.
2. Napisati program koji definira 3 varijable tipa znak. Prvoj dodijeliti znak 0, drugoj dodijeliti znak 9, a treću izračunati kao sumu prve dvije. Ispisati sva tri znaka kao znak i kao ASCII vrijednosti.
3. Napisati program koji računa sumu, produkt, razliku i kvocijent dva cijela broja.Ispisati sve rezultate na ekran.
Programiranje 2 (550)
Tipovi podataka 12
Programiranje 2 23
sizeof() i adresni operator� Funkcija sizeof() vrača koliko bajtova u memoriji zauzima
određeni tip podatka.� Sintaksa:
size_t sizeof( tip_podataka);
� & - adresni operator – ukoliko se navede ispred imena varijable tada se ne pristupa varijabli nego njenoj adresi.
Tipovi podataka
KRAJ!!!