[ppt]arhitektura računara - home page matematickog...
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/9.jpg)
#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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/20.jpg)
<< – 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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/22.jpg)
![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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/23.jpg)
![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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022070606/5a715dc47f8b9aa7538cca54/html5/thumbnails/29.jpg)
/* 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; }