1 / 29

Programski jezik C

Programski jezik C. Tipovi podataka. 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.

lala
Télécharger la présentation

Programski jezik C

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezik C Tipovipodataka

  2. Promenljiva ima ime (identifikator), tip, adresu i vrednost. • Identifikator sesastoji od slova i cifara (prvi karakter je slovo) pri čemu se i podvlaka (_) računakao slovo, a mala i velika slova su različiti karakteri. • Dužina identifikatora zavisiod vrste promenljive – identifikatori unutrašnjih promenljivih mogu da budu i do31 karakter dugački, a spoljašnjih, kao i imena funkcija, bar do 6.

  3. Definicijom promenljivih uvode se nove promenljive u program - imenapromenljivih koje će se koristiti nabrajaju se, navode se njihovi tipovi, rezerviše se memorijski prostor za te promenljive i eventualno dodeljuju početne vrednosti. • Deklaracijompromenljivih nabrajaju se promenljive koje će se koristiti (i koje mogu bitiuvedene na drugom mestu u programu), i navode se njihovi tipovi. Dakle, definicijesu ujedno i deklaracije, dok obratno ne važi.

  4. 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 proizvodirezultat određenog tipa. • Ako operacija uzima argumente različitih tipova(npr. ”+” nad tipom float, int), tip rezultata se određuje iz jezičkih pravila.

  5. U većini slučajeva, novi tip podataka definiše se u terminima prethodno definisanihtipova. • Vrednosti takvih tipova su konglomerati komponentnih vrednostiprethodno 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 (iliosnovni, ili bazni) tip.

  6. 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, 4bajta) • float – realni broj u tzv. pokretnom zarezu, jednostruke preciznosti • double – realni broj u pokretnom zarezu, dvostruke preciznosti

  7. 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 zanovi 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.

  8. 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 ’$’

  9. #define MAXLINE 1000 char 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 jeniz karaktera sa nula-karakterom na kraju.

  10. string.h • U u standardnom zaglavlju <string.h> postoji puno funkcija za rad sa niskama kojima sestringovi kopiraju, dopisuju, porede, pronalaze podstringovi, određuje dužina, itd. • Primer: strlen(s) - vraćadužinu stringa s, ne računajući nula-karakter.

  11. 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.

  12. Celobrojni tip • Celobrojni tipmož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 celobrojnimargumentima proizvode celobrojne rezultate

  13. Ako se celobrojna konstantazavršava slovom l (ili L), ili ako je suviše velika da bi bila tipa int, konstanta je tipalong 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 zapisanai u oktalnom odnosno heksadekadnom zapisu (sistemu) – ako počinje cifrom 0 odnosno cifrom 0 i slovom x (X)

  14. 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 istomvrednošću kao i oktalni ceo broj: • 037 heksadekadni ceo broj: • 0x1f (tj. 0X1F).

  15. Nad celobrojnim tipom, kao i nad ostalim primitivnim tipovima, dopuštenesu i relacijske operacije • == (jednakost), • ! = (različitost), • <, >, • <=, >=, • Relacijske operacije su nižeg prioriteta od aritmetičkih.

  16. Standardne funkcije za rad sa celim brojevima u C-u deklarisane su u standardnim zaglavljima <stdlib.h> i <math.h> standardne biblioteke. • Sa rezultatomcelobrojnog tipa su, na primer: • abs(n) – apsolutna vrednost (n – celobrojnog tipa), • atoi(s) – celobrojna vrednost niske cifara s, (zaglavlje <stdlib.h>).

  17. Realne konstante

  18. Realni broj može biti i dugački realni broj dvostruke tačnosti čime se postižepovećana preciznost (broj značajnih cifara). • Ako se realna konstanta završavaslovom 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.

  19. 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 kojima bar jedanod operanada ima 1); • ˆ – Ekskluzivni OR nad bitovima (postavlja 1 samo u one bitove u kojima tačnojedan operand ima 1);

  20. <<– Levi šift (pomeranje levog operanda ulevo za broj bitova sadržan u desnomoperandu; 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 upisuje0 – logički šift). • ˜– Jednostruki komplement (bitovi 1 zamenjuju se sa 0, a 0 sa 1).

  21. Konverzija tipova

  22. Kastovanje • Konverzija se može vršiti i eksplicitno - unarnim operatorompodešavanja tipova (engl. cast) oblika: (ime-tipa) izraz • x=(float) i /j;

  23. Prioritet operatora

  24. Euklidov algoritam int 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) */

  25. nzd(a,b) = nzd(b,a) • nzd(a,b) = b b|a • nzd(a,b) = nzd(prvi, drugi) – sledi iz: • nzd(prvi, drugi) = nzd(drugi, ost)

  26. Fibonačijev niz f0 = f1 = 1 fn = fn-1 + fn-2 ili 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);

  27. /* 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; }

More Related