Darko Drakulić. Osnove programskog jezika C sa zbirkom zadataka -skripta-

Wielkość: px
Rozpocząć pokaz od strony:

Download "Darko Drakulić. Osnove programskog jezika C sa zbirkom zadataka -skripta-"

Transkrypt

1 Darko Drakulić Osnove programskog jezika C sa zbirkom zadataka -skripta-

2 Rad u Code::Blocks okruženju Da bi se napisao i izvršio program napisan na programskom jeziku C, potreban je tekst editor u kojem će program biti napisan, kompajler i bilder koji će napisani kod kompajlirati i prevesti u mašinski kod, razumljiv računaru. Postoji dosta aplikacija koji u sebi integrišu ove alate i one nose zajedničko ime IDE (integrated development environment). One u sebi sadrže pomenute alate kod editor, kompajler ili interpreter, bilder i alat za testiranje programa (debugger). Jedan od takvih alata je Code::Blocks IDE, open source alat koji je besplatan i koji se može skinuti sa adrese Ovdje će ukratko biti opisano kako napisati, kompajlirati i pokrenuti program u pomenutom alatu. Da bi se program mogao kompajlirati i pokrenuti, sa pomenute adrese je potrebno skinuti instalaciju codeblocks-xxxmingw-setup koja u sebi sadrži GCC kompajler i GDB dibager. xxx predstavlja trenutnu verziju alata. Nakon uspješne istalacije i pokretanja programa Code::Blocks dobija se sljedeći izgled ekrana Slika 1 Da bi napisali i pokrenuli program u programskom jeziku C, potrebno je kreirati novi projekat (File->New->Project) zatim izabrati Console application (slika 2). U polju za izbor jezika izabrati C (slika 3), i konačno dati ime projektu kao i lokaciju na koju će se kod sačuvati (slika 4). Slika 2.

3 Slika 3. Slika 4. Nakon ovih koraka, klikom na dugme Finish, u lijevom dijelu ekrana u dijelu Projects pojaviće se projekat koji je kreiran, kao i datoteka (main.c) u kojoj se nalazi glavna (main) funkcija kreiranog projekta. Otvaranjem te datoteke, dobija se kod najprostijeg C-programa, koji na ekran ispisuje tekst Hello world.

4 Osnove programskog jezika C Struktura programa Program koji Code::Blocks automatski kreira ima sljedeći kod printf("hello world!\n"); Na ovom primjeru će biti objašnjena struktura programa napisanog u programskom jeziku C. C je tzv. case-sensitive programski jezik, što znači da razlikuje mala i velika slova. Naredbe return i RETURN su dvije različite naredbe. Nakon svake naredbe u C-u mora se nalaziti karakter ;. C ne poznaje razmake u kodu, tako da se prelazak u novi red nakon svake komande vrši samo iz estetskih razloga, radi lakšeg čitanja koda. Komentari se mogu pisati na dva načina: ukoliko se komentar nalazi u jednom redu, dovoljno je na početak tog reda staviti karaktere //, a ukoliko se komentar nalazi u više redova, potrebno je komentar ograničiti parovima karaktera /* i */. Primjeri komentara su // Komentar u jednom redu /* Komentar u više redova */ Prva dva reda reda programa u postojeći kod uključuju datoteke za prevođenje, u kojma se nalaze funkcije koje su nam potrebne za uspješno izvršavanje našeg programa. U datoteci stdio.h se nalaze funkcije za ulaz/izlaz, a u datoteci stdlib.h se nalazi većina funkcija koje su u najčešćoj upotrebi. O ovim funkcijama će kasnije biti više riječi. Funkcija je glavna funkcija programa i izvršavanje programa počinje od prve linije koda ove funkcije. Svaki projekat mora u nekom od fajlova imati ovu funkciju. Ona može imati drugačiju definiciju (može biti nekog drugog tipa, npr. void ili može imati listu argumenata). Par vitičastih zagrada predstavlja granice bloka naredbi, kao begin i end u programskom jeziku PASCAL.

5 Posljednji red programa predstavlja izlaz iz glavnog programa, odnosno kraj glavnog programa. U ovom slučaju, glavni program vraća vrijednost. Red printf("hello world!\n"); štampa tekst Hello world na ekran. Funkcija printf je definisana u datoteci stdio.h i ona na standardni izlaz (ekran) ispisuje niz karaktera koji je njen argument. Nizovi karaktera su ograničeni dvostrukim navodnim znacima (""). Karakter \n koji se nalazi na kraju ovog niza je specijalni karakter koji označava novi red. Osim karaktera za novi red, postoje sljedeći specijalni karakteri: \t tabulator, \b backspace, \ dvostruki navodnici, \\ - obrnuta kosa crta (backslash). Promjenljive i konstante Definisanje promjenljivih Promjenljive su objekti koji imaju svoje ime i čija se vrijednost može mijenjati tokom izvršenja programa. Definisanje promjenljivih u C-u vrši se na sljedeći način: tip_promjenljive ime_promjenljive; Tip promjenljive mora biti neki od ugrađenih tipova u C jezik ili neki od korisnički definisanih tipova. Četiri osnovna tipa podataka su int - cjelobrojni tip, float - realni tip jednostruke tačnosti, double - realni tip dvostruke tačnosti, char - znakovni tip, karakter. Iz osnovnog cjelobrojnog tipa se mogu dobiti izvedeni tipovi: short int (short), long int (long), unsigned int (unsigned) pozitivan cijeli broj. Ime promjenljive je proizvoljan niz karaktera koji ispunjava sljedeće zahtjeve: ime se sastoji od karaktera, cifara i donje crte _, ime ne smije počinjati cifrom, ime ne može biti neka od rezervisanih riječi jezika C (tabela 1.) Pravila koja važe za imena promjenljivih, važe i za imena konstanti, funkcija i korisničkih tipova.

6 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Tabela 1. Lista rezervisanih riječi programskog jezika C Prema opisanom, sljedeće definicije promjenljivih su ispravne int x; char karakter; float realni_broj1; double realni_broj2; Ukoliko je potrebno definisati više promjenljivih istog tipa, to se može učiniti u jednoj naredbi. Naredba za definisanje cjelobrojnih promjenljivih x, y i z je int x, y, z; Definisanje alternativnih imena tipovima podataka Da bi se definisalo alternativno ime postojećem tipu podatka koristi se ključna riječ typedef. Sintaksa je sljedeća typdef ime_tipa novo_ime_tipa; Tako, npr. možemo definisati tip "cijeli_broj" i dvije promjenljive tog "novog" tipa na sljedeći način typedef int cijeli_broj; cijeli_broj a; cijeli_broj b; Dodjela vrijednosti promjenljivima Da bi se dodjelila neka vrijednost nekoj promjenljivoj, koristi se operator =. Naredba za dodjelu ima oblik ime_promjenljive = vrijednost; Ukoliko se radi o cijelim brojevima (tip int), vrijednosti se mogu zadati u tri različita brojna sistema. Ukoliko vrijednost počinje cifrom koja nije nula, broj se tretira kao dekadni. Ukoliko počinje nulom, broj se tretira kao oktalni a ukoliko počinje sa x ili X broj se tretira kao heksadekadni. int x, y, z; x = 123; // dekadni broj y = 123; // oktalni broj z = x123; // heksadekadni broj Ukoliko se radi o realnim brojevima, vrijednosti se mogu pisati samo u dekadnom sistemu, a za decimalni zarez se koristi tačka (.). Vrijednosti se mogu i pisati u obliku oek (oek), gdje je o osnova a k eksponent. float x, y, z; x = 123; y = ;

7 z = 123E+2; // broj 123 Ukoliko je promjenljiva tipa char, vrijednost mora biti jedan karakter, ograničen jednostrukim navodnim znacima ('). Specijalni karakteri (\n, \t..) se tretiraju kao jedan karakter, iako se, praktično sastoje od dva karaktera. Tip char je ustvari cjelobrojna vrijednost ASCII koda karaktera. char a, b, c, d; a = 'a'; b = '\n'; c = '1'; d = '.'; Moguće je u istoj naredbi definisati promjenljivu i dodjeliti joj vrijednost int x = 5; float y = 1.2, z = 234e-1; char c1, c2 = 'a'; Štampanje vrijednosti promjenljivih Na početku je bilo riječi o funkciji printf koja štampa proizvoljan niz karaktera na standardni izlaz. Ista funkcija se koristi za štampanje vrijednosti uz određene izmjene. Funkcija ima sljedeći oblik printf("niz_znakova_za_ispis", ime_promjenljive1,...); Niz znakova za ispis predstavlja niz karaktera, pri čemu se znakom % pokazuje mjesto gdje treba da se upišu vrijednosti promjenljivih koje se nalaze iza niza znakova za ispis. Nakon znaka % ide odgovarajuće slovo, koje zavisi od tipa promjenljive: %d cijelobrojni tip, zapisan u dekadnom sistemu, %o cijelobrojni tip, zapisan u oktalnom sistemu, %x cijelobrojni tip, zapisan u heksadekadnom sistemu, %f realni tip (float i double) %c karakter. Primjeri naredbi za štampanje printf( %d, x); // štampa promjenljive x u dekadnom sistemu printf( %f %f, a, b); // štampa realnih promjenljivih a i b printf( %d %o %x, x, x, x); /* štampa promjenljive x u dekadnom, oktalnom i heksadekadnom sistemu */ printf( %c, c); // štampa vrijednosti promjenljive c tipa char printf( Vrijednost promjenljive x je %d, x); Opseg važenja promjenljivih U jednom bloku naredbi nije dozvoljeno definisanje više promjenljivih istog imena. Tako, na primjer, kompajliranje sljedećeg koda bi javilo grešku int x; char x; dok je sljedeći kod ispravan

