C++ lühikursus: Difference between revisions
Line 181: | Line 181: | ||
Tehete järjekord | Tehete järjekord | ||
=Sisendi ja väljundi | =Sisendi ja väljundi manipuleerimine= | ||
[http://www.cplusplus.com/reference/iostream/manipulators/ IOStream'i manipulaatorid] <br> | |||
Ekraanil oleva teksti sisendi ja väljundi manipuleerimiseks on vaja kaasata "iomanip" header: | |||
#include <iomanip> | |||
==Välja laius== | |||
setw(x), kus x on tähemärkide arv väljal.<br/> | |||
Näide korralikult formeeritud korrutustabelist: | |||
<pre> | |||
#include <iostream> | |||
#include <iomanip> | |||
using namespace std; | |||
int main() | |||
{ | |||
const int max = 12; | |||
const int width = 6; | |||
for(int row = 1;row <= max;row++) { | |||
for(int col = 1;col <= max;col++) { | |||
cout << setw(width) << row * col; | |||
} | |||
cout << endl; | |||
} | |||
return 0; | |||
} | |||
</pre> | |||
==Joondamine väljal== | |||
Väljal olevat teksti saab joondada vasakule ja paremale. Algselt joondatakse numbrid paremala ja selle jaoks on vaja ainult vasakjoondus sisse ja välja lülitada.<br/> | |||
Sisse ja välja lülitamine: | |||
setiosflags(ios::left); | |||
resetiosflags(ios::left); | |||
Kui teiste juhtumite korral on vaja paremjoondust, siis tasub kasutada ios::right lippu.<br/> | |||
Näide, kus üle rea vahetatakse joondust: | |||
<pre> | |||
#include <iostream> | |||
#include <iomanip> | |||
using namespace std; | |||
int main() | |||
{ | |||
const int max = 12; | |||
const int width = 6; | |||
for(int row = 1;row <= max;row++) { | |||
if(row % 2) { | |||
cout << setiosflags(ios::left); | |||
} | |||
else { | |||
cout << resetiosflags(ios::left); | |||
} | |||
for(int col = 1;col <= max;col++) { | |||
cout << setw(width) << row * col; | |||
} | |||
cout << endl; | |||
} | |||
return 0; | |||
} | |||
</pre> | |||
=Lingid= | =Lingid= | ||
[http://www.cplusplus.com/doc/tutorial/ C++ tutorial] | [http://www.cplusplus.com/doc/tutorial/ C++ tutorial] | ||
[[Category:Robootika]] | [[Category:Robootika]] |
Revision as of 14:12, 14 February 2010
Kursusest
ITK robootikaklubis kasutatakse pilditöötlusplatvormina enda poolt C++, QT4 ja OpenCV vanenditega loodud raamistiku. Kuna õppekavas C++ puudub:( ja samas on seda vähemalt robootikutel vaja siis siin lehel on kursuse materjalid ja tegevused.
Harjutustunnid
1. Structure of a program läbi lugeda
Sissejuhatus
Mis on C++ ja miks meil seda vaja on? programmeerimiskeelte populaarsus
Keele põhikonstruktsioonid
if - tingimuslause
Esimene tüüp - puhas IF
if("tingimus mille puhul seda tingimuslauset täidetakse"){ "tegevus mis sooritatakse kui tingimus tõele vastab" }
NÄIDE
#include <iostream> using namespace std; int main (){ //defineerin boolean i mille väärtus on true bool i =true; //if lause mis käivitub siis kui boolean i väärtuseks on true if (i){ cout << "Hello World!"; } }
Teine tüüp -if else
Kui me näiteks meil on rohkem kui üks stsenaarium mille puhul soovime kasutada erinevaid tingimuslauseid võime kasutada "if else" lauset. Eriti mugav on seda kasutada väärtusvahemike eraldamiseks
NÄIDE:
#include <iostream> using namespace std; int main(void) { int number; cout << "Sisesta number "; //küsib käsurealt numbrit cin >> number; //kui number on suurem kui 75 siis väljastab sõna "kala" if (number >75 ) cout << "kala" << endl; //kui number on suurem kui 50 aga väiksem kui 75 siis väljastab sõna "koer" else if (number >50 ) cout << "koer" << endl; //kui number on väiksem kui 50 else cout << "mauntz" << endl; return 0; }
Kolmas tüüp - valikulause (switch statement)
Kui meil näiteks on vaja et muutuja iga konkreetse väärtuse peale käivituks tingimuslause võüime kasutada valiklauset (switch case). Valiklauseid on suhteliselt kerge jälgida ning modifitseerida. Töötab see nii, et alustades ülaltpoolt hakkab programm võrdlema tingimusi- juhul kui tingimus sobib käivitab ta selle bloki. Viimane case blokk on "default" mis käivitatakse alati kui programm sinnani jõuab. Kuna iga bloki lõpus on ka break käsk siis sinnani jõudes katkestatakse valiklause ning lõpetatakse seal oleva koodi täitmine.
NÄIDE
#include <iostream> using namespace std; int main(void) { int number; cout << "Sisesta number 1,2 või 3 "; cin >> number; switch (number) { //juhul kui number on üks käivitame selle bloki case 1: cout << "sisestati number 1 " << endl; break; //juhul kui number on 2 käivitame selle bloki case 2: cout << "Sisestati number 2" << endl; break; //juhul kui eelnevaid blokke pole üldse käivitatud lähme siia blokki default: cout << "Sisestati number mis pole kaks ega üks" << endl; } }
While kordus
while(tingimus){kood mida täidetakse nii kaua kuni tingimus kehtib}
NÄIDE
#include <iostream> using namespace std; int main () { int n; cout << "Number"; cin >> n; // while loop millest ei väljuta ennne kui tingimus ei vasta enam tõele (ehk n on väiksem kui 0) while (n>0) { cout << n << ", "; //lahutame nist igas tsükli käivitamise korral 1e n=n-1; } return 0; }
Muutujate deklareerimine
Deklareerimine
Muutuja deklareerimine ütleb kompileerimise ajal kompilaatorile muutuja tüübi ning selle võimaliku suuruse - double (8 baiti), int (4 baiti), short (2 baiti), char (1 bait) jne.
Deklareerime int tüüpi muutuja 'a'.
Näide:
int a;
Defineerimine
Muutuja defineerimine tähendab muutuja mingi kindla väärtuse salvestamist mällu talle eraldatud mälu aadressile.
Defineerimine eelnevalt deklareeritud int tüüpi muutuja 'a'.
Näide:
a = 10;
Kui muutuja pole deklareeritud, siis on võimalik neid ka korraga deklareerida ja defineerida.
Näide:
int a = 10;
Lisalugemist
Rohkem näiteid ja täpsemalt muutujate deklareerimise kohta saab lugeda aadressil http://www.cplusplus.com/doc/tutorial/variables/
Operaatorid ja tehted
Muutuja väärtustamine (=)
#include <iostream> int main () { int a,b,c; // a:?, b:?, c:? c = 0xFF; // c:255 a = 2 + (b = 5); // a:7, b:5 a = b = c = 5; // kõik väärtusega 5 }
Aritmeetilised tehted ( +, -, *, /, % )
Bititehted ( &, |, ^, ~, <<, >> )
Tehtega väärtustamine (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
(++, --)
( ==, !=, >, <, >=, <= )
( !, &&, || )
(?)
(,)
a = (b=3, b+2);
Tehete järjekord
Sisendi ja väljundi manipuleerimine
IOStream'i manipulaatorid
Ekraanil oleva teksti sisendi ja väljundi manipuleerimiseks on vaja kaasata "iomanip" header:
#include <iomanip>
Välja laius
setw(x), kus x on tähemärkide arv väljal.
Näide korralikult formeeritud korrutustabelist:
#include <iostream> #include <iomanip> using namespace std; int main() { const int max = 12; const int width = 6; for(int row = 1;row <= max;row++) { for(int col = 1;col <= max;col++) { cout << setw(width) << row * col; } cout << endl; } return 0; }
Joondamine väljal
Väljal olevat teksti saab joondada vasakule ja paremale. Algselt joondatakse numbrid paremala ja selle jaoks on vaja ainult vasakjoondus sisse ja välja lülitada.
Sisse ja välja lülitamine:
setiosflags(ios::left); resetiosflags(ios::left);
Kui teiste juhtumite korral on vaja paremjoondust, siis tasub kasutada ios::right lippu.
Näide, kus üle rea vahetatakse joondust:
#include <iostream> #include <iomanip> using namespace std; int main() { const int max = 12; const int width = 6; for(int row = 1;row <= max;row++) { if(row % 2) { cout << setiosflags(ios::left); } else { cout << resetiosflags(ios::left); } for(int col = 1;col <= max;col++) { cout << setw(width) << row * col; } cout << endl; } return 0; }