Uvod c Programiranje

Preview:

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 kresimir.mestrovic@tvz.hr

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