Теперь преобразуем нарисованную нами блок-схему алгоритма определения следующего числа месяца в программу на basic. И так, во-первых, необходимо ввести текущее число месяца. Сделаем это при помощи уже знакомого нам оператора ввода - Input Day. В данном случае Day - это имя переменной, в которой будет храниться текущее число месяца. Далее, в соответствии с блок-схемой необходимо проверить, значение переменной Day меньше чем 31 или нет. Для осуществления подобного рода проверок в любом языке программирования (и в Basic в частности также) существует условный оператор. Код целиком можно записать в следующем виде

Input Day
If Day<31 then
               Day=Day+1
             Else
               Day=1
EndIf
Print Day
Stop

Наберите эту программку в окне редактирования SmallBASIC и попробуйте с ней поработать. Убедитесь, что она в ответ на введенное вами число от 1 до 31 будет печатать следующее число месяца от 1 до 31. Условный оператор можно использовать в полной и сокращенной форме. Полная форма в общем виде выглядит примерно ("примерно" потому, что я, по возможности, буду придерживаться "среднего" синтаксиса многочисленных клонов Бейсика) следующим образом

If логическое выражение then
                       Инструкция 1
                       Инструкция 2
                                …
                       Инструкция n
               Else
                       Инструкция 1
                       Инструкция 2
                                …
                       Инструкция m
EndIf

Таким образом, в нашей программке мы использовали именно полную форму условного оператора. Сокращенная форма записывается в одной строке и выглядит примерно следующим образом

If логическое выражение Then Инструкция

В этом случае Инструкция выполняется лишь, когда значение логического выражения = "Истина".
В приведенном выше программном коде имеется одна "фраза", которая не может не вызывать протест у нормального человека, а именно Day=Day+1. Никогда x не может быть равным x+1. Дело в том, что в программировании (на Бейсике и некоторых других языках) знак "=" обозначает не привычный нам знак равенства, а является исполняемой инструкцией, предписывающей присвоить переменной, стоящей слева, значение выражения справа. Таким образом, запись Day=Day+1 на Бейсике означает: - "Присвоить переменной Day значение, равное ее текущему значению, увеличенному на единицу". Во избежание коллизий в некоторых других языках программирования оператор присваивания обозначают иначе, например "<" или ":=".
Ну вот, на сегодня хватит. Теперь вы знаете достаточно для того, чтобы в качестве домашнего задания попробовать присоединить к нашему 31-дневному колесику еще одно 12-ти месячное. То есть, попробуйте написать программу, которая бы в ответ на два введенных числа (число от 1 до 31 и месяц от 1 до 12) печатала бы завтрашнюю дату. Программа должна корректно обрабатывать ситуацию, когда введено 31 12, и в ответ печатать 1 1. Ну и разумеется после 31 3 должно наступать 1 4 и т. д. Пока предположим, что в месяце всегда 31 день, а про год временно забудем.

Колесников А.
andr61@mail.ru

Чуть-чуть теории и оператор "ЕСЛИ"

ЕСЛИ бы я не натер руку металлическим браслетом, ТО до сих пор, наверное, носил на руке кварцевые часы фирмы "Луч". Кроме циферблата со стрелками на этих часах имеется подобие календаря, который представляет собой окошко и колесико. Он работает по очень упрощенной схеме - 31-дневному циклу. Попробуем объяснить этот простейший алгоритм в обозначениях и терминах, принятых в информатике, а также смоделировать его на электронно-вычислительной машине. Графически алгоритмы принято изображать в виде блок-схем. Для построения блок-схем существует стандартная система обозначений.
Первым пунктом любого алгоритма всегда является начало, которое изображается на блок-схеме соответствующим блоком. С этой точки начинается процесс выполнения алгоритма.
Исходными данными для нашего алгоритма календаря-колесика служит текущее число. Для того, чтобы электронно-вычислительная машина могла что-то дальше делать с исходными данными их необходимо ввести в память. Поэтому первым пунктом после блока "Начало" будет блок ввода текущего числа.
Далее необходимо проверить, - не является ли текущее число последним 31-ым числом месяца, а затем принять решение о способе вычисления даты следующего дня. Такая логическая операция обозначается условным блоком, который изображается в виде ромба. Внутри ромба формулируется и записывается проверяемое условие. В отличие от других операций, у которых имеется, как правило, один вход и один выход, логический блок имеет один вход и два выхода. Условный блок является графическим изображением языковой конструкции "если…то…иначе…". Два его выхода как раз и соответствуют двум возможным альтернативам "то" и "иначе". На условном блоке алгоритм ветвится и, в зависимости от того истинно или ложно условие, продолжает выполняться по одному из двух возможных путей.
Далее если текущее число меньше 31, то число следующего дня определяется путем прибавления единицы к текущему числу. Вычисления осуществляются в блоках обработки, которые обозначаются на блок-схемах в виде прямоугольников. Если текущее число равно 31, то завтра будет первое число.
Всякий алгоритм только тогда интересен, когда он приводит к какому-то результату. В данном случае результатом является число завтрашнего дня. Для того, чтобы результат стал известен кому-то еще, кроме самой вычислительной машины, его необходимо распечатать на принтере или вывести на экран. Мы обозначим эту операцию соответствующим блоком вывода на печать.
На этом работу алгоритма можно завершить соответствующим завершающим блоком.
Hosted by uCoz