C++
C++ (C plus plus; izgovorjava [cé plús plús] je splošnonamenski računalniški programski jezik. V C++ so podatkovni tipi statični, zapis kode je prost. Jezik podpira večparadigmatično proceduralno programiranje, podatkovno abstrakcijo, objektno usmerjeno in generično programiranje.
C++ je razvil danski računalnikar Bjarne Stroustrup, ki je delal v Bellovih laboratorijih, leta 1983. Prvotno se je jezik imenoval »C with Classes« (C z razredi) in je bil razširitev programskega jezika C. Od 90. let je eden najbolj priljubljenih komercialnih programskih jezikov. Najprej so C-ju dodali razrede, nato med drugim virtualne funkcije, preobložitev operatorjev (operatorski ad-hoc polimorfizem), večkratno dedovanje, predloge in rokovanje z izjemami.
Leta 1998 so sprejeli tudi ISO standard za jezik C++ kot ISO/IEC 14882:1998. Trenutna različica standarda je ISO/IEC 14882:2003. Razvijajo tudi novo različico z neuradnim imenom C++0x.
Vsebina |
Osnovne značilnosti jezika[uredi]
Podobnosti s C-jem[uredi]
- Funkcija main() je v C++ še vedno C-jevska.
- Vse kar je zapisano v C, načeloma velja v C++.
Zgled programa[uredi]
Program PozdravljenSvet[uredi]
#include <iostream> int main() { std::cout << "Pozdravljen svet!" << std::endl; return 0; // ni potrebno po ISO standardu }
Kar je zapisano za // mora prevajalnik prezreti, zato ni važno, kaj je napisano.
Kazalci[uredi]
Kazalci so najmočnejše orodje v C++. Z njimi se dostopa do pomnilnika, kar omogoča veliko prednosti. Kazalci so v bistvu neke spremenljivke, ki kažejo (referirajo) na drugo spremenljivko ali objekt. V kazalcu je shranjen naslov objekta ali spremenljivke na katero kaže, s tem se izve njegovo vrednost. Kazalec se daklarira tako, da se najprej napiše vrsto spremljivke na katero referira, znak za kazalec (»*«), nato ime kazalca in še na koncu znak za dodeljevanje (»=«), predznak (»&«) in ime spremenljivke ali objekta na katero referira(glej spodnji zgled). Težava pri kazalcih pa je, da je to izmed najbolj zakompliciranih snovi v C++. Velika prednost kazalcev je, da ko se prenaša argumente v funkcijo, se prenašajo dejansko sami argumenti ne pa kopije teh argumentov kot pri običajni funkciji.
Znaki v zvezi s kazalci:
- »&« - referenčni kazalec, ki izpiše naslov spremenljivke v RAM-u na katero kaže.
- »*« - dereferenčni kazalec, ki izpiše vrednost spremenljivke na katero kaže.
- »->« - objektni kazalec se uporablja pri delo z razredi.
Zgled:
#include <iostream> int main(){ // zgled preproste deklaracije kazalca int a; int * b = &a // b kaže na a, torej b ima naslov a return 0; }
Podatkovni tipi[uredi]
V programskem jeziku je več podatkovnih tipov, ki so namenjeni različnim stvarem. Vsi tipi imajo svojo velikost v bitih, kar tudi vpliva na njihovo dolžino. Pri deklaraciji teh tipov si pomagamo z določenimi besedami in tako prilagodimo spremenljivko za določeno delo, te besede lahko tudi medseboj mešamo, da dobimo želeno spremenljivko. Zgledi:
- short - je enako, kot da deklariramo navadno spremenljivko (npr. »shor int a« je enako kot »int a«).
- long - poveča velikost spremenljivke, s tem tudi velikost v bitih, kar zavzame več prostora v pomnilniku.
- unsigned - spremenljivka s tem predznakom lahko predstavlja negativna in pozitivna števila.
- signed - spremenljivka s tem predznakom lahko predstavlja samo pozitivna števila, s tem lahko povečamo velikost spremenljivke v pozitivnih številih.
Podatkovni tipi:
| Ime | Opis | Velikost[1] | Doseg |
|---|---|---|---|
| char | Črka ali majhno celo število | 1 bajt | signed: -128 to 127
unsigned: 0 to 255 |
| int | integer | 4 bajt | signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295 |
| bool | Booleovska vrednost. | 1 bajt | true ali false |
| float | Plavajoča vejica | 4 bajt | +/- 3.4e +/- 38 (~7 števk) |
| double | Dvakrat natančnejša plavajoča vejica | 8 bajtov | +/- 1.7e +/- 308 (~15 števk) |
| wchar_t | Več črk v nizu | 2 ali 4 bajt | ena široka beseda |
Zanke[uredi]
Zanke so močno orodje v C++ in so večnamenske. Z njimi se rešuje logične in matematične probleme. Poznanih je več vrst zank:
- if
Če je pogoj resničen npr. če je 2==2 (v C++ je znak »=« znak za dodeljevanje, znak »==« pa je za preverjanje enakosti). Če je pogoj resničen, se nato telo zanke izvede. Izvede se samo enkrat.
Zgled:
#include <iostream> using namespace std; int main(){ int a, b; a = 2; b = 3; if(a == b) // če je a enak b izvedi spodnjo kodo cout << "a in b sta enaka" << endl; // izpiše in skoči v novo vrstico else cout << "a in b nista enaka" << endl // sicer izpiše to return 0; }
- while
Če je pogoj resničen, se telo funkcije izvaja, dokler pogoj ni več resničen.
Zgled:
#include <iostream> using namespace std; int main(){ int a = 0; int b = 10; while(a<b){ a++ // a se vsakič ko se zanka izvede poveča za 1 cout << a << endl; // izpiše vrednost a } return 0; }
- do while
Najprej se enkrat izvede telo zanke, potem pa se šele preveri pogoj. To pomeni da se telo zanke izvede vsaj enkrat tudi, če je pogoj neresničen.
Zgled:
#include <iostream> using namespace std; int main(){ int a = 1; int b = 0; do { cout << "zanka se izvede ceprav je pogoj napačen"; } while(a>b); return 0; }
- for
Zanka for združuje značilnosti vseh treh zank - »if«, »while« in »do while«. Zanka najprej deklarira neko spremenjlivko (lahko tudi ne), potem se preveri pogoj in še nato se lahko izvede neka pravilna matematična operacija (s tem si pomagajo, da spremljajo kolikokrat se zanka izvede).
Zgled:
#include <iostream> using namespace std; int main(){ int a = 10; for(int i; i<a; i++) // i se povečuje in pri tem se izpisuje njegova vrednost cout << i << endl; return 0; }
Razredi[uredi]
Eden od glavnih konceptov programskega jezika C++ so razredi. To so razširjene podatkovne strukture, ki vsebujejo podatke in funkcije. Upravljanje z razredi spada pod eno najpomebnejših vej C++, pod objektno usmerjeno programiranje. Iz tega izhaja tudi ime programskega jezika C++ »C with classes« (C z razredi). Ko deklariramo objekt enega razreda, govorimo o primeru tega razreda. Saj ima ta primer vse značilnosti in funkcije tega razreda. Razredi po navadi vsebujejo glavo (.h), v katerem so deklarirani vsi člani tega razreda in njegove funkcije. Nato pa še v drugi datoteki implementacijo razreda (.cpp). Ta se potem lahko vključi v glavni program tj. »main.cpp«, da ga lahko uporabljamo. To omogoči lahkotno upravljanje z objekti, izmenjevanje knjižnic z drugimi programerji in povečevanje produktivnosti, se pravi manj kode za večji rezultat.
V C++ je ogromno knjižnjic za posebne namene. Med najbolj znane knjižnjice spadajo:
- <iostream> - knjižica za branje in pisanje na standardni vhod/izhod
- <stdio.h> - knjižica, kjer so definirane nekatere pogosto uporabljene funkcije
- <vector> - knjižica, ki omogoča uporabo dinamične podatkovne strukture Vektor
- <string> - knjižica kjer je definiran razred string, ki omogoča višji nivo abstrakcije za delo z nizi
- <Qt> - framework za grafične uporabniške vmesnike
Sklici in opombe[uredi]
- ^ Ta velikost velja za 32-bitne operacijske sisteme
Viri[uredi]
- Viljem Žumer, Janez Brest: Uvod v programiranje in programski jezik C++, Maribor, FERI 2004, (COBISS)
- Martin Juvan, Matjaž Zaveršnik: Vaje iz programiranja: C, C++ in Mathematica, Ljubljana, Študentska založba, 2000, (COBISS)
Zunanje povezave[uredi]
- (v slovenščini)
- Tečaj C++
- Programski jezik C++
- Uvod v C++
- PRIMERJAVA JEZIKOV C++ IN JAVA
- Šablone v C++
- //iMP-Tutorials: Slovenska stran z vodiči
- (v angleščini)
- Spletna stran Bjarnea Stroustrupa
- C/C++ Reference
- Borland prosti prevajalnik
- Prevajalnik Mars C++
- GNU Compiler Collection vključno s prevajalnikom g++
- Microsoftov prosti prevajalnik za ogrodje .NET
| Glavni programski jeziki (več) | |||
|
Industrijski: ABAP | Ada | C | C++ | C# | COBOL | Delphi | Fortran | java | JavaScript | Lisp | Objective-C | Perl | PHP | PL/SQL | Python | SAS | sh | SQL | Visual Basic | zbirnik
|