Thumbnail: cpp

Įvadas į C++ programavimo kalbą

Įvadas į C++ programavimo kalbą

Šis skyrius skirtas tik supažindinti skaitytojus su C++ programavimo kalba per daug nelendant į technines detales.

Kas yra programavimo kalba

Programavimo kalbą galime palyginti ir su geriau pažįstamomis, žmonių kalbomis - lietuvių, anglų ir pan. Žmonės, norėdami vienas su kitu susikalbėti, yra susigalvoję įvairius žodžius, reiškiančius įvairius dalykus. Tuos žodžius žmonės deda į sakinius, o sakinius gali jungti ir į didesnes struktūras. Programavimo kalboje viskas yra gana panašu, tik “kalbasi” ne žmogus su žmogumi, o žmogus su kompiuteriu. Programavimo kalba - tai įrankis nurodyti kompiuteriui, ką šis turėtų daryti. Kiekviena programa turi tam tikrus raktinius žodžius, reiškiančius įvairius dalykus. Naudojantis šiais žodžiais, galima juos visaip jungti į sakinius, o sakinius - į funkcijas ar dar stambesnius kodo gabalus. Parašius kokią nors programą remiantis tokiomis taisyklėmis, ši programa vienu ar kitu būdu išverčiama į “kompiuterių kalbą” ir taip kompiuteris žino, ką jam liepiame daryti.

Kuo pasižymi C++ programavimo kalba

Skirtingo programavimo kalbos turi skirtingų požymių, yra skirtos skirtingiems dalykams, programos jomis rašomos skirtingai ir t.t. Šiame skyriuje bus apžvelgiami pagrindiniai C++ programavimo kalbos bruožai.

C++ yra kompiliuojama kalba

Programavimo kalbos, pagal tai kaip jos verčiamos į kompiuterio kalbą, paprastai būna skirstomos į dvi rūšis - kompiliuojamos kalbos ir interpretuojamos.

  • Kompiliuojama kalba yra tokia, kuri iš pradžių visa yra paverčiama yra kompiuteriui suprantamą kalbą, ir tik tada, jei vertimas buvo sėkmingas, leidžiama vykdyti pačią programą.
  • Interpretuojamose kalbose vertimas vyksta programos vykdymo metu.

Dirbant su kompiliuojamomis kalbomis neįmanoma išsiversti be kompiliatoriaus. Kompiliatorius - tai programa, mokanti išversti jūsų parašytą programą į kompiuteriui suprantamą kalbą. Kompiliatoriaus rolę galima palyginti su vertėjo - jūs ir kompiuteris šnekate skirtingomis kalbomis, o kompiliatorius moka išversti jūsų parašytas instrukcijas į tokias, kurias supranta kompiuteris.

Kompiliuojamų kalbų trūkumas yra tas, kad reikia šiek tiek palaukti, kol įvyks visos programos “išvertimas” (t.y. kompiliavimas), prieš paleidžiant pačią programą. Tačiau tai atsveria vienas didelis privalumas - kompiliavimo metu kompiliatorius gali surasti daugybę jūsų netyčia padarytų klaidų (netaisyklingai parašyti ženklai, pamirštas parašyti kabliataškis ir pan.). Tai reiškia, kad kai jau galų gale pavyks programą sukompiliuoti, jūs galėsite būti tikri, kad parašėte visą programą pagal taisykles.

C++ yra tipizuota programavimo kalba

Programavimo kalbos taip pat gali būtų tipizuotos, netipizuotos ir dinamiškai tipizuotos. Tipizuotos programavimo kalbos yra pačios griežčiausios - jose kiekvienas kintamasis yra tam tikro iš anksto nustatyto tipo. Tai reiškia, kad jei susikuriate kintamąjį, kuris turėtų laikyti skaičius, tai į jį negalėsite įrašyti, pavyzdžiui, teksto.

Tipizuotomis kalbomis rašyti kodą šiek tiek sunkiau, nei netipizuotomis, nes kompiliatorius visada tikrina, ar tipai jūsų programoje visur yra suderinami, ir, jei ši sąlyga pažeidžiama, meta klaidą. Tačiau šis ribojimas užtikrina, kad galiausiai paleidus programą, galėsite būti tikri, kad kiekvienas kintamasis laiko būtent tokio tipo reikšmes, kokių jūs tikitės - tai padeda mažinti klaidų skaičių.

