На этом уроке мы с вами изучим оператор присваивания, вспомним, как происходит ввод и вывод данных, узнаем, что такое линейная программа.
Команда присваивания служит для задания или изменения значений переменной.
То есть присваивание – это действие, в результате которого переменная величина получает определённое значение. В программе Pascal существует 3 способа присваивания значения переменной. Давайте рассмотрим их. Первый, при помощи самого оператора присваивания. Этот оператор записывается следующим образом: <имя переменной> := <выражение>.
Сначала идёт имя переменной, затем сам знак присваивания – двоеточие равно –, после чего записываем выражение. Знак присваивания читается как «присвоить значение». Давайте рассмотрим примеры:
· a:=4;
· b:=25;
· c:=sqr(a) – sqrt(b);
· d:=(a<b) and (b<>c);
В первом и втором примерах переменным a и b присваиваются значения, равные 4 и 25 соответственно. Они будут целого типа.
В третьем – переменной c присваивается значение выражения. То есть сначала вычисляется значение выражения, а затем оно присваивается переменной c. В этом примере переменная c будет вещественного типа. Здесь приведён арифметический оператор присваивания.
В четвёртом примере приведён пример логического оператора. Переменная d будет равна значению True. Она будет логического типа boolean.
Типы переменной и выражения должны быть одинаковыми. Но здесь есть одно исключение: переменной вещественного типа можно присваивать выражение целого типа. В этом случае значение целочисленного выражения будет преобразовано к формату с плавающей запятой и присвоится вещественной переменной. А вот при присвоении целочисленной переменной значение выражения вещественного типа следует использовать функцию round. Но не стоит забывать, что при использовании этой функции вещественное число будет округлять до ближайшего целого. Поэтому при дальнейшем вычислении могут быть погрешности.
Также существуют ещё 2 способа присваивания: при помощи оператора ввода данных и передача значения через параметры подпрограмм.
Сейчас мы с вами рассмотрим, как происходит присваивание значения переменной при помощи оператора ввода. Перейдём к рассмотрению ввода и вывода данных. Для ввода/вывода данных используются стандартные процедуры Read и Write. Давайте разберёмся более подробно.
Итак, ввод данных – это передача данных с внешнего устройства компьютера в оперативную память. Вывод данных – это передача данных из оперативной памяти на внешнее устройство. Наглядно мы может это увидеть при помощи приведённой схемы.
Как говорилось ранее для ввода данных используется операция Read, которая при переводе с английского обозначает «читать». То есть при помощи этой операции происходит чтение данных с внешнего устройства. Для вывода информации используется операция Write, которая обозначает «писать», то есть запись данных на внешнее устройство.
Как мы с вами знаем, к внешним устройствам относятся устройства ввода и вывода информации, такие как клавиатура, монитор, принтер и так далее, и устройства внешней памяти, к которым относятся магнитные и оптические диски, флеш-память и другие.
Все данные на внешних устройствах организованы в файлы.
Файл, для внешних запоминающих устройств (ВЗУ) – это поименованная область памяти запоминающего устройства. С файлами можно производить операции записи и считывания при помощи уже известных вам операций. На одном внешнем запоминающем устройстве может храниться большое количество файлов, ограничение которых связано с объёмом памяти самого устройства. Правила именования файлов на запоминающий устройствах определяются операционной системой. Если же файл создаёт пользователь, то, соответственно, он же и задаёт имя файла.
Устройства ввода с клавиатуры и вывода на экран монитора являются однофайловыми устройствами. Операция ввода означает перепись данных с внешнего устройства (из входного файла Input) в основную память ЭВМ.
В свою очередь операция вывода – это пересылка данных из основной памяти на внешнее устройство (в выходной файл Output).
Для ввода данных с клавиатуры необходимо обратиться к стандартной процедуре Read. Её нужно записывать в следующем формате:
Read (<список ввода>);
Сначала записывается служебное слово Read, а далее в скобках идёт список ввода. То есть перечисляются имена переменных, которые нужно ввести.
При запуске программы будет происходить чтение из системного файла Input, который всегда доступен для любой программы. То есть данные будут браться из этого файла и присваиваться соответствующим переменным. Элементами списка ввода могут быть переменные символьного типа, числовых типов и строковые переменные.
Давайте разберёмся на примере: написать программу, при помощи которой нужно ввести с клавиатуры 3 целых числа.
Начинаем программу со слова program и имени программы, например, pr1.
Далее после служебного слова var объявим три переменных, например, a, b, c, которые будут целого типа – integer. Затем начинаем нашу программу при помощи служебного слова begin. После него запишем команду ввода – Read, а в скобках через запятую запишем все наши переменные. Завершаем программу словом end с точкой.
При выполнении такой программы, когда компьютер доходит до слова Read, происходит прерывание исполнения, после чего пользователь должен ввести необходимые данные, соответствующие типам переменных, отделяя друг от друга пробелами или нажимаю клавишу «Enter». Все вводимые переменные мы можем видеть на экране. Ввод заканчивается нажатием клавиши «Enter» после последнего элемента. Значения следует вводить в строгом соответствии с синтаксисом языка Pascal. То есть, если бы нам нужно было ввести переменные вещественного типа, то целую часть от дробной нужно разделять точкой, в обратном случае программа прервётся и выдаст ошибку.
Если в программе есть несколько подряд идущих операторов Read, то данные для них можно вводить последовательно, при этом отделяя пробелом. На экране они также будут отображаться. После ввода всех данных нужно нажать клавишу «Enter».
И снова давайте разберёмся на примере и посмотрим, как это работает.
Написать программу для ввода с клавиатуры двух вещественных и двух целых чисел.
Начало будет такое же, как и в предыдущем примере. Назовём программу pr2. Далее объявим все четыре переменных: a, b, c, d – 2 типа real, 2 – integer. После слова begin, запишем две операции Read. При помощи первой будем вводить данные a и b, при помощи второй – c и d. Запустим программу и введём все данные через пробел и нажимаем клавишу «Enter».
Есть ещё один варианта формы записи оператора ввода с клавиатуры:
Readln (<список ввода>);
Readln, далее в скобках список ввода.
Если у нас идут подряд несколько операторов Read, то все данные можно вводить через пробел. Если же у нас идёт несколько операторов Readln, то после ввода переменных первого оператора обязательно нужно нажать клавишу «Enter», а затем вводить значения для переменных второго оператора. То есть данные при выполнении следующего оператора ввода будут отражаться на экране с начала новой строки.
Давайте заменим во втором примере операцию Read на Readln и запустим программу.
При вводе данных вводим значения двух первых переменных через пробел, затем обязательно нажимаем клавишу «Enter» и снова вводим значения оставшихся переменных через пробел. Снова нажимаем «Enter».
А сейчас давайте рассмотрим операцию вывода на экран. Данная операция происходит при обращении к стандартной процедуре Write.
Write (<список вывода>);
Записывается процедура Write, а затем список вывода. Элементами списка могут быть выражения различных типов, в том числе и константы или переменные.
Давайте напишем программу для вывода на экран произведения переменных a и b, которые равны 3 и 10 соответственно.
Снова пишем program и имя программы, например, pr3. Затем объявим наши переменных целочисленного типа. Далее, после служебного слова begin, присвоим переменной a значение 3, а переменной b – 10. При выводе на экран мы должны получить следующую фразу: «Произведение трёх и десяти равно тридцати». Для того, чтобы вывести на экран слова, необходимо заключать их в одинарные кавычки, то есть мы должны записать так: Write, затем открываем скобку и одинарную кавычку, далее слово «Произведение» и пробел, закрываем одинарную кавычку, ставим запятую, пишем переменную a. Снова ставим запятую, открываем одинарную кавычку, ставим знак «+», закрываем кавычку, ставим запятую, пишем переменную b, снова ставим запятую, открывает одинарную кавычку, пишем знак «=», закрываем кавычку, ставим запятую и пишем a*b, которое программа посчитает автоматически. Закрываем скобку.
Мы с вами оформили вывод строки с данными на экран, а также пояснили в этой строке, какие именно данные выводятся на экран.
При выводе на экран нескольких значений в строку, они не разделяются между собой пробелами. Для этого нужно в одинарных кавычках ставить пробел. То есть сделать так, как мы сделали после слова «Произведение». Нельзя этого забывать.
Есть ещё один вариант процедуры вывода на экран:
Writeln (<список вывода>);
Writeln и в скобках список вывода.
Writeln переводится с английского, как «писать строку». Эта процедура отличается от Write тем, что после вывода последнего элемента списка, программа автоматически перейдёт на следующую строку. Если же мы запишем процедуру Writeln без списка вывода, то мы вызовем переход на следующую строку.
В список вывода можно добавлять указатели форматов вывода (форматы). Формат определяет представление выводимого значения на экране. Он отделяется от соответствующего ему элемента двоеточием.
Например, если мы напишем следующее:
Writeln (i:5);
То на экран выведется значение переменной i, используя для этого 5 позиций. Так, если i=15, то на экран выведутся 3 пустых позиции, а затем число, которое состоит из двух цифр.
Итого получим 5 позиций.
Если же значение переменной больше указанного количества позиций, то формат «i:5» не будет использован, то есть программа его просто проигнорирует и выведет всё число.
Если же указатель формата отсутствует, то машина выводит на экран значение по определённому правилу, которое предусмотрено по умолчанию.
А сейчас переходим к линейным программам. Линейная программа – это программа, реализующая следование. В свою очередь следование – это простейшая алгоритмическая структура. Таким образом можно сказать, что линейная программа – это программа, в которой все операции выполняются последовательно друг за другом. В такой программе могут присутствовать только операторы присваивания, ввода, вывода и обращения к процедурам. Необходимо помнить, что операторы Read и Write являются обращениями к стандартным процедурам языка Pascal.
Также при составлении программы необходимо учитывать, что одним из обязательных условий хорошего стиля программирования является организация диалога между компьютером и пользователем. Такое диалоговое взаимодействие называется интерактивным диалогом. Это говорит о том, что при составлении программы необходимо использовать операции вывода для пояснения, например, какое число выводится на экран, или что требуется от пользователя при вводе тех или иных данных.
А теперь обратимся к примерам. Необходимо составить программу вычисления периметра прямоугольника со сторонами a и b.
В разделе описания переменных опишем две стороны a и b, а также периметр P вещественного типа.
Далее в самой программе выведем на экран при помощи процедуры Write поясняющую строку и попросим пользователя ввести число, которому равна ширина прямоугольника. Затем при помощи процедуры Read присвоим переменной a это значение. Далее снова выведем поясняющую строку, в которой попросим ввести длину прямоугольника. Присвоим переменной b значение длины. Теперь присвоим переменной P формулу для вычисления периметра прямоугольника. Используя процедуру Write, выведем на экран значение периметра прямоугольника, пояснив при этом, что мы выводим.
Давайте запустим программу и проверим, как она работает. Введём ширину равную 3. А длину равную 5.
Мы видим, что между программой и пользователем организован диалог, и проверять программы так намного проще, чем, если бы программа состояла из 5 переменных, которые нужно ввести, и 10 значений, которые необходимо вывести. То есть если не уточнять, что мы вводим или выводим, работа с программой значительно усложнится.
Рассмотри ещё один пример.
Составить программу, которая получает «перевёртыш» трёхзначного целого числа a. Значение a вводится с клавиатуры.
Итак, в блоке описание у нас будут записаны 5 переменных: a, a1, a2, a3, b – целого типа. a – изначальное число, a1, a2, a3 – первая, вторая и третья цифры числа соответственно. b – число-перевёртыш.
Итак, после begin нам необходимо ввести число a. В начале выведем поясняющую строку:
Writeln (‘Введите трёхзначное число.’);
Далее считываем его процедурой Read и присваиваем значение переменной a. Для нахождения первой цифры числа запишем следующее:
a1:=a div 100;
Как мы с вами знаем, div – это функция целочисленного деления. То есть если мы разделим трёхзначное число на 100, мы получим в результате первую цифру числа.
Далее для нахождения второй цифры мы присвоим переменной a2 значение следующего выражения:
a2:= a div 10 – a1*10;
a div 10 – получим двузначное число из первой и второй цифр;
a1*10 – умножаем первую цифру на десять и отнимаем от получившегося двузначного числа.
Для нахождения третьей цифры используем функцию mod – она находит остаток от целочисленного деления.
a3:=a mod 10;
Мы нашли все 3 цифры числа. Осталось составить новое. То есть:
b:=a3*100+a2*10+a1;
Выведем результат на экран:
Write (‘Число-перевёртыш равно', b);
Завершим программу.
А теперь запустим её и проверим. Введём, например, число 123.
Ответ получили 321. Программа работает верно.
Чтобы лучше понять, как работает программа, рассмотрим более подробно её работу с числом 123. Итак, команда Read(a) – присваивает переменной a число 123.
Далее a1:=a div 100. При делении 123 на 100 мы получим в результате 1. То есть a1=1.
Следующая команда находит второе число, то есть 123 div 10 – a1*10. Получим 12 – 10 = 2.
a3:= a mod 10. В результате получим 3.
b:=3*100 + 2*10 + 1. Получим 321.
И последняя команда выводит на экран следующее: «Число-перевёртыш равно 321.».
Пришла пора подвести итоги урока. Сегодня мы с вами вспомнили несколько способов присваивания переменной значения. Узнали, как работают и записываются процедуры ввода и вывода.
Также научились правильно и корректно составлять программы на примере нескольких задач.