Sissejuhatus programmeerimisse
Programmeerimine
Mis on programmeerimine? Programmide loomine? Jah, nii võiks ta kokku võtta küll, ent tegelikkuses ei ole asi sugugi nii lilleline ning keerulisemate programmide tegemine võib võtta aega päevadest aastateni. Suuremad programmid koosnevad miljonitest (kui mitte miljarditest) ridadest koodist ning neid on arendatud aasta(kümne)id.
Programmeerimine koosneb tegelikult paljudest staadiumitest. Tõsi, on võimalik võtta pähe, et „oh, ma nüüd lähen ja teen kohe programmi,” ent kui tõsisemaseks programmeerimiseks läheb, siis sellisest mõtteviisist ei piisa. Programmide loomise mõned etapid on näiteks ideestaadium, disainistaadium, projekteerimise staadium ja siis tuleb alles koodimise osa.
Lisaks on programmeerimise väga heaks eelduseks loogiline mõtlemine ning hea matemaatika. Pikemate programmide puhul tuleb kasuks ka püsivus ning tõenäoliselt mõned unetud ööd. Kui ka natuke muheleda, võiks öelda, et programmeerimine koosneb 90% matemaatikast, 9% loogika ning 0,5% kirjutamist. Ülejäänud 0,5% läheb ettenägematuteks kulutusteks.
Teisalt pole programmeerimine ka lihtsalt mõttetu hunniku teksti kirjutamine (ning kui seda teha viletsalt, ei hakka programm üldse töölegi vaid loobib hunnikute viisi veateateid ning programmi vastu kaob huvi) või terve kuhja graafiliste vidinate kokkulöömine ideega sellest programm teha. Nii mõnedki kasulikud programmid on graafiliselt üpris inetud. Seetõttu üritame selles juhendis teha asja nii lõbusaks kui võimalik.
Mõisted
Siinkohal mõned tähtsamad mõisted mida programmeerimises on tarvilik teada.
- Muutuja – täht või sõna millele saab omistada väärtust, mida saab omakorda vajalikul momendil muuta. Muutujaks võib olla näiteks tikkude arv toosis – seda arvu saab muuta, või näiteks raamatus lugemata lehekülgede arv – ka see muutub.
- Konstant – muutumatu muutuja. Näiteks on konstant matemaatiline tähis pii, ehk
3,1415926535897932384626433832795
. See ei muutu. Ka aatomite arv vee molekulis on konstantne (püsiv) – üks hapniku ja kaks vesiniku aatomit. - Massiiv (array) – muutujate kogum. Raamatus on tähed ja leheküljed. Ütleme, et muutuja on lehekülg ning muutuja väärtus on lehekülje sisu. Kuna raamatus on palju lehekülgi siis kõik need leheküljed moodustavad massiivi. Ka poes müüdavad suured pakid tikutoose on tegelikult ju massiiv, sest kui tikutoos on muutuja ning tikkude arv toosis on muutuja väärtus, on need kõik toosid selles suures kilepakendis massiiv.
- Kommentaar/kommenteerima – lõik(/lõigud) programmitekstis, mis ei leia kajastamist programmi kompileerimises. Lühidalt – kõik kommentaarid jäetakse kompileerimisel arvestamata. Näiteks võib seda kasutada juhul, kui on hirmsasti tarvis mingit osa koodist testida, ent üks teine osa jääb millegipärast ette. Kas on tõesti tarvis ettejääv osa ära koristada teelt? Ei, saab ka lihtsamini – kommenteerida lõik välja. Teisalt aitavad kommentaarid teksti selgitada. Kommentaarivaene tekst on tihtipeale kurjast. Tegelikult on ta pea kogu aeg kurjast. Kommenteerimata koodi on väga raske lugeda iseendalgi, kui kirjutamisest on palju aega möödas. Juurde aitavad küll selgitavad muutujad, ent muutujatest ei piisa. Kui kommentaare ei ole, ei pruugi kõrvalseisja välja jagada isegi seda, mida programm tegema peaks.
Programmeerimiskeeles C++ on kommentaare kahte sorti. Ühed, mis kommenteerivad kommentaaritähise algusest rea lõpuni ning teised, mis kommenteerivad välja kasvõi terve faili enda kui vaja. Esimesi tähistatakse topeltkaldkriipsuga // ning teised käivad /* ja */ vahele (antud juhul oleks sõna „ja” välja kommenteeritud).
Muutuja
Muutujad, nagu enne räägitud, on täht/tähed, millele saab omistada mingeid väärtusi. Ent ometigi ei saa kõikidele muutujatele ükskõik mis tüüpi väärtust omistada. Näiteks ei saa arvmuutujale omistada tekstmuutuja väärtust või täisarv-tüüpi muutujale ujukomaarv-tüüpi väärtust.
Üldiselt on olemas päris palju erinevaid muutujatüüpe. Mõnda neist ka siinkohal lähedamalt vaatleme.
Int (ehk täisarv):
Integer-tüüpi muutujale saab omistada ainult täisarvulisi väärtusi, st näiteks 10, 150 aga ka 1239, aga ei saa omistada komaga väärtusi, nagu 27,5 või 2933,93929. Sõltuvalt süsteemist on ta võimeline saama erinevate vahemikega väärtusi.
16bitised süsteemid – vahemikus-32 768
kuni32 767
32bitised süsteemid – vahemikus-2 147 483 648
kuni2 147 483 648
64bitised süsteemid – vahemikus-9 223 372 036 854 775 808
kuni9 223 372 036 854 775 807
Nagu näha omavad erinevates süsteemides täisarvud teistsuguseid väärtuste vahemikke. Kui vanade protsessoritega (16bitistega) sai opereerida täisarvudega maksimaalselt 65000 kohta, siis 32bitised protsessorid (Intel Pentiumist alates) olid võimelised juba kordades suuremate arvudega opereerima ning 64bitised (AMD Athlon 64, Intel EM64T) protsessorid on võimelised opereerima veelgi suuremate arvudega.
Ometigi on võimalik välja kutsuda ka vanemate süsteemide muutujatüüpe, kasutades __int8, __int16, __int32 ja __int64.
Mis nende vahe on? Mälukohtade tarbimise vahe. 8bitine ja 16bitine täisarv kasutavad mõlemad 1 baidi mälust. 32bitine võtab juba 2 baiti ning 64bitine täisarv 4 baiti. Aga milles küsimus? Me ei ela ju enam 64 kilobaidi-ajastul. Aga selles on asi, et suurte programmide puhul kus ei ole mitte käputäis vaid paar(kümmend)tuhat muutujat on asi hoopis teine.
Veel on olemas muutujatüübid nagu short ja long. Short ei ole tegelikult mitte midagi muud kui 16bitine täisarv vahemikus -32 768
kuni 32 767
ning long on 32bitine täisarv vahemikus -2 147 483 648
kuni 2 147 483 648
.
Lisaks saab eelpool mainitud short’le ja long’le lisada eesliited unsigned. Unsigned short (kui muidu on signed short) võib olla vahemikus 0 kuni 65 535
ning unsigned long vahemikus 0 kuni 4 294 967 295
.
Seejärel ujukomaarvud float, double ja long double. Float on kõige väiksem ujukomaarv, võtab mälus 4 baiti ning maksimaalseks suuruseks on 3,4*10+/-38
. Double on natuke ulatuslikum, võttes mälus 8 baiti ning vahemikuks 1,7*10+/-308
. Lõpuks on long double mis on neist kahest suurim (10 baiti) ning ulatuslikeim: 1,2*10+/-4932
.
Viimaseks võiks ära mainida tekstmuutujad, millest kasutatavaim on char. Nimelt on char-tüüpi muutuja võimeline sisaldama endas ühte tähte. Kui temast teha massiiv, on ta ka võimeline sisaldama tervet stringi.
Päisefailid
Päisefail on lihtne tekstifail mis sisaldab põhiprogrammis kasutatud moodulite sisu kirjeldust. Tavaliselt jagatakse programm (eriti kasu on sellest suuremate programmide juures) väiksemateks osadeks.