§ 1 Программа и операторы
Любой человеческий язык – это средство общения между людьми. Язык программирования – это средство общения между человеком и компьютером. Язык программирования служит для того, чтобы сообщить компьютеру алгоритм решения задачи.
Определение. Оператор – предложение языка программирования.
§ 2 Переменные и идентификаторы
Определение. Переменная – область памяти, которой присвоено имя.
Понятие переменной в программировании отличается от понятия переменной в математике. В математике переменная – это величина, которая может принимать различные значения. В программировании переменная – это целая конструкция, которую можно изобразить следующим образом:
имя А 6 значение
П Е Р Е М Е Н Н А Я
Переменная состоит из двух частей – имени и значения. Значение переменной – это та величина, с которой работает машина. Имя переменной – это адрес участка памяти, где записана эта величина. Память машины можно представить в виде книги, состоящей из страниц. Только страницы этой книги не пронумерованы числами, а размечены именами. На каждой странице стоит свое имя, и на каждой странице записана только одна величина.
Имена переменных в программировании называют идентификаторами. В математике не существует строгих правил для записи имен переменных. По традиции переменную обозначают одной или двумя буквами или буквой с цифрой. В программировании, напротив, существуют строгие правила, которые надо соблюдать при написании имен переменных ( наверное, поэтому программисты называют имена переменных так почтительно – идентификаторы).
Первое правило заключается в том, что для написания идентификаторов в QBASIC можно использовать только латинские буквы, цифры и точки. Никаких других значков, которые можно получить на экране, при написании идентификаторов использовать нельзя. При этом большие (прописные) и маленькие ( строчные ) буквы не различаются. Каждый идентификатор содержит обязательно хотя бы одну букву. Цифры и точки можно писать в идентификаторах, а можно не писать.
Идентификаторами могут служить следующие последовательности символов: AA, C, A10, TANYA, SCHOOL77, PETYA.IVANOV, A2B3. Поскольку прописные и строчные буквы не различаются, то последний идентификатор можно записать как a2b3 или даже A2b3. Нельзя писать A!23 или ABC?, поскольку знаки "!" и "?" не являются ни буквами, ни цифрами.
При написании имён переменных иногда используют символы !, #, $, %, &, которые всегда пишутся крайними справа. Эти символы называются суффиксами и используются для обозначения типа переменной. Например, запись A%=1 означает, что переменная с именем A имеет тип "целый". С типами переменных мы познакомимся позднее.
Второе правило: на первом месте должна стоять обязательно буква. Поэтому надпись 1A не является идентификатором ( на первом месте стоит не буква ).
Третье правило говорит, что при написании идентификаторов можно использовать до 40 символов. Иногда в книгах пишут: не более 40 символов (как будто кто-то захочет написать идентификатор, состоящий из 100 символов. Всякий нормальный человек написал бы: " Можно использовать аж 40 символов !!!" ).
Возможность использовать такое большое количество символов в идентификаторе позволяет давать переменным "осмысленные" имена. Например, если мы хотим некоторой переменной присвоить значение скорости 60 км/ч, то можно назвать эту переменную skorost и написать оператор skorost=60. Тогда при чтении программы будет ясно, что данная переменная имеет смысл скорости.
Все три правила можно объединить в одну фразу и дать следующее определение.
Определение. Идентификатор – это последовательность букв, цифр и точек, начинающаяся с буквы и содержащая до 40 символов.
§ 3. Арифметическое выражение
Как и во всяком другом языке, предложения в QBASIC строятся по определенным правилам. Совокупность этих правил называется синтаксисом языка. Правила синтаксиса языка программирования гораздо строже правил любого из обычных человеческих языков. Во-первых, правила синтаксиса языка программирования не знают исключений. Во-вторых, языки программирования не терпят синтаксических ошибок. Если при общении между людьми синтаксические ошибки зачастую прощаются, то при общении человека с ЭВМ синтаксические ошибки недопустимы. Программу, написанную с синтаксическими ошибками, машина просто не поймет.
Мы уже познакомились с правилами написания имен переменных. Эти правила – тоже часть синтаксиса языка QBASIC. Теперь мы познакомимся с правилами написания формул в QBASIC.
Определение. Формула, написанная по правилам синтаксиса языка программирования, называется выражением.
В программировании различают арифметические, логические и символьные выражения. Арифметические выражения получаются из обычных формул школьной математики. При вычислении по этим формулам над числами производятся арифметические операции. Поэтому такая "числовая" формула, записанная по правилам языка QBASIC, называется арифметическим выражением.
Логические и символьные выражения оперируют с логическими и символьными величинами. С ними мы познакомимся позднее, а пока будем иметь дело только с числовыми величинами и с арифметическими выражениями.
Правила написания арифметических выражений следующие.
1. При записи десятичных дробей используется не десятичная запятая, а десятичная точка.
2. Все арифметические операции записываются в строчку. Если в числителе или знаменателе дроби стоит многочлен, его следует заключить в скобки.
3. Знаки арифметических операций опускать нельзя.
4. Арифметические операции выполняются слева направо в порядке приоритета. Приоритет арифметических операций такой же, как и в арифметике:
сначала выполняется возведение в степень, затем умножение и деление,
затем сложение и вычитание. Для изменения естественного приоритета
операций применяются скобки ( так же, как и в арифметике ).
Для обозначения арифметических операций используются следующие знаки:
^ – возведение в степень,
* – умножение,
/ – деление,
+ – сложение,
– – вычитание.
Если в дробном числе нет целой части, то ноль перед десятичной точкой не пишется. Если мы напишем ноль перед десятичной точкой, то машина сама отбросит его. Машина сама отбросит также нули, стоящие в дробной части в конце числа. Если в программе написать x = 0.500, то при вводе этой строчки на экране появится x = .5.
При записи арифметических выражений необходимо строго следовать правилам синтаксиса, ничего не опускать и не допускать никаких отклонений. Если при записи формул можно использовать разные знаки деления: косая черта "/", двоеточие ":", горизонтальная черта, то при записи арифметических выражений используется только один знак – косая черта.
Если знак умножения в формулах обычно опускается, то в арифметических выражениях знак умножения опускать нельзя. Запись AB машина воспримет не как арифметическую операцию умножения двух переменных, а как идентификатор переменной.
Рассмотрим несколько примеров. Дробь нужно записывать как x/(a+b). Если записать x/a+b, то сначала будет выполнено деление x/a, а затем к полученному результату будет прибавлено b. В результате получится + b.
Дробь можно записать как x/(a*b) или x/a/b.
§ 4. Оператор присваивания
Определение. Процесс занесения значения в переменную называется присваиванием.
формат оператора присваивания изображают следующим образом :
идентификатор = выражение.
Выполняется оператор присваивания "справа - налево": сначала выполняются действия, стоящие справа от знака равенства, затем результат заносится в переменную, имя которой стоит слева от знака равенства. Рассмотрим, что происходит в памяти машины при выполнении оператора
A = B + C.
Сначала из памяти извлекаются значения переменных B и С и помещаются в процессор:
B 3 3
C 2 2
A
ПАМЯТЬ ПРОЦЕССОР
Затем эти значения складываются
B 3
C 2
A 5
ПАМЯТЬ ПРОЦЕССОР
и результат записывается в переменную с именем A:
B 3
C 2 5
A 5
ПАМЯТЬ ПРОЦЕССОР
При этом один и тот же идентификатор может стоять и в левой, и в правой части оператора присваивания, например:
A = A + 1.
В математике такая формула просто не имеет смысла. Однако это не формула, это оператор присваивания. Выполняя этот оператор, машина извлечет из памяти число, записанное в переменной А, увеличит его на единицу и запишет в ту же переменную. Перевести на русский язык этот оператор можно так: "Увеличить значение переменной А на 1".
Как видим, оператор присваивания – это не математическое равенство. Оператор присваивания заставляет машину совершать множество операций: извлекать из памяти значения переменных, имена которых стоят справа от знака равенства, выполнять арифметические операции и записывать результат в переменную, имя которой стоит слева от знака равенства. Поэтому значок "=" читается не "равно", а "присваивается". Например, оператор A = 2 + 3 переводится на русский язык как " переменной A присваивается значение, равное 2+3", а не как "А равно 2+3".
§ 5. Ввод данных с клавиатуры
Числа, с которыми работает машина, в программировании называются данными. Те числа, которые вводятся в память в начале выполнения программы, носят название входных (исходных ) данных. Те числа, которые выводятся на экран как результат работы программы, называются выходными данными (результатами). Числа, которые циркулируют внутри машины в процессе работы – это промежуточные данные.
Занести в память компьютера входные данные можно при помощи оператора присваивания. Но оператор присваивания обычно используется для работы с промежуточными данными. Для ввода исходных данных применяется оператор ввода данных с клавиатуры или оператор чтения данных.
Оператор ввода данных с клавиатуры
INPUT A.
Бейсиковское слово INPUT происходит от английского выражения to put in – вставлять, входить. Выражение INPUT A можно перевести на русский язык как "Ввести в память значение переменной A". Когда машина выполняет этот оператор, на экране появляется "?", и выполнение программы прерывается: машина ждет наших действий. Теперь мы должны набрать на клавиатуре нужное число и нажать клавишу Enter. Например, если мы наберем на клавиатуре число 16 и нажмем Enter, то в переменную А будет записано число 16. Результат будет такой же, как при выполнении оператора присваивания А =16.
Если нужно присвоить значения нескольким переменным ( например, трем ), то имена всех переменных можно указать в одном операторе ввода:
INPUT A,B,C.
В этом случае после появления на экране "?" необходимо набрать три числа через запятую, например:
6, 15, 18
и нажать клавишу Enter. Тогда переменной A будет присвоено значение 6, переменной B – 15, переменной C – 18.
Когда работает оператор INPUT, на экране появляется один вопросительный знак независимо от того, сколько идентификаторов написано в нём. При работе программы будет неясно, сколько же чисел нужно вводить. Поэтому в операторе INPUT предусмотрена возможность вывода подсказки на экран. Подсказка пишется в кавычках перед именами вводимых переменных. В нашем примере можно написать:
INPUT " Введите три числа"; A,B,C.
Тогда при работе программы на экране появится надпись
Введите три числа ?
Знак вопроса по-прежнему означает, что машина ждет ввода чисел с клавиатуры.
Такой режим работы называется режимом диалога между машиной и человеком. Машина сообщает нам, что нужно сделать в данный момент, а мы в ответ производим необходимые действия. Режим диалога называют также интерактивным режимом.
В заключение напишем формат оператора ввода данных с клавиатуры :
INPUT " подсказка "; список идентификаторов.
§ 6. Вывод данных на экран
В результате работы программы мы получаем число или несколько чисел, которые хранятся в соответствующих переменных. Для того, чтобы увидеть результаты работы программы, необходимо вывести значения этих переменных на экран. Вывод данных на экран производится оператором вывода. Если мы хотим вывести на экран значение переменной A, то нужно написать:
PRINT A.
Тогда на экране появится значение переменной A.
В операторе PRINT можно написать несколько идентификаторов. При этом на экране появятся значения соответствующих переменных, записанные в строчку. Разделять идентификаторы можно запятой, можно точкой с запятой. Разница в том, что при разделении идентификаторов запятыми числа на экране будут отстоять дальше друг от друга.
Если мы напишем в операторе вывода только идентификаторы, то на экране появятся только числа. Не всегда бывает ясно, что эти числа означают. Для того, чтобы вывод был более ясен, в операторе PRINT предусмотрена возможность вывода поясняющих надписей. Надписи, как и в операторе INPUT, заключаются в кавычки. Если в переменной А записано значение 15 и мы напишем оператор
PRINT "A =";A
то на экране получим
A = 15.
Такой вывод более понятен, чем просто число 15.
Конечно, в кавычках можно писать не только имя выводимой переменной, но и любую поясняющую надпись. Например, если в переменной А записана скорость, то можно написать
PRINT " Скорость равна "; A.
В результате на экране получим:
Скорость равна 15.
Можно после идентификатора А указать размерность скорости:
PRINT " Скорость равна "; A; " км/ч ".
Тогда получится:
Скорость равна 15 км/ч.
Оператор вывода имеет еще одну возможность. Он может выводить на экран результаты арифметических операций. В оператор PRINT можно записать арифметическое выражение, результат будет выведен на экран. Например, в результате выполнения оператора PRINT 6*3 на экране появится число 18.
Следующая маленькая программка выводит на экран среднее арифметическое двух чисел, вводимых с клавиатуры:
CLS
INPUT " Введите два числа "; A,B
PRINT "Среднее арифметическое чисел"; А;B;"равно"; (A+B)/2.
Здесь в операторе PRINT присутствуют все три описанных нами типа выводимых величин: надписи, значения переменных, значение арифметического выражения. Весь этот набор объединяют одним названием: список вывода. Формат оператора вывода на экран можно записать следующим образом:
PRINT список вывода.
Оператор PRINT может и не содержать список вывода. Такой оператор просто перебрасывает курсор на новую строку. Его можно использовать для разделения выводимых надписей. Если мы напишем:
PRINT A; B
PRINT C,
то получим на экране вывод чисел в двух строках:
15 8
7.
Если же мы напишем
PRINT A; B
PRINT
PRINT C,
то между верхней и нижней строками появится пустая строка:
15 8
7.
Задание для самостоятельной работы:
1. Даны два числа. Вычислить их сумму, разность, произведение.
2. Вычислить среднее арифметическое трех чисел.
3. Дан куб со стороной a. Вычислить его объем и площадь поверхности.
4. В классе n учеников. По результатам контрольной работы получено a двоек, b троек, c четверок, остальные – пятерки. Вычислить процент оценок каждого типа.
5. Даны гипотенуза и катет прямоугольного треугольника. Вычислить периметр и площадь треугольника.
6. Дано количество суток. Посчитать число часов, минут и секунд в данном количестве суток. Использовать только одну переменную.