На Горох
Информатика, 9 класс

11.1. Ввод данных

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович

Объяснение темы В оглавлении: 11.1. Ввод данных

Кратко о теме

Ввод данных позволяет программе получать значения, с которыми она будет работать: например, числа для вычислений или исходные сведения для задачи. Без ввода пришлось бы заранее записывать конкретные значения в программу, и её нельзя было бы удобно применять к новым данным. В Паскале значения считывают операторами read и readln и записывают в указанные переменные. Чтобы ввод прошёл правильно, имена переменных и типы данных должны соответствовать вводимым значениям.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Ввод данных — передача программе значений, которые она использует при выполнении. Например, программа получает введённое число и затем вычисляет его квадрат. Ввод нужен, чтобы программа могла работать с новыми исходными данными, а не только с заранее записанными.

Оператор ввода — команда, с помощью которой программа получает данные и записывает их в указанные переменные. Переменная — именованная область памяти, в которой хранится значение. Оператор связывает то, что ввёл пользователь, с тем местом программы, где это значение понадобится.

Оператор read — команда языка Паскаль для ввода значений в перечисленные переменные; после чтения курсор остаётся в текущей строке ввода. Поэтому последующие данные можно считывать из той же строки. Команда полезна, когда ввод продолжается без обязательного перехода к новой строке.

Оператор readln — команда ввода, после которой программа переходит к следующей строке ввода. Она считывает значения для перечисленных переменных и завершает обработку текущей строки. Это удобно, когда данные организованы построчно и следующая команда должна получить данные со следующей строки.

Как это устроено

Программе нужны входные данные, чтобы выполнять задачу с конкретными значениями: например, находить сумму введённых чисел. Если записать числа непосредственно в код, при каждом новом наборе данных пришлось бы менять программу. Ввод отделяет алгоритм от исходных значений: команды остаются прежними, а пользователь может задавать новые данные при запуске. Это особенно удобно, когда заранее неизвестно, какие числа будут использоваться.

Общая запись операторов такова: read(имена_переменных) или readln(имена_переменных). В круглых скобках указывают имена переменных, а если их несколько — разделяют запятыми, например read(a, b). Скобки показывают, для каких переменных предназначены считываемые значения. Точка с запятой в Паскале завершает оператор: read(a);.

Порядок имён определяет, в какие переменные попадут значения. Если записано read(a, b), сначала прочитанное значение присваивается a, а следующее — b. Программа не пытается определить смысл данных по названиям переменных, поэтому полагаться нужно на порядок. Сопоставьте его с порядком значений в условии или в строке ввода.

Несколько значений можно записать в одной строке, разделив пробелами, например 12 5. Оператор read(a, b) возьмёт первое значение для a, второе — для b; пробел служит разделителем, а не частью числа. При readln(a, b) значения также считываются для указанных переменных, после чего текущая строка ввода завершается. Следующее чтение с помощью нового оператора readln начинается со следующей строки.

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

Операторы ввода в языке Паскаль

Сравните команды по строке, в которой находятся входные данные, и по тому, что должно происходить после чтения. В столбце о распределении значений указан общий принцип: в обоих случаях он зависит от порядка имён. Используйте таблицу, чтобы выбрать команду для нужной организации ввода.

Свойствоreadreadln
НазначениеСчитывает значения в перечисленные переменные.Считывает значения в перечисленные переменные и завершает строку ввода.
Запись оператораread(a, b);readln(a, b);
Как распределяются значения между переменнымиПо порядку имён: первое значение — в a, следующее — в b.По порядку имён: первое значение — в a, следующее — в b.
Что происходит после чтенияКурсор остаётся в текущей строке ввода.Текущая строка завершается, чтение продолжается со следующей.

Разбор задач

Задача 1. Составить фрагмент программы, который вводит целое число в переменную a. Сначала нужно выяснить, куда программа сохранит число, а затем убедиться, что переменная предназначена для целых значений. Одной команды ввода недостаточно, если переменная ещё не объявлена.

  1. Объявим переменную a с целочисленным типом: var a: integer;. Это сообщает Паскалю имя переменной и вид данных, которые в ней будут храниться.
  2. Добавим команду readln(a);. Имя a в скобках указывает, куда нужно записать введённое значение.
  3. При запуске введём одно целое число. Оно будет сохранено в a, а строка ввода завершится.

Ответ: фрагмент var a: integer; begin readln(a); end. вводит целое число в переменную a. Для дальнейшего вычисления программа может использовать сохранённое значение.

Задача 2. Ввести два целых числа в переменные a и b, затем подготовить их к использованию в вычислении. Нужно не только прочитать два значения, но и сохранить их именно в нужных переменных. Поэтому сначала определим порядок переменных в команде, а затем введём числа в соответствующем порядке.

  1. Объявим обе переменные как целые: var a, b: integer;. Объявление должно предшествовать использованию имён в операторе ввода.
  2. Запишем readln(a, b);. Переменная a стоит первой, поэтому получит первое число, а b получит второе.
  3. Введём, например, 8 3 в одной строке. После чтения в a будет 8, а в b — 3; теперь эти значения можно подставлять в выражение, например a + b.

Ответ: var a, b: integer; begin readln(a, b); end. При вводе 8 3 переменные содержат соответственно 8 и 3, и их можно использовать в вычислении.

Задача 3. Организовать ввод значений для нескольких переменных так, чтобы часть данных считывалась из одной строки, а следующая — из новой. Здесь важно, что переход определяется не числом переменных, а выбранным оператором. Чтобы ввод второй группы начинался на новой строке, завершим чтение первой группы командой readln.

  1. Объявим переменные: var a, b, c: integer;. Выберем первые две для значений из первой строки, а c — для следующей.
  2. Запишем readln(a, b); и введём два целых числа в одной строке, разделив их пробелом. Оператор прочитает оба значения и завершит эту строку.
  3. Следующей командой укажем readln(c);. Она получит значение c из следующей строки ввода.

Ответ: последовательность readln(a, b); readln(c); подходит для такого ввода. Первые два значения задаются в одной строке, а значение c — в новой.

Типичные ошибки

Необъявленное имя. Если указать в read или readln переменную, которой нет среди объявленных, программе некуда записать значение. Такое случается из-за опечатки или пропущенного объявления. Проверьте, что каждое имя в скобках объявлено и написано одинаково во всех местах.

Перепутанный порядок. Значения попадают в переменные по очереди, а не по их смыслу. Поэтому при read(a, b) первое число получит a, даже если ученик хотел передать его в b. Перед запуском сопоставьте порядок чисел во входных данных с порядком имён в операторе.

Неподходящий тип значения. Попытка ввести текст вместо целого числа не соответствует типу переменной. Ошибку допускают, если ориентируются только на то, что программа запрашивает значение, но забывают про объявление. Сверьте тип и ввод: целой переменной задают целое число.

Смешение read и readln. Если считать команды полностью одинаковыми, можно не учесть остаток текущей строки и начать следующий ввод не с ожидаемого места. Причина ошибки — невнимание к тому, завершает ли команда строку. Проследите, какая строка обрабатывается после каждого оператора, и при необходимости используйте readln.

Связь с другими темами

Чтобы пользоваться операторами ввода, нужно знать, что такое переменная, как её объявляют и какие бывают типы данных. Переменная задаёт место для значения, а тип помогает определить, какие данные допустимы. Ввод связывает эти знания с выполнением программы: полученные значения становятся доступными командам алгоритма.

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

Что запомнить

  • Оператор ввода передаёт программе значения для дальнейшей обработки.
  • В операторах read и readln указывают имена переменных.
  • Порядок введённых значений соответствует порядку переменных в операторе.
  • Тип вводимого значения должен соответствовать типу переменной.
  • После readln чтение продолжается со следующей строки ввода.

Частые вопросы по теме

Зачем программе вводить данные, если переменные уже объявлены?

Объявление создаёт переменную и задаёт её тип, но само по себе не сообщает программе нужное значение. Оператор ввода получает значение во время выполнения и сохраняет его в переменной. Благодаря этому одну программу можно запускать с разными исходными данными.

Можно ли в одном операторе ввода указать несколько переменных?

Да, имена переменных перечисляют через запятую в круглых скобках, например read(a, b). Программа считывает значения для них по порядку. Каждый тип переменной должен соответствовать своему введённому значению.

В каком порядке значения попадут в переменные?

Значения присваиваются в том порядке, в котором переменные записаны в операторе. В read(a, b) первое значение попадёт в a, второе — в b. Поэтому порядок нужно сверять с условием задачи и подготовленными данными.

Чем оператор read отличается от readln?

Оба оператора считывают значения и помещают их в указанные переменные. После read курсор остаётся в текущей строке ввода, а readln завершает чтение этой строки. Следующий ввод после readln начинается со следующей строки.

Что произойдёт, если ввести значение неподходящего типа?

Программа не сможет корректно преобразовать значение для переменной, например записать текст в целочисленную переменную. В зависимости от среды выполнения это может привести к ошибке ввода или остановке программы. Проверьте объявленный тип и вводите значение подходящего вида.

Спросить по теме параграфа

11.1. Ввод данных

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович