C++

Iz Wikipedije, proste enciklopedije
Skoči na: navigacija, iskanje

C++ (C plus plus; izgovorjava [cé plús plús] je splošnonamenski računalniški programski jezik. C++ so podatkovni tipi statični, zapis kode je prost. C++ omogoča različne programerske pristope in sicer proceduralno, objektno usmerjeno, generično in funkcionalno .

Bjarne Stroustrup, tvorec jezika C++

C++ je razvil danski računalnikar Bjarne Stroustrup, v Bellovih laboratorijih. Razvijati je začel leta 1979 in takrat se je jezik imenoval »C with Classes« (C z razredi). 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:2011 ki nosi neuradno ime C++11.

Jezik[uredi | uredi kodo]

C++ se prevede v strojni jezik kar mu omogoča, da enak program izvaja bistveno hitreje od jezikov, ki se interpretirajo ali pa se prevedejo v vmesni jezik (Java, C#, Python, javascript, PHP, ... ). Poleg tega da za isto opravilo program porabi manj časa, porabi tudi manj energije, kar je pomembno za naprave z baterijskim napajanjem. C++ se je razvil iz jezika C in programe napisane v jeziku C je razen nekaterih redkih izjem mogoče brez sprememb prevesti s prevajalnikom za C++.

Zgled programa[uredi | uredi kodo]

Program PozdravljenSvet[uredi | uredi kodo]

#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 | uredi kodo]

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 | uredi kodo]

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.
  • signed - spremenljivka s tem predznakom lahko predstavlja negativna in pozitivna števila.
  • unsigned - 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

Pogojni stavek[uredi | uredi kodo]

Tudi imenovan: pogojni konstrukt, pogojni izraz ali kontrolni stavek je del programskega jezika, ki na podlagi vhodnih paramterov odloci ali je njihova boolean vrednost resnicna(true) ali napacna(false).

Prav tako lahko to oznacimo kot 1 za true in 0 za false.

Primer:

int a = 15;
bool check;
 
if(a = 15){
  //Ker je pogoj resnicen nastavimo check spremenljivko na true
  check = true;
}else if(a = 13){
  //Pogoj ni resnicen
  check = false;
}else{// ce ni vrednost ne 15 in ne 13 se izvede ta stavek
  check = false;
  std::cout<<"vrednost ni ne 13 in ne 15"<<std::endl;
}

Zanke[uredi | uredi kodo]

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

  • 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 | uredi kodo]

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žnic za posebne namene. Med najbolj znane knjižnice 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[uredi | uredi kodo]

  1. ^ Ta velikost velja za 32-bitne operacijske sisteme

Viri[uredi | uredi kodo]

Zunanje povezave[uredi | uredi kodo]

(v slovenščini)
(v angleščini)


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

Akademski: Eiffel | Haskell | Logo | ML | paskal | prolog | scheme | Smalltalk

Zgodovinski: ALGOL | APL | AWK | BASIC | Clipper | PL/I | Simula