C predstavlja temelj za C++. Iako je C++ češće korišćen za desktop aplikacije i igre, početak sa C-om je odlična opcija, naročito ako ste novi u programiranju. Nastavite da čitate da biste saznali zašto.
Šta je C?
C je strukturni programski jezik visokog nivoa. Programi pisani u C-u su prenosivi. C je i dalje jedan od najjačih programskih jezika zbog svoje robustnosti. Koristi se za složene programe kao što su ugrađeni sistemi, drajveri, kerneli, sistemske aplikacije, operativni sistemi poput Microsoft Windows, Apple macOS, baze podataka kao što je MySQL, i neke IoT aplikacije.
C je kompajlirani jezik, što obezbeđuje sloj apstrakcije između mašinskog koda i programa.
Jednostavan C program za sabiranje dva broja izgledaće ovako:
#include<stdio.h> int main() { int a, b, sum; printf("Unesite dva broja za sabiranje: "); scanf("%d%d", &a, &b); sum = a + b; printf("Zbir %d i %d je %d", a, b, sum); return 0; }
Evo rezultata:
Izlaz primera C programa
C programi uključuju `stdio.h` – standardni ulaz/izlaz.
STDIO pruža osnovne ulazno-izlazne funkcije poput `printf` i `scanf`. `printf` se koristi za štampanje nečega (poruka, izlaz) na konzoli, dok se `scanf` koristi za preuzimanje ulaza sa konzole. Koristimo `%d` da označimo da su brojevi celi brojevi.
Ako unesete decimalne brojeve, dobićete neočekivane rezultate. Da biste to izbegli, možete koristiti `%f`. Funkcija `main()` je prva funkcija koja se izvršava kada se program pokrene. Sintaksa je vrlo jednostavna – deklarišete tipove promenljivih i onda ih koristite.
Šta je C++?
C++ se zasniva na principima objektno-orijentisanog programiranja kao što su apstrakcija, polimorfizam, nasleđivanje i enkapsulacija. C++ možete zamisliti kao proširenje C-a sa konceptom klasa i objekata.
Posjedovanje objekata za skladištenje podataka omogućilo je uredniju strukturu programa. Na primer, ako želite da sačuvate podatke o učeniku, možete da kreirate klasu učenika i dodate atribute kao što su ime, godine, hobiji, ocene itd. unutar klase. Možete kreirati stvarni objekat učenika kad god je to potrebno!
class Student { public: char name[20]; int age; float marks; }; //Ovo će kreirati objekat Student student1 = new Student();
U stvarnosti, objekat će biti kreiran i memorija će biti dodeljena samo tokom izvršavanja programa.
C++ pruža visoke performanse, zbog čega je i dalje popularan izbor za razvoj visokoperformansnih igara, ugrađenih sistema, pretraživača, kompajlera i aplikacija zasnovanih na grafici poput obrade slike.
Nekoliko baza podataka kao što je MongoDB napisano je u C++. Baš kao i C, C++ je prenosiv.
Napišimo naš prethodni program za sabiranje u C++ – primetimo razlike u funkcijama.
#include <iostream> using namespace std; int main() { int a, b; cout << "Unesite brojeve: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Imajte na umu da koristimo `cout` i `cin` umesto `printf` i `scanf`. Takođe, deklaracije tipova mogu se obaviti bilo gde u programu pre nego što se promenljiva koristi (na primer, suma promenljive). Naredba za štampanje je prilično jednostavna sa samo imenima promenljivih. Obratite pažnju da koristimo imenovani prostor `std` iz `iostream` zaglavlja. `std` ima metode kao što su `cout`, `cin` i mnoge druge.
Sličnosti između C i C++
Može se reći da je C podskup C++. Postoji mnogo sličnosti između C i C++, kako u načinu na koji su programi napisani, tako i u aplikacijama za koje se koriste. Oba su robusna, prenosiva i visokih performansi. Neke važne sličnosti su:
R.br. | Karakteristika | Objašnjenje |
1. | Sintaksa | Oba jezika imaju istu sintaksu, na primer, deklaraciju promenljive, tačku i zarez na kraju reda, konvencije o imenovanju itd. |
2. | Strukturni i proceduralni | Svaki red koda se izvršava jedan po jedan. Programi su strukturirani na sledeći način – prvo uvozi, zatim deklaracije promenljivih, a zatim glavni kod. |
3. | Funkcija Main() | Sav kod koji treba da se izvrši treba da bude unutar funkcije `main()`. `main()` je prvi poziv funkcije tokom izvršavanja programa. |
4. | Pokazivači | I C i C++ koriste pokazivače na isti način. Pokazivač je promenljiva koja čuva memorijsku adresu druge promenljive. Na primer, `int a = 1;`. Čim se ovaj kod izvrši, memorija (recimo, XX0011) će biti dodeljena za `a`. Memorijskoj lokaciji ‘a’ može se pristupiti korišćenjem znaka ampersanda (&) kao `int ptr_a = &a` |
5. | Ključne reči i operatori | Sve ključne reči i operatori prisutni u C važe i za C++. Na primer, `scope`, `static`, `public`, `int`, itd. C++ takođe ima dodatne operatore i ključne reči. |
Razlike između C i C++
C++ je kreiran da prevaziđe neke od nedostataka C-a i predstavlja nadskup C-a. Dakle, svaki program napisan u C-u će raditi u C++-u – ali ne i obrnuto! Glavna razlika između C i C++ je u tome što je C++ zasnovan na objektno-orijentisanim principima (OOP) programiranja. Takođe, veći je naglasak na proveri tipa u C++. Postoji i nekoliko suptilnijih razlika koje su navedene u nastavku:
C | C++ |
Razvio Denis Riči u AT&T Bel laboratorijama između 1969-1973. | Razvio Bjarne Stroustrup 1979. |
Ne prati principe objektno-orijentisanog programiranja. | Zasnovano na konceptima OOP, kao što su enkapsulacija, polimorfizam i nasleđivanje. |
C sadrži ukupno 32 ključne reči kao što su `switch`, `int`, `static`, `union` i druge. | Sve ključne reči C su važeće u C++, a prisutna je i 31 dodatna ključna reč. |
Podržava samo proceduralno programiranje. | Karakteristike kao što su prijateljske i virtuelne funkcije u C++-u poboljšavaju suštinu OOP-a. |
C podržava ugrađene tipove podataka. | C++ podržava i ugrađene i korisnički definisane tipove podataka kroz koncept klasa. |
Ne postoji odredba za preopterećenje operatora ili funkcije. | C++ podržava i preopterećenje operatora i preopterećenje funkcija (polimorfizam). |
Alokacija memorije se vrši preko `malloc()` i `calloc()` funkcija, a oslobađanje korišćenjem `free()`. | Dodeljivanje memorije se dešava pomoću `new` operatora, a dealokacija pomoću operatora `delete`. |
C ne podržava rukovanje izuzecima. | C++ podržava rukovanje izuzecima. |
Fokusira se na proceduru ili metod više nego na podatke. | Više je fokusiran na podatke. |
Neke druge važne karakteristike prisutne samo u C++ su:
- Korišćenjem ključne reči `namespace`, možemo kreirati promenljive istog imena u različitim imenskim prostorima.
- Možemo koristiti funkcije unutar strukture. Strukture takođe mogu imati modifikatore pristupa.
- Podržava referentne promenljive.
Kada koristiti C ili C++
Ovo je veoma česta debata među programerima – zašto učiti C kada sve mogu da uradim u C++?
Učenje C-a će vam dati solidnu osnovu za strukture podataka, pokazivače, ključne reči, koncepte steka, gomile i alokacije memorije.
Osim toga, C se još uvek široko koristi za visokoperformansne aplikacije, pošto je C kompajler brži od C++ kompajlera. Dakle, ako želite da pišete delove koda koji ne zahtevaju objekte i klase, virtuelne funkcije ili šablone, izaberite C, jer bi C++ mogao biti previše sa svojim velikim bibliotekama.
Većina kodiranja niskog nivoa poput kernela, operativnih sistema i baza podataka se i dalje održava u C-u, tako da će vam poznavanje C-a pomoći da brže naučite C++.
C++ se smatra jednim od najbržih i najefikasnijih jezika – zbog čega je i dalje jedan od najboljih programskih jezika, posebno za visokoperformansne aplikacije kao što su gejming engine, IoT uređaji i desktop aplikacije. Mnoge aplikacije koriste kombinaciju C i C++ koda – za postizanje optimalnih performansi i prednosti objektno-orijentisanog programiranja.
Rezime
U ovom članku smo naučili osnove C i C++ sa jednostavnim primerom programa. Razgovarali smo o glavnim razlikama i sličnostima između oba jezika i kada treba koristiti svaki od njih.
Ako tek započinjete svoj put razvoja softvera, početak sa C-om će vam dati porast samopouzdanja, jer je jednostavan i pokriva sve koncepte programiranja, kao što su strukture podataka, pokazivači, memorija i tako dalje.
Možda će vas zanimati da koristite online C kompajler i C++ kompajler.