8 int i = 1; int i = 2; printf("unutrasnje i = %d\n", i); printf("spoljasnje i = %d\n", i); i njegovo izvršavanje daje rezultat Unutrasnje i = 2 Spoljasnje i = 1 Veličina memorijskog prostora za promjenljive Nakon svake definicije promjenljive, alocira se potrebna memorija za njeno čuvanje. Veličina te memorije zavisi od tipa promjenljive, ali i sistema na kojem se program izvršava. U C-u je ugrađen operator sizeof koji određuje veličinu promjenljive ili tipa u bajtovima. Ukoliko se želi odštampati veličina (u bajtovima) tipa int, kod bi izgledao int velicina = sizeof(int); printf( %d, velicina); Vrijednost se može odštampati i bez uvođenja nove promjenljive, izračunavanjem veličine direktno u argumentu funkcije printf. printf( %d, sizeof(int)); Cjelobrojne promjenljive se zapisuju u formatu potpunog komplementa, realne u zapisu IEEE754 a karakteri u ASCII kodu. Za više informacija o ovim zapisima pogledati [?]. Primjer 1. Napisati program koji definiše dvije cjelobrojne promjenljive, dodjeljuje im vrijednost i štampa njihov zbir. 1 int a, b; a = 5; b = 7; int c = a+b; printf("zbir je %d\n", c); 2

9 int a = 5, b = 7; printf("zbir je %d\n", a+b); Primjer 2. Napisati program koji štampa veličine memorijskog prostora za osnovne tipove podataka. printf("int: %d\n", sizeof(int)); printf("short: %d\n", sizeof(short)); printf("long: %d\n", sizeof(long)); printf("unsigned: %d\n", sizeof(unsigned)); printf("float: %d\n", sizeof(float)); printf("double: %d\n", sizeof(double)); printf("char: %d\n", sizeof(char)); Izlaz ovog programa nam daje odgovor na veličinu osnovnih tipova u C-u int: 4 short: 2 long: 4 unsigned: 4 float: 4 double: 8 char: 1 Konstante Slično promjenljivima, konstante su objekti koji imaju svoje ime ali im se vrijednost ne može mijenjati tokom izvršenja programa. Za definisanje konstanti koristi se ključna riječ const ispred tipa i imena konstante. const int x = 5; Drugi način definisanja konstante je korišćenje preprocesorske direktive #define. Ona ima oblik #define ime_konstante vrijednost_konstante Ova preprocesorska direktiva se piše na početku programa, ispod direktiva #include a ove konstante se nazivaju simboličke konstante.

10 Učitavanje vrijednosti promjenljivih sa tastature Jasno je da loše rješenje da se vrijednosti promjenljivim dodjeljuju u samom kodu. Takav način dodjele zahtjeva promjenu koda svaki put kada se mijenja vrijednost promjenljivih. Osnovna ideja je da se korisniku omogući dodjela vrijednosti promjenljivima u toku izvršavanja programa. Za tu svrhu se koristi funkcija scanf oblika scanf( format, lista_promjenljivih,...); format i lista_promjenljivih predstavljaju argumente slične kao kod funkcije printf. Prvi je niz karaktera koji u sebi sadrži oznaku tipa koji se unosi - % i odgovarajuće slovo koje je identično kao kod funkcije printf. Što se tiče liste promjenljivih, razlika u odnosu na funkcije printf je ta da se ispred svake promjenljive mora napisati karakter &. Zašto baš on, biće objašnjeno u dijelu kada se bude govorilo o pokazivačima i referencama. Unos vrijednosti cjelobrojne promjenljive x i karaktera c se vrši na sljedeći način scanf( %d, &x); scanf( %c, &c); zbir. Primjer 3. Napisati program koji sa tastature učitava dva cijela broja i štampa njihov int a, b; scanf("%d", &a); scanf("%d", &b); printf("zbir je %d\n", a+b); Operatori Aritmetički operatori Aritmetički operatori, kao što im samo ime govori, služe za izvršavanje aritmetičkih operacija. Do sada je već korišćen operator sabiranja, a postoji ukupno pet aritmetičkih operatora: + sabiranje, - oduzimane, * množenje, / dijeljenje, % ostatak pri djeljenju (samo za cijele brojeve).

11 Svi ovi operatori su binarni, što znači da imaju dva argumenta i njihova svrha je jasna, osim možda posljednjeg. Npr. izraz 8%3 daje ostatak pri dijeljenju broja 8 sa brojem 3, tj. daje vrijednost 2. Primjer 4. Napisati program koji sa tastature čita dva cijela broja i ispisuje njihov zbir, razliku, proizvod i količnik. int a, b; scanf("%d", &a); scanf("%d", &b); printf("a + b = %d\n", a+b); printf("a - b = %d\n", a-b); printf("a * b = %d\n", a*b); printf("a / b = %f\n", (float)a/b); printf("a % b = %d\n", a%b); Svi redovi u kodu su poznati i jasni, osim printf("a / b = %f\n", (float)a/b); odnosno, izraza (float)a/b. U ovom izrazu se koristi tzv. cast operator. Cast operator U programskom jeziku C postoji ugrađena automatska konverzija tipova. To znači da je moguće nekoj promjenljivoj dodijeliti vrijednost nekog drugog tipa. Npr. kod int a = 5; float b = a; je ispravan, iako se u drugom redu promjenljivoj b tipa float dodjeljuje vrijednost promjenljive a koja je tipa int. Tu dolazi do automatske konverzije tipa int u float. U ovom slučaju ne postoji nikakav gubitak podataka, dok bi, recimo konverzija tipa float u int dovela do gubitka podataka, i to cifara iza decimalnog zareza. Moguća je i eksplicitna konverzija tipova, kada neki izraz želimo konvertovati u odgovarajući tip. Takva konverzije je moguća korišćenjem unarnog operatora koji se naziva cast a ima oblik (tip) izraz; Izraz (float)a/b je upravo konvarzija rezultata a/b u tip float. To je neophodno jer su a i b tipa int i da nema eksplicitne konverzije, i rezultat a/b bi bio tipa int i ne bi bio tačan.

12 Relacijski i logički operatori Ovi operatori imaju isti smisao kao i u matematici. U ovu grupu operatora spadaju > veće, < manje, <= veće ili jednako, >= manje ili jednako, == jednako (dvostruko jednako - jednostruko jednako je operator dodjele),!= različito (! je znak negacije). Osim ovih, u ovu grupu spadaju i logički vezinici. && logičko I, logičko ILI. Rezultat primjene ovih operatora je logička vrijednost koja može biti tačna ili netačna, npr. (x>4) && (x%2 == ) Ovaj izraz ispituje da li je x paran broj veći od 4. O prioritetima operatora ovdje neće biti govora, za detaljnije pogledati [?]. Bitovni operatori Bitovni operatori su operatori koji manipulišu sa cjelobronim tipovima podataka, na nivou bitova. Za potpuno razumjevanje rada ovih operatora potrebno je poznavati način zapisivanja cijelih brojeva u potpunom komplementu[?]. Postoji 6 operatora za rad s bitovima & binarno I, binarno ILI, ^ binarno ekskluzivno ILI, << lijevi pomak (lijevi shift), >> desni pomak (desni shift), ~ unarna negacija. Primjer 5. Izračunati vrijednosti izraza 24&12, 17 12, 8^11, 17>>2, 21<<3, ~11.. Zbog zapisa, veličina podataka će biti ograničena na 8 bitova. 11 = = 17 1 = 8 11 = = = 11 &1 = = 29 ^ 11 = >> 2 = 11 >> 2 = ()1 1 = 1 = 4 21 << 3 = 111 << 3 = 111() = 111 = 168 ~11 = ~(111) = = -12

13 Primjer 6. Napisati program koji izračunava vrijednosti izraza iz primjera 5. printf("24&12 = %d\n", 24&12); printf("17 12 = %d\n", 17 12); printf("8^11 = %d\n", 8^11); printf("17>>2 = %d\n", 17>>2); printf("21<<3 = %d\n", 21<<3); printf("~11 = %d\n", ~11); Operatori uvećavanja i umanjivanja U C-u postoje dva uobičajena operatora uvećavanja i umanjivanja za jedan. To su operatori ++ i --. Operator inkrementiranja ++ uvećava svoj operand za jedan, dok operator dekrementiranja -- umanjuje svoj operand za jedan. To znači da izrazi a=a+1 i a++, odnosno a=a-1 i a-- imaju isto značenje. Oba operatora se mogu koristiti i kao prefiksni (++a) i kao sufiksni (a++). Razlika je što se u prefiksnom korišćenju vrijednost promjenljive a uveća prije njenog korišćenja, a u sufiksnom obrnuto. Operatori i izrazi dodjeljivanja vrijednosti Slično kao kod operatora inkrementiranja i dekrementiranja, postoje skraćeni zapisi i za operatore u kojima je promjenljiva na lijevoj strani a neki od operatora na desnoj, kakav je i=i+2. Skraćeni zapis za ovaj izraz je i+=2. Ovakvi skraćeni zapisi su mogući za operatore +, -, *, /, %, <<, >>, &, ^ i. Kontrola toka if else izraz Uslovni if izraz ima sljedeći oblik if(uslov) naredba1;

14 else naredba2; uslov mora biti neki logički izraz. U slučaju da je uslov tačan, izvršava se naredba1 a u suprotnom naredba2. if izraz se može pojaviti i bez else izraza. Ako je potrebno da se izvrši više naredbi, tada je potrebno da se stave u blok, ograničen sa vitičastim zagradama if(uslov) naredba1_1; naredba1_2; naredba1_3;... else naredba2_1; naredba2_2; naredba2_3;... Primjer 7. Ispraviti rješenje primjera 4. tako da isključuje mogućnost dijeljenja nulom. int a, b; scanf("%d", &a); scanf("%d", &b); printf("a + b = %d\n", a+b); printf("a - b = %d\n", a-b); printf("a * b = %d\n", a*b); if(b!= ) printf("a / b = %f\n", (float)a/b); else printf("greska! Dijeljenje nulom\n"); printf("a % b = %d\n", a%b); if else if else izraz if else naredba ima samo dvije grane kada je uslov ispunjen i kada nije. Međutim nekada je potrebno ispitati više uslova i u zavisnosti od njihovih vrijednosti

