Prevod z desiatkovej sústavy do dvojkovej sústavy

Postup prevodu čísel si naprogramujeme do kalkulačky. Opäť si ako prvé zadefinujeme premenné - premenná cislo, do ktorej si budeme zadávať číselný vstup v šestnástkovej sústave z editovacieho riadku, a premenná vysledok pre priebežné výpočty a konečný správny výsledok. Premennú cislo potrebujeme v znakovom údajovom type (nebudeme ju konvertovať na celočíselný údajový typ), pretože vieme, že šestnástková sústava používa aj šesť písmen abecedy a teda hodnoty zadané v kombinácii s písmenami by sa nedali konvertovať na čísla a program by nám hlásil chybu. Premenná vysledok zase musí byť typu Real, keďže s ňou budeme pracovať pri výpočtoch mocnín a z predchádzajúcej kapitoly vieme, že funkcia Power pracuje s reálnymi číslami. Takisto nesmieme zabudnúť doplniť knižnicu Math do aktuálnych knižníc našej aplikácie.

Ako prvé si opäť načítame hodnotu z komponentu Edit1 a uložíme do premennej cislo. Aby nám program previedol všetky zadané čísla a vypísal jednotný výsledok, využijeme cyklus For a príkaz Length. Program postupne prejde jednotlivé čísla (prípadne písmená) zadané v editovacom riadku až kým sa nedostane k poslednému. Z príkladu uvedeného hore vieme, že hodnotu čísla/znaku vynásobí n-1 mocninou čísla 16. Zistiť hodnotu čísel nebude problém, keďže hodnota čísla jeden je 1, hodnota čísla dva je 2, atď. Problém nastáva, keď cyklus narazí na nečíselný znak (písmeno). Preto musíme rozlíšiť, či program načítal číslo alebo písmeno. Ak načítal písmeno, musí mu priradiť hodnotu, ktorou bude násobiť aktuálnu mocninu čísla 16.

Pre rozlišovanie čísel od písmen zadáme jednoduchý príkaz If, ktorý v prípade, že aktuálny znak je číslo (patrí do zatvoreného intervalu 0 až 9), vynásobí aktuálnu mocninu čísla 16 číslom, ktoré je zadané na danej pozícii (ak sme zadali ako štvrtý znak číslo 8, program vynásobí číslom 8 tretiu mocninu čísla 16 => 163 * 8), pripočíta k nej priebežný výsledok a nový priebežný výsledok si zapíše do premennej vysledok

V prípade, že zadaný znak je písmeno, program musí rozlíšiť, o ktorý znak ide a na základe neho bude mocninu čísla 16 násobiť hodnotami od 10 po 15. Pre toto rozlišovanie využijeme vetvu else, v ktorej použijeme príkaz Case (použitie príkazu Case bude v tomto prípade jednoduchšie než použitie príkazu If). V príkaze Case budeme porovnávať aktuálnu hodnotu znaku cislo[I] a pre každé možné riešenie navrhneme hodnotu násobku, ktorý bude aplikovaný vo výpočte (A = 10, B = 11, C = 12, atď). Pre tento účel si vytvoríme novú celočíselnú premennú nasobok, ktorej budeme prideľovať hodnotu od 10 po 15 a následne ňou budeme násobiť mocninu čísla 16.

Aby sme prepočet nemuseli stále písať, využijeme náš aktuálny cyklus For a na konci každého cyklu mu zadáme prepočet, ktorý si zapamätá ako aktuálnu hodnotu premennej vysledok, ku ktorej pripočíta jej predchádzajúcu hodnotu. Preto vo vetve If odstránime prepočet výsledku a iba zadáme hodnotu premennej nasobok ako číslo, ktoré je zadané na aktuálnej pozícii zistenej cifry (cislo[I]).

Problém môže nastať pri spustení programu v kroku porovnávania znakov. Keďže chceme v príkaze Case porovnávať písmená A až F, musíme ich napísať do jednoduchých úvodzoviek, aby ich program vedel porovnať ako znaky.  

Nakoniec si dáme vypísať posledný (konečný) výsledok. Na porovnanie si zadáme číslo z príkladu hore a po spustení programu dostávame správny prepočet (prevod) čísla. 

Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky