"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
Чтобы программа могла решать задачу, ей нужно получить исходные данные, обработать их и показать результат. Для этого в Паскале используют операторы ввода и вывода, а новое значение переменной задают оператором присваивания :=. Эти команды работают вместе: пользователь вводит значения, программа вычисляет выражение и сохраняет результат, а затем выводит его на экран. Понимание порядка действий помогает правильно составлять даже простые программы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оператор присваивания — команда, которая задаёт переменной новое значение; в Паскале его обозначают :=. Например, запись x := 7 помещает число 7 в переменную x. Такой оператор нужен, чтобы сохранять результаты вычислений и менять данные по ходу работы программы.
Оператор ввода — команда, с помощью которой программа получает данные и записывает их в указанные переменные. В Паскале для этого используют read и readln, например read(a, b). Ввод нужен, чтобы программа могла работать не только с заранее заданными числами, но и с данными, которые сообщает пользователь.
Оператор вывода — команда для показа на экране значений и сообщений. Команды write и writeln могут выводить как имена переменных, так и текст в кавычках; например, writeln('Ответ: ', x). Они нужны, чтобы пользователь видел результат работы программы и понимал, что именно она делает.
Переменная — это именованная область памяти, значение которой может изменяться во время выполнения программы. Имя помогает обращаться к сохранённым данным: например, в a можно хранить введённое число, а в s — вычисленную сумму. Переменные позволяют использовать одни и те же данные в разных командах, не записывая их заново.
При выполнении присваивания программа сначала вычисляет всё выражение справа от :=, а затем записывает полученный результат в переменную слева. Например, если a равно 4, команда b := a + 3 сначала даёт результат 7 и только потом помещает его в b. Такой порядок позволяет использовать в выражениях уже сохранённые данные и получать новые значения.
Левая и правая части присваивания выполняют разные роли, поэтому переставлять их нельзя. Слева указывают место, куда нужно записать результат, — переменную-получатель, а справа задают само значение или способ его вычисления. Если написать выражение слева, программе будет некуда помещать ответ; если имя переменной поставить справа, оно станет лишь частью вычисляемого выражения.
Оператор ввода связывает программу с пользователем: при выполнении read или readln программа ждёт, пока будут введены данные. Затем значения помещаются в перечисленные переменные в том же порядке, в каком они записаны в скобках. Например, после read(a, b) первое введённое число попадёт в a, второе — в b, поэтому порядок важен для дальнейших вычислений.
Операторы вывода показывают содержимое переменных или заданный текст, чтобы пользователь мог увидеть результат. Команда write выводит данные, не выполняя обязательный переход на следующую строку, поэтому следующий вывод может продолжиться рядом. Команда writeln после вывода переводит курсор на новую строку; это удобно, когда нужно расположить сообщение и ответ отдельно.
Простая программа обычно выполняет действия в порядке, который повторяет решение задачи: сначала получает исходные значения, затем вычисляет результат и после этого показывает его. Например, для суммы сначала вводят числа, присваиванием сохраняют их сумму в отдельной переменной, а затем выводят эту переменную. Если поменять порядок и вычислить сумму до ввода, программа будет использовать не те данные или значение, которое ещё не задано.
| Характеристика | Присваивание | Ввод | Вывод |
|---|---|---|---|
| Обозначение или команда | := | read, readln | write, writeln |
| Назначение | Записать новое значение в переменную | Получить данные и записать их в переменные | Показать значения или текстовые сообщения |
| Что указывают в скобках | Скобки не обязательны; справа записывают выражение | Имена переменных-получателей | Переменные, значения и текстовые сообщения |
| Как изменяются данные или состояние программы | Переменная получает вычисленное значение | Переменные получают введённые значения | Данные отображаются на экране |
| Переход на новую строку | Не относится к выводу | Сам по себе не задаёт формат экранного вывода | write — не обязателен; writeln — выполняется |
Сверяйтесь с таблицей, чтобы определить, какая команда нужна на каждом этапе: получить данные, сохранить результат или показать его. В графе о скобках для присваивания имеется в виду, что справа от := записывают выражение, а не список аргументов команды. Для оформления результата выбирайте write или writeln с учётом того, должна ли следующая информация начинаться с новой строки.
Задача 1. Записать оператор, который присваивает переменной x значение 7. Нужно указать переменную-получатель слева, а требуемое значение — справа. Важно не путать команду присваивания с математическим равенством.
Ответ: x := 7. Здесь := означает команду изменения значения, а не утверждение, что x уже равен 7 в математическом смысле. После выполнения команды в x хранится число 7.
Задача 2. Составить фрагмент программы, который вводит два числа a и b и выводит их сумму. Сначала нужно получить оба исходных значения, иначе вычислять будет нечего. Затем результат следует вычислить и показать пользователю.
Ответ:
read(a, b);
s := a + b;
writeln('Сумма: ', s);
Переменная s нужна, чтобы результат вычисления был явно сохранён перед выводом. Если поменять строки местами и сначала вычислить сумму, значения a и b ещё не будут введены. Такой фрагмент показывает общий порядок: ввод, присваивание результата, вывод.
Задача 3. Написать фрагмент программы для вычисления среднего арифметического трёх введённых чисел и вывода результата с пояснением. Среднее находят, складывая числа и деля сумму на их количество. Результат может быть нецелым, поэтому для переменных и среднего нужно предусмотреть вещественный тип.
Ответ:
read(a, b, c);
m := (a + b + c) / 3;
writeln('Среднее арифметическое: ', m);
Скобки показывают, что сначала нужно получить сумму трёх чисел, а уже затем разделить её на 3. В программе переменные a, b, c и m следует объявить с вещественным типом, чтобы результат вроде 2,5 не терял дробную часть. Текст сообщения заключён в кавычки, а значение m передаётся команде вывода отдельно.
Знак = часто ставят вместо :=, потому что в математике именно равенство связывает два значения. Но в Паскале это разные обозначения: команда присваивания записывается с :=, а = может использоваться для сравнения. Проверьте, что между переменной-получателем и выражением стоит именно :=.
Иногда выражение ставят слева от := или имя переменной — справа, перенося в запись привычный порядок математического равенства. Так команда теряет смысл: результат должен быть записан в конкретное место памяти, а это место задаёт переменная слева. Перед выполнением проверьте, можно ли однозначно назвать переменную, в которую попадёт результат.
Попытка вывести переменную до ввода или присваивания возникает, когда о её начальном значении забывают. Тогда нужные данные не были переданы программе, и результат вывода нельзя считать надёжным. Проследите команды сверху вниз и убедитесь, что до вывода каждой переменной ей присвоено значение или оно введено.
Путаница между write и writeln обычно приводит к тому, что следующий текст оказывается в той же строке. Причина в том, что write не выполняет обязательный переход после вывода, хотя его часто воспринимают как команду с автоматической новой строкой. Проверьте расположение сообщений: если следующее должно начинаться с новой строки, используйте writeln.
Для работы с вводом, присваиванием и выводом нужны понятия переменной, типа данных и арифметического выражения. Тип определяет, какие значения может хранить переменная, а выражение задаёт вычисление, результат которого можно присвоить. Знание этих основ помогает понимать, почему для среднего арифметического нужен тип, допускающий дробные значения.
Те же команды используются в программах с ветвлениями и циклами. Ветвления помогают выбирать действия по условию, а циклы — повторять их; в обоих случаях программе нужно получать данные, менять значения переменных и сообщать результат. Поэтому правильный ввод, вычисление и вывод становятся частью более сложных алгоритмов.
Чем оператор присваивания отличается от равенства в математике?
Математическое равенство утверждает, что значения слева и справа одинаковы. Присваивание — это команда: вычислить правую часть и записать результат в переменную слева. Например, x := x + 1 увеличивает значение x на единицу, хотя такое равенство в математике было бы неверным.
Почему в Паскале для присваивания используют :=, а не =?
В Паскале знак := обозначает действие присваивания, а знак = используют для сравнения значений, например в условии. Разные обозначения помогают отличить изменение переменной от проверки равенства. Поэтому в команде присваивания нужно писать именно :=.
Можно ли вводить несколько значений одним оператором read?
Да, в скобках можно перечислить несколько переменных через запятую: read(a, b). Введённые значения попадут в переменные в том же порядке, в каком они указаны. Например, первое — в a, второе — в b.
Чем отличаются write и writeln?
Обе команды выводят значения переменных и текстовые сообщения. write не начинает следующую строку автоматически, поэтому последующий вывод может оказаться рядом. writeln после вывода переводит курсор на новую строку.
Что произойдёт, если вывести переменную до того, как ей присвоено значение?
Если переменной не было присвоено значение и оно не было введено, программа использует неопределённые исходные данные. В результате может появиться непредсказуемое значение или программа поведёт себя не так, как ожидалось. Перед выводом проверьте, что переменная получила значение.
§ 17. Оператор присваивания, ввод и вывод данных