15 izvršavati određene naredbe. U tim slučajevima se koristi if-else if-else izraz, koji će biti prikazan na sljedećem primjeru. Primjer 8. Napisati program koji ispituje da li je uneseni broj pozitivan, negativan ili je jednak nuli. int x; scanf("%d", &x); if(x > ) printf("broj je pozitivan\n"); else if(x < ) printf("broj je negativan\n"); else printf("broj je jednak nuli\n"); Operator? U programskom jeziku C postoji operator? i to je jedini ternani operator, tj. ima tri operanda. Izgled operatora je (logicki_izraz)? vrijednost1 : vrijednost2 Ovaj operatoj provjerava istinitost logičkog izraza i u slučaju njegove tačne vrijednosti vraća vrijednost1 a u suprotnom vraća vrijednost2. switch Ovaj izraz je sličan izrazu if else if else i provjerava da li izraz odgovara nekoj od konstantnih cjelobrojnih vrijednosti (ili karaktera). switch izraz ima sljedeći oblik switch(izraz) case vrijednost1: naredbe1 break; case vrijednost2: naredbe2 break;... default: naredben;

16 U slučaju da izraz ima vrijednost vrijednost1, tada se izvršavaju naredbe1, u slučaju da ima vrijednost2 tada se izvršavaju naredbe2, a u slučaju da nema nijednu od ponuđenih vrijednosti tada se izvršavaju naredben. Primjer 9. Napisati program koji provjerava da li je uneseni karakter razmak, tačka ili neki neki drugi znak. char c; scanf("%c", &c); switch(c) case ' ': printf("uneseni karakter je razmak\n"); break; case '.': printf("uneseni karakter je tacka\n"); break; default: printf("uneseni karakter nije ni tacka ni razmak\n"); Petlje for Primjer 8. Napisati program koji štampa prvih 5 prirodnih brojeva. U ovom programu je potrebno izvršiti 5 sličnih naredbi, tj. 5 poziva funkcije printf sa različitim argumentima. U slučajevima kada se trebaju izvršiti slične naredbe koriste se petlje. Jedan od načina da se riješi ovaj zadatak je sljedeći int i; for(i=1; i<=5; i=i+1) printf("%d\n", i);

17 Ovdje je korišćen izraz for koji ima sljedeći oblik for(inicijalizacija; uslov; korak) inicijalizacija izraz u kojem se promjenljivima dodjeljuju početne vrijednosti, uslov logički izraz koji uslovljava izvršenje for petlje petlja se izvršava sve dok ovaj logički izraz tačan, korak izraz u kojem se vrši uvećavanje brojača. U prethodnom primjeru, u svakom se izvršavanju for petlje vrijednost brojača i povećava za jedan. Sva tri izraza u for petlji su opcioni, što znači da ne moraju postojati. Izraz for( ; ; ) je ispravan izraz i predstavlja beskonačnu petlju. Treba primjetiti da iza linije u kojoj se nalazi for petlja ne nalazi karakter ;. To je zato što je kraj komande tek u sljedećem redu. Kao i kod if naredbe, ukoliko se for petlja odnosi na više komandi, potrebno ih je ograničiti vitičastim zagradama. while while petlja ima iste osobine kao for petlja i sve što se može uraditi preko for petlje može i preko while i obrnuto. while petlja ima sljedeći oblik while(uslov) komande... Slično kao for petlja, samo što nema dijela za inicijalizaciju i korak, već se inicijalizacija mora mora obaviti prije a korak u samoj petlji. Primjer 9. Prethodni zadatak riješiti korišćenjem while petlje. int i=1; while(i<=5) printf("%d\n", i); i++;

18 do-while Kao i while petlja, samo što se kod do-while petlje prvo izvršavaju naredbe pa se onda provjerava uslov. do-while petlja ima sljedeći oblik do komande... while(uslov); Za razliku od while petlje, komande u do-while petlji će se izvršiti bar jednom. Primjer 1. Prethodni zadatak riješiti korišćenjem do-while petlje. int i=1; do printf("%d\n", i); i++; while(i<=5); break i continue Nekada postoji potreba izlaska iz petlje prije potpunog ispunjenja potrebnog uslova za izlazak. Za to se koristi naredba break. Primjer 11. Odštampati prvi broj (ako postoji) koji je manji od 5 a djeljiv sa brojevima 3, 4, 5 i 7. int i; for(i=1; i<=5; i++) if(i%3 == && i%4 == && i%5 == && i%7 == ) printf("%d\n", i); break;

19 Naredba continue je slična naredbi break, a njen poziv otpočinje sljedeću iteraciju petlje. Primjer 12. Odštampati sve brojeve manje od 2 koji nisu djeljivi sa brojem 3. int i; for(i=1; i<=2; i++) if(i%3 == ) continue; printf("%d\n", i); goto i labele C ima mogućnost rada sa labelama, ali se ne preporučuje njihovo korišćenje osim u slučajevima kada je potrebno izaći iz više petlji odjednom, kao u sljedećem primjeru for(...) for(...) if(...) goto kraj;... kraj:... Rad sa karakterima Kao što je već pomenuto, u programskom jeziku C tip char je ustvari cjelobrojna vrijednost ASCII koda datog karaktera. To znači da se char može štampati i kao karakter i kao cijeli broj char c = 'A'; printf("%d\n", c); // štampa ASCII kod karaktera

20 printf("%c\n", c); // štampa izgled karaktera Primjer 13. Napisati program koji štampa ASCII tabelu karaktera. char i; for(i=1; i<127; i++) printf("%d %c\t", i, i); Ako se pogleda ASCII tabela, vidi se da, recimo karakter 'A' ima vrijednost 65, karakter 'B' vrijednost 66, karakter 'a' ima vrijednost 97, karakter 'b' ima vrijednost 98 itd. Tako da vrijednost izraza 'A' + 1 daje vrijednost 75 odnosno karakter 'K'. Znakovni ulaz i izlaz U standardnoj biblioteci, osim funkcija printf i scanf postoje funkcije koje služe za ulaz odnosno izlaz znakovnog tipa podataka. To su funkcije getchar i putchar. Funkcija getchar() čita jedan karakter sa standardnog ulaza (tastature) i kao rezultat vraća njegovu ASCII vrijednost, npr. kod char c = getchar(); čita jedan karakter sa tastature i njegovu vrijednost dodjeljuje promjenljivoj c. Funkcija putchar(c) štampa vrijednost karaktera c na standardnom izlazu, npr putchar(c); Kod unosa teksta, kao indikator za kraj unosa se koristi znak za kraj datoteke, koji se označava EOF (end of file). Ako je u pitanju unos sa tastature, znak EOF se dobija kombinacijom tastera ctrl i z. Primjer 14. Napisati program koji sa tastature čita karaktera sve dok se ne unese karakter EOF i ispisuje ih na ekranu. char c;

21 int i; while(c!=eof) c = getchar(); putchar(c);

22 Riješeni zadaci Zadatak 1. Napisati program koji za uneseno n štampa sumu prvih n prirodnih brojeva i n! int n, i, suma=, fakt=1; scanf("%d", &n); for(i=1; i<=n; i++) suma += i; printf("suma prvih %d je %d\n", n, suma); for(i=1; i<=n; i++) fakt *= i; printf("%d! = %d\n", n, fakt); Zadatak 2. Odštampati sve djelioce unesenog broja. int n, i; scanf("%d", &n); for(i=1; i<=n; i++) if (n%i == ) printf("%d ", i); Zadatak 3. Odštampati sve savršene brojeve manje od 1 (broj je savršen ako je jednak zbiru svojih djelilaca, osim sebe samog).

23 int n, i,suma; for(n=1; n<1; n++) suma = ; for (i=1; i<n; i++) if (n%i == ) suma+=i; if (suma==n) printf("broj %d je savrsen\n", n); Zadatak 4. Napisati program koji za uneseni prirodni broj štampa zbir njegovih cifara. int n, suma = ; scanf("%d", &n); while(n > ) suma += n % 1; // sa n%1 se dobija posljednja cifra n /= 1; printf("%d", suma); Zadatak 5. Napisati program koji za uneseni prirodan broj ispisuje broj čije su cifre u obrnutom redoslijedu.

24 int n, obrnuti = ; scanf("%d", &n); while(n > ) obrnuti = obrnuti*1 + n % 1; n /= 1; printf("%d", obrnuti); Zadatak 6. Izračunati kvadratni korjen datog broja Njutnovom metodom sa zadatom tačnosti. Njutnova formula glasi 1 x yi+ 1 = yi +, gdje je x broj za koji se traži korjen, a 2 y početna iteracija y = x 1. Za rješavanje ovog zadatka potrebna je funkcija koja računa + apsolutnu vrijednost datog broja. To je funkcija abs(float) koja je definisana u datoteci math.h 1. #include <math.h> float x, y, z, eps; scanf("unesite broj i tacnost: "); scanf("%f", &x); scanf("%f", &eps); y = x+1; do z = y; y =.5 * (y + x/y); while(abs(z-y) > eps); printf("korjen iz %.2f je %f", x, y); i 1 Pregled načajnijih funkcija standardne biblioteke je prikazano u dodatku A

25 Zadatak 7. Napisati program koji simulira rad kalkulatora sa osnovnim operacijama +, -, *, /. Izraz se unosi u obliku operator operand1 operand2. float op1,op2; char op; scanf ("%c", &op); scanf ("%f", &op1); scanf ("%f", &op2); printf("izraz: %.2f %c %.2f\n",op1,op,op2); switch(op) case '+': printf("vrijednost: %.2f\n", op1 + op2); break; case '-': printf("vrijednost: %.2f\n", op1 - op2); break; case '*': printf("vrijednost: %.2f\n", op1 * op2); break; case '/': if (op2 == ) printf("greska! Dijeljenje nulom\n"); else printf("vrijednost: %.2f\n", op1 / op2); break; default: printf("greska! Pogresan operator\n"); 2 Zadatak 8. Napisati program koji pronalazi rješenja kvadratne jednačine ax + bx+ c= Za rješavanje ovog zadatka potrebna je funkcija koja računa kvadratni korjen datog broja, a to je funkcija sqrt(float) koja je definisana u datoteci math.h Moguća su tri slučaja jednačina nema realna rješenja (D<), ima dvostruko rješenje (D=) i ima dva različita rješenja (D>).

26 #include <math.h> float a, b, c; scanf("%f", &a); scanf("%f", &b); scanf("%f", &c); printf("jednacina: %.2f*x^2 + %.2f*x + %.2f\n", a, b, c); float D = b*b - 4*a*c; if(d < ) printf("rjesenja nisu realna\n"); else if(d == ) float x = -b/(2*a); printf("jednacina ima jedno dvostruko rjesenje x = %.2f\n", x); else float x1 = (-b + sqrt(d))/(2*a); float x2 = (-b - sqrt(d))/(2*a); printf("rjesenja su x1=%.2f, x2=%.2f\n", x1, x2); Zadatak 9. Napisati program koji ispituje da li se dvije prave y=a 1 x+b 1 i y=a 2 x+b 2 sijeku. tački. Moguća su tri slučaja prave su paralelne, prave se poklapaju ili se sijeku u jednoj #include <math.h> float a1,a2,b1,b2; scanf ("%f",&a1); scanf ("%f",&b1); scanf ("%f",&a2); scanf ("%f",&b2); printf("y =%5.2fx + %5.2f\n",a1,b1); printf("y =%5.2fx + %5.2f\n",a2,b2);

27 if (a1 == a2 && b1== b2) printf ("prave se poklapaju\n"); else if (a1 == a2 && b1!= b2 ) printf ("prave su paralelne\n"); else float x=(b2-b1)/(a1-a2); float y=a1*x+b1; printf ("prave se sijeku u tacki (%5.2f,%5.2f)\n",x,y); Zadatak 1. Podaci o krugovima se sastoje od koordinata centra i dužine poluprečnika. Napisati program koji ispituje u kom su položaju dati krugovi. Moguća su tri slučaja. Da se krugovi ne sijeku (udaljenost među centrima je veća od zbira poluprečnika), da se dodiruju (udaljenost među centrima je jednaka zbiru poluprečnika) i da se dijeku (udaljenost među centrima je manja od zbira poluprečnika). #include <math.h> int x1,x2,y1,y2,r1,r2; scanf ("%d", &x1); scanf ("%d", &y1); scanf ("%d", &r1); scanf ("%d", &x2); scanf ("%d", &y2); scanf ("%d", &r2); float d = sqrt((x2-x1)*(x2-x1)+ (y2-y1)*(y2-y1)); if (d>r1+r2) printf ("kruznice se ne sijeku"); else if (d<r1+r2) printf ("kruznice se sijeku"); else printf ("kruznice se dodiruju");

28 Zadatak 11. Napisati program koji za uneseno n štampa romb čija je dužina stranice n, kao na slici (na slici n=2) * * * * int n, i, j, k; scanf("%d", &n); for(i=1; i<=n; i++) for(k=n; k>i; k--) printf(" "); for(j=; j<i; j++) printf("* "); printf("\n"); for(i=n-1; i>; i--) for(k=n; k>i; k--) printf(" "); for(j=; j<i; j++) printf("* "); printf("\n"); Zadatak 12. Napisati program koji štampa sve trocifrene brojeve kod kojih je druga cifra za dva veća od prve a treća za jedan veća od druge. int i, j, k; for(i=1; i<=9; i++) for(j=3; j<=9; j++) for(k=4; k<=9; k++) if(j == i+2 && k == j+1) printf("%d%d%d\n", i, j, k);

29 Zadatak 13. Napisati program koji uneseno mali slovo pretvara u veliko. Ideja: vrijednost između malog slova i njemu odgovarajućeg velikoj je konstantna za sva slova. char malic; scanf("%c", &malic); char velikic = malic - ('a' - 'A'); printf("%c", velikic); Zadatak 14. Napisati program koji za uneseni karakter provjerava da li je malo slovo, veliko slovo, cifra ili neki drugi karakter. char c; scanf("%c", &c); if(c >= 'A' && c <= 'Z') printf("uneseni karakter je veliko slovo\n"); else if(c >= 'a' && c <= 'z') printf("uneseni karakter je malo slovo\n"); else if(c >= '' && c <= '9') printf("uneseni karakter je cifra\n"); else printf("uneseni karakter nije slovo ni cifra\n"); Zadatak 15. Napisati program koji sa tastature čita karaktera sve dok se ne unese karakter EOF i broji unesenie samoglasnike i suglasnike.

30 char c; int i, suglasnici=, samoglasnici=; while(c!=eof) c = getchar(); if((c >= 'a' && c <= 'z') (c >= 'A' && c <= 'Z')) if(c == 'a' c == 'e' c == 'i' c == 'o' c == 'u' c == 'A' c == 'E' c == 'I' c == 'O' c == 'U') samoglasnici++; else suglasnici++; printf("samoglasnika: %d, suglasnika: %d", samoglasnici, suglasnici);

31 Zadaci za vježbu 1. Napisati program koji za uneseno n izračunava sumu n k= 1 k Napisati program koji za zadatu tačnost eps izračunava broj 1 e = k= k! 3. Napisati program koji za unesene n i m računa broj n m (bez korišćenja funkcije pow). 4. Napisati program koji za uneseno n i m (n > m) računa n m 5. Napisati program koji učitava n, zatim učitava n brojeva i izračunava njihovu aritmetičku sredinu. 6. Napisati program koji određuje za koliko procenata je porasla cijena C 1 ako ona sad iznosi C Napisati program koji izračunava sumu i proizvod dva kompleksna broja x 1 +iy 1 i x 2 +iy 2 8. Napisati program koji računa zbir, razliku i proizvod razlomaka a/b i c/d. 9. Napisati program koji za uneseno n izračunava n-ti stepen kompleksnog broja, korišćenjem De Moavrove formule 3 1. Napisati program koji učitava brojeve m i n i pravi Dekartov proizvod skupova 1,2,...,n i 1,2,...,m. 11. Napisati program koji za uneseno n ispisuje trougao kao na slici (na slici n=3) Napisati program koji za uneseno n štampa kvadrate brojeva 1, 2,..., n Napisati program koji za uneseno x izračunava vrijednost y po formuli 1, x> x y =, x= 1, x< x 14. Napisati program koji izračunava aritmetičku sredinu cifara datog broja. 15. Napisati program koji u datom četverocifrenom broju izračunava razliku između prve i poslednje cifre. 16. Napisati program koji za unesene n i m (m<n) izračunava sumu posljednjih m cifara broja n. 17. Napisati program koji za unesene n i m učitava n brojeva i izračunava aritmetičku sredinu brojeva koji su veći od m. 18. Napisati program koji učitava broj m i zatim učitava brojeve sve dok im suma ne pređe m. 19. Napisati program koji za n unijeti cijelih brojeva računa zbir negativnih. 2. Napisati program koji za uneseno n računa n-ti član Fibonačijevog niza 21. Napisati program koji za unesena tri cijela broja ispisuje najveći. 2 Za funkciju stepenovanja pogledati dodatak A 3 Za funkcije sin i cos pogledati dodatak A

