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

konference Datová centra pro business

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.

Odpovědět

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

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 25 rokov. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity



Public Relations

Září – měsíc bezpečnosti se Sophos Central

SophosNepropásněte sérii webinářů zaměřených na aktuální bezpečnostní trendy a jednotnou správu zabezpečení vaše IT – každé pondělí a zdarma.
Nebylo by skvělé zabezpečit vaše firewally, počítače, servery a mobilní zařízení pomocí nejlepších kyberbezpečnostních řešení na trhu a spravovat vše z jednoho intuitivního uživatelského rozhraní?

Pokračování ...


Sophos

Redakční blog

Pavel Fric

Pavel Fric, 21. srpen

Sayonara Player 1.5.1

Přehrávač, jak má být. Poslední dobou vývoj šlape


Pavel Fric

Pavel Fric, 26. leden

MuseScore 3

První aktualizace třetí řady notačního editoru MuseScore


Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Všechny blogy »

Cyber Days 2019