Урок
#10. «Циклы с условиями»
Глава #1 «Системы счисления...»
*проще простого*
Учителя тратят
много времени на представление чисел в различных системах счисления, хотя это
просто чистая арифметика. Например как объясняют перевод числа из десятичной в
двоичную СС. Организуем деление данного числа на 2, будем сохранять остатки от
деления. А полученный целочисленный результат опять разделим на 2 и тд. До тех
пор пока число не станет меньше 1. После завершения записываем остатки в строку
в обратном порядке.
14:2=7, остаток О
7:2 = 3, остаток 1
3:2=1, остаток 1 или что нагляднее
без:2:
В виде таблицы это выглядит так,
например перевести число 14 из десятичной в двоичную СС.
14 0
7 1
3 1
1 1
Все остатки записаны справа, создадим строку
остатков записав их в обратном порядке,
тогда 1410 – 11102
проверим 1*23+1*22+1*21+0*20 =8+4+2+0=14 все верно.
Глава #2 «Цикл с постусловием»
Интереснее дать слово программисту:
Составить программу переводу числа из
десятичной в двоичную систему счисления.
Пример :
INPUT.TXT
14
OUTPUT.TXT
1110
Сам алгоритм описан выше, нам осталось
только реализовать его в Паскале. Начнем с главного, с фразы «...до тех пор
пока число не станет меньше 1.»., то есть организовать цикл с условием. Цикл с
параметром мы хорошо знаем, пора познакомиться еще с двумя циклами WHILE и REPEAT.
Структура их такова:
Цикл с предусловием
WHILE <условие работы в цикле> DO
BEGIN i
<тело цикла>
END;
Цикл с постусловием:
REPEAT
<тело цикла>
Until <условие выхода из цикла>;
Для нашей программы все равно какой
цикл использовать, а мы будем работать с REPEAT.
Разберем подробнее структуру программы:
1.
чтение десятичного числа из INPUT.TXT
2.
открываем цикл с постусловием REPEAT
3.
вычисляем остаток и превращаем его в строку-символ STR(A MOD 2,К)
4.
накопление остатков в строку S: =
k+S;
5.
числу а присваиваем новое значение - целочисленный результат от деления
на 2 –
а:=а div 2;
6.
проверяем условие выхода из цикла until
а<1;, если условие не выполняется возвращаемся в цикл, если да выходим
из цикла
7.
вывод результата строки S
Весь текст программы:
var
a,b:integer;
s:string;
k:string[1];
begin
assign (input,”input.txt');
assign (output,”output.txt”);
reset(input);
rewrite(output);
read(a);
repeat
str(a mod 2,k);
s: = k+s;
a:=a div 2;
until a<l;
write(s);
end.
Практическое задание:
l.Ha диске А создать файл TWO.PAS и ввести программу
2.Во входной файл INPUT.TXT записать
число «14» и проверить программу
3.Протестировать программу на «10»
То же самое может и цикл с предусловием
WHILE, разработка такой программы остается за вами...
Глава #3 «Вопросы для повторения и ДЗ»
Вопросы для повторения:
1.
Какова структура цикла с предусловием в Паскале?
2.
Какова структура цикла с постусловием в Паскале?
3.
Как записывается процедура преобразования числа в строку?
4.
Какие арифметические операторы определены в Паскале?
5.
Как организовать накопление строки символов?
*
Домашнее задание:
1.
Изменить программу TWO.PAS так, чтобы она осуществляла перевод числа из
десятичной в троичную СС, с использованием циклов и WHILE и REPEAT
Пример:
INPUT.TXT
14
OUTPUT.TXT
112