32 22. Napisati program koji za unesena tri cijela broja ispituje da li čine Pitagorinu trojku. 23. *Napisati program koji nalazi NZD za dva broja korišćenjem Euklidovog algoritma *Napisati program koji za uneseno n izračunava n 25. Napisati program koji za uneseno n učitava n brojeva i određuje najveći i najmanji među njima. 26. Napisati program koji rješava jednačinu ax+b=. 27. Napisati program koji ispituje da li je prava y=kx+n tangenta parabole y 2 =2px (vrijednosti k, n i p se unose sa tastature). 28. Napisati program koji ispituje da li se sijeku prava y=kx+n i kružnica x 2 +y 2 =r 2 (vrijednosti k, n i r se unose sa tastature). 29. Napisati program koji ispituje da li je vrijednost polinoma 2x 3 +x 2-2x+1 pozitivna ili negativna u tački n koja se unosi sa tastature. 3. Napisati program koji ispituje da li je uneseni broj Armstrongov. Amrstrongov broj je jednak zbiru kubova svojih cifara. 31. Napisati program koji ispituje da li je uneseni broj Nivenov. Nivenov broj je broj koji je djeljiv sumom svojih cifara. 32. Napisati program koji učitava broj b i osnovu o < 1 i zatim ispisuje broj o u dekadnom brojnom sistemu. 33. Napisati program koji izračunava površinu pravougaonika čije su stranice paralelne koordinatnim osama, a zada je preko dijagonalnih tjemena (x 1, y 1 ) i (x 2, y 2 ) 34. Napisati program koji ispituje da li tačke A(x 1, y 1 ), B(x 2, y 2 ), C(x 3, y 3 ) i D(x 4, y 4 ) čine paralelogram ABCD. 35. Napisati program koji štampa kvadrant u kojem se nalazi tačka (x 1, y 1 ). 36. Napisati program koji učitava vrijednost n (n < 18) i ispituje da li je ugao od n stepeni oštar, prav ili tup. 37. Napisati program koji računa maksimim za unesena četiri broja. 38. Napisati program koji ispituje da li tri unesene duži mogu da naprave trougao (koristiti nejednakost trougla). 39. Napisati program koji računa površinu trougla datog preko svojih tjemena (x 1, y 1 ), (x 2, y 2 ), (x 3, y 3 ) (koristiti Heronov obrazac). 4. Napisati program koji provjerava da li je uneseni karakter slovo, tačka ili razmak. 41. Napisati program koji za uneseni broj n ispisuje n-ti dan u nedjelji (npr. za 1 se ispisuje Ponedjeljak. 42. Napisati program koji provjerava da li tri cijela broja koja se unose sa tastature h, m i s čine ispravno vrijeme (h:m:s). 43. Napisati program koji provjerava da li tri cijela broja koja se unose sa tastature d, m i g čine ispravan datum (d.m.g). 44. Napisati program koji za uneseni broj n ispisuje n-ti mjesec u godini. 45. Napisati program koji provjerava da li je unesena godina prestupna. 46. Napisati program koji ispisuje ocjenu koju je student dobio na ispitu na osnovu osvojenih bodova (5 od do 5, 6 od 51 do 6 itd).

33 Funkcije Do sada je bilo riječi o funkcijama. Pominjane su funkcije za ulaz/izlaz (printf, scanf, getchar, putchar...), matematičke funkcije (fabs, sqrt, sin, cos...) itd. Moguće je da korisnici sami definišu funkcije koje su im neophodne za izvršavanje programa. Deklaracija funkcije izgleda tip_funkcije ime_funkcije(lista_argumenata...) tip_funkcije predstavlja tip rezultata kojeg funkcija vraća. To može biti bilo koji od standarnih ili korisnički definisanih tipova programskog jezika C ili tip void ime_funkcije je proizvoljan identifikator funkcije za koje važe ista pravila kao i za davanje imena promjenljivima lista_argumenata je niz od nijednog, jednog ili više argumenata funkcije. Svaki argument mora imati svoje ime i tip. U slučaju da postoji više argumenata svaki novi je potrebno odvojiti zarezom od prethodnog. Primjeri deklaracija funkcija int funkcija(); float funkcija1(int x); void funkcija2(intx, char y, float z); Osim deklaracije funkcije potrebno je definisati šta ta funkcija radi. Definicija funkcije se piše u bloku naredbi ograničenim. Npr. za prvu funkciju bi to izgledalo int funkcija() Tijelo funkcije... Deklaracija funkcije mora biti iznad main() funkcije, dok definicija može biti i ispod, ali u prostijim programima je lakše napisati definiciju funkcije odmah iza deklaracije. U definiciji funkcije mora postojati (osim eventualno u funkcijama tipa void) naredba koja prekida izvršavanje funkcije i vraća njenu vrijednost. To je naredba return. Funkcija za sabiranje dva realna broja bi izgledala float saberi(float x, float y) float rezultat = x+y; return rezultat; Pozivu ove funkcije je potrebno kao argumente zadati dva realna broja a ona kao rezultat vraća njihov zbir float rezultat = saberi(2.4, 3.5); U slučaju da je funkcija tipa void, ona ne vraća nikakv rezultat. Ukoliko je potrebno izaći iz te funkcije, može se pozvati komanda return bez vrijednosti iza nje.

34 Bitno je napomenuti da kod ovakvog definisanja funkcija argumenti ne mijenjaju svoje vrijednosti nakon poziva funkcije, tj. njihova vrijednost ostaje nepromjenjena. U sljedećem programu vrijednost promjenljive n ostaje nepromjenjena u nakon pozova funkcije f, iako se u funkciji vrijednost argumenta uvećava za jedan. void f(int n) n++; int n = 1; f(n); printf("%d\n", n); Primjer 15. Napisati funkciju koja izračunava faktorijel datog broja. int faktorijel(unsigned int broj) int i, fakt=1; for(i=1; i<=broj; i++) fakt *= i; return fakt; Primjer 16. Napisati funkciju koja ispituje da li je dati broj prost. int prost(unsigned int broj) int i; for(i=2; i<broj; i++) if(broj % i == ) return 1; Obzirom da u C-u ne postoji logički tip, ukoliko se radi o nekoj funkciji koja treba da vrati vrijednost tačno/netačno, kao što je slučaj sa ovom, tada je ona tipa int i vraća 1 ako treba da vrati tačno a ako treba da vrati netačno. Iz tog razloga ova funkcija je tipa int i u zavisnosti od (ne)ispunjenja uslova vraća se vrijednost ili vrijednost 1.

35 Primjer 17. Napisati program koji štampa sve proste brojeve manje od 1. Ovdje ćemo iskoristiti funkciju iz prethodnog primjera. Za svaki broj od 1 pozivanjem funkcije iz prethodnog primjera ćemo ispitati da li je prost. int prost(unsigned int broj) int i; for(i=2; i<broj; i++) if(broj % i == ) return 1; int i; for(i=1; i<=1; i++) if(prost(i) == 1) printf("%d\t", i); Primjer 18. Napisati program koji ispisuje sve brojeve manje od 5 koji su Nivenovi i Armstrongovi. Kod zadataka koji su kompleksniji, najlakše je problem razbiti na podprobleme i za svaki od njih uvesti funkciju. Ovdje će biti uvedene četiri funkcije za računanje sume cifara datog broja, za računanje sume kubova cifara datog broja i funkcija koje ispituju da li je broj Nivenov odnosno Armstrongov. int sumacifara(int n) // int suma = ; for ( ; n>; n/=1) suma += n%1; return suma; int sumakubova(int n) int suma = ;

36 for ( ; n>; n/=1) suma += pow(n%1, 3); return suma; int nivenov(int n) if(n % sumacifara(n) == ) return 1; int armstrongov(int n) if(n == sumakubova(n)) return 1; int i; for(i=1; i<=5; i++) if(armstrongov(i) && nivenov(i)) printf("%d\t", i); Rekurzija U programskom jeziku C moguće je pisati rekurzivne funkcije. To znači da funkcija može pozivati samu sebe, bilo direktno ili indirektno. Kod rekurzivnih funkcija bitno je obezbijediti izlaz iz rekurzije, tj. uslov u kojem se rekurzija prekida. Primjer 19. Napisati rekurzivnu funkciju koja izračunava faktorijel datog broja. Funkcija faktorijela se rekurzivno može predstaviti kao f(n) = n*f(n-1) sa početnim uslovom f(1) = 1. int faktorijel(unsigned int n) if(n == 1) return 1; return n*faktorijel(n-1); Primjer 2. Napisati rekurzivnu funkciju koja štampa prvih n prirodnih brojeva u obrnutom redoslijedu.

37 void stampa(unsigned int n) if(n == ) return; printf("%d\n", n); stampa(n-1); Nizovi Deklaracija niza u programskom jeziku C ima sljedeći oblik tip_niza ime_niza[maksimalna_veličina] Sljedeće deklaracije nizova su ispravne int niz_cijelih_brojeva[1]; int niz_realnih_brojeva[5]; char niz_karaktera_brojeva[15]; Elementima niza se pristupa preko njihovih indeksa koji se navode u uglastim zagradama iza imena niza, s tim što prvi element niza ima indeks nula. Tako, prvom elementu niza iz prošlog primjera ćemo dodijeliti neki vrijednost na sljedeći način niz_cijelih_brojeva[] = vrijednost; Inicijalizacija elemenata niza može se izvršiti pri samoj deklaraciji niza tako što se nakon deklaracije niza u uglu vitičastih zagrada navedu vrijednosti elementa niz. Izraz int niz[5] = 1, 2, 3, 4, 5; deklariše niz od pet elemenata čije su početne vrijednosti 1, 2, 3, 4 i 5, odnosno dobija se niz promjenljivih int niz[] = 1; int niz[1] = 2; int niz[2] = 3; int niz[3] = 4; int niz[4] = 5; U radu s nizovima, ondnosno njihovim indeksima prirodno se nameće korišćenje for petlji, pri čemu se brojači petlje koriste za indekse u nizu. U takvim petljama brojači idu od do duzina_niza 1. Sljedeći primjer pokazuje kako deklarisati niz od 1 cijelih brojeva, učitati mu vrijednosti elemenata sa tastature i odštampati ih int niz[1], i; for(i=; i<1; i++) scanf( %d, &niz[i]); for(i=; i<1; i++) printf( %d, niz[i]); U C se mogu na sličan način definisati i višedimenzioni nizovi, samo je potrebno pri deklaraciji niza navesti veličine svake od dimenzija. Dovodimenzioni niz cijelih brojeva dimenzija 2x2 bi definisali na sljedeći način int dvo_niz[2][2]; Indeksi višedimenzionalnih nizova imaju iste osobine kao i kod jednodimenzionih.

38 Primjer 21. Učitati niz sa tastature i izračunati aritmetičku sredinu elemenata, i minimalni i maksimalni element. int a[1], i, suma=, min, maks; for(i=; i<1; i++) scanf("%d", &a[i]); min = maks = a[]; for(i=; i<1; i++) suma += a[i]; min = (a[i] < min)? a[i] : min; maks = (a[i] > maks)? a[i] : maks; printf("artimeticka sredina je %.2f\n", (float)suma/1); printf("minimalni element %d\n", min); printf("maksimalni element %d\n", maks); Primjer 22. Učitati niz sa tastature dvije matrice 3x3 pronaći njihov zbir i odštampati ga na ekranu. int mat1[3][3], mat2[3][3], zbir[3][3]; int i, j; printf("unesite elemente matrice 1\n"); for(i=; i<3; i++) for(j=; j<3; j++) scanf("%d", &mat1[i][j]); printf("unesite elemente matrice 2\n"); for(i=; i<3; i++) for(j=; j<3; j++) scanf("%d", &mat2[i][j]);

39 printf("zbir matrica je\n"); for(i=; i<3; i++) for(j=; j<3; j++) printf("%d ", mat1[i][j] + mat2[i][j]); printf("\n"); Primjer 23. Napisati rekurzivnu i iterativnu funkciju koja izračunava n-ti član (n < 2) Fibonačijevog niza. : n-ti član Fibonačijevog niza zadat je rekurentnom relacijom f n = f n-1 + f n-2. int fib_rek(int n) if(n > 2) printf("greska! n mora biti manje od 2\n"); return -1; if(n == 1 n == 2) return 1; return fib_rek(n-1) + fib_rek(n-2); int fib_iter(int n) if(n > 2) printf("greska! n mora biti manje od 2\n"); return -1; int niz[2], i; niz[] = niz[1] = 1; for(i=2; i<2; i++) niz[i] = niz[i-1] + niz[i-2]; return niz[n]; Nizovi karaktera U programskom jeziku C, nizovi karaktera se ponašaju drugačije od nizova brojeva. Na kraju svakog niza karaktera se automatski dodaje karakter '\' koji predstavlja kraj niza. Tako niz karaktera abcd u C se predstavlja kao [a,b,c,d,\].

40 Ova činjenica nam omogućava da koristimo nizove karaktera, čak i kada ne znamo njihovu dužinu, kretanjem kroz niz sve dok se ne dođe do karaktera '\'. Osim toga, niz karaktera se može unijeti i štampati u cjelini, a ne element po element kao nizovi brojeva. Konverzija za niz karaktera je %s. Sljedeći primjer pokazuje kako sa tastaure možemo učitati niz karaktera i odrediti mu dužinu char niz[1]; scanf( %s, &niz); int i, duzina = ; for(i=; niz[i]!= '\'; i++) duzina++; printf( %d, duzina); Nizovi kao argumenti funkcija Ukoliko želimo da definišemo funkciju koja za argument ima niz, niz kao argument funkcije možemo prenijeti na jedan od sljedećih načina tip_funkcije f1(tip_niza ime_niza[]); tip_funkcije f2(tip_niza* ime_niza); Funkcija koja računa dužinu niza karaktera izgledala bi int duzina(char niz[]) int i, duzina = ; for(i=; niz[i]!= '\'; i++) duzina++; return duzina; Kada je niz argument funkcije, vrijednost elemenata se može promjeniti u funkciji, za razliku od argumenata osnovnih tipova. Nakon izvršavanja sljedećeg programa vrijednost elemenata niza postaju 2 i 3. void f(int a[]) a[]++; a[1]++; int niz[2] = 1, 2; f(niz); printf("%d\n%d", niz[], niz[1]); Razlozi za ovo biće objašnjeni kada se bude govorilo o pokazivačima. Primjer 24. Napisati funkciju koja dopisuje jedan niz karaktera na drugi.

41 void prepis(char prvi[], char drugi[], char rezultat[]) int i, j=; for(i=; prvi[i]!= '\'; i++) rezultat[j++] = prvi[i]; for(i=; drugi[i]!= '\'; i++) rezultat[j++] = drugi[i]; rezultat[j] = '\'; char prvi[1], drugi[1], rezultat[2]; scanf("%s", &prvi); scanf("%s", &drugi); prepis(prvi, drugi, rezultat); printf("%s", rezultat);

42 Riješeni zadaci Zadatak 16. Napisati funkciju koja provjerava da li dat niz karaktera predstavlja ispravan hekdasecimalni broj u obliku #broj i funkciju koja pretvara dati niz karaktera koji predstavlja heksadekadni broj u dekadni. : Radi lakšeg rješavanja ovog zadatka, uvešćemo pomoćne funkcije koje ispituju da li dati karakter predstavlja cifru, slovo između a i f i slovo između A i F. U rješenju se koristi funkcija strlen(char s[]) biblioteke string.h 4 koja vraća duzinu niza karaktera s i koja je analogna funkciji int duzina(char s[]). #include <math.h> #include <string.h> int cifra(char c) if(c >= '' && c <= '9') return 1; int slovoa_f(char c) if(c >= 'a' && c <= 'f') return 1; int slovoa_f(char c) if(c >= 'A' && c <= 'F') return 1; int ispravan(char hex[]) if(hex[]!= '#') int i; for(i=1; hex[i]!= '\'; i++) if(cifra(hex[i]) == && slovoa_f(hex[i]) == && slovoa_f(hex[i]) == ) return 1; 4 Opis datoteke string.h dat je u dodatku A

43 int hexudek(char hex[]) int i, rez = ; int d = strlen(hex); for(i=1; hex[i]!= '\'; i++) if(cifra(hex[i]) == 1) rez += (hex[i] - '') * (int) pow(16, d-i-1); else if(slovoa_f(hex[i]) == 1) rez += (hex[i] - 'a' + 1) * (int) pow(16, d-i-1); else rez += (hex[i] - 'A' + 1) * (int) pow(16, d-i-1); return rez; char niz[1]; scanf("%s", &niz); if(ispravan(niz) == ) printf("broj nije ispravan\n"); else printf("%s = %d", niz, hexudek(niz)); Zadatak 17. Sa tasture se unosi niz karaktera oblika <broj1><operator><broj2>, pri čemu su broj1 i broj2 dvocifreni brojevi a operator +, -, * ili /. Napisati program koji učitava niz karaktera, ispituje da li je ispravan izraz i izračunava vrijednost unesenog izraza. U programu ćemo koristiti ugrađenu funkciju isdigit(char c) koja je definisana u datoteci ctype.h 5 koja ispituje da li je dati karakter cifra i analogna je funkciji cifra(char c) iz prethodnoh zadatka. #include <ctype.h> int ispravan(char izraz[]) if(!isdigit(izraz[])!isdigit(izraz[1])!isdigit(izraz[3])!isdigit(izraz[4])) if(izraz[2]!= '+' && izraz[2]!= '-' && izraz[2]!= '*' && izraz[2]!= '/') 5 Opis datoteke ctype.h dat je u dodatku A

44 return 1; char izraz[5]; scanf("%s", &izraz); if(ispravan(izraz) == ) printf("izraz nije ispravan!\n"); return -1; int broj1 = (izraz[] - '') * 1 + (izraz[1] - ''); int broj2 = (izraz[3] - '') * 1 + (izraz[4] - ''); printf("%s = ", izraz); switch(izraz[2]) case '+': printf("%d", broj1 + broj2); break; case '-': printf("%d", broj1 - broj2); break; case '*': printf("%d", broj1 * broj2); break; case '/': printf("%.2f", (double)broj1 / broj2); break; Zadatak 18. Napisati program koji sa tastature učitava polinom (stepen < 1 i koeficijente), štampa ga na ekran, učitava vrijednost v i štampati vrijednost polinoma u tački v. float koef[11]; int stepen, i; printf("unesite stepen polinoma:"); scanf("%d", &stepen); for(i=; i<=stepen; i++) printf("unesite koeficijent a[%d]: ", i); scanf("%f", &koef[i]);

45 printf("p(x) = "); for(i=; i<=stepen; i++) printf("%.2f*x^%d + ", koef[i], i); printf("\n"); float v, vr = ; printf("unesite vrijednost v: "); scanf("%f", &v); for(i=; i<=stepen; i++) vr += koef[i] * pow(v,i); printf("p(%.2f) = %.2f\n", v, vr); Zadaci za vježbu 1. Sa ulaza se unosi osnova <= 1 i broj. Provjeriti da li je taj broj ispravan broj za datu osnovu i ako jeste izračunati njegovu vrijednost u osnovi Sa ulaza se unosi broj u osnovi deset i osnova <= 1. Odštampati vrijednost datog broja u datoj osnovi 3. Napisati program koji sa tastature čita broj n (najviše 1), niz od n cijelih brojeva i vrijednost n a zatim provjerava da li je v u nizu, na kom je mjestu i koliko u nizu ima brojeva manjih od n 4. Za dati niz realnih brojeva ispitati da li je testerast (niz je testarast ako važi x 1 <x 2 >x 3 <x 4 >... ili x 1 >x 2 <x 3 >x 4 <...) 5. Napisati program koji ispisuje sve proste brojeve manje od 1 koristeći Eratostenovo sito. 6. Zadatu matricu ispisati spiralno, u smjeru kazaljke na satu, počevši od A 11.* 7. Napisati program koji učitava dvije realne kvadratne matrice (prvo dimenzije pa elemente, najviše 1x1) i ispisuje njihov proizvod. 8. Napisati program koji učitava dva polinoma i ispiruje nihov proizvod. 9. Napirati program koji izračunava n-ti stepen datog polinoma. 1. Napirati program koji izračunava n-ti izvod datog polinoma. 11. Napisati rekurzivnu funkciju koja ispisuje romb čija je dužina stranice n, kao na slici (na slici n=2) * * * * 12. Napisati program koji sa tastature učitava broj n i štampa sve permutacije tih n elemenata. 13. Napisati funkciju koja dati realni broj prevodi u odgovarajući niz karaktera, npr u 123, Napisati funkcije koje ispituju da li su sva niza karaktera jednaka i da li su jednaki na prvih n mjesta (ne koristiti datoteku string.h)

46 15. Napisati funkciju koja koja dati niz karaktera razbija na dva niza karaktera date dužine. 16. Data su dva niza karaktera. Ispitati da li je drugi niz karaktera podniz prvog. 17. Data su dva niza karaktera. Napisati program koji pravi novi niz karaktera koji se sastoji od karaktera koji se pojavljuju u oba niza. 18. Data su dva niza karaktera. Napisati program koji pravi novi niz karaktera koji se sastoji od karaktera koji se pojavljuju u prvom, a ne pojavljuju se u drugom nizu. 19. Napisati program koji vrši šifrovanje ulaznog teksta: svako slovo sa ulaza zamjenjuje se sa slovom koje je na tri mjesta udaljeno od njega u abecedi. 2. Napisati funkciju koja na osnovu date reči formira šifru koja se dobija tako što se svako slovo u riječi zameni sa naredna tri slova koja su mu susedna u abecedi. Na primer, reč "tamo" treba da bude zamenjena sa "uvwbcdnoppqr". 21. Napisati program koji u datom tekstu uklanja sve višestruke razmake. 22. Napisati program koji iz datog teksta štampa riječi (neprekidne nizove karaktera). Svaka riječ treba da se nalazi u novom redu. 23. Napisati funkcije koje dati niz slova pretvara u mala, odnosno u velika slova. 24. Napisati program koji radi s dvodimenzionim matricama koristeći nizove (učitavanje, štampa i sabiranje) 25. Napisati funkciju koja provjerava da li je data matrica simetrična 26. Napisati funkciju koja provjerava da li je data matrica magični kvadrat (magični kvadrat je kadratna matrica kod koje je suma brojeva u svakom redu i koloni jednaka) 27. a. Napisati funkciju koja za datu matricu računa transponovanu matricu b. Napisati funkciju koja provjerava da li je data matrica jedinična 28. Za datu matricu ispitati da li je ortogonalna (matrica je ortogonalna ako važi A AT = E)

Baze podataka (vježbe) SQL - uvod i osnove naredbe SELECT. Sveučilište u Zagrebu PMF Matematički odsjek

Baze podataka (vježbe) SQL - uvod i osnove naredbe SELECT. Sveučilište u Zagrebu PMF Matematički odsjek Baze podataka (vježbe) SQL - uvod i osnove naredbe SELECT Sveučilište u Zagrebu PMF Matematički odsjek Kako započeti? Ulogirajte se na student (bilo kojim ssh klijentom). Kako započeti? Ulogirajte se na

Bardziej szczegółowo

PARCIJALNE DIFERENCIJALNE JEDNAČINE. , odnosno

PARCIJALNE DIFERENCIJALNE JEDNAČINE. , odnosno PARCIJALNE DIFERENCIJALNE JEDNAČINE. Odrediti Košijevo rešenje parijalne diferenijalne jednačine : p + q + 0 koje adovoljava uslov : 0 i p + q + 0 Najpre moramo da prebaimo na drugu stranu! p + q Sada

Bardziej szczegółowo

Neprekidnost i limes. Definicija. Neka je I R otvoreni interval i c I. Funkcija. f : I {c} R

Neprekidnost i limes. Definicija. Neka je I R otvoreni interval i c I. Funkcija. f : I {c} R 4 Neprekidnost i es Definicija. Neka je I R otvoreni interval i c I. Funkcija f : I {c} R ima es u točki c jednak L R ako za svaki niz ( n ) u I {c} vrijedi n = c = n + f( n) = L. n + Može se pokazati

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

Vježba 2 Regularni izrazi I (eng. regex)

Vježba 2 Regularni izrazi I (eng. regex) Ponavljanje: tipovi podataka i funkcije Funkcija za provjeru regex-a REGEX Funkcije search() i match() Kvantifikatori Klase/razredi uzoraka Uvod u skupine (grupe) uzoraka Domaća zadaća Rad s regularnim

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami

Bardziej szczegółowo

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal Instrukcja wyboru, pętle 2 wykład. Podstawy programowania - Paskal Tematy Instrukcja wyboru jeden z wielu wariantów: case Pętle while repeat for Instrukcje sterowania pętli break continue goto Instrukcja

Bardziej szczegółowo

Algoritmi i strukture podataka

Algoritmi i strukture podataka Algoritmi i strukture podataka vežbe 4 Mirko Stojadinović 27. oktobar 2013 1 Hip Hip je binarno stablo koje zadovoljava uslov hipa: ključ svakog čvora veći je ili jednak od ključeva njegovih sinova. Pored

Bardziej szczegółowo

dt dt 2 2t = 3 (1 + t). y (x) = x. ] b) x = sin 2 t, y = cos 2 t [ 1 ] c) x = e 2t cos 2 t, y = e 2t sin 2 t [ tg t tg (t + π/4) ]

dt dt 2 2t = 3 (1 + t). y (x) = x. ] b) x = sin 2 t, y = cos 2 t [ 1 ] c) x = e 2t cos 2 t, y = e 2t sin 2 t [ tg t tg (t + π/4) ] 168 Glava 3. Diferencijalni račun 487. Funkcija y = f(x) je zadata parametarskim jednačinama: Naći y (x). x = 2t t 2, y = 3t t 3 (t > 1). y (x) = dy dx = dy dt dt dx = ẏ ẋ = 3 3t2 2 2t = 3 (1 + t). 2 Iz

Bardziej szczegółowo

1. UVOD U TEORIJU FORMALNIH JEZIKA

1. UVOD U TEORIJU FORMALNIH JEZIKA 1. UVOD U TEORIJU FORMALNIH JEZIKA 17 1.1 ZNAKOVI I NIZOVI ZNAKOVA 19 1.2 DEFINICIJA FORMALNOG JEZIKA 20 Formalni jezik 20 Svojstvo prefiksa 21 Operacije nad jezicima 21 Produkt jezika 21 Zatvarač jezika

Bardziej szczegółowo

BAZE PODATAKA. Neđeljko Lekić.

BAZE PODATAKA. Neđeljko Lekić. BAZE PODATAKA SQL SELECT (I dio) Neđeljko Lekić Irena Orović ć www.etf.ac.me www.elektronika.t-com.me t me U OVOJ LEKCIJI SQL SELECT WHERE klauzula SELECT iz više tabela Povezivanje tabela SELECT SQL SELECT:

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji? Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.

