Programski jezik C
-
Upload
svetislav-pantic -
Category
Documents
-
view
94 -
download
7
description
Transcript of Programski jezik C
-
Programski jezik C
Tipovi, operatori, selekcije,
repeticije
-
Zadatak1
Sa tastature uitati Ime_Studenta, Prezime_Studenta, Adresu_Studenta, u
fajlu izlaz.txt formirati jedan slog:
Petar
Petrovic
Cetinjska 1b
.
-
Predstavljanje brojeva u razliitim brojnim sistemima
Cifre brojnog sistema su: 0 do (baza 1)
Primer:
binarni (b=2): {0, 1}
oktalni (b=8): {0, 1, 2, 3, 4, 5, 6, 7}
decimalni (b=10): {0, 1, 2, 3,4 ,5 ,6 ,7 , 8, 9}
heksadecimalni (b=16): {0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F}
-
0000 0000 0000 0000
ADRESE SADRAJI
0000 0000 0000 0004
0000 0000 0000 0008 1
0000 0000 0000 000C
0000 0000 0000 0010
0000 0000 0000 0014
0000 0000 0000 0018
0000 0000 0000 001C
0000 0000 0000 0020
0000 0000 0000 0024
0000 0000 0000 0028 0.5
promeljiva x2
promeljiva x1
promeljiva y1
promeljiva y2
Sadraj memorije
int x1;
int x2=1;
double y1;
double y2=0.5;
ADRESE
-
Primer 1
/* Aritmeticke operacije */
#include
int main()
{
int a = 5;
int b = 3;
printf("Zbir a+b je : %d\n",a+b);
printf("Razlika a-b je : %d\n",a-b);
printf("Proizvod a*b je : %d\n",a*b);
printf("Celobrojni kolicnik a/b je : %d\n", a/b);
printf("Pogresan pokusaj racunanja realnog kolicnika a/b je : %f\n", a/b);
printf("Realni kolicnik a/b je : %f\n", (float)a/(float)b);
printf("Ostatak pri deljenju a/b je : %d\n", a%b);
return 0;
}
-
char tip
Karakteri: A, B, c, d, 1, 4, #, ?, \n
char varijabla se koristi za uvanje tekstualnih znakova:
slova,
cifara,
specijalnih znakova,
netampajuih (belih) znakova,
ali moe se koristiti i za uvanje malih celobrojnih vrednosti (0 do 255 ili -128 do 127).
-
char je samo broj!
Svakom karakteru se pridruuje numeriki kod.
Postoje razliiti skupovi kodova:
ASCII (American Standard Code for Information
Interchange) najei.
EBCDIC zastareo, danas se retko koristi.
Noviji skupovi karaktera (Unicode).
Koristiemo ASCII.
-
Primer 2
/* koristenje char kao znakovnog tipa i za malu numericku vrednost */
#include
int main()
{
char znak;
printf(Unesite znak: );
scanf(%c, &znak);
printf(Znak kao karakter je: %c\n", znak);
printf(Numericka vrednost znak-a je: %d\n", znak);
printf(Karakter posle %c je %c\n", znak, znak+1);
return 0;
}
-
Proiriti prethodni primer
tako da program ita neku malu celobrojnu vrednost iz ulazne datoteke
(fscanf) i to zapiite u neku izlaznu datoteku.
-
Omoguavaju obavljanje odreene akcije (u naem sluaju matematike operacije) nad odreenim vrednostima (konstantama, varijablama).
Vrednosti nad kojima se obavlja akcija - operandi.
Uobiajeni operatori: zagrade ()
dodela vrednosti =
sabiranje +
oduzimanje -
mnoenje * deljenje /
moduo %
inkrementacija (uveanje za 1) ++ dekrementacija (umanjenje za 1) - -
Aritmetiki operatori
-
Aritmetiki operatori
a = a + 3 a += 3 a = a b a = b a = a * c a *= c /=, %=
a = a + 1 a += 1 a++ ++a b = b 1 b = 1 b b
i = j++; i = j; j = j + 1; i = ++j; j = j+1; i = j;
-
Relacioni i logiki operatori
Logiki tano je sve razliito od 0 (pre svega 1)
Logiki netano je sve jednako sa 0
Relacioni: < > = == !=
Logiki: && (I), || (ILI), ! (NE)
-
Overflow primer
#include
int main( )
{
int iA = 1000;
int iB = 1000000;
int iC = 3000000;
int iD = 5000000;
printf ("%d * %d = %d\n", iA, iB, iA*iB);
printf ("%d * %d = %d\n", iA, iC, iA*iC);
printf ("%d * %d = %d\n", iA, iD, iA*iD);
return 0;
}
-
Iskazi selekcije
Omoguava da se odreene naredbe izvre uslovno u zavisnosti od vrednosti odreenog iskaza
Iskazi selekcije (grananje):
if
switch
-
If-else iskaz
if (izraz)
naredba1
else
naredba2
Ako je izraz taan, naredba1 se izvrava.
Ako je je izraz netaan, naredba2 se izvrava
U oba sluaja umesto naredbi moe se navesti blok naredbi
-
Primer 3
Koji je vei od dva broja?
...
if ( a > b ) printf(Veci je
);
else printf(Veci je );
START
a, b
a>b
a b
END
NEDA
-
switch iskaz
Viestruki uslovni iskaz Slian if-else if-else konstrukciji
Omoguava izbor proizvoljnog broja opcija. Izbor je zasnovan na celobrojnoj vrednosti.
switch (uslov)
{ case const-izraz: naredbe case const-izraz: naredbe default: naredbe }
-
break
Kada se naie na break, blok naredbi se naputa bez obzira na trenutnu vrednost uslova.
Program nastavlja sa izvravanjem prve naredbe iza bloka.
Ukoliko se pozove u ugnedenim blokovima, break izlazi samo iz
unutranjeg bloka.
-
Primer 4
switch (ocena)
{
case 5: printf("Odlican!\n\n");
break;
case 4: printf("Vrlo dobar!\n\n");
break;
case 3: printf("Dobar!\n\n");
break;
case 2: printf("Dovoljan!\n\n");
break;
case 1: printf("Nedovoljan!\n\n");
break;
default: printf(Ocena mora biti izmedju 1 i 5.);
}
-
Ternarni operator
condition ? expression1 : expression2
Funkcionie kao if-else
min = ( x < y ) ? x : y;
-
Ciklusi
Omoguavaju ponavljanje odreenih naredbi ili bloka naredbi vie puta.
C omoguava vrlo fleksibilne naine za odreivanje broja ponavljanja ciklusa, ili donoenje odluke izlasku iz ciklusa.
Postoje while, for i do-while ciklus.
-
while ciklus
while (izraz)
{
naredbe;
}
Naredbe se izvravaju sve dok je uslov ispunjen, kada to vie nije sluaj izlazi se iz petlje
-
Primer 5
#include
/* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300; floating-point version */
int main()
{
float fahr, celsius;
float lower, upper, step;
lower = 0; /* lower limit of temperature scale */
upper = 300; /* upper limit */
step = 20; /* step size */
fahr = lower;
while (fahr
-
Zadatak 2
Napisati C program koji rauna sumu prvih n prirodnih brojeva, pri emu se n zadaje na poetku programa.
Upotrebom while ciklusa.
-
for ciklus - primer
For petlje se kontroliu brojakom promenljivom.
Primer
for ( i =0; i
-
Zadatak 3
Realizovati mnoenje i deljenje pomou sabiranja i oduzimanja
-
do - while ciklus
do
{
naredbe
} while (izraz);
Slian while ciklusa
Uslov se izraunava nakon tela ciklusa
Telo ciklusa se izvrava NAJMANJE jednom, ak i kada je uslov odmah netaan (jednak nuli)
-
do while ciklus
int broj;
do
{
printf(Unesite pozitivan ceo
broj: );
scanf(%d, &broj);
} while ( broj
-
Primer 6
// Emulacija Linux 'cat' programa, ispisuje sadrzaj datoteke na standardni izlaz
#include // Upravljanje greskama ('errno')
#include
#include // Potreban za 'exit()'
#define MAXL 80
// Dodatni zadatak: Ukloniti suvisne nove redove u ispisu. Uneti nekoliko redova teksta
u 'test.txt' da bi se uocio problem
int main()
{
FILE *pf = fopen("test.txt", "r");
if(pf == NULL) { // Fatalna greska
perror("Can't open file test.txt"); // Ispisi opis i uzrok greske
exit(errno); // Izadji iz programa, vrati OS-u kod uzroka greske
}
char buffer[MAXL]; // Sadrzaj ucitanog dela datoteke
while(fgets(buffer, MAXL, pf) != NULL) // Ucitavaj datoteku deo-po-deo
puts(buffer);
fclose(pf);
return 0;
}
-
Zadatak 4
Emulacija Linux cp programa koristei while
-
Zadatak 5
Sa standardnog ulaza uitati prirodne brojeve N1 i N2. Koristei for ciklus, ispisati sve neparne brojeve od N1 do N2 u datoteku neparni.txt
-
Zadatak 6
Realizovati prikaz ASCII tabele u formatu
karakter, dekadni, oktalni, hexa
-
Zadatak 7
Sa standardnog ulaza uitati prirodne brojeve N i q. Koristei while ispisati sve brojeve od 2 do N koji su deljivi sa q u datoteku deljivi.txt, a sve nedeljive brojeve u datoteku nedeljivi.txt
-
Zadatak 8
Sa standardnog ulaza uitati prirodan broj N. Ispisati u datoteku running sumu prvih N prirodnih brojeva, u sledeem formatu (primer za N=4):
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
-
Zadatak 9
Sa standardnog ulaza uitati prirodan broj N. Ispisati sve njegove inioce u datoteku cinioci.txt