Добавить в цитаты Настройки чтения

Страница 27 из 30



СЧВ – счетчик вставаний. У разбойника правило – умываться только при 4-м вставании. Поэтому при каждом вставании он кладет в специальную лунку камешек (СЧВ=СЧВ+1) и пересчитывает их общее количество. Если в лунке больше 3-х камешков (СЧВ > 3), разбойник вынимает из лунки все камешки (делает СЧВ=0) и идет умываться, иначе идет есть.

В свободное от работы время к услугам разбойника имеется меню развлечений (девочки, песни, драка). Если его очередь грабить, надо идти грабить!

Наш разбойник будет дисциплинированно стоять на большой дороге в любую погоду и время суток до появления клиентов. А как только они появятся, он обязательно начнет операцию ограбления.

Алгоритм предполагает, что стрельба может быть только после начала операции ограбления. В реальной жизни ситуация будет не такой однозначной. Но это будет совсем другой алгоритм.

Даже из беглого взгляда на эту блок-схему видно, что она состоит всего из двух видов операций: работа – прямоугольник и выбор – ромбик. Меню развлечений (девочки, песни, драка) – это всего лишь компактная форма записи выбора из множества вариантов. Кроме того, в блок-схеме много стрелок, определяющих последовательность операций. Для описания алгоритма используются всего три алгоритмических конструкции: следование, развилка и цикл. Даже очень сложная программа, в том числе та, которая играет в шахматы, состоит из арифметических и логических операций, образующих сложную систему всего из трёх простых структур: следование, развилка и цикл.

Следование – последовательность операций, в которой завершение предыдущей операции однозначно обозначает переход к последующей (Ложиться спать – Спать – Проснуться; Идти грабить – Стоять на большой дороге).

Развилка – алгоритмическая структура, в которой исполнение или неисполнение определённого условия предыдущей операции определяет последующую операцию (уже темно? СЧВ >3? Моя очередь грабить? Появились клиенты? Стреляют?).

Цикл – алгоритмическая структура, обеспечивающая многократное повторение определённой совокупности операций (в блок-схеме: цикл всего поведения, цикл вставаний без умываний, цикл процесса ограбления и др.).

Кроме того, данная блок-схема включает в себя очень распространённую форму организации цикла – «счётчик» и особую форму выбора из множества вариантов – «меню»

Счётчик – циклическое накопление определяемого по заданной формуле числа. Например, СЧВ = СЧВ + 1. означает, что при каждом вставании в СЧВ добавляется 1. После выполнения своей функции счётчик очищается (обнуляется), т. е. в СЧВ записывается 0.



Меню – способ организации развилки с множеством вариантов перехода.

В обычной жизни мы постоянно пользуемся этими структурами. Просто не знаем их названий. Но это не меняет сути дела. А если скажите, что всё это слишком примитивно, что реальная жизнь значительно сложнее, будете правы. Алгоритм – это модель определенного процесса. А любая модель отражает лишь некоторые стороны моделируемого объекта. Значит, чем лучше автор алгоритма знает объект моделирования, тем лучше будет алгоритм. Кроме того, алгоритм разрабатывается для реализации в конкретной системе. Значит, его автор должен знать эту систему, например, самого себя. Алгоритм, описанный на языке и в терминах реализующей его системы, это уже программа. Значит, автор алгоритма – это и есть настоящий программист. А тот, кто описывает готовый алгоритм в командах ЭВМ или на человеческом языке – это кодировщик. Умение программировать – это дар божий! А как быть тем, кому этого дара досталось меньше или не досталось совсем? Учиться!

Урок 2. Системы счисления

Сначала, для обозначения количеств, они придумали их изображения – цифры. Но количества были и очень большими, понадобились числа, а значит системы счисления. Сегодня мы пользуемся позиционной десятичной системой. Позиционной она называется потому что значение каждой цифры в записи числа зависит от ее позиции в последовательности цифр, изображающей число. А десятичная – потому что основанием счета является число десять. Если бы у человека было восемь пальцев, мы считали бы в восьмеричной системе: 1, 2…, 7, 108 (восемь). Запись числа «восемь» в виде «10» использовали бы для того, чтобы на месте нуля записывать цифры 1, 2…. 7 и формировать записи чисел – 118 (одиннавосемь или скороговоркой одиннавсемь), 128

(дванавосемь, или двенавсемь) и т. д. После числа 178, («семь на восемь», т. е. семнавсемь) появилось бы число 208 (дважды восемь или двавсемь), затем 21 g (двавсемьодин), 22g (двавсемьдва) и т. д. Никаких проблем! И как экзотику мы воспринимали бы объяснения, что в десятичной системе 1710 – это семнадцать, а 2010 – это двадцать, т. е. дважды десять.

Вавилонская позиционная система использовала для записи чисел 60 различных знаков. Ее следы сохранились в способах измерения величин углов и времени. Сохранились до наших дней следы и других древних систем счисления: пуд (16), дюжина (12) и др. В связи с развитием вычислительной техники большое значение приобрели системы с основаниями 2 (двоичная), 8 (восьмеричная) и 16 (шестнадцатиричная). Кстати, именно так считали древние майя. Число 1610 они приняли в качестве основания счета, наверное, сосчитав все пальцы на руках и добавив к ним два кулака и два пинка. Если цифру 1610 назвать «шиш», то запись числа 2516 мы читали бы как «двашиш пять»), т. е. 2516 = 2×16 + 5 = 3710. Никаких проблем!

Как выглядела бы система счисления при основании = 2? В этом случае число «два» мы должны записать в виде 10, а для записи других чисел использовать только цифры 0 и 1. Поскольку запись чисел в двоичной системе ни с чем не спутаешь, использовать нижний индекс для обозначения двоичных чисел не имеет смысла. Вот как выглядит число 37 в двоичной системе: 100101, что в десятичной означает: 25+22+1 = 32+4+1 = 37. А теперь представьте, что наши предки приняли не десятичную систему счисления, а восьмеричную или шестнадцатиричную. Современные ЭВМ были бы несколько проще, поскольку двоичная система хорошо стыкуется с 8-ричной и 16-ричной системами: 23 = 8, 24= 16.

Конечно, мир богаче любой формальной системы. Часть бытовой техники связана с частотой электросети (в России – 50 герц), поэтому в нашем телевизоре 625 строк и 25 кадров в секунду. Не вызывает никаких проблем, что прямой угол 90 градусов (не знаю и не хочу знать, почему!). Вся вычислительная техника и часть бытовых приборов связаны с двоично-восьмерично-шестнадцатиричной системами. Поэтому нам так часто встречаются параметры: 16 режимов, 128 строк, 256 символов, 256 цветов, 1024 строки, 4096 Кбайта и т. д. Но когда мы работаем с ЭВМ, никаких двоичных цифр на экране не появляется. Более того, последние модели ЭВМ вообще разговаривают с нами на человеческом языке!

Используемые в настоящее время метрические приставки кило, мега, гига и другие основаны на степенях числа 10, а не двойки, являющейся основой двоичного исчисления, на котором основаны компьютеры. Поэтому международная организация International Electrotechnical утвердила новые приставки для единиц измерения количества данных: киби, меби, гиби, теби, пеби и эксби (kibi, mebi, gibi, tebi, pebi и exbi) Новый термин «кибибайт» («kibibyte») вместо нынешнего «килобайта» будет обозначать, что в действительности их не 1000, как можно заключить из приставки «кило», а 1024 (2 в 10 степени).