Bardziej szczegółowo

Matematička analiza 4

Matematička analiza 4 Matematička analiza 4 zadaci za vežbu Dragan S. Dor dević 21.3.213. 2 Sadržaj 1 Integrali 5 1.1 Dvostruki integrali........................ 5 1.2 Trostruki integrali......................... 9 1.3 Nesvojstveni

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Matematička analiza 4

Matematička analiza 4 Matematička analiza 4 zadaci za vežbu Dragan S. Dor dević 1.3.13. Glava 1 Integrali Izračunati sledeće dvostruke integrale: 1.1. I(a) = G ( + y) a, gde je skup G odre den nejednačinama: >, y >, < a +

Bardziej szczegółowo

Wykład 1

Wykład 1 Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Udruženje matematičara TK - (b a) (c a) + C. a + b c = x, b + c a = y, c + a b = z. x + y = 2b, z + x = 2a i y + z = 2c.

Udruženje matematičara TK -   (b a) (c a) + C. a + b c = x, b + c a = y, c + a b = z. x + y = 2b, z + x = 2a i y + z = 2c. Prvi razred Zadaci i rješenja Zadatak 1. Odrediti vrijednost izraza w = (a + b c) (b + c a) (c + a b) + + (a c) (b c) (b a) (c a) (c b) (a b). Rješenje 1. Izraz je definisan ako i samo ako je a b, b c

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include

Bardziej szczegółowo

Dariusz Chaberski. UMK Toruń

Dariusz Chaberski. UMK Toruń przykłady w języku ANSI C Dariusz Chaberski UMK Toruń 1 rekurencja funkcji int silnia(int arg){ if(arg==1) return 1; return arg*silnia(arg-1); int liczba; printf("podaj liczbe: "); scanf("%d", &liczba);

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1 Język ANSI C Pierwsze starcie. Programowanie Proceduralne 1 Znowu trochę historii 1972 Dennis Ritchie (Bell Labs.,New Jersey), projekt języka C na bazie języka B 1973 UNIX, jądro w C, pierwszy przenośny

Bardziej szczegółowo

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

Instrukcje sterujące. Programowanie Proceduralne 1

Instrukcje sterujące. Programowanie Proceduralne 1 Instrukcje sterujące Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne * mnożenie x * y x y x / dzielenie x / y y + dodawanie x +

Bardziej szczegółowo

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 2 Zmienne i obsługa wejścia/wyjścia Krzysztof Banaś Podstawy programowania 1 Programowanie Programowanie typowe kroki zapis kodu źródłowego w pliku tekstowym kompilacja usuwanie

Bardziej szczegółowo

Programowanie strukturalne język C - wprowadzenie

Programowanie strukturalne język C - wprowadzenie Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość

Bardziej szczegółowo

BAZE PODATAKA. Neđeljko Lekić.

BAZE PODATAKA. Neđeljko Lekić. BAZE PODATAKA SQL SELECT (III dio) Neđeljko Lekić Irena Orović ć www.etf.ac.me www.elektronika.t-com.me t me U OVOJ LEKCIJI I dalje SELECT ORDER BY Grupne p funkcije (Aggregate g functions) GROUP BY i

Bardziej szczegółowo

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Pętla while Pętla while Pętla

Bardziej szczegółowo

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Druxtvo matematiqara Srbije REXENjA ZADATAKA OPXTINSKOG TAKMIQENjA IZ MATEMATIKE Prvi razred A kategorija AC + AC 1.

Druxtvo matematiqara Srbije REXENjA ZADATAKA OPXTINSKOG TAKMIQENjA IZ MATEMATIKE Prvi razred A kategorija AC + AC 1. Druxtvo matematiqara Srbije REXENj ZDTK OPXTINSKOG TKMIQENj IZ MTEMTIKE Prvi razred kategorija. Rexenje : Taqka K je sredixte duжi,teje + K =. Vektori K i M su kolinearni, tj. K = λ M ikakoje sredixte duжi

Bardziej szczegółowo

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 5 6 7 Charakter wykładu ˆ zakłada znajomość idei programowania strukturalnego (np. w Pascalu) oraz podstaw używania środowiska UNIX (wykonywanie

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

Programowanie strukturalne język C

Programowanie strukturalne język C Programowanie strukturalne język C Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl S. Samolej - Informatyka 1 Funkcje obsługujące wyjście programu

Bardziej szczegółowo

Historia języka C. Struktura programu

Historia języka C. Struktura programu Historia języka C 1 1972: Dennis Ritchie i system UNIX; 1 1978: K & R (Kernighan & Ritchie) C; 1 1989: standard ANSI (C90). Struktura programu dyrektywy preprocesora opis nazw zmiennych i ich typu; ciąg

Bardziej szczegółowo

Język C - podstawowe informacje

Język C - podstawowe informacje Język C - podstawowe informacje Michał Rad AGH Laboratorium Maszyn Elektrycznych 2014-12-05 Outline Program w języku C Funkcje Składnia Instrukcje sterujace Na koniec... Po kolei napisać program (zwykły

Bardziej szczegółowo

Programowanie strukturalne język C

Programowanie strukturalne język C Programowanie strukturalne język C Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl S. Samolej - Informatyka 1 Cechy programowania strukturalnego

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

Stałe i zmienne znakowe. Stała znakowa: znak Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby

Bardziej szczegółowo

token DOT WORD dve vrednosti

token DOT WORD dve vrednosti Skener Skener je zadužen za leksičku analizu Skener preuzima (skenira) znak po znak (programskog) teksta radi prepoznavanja simbola sastavljenih od zadanih znakova ili njihovih sekvenci. Pri tome: ignoriše

Bardziej szczegółowo

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28:

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28: Program w C wer. 10 z drobnymi modyfikacjami! Wojciech Myszka 2015-05-02 18:28:29 +0200 Tak wygląda program w języku C 1 / Hello World in C, Ansi s t y l e / 2 #include < s t d i o. h> 3 i n t main ( void

Bardziej szczegółowo

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998. Literatura Język C 1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998. 2. Andrzej Zalewski, Programowanie w językach C i C++ z wykorzystaniem pakietu Borland C++, Nakom, Poznań

Bardziej szczegółowo

Języki i metody programowania. Omówienie języków C, C++ i Java

Języki i metody programowania. Omówienie języków C, C++ i Java Języki i metody programowania Omówienie języków C, C++ i Java Język C Język programowania ogólnego przeznaczenia Historia: M. Richards - BCPL - lata 60-te ubiegłego stulecia K. Thompson - B dla UNIX (DEC

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Unie, typdef, opeartory bitowe, operator przecinkowy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Definicja Unia (ang. union) jest typem,

Bardziej szczegółowo

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59: Program w C wer. 12 z drobnymi modyfikacjami! Wojciech Myszka 2018-06-29 14:59:06 +0200 Tak wygląda program w języku C 1 /* H e l l o World i n C, Ansi s t y l e */ 2 # i n c l u d e < s t d i o. h> 3

Bardziej szczegółowo

Języki programowania - podstawy

Języki programowania - podstawy Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1

Język ANSI C. Pierwsze starcie. Programowanie Proceduralne 1 Język ANSI C Pierwsze starcie. Programowanie Proceduralne 1 Znowu trochę historii 1972 Dennis Ritchie (Bell Labs.,New Jersey), projekt języka C na bazie języka B 1973 UNIX, jądro w C, pierwszy przenośny

Bardziej szczegółowo

ECLIPSE wnioski z dwóch pierwszych laboratoriów

ECLIPSE wnioski z dwóch pierwszych laboratoriów PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową)

Bardziej szczegółowo

0. OSNOVE

0. OSNOVE 0.1 JEZIK Operacije nad jezicima Simboli i nizovi simbola Klasifikacija jezika Regularni skupovi SVOJSTVA REGULARNIH SKUPOVA 0.2 REGULARNI IZRAZI Algebarska svojstva regularnih izraza 0.3 GRAMATIKE Gramatika

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Pojam matrice je, neovisno o primjenama, uveden potkraj 19. st., a povezuje se s imenima J.J. Sylvester-a i A. Cayley-a;

Pojam matrice je, neovisno o primjenama, uveden potkraj 19. st., a povezuje se s imenima J.J. Sylvester-a i A. Cayley-a; 2. MATRICE I DETERMINANTE Matrice (pravokutne sheme brojeva) susrećemo kod raznih problema u matematici, ali i u kemiji, zici, ekonomiji..., jer se s njima relativno jednostavno racuna; Pojam matrice je,

Bardziej szczegółowo

INSTRUKCJE REPETYCYJNE PĘTLE

INSTRUKCJE REPETYCYJNE PĘTLE INSTRUKCJE REPETYCYJNE PĘTLE Pętla while( ) while ( wyrażenie ) instrukcja; while ( wyrażenie ) instrukcja_1; instrukcja_2;... instrukcja_n; Pętla wykonywana jest tak długo jak wartość wyrażenie jest różna

Bardziej szczegółowo

Co nie powinno być umieszczane w plikach nagłówkowych:

Co nie powinno być umieszczane w plikach nagłówkowych: Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct

Bardziej szczegółowo

Bardzo szybkie podsumowanie: wykład 1 wer. 6 z drobnymi modyfikacjami!

Bardzo szybkie podsumowanie: wykład 1 wer. 6 z drobnymi modyfikacjami! Bardzo szybkie podsumowanie: wykład 1 wer. 6 z drobnymi modyfikacjami! Wojciech Myszka 2016-05-08 17:54:50 +0200 Uwagi 1. Obowiązuje cały materiał! 2. Tu tylko podsumowanie. Program w C wer. 11 z drobnymi

Bardziej szczegółowo

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Język C część 2. Podejmowanie decyzji w programie. if else. switch Język C część 2 Podejmowanie decyzji w programie if else Instrukcja warunkowa umożliwia wykonanie pewnej instrukcji w zależności od wartości wyrażenia. Wszystkie wartości różne od 0, są w języku C traktowane

Bardziej szczegółowo

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja Pętle W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. Instrukcja for ma następującą postać: for (w1;w2;w3) instrukcja w1, w2, w3 są wyrażeniami Schemat blokowy

Bardziej szczegółowo

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Programowanie I C / C++ laboratorium 01 Organizacja zajęć Programowanie I C / C++ laboratorium 01 Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-12 Program zajęć Zasady zaliczenia Program operacje wejścia i wyjścia instrukcje

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Argumenty funkcji main Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Argumenty funkcji main dwa równoważne sposoby int main(int argc, char*

Bardziej szczegółowo

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 3 Konstrukcje sterujące. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 3 Konstrukcje sterujące Krzysztof Banaś Podstawy programowania 1 Kod źródłowy i wykonanie programu Kod źródłowy w języku programowania zawiera przepis wykonania programu

Bardziej szczegółowo

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof] 1 Plik jest wydzielonym fragmentem pamięci (najczęściej dyskowej) posiadającym nazwę. Z punktu widzenia C plik jest ciągiem bajtów, z których każdy może zostać oddzielnie odczytany. Zgodnie ze standardem

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

Który ciąg instrukcji nada zmiennej n wartość równą ilości liczb w pliku binarnym skojarzonym ze strumieniem fp? Wymierz odpowiedź

Który ciąg instrukcji nada zmiennej n wartość równą ilości liczb w pliku binarnym skojarzonym ze strumieniem fp? Wymierz odpowiedź Ile bajtów zajmuje tekst "\tansi-c\n"? a. 9 b. 10 c. 8 d. 11 Niepoprawny Ocena dla tego zadania: 0/1. Zaznacz poprawne definicje inicjujące tablice a. int M[ ] [ 4 ] = { { 1, 2 }, { 0 }, { 3, Tablica o

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania - Roman Grundkiewicz - 013Z Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

Bardziej szczegółowo

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia Krzysztof Banaś Podstawy programowania 1 Typy danych Podstawowe wbudowane typy danych języka C: _Bool 0 i 1 (C99) znaki (char) 7

Bardziej szczegółowo

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3, WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy zmiennych języka C++ Nazwa typu (nazwa skrócona) Rozmiar (bajtów) unsigned char 1 signed char (char) unsigned short int (unsigned) signed short int (int)

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

3 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 3 1/8 Język C Instrukcja laboratoryjna Temat: Instrukcje warunkowe, pętle. 3 Przygotował: mgr inż. Maciej Lasota 1) Instrukcje warunkowe. Instrukcje warunkowe pozwalają zdefiniować warianty

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.

Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania

Bardziej szczegółowo

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1 Funkcje czyli jak programować proceduralne. Programowanie Proceduralne 1 Struktura programu w C # include / Dyrektywy p r e p r o c e s o r a / #define PI 3.1415 float g =. 5 ; / Zmienne

Bardziej szczegółowo

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji Ćwiczenie nr 3 Temat: Definicje i wykorzystanie funkcji, parametry funkcji Zagadnienia: Definicja funkcji składnia podstawowa. Sposoby przekazania parametrów (argumentów) funkcji: przez wartość, przez

Bardziej szczegółowo

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym

Bardziej szczegółowo

WYKŁAD 4, 5 i 6. Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C. Programy: c1_1.c... c1_9.c.

WYKŁAD 4, 5 i 6. Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C. Programy: c1_1.c... c1_9.c. WYKŁAD 4, 5 i 6 Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C Programy: c1_1.c... c1_9.c Tomasz Zieliński KOMPILATOR vs. INTERPRETER (1) - ogólnie C/C++ = kompilatory tłumaczą

Bardziej szczegółowo

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Krzysztof Grudzień kgrudzi@kis.p.lodz.pl! Zbigniew Chaniecki zch@kis.p.lodz.pl 1 program zajęć - wykład Podstawowe pojęcia

Bardziej szczegółowo

Programowanie w elektronice: Podstawy C

Programowanie w elektronice: Podstawy C Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego

Bardziej szczegółowo

Różności w C++ Marek Pudełko

Różności w C++ Marek Pudełko Różności w C++ Marek Pudełko Kodowanie i reprezentacja liczb 2 Kodowanie uzupełnieniowe U1 i U2 Bity liczby numerujemy od 0 do k 1 Bitom nr j, j < k 1 przyporządkowuje się wagi w j =2 j Najstarszej pozycji

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

INSTRUKCJE REPETYCYJNE PĘTLE

INSTRUKCJE REPETYCYJNE PĘTLE INSTRUKCJE REPETYCYJNE PĘTLE Pętla while( ): while ( wyrażenie ) instrukcja; while ( wyrażenie ) instrukcja_1; instrukcja_2;... instrukcja_n; Pętla wykonywana jest tak długo jak wartość wyrażenie jest

Bardziej szczegółowo

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

BAZE PODATAKA. Model Objekti/Veze. Neđeljko Lekić. Dr. Peter Chen

BAZE PODATAKA. Model Objekti/Veze. Neđeljko Lekić.     Dr. Peter Chen BAZE PODATAKA Model Objekti/Veze Dr. Peter Chen Neđeljko Lekić Irena Orović www.etf.ac.me, www.elektronika.t-com.me TEME Model Objekti/Veze (Entity/Relationship model) Entiteti i atributi Veze M/V dijagrami

Bardziej szczegółowo

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 4. Podstawowe biblioteki. Pętle. Operatory inkrementacji, dekrementacji, przypisania. Instrukcje goto, continue, break. Operacje na plikach.

Bardziej szczegółowo

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++ Podstawy Programowania :: Roman Grundkiewicz :: 014 Zaj cia 1 1 rodowisko Dev-C++ 1. Wprowadzenie do C/C++ Uruchomienie ±rodowiska: Start Programs Developments Dev-C++. Nowy projekt: File New Project lub

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Programowanie komputerów. Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska

Programowanie komputerów. Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska Programowanie komputerów Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska Plan printf Typy danych Temperatury wersja 2 #include /* print Fahrenheit-Celsius table for

Bardziej szczegółowo

Wykład 9 2014-06-20 09:37 PP2_W9

Wykład 9 2014-06-20 09:37 PP2_W9 Wykład 9 Przykłady programów z wykorzystaniem klas - przykład funkcji operatorowych - obiektowa implementacja listy jednokierunkowej kopiowanie obiektów - klasa "latający napis" Pozycjonowanie w plikach

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego

Bardziej szczegółowo