Programiranje u C
21. Uvod u predmet i literatura
Literatura
: Rajko Vulin: Od sada programiramo u C-u, Šk, Zagreb
Ljiljana Miletić, Sanja Grabusin: Zbirka zadataka iz programskog jezika C, Pentium d.o.o
Uvod
Programski jezik C razvijen je u AT&T Bell laboratories, s ciljem da se stvori programski jezik koji će omogućiti brzo i efikasno
programiranje. S obzirom da se ta firma bavila sistemskim programiranjem, novi programski jezik trebao je biti na dovoljno niskoj
razini da riješi probleme koji su se do tada uglavnom rješavali u ASSEMBLER-u, ali i na dovoljno visokoj razini da bi se iskoristile sve
prednosti jezika više razine. Da su u svojoj namjeni uspjeli, pokazuje niz programskih paketa pisanih u programskom jeziku C (OS
UNIX)
Glavne postavke C-a postale su dostupne širem krugu korisnika 1978. godine, a danas se slobodno može reći da je C
programski jezik br. 1.
U C program se mogu direktno uključivati naredbe pisane u ASSEMBLER-u, što (zajedno s mogućnošću direktnog pristupa
pojedinim bitovima, bajtovima i blokovima memorije) C čini vrlo pogodnim za pisane sistemskih programa.
Programski jezik C sadrži sve naredbe neophodne za strukturirano programiranje (if, case, petlju...)
Osnovne karakteristike TURBO C-a
Programski paket TURBO C proizvod je programske kuće BORLAND.
U programski paket TURBO C uključen je uređivač teksta (EDITOR), prevodilac (COMPILER), program za povezivanje
(LINKER) i program za otkrivanje i uklanjanje grešaka (DEBUGGER). Također postoji i mogućnost izvršavanja programa korak po
korak, pa se u svakom trenutku mogu doznati vrijednosti pojedinih varijabli, što je pogodno u fazi ispitivanja logike programa.
2. Struktura programa u C-u
Najpogodniji način rješavanja programskih problema je rastavljanje problema u niz manjih, međusobno povezanih cjelina
(strukturirano programiranje). Ovaj pristup rješavanja problema podržan je i u C-u. Programi u C-u sastoje se od niza međusobno
povezanih funkcija. Broj funkcija nije ograničen. U programu je obavezna jedna i samo jedna funkcija - funkcija
main()
. Ona
označava mjesto na kojem počinje izvršavanje programa. Za poziv funkcije dovoljno je navesti njezino ime. Sve funkcije koje se
koriste u većini programa smještene su u biblioteke funkcija.
Nakon svake naredbe u C-u mora stajati znak ;, koji (kao i u Pascalu) označava kraj jedne i početak druge naredbe. Niz naredbi
grupiranih u jednu logičku cjelinu predstavlja blok naredbi. Početak bloka označava se sa
, a završetak sa
.
Sve varijable koje se koriste u programu moraju se deklarirati, obično na početku programa ili funkcije, prije prve izvršne
naredbe.
Tekst napisan između /* */ je komentar i ne utječe na tok izvršavanja programa.
Programski jezik C nije pozicijski (kao npr. FORTRAN), što znači da kod može početi u bilo kojoj koloni, te da se naredbe, izrazi i
komentari mogu protezati u više programskih linija.
Primjer 1:
/*ucitati dva broja i ispisati veci (uvjetni operator)*/
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b;
clrscr();
printf("
Upisi dva broja: ");
scanf("%d,%d",&a,&b);
(a<b)? printf ("
Veci je %d",b) : printf ("
Veci je %d",a);
getch();
}
3. Editor turbo C-a
Ulaskom u direktorij u kojem je smješten programski jezik C (najčešće
BORLANDC
), potrebno je ući u direktorij
BIN
, te sa
bc
pokrenuti program. Nakon toga se na zaslonu pojavljuje tzv. osnovni zaslon, koji se sastoji od četiri dijela:
-osnovni izbor
-prozor za uređivanje teksta i status linija
-prozor za poruke prevodioca
-kratki pregled značenja vrućih tipki
Opcije osnovnog izbora aktiviraju se istovremenim pritiskom na tipku ALT i tipku početnog slova željene opcije, ili tipkom F10 i
strelicama.
Izborom opcije
File
otvara se prozor s dodatnim izborom za rad s datotekama i direktorijima (new, open, save, save as, save all,
change dir, print, dos shell, quit).
Standardne opcije za kopiranje, brisanje, undo, te show clipboard nalaze se u izborniku
Edit
.
Traženje i zamjena teksta neke su od opcija izbornika
Search
.
Opcija prevođenja i izvršavanje programa nalazi se u izborniku Run, a samo prevođenje u izborniku Compile.
U izborniku
Debug
potavljaju se razne opcije programa za pronalaženje i ispravljanje grešaka, a izbornik
Project
služi za
aktiviranje i deaktiviranje programa čiji se kod nalazi u više datoteka.
Options
služi za postavljanje različitih opcija prevodioca i
povezivača, a
Window
za uređenje radnog okruženja.
4. Identifikatori, ključne riječi i tipovi podataka
Identifikatori
su imena koja se dodjeljuju varijablama, funkcijama, i sl. Sastoje se od niza alfanumeričkih znakova (brojke i
slova). Dva identifikatora su različita ako se razlikuju u prva 32 znaka. Prvi znak identifikatora mora biti slovo ili donja crta (_).
TURBO C dozvoljava i upotrebu $ kao jednog od znakova identifikatora, s tim da ne može biti na prvom mjestu. Identifikatori ne
smiju biti ključne riječi programskog jezika C.
Programski jezik C razlikuje velika i mala slova, tako da su varijable varij1 i Varij1 dvije različite varijable.
Ključne riječi
su identifikatori koji imaju točno određeno značenje. One, zajedno sa sintaksom programskog jezika, određuju što
se i na koji način u određenom programskom jeziku može učiniti. Karakteristika programskog jezika C je relativno mali broj ključnih
riječi (32+11)
Ključne riječi pišu se malim slovima
.
Ključne riječi: 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 + asm, _cs, _ds, _es, _ss, cdecl, far,
huge, interrupt, near, pascal.
Programski jezik C podržava pet osnovnih tipova podataka. To su:
znakovni, cjelobrojni, realni, realni dvostruke preciznosti
i tip podataka koji ne sadrži vrijednost.
Ključne riječi koje ih određuju su:
char
,
int
,
float
,
double
i
void
. Tip podataka koji ne
sadrži vrijednost svrstan je u osnovne tipove podataka jer se često koristi kkod provjere tipova podataka, za definiranje funkcije bez
argumenata i funkcija koje ne vraćaju nikakvu vrijednost.
Pravilnom izborom tipa podataka može se povećati efikasnost programa. Stoga tipove podataka treba zadavati ovisno o opsegu
koji će određena varijabla poprimiti tokom izvođena programa.
Osnovni tipovi podataka mogu se preciznije definirati pomoću modifikatora, koje ćemo spominjati kada se za to pojavi potreba.
Dozvoljene su gotovo sve vrste pretvaranja tipova podataka, a u izrazima su dozvoljene kombinacije različitih tipova podataka.
Krajnji rezultat u kojem se nalaze različiti tipovi podataka ovisi o ugrađenim pravilima za pretvaranje tipov podataka, ili ga može
zadati osobno programer.
Osim osnovnih postoji i nekoliko složenijih tipova podataka kao što su polja, strukture, polja struktura, unije i polja bitova.
Omogućeno je i definiranje vlastitih tipova podataka.
Formati za učitavanje i ispis podataka:
Tip podataka
Format
cjelobrojni (int)
realni (float, double)
znakovni (char)
niz znakova (string)
d
f
c
s
5. Deklaracija varijabli, konstante i aritmetički operatori
S
v
e varijable koje se koriste u programu moraju se deklarirati. Deklaracijom varijable zadaje se
tip
i
ime
varijable. Opći oblik
naredbe za deklaraciju je:
tip_podataka lista_varijabli;
Tip_podataka
predstavlja jedan od osnovnih ili korisnički definiranih tipova podataka, a
lista_varijabli
predstavlja niz varijabli
koje će u toku izvršavanja programa sadržavati vrijednosti zadanog tipa podataka, odvojenih zarezom.
Npr:
int a, b, c;
2

6. Operator pridruživanja i pretvorba tipova podataka
Operator pridruživanja
u programskom jeziku C je =. Kao što znamo, njegova je uloga da vrijednost desne strane izraza
pridruži varijabli na lijevoj strani izraza. Operator pridruživanja ima najniži prioritet izvršavanja.
Opći oblik naredbe za pridruživanje vrijednosti je
varijabla=izraz;
Operator pridruživanja se može naći u kombinaciji s aritmetičkim operatorima, pa takve kombinacije čine jedinstvene
konstrukcije aritmetičkih izraza karakteristične za programski jezik C, koje na prvi pogled izgledaju nejasno, no, ako se ima u vidu
redosljed izvršavanja operacija pridruživanja koji je s desna na lijevo
uočava se da takav način zapisa predstavlja skraćeni
oblik pisanja aritmetičkih izraza.
Primjer: a+=2; isto je što i a=a+2;
a-=3; znači a=a-3;
a/=10; je a=a/10;
a%=3; je a=a%3;
a*=10+b; znači a=a*10+b;
a+=++b+20; je a=a+b+1+20;
Pretvorba tipova podataka
Tip rezultata aritmetičkih izraza gdje su operandi istog tipa odgovara tipu operanda. Npr. ako su u izrazu a+b, a i b cjelobrojne
varijable, tada će i rezultat biti cjelobrojnog tipa.
U toku izračunavanja izraza u kojima se nalaze različiti tipovi podataka, ti se tipovi svode na isti tip prema ugrađenim pravilima
za pretvaranje tipova podataka koja su sastavni dio programskog jezika C i orjentirana su prema višem tipu podataka.
Tako vrijedi:
1. Svi podaci char i short pretvaraju se u int
2. Ako u izrazu postoji bilo koji operand double, tada se svi podaci pretvaraju u double i rezultat je tipa double.
3. Ako u izrazu postoji bilo koji operand tipa long, tada se svi podaci pretvaraju u long i rezultat je tipa long.
4. Ako je bilo koji od operanada u izrazu deklariran kao unsigned, svi ostali operandi pretvaraju se u unsigned i rezultat je tipa
unsigned.
5. Ako su svi operandi tipa int, tada je i rezultat tipa int.
Korištenje operatora pridruživanja također pokreće automatsko pretvaranje podataka, npr: ako je i cjelobrojna varijabla (int), a j
realna (float), izrazom j=i cjelobrojna vrijednost varijable i najprije će se pretvoriti u realnu, a zatim pridružiti varijabli j. Isto tako, u
izrazu i=j; varijabli i će se pridružiti cjelobrojna vrijednost varijable j dobivena odbacivanjem decimalnog dijela.
4
7. Učitavanje i ispis podataka
Programski jezik C nema ugrađene ulazno/izlazne funkcije, već se ulaz i izlaz podataka obavljaju preko funkcija koje se nalaze u
standardnoj ulazno/izlaznoj biblioteci. Programi koji koriste standardne ulazno/izlazne funkcije morju sadržavati liniju
#include<stdio.h>
koja se obično nalazi na počtku programa. U datoteci stdio.h nalaze se sve U/I funkcije.
Standardna funkcija za
ispis
podataka je
printf()
Ispis niza znakova:
printf ("niz znakova");
Primjer 1:
#include<stdio.h>
main()
{
printf ("Od danas programiramo u C-u");
}
Program se pokreće kombinacijom tipki
CTRL-F9
ili preko izbornika birajući opciju
Run
Run
. @elimo li samo provjeriti ima li
naš program grešaka (naravno, ne logičkih), biramo
Compile
Compile
(
ALT-F9
)
Nakon izvođenja programa C se vraća u prozor u kojem je kod programa, a prozor sa rezultatima ostaje nevidljiv. @elimo li
vidjeti rezultate izvođenja programa treba pritisnuti kombinaciju tipki ALT-F5.
Zadatak:
Ispisati na ekran svoje ime, prezime i adresu, svaki podatak u novi red.
Ispis vrijednosti varijabli:
printf("lista formata",lista varijabli);
npr: ispisati vrijednosti varijabli a i b koje su cjelobrojnog tipa.
printf("%d %d",a,b);
želimo li da u ispisu varijable budu odvojene zarezom pisat ćemo:
printf("%d, %d",a,b);
Dakle, izgled ispisa na zaslonu uređuje se unutar dvostrukih navodnika, a u listi varijabli dolazi samo popis varijabli. Redosljed
navođenja formata mora odgovarati redosljedu navođenja imena varijabli. Pogrešno zadan format u odnosu na deklaraciju varijable
rezultirat će pogrešnim ispisom.
Primjer: izvođenjem naredbe
printf("/n rezultat izraza %d+%d je %d", a,b,c)
ako je a=2, b=3 na zaslon će se ispisati:
rezultat izraza 2+3 je 5
/n
znači da će se prije ispisa prijeći u novi red.
Funkcije za učitavanje:
Funkcija za učitavanje jednog znaka s tipkovnice:
getch()
(njezin prototip nalazi se u datoteci
conio.h
).
Primjer:
#include<stdio.h>
#include<conio.h>
main()
{
printf ("Od danas programiramo u C-u");
getch();
}
5

2.
/*ucitava troznamenkasti broj i ispisuje njegove znamenke*/
#include<stdio.h>
#include<conio.h>
int xyz,x,y,z;
main()
{
clrscr();
printf(" upisi troznamenkasti broj: ");
scanf("%d",&xyz);
x=xyz/100;
y=(xyz/10)%10;
z=xyz%10;
printf(" znamenke broja %d su %d, %d, %d", xyz,x,y,z);
getch();
}
3.
#include<stdio.h>
#include<conio.h>
float a,b,c,d,e,f,x,y,z;
main()
{
clrscr();
printf(" upisi koeficijente sistema dvije jednadzbe s dvije nepoznanice:");
printf(" a:");scanf("%f",&a);
printf(" b:");scanf("%f",&b);
printf(" e:");scanf("%f",&e);
printf(" c:");scanf("%f",&c);
printf(" d:");scanf("%f",&d);
printf(" f:");scanf("%f",&f);
z=(f-c*e)/(a*d-b*c);
x=b*z;
y=a*z;
printf(" rjesenja danog sistema su: x=%.2f, y=%.2f",x,y);
getch();
}
7
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti