Upload
ivan-perich
View
272
Download
7
Embed Size (px)
DESCRIPTION
Nauči progarmirati u C-u
Citation preview
OPĆA PRAVILA C-a
Stipe Predanić, dipl. ing., predavačdr. sc. Miroslav Slamić, prof. v. šk.
Opća pravila pisanja Opća pravila pisanja CC programa programa C je jezik slobodnog formata (nema pravila koja
propisuju stil pisanja) mjesto početka naredbe u retku je proizvoljno,
moguće je i poželjno umetanje praznina i praznih redova
Opća pravila pisanja Opća pravila pisanja CC programa programa dopušteno je stavljanje više naredbi u istom
retku. Npr: int i,n; printf("Unesite n: "); scanf("%d", &n);
C razlikuje velika i mala slova. Npr: sum,Sum,SUM
ANSI C - kANSI C - ključne riječiljučne riječi predefinirani identifikatori koji za prevodioca imaju
posebno značenje ključne riječi se pišu malim slovima Prema ANSI standardu C ima sljedeće 32 ključne riječi:
autobreakcasecharconst
continuedefault
do
doubleelse
enumexternfloatfor
gotoif
intlong
registerreturnshort
signedsizeof static
structswitchtypedefunion
unsignedvoid
volatilewhile
ANSI C – naredbe za deklaraciju varijabliANSI C – naredbe za deklaraciju varijabli
4 osnovna tipa podataka
charint
floatdouble
Kvalifikatorishortlong
unsignedsigned
Slijedećih par slikopisa su ovdje kako biste VI naučili
Slijedećih par slikopisa su ovdje kako bi
VI nešto zapamtili
Slijedećih par slikopisa su ovdje kako biste VI naučili
Žalbe pošaljite na [email protected]
Koja je razlika?Koja je razlika između kontejnera
pijeska i kontejnera beba?
Integer – floatInteger – cijeli brojevi (1, 2, 100, 200)Float – NE cijeli brojevi (1.1, 2.22,
3.141592)
INTEGER
FLOAT
Float - doubleDouble – podržava više decimala –
veća preciznost
Struktura Struktura CC programa programa C program se sastoji od imenovanih blokova,
deklaracija/definicija varijabli, direktiva pretprocesoru◦ imenovani blokovi se nazivaju funkcije. Za nazive
funkcija se ne smiju koristiti ključne riječi.◦ deklaracijom se opisuje naziv i tip varijable. Definicija
je deklaracija kojom se osim opisa varijable, rezervira prostor u memoriji
Struktura Struktura CC programa programa blok započinje znakom { i završava znakom } blok obuhvaća deklaracije/definicije, naredbe
(statement) i neimenovane blokove svaka naredba i deklaracija/definicija mora završavati
znakom ;◦ blok NE završava znakom ; tj. iza znaka } ne
stavlja se ;
Imenovani blokovi?
DONESI PIVO?
1/7/08 15
Struktura main funkcijeStruktura main funkcije
int main (void) {/* C komentar*/// C++ komentar
return 0;}
Ime funkcijeUlaz u funkciju (ništa)
Tip izlaza funkcije (integer)
Izlazna vrijednost (0)
Početak tijela funkcije
Završetak tijela funkcije
C naredbe
Komentari
C “završetak naredbi"
Struktura Struktura CC programa programaC program mora obavezno imati jednu glavnu
funkcija (main) koja predstavlja mjesto gdje počinje izvođenje programa:int main() { programski blok
return 0;}
Pretprocesorske naredbePretprocesorske naredbe#include <stdio.h> uključuje u
program prije prevođenja standardno zaglavlje <stdio.h> koje sadrži definicije tipova i funkcijskih prototipova (na primjer printf, scanf i druge).
VarijableVarijable Općenito: promjenljiv podatak (lat.variabilis-promjenljiv) U programiranju: varijabla je prostor u memoriji računala,
poznate veličine, kojemu je dodijeljeno ime i čiji se sadržaj može mijenjati
Simbolički se prikazuje pravokutnikom uz koji stoji ime
Smještaj u memoriji računala
x y
x y... ...
VarijableZamislite da za svoje stvari uzimate
kontejner iz OGROMNOG skladišta
VarijableVarijable svaka varijabla se obavezno mora definirati/deklarirati prije
korištenjaint i, n; float sum;
imena varijabli i funkcija su sastavljena od slova i brojki, a prvi znak mora biti slovo ili znak potcrtavanja _
suma god_rod x1 pripremni_dio_studij94god novi+datum x1.1 maticni broj
VarijableVarijable velika i mala slova se razlikuju (imena varijabli i
funkcija se obično pišu malim slovom, imena simboličkih konstanti velikim)
duljina može biti proizvoljna (značajno prvih 31 znakova)
ključne riječi se ne smiju koristiti za imena varijabli
#include <stdio.h>void main() {
float x, y, z, rez; //DEKLARACIJA VARIJABLI scanf("%f %f %f", &x, &y, &z); // ULAZ
printf("%f %f %f \n", x, y, z); // IZLAZ
/* odredi najveći broj */ rez = z; if ( x > y ) { if ( x > z) rez = x; // ALGORITAM } else { if ( y > z) rez = y; } printf("%f \n", rez); // IZLAZ
}
STIL PISANJA KODASTIL PISANJA KODA
23
FunkcijaFunkcija printfprintf#include <stdio.h>...int printf(const char *format, arg1, arg2,..., arg n);printf kao rezultat daje broj bajtova ispisanih na standardnoj izlaznoj jedinici (stdout). Argumenti mogu biti varijable, imena polja ili kompliciraniji izrazi.
24
ISPIS CIJELIH BROJEVAISPIS CIJELIH BROJEVA integer - BROJEVI◦ Ispis cijelih brojeva (bez decimalne točke): 25, 0, -9◦ Pozitivni, negativni ili nula◦ Samo se minus predznak ispisuj, ako nije drugačije
naglašenoPretvorbeni spec ifika tor
Opis
d Prikazuje SIGNED INTEGER . i Prikazuje SIGNED INTEGER (Napomena: i odnosno d
specifikatori imaju različitio značenje kada se koriste sa scanf.) o Prikazuje SIGNED OKTALNI broj. u Prikazuje UNSIGNED INTEGER. x or X Prikazuje UNSIGNED HEXADECIMAL BROJ. Veliko X
uzrokuje da slova A-F budu prikazana kao velik, a malo x uzrokuje ispis a-f kao mala slova.
h o r l ( l e t t e r l) Modifikatori dužine. Ispred specifikatora d određuje da se ispisuje short ili long INTEGER.
25
Ispis znakova i znakovnih nizova (stringova)Ispis znakova i znakovnih nizova (stringova)
c ◦ ispisuje char argument◦ Ne može se koristiti za ispis prvog znaka u stringu ili nizu
s◦ Zahtjeva pokazivač na tip char kao argument◦ Ispisuje znakove do NULL ('\0') znaka ◦ Ne može ispisivati char argument
Zapamtite◦ Jednostruki navodi za znak kao konstantu ('z')◦ Dvostruki navodi za stringove "z" (string u stvarnosti ima
dva znaka – sam znak z' i nul znak '\0')
26
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošću
Širina polja◦ Veličina polja u koje se ispisuju podaci ◦ Ako je širina veća od podataka tipično
se poravnava po desnoj strani Ako je polje premalo, povećava se
automatski da bi podaci stali u polje Minus predznak uzima jednu znakovnu
poziciju u polju◦
27
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošću
Širina polja
◦ Cjelobrojna vrijednost širine umeće se između % i pretvorbenog specifikatora◦ %4d – širina polja je 4
28
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošćuPreciznost◦ Varira ovisno o tipu podataka◦ Cjelobrojne vrijednosti (tipično 1)
Minimalni broj znamenki za ispis◦ Floating point
Broj znamenki koji dolazi iza decimalne točke (e i f) Za g – maksimalni broj značajnih znamenki
◦
29
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošću•Preciznost◦ String (niz)
Maksimalni broj znakova koji će iz stringa biti ispisan◦ Format
Koristi se (.) a zatim broj koji određuje preciznost i sve to poslije %
%.3f
30
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošću
Širina polja i preciznost◦ Oboje se mogu specificirati
%širina.preciznost%5.3f◦ Negativna širina polja – lijevo poravnanje◦ Pozitivna širina polja – desno poravnanje
◦
31
Ispis s širinama polja i preciznošćuIspis s širinama polja i preciznošću
•Širina polja i preciznost◦ Preciznost mora biti pozitivan broj◦ Može se koristiti cjelobrojni izraz za određivanje širine polja
i preciznosti. Možemo staviti (*) na mjesto širine polja i preciznosti Primjer:
printf( "%*.*f", 7, 2, 98.736 );
32
FunkcijaFunkcija scanfscanf#include <stdio.h>...int scanf(const char *format, arg1, arg2,..., arg n);
scanf vraća broj uspješno obrađenih ulaznih polja koja povezuje s navedenim argumentima. Argumenti moraju odgovarati po broju, redoslijedu i tipu formatskim specifikacijama.
33
FunkcijaFunkcija scanfscanf#include <stdio.h>...int scanf(const char *format, arg1, arg2,..., arg n);
S obzirom da su argumenti pokazivači, za polje se navodi njegovo ime (pokazivač na nulti član), a za obične varijable se navodi njihova adresa (npr. &x).
34
FORMATIRANJE ULAZA SA FORMATIRANJE ULAZA SA sscanfcanf FUNKCIJOM FUNKCIJOMscanf◦ Formatiranje ulaza◦ Mogućnosti
Unos svih tipova podataka Unos specifičnih znakova Preskakanje specifičnih znakova
35
Format◦ Scanf (format kontrolni string, ostali argumenti);◦ Format kontrolni string
Opisuje format upisa◦ Ostali argumenti
Pokazivač na varijable u koje će unos biti pohranjen◦ Može uključivati ŠIRINU POLJA radi čitanja specificiranog
broja znakova sa ulazne konzole
FORMATIRANJE ULAZA SA FORMATIRANJE ULAZA SA sscanfcanf FUNKCIJOM FUNKCIJOM
36
FORMATIRANJE ULAZA SAFORMATIRANJE ULAZA SA scanfscanfPretvorbeni spec ifika tor OPIS
Integers – cjelobrojni brojevi d Čita SIGNED dekadski INTEGER. Odgovarajući argument je
pokazivač na INTEGER i Čita opcionalno SIGNED dekadski, oktalni ili heksadecimanlni
INTEGER. Odgovarajući argument je pokazivač na INTEGER. o Čita OKTALNI INTEGER broj . Odgovarajući argument je
pokazivač na UNSIGNED INTEGER. u Čita UNSIGNED dekadski INTEGER. Odgovarajući argument je
pokazivač na UNSIGNED INTEGER. x or X Čita HEKSADECIMALNI INTEGER broj . Odgovarajući
argument je pokazivač na UNSIGNED INTEGER. h or l Stavlja se3 prije bilo kojge integer pretvorbenog specifikatora
specifiers da bi odredio short ili long integer unos. Floating-point brojevi e, E, f, g ili G Čita FLOATING-POINT vrijednost. Odgovarajući argument je
pokazivač na float varijablu l ili L Ako se stavi ispred floating-point pretvorbenih specifikatora
specifiers tada označava da je double ili long double vrijednost ulaz.
37
FORMATIRANJE ULAZA SAFORMATIRANJE ULAZA SA scanfscanfnastavak
P r e t v o r b e n i s p e c i f i k a t o r OPIS Znakovi i stringovi c Čita znak. Odgovarajući argument je pokazivač na char, ne
doddaje se NULL znak ('\0') . s Čita string (niz). Odgovarajući argument je pokazivač na polje
tipa char koje je dovoljno veliko da prihvati string i doda automatski na kraj NULL znak ('\0').
Skup zadanih zbakova [scan znaci] Skenira string prema skupu znakova koji su pohranjenni u polju. Ostali p Čita adresu na isti način kao kod naredbe printf sa %p. n Pohranjuje broj unešenih znakova u trenutnoj scanf naredbi.
Odovarajući argument je pokazivač na int % Preskače znak postotka (%) na ulazu.
Primjer formatnih specifikatora za Primjer formatnih specifikatora za izlazne (printf) instrukcijeizlazne (printf) instrukcije
Primjer formatnih specifikatora za Primjer formatnih specifikatora za ulazne (scanf) instrukcijeulazne (scanf) instrukcije