přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky

Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky

cplusplus.png

V článku sa pozrieme na konverzie a pretypovanie premenných. Zaujímavosťou bude i jednoduchá kalkulačka, kde si precvičíte podmienky.


Konverzia medzi typy premenných

V jazyku C++ je možné priraďovať jeden typ premennej na druhý. Poznáme tri typy konverzie:

  1. konverzia pri priradení
  2. konverzia vo výrazoch
  3. konverzia pri predávaní parametrov funkciam. Tento tretí spôsob si zatiaľ v článku neukážeme, pretože ešte nepoznáte funkcie. Aj k tomu behom seriálu dôjdeme.

1. program: Ukážka konverzie pri priradení

#include <iostream>
 
 using namespace std;
 
 int main()
 {
     float a = 25;
     cout << "Konverzia premennej int na float: "<<a<<"\n";
     int b = 25.5887;
     cout << "Konverzia premennej float na int: "<<b;
     return 0;
 }

Výsledok:

 25
 25

Rozbor programu:

V prvom prípade procesor číslo 25 berie ako typ premennej int ktorú uloží do premennej a a zároveň jej priradí typ float. Vizuálne sa nič neudeje. Avšak, ďalej s premennou môžete pracovať ako float.

Druhý opačný prípad je ale zaujímavejší. Prevod z float na int premenná stratí desatinná čiarka a bude z nej celé číslo.

2. program: Konverzia vo výrazoch

#include <iostream>
 
 using namespace std;
 
 int main()
 {
     float a = 5.4545;
     float b = 78.4444;
     int c;
     c = a + b;
     cout << c<<"\n";
     return 0;
 }

Výsledok:

83

Rozbor programu:

V programe deklarujeme dva premenné typu float a výsledok sčítania uložíme do int premennej.

Čo sa stane pri výpise? Premenná stratí desatinnú čiarku a výsledok je celočíselný. Došlo ku konverzii pomocou výrazov.

Pretypovanie premenných

Môžete si vynútiť zmenu premennej, kedy to potrebujete? Áno môžete. Úkon nazývame pretypovanie premenných.

V jazyku C++ poznáme len dva spôsoby pretypovania.

1. spôsob:

    float a;
     (int)a;

Najprv je premenná zadeklárovaná ako typ premennej float. Následne pretypujeme premennú z float na int.

2. spôsob:

    float a;
     int (a);

V tomto spôsobe sme inak pretypovali premennú a. Výsledne sme vytvorili premennú typu int.

Poďme sa pozrieť na príklad.

3. príklad: Príklad na pretypovanie

#include <iostream>
 
 using namespace std;
 
 int main()
 {
     float a = 5.4545;
     float b = 7.4444;
     cout << (int)a+(int)b<<"\n";
     cout << int(a)+int(b)<<"\n";
     return 0;
 }

Výsledok:

 12
 12

Podmienky

S podmienkami ste sa už stretli nepriamo i v minulých dielách. Vytvoríme si primitívnu kalkulačku,  pri ktorej si to preopakujeme.

4. program: Pomocou if, else if a else

#include <iostream>
 
 using namespace std;
 
 int main()
 {
     cout << "Zadajte prve cislo: "<<"\n";
 
     int a;
     cin >> a;
 
     cout << "Zadajte druhe cislo: "<<"\n";
 
     int b;
     cin >> b;
 
     cout << "Zadajte aritmeticku operaciu + alebo - alebo * alebo /"<<"\n";
 
     char vstup;
     cin>> vstup;
 
     int vysledok;
 
     if (vstup == '+')
         vysledok = a + b;
     else if (vstup == '-')
         vysledok = a – b;
     else if (vstup == '*')
         vysledok = a * b;
     else if (vstup == '/')
         vysledok = a / b;
     else 
     {
         cout << "Bud si slepy alebo fakt je pocitac pre teba nebezpecna vec"<<"\n";
         return 0;
     }
 
     cout << "Vysledok "<<vstup<<" je: "<<vysledok<<"\n";
     return 0;
 }

5. program: Pomocou switch a case a príkazu skoku break

#include <iostream>
 
 using namespace std;
 
 int main()
 {
     cout << "Zadajte prve cislo: "<<"\n";
 
     int a;
     cin >> a;
 
     cout << "Zadajte druhe cislo: "<<"\n"
 ;
     int b;
     cin >> b;
 
     cout << "Zadajte aritmeticku operaciu + alebo - alebo * alebo /"<<"\n";
 
     char vstup;
     cin>> vstup;
 
     int vysledok;
 
     switch(vstup) {
         case '+':
             vysledok = a + b;
             break;
         case '-':
             vysledok = a – b;
             break;
         case '*':
             vysledok = a * b;
             break;
         case '/':
             vysledok = a / b;
             break;
         default:
             cout << "Bud si slepy alebo fakt je pocitac pre teba nebezpecna vec"<<"\n";
             return 0;
     }
 
     cout << "Vysledok "<<vstup<<" je: "<<vysledok<<"\n";
     return 0;
 }

Poznámka šéfredaktora: Diskuse byla vymazána. Věcné poznámky k článkům jsou v pořádku a děkujeme za ně. Komentáře přecházející v osobní útoky a urážka v pořádku nejsou.

Nahoru

Příspěvky

Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
PavelS 21. 09. 2016, 08:05:45
Odpovědět  Odkaz 
Pokud vim, tak C++ zna pouze tyto casty: static_cast, dynamic_cast a reinterpret_cast.

To co vy tu predvadite jsou C-style casty, ktere se v C++ v zadnem pripade nedoporucuji-duvody se daji dohledat v diskuzich na stackoverflow.

Prijde mi, ze tento serial je ukazkou toho, jak C++ nema vypadat, je to prehlidka bad practices.
Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
Castler 21. 09. 2016, 12:53:03
Odpovědět  Odkaz 
Mne sa tento serial paci. Niesom ziadny profi programator ale zda sa mi pisany velmi pristupnou cestou. Tak nejak sa mi dobre cita a chape....aj ked niekto poukazuje na nedokonalosti. Autorovi chcem touto cestou podakovat.
Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
Petr Kozelka 22. 09. 2016, 16:17:02
Odpovědět  Odkaz 
Pan sefredaktor ma evidentne problemy se ctenim. V mem prispevku sem nikde autora neurazil. Ze je kvalita clanku mizerna a neobsahuje zadne pretypovani je fakt a ne urazka.
Eduard Boldižár Re: Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
Eduard Boldižár 22. 09. 2016, 16:37:51
Odpovědět  Odkaz 
Uznávam, že som využil pretypovanie klasické C-čkovské a prehliadol som typické C++. Avšak v stave seriálu majú ešte majú čas na static_cast, dynamic_cast a reinterpret_cast. Ale ďakujem za kritiku, i to treba.
PS: diskusia nebola zmazaná kvôli vám a ten kto to spôsobil, prosím aby sa zdržal komentárov, ktoré sú mimo témy programovania.
Re: Re: Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
daks 22. 09. 2016, 18:30:52
Odpovědět  Odkaz 
No, vypadá to divně, když se smaže celá diskuze, protože naposledy, co jsem ji četl, bylo tam tak pět, šest komentářů a žádnou urážku jsem v nich nezaznamenal. Ale třeba redakční systém neumožňuje odstranit jednotlivé komentáře...
Lukáš Jelínek Re: Re: Re: Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
Lukáš Jelínek 22. 09. 2016, 18:57:46
Odpovědět  Odkaz 
Diskusi jsem smazal proto, že i přes moji žádost o věcné diskutování gradovaly komentáře (neřešil jsem a nebudu řešit, čí byly - tím spíš, že si ani nepamatuji, kdo co psal), které měly do věcné diskuse daleko. V okamžiku, kdy jsem diskusi mazal, v ní bylo asi 15-18 příspěvků. V takové situaci je lepší smazat všechno, než řešit, co smazat a co ponechat.
Re: Re: Re: Re: Programovanie v jazyku C++: Konverzie, pretypovanie a podmienky
daks 22. 09. 2016, 21:39:27
Odpovědět  Odkaz 
Rozumím, tak to jsem tu eskalaci názorů prošvihnul.

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz