Prevod z desiatkovej sústavy do dvojkovej sústavy

Ako aj pri predošlých príkladoch budeme potrebovať tlačidlo, grafické plátno a editovací riadok pre vstup čísla, ktoré budeme chcieť konvertovať. Na vytvorenie programu využijeme metódu delenia základom. Vložené čísla z editovacieho riadku budeme deliť číslom 16 až kým sa výsledok nebude rovnať nule. Z uvedených príkladov vieme, že výsledkom sú zvyšky po delení zapísané od posledného po prvý.

Ako prvé si zadeklarujeme premennú cislo, do ktorej si načítame číslo v desiatkovej sústave. Toto číslo si opäť prevedieme z textového údajového typu (String) na typ celočíselný (Integer) pomocou konverzie StrToInt. Keďže budeme chcieť, aby program delil vložené číslo číslom 16 až kým celočíselný výsledok nebude nula, využijeme cyklus Repeat a zadáme mu podmienku kedy sa číslo po poslednom delení rovná nule. Rovnako ako pri prepočtoch z desiatkovej sústavy do dvojkovej a naopak, aj v tomto programe potrebujeme, aby program dokázal pracovať s priebežným výsledkom a ďalej ho delil. Takisto je potrebné si zapamätať zvyšok po delení, ku ktorému budeme pripisovať ďalšie zvyšky. Pre tento účel využijeme novovytvorenú premennú vysledok, ktorá bude typu String, pretože s ňou nepotrebujeme pracovať ako s číselným údajom, ale údajom textovým na vypisovanie na grafickú plochu.

Číslo zadané v editovacom riadku budeme deliť dvakrát. Prvýkrát, aby sme dostali celočíselný podiel, teda číslo, ktoré sa zapisuje naľavo od desatinnej čiarky a budeme ho ďalej používať na opätovné delenie. Pri tomto delení využijeme príkaz div. Druhýkrát budeme deliť príkazom mod, aby sme dostali zvyšok po celočíselnom delení, teda číslo zapísané napravo od desatinnej čiarky, v našom prípade konečný výsledok. Ako aj v predchádzajúcich prevodoch, výsledky budeme zapisovať vždy naľavo k aktuálnemu výsledku prevodu. Opäť nesmieme zabudnúť na správne poradie príkazov. 

Po spustení programu a zadaní čísla v desiatkovej sústave vidíme nasledovné riešenie: 

Na základe príkladu, ktorý sme si vypočítali hore, vidíme, že výsledok nie je správny (9410 = 5E16). Problém nastáva v momente, kedy zvyšok po delení je väčší ako deväť. Vtedy nám program zvyšok síce pripočíta k predchádzajúcemu (aktuálnemu) zvyšku, ale pri šestnástkovej sústave nepracujeme len s číslami, ale aj písmenami od A po F a teda zvyšky od 10 po 15 musia byť nahradené týmito písmenami. Preto do nášho programu musíme doplniť príkaz, ktorý nám pri zvyšku vyššom ako deväť zamení čísla za príslušné písmená. Najjednoduchším riešením bude použiť príkaz Case a doplníme si premennú zvysok, do ktorej si budeme zapisovať aktuálny zvyšok. Ten sa bude porovnávať s podmienkami zadanými v príkaze case. Ak by sme porovnávali premennú vysledok, program by mal problém s porovnávaním.  

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