C++ yra pakankamai žemo lygio kalba

Įvairios programavimo kalbos yra skirstomos į įvairius “lygius”. Lygiai kinta tarp žemo ir aukšto.

  • Žemo lygio programavimo kalbos yra labiausiai panašios į kompiuterio kalbą. Žmonėms tokiomis programavimo kalbomis rašyti kodą yra sunku ir nepatogu, tačiau tai leidžia parašyti pačias greičiausias ir efektyviausias programas.
  • Aukšto lygio programavimo kalbos labiausiai panašios į mums įprastas, žmonių kalbas. Tai leidžia gana lengvai rašyti ir skaityti kodą, tačiau dėl to dažnai nukenčia programos efektyvumas.

C++ nėra nei labai žemo, nei labai aukšto lygio kalba. Ja rašyti kodą yra pakankamai patogu (pripratus prie kalbos subtilybių), tačiau ne taip patogu kaip, sakykime, Python. Kita vertus, C++ kalba parašytos programos paprastai būna labai greitos ir efektyvios bei nuo paties žemiausio lygio kalbų efektyvumo atsilieka labai nedaug.

Programavimo aplinkos

Kaip buvo minėta, C++ yra kompiliuojama programavimo kalba. Vadinasi, prieš leidžiant parašytą kodą, kiekvieną kartą reikia programą sukompiliuoti. Tai, žinoma, galima daryti ir pačiam, tačiau tai yra nepatogu ir gali užimti nemažai pastangų bei laiko. Tokiu tikslu yra kuriamos specialios programos, lengvinančios programavimą. Tokios programos paprastai vadinamos integruotomis kūrimo aplinkomis (angl. IDE - Integrated Development Environment). Šios programavimo aplinkos paprastai pasižymi tokiomis funkcijomis:

  • Sintaksės ryškinimas (angl. syntax highlighting). Tai reiškia, kad jūsų kode esančios įvairios kodo struktūros (raktažodžiai, kintamieji, funkcijos ir pan.) gali būti spalvinami įvairiomis spalvomis, paryškinami ir pan. Tai lengvina kodo skaitomumą.
  • Integruotas kompiliatorius. Tai leidžia vos vienu mygtuko paspaudimu sukompiliuoti parašytą programą, paruošti vykdomąjį failą (angl. executable) ir jį paleisti.
  • Kompiliavimo klaidų atvaizdavimas. Jei kompiliavimo metu randamos kokios nors klaidos, programavimo aplinkos paprastai geba atvaizduoti tikslią kodo vietą, kurioje įvyko klaida. Tai leidžia greitai pasitaisyti.
  • Derinimo režimas (angl. debug mode). Ši funkcija leidžia programos vykdymo metu sustoti bet kurioje kodo vietoje, apžiūreti dabartinę programos būseną ir pan. Tai labai paspartina klaidų paiešką.

Viena iš geresnių C++ programavimo aplinkų pradedančiajam yra Code::Blocks - visi programos rašymo, kompiliavimo bei paleidimo pavyzdžiai bus rodomi būtent remiantis šia programavimo aplinka.

Pasiruošimas programavimui

Prieš pradedant programuoti reikia šiek tiek pasiruošimo. Šiame skyriuje bus apžvelgiama, kaip reikia įsidiegti Code::Blocks programavimo aplinką bei paleisti pirmąją C++ programą!

Code::Blocks diegimas

Visų pirma reikia įsidiegti programavimo aplinką. Štai kaip tai padaryti:

  1. Įsidiekite Code::Blocks:
    • Nueikite į šį puslapį: http://www.codeblocks.org/downloads/26.
    • Pasirinkite tinkamą diegimo failą pagal savo kompiuterio operacinę sistemą. Jei naudojate Windows operacinę sistemą, rekomenduojama siųsti failą codeblocks-XX.XXmingw-setup.exe, nes jis įrašys ne tik programavimo aplinką, bet ir kompiliatorių. Code::Blocks parsisiuntimas
    • Sekite diegimo gido instrukcijas (kai reiks rinktis diegimo tipą, pasirinkite Full). Code::Blocks diegimas
    • Pirmą kartą leidžiant Code::Blocks atsidarys langas, prašantis pasirinkti kompiliatorių. Įsitikinkite, kad pasirinktas GNU GCC Compiler (turėtų būti pats pirmas pasirinkimas) ir spauskite OK.
  2. Susikurkite konsolinės aplikacijos projektą:
    • Atsidariusiame Code::Blocks lange spauskite File -> New -> Project...
    • Pasirinkite Console application Projekto tipo pasirinkimas
    • Atsidariusiame lange spauskite Next
    • Pasirinkite C++ kalbą ir spauskite Next
    • Įveskite kokį nors projekto pavadinimą bei pasirinkite direktoriją, kurioje norite išsaugoti projektą Projekto vardo pasirinkimas
    • Kitame lange įsitikinkite, kad parinktas teisingas kompiliatorius ir spauskite Finish Kompiliatoriaus pasirinkimas
    • Kairėje lango pusėje turėtumėte matyti sukurtą projektą. Praskleidus jį pamatysite, kad Code::Blocks jums sukūrė vieną failą - main.cpp. Tai - pagrindinis jūsų programos failas. Sukurtas projektas

Pirma C++ programa

Atsidarykite Code::Blocks projektą, kurį sukūrėte prieš tai buvusiame žingsnyje. Tada sekite šiuos žingsnius:

  1. Parašykite pirmąją C++ programą (jei viską įvykdėte sėkmingai kurdami projektą, šis kodas jau turėtų būti main.cpp faile):
    #include <iostream>
    using namespace std;

    int main()
    {
        cout << "Hello world!" << endl;
        return 0;
    }
    
  1. Paleiskite programą spausdami mygtuką Build and run. Programos paleidimas
  2. Jei viskas gerai, turėtumėte pamatyti konsolės langą su tekstu Hello world!. Pirma programa

Sveikiname, jūs parašėte ir paleidote pirmą savo C++ programą!

Pirmos C++ programos analizė

Prieš tai buvusiame skyrelyje tereikėjo nukopijuoti duotą programos kodą ir pabandyti jį paleisti. Šiame skyrelyje trumpai apžvelgsime tą patį kodą. Štai tas pats kodas, tik su pažymėtais eilučių numeriais:

1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Panagrinėkime kodą po vieną eilutę:

  1. eilutė skirta pridėti išorinę biblioteką, kurios pavadinimas iostream, į mūsų kodą. Biblioteka - tai kažkieno kito rašytas kodas, kuris turi įvairių naudingų funkcijų, kurias galima “įsidėti” į savo kodą ir naudoti. Šiuo atveju, biblioteka iostream prideda įvairias funkcijas, leidžiančias dirbti su konsole - konkrečiai naudojame tik komandą cout, leidžiančia spausdinti tekstą į konsolės langą.
  2. eilutė iš esmės pasako, kad šioje programoje naudosime taip vadinamą standartinę biblioteką ir supaprastina kodo rašymą. Į šia eilutę, bent kol kas, galime nesigilinti.
  3. eilutė aprašo funkciją, kurios vardas main. Apie funkcijas plačiau pakalbėsime kituose skyreliuose, kol kas užtenka žinoti, kad tai - pagrindinė mūsų programos vieta. Būtent ši funkcija bus paleista, kai paleisime savo programą. Todėl visas programas, kurias toliau rašysime, reikės dėti būtent į šios funkcijos vidų.
  4. eilutė atidaro taip vadinamą kodo bloką. Visas kodas, esantis tarp šios ir 7-os eilutės, yra laikomas esančiu šio kodo bloko viduje. Šiuo konkrečiu atveju šiame kodo bloke yra kodas, priklausantis funkcijai main. Vadinasi, kai leisime programą ir bus iškviesta funkcija main, bus įvykdytas visas kodas, esantis tarp 4 ir 7 eilučių.
  5. eilutė išspausdina tekstą Hello world! į konsolę vienoje eilutėje. Komanda cout skirta spausdinimui į konsolę. Simboliai << atskiria įvairius dalykus, kuriuos norime spausdinti į konsolę. Komanda endl padeda naujos eilutės simbolį (tai tas pats, kas klaviatūroje paspausti mygtuką Enter). Kabliataškis eilutės pabaigoje reiškia šios instrukcijos pabaigą (jei pamenate, C++ programa susideda iš instrukcijų - čia ir yra viena iš tų instrukcijų).
  6. eilutė pasako, kad mūsų funkcija grąžina rezultatą 0. Kol kas į tai nesigilinkime, tereikia nepamiršti šios eilutės parašyti.
  7. eilutė uždaro 4-oje eilutėje pradėtą kodo bloką.

Kol kas nesigiliname į konkrečias šios programos dalis, šis skyrius skirtas tik trumpai apžvalgai. Apie kiekvieną konkrečią C++ kalbos dalį bus giliau kalbama kituose skyriuose.

Pagrindinės sąvokos

Šiame ir tolimesniuose skyriuose vartojama daugybė sąvokų, kurios tikriausiai yra naujos. Nebijokite, laikui bėgant prie jų priprantama :) Šiame skyrelyje pateikiamas trumpas pagrindinių su C++ (ir programavimu bendrai) susijusių sąvokų sąrašas bei pavyzdžiai.

Komentaras

C++ programos kode galima rašyti komentarus. Tai kodo dalis, į kurią kompiliatorius nekreips visiškai jokio dėmesio. Komentarai yra skirti jums (arba kitiems, skaitantiems jūsų kodą) ir padeda nepasimesti kodo raizgalynėse. C++ palaiko dviejų tipų komentarus - vienos eilutės ir kelių eilučių.

Vienos eilutės komentaras prasideda simboliais // ir tęsiasi iki eilutės pabaigos. Pavyzdys:

// Šis kodas nebus vykdomas
int main()
{
    return 0; // Nepamirškime šios eilutės programos pabaigoje!
}

Kelių eilučių komentarai prasideda simboliais /* ir baigiasi simboliais */. Visas tekstas, esantis tarp šių simbolių, nebus vykdomas. Tai leidžia rašyti ilgesnius komentarus. Pavyzdys:

/* Čia yra kelių
   eilučių komentaras.
   Juo naudojantis galima parašyti ilgą tekstą.
*/
int main()
{
    return 0; /*Tokio tipo komentarą galima rašyti ir vienoje eilutėje*/
}

Kintamasis

Beveik kiekviena C++ programa turi nors vieną kintamąjį. Kintamasis - tai tam tikra vieta, į kurią galima įrašyti kažkokius mažus gabaliukus. Pavyzdys:

// Čia aprašomas kintamasis, kurio vardas x, o jame įrašyta reikšmė yra 5
int x = 5;

Kodo blokas

Kodo blokas - tai viena ar daugiau kodo eilučių, prieš kurias parašytas simbolis {, o už jų parašytas simbolis }. Kodo blokai paprastai naudojami parodyti, kad tam tikros kodo eilutės turi kažką bendro. Pavyzdys:

int main()
{ // kodo bloko pradžia
    int x = 5;
    cout << "Labas" << endl;
    return 0;
} // kodo bloko pabaiga

Visas kodas, esantis šiame kodo bloke “priklauso” funkcijai main. Vadinasi, tarp riestinių skliaustų esantis kodas bus įvykdytas tik tada, kai bus kviečiama funkcija main.

Funkcija

Funkcija - tai tam tikra grupė komandų. Funkcijos paprastai naudojamos tam, kad visas kodas nebūtų rašomas vienoje vietoje ir netaptų sunkiai skaitomas. Juk skaityti mokyklinį vadovėlį daug lengviau, kai jis suskirstytas į skyrius, o ne surašytas vienoje krūvoje! Lygiai taip pat ir su programos kodu - kodą daug lengviau skaityti ir suprasti (o dažnai ir rašyti), kai jis suskaidytas į mažesnes dalis. Pavyzdys:

void sakykLabas()
{
    cout << "Labas";
}

Šiame pavyzdyje aprašyta funkcija, kurios paskirtis - išspausdinti tekstą “Labas” į konsolę. Daugiau apie funkcijas kalbėsime kituose skyriuose.

Biblioteka

Biblioteka - tai kitų žmonių parašytas kodas, kurį galima “įsidėti” į savo programą ir naudoti. Viena biblioteka, kurią jau matėte - iostream. Bibliotekų “idėjimas” į savo kodą atliekamas naudojant komandą #include <bibliotekosVardas>.