Tvoríme program
Predstava programu je taká, že skonvertuje celé číslo do troch podôb. Prvá podoba bude hexadecimálna. Druhá bude osmičková a tretia binárna. Celkom jednoduchá predstava, ale uskutočniteľná? Samozrejme, nie je to nič zložité. Na prevod do hexadecimálnej sústavy nám poslúži funkcia Hex() a do osmičkovej funkcia Oct().
Najviac sa namakáme na realizácii prevodu do binárnej podoby. Z cyklu o operátoroch už by ste mali poznať prevod z desiatkovej do binárnej podoby. No v programe bude alternatívny postup a využijeme zaujímavého vzťahu medzi hexadecimálnymi číslami a ich binárnymi obdobami.
1. príklad: Program na konverziu do vybraných číselných sústav
Sub Conversion REM začiatok procedúry
Dim cislo As Long REM deklarácie premenných
Dim retazec As String
Dim hexRetazec As String
Dim octRetazec As String
Dim binaryRetazec As String
retazec = InputBox("Zadaj lubovolne cele cislo!") REM užívateľ zadáva číslo
If IsNull(retazec) Then Exit Sub REM testy či užívateľ zadal číslo
If Len(Trim(retazec)) = 0 Then Exit Sub
cislo = CLng(Trim(retazec))
hexRetazec = Hex(cislo) REM konvezie do určitých číselných sústav
octRetazec = Oct(cislo)
binaryRetazec = IntToBinaryConversion(cislo)
retazec = "Tvoje zvolené cislo = " & Cstr(cislo) & Chr(10) &
"Hex( " & CStr(cislo) & ") = " & hexRetazec & Chr(10) & "Oct( " & CStr(cislo) & ") =
" & octRetazec & Chr(10) & "Binary(" & Cstr(cislo) & ") = " & binaryRetazec
MsgBox retazec REM vypísanie na obrazovku
End Sub
REM funkcia na konverziu celého čísla na binárnu podobu
Function IntToBinaryConversion(ByVal cislo As Long) As String
Dim hexRetazec As String
Dim binaryRetazec As String
hexRetazec = Hex(cislo)
Dim i As Integer
For i = 1 To Len(hexRetazec)
Select Case Mid(hexRetazec, i, 1)
Case "0"
binaryRetazec = binaryRetazec & "0000"
Case "1"
binaryRetazec = binaryRetazec & "0001"
Case "2"
binaryRetazec = binaryRetazec & "0010"
Case "3"
binaryRetazec = binaryRetazec & "0011"
Case "4"
binaryRetazec = binaryRetazec & "0100"
Case "5"
binaryRetazec = binaryRetazec & "0101"
Case "6"
binaryRetazec = binaryRetazec & "0110"
Case "7"
binaryRetazec = binaryRetazec & "0111"
Case "8"
binaryRetazec = binaryRetazec & "1000"
Case "9"
binaryRetazec = binaryRetazec & "1001"
Case "A"
binaryRetazec = binaryRetazec & "1010"
Case "B"
binaryRetazec = binaryRetazec & "1011"
Case "C"
binaryRetazec = binaryRetazec & "1100"
Case "D"
binaryRetazec = binaryRetazec & "1101"
Case "E"
binaryRetazec = binaryRetazec & "1110"
Case "F"
binaryRetazec = binaryRetazec & "1111"
End Select
Next
IntToBinaryConversion = binaryRetazec
End Function
Vstup od užívateľa
Výsledok makra
Rozbor makra: Makro začína vstupom od užívateľa. Po zadaní čísla užívateľom program skontroluje, či bolo vôbec niečo zadané zo strany užívateľa Najprv funkcia IsNull skontroluje, či užívateľ niečo zadal. Ak nie, tak makro končí. Pozrieme sa i na situáciu, ak užívateľ zadal medzeru a žiadne číslo.
Medzery odstráni funkcia Trim (túto funkciu ešte precvičíme v budúcom dieli) a funkcia Len vráti počet znakov v reťazci. Ak vráti hodnotu 0, makro skončí. Následne v reťazec prekonvertujeme na premennú typu Long (dlhé celé čísla). A následne nastáva jadro programu. Zmeníme celé desiatkové číslo na hexadecimálne, osmičkové a binárne.
Zmena celého čísla na binárne je najkomplikovanejšia časť programu. Pre jednoduchú konverziu využijeme poznatok, že hexadecimálne čísla rastú rovnako, ako 4-bitové binárne čísla. Inak povedané, medzi týmito dvoma veličinami je priama úmera. Preto desiatkové číslo skonvertujeme na hexadecimálne a tak postupne získame binárnu podobu.
V tomto dieli vytvoríme program, ktorý nám umožní urobiť konverziu medzi niektorými číselnými sústavami. Zároveň
si precvičíme niektoré veci, ktoré sme už brali.








