Prevod z desiatkovej sústavy do dvojkovej sústavy

Teraz si naprogramujeme prevodovú kalkulačku. Budeme potrebovať tlačidlo, editovací riadok, do ktorého budeme zapisovať číslo desiatkovej sústavy, ktoré budeme chcieť previesť do dvojkovej sústavy a grafickú plochu, na ktorú sa budú vypisovať výsledky. Na vytvorenie programu bude jednoduchšie využiť metódu delenia základom. Vieme, že čísla budeme deliť dvojkou až kým sa výsledok nebude rovnať nule. Takisto vieme, že výsledok 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. Tá bude celočíselného typu (Integer). Keďže ju budeme čítať z editovacieho riadku, ktorý pracuje s údajovým typom String, budeme ju musieť previesť na celočíselný údajový typ pomocou príkazu StrToInt.

Keďže budeme chcieť, aby program delil číslo dvojkou až kým celočíselný výsledok nebude nula, využijeme cyklus Repeat a zadáme mu podmienku (číslo po poslednom delení sa rovná nule). Aby program dokázal pracovať s priebežným výsledkom a ďalej ho delil, výsledkom po delení si budeme prepisovať pôvodne zadané číslo. Takisto je potrebné si zapamätať zvyšok po delení, ku ktorému budeme pripisovať ďalšie zvyšky. Pre tento účel si vytvoríme novú premennú vysledok. Keďže ju budeme chcieť na konci delenia iba jednoducho vypísať a nebudeme s ňou nijako počítať, bude typu String.

V tomto momente vieme, že deliť dokážeme dvomi príkazmi - div a mod. Príkazom div dostaneme celočíselný podiel, teda číslo, ktoré sa zapisuje naľavo od desatinnej čiarky. Príkazom mod naopak dostaneme zvyšok po celočíselnom delení, teda číslo zapísané napravo od desatinnej čiarky. Oba tieto príkazy využijeme v náš prospech pri programovaní našej kalkulačky.

Chceme, aby číslo napísané do editovacieho riadka bolo delené číslom dva a zároveň chceme, aby sa celočíselný výsledok zapísal ako nové číslo, ktoré sa v ďalšom opakovaní cyklu bude deliť. Ďalej chceme, aby sa zvyšok po delení zapísal do výsledku a aby sa ďalší výsledok zapísal pred predchádzajúci výsledok (naľavo od neho). 

Ak zapíšeme príkazy presne v tomto poradí, nastane chyba. Program nám síce správne vydelí čísla a zapíše výsledok, ale konečný výsledok je nesprávny a dokonca začína číslom nula, ktoré sa v žiadnej číselnej sústave na začiatku čísla nezapisuje (aj keď tam reálne je). Poďme si napísať postup výpočtu programu:

  1. Programu sme zadali číslo 10. Toto číslo nám vydelí dvojkou, výsledok je 5. Zároveň si číslo 5 zapamätá ako nasledujúce číslo pre delenie.
  2. Program znovu vydelí číslo dvojkou a zapamätá si zvyšok po delení. Ale! Program v tomto kroku pracuje už so zmeneným číslom a teda pracuje s číslom 5 a nie so zadaným číslom 10. Preto mu namiesto zvyšku 0 vyšiel zvyšok 1 (5:2=2, zv. 1, naopak 10:2=5, zv. 0).

Aby sme sa vyhli tomuto problému a počítali správne, musíme tieto dva riadky vymeniť. 

Teraz nám program urobí správny prevod čísel z desiatkovej sústavy do sústavy dvojkovej. 

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