Смекни!
smekni.com

«Азы» программирования и обучающие программы (стр. 2 из 5)

Итак, запомним, что оператор PRINT - означает - печатай. Оператор GOTO - означает - иди на (такую-то строку). По-английски мы бы написали GO ТО, но это BASIC, и поэтому запомните, пожалуйста, правильное написание на BASIС.

Оператор RUN запускает программу, то есть заставляет ее реализовываться.

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

1. PRINT «Как Вас зовут?»

2. GOTO

Итак, наша первая программа написана. Отметим также, что, если мы хотим, чтобы команда PRINT была выполнена, текст, следующий после этого оператора, нужно заключить в кавычки (это элемент синтаксиса BASIС). И еще одно - при наборе программы в конце каждой строки нажимайте клавишу ENTER.. Она, во-первых, обеспечит Вам запоминание компьютером этого фрагмента программы, а, во-вторых, переведет строку.

Теперь запустим программу. Команда запуска, как мы помним –RUN. Набираем RUN... И получаем бесконечную череду вопросов «Как Вас зовут?»

Давайте прервем череду, нажав на клавишу ЕSСАРE (она слева вверху клавиатуры), и разберемся как работает наша программа. В первой строке программы мы указали компьютеру, что хотим, чтобы он вывел на дисплей (то есть экран монитора компьютера) вопрос «как Вас зовут?». Но не сразу, а после запуска программы - это тоже необходимо усвоить. Во второй строке мы дали команду компьютеру перейти снова к первой строчке. И, таким образом, получился замкнутый круг. В программировании он называется «цикл», и в дальнейшем мы будем его использовать.

Если бы мы написали только первую строчку и сразу запустили прогpaмму (можете попробовать это сделать), то на дисплее появился бы только один вопрос «Как Вас зовут?», и программа бы завершилась. А оператор gotoпревращает процесс выполнения программы в бесконечный (пока включен компьютер и работает эта программа).

Вы скажете, что в приведенной программе нет никакого смысла. Что же, Вы, вероятно, правы. Давайте подумаем, как придать смысл нашей программе. Вы наверняка читали Платона. И знаете, что основной формой его произведений был диалог. И это не случайно. Издавна известно: лучшим способом преподавания учебного материала является диалог Учителя и Ученика.

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

В BASIC есть конструкция, которую можно обнаружить и в английском языке. Речь идет о конструкции ЕСЛИ... ТО... ИНАЧЕ. Или, по-английски, IF... THEN... ELSE. Эта конструкция называется «условный переход». Она может реализовываться либо в полном виде, либо в усеченном: IF... THEN... (т.е. ЕСЛИ...ТО...). Пока запомним эту конструкцию и перейдем к способу представления информации, называемому «переменными».

Для того, чтобы обработать информацию, нужна не только программа и компьютер, нужна и собственно информация. В компьютер информация обычно вводится в виде так называемых «переменных». Переменные и составляют исходные данные, которые обрабатывает машина. Переменные бывают различных типов. Есть логические переменные - когда в компьютер вводится информация типа ДА или НЕТ. (У или N); есть числовые переменные, то есть переменные, выраженные каким-либо числом; есть текстовые переменные, выраженные буквой или текстом.

Чтобы различать переменные друг от друга, им присваивают имена. Имя переменной должно начинаться с буквы (это обязательно). Если переменных много, то, чтобы не запутаться, им дают такие имена, чтобы сразу было ясно назначение переменной в программе. Давайте создадим небольшую программу с использованием переменных. Но сначала запомним, что команда для ввода переменных обозначается так – INPUT.

Этот оператор предназначен для того, чтобы переменная вводилась студентом при помощи клавиатуры. Например, если мы составим такую программу, где будем спрашивать студента, в каком году родился Платон. Итак создадим переменную year ,но сначала зададим вопрос :

PRINT «В каком году родился Платон?»

INPUT year

PRINT «Вотэтода!»

END.

Попробуйте набрать ату программу и посмотрите, как она работает. Надеюсь, Вы не забыли, что запускается программа командой RUN.

После запуска программы на дисплее появился вопрос: «В каком году родился Платон?» и чуть ниже вопросительный знак. Вопросительный знак показывает, что машина ожидает от Вас ввода с клавиатуры какого-нибудь числа. После ввода в компьютер числа (например, 428 - Платон родился 427(428 г. до н.э.; после ввода числа не забудьте нажать ENTER) компьютер выведет на дисплей фразу «Вот это да!». И работа программы закончится. Как Вы думаете, почему? Правильно, потому, что после выполнения предписания на третьей строке, машина обращается к четвертой, а там стоит оператор END, показывающий, что на этом этапе программа закончена. Запомните на всякий случай команду ENDи, если захотите, снова запустите программу командой RUN.

А теперь вопрос. Можно ли сделать эту программу бесконечной? Чтобы она все время спрашивала о годе рождения Платона и, получив ответ, вновь им интересовалась? Подумайте, мы об этом уже говорили.

Р.S. В этой программе, как Вы можете убедиться, мы не учли некоторых обстоятельств. Ну, например, как она себя поведет, если Вы по ошибке или из любопытства введете буквенные символы или нажмете на какую-нибудь другую клавишу. Попробуйте и посмотрите на реакцию компьютера. А в дальнейшем, когда Вы лучше освоите программирование, подумайте, как Вам описать в программе все эти случаи. Уверен, Вы быстро убедитесь, что это совсем не трудно!

§3. Может ли компьютер оценить высказывание?

Теперь давайте усложним нашу программу, чтобы она могла анализировать наше высказывание. Начнем, как обычно, с самого простого. Возьмем нашу последнюю программу и слегка ее дополним. Только вот что. Давайте изменим ее нумерацию на порядок. То есть вместо того, чтобы нумеровать строки 1, 2, 3, 4 будем нумеровать 10, 20, 30, 40. Что это нам даст? А то, что структура программы станет более пластичной. Например, если раньше между первым и вторым оператором мы ничего не могли вставить, так как нумерация BASIC (в отличие, скажем, от FOCAL) не признает дробных чисел, то при новой системе мы сможем легко вставить между 10-й и 20-ой строкой целых девять строчек. То есть программа становится как бы «дышащей».

Итак, начинаем дополнять нашу программу. Давайте сделаем так, чтобы она давала различную реакцию на разные цифры, вводимые Вами в компьютер. В принципе мы можем сделать, чтобы она реагировала на каждое различие, но для простоты давайте договоримся так. Если введенное число будет больше 500, то ответом будет «Вот это да!», если число, обозначающее год рождения Платона, будет в пределах от 400-500 включительно, то компьютер отреагирует такой репликой: «Как хорошо Вы знаете историю философии!». При вводе числа в пределах от 300 до 400 ответ будет выглядеть так: «Ну, это не совсем точно», от 200-300 - «Вы, вероятно, оговорились!», наконец, все числа меньше 200 вызовут у компьютера реакцию: «Этого не может быть!». Ну а теперь, если не возражаете, приступим к построению программы.

Не забывайте, что нумерация строк v нас теперь будет через десяток, и что мы теперь будем использовать операторы IF... THEN... ELSE. Давайте посмотрим, что у нас получилось:

10 PRINT «В каком году родился Платон?»

20 INPUT year

30 IF year >500 THEN PRINT «Вотэтода!»

40 IFyear>400 & year < 500 THENPRINT «Как хорошо Вы знаете историю философии!».

50 IFyear>300 & year < 400 THENPRINT «Ну, это не совсем точно»

60 IFyear>200 & year < 300 THENPRINT «Вы, вероятно, оговорились!»

70 IFyear < 200 & yearTHENPRINT «Этого не может быть!»

80 END.

Вы, наверное, сразу обратили внимание, что мы использовали еще одну команду. Это оператор AND , то есть «и». Значение его очевидно. Скажем, проанализируем 40-ю строку программы. Ее можно описать так: если введенное число, обозначающее год рождения Платона, равно или больше 400 и, в то же время, меньше 500, то печатай: «Как хорошо Вы знаете историю философии!»

Если же введенное число не соответствует условию, заданному в 40-й строке, то компьютер начинает проверять на соответствие следующую, то есть 50-ю строку и т.д.

Ну а теперь давайте запустим программу (команда запуска RUN ). Сначала появился вопрос: «В каком году родился Платон?» И на следующей строке появился вопросительный знак, показывающий, что компьютер ждет от нас ввода ответа с клавиатуры. Допустим, мы ввели число «428». Наша программа начинает его анализировать. Проверяет, соответствует ли введенное число условию, заданному в 30-й строке, то есть больше ли оно 500. Если бы условие было выполнено, то на дисплее появилась бы уже знакомая нам строка «Вот это да!». Но 428 меньше 500, поэтому компьютер переходит к 40-й строке программы.

В 40-й строке осуществляется проверка - находится ли наше число в пределах от 400 до 500. Так как наше число - 428 - находится именно в этих пределах, на дисплее появляется реплика - «Как хорошо Вы знаете историю философии!» Далее компьютер последовательно проверяет: не соответствует ли наше число другим условиям, заданным в строках 50,60,70. Но такого соответствия нет, и поэтому машина доходит до 80-й строчки программы и согласно ее предписанию ENDпрекращает работу. Если мы снова захотим запустить эту программу, то снова должны дать команду RUN.

А теперь вопрос, как нам зациклить программу? То есть сделать так, чтобы отреагировав на ответ, машина вновь (автоматически) задала нам вопрос, напомним, что лучше всего это сделать, используя оператор (команду) goto.

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