Baziniai duomenų tipai ir aritmetinės operacijos C++ kalboje (0)
Dokumente pateikiamas įvadas į C++ kalbos pradmenis. Jame surasite bazinių kintamųjų tipų aprašymus, svarbiausias aritmetines operacijas, įvedimo ir išvedimo srautų aprašymus. Pateikti trumpi pavyzdžiai, paaiškintos pagrindinės programavimo C++ kalba sintaksės žinios - kintamųjų įvedimas iš klaviatūros, rezultato išvedimas į ekraną, programos pradžios ir pabaigos žymėjimas, komentarų rašymas, pagrindiniai matematiniai skaičiavimai.
Prisijunk prie technologijos.lt komandos!
Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.
Sudomino? Užpildyk šią anketą!
Bendrosios taisyklės programuojant C++ kalba
Programuojant C++ kalba reikia atminti kelias bendras taisykles:
a) programos pradžios ir pabaigos simboliai
Programos pradžią ir pabaigą žymį laužtiniai skliaustai { }. Jie naudojami ne tik programos pražios ir pabaigos žymėjimui, bet ir kiekvieno atskiro bloko apibrėžimui (ciklo blokas, sąlygos blokas ir pan.)
main()
{
//programos tekstas
}
b) kabliataškis
Kabliataškis naudojamas programavimo komandų atskyrimui. Kiekvienos operacijos gale privalo būti kabliataškis, kitaip kompiliatorius rodys klaidą.
k=k+1;
c) komentarai
Komentarai rašomi bet kokioje programos teksto vietoje atskiriant juos simboliais
// - vienos eilutės komentaras
/* */ - užkomentuota teksto pastraipa
//vienos eilutes komentaras
/*
Uzkomentuota pastraipa:
pirma komentaro eilute
antra komentaro eilute
....
*/
Standartiniai išvedimo įvedimo srautai C++ kalboje.
Mokantis programuoti su C++ kalba paprastai naudojami tekstiniai pranešimai, kuriuos generuoja ir vartotojui pateikia sukompiliuota programa. Tam patogiausia naudotis standartiniais išvedimo/įvedimo srautų klasėmis, aprašytomis bibliotekoje iostream (biblioteka patalpinta iostream.h byloje). Biblioteka įkeliama standartine komanda
#include <iostream.h>
Ryšio su programos išore palaikymui vartojami trijų pagrindinių tipų srautai: įvedimo (istream), išvedimo (ostream) ir dvipusio ryšio (iostream). Srautų atskyrimui naudojami skirtingi operatoriai:
operatorius << duomenų siuntimas į ostream tipo srautą (išvedimas į ekraną);
operatorius >> duomenų siuntimas į istream tipo srautą (įvedimas į programą).
Keturi įvedimo ir išvedimo srautai bibliotekoje iostream yra apibrėžti iš anksto. Tai:
cin standartinis įvedimo srautas (PC klaviatūra);
cout standartinis išvedimo srautas (PC ekranas);
cerr nekaupiantis klaidų išvedimo srautas;
clog kaupiantis išvedimo srautas.
Paprastai naudojami du pirmieji srautai – duomenų įvedimui (cin) ir duomenų išvedimui (cout):
cout <<"Tai isvedimo i ekrana srautas";
cin >> k; //tai ivedimo i programa srautas
Į srautą nukreiptus duomenis galima atskirti įvedimo-išvedimo operatoriais. Tai svarbu tuomet, kai šalia komentaro norima išvesti kintamojo turinį arba įvesti duomenis:
cout <<"Gautas atsakymas" << y;
Nenurodžius papildomų srauto parametrų įvedamas arba išvedamas tekstas sudedamas į vieną eilutę. Tai ne visada yra patogu, todėl galima naudoti papildomus srauto tvarkymo simbolius:
\n nauja eilutė
\t horizontalus taboliatorius
\r grįžimo į eilutės pradžią simbolis (CR)
\a skambutis (BEL)
\\ simbolis \
\‘ apostrofo simbolis
\“ dvigubos kabutės
\0 nulis (NULL)
Simboliai rašomi tarp apostrofų atskiriant įvedimo-išvedimo srautų operatoriais:
cout <<"Jus sveikina C++" <<'\a' <<'\n';
Jei programa baigiama informacijos išvedimu, gali atsirasti jos perskaitymo problemų – kompiliatorius DOS vykdymo langą rodys tol, kol turės atlikti kažkokią tai funkciją. Kai jis baigia vykdyti visas programos operacijas, DOS langą išjungia. Tuo pačiu išjungia ir visus skaičiavimo rezultatus. Kad to nebūtų, rekomenduojama programos gale įterpti įvedimo srautą (cin), tuomet DOS langas bus rodomas tol, kol neįvesite bet kokio skaičiaus.
Programos pavyzdys su įvedimo – išvedimo srautais:
//iterpiamos bibliotekos
#include <iostream.h>
main() //programos tekstas
{
//kintamuju aprasymas
int x;
//informacijos isvedimas
cout <<'\t'<<"Sveiki!" <<'\n';
cout <<"As esu Vardaitis Pavardaitis" <<'\n';
cout <<"ir busiu kietas programeris!" <<'\a' <<'\n';
cout <<'\n';
cout <<"noredami baigti: simbolis+Enter" <<'\n';
//informacijos ivedimas
cin >> x;
}
Baziniai duomenų tipai
Kiekvienas kintamasis, kurį norima naudoti C++ kalboje turi būti priskirtas kažkuriam tipui. Priskirtas tipas kompiliatoriui nurodo, kiek vietos atmintyje reikės išskirti kintamajam, kokios operacijos ir kokie rezultatų vaizdavimo būdai bus leidžiami. Vadinasi neteisingai priskirtas tipas neišvengiamai lems netesingą programos vykdymą. Pagrindiniai tipai pateikti 1 lentelėje. Joje pateiktos ne tik baziniai C++ naudojami kintamųjų tipai, bei ir Borland Delfi aplinkoje sutinkami analogai.
Delphi
|
Reikšmė/dydis
|
C++
|
ShortInt
|
8-bit integer
|
signed char
|
SmallInt
|
16-bit integer
|
short
|
LongInt
|
32-bit integer
|
int
|
Byte
|
8-bit unsigned integer
|
unsigned char
|
Word
|
16-bit unsigned integer
|
unsigned short
|
Integer
|
32-bit integer
|
int
|
Cardinal
|
32-bit unsigned integer
|
unsigned int
|
Boolean
|
true/false
|
bool
|
ByteBool
|
true/false or 8-bit unsigned integer
|
unsigned char
|
WordBool
|
true/false or 16-bit unsigned integer
|
unsigned short
|
AnsiChar
|
8-bit unsigned character
|
char
|
Char
|
8-bit unsigned character
|
char
|
Single
|
32-bit floating point number
|
float
|
Double
|
64-bit floating point number
|
double
|
Extended
|
80-bit floating point number
|
long double
|
Real
|
32-bit floating point number
|
double
|
Bitų kiekis nurodo maksimalų įrašomą skaičių. Pagal jį galima surasti ir maksimalią reikšmę – jei bitų yra N, tuomet maksimalus galimas įrašyti skaičius yra 2N-1:
N=8; 28-1=255.
Jei naudojamas kintamųjų tipas yra su ženklu, tuomet į maksimalus skaičius dalinasi pusiau (vienas dalis į neigiamą pusę, kita į teigiamą)
Standartinės aritmetinės operacijos C++ kalboje
Skaičiavimo procedūros C++ kalboje pačiu paprasčiausiu atveju yra standartinės kaip ir kitose kalbose – pradžioje rašomas kintamasis, kuriam priskiriamas skaičiavimo rezultatas, vėliau pati skaičiavimo operacija su joje dalyvaujančiais kintamaisiais:
atsakymas = kintamasis1 <operacija> kintamasis2
Dažniausiai naudojamos operacijos:
+ sudėties veiksmas ir teigiamas skaičiaus ženklas;
- atimties veiksmas ir neigiamas skaičiaus ženklas;
* daugyba;
/ dalyba;
% tik sveikajam tipui taikomas liekanos skaičiavimo veiksmas.
Skaičiavimo išraiškose svarbi aprašomų veiksmų vykdymo tvarka, kurią valdo operatorių prioritetai, asociatyvumo savybės ir lenktiniai skliaustai. Aukščiausią prioritetą turi operacijos, parašytos skliaustuose. Toliau seka daugyba, dalyba ir sumos bei skirtumo operacijos.
C++ kaaboje galioja sutrumpintos operacijų formos:
+= = *= /=
Užrašas y+=x; atitinka y=y+x;
Užrašas y*=x; atitinka y=y*x;
Dar paprasčiau realizuojamas mažinimas arba didinimas vienetu:
y=x++; //priskyrimas ir didinimas vienetu
y=++x; //didinimas vienetu ir priskyrimas
y=--x; //mazinimas vienetu ir priskyrimas
y=x--; //priskyrimas ir mazinimas vienetu
Svarbu atsiminti, jog operacijos rezultato tipas nustatomas ne pagal rezultato, o pagal argumentų tipus. Todėl jei atliekama operacija su dviem sveikais skaičiais, tai ir rezultatas bus sveikas skaičius, nepriklausomai nuo to, į kokį kintamąjį jis įrašomas. Pvz. atlikus tokią skaičiavimo operaciją:
float sk;
sk=2/3;
atsakymas bus 0, tuo tarpu tūrėtų būti 0,666. Taip yra todėl, jog atliekant dalybą iš pradžių kompiuterio atmintyje gaunamas rezultatas 0 (sveikoji dalis), o tik paskui ji įrašoma į sk kintamąjį. Norint gauti realų sveikųjų skaičių dalybos rezultatą, išraiškai reikia taikyti tipų keitimo (type casting) veiksmą, kuris aprašomas tokia sintaksės struktūra:
(<naujas tipo vardas>)<pertvarkoma išraiška>
Tuomet pvz. atrodytų taip:
float sk;
sk=(float)2/3;
Pavyzdinė programa su kintamųjų tipais ir operacijomis:
#include <iostream.h>
main(){
//kintamuju aprasymas
short y;
int sk1=22222, sk2;
float sk_f;
//pradiniu duomenu ivedimas
cout << "iveskite skaiciu" << '\n';
cout << "skaicius=";
cin >> sk2;
//skaiciavimo operacijos
cout << "pradiniai skaiciavimu duomenys:" <<'\n';
cout << "1 skaicius=" << sk1 << '\n';
cout << "2 skaicius=" << sk2 << '\n';
cout <<'\n';
cout << "atlikus sandauga" << '\n';
y= sk1*sk2;
cout << "y=" << y << '\n';
cout << "Noredami iseiti iveskite bet koki skaiciu";
cout << '\n';
cin >> sk1;
}