12
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. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 2: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 3: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 4: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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 Č

Page 5: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 6: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 7: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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 ( ‘ “ \)?

� \’� \”� \\

Page 8: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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)

Page 9: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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

Page 10: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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.

Page 11: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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.

Page 12: Programiranje 2. semestar/Programiranje 2/Predavanja...Definicija varijable –rezerviranje memorije za varijablu. Položaj varijable u memoriji se naziva adresa ili memorijska referenca

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!!!