Osnovni elementi jezika C
Programski jezik C predstavlja temelj modernog programiranja i poznat je po svojoj efikasnosti i bliskosti sa hardverom. Njegova jednostavna, ali moćna sintaksa omogućava programerima da razvijaju aplikacije visokih performansi, operativne sisteme i ugrađene sisteme. Razumevanje osnovnih elemenata jezika C, kao što su varijable, operatori i petlje, ključ je za prelazak na složenije koncepte i jezike kao što su C++ i Java. Ova stranica pruža osnovne informacije i praktične primere koji će vam pomoći da savladate jezgro jezika C.
Elementi jezika C
- Leksički simboli.
Nedeljivi niz znakova Identifikatori, konstante,službene reči, operatori separatori
- Beli znakovi:
Znak za razmak, tabulacija, vertikalna tabulacija, prelazak u nov red i prelazak na nov list
- Komentari.
Proizvoljni tekst koji se ignoriše od strane kompajlera:
// komentar do kraja reda /* komentar u više redova */ - Naredbe.
To su nizovi leksičkih simbola. Mogu biti deklarativne i izvršne.
- Programi.
To su nizovi naredbi pomoću kojih se ostvaruju složene obrade podataka.
- Direktive pretprocesora.
To su uputstva pomoću kojih može da se utiče na tok prevođenja programa. Njih uzima u obzir pretprocesor, deo prevodioca za jezik C koji vrši pripremnu obradu teksta pre samog prevođenja
Počinju direktivom #
Identifikatori
Služe za označavanje svih vrsta elemenata programa: podataka, simboličkih konstanti, tipova podataka koje definiše programer, potprograma. Mogu da se sastoje od slova, cifara i znakova podvučeno(_).
Primeri ispravnih
a, b, x, alfa, ALFA, datum_rodjenja, cena, a1
Primeri neispravnih
12ab, x-z, int
Službene reči C jezika
To su rezervisane reči C jezika i ne mogu se koristiti kao identifikatori.
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.
Sekcija: Vežbe za praktično učenje
1. Sabiranje dva broja
Zadatak: Napišite program koji unosi dva cela broja i ispisuje njihov zbir.
Kod:
#include <stdio.h>
int main() {
int a, b, suma;
printf("Unesite dva broja: ");
scanf("%d %d", &a, &b);
suma = a + b;
printf("Suma brojeva je: %d\n", suma);
return 0;
}
Za više informacija o tipovima podataka pogledaj lekciju Podaci u jeziku C.
2. Provera parnosti
Zadatak: Napišite program koji proverava da li je uneseni broj paran ili neparan.
Kod:
#include <stdio.h>
int main() {
int broj;
printf("Unesite broj: ");
scanf("%d", &broj);
if (broj % 2 == 0) {
printf("Broj %d je paran.\n", broj);
} else {
printf("Broj %d je neparan.\n", broj);
}
return 0;
}
3. Logički izraz: da li je broj veći od 5
Zadatak: Napišite program koji proverava da li je uneti broj veći od 5. Rezultat poređenja sačuvaj u celobrojnoj promenljivoj uslov (u C-u je tačno = 1, netačno = 0).
Kod:
#include <stdio.h>
int main() {
int a, x, uslov;
scanf("%d", &a);
x = 5;
uslov = a > x;
if (uslov) {
printf("Broj %d je veći od 5\n", a);
} else {
printf("Broj %d nije veći od 5\n", a);
}
return 0;
}
4. Prost broj (naprednije)
Zadatak: Napišite program koji proverava da li je broj prost.
Kod:
#include <stdio.h>
int main() {
int broj, prost = 1;
printf("Unesite broj: ");
scanf("%d", &broj);
if (broj <= 1) {
prost = 0;
} else {
for (int i = 2; i <= broj / 2; i++) {
if (broj % i == 0) {
prost = 0;
break;
}
}
}
if (prost) {
printf("Broj je prost.\n");
} else {
printf("Broj nije prost.\n");
}
return 0;
}
Saveti
Nakon što rešite zadatke, eksperimentišite sa različitim ulazima kako biste bolje razumeli kako program funkcioniše.
Napredni izazov
Kombinujte ove elemente i napišite složeniji program, poput jednostavne kalkulacije koja podržava sabiranje, oduzimanje, množenje i deljenje.
Objašnjenje složenijih tema u programskom jeziku C
1. Pokazivači (Pointers)
Pokazivači su jedan od ključnih elemenata jezika C i omogućavaju manipulaciju memorijskim adresama, što ih čini izuzetno moćnim, ali i kompleksnim za razumevanje. U lekciji o pokazivačima obrađuje se:
- Šta su pokazivači: Kratak uvod u koncept memorijskih adresa i kako pokazivači funkcionišu.
- Deklaracija i inicijalizacija pokazivača: Primeri kako deklarisati pokazivače i dodeliti im vrednosti.
- Operacije sa pokazivačima: Korišćenje operatora * i &, kao i rad sa aritmetikom pokazivača.
- Praktična primena: Pokazivači u funkcijama (prosleđivanje argumenata po referenci) i rad sa dinamičkom memorijom koristeći funkcije kao što su malloc i free.
Primer:
#include <stdio.h>
int main() {
int x = 10;
int *ptr = &x; // ptr čuva adresu promenljive x
printf("Vrednost promenljive x: %d\n", x);
printf("Adresa promenljive x: %p\n", (void *)&x);
printf("Vrednost na koju pokazuje ptr: %d\n", *ptr);
return 0;
}
Za više informacija o pokazivačima pogledaj lekciju Pokazivači
2. Rad sa nizovima
Nizovi omogućavaju čuvanje više elemenata istog tipa pod jednim imenom, što ih čini osnovnim građevinskim blokom za strukture podataka. U lekciji o nizovima obrađuje se:
- Deklaracija i inicijalizacija nizova: Kreiranje statičkih i dinamičkih nizova.
- Rad sa nizovima: Iteracija kroz elemente koristeći petlje.
- Višedimenzionalni nizovi: Osnove rada sa matricama i njihova primena u problemima poput algoritama sortiranja i množenja matrica.
- Veza nizova i pokazivača: Objašnjenje kako su nizovi i pokazivači povezani u jeziku C.
Primer:
#include <stdio.h>
int main() {
int niz[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("Element %d: %d\n", i, niz[i]);
}
return 0;
}
Za više informacija o nizovima, pogledajte Nizovi u jeziku C/C++
3. Funkcije
Funkcije su osnovni alat za organizaciju koda u jeziku C. U lekciji o funkcijama obrađuje se:
- Deklaracija i definicija funkcija: Razlika između prototipa i implementacije funkcija.
- Prenos argumenata: Objašnjenje razlike između prenošenja po vrednosti i po referenci.
- Rekurzivne funkcije: Primeri rekurzije za rešavanje problema kao što su faktorijel, Fibonačijev niz ili Hanojske kule.
- Modularni pristup: Korišćenje funkcija za organizaciju kompleksnijih programa.
Primer:
#include <stdio.h>
int faktorijel(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * faktorijel(n - 1);
}
int main() {
int broj = 5;
printf("Faktorijel od %d je %d\n", broj, faktorijel(broj));
return 0;
}
Za više informacija o funkcijama, pogledajte Funkcije u C
Srodni članci
Stringovi u jeziku C
Primeri zadataka sa podacima
Primeri sa stringovima
Algoritmi
Testovi i kontrolni zadaci
Proveri znanje
Otvori kviz
Kviz: Elementi jezika C
1. Koji identifikator je ispravan?
2. Kako se piše komentar do kraja reda?
3. Može li int da bude ime promenljive?
4. Čime počinju direktive pretprocesora, npr. include?
Osnovni elementi jezika C
Programski jezik C predstavlja temelj modernog programiranja i poznat je po svojoj efikasnosti i bliskosti sa hardverom. Njegova jednostavna, ali moćna sintaksa omogućava programerima da razvijaju aplikacije visokih performansi, operativne sisteme i ugrađene sisteme. Razumevanje osnovnih elemenata jezika C, kao što su varijable, operatori i petlje, ključ je za prelazak na složenije koncepte i jezike kao što su C++ i Java. Ova stranica pruža osnovne informacije i praktične primere koji će vam pomoći da savladate jezgro jezika C.
Elementi jezika C:
- Leksički simboli.
Nedeljivi niz znakova Identifikatori, konstante,službene reči, operatori separatori
- Beli znakovi:
Znak za razmak, tabulacija, vertikalna tabulacija, prelazak u nov red i prelazak na nov list
- Komentari.
Proizvoljni tekst koji se ignoriše od strane kompajlera:
// komentar do kraja reda /* komentar u više redova */ - Naredbe.
To su nizovi leksičkih simbola. Mogu biti deklarativne i izvršne.
- Programi.
To su nizovi naredbi pomoću kojih se ostvaruju složene obrade podataka.
- Direktive pretprocesora.
To su uputstva pomoću kojih može da se utiče na tok prevođenja programa. Njih uzima u obzir pretprocesor, deo prevodioca za jezik C koji vrši pripremnu obradu teksta pre samog prevođenja
Počinju direktivom #
Identifikatori:
Služe za označavanje svih vrsta elemenata programa: podataka, simboličkih konstanti, tipova podataka koje definiše programer, potprograma. Mogu da se sastoje od slova, cifara i znakova podvučeno(_).
Primeri ispravnih:
a, b, x, alfa, ALFA, datum_rodjenja, cena, a1
Primeri neispravnih:
12ab, x-z, int
Službene reči C jezika:
To su rezervisane reči C jezika i ne mogu se koristiti kao identifikatori.
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.
Sekcija: Vežbe za praktično učenje
1. Sabiranje dva broja
Zadatak: Napišite program koji unosi dva cela broja i ispisuje njihov zbir.
Kod:
#include <stdio.h>
int main()
{
int a, b, suma;
printf("Unesite dva broja: ");
scanf("%d %d", &a, &b);
suma = a + b;
printf("Suma brojeva je: %d\n", suma);
return 0;
}
Za više informacija o tipovima podataka pogledaj lekciju Podaci u jeziku C.
2. Provera parnosti
Zadatak: Napišite program koji proverava da li je uneseni broj paran ili neparan.
Kod:
#include <stdio.h>
int main()
{
int broj;
printf("Unesite broj: ");
scanf("%d", &broj);
if (broj % 2 == 0)
{
printf("Broj %d je paran.\n", broj);
}
else
{
printf("Broj %d je neparan.\n", broj);
}
return 0;
}
3. Logički izraz: da li je broj veći od 5
Zadatak: Napišite program koji proverava da li je uneti broj veći od 5. Rezultat poređenja sačuvaj u celobrojnoj promenljivoj uslov (u C-u je tačno = 1, netačno = 0).
Kod:
#include <stdio.h>
int main() {
int a, x, uslov;
scanf("%d", &a);
x = 5;
uslov = a > x;
if(uslov) {
printf("Broj %d je veći od 5\n", a);
} else {
printf("Broj %d nije veći od 5\n", a);
}
return 0;
}
4. Prost broj (naprednije)
Zadatak: Napišite program koji proverava da li je broj prost.
Kod:
#include <stdio.h>
int main() {
int broj, prost = 1;
printf("Unesite broj: ");
scanf("%d", &broj);
if (broj <= 1) {
prost = 0;
} else {
for (int i = 2; i <= broj / 2; i++) {
if (broj % i == 0) {
prost = 0;
break;
}
}
}
if (prost) {
printf("Broj je prost.\n");
} else {
printf("Broj nije prost.\n");
}
return 0;
}
Saveti
Nakon što rešite zadatke, eksperimentišite sa različitim ulazima kako biste bolje razumeli kako program funkcioniše.
Napredni izazov
Kombinujte ove elemente i napišite složeniji program, poput jednostavne kalkulacije koja podržava sabiranje, oduzimanje, množenje i deljenje.
Objašnjenje složenijih tema u programskom jeziku C
1. Pokazivači (Pointers)
Pokazivači su jedan od ključnih elemenata jezika C i omogućavaju manipulaciju memorijskim adresama, što ih čini izuzetno moćnim, ali i kompleksnim za razumevanje. U lekciji o pokazivačima obrađuje se:
- Šta su pokazivači: Kratak uvod u koncept memorijskih adresa i kako pokazivači funkcionišu.
- Deklaracija i inicijalizacija pokazivača: Primeri kako deklarisati pokazivače i dodeliti im vrednosti.
- Operacije sa pokazivačima: Korišćenje operatora * i &, kao i rad sa aritmetikom pokazivača.
- Praktična primena: Pokazivači u funkcijama (prosleđivanje argumenata po referenci) i rad sa dinamičkom memorijom koristeći funkcije kao što su malloc i free.
Primer:
#include <stdio.h>
int main() {
int x = 10;
int *ptr = &x; // ptr čuva adresu promenljive x
printf("Vrednost promenljive x: %d\n", x);
printf("Adresa promenljive x: %p\n", (void*)&x);
printf("Vrednost na koju pokazuje ptr: %d\n", *ptr);
return 0;
}
Za više informacija o pokazivačima pogledaj lekciju Pokazivači
2. Rad sa nizovima
Nizovi omogućavaju čuvanje više elemenata istog tipa pod jednim imenom, što ih čini osnovnim građevinskim blokom za strukture podataka. U lekciji o nizovima obrađuje se:
- Deklaracija i inicijalizacija nizova: Kreiranje statičkih i dinamičkih nizova.
- Rad sa nizovima: Iteracija kroz elemente koristeći petlje.
- Višedimenzionalni nizovi: Osnove rada sa matricama i njihova primena u problemima poput algoritama sortiranja i množenja matrica.
- Veza nizova i pokazivača: Objašnjenje kako su nizovi i pokazivači povezani u jeziku C.
Primer:
#include <stdio.h>
int main() {
int niz[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("Element %d: %d\n", i, niz[i]);
}
return 0;
}
Za više informacija o nizovima, pogledajte Nizovi u jeziku C/C++
3. Funkcije
Funkcije su osnovni alat za organizaciju koda u jeziku C. U lekciji o funkcijama obrađuje se:
- Deklaracija i definicija funkcija: Razlika između prototipa i implementacije funkcija.
- Prenos argumenata: Objašnjenje razlike između prenošenja po vrednosti i po referenci.
- Rekurzivne funkcije: Primeri rekurzije za rešavanje problema kao što su faktorijel, Fibonačijev niz ili Hanojske kule.
- Modularni pristup: Korišćenje funkcija za organizaciju kompleksnijih programa.
Primer:
#include <stdio.h>
int faktorijel(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * faktorijel(n - 1);
}
int main() {
int broj = 5;
printf("Faktorijel od %d je %d\n", broj, faktorijel(broj));
return 0;
}
Za više informacija o funkcijama, pogledajte Funkcije u C
Srodni članci
Stringovi u jeziku C
Primeri zadataka sa podacima
Primeri sa stringovima
Algoritmi
Testovi i kontrolni zadaci
