[ppt]arhitektura računara - home page matematickog...

29
Programski jezik C Tipovi podataka

Upload: vuongthu

Post on 31-Jan-2018

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Programski jezik C

Tipovi podataka

Page 2: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Promenljiva ima ime (identifikator), tip, adresu i vrednost.

Identifikator se sastoji od slova i cifara (prvi karakter je slovo) pri čemu se i podvlaka (_) računa kao slovo, a mala i velika slova su različiti karakteri.

Dužina identifikatora zavisi od vrste promenljive – identifikatori unutrašnjih promenljivih mogu da budu i do 31 karakter dugački, a spoljašnjih, kao i imena funkcija, bar do 6.

Page 3: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Definicijom promenljivih uvode se nove promenljive u program - imena promenljivih koje će se koristiti nabrajaju se, navode se njihovi tipovi, rezerviše se memorijski prostor za te promenljive i eventualno dodeljuju početne vrednosti.

Deklaracijom promenljivih nabrajaju se promenljive koje će se koristiti (i koje mogu biti uvedene na drugom mestu u programu), i navode se njihovi tipovi. Dakle, definicije su ujedno i deklaracije, dok obratno ne važi.

Page 4: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Tip određuje skup vrednosti

Tip se može odrediti iz oblika (npr. konstante) ili deklaracije (npr. promenljive), bez izvršavanja procesa računanja

Svaka operacija ili funkcija ”očekuje” argumente određenog tipa i proizvodi rezultat određenog tipa. Ako operacija uzima argumente različitih tipova (npr.

”+” nad tipom float, int), tip rezultata se određuje iz jezičkih pravila.

Page 5: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

U većini slučajeva, novi tip podataka definiše se u terminima prethodno definisanih tipova.

Vrednosti takvih tipova su konglomerati komponentnih vrednosti prethodno definisanih konstituentnih tipova, i takav, novi tip naziva se struktuiranim (ili strukturnim) tipom.

Ako se tip sastoji samo od jednog konstituentnog tipa, on je primitivni (ili osnovni, ili bazni) tip.

Page 6: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Osnovni tipovi podataka char – jedan bajt, može da primi jedan

karakter u lokalnom skupu karaktera

int – ceo broj, obično veličine celog broja na pripadnom računaru (npr. 2, 4 bajta)

float – realni broj u tzv. pokretnom zarezu, jednostruke preciznosti

double – realni broj u pokretnom zarezu, dvostruke preciznosti

Page 7: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Znakovni tip Znakovna konstanta je ceo broj - vrednost znakovne

konstante je vrednost koda tog karaktera u pripadnom karakterskom skupu odnosno kodnoj šemi. ‘A’.

Neki karakteri predstavljaju se kodnom sekvencom, na primer ’\n’ (karakter za novi red), ‘\t’ (tabulator) ‘\b’ (karakter unazad – engl. backspace), \? (znak pitanja), \\ (kosa crta unazad – engl. backslash),

Znakovna konstanta ’\0’ predstavlja karakter sa vrednošću 0, tj. ima vrednost 0. - nula-karakter.

Page 8: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Znakovna konstanta može da bude zapisana i u obliku oktalnog broja, na primer: ’\101’, ’\61’, i heksadecimalnog: ’\x41’, ’\x31’.

Znakovnoj konstanti (kao i konstantama drugih tipova) može se dodeliti ime (identifikator) instrukcijom preprocesora #define, npr. #define GRANICNIK ’$’

Page 9: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

#define MAXLINE 1000char linija[MAXLINE+1]; /* niz znakova linija ima MAXLINE+1 element */

Niska karaktera, ili literal, ili string, jeste niz od 0 ili više karaktera navedenih između dvostrukih navodnika, kao, na primer, ”ovo je string”.

String je niz karaktera sa nula-karakterom na kraju.

Page 10: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

string.h

U u standardnom zaglavlju <string.h> postoji puno funkcija za rad sa niskama kojima se stringovi kopiraju, dopisuju, porede, pronalaze podstringovi, određuje dužina, itd.

Primer: strlen(s) - vraća dužinu stringa s, ne računajući nula-karakter.

Page 11: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Celobrojni tip

Ako se podatak tipa int predstavlja sa dva bajta (16 bitova), onda se mogu predstaviti celi brojevi u intervalu

[-215 , 215].

Na celobrojni tip int mogu se primeniti i dodatni kvalifikatori, short i long. short int (kratki ceo broj) i ”obični” int su bar po 16

bita (2 bajta), long int (dugački ceo broj) je bar 32 bita (4 bajta), i

važi da je short int < int < long int.

Page 12: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Celobrojni tip Celobrojni tip može biti kvalifikovan kao signed

(označen) ili unsigned (neoznačen), sa istom interpretacijom kao i odgovarajući znakovni tip.

Nad operandima celobrojnog tipa dopuštene su operacije + (sabiranje), - (oduzimanje), * (množenje), / (izračunavanje celobrojnog dela količnika) i % (izračunavanje ostatka pri celobrojnom deljenju).

Sve operacije nad celobrojnim argumentima proizvode celobrojne rezultate

Page 13: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Ako se celobrojna konstanta završava slovom l (ili L), ili ako je suviše velika da bi bila tipa int, konstanta je tipa long int;

Ako se završava slovom u (U), odnosno ul (UL), konstanta je neoznačen, odnosno dugački neoznačen ceo broj.

Celobrojna konstanta može da bude zapisana i u oktalnom odnosno heksadekadnom zapisu (sistemu) – ako počinje cifrom 0 odnosno cifrom 0 i slovom x (X)

Page 14: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Cifre oktalnog sistema su 0–7,

a heksadekadnog: cifre 0–9 i slova ’a’–’f’, odnosno ’A’–’F’.

Tako je 31 dekadni ceo broj sa istom vrednošću kao i oktalni ceo broj:

037 heksadekadni ceo broj: 0x1f (tj. 0X1F).

Page 15: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Nad celobrojnim tipom, kao i nad ostalim primitivnim tipovima, dopuštene su i relacijske operacije == (jednakost), ! = (različitost), <, >, <=, >=,

Relacijske operacije su nižeg prioriteta od aritmetičkih.

Page 16: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Standardne funkcije za rad sa celim brojevima u C-u deklarisane su u standardnim zaglavljima <stdlib.h> i <math.h> standardne biblioteke.

Sa rezultatom celobrojnog tipa su, na primer:

abs(n) – apsolutna vrednost (n – celobrojnog tipa),

atoi(s) – celobrojna vrednost niske cifara s, (zaglavlje <stdlib.h>).

Page 17: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Realne konstante

Page 18: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Realni broj može biti i dugački realni broj dvostruke tačnosti čime se postiže povećana preciznost (broj značajnih cifara).

Ako se realna konstanta završava slovom f (F), ona je realni broj jednostruke tačnosti; ako se završava slovom l (L), konstanta je dugački realni broj dvostruke tačnosti.

Kvalifikator long (dugački) može se primeniti na promenljive tipa double.

Page 19: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Bit operatori

Operatori za manipulisanje pojedinačnim bitovima u C-u su:

& – AND nad bitovima (u rezultatu postavlja 1 samo u one bitove u kojima oba operanda imaju 1);

| – Inkluzivni OR nad bitovima (postavlja 1 u sve one bitove u kojim a bar jedan od operanada ima 1);

ˆ – Ekskluzivni OR nad bitovima (postavlja 1 samo u one bitove u kojima tačno jedan operand ima 1);

Page 20: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

<< – Levi šift (pomeranje levog operanda ulevo za broj bitova sadržan u desnom operandu; u oslobođene bitove upisuje se 0;

>> – Desni šift (pomeranje levog operanda udesno za broj bitova sadržan udesnom operandu; najviši bit se ili ponavlja (aritmetički šift) ili se u njega upisuje 0 – logički šift).

˜ – Jednostruki komplement (bitovi 1 zamenjuju se sa 0, a 0 sa 1).

Page 21: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Konverzija tipova

Page 22: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created
Page 23: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created
Page 24: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Kastovanje

Konverzija se može vršiti i eksplicitno - unarnim operatorom podešavanja tipova (engl. cast) oblika: (ime-tipa) izraz

x=(float) i /j;

Page 25: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Prioritet operatora

Page 26: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Euklidov algoritamint a, b, prvi, drugi, ost;prvi=a; drugi=b;if (prvi < drugi)

swap(prvi, drugi); do {

ost = prvi%drugi;prvi = drugi;drugi = ost;} while (ost !=0);

/* prvi = nzd(a,b) */

Page 27: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

1. nzd(a,b) = nzd(b,a)

2. nzd(a,b) = b b|a

3. nzd(a,b) = nzd(prvi, drugi) – sledi iz:

4. nzd(prvi, drugi) = nzd(drugi, ost)

Page 28: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

Fibonačijev nizf0 = f1 = 1fn = fn-1 + fn-2ili niz: 1, 1, 2, 3, 5, 8, 13, 21, ...

#include<stdio.h>int main()

{ /* Clan koji se trazi,prvi i drugi prethodni clan Fibonacijevog niza */ int n,fib1,fib2; /* Brojacka promenljiva i pomocna promeljiva za zamenu */ int i,pom; /* Koji se element trazi */ printf("Koji clan Fibonacijevog niza zelite?\n"); scanf("%d",&n);

Page 29: [PPT]Arhitektura računara - Home page Matematickog …poincare.matf.bg.ac.rs/~maricm/p1/p106.ppt · Web viewTitle Arhitektura računara Author Maric M Last modified by Maric M Created

/* Inicajalizuju se prva dva clana niza koji su po definiciji 1 */

fib1=1; fib2=1; /* Izracunavanje preostalih pocinje od treceg jer prva dva vec imamo */

for(i=3;i<=n;i++) { /* U promenljivu pom se smesta novi clan Fibonacijevog niza - zbir prethodna dva po definiciji niza*/

pom=fib1+fib2; /* Vrsi se promena*/ fib2=fib1; fib1=pom; }

printf("%d. clan Fibonacijevog niza je: %d\n",n,fib1); /* Regularan zavrsetak */

return 0; }