[C++] Kalkulačka (krok za krokem)

Pokud někdo začíná nebo už nějaký ten čas programuje v C++, tak si třeba bude chtít vytvořit nějakou jednoduchou kalkulačku. Nemyslím teď kalkulačku, ve které si vybíráte nejprve z menu jaké operace budete počítat, ale zadáte dvě hodnoty včetně operátoru. Aby to nebylo zbytečně složité, zaměříme se na počítání s dvěmi hodnotami. Kalkulačka bude provádět základní matematické operace (sčítání,odčítání,násobení,dělení). Pokusím se vše vysvětlovat jako naprostým začátečníkům v programování, aby příklad byl pochopitelný opravdu pro každého.

C++ Kalkulačka
Nejprve si vytvoříme základ, na kterém budeme stavět. Tedy použijeme knihovnu iostream, a veškeré příklady budeme zapisovat do hlavní funkce int main(). Pro začátečníky, je tedy funkce main, základní funkcí kterou program po spuštění vyvolává. Z ní vyvolává vše uvnitř ní (příkazy). Bez funkce main, by měl být program nefunkční. Podoba našeho základu je taková:
#include <iostream>

int main()
{

}

Program vypisuje text nebo ukončuje řádek pomocí funkcí std::cout/std::endl

Aby jsme nemuseli psát to std:: ,tak využíváme funkce, která zpřístupňuje tyto definice

using namespace std;

Tento příkaz, se nachází před hlavní funkcí int main(). A jak už jsem napsal, postará se o to, aby jsme stále nemuseli psát to std:: . Proč to tak je, na to si nechám tutoriály týkající se C++. Pokračujeme dál…

Zapište si tedy tento příkaz do svého programu a přejdeme k výpisu textu na obrazovku. Začal bych tedy nějakým uvítacím textem. Kód by vypadal nějak takto:

#include <iostream>

using namespace std;

int main()
{
 cout << "Program Kalkulacka" << endl;
 cout << "Zapiste priklad ve tvaru: " << "cislo (operator) cislo2" << endl;
}

Šipky znázorňují směr toku informací, směrem na cout, znamená směr informací na obrazovku. Kdyby to bylo opačným směrem,program by musel místo cout obsahovat cin a vstup informací by byl do nějaké proměnné. O tom, ale zachviličku. Příkaz endl; nám zakončil řádek a program pokračuje tedy na dalším řádku. To tedy k vysvětlení příkazů z kódu. Teď si deklarujeme proměnné. Ještě předtím než to udělám, tak je potřeba znát datové typy proměnných především pro správnost našich výpočtů. My využijeme celočíselného znaménkového datového typu,znakového datového typu a neceločíselného neznaménkového datového typu. Celočíselné hodnoty budou přiřazeny pro sčítání,odčítání,násobení. Neceločíselné hodnoty budou jen pro dělení a znakový datový typ zůstane pro zadaný operátor uživatelem.

#include <iostream>

int a,b,c;
char op;
float d,e,f;

using namespace std;

int main()
{
     cout << "Program Kalkulacka" << endl;
     cout << "Zapiste priklad ve tvaru: " << "cislo (operator) cislo2" << endl;
}

Takže jak vidíte na kódu proměnné jsou zapsány pod knihovnou, a máme deklarované různé datové typy proměnných. Teď se vrhneme ne uživatelský vstup do těchto proměnných. Použijeme příkaz cin, který zajistí vstup do našich proměnných. Kód si napište pod předposlední řádek s výpisem textu na obrazovku:

cin >> a >> op >> b;

Směrové šipky nastavují tedy opět směr toku informací a v tomto případě do proměnné. Uživatel tedy zadá v tuhle chvíli nějaké informace a program musí dále konat činnost s informacemi, které má. Nejprve začneme s výběrem početní operace po zadání určitého operátoru. Zapotřebí k tomuto budou podmínky. Takže pokud uživatel do proměnné op zadá + , tak program bude sčítat čísla. Pokud zadá / nebo : ,tak se provede dělení. Zde je tedy kód s podmínkou řešící zadaný operátor.:

if (op == '+')
{

}
else if (op == '-')
{

}
else if (op == '*')
{

}
else if ((op == '/') || (op == ':'))
{

}
else
{

}

U podmínek se nacházejí dvě rovnítka. Je to proto, že slouží k porovnávání. Jedno rovnítko slouží k přiřazení hodnoty. Například při počítání se přiřazuje výsledek k nějaké proměnné, ale o tom si ukážeme dále. Znaky se zapisují mezi apostrofy a ještě vysvětlím operátor || tento operátor slouží jako OR. Takže v češtině pokud platí podmínka (/) nebo podmínka (:) pokračuj dál v akci. Druhým operátorem by byl ještě && ,ale tím se zabývat teď nebudeme, jelikož ho nepotřebujeme. Přejdeme k prvnímu výpočtu tedy sčítání, popíšu ještě dělení a poslední podmínku při který není zadán žádný operátor. Násobení a odčítání bude stejné jako při sčítání, alespoň na stejném principu. Zde tedy máme výsledný kód u kterého popíšu vše potřebné:

#include <iostream>

int a,b,c;
char op;
float d,e,f;

using namespace std;

int main()
{
     cout << "Program Kalkulacka" << endl;
     cout << "Zapiste priklad ve tvaru: " << "cislo (operator) cislo2" << endl;
     cin >> a >> op >> b;

     if (op == '+')
     {
          c = a + b;
          cout << a << " + " << b << " = " << c << endl;
     }
     else if (op == '-')
     {
          c = a - b;
          cout << a << " - " << b << " = " << c << endl;          
     }
     else if (op == '*')
     {
          c = a * b;
          cout << a << " * " << b << " = " << c << endl;          
     }
     else if ((op == '/') || (op == ':'))
     {
          d = a;
          e = b;

          if (e == 0)
          {
           cout << "Nelze delit nulou!" << endl;
           cin.get();
           return 1;
          } 

          f = d / e;
          cout << d << " / " << e << " = " << f << endl;          
     }
     else
     {
        cout << "Byl zadan chybny operator,opakujte akci opetovnym spustenim programu" << endl;
     }
     cout << "Program bude ukoncen stiskem klavesy ENTER" << endl;
     cin.get();
     cin.get();
}

Co se týče toho sčítání, tak program sečte proměnné a a b a přiřadí výsledek proměnné c. Pak už jen se vypíše text na obrazovku a na konci programu jen program informuje o ukončení klávesou ENTER. Nachází se tam cin.get() ,což je příkaz vyčkávající na znak, tedy náš ENTER a poté program bude ukončen.

U dělení je toho už více, program nejprve přiřadí své hodnoty z proměnných a,b proměnným d,e. Pak probíhá ověření zda e se nerovná nule. Pokud ano, vypíše varovné hlášení,vyčká na znak a program je okamžitě ukončen, což zajišťuje return 1. Poslední ELSE vypisuje hlášení, pokud zadaný operátor uživatelem není schodný z žádnými operátory v podmínce.

To je tedy vše k našemu jednoduchému kódu. V případě, že se setkáte s nějakými chybami, či nějakými nesrovnalostmi. Níže můžete psát do komentářů.

Příspěvek byl publikován v rubrice C++. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>