Задача Перевести число 11101 из двоичной системы счисления в десятичную
Рассмотреть процесс работы программы на
языке Паскаль Текст программы function step(x:integer):longint; var i:integer; st:longint; begin Зеленым цветом выделена if x=0 then step:=1 else begin функция возведения числа 2 в st:=1; степень for i:=1 to x do begin st:=st*2; step:=st; end; X – аргумент функции – показатель степени end; var k,a,b,d,s:longint; Функция начинается с условия: если begin показатель степени равен 0, то функция s:=0; k:=0; возвращает 1 readln(a); repeat Если условие не выполняется: выполняется b:=a mod 10; цикл со счетчиком. Цифра 2 перемножается d:=a div 10; столько раз, чему равен аргумент Х. s:=s+b*step(k); Функция возвращает значение степени k:=k+1; числа 2. a:=d; until d=0; writeln(s); end. Readln(a) – команда которая просит нас ввести с клавиатуры двоичное число.
Примечание: число не должно содержать
цифр больше 10, т.к. мы используем тип данных LONGINT Введем число 11101 Рассмотрим работу цикла с постусловием на примере введенного числа 11101 Рассмотрим работу цикла S=1+0*2=1 S=5+1*8=13 S=0+1*1=1 S=1+1*4=5 S=13+1*16=29 s:=0; 11101 0 0 k:=0; a S K b d Step(k) readln(a); d≠0 1110 1 1 1 repeat Начало цикла b:=a mod 10; 1110 1 d≠0 111 1 2 0 111 2 d:=a div 10; 1110 1 d≠0 11 5 3 1 11 4 s:=s+b*step(k); k:=k+1; d≠0 1 13 4 1 1 8 a:=d; d=0 0 29 5 1 0 16 until d=0;
29 Спасибо за внимание сайт: krivaksin.ru (Информатика в школе)