Программа
перевода заданного целого числа из
десятичной системы в
двоичную. Результатом
перевода является строка.
|
Program
pr37 (Input, Output);
|
Объявление
имени программы
|
Label
1, 2;
|
Блок
объявления меток: задаем метки 1 и 2
|
Var
|
Блок
объявления глобальных переменных
|
A
: Integer;
|
Переменная
A - переводимое число
|
C
: Integer;
|
Переменная
C - частное от деления нацело
|
B
: Integer;
|
Переменная
B - Вспомогательное число, служит для
хранения значения A
|
S
: String;
|
Переменная
S - результат перевода
|
|
|
Begin
|
Начало
тела программы
|
|
|
S
:= '';
|
Начальное
значение S - пустая строка
|
WriteLn
('PASCAL: Перевод из десятичной системы
счисления в двоичную.');
|
Формулировка
цели алгоритма
|
Write
('Введите число: ');
|
Запрос
ввода A - переводимого числа
|
ReadLn
(A);
|
Ввод
A
|
|
|
B
:= A;
|
Запоминаем
значение A в переменной B, т.к. в
дальнейшем оно будет изменяться
|
2:
C := A Div 2;
Делим A на 2 каждый раз и находим
|
Метка
2: Заносим в C частное от деления текущего
A на 2
|
остатки,
а затем соединяем
частное и
|
|
If
A - C*2 = 0 Then S := '0' + S; остатки
как символьные величины, что
|
Если
остаток от деления A на 2 равен 0, то
добавляем спереди к S цифру '0' If A - C*2 = 1 Then
S := '1' + S; дает
возможность перевода больших чисел
|
Если
остаток от деления A на 2 равен 1, то
добавляем спереди к S цифру '1'
|
|
|
|
If
C < 1 Then Goto 1;
|
Если
C < 1, т.е. перевод закончен, то переход на
метку 1
|
|
|
A
:= C; Goto 2;
|
Заносим
в A частное отделения его на 2, а затем
переход на метку 2
|
|
|
1:
WriteLn ('Число ', B, ' в двоичной системе - ', s);
|
Метка
1: Вывод результата перевода, в В
хранится введенное значение A
|
|
|
ReadLn;
|
Ожидание
нажатия клавиши Enter для завершения
|
End.
|
Конец
программы.
|