Меню
Видеоучебник
Видеоучебник  /  Информатика  /  8 класс  /  Информатика 8 класс (ФГОС)  /  Организация ввода и вывода данных

Организация ввода и вывода данных

Урок 23. Информатика 8 класс (ФГОС)

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

Конспект урока "Организация ввода и вывода данных"

Вопросы:

·     Оператор вывода.

·     Оператор ввода.

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

Оформление оператора вывода

Рассмотрим пример работы оператора вывода, находящегося в составе программы.

program test;

var

 a: integer;

begin

 a:=78;

 write (‘a=’, a);

end.

Программа с оператором вывода

Как мы видим, его список выводимых значений содержит текстовую константу ‘’, а также переменную a. В процессе своей работы этот оператор выведет в консоль сначала текстовое сообщение в виде буквы «a» и знака равенства, а затем – значение переменной а, которое хранится в оперативной памяти компьютера. Обратив внимание что в программе переменная a имеет целый тип integer и равна 78. Значит в консоль будет выведено сообщение: a=78. Если бы переменная а имела бы тип real - компьютер вывел бы в консоль следующее текстовое сообщение: а=7.8Е+01. Оно означает, что а = 7.8 × 101. Числа с дробной частью могут выводиться таким образом потому, что в их двоичном представлении отдельно хранятся знаки и показатель сдвига числа, относительно единичного разряда.

Обратим внимание что при работе оператор write выводит значения выражений, содержащихся в списке, непосредственно одно за другим, без каких-либо разделителей. То есть оператор write (9, 45, 374) при выполнении выведет на экран текстовое сообщение: 945374. То есть обычный человек, не зная, как работает программа может воспринять эти сообщения как одно число 945 374. Чтобы этого не произошло при выводе нескольких величин стоит использовать некоторые разделители. Их можно задать в виде строковых значений в операторе вывода. В качестве примера можно добавить в этот оператор между числами, символьные значения, состоящие из пробелов. Так же, если нужно указать числа через запятую, можно сделать символьные значения строковыми, добавив перед пробелами между апострофами знаки запятых.

Есть и другой способ отделить выводимые значения друг от друга. Чтобы это сделать, нужно в операторе вывода для каждого значения указать его формат вывода. Для целочисленных значений формат вывода представляет собой целое число, указанное через двоеточие, после соответствующего выражения. Это число указывает, сколько знаковых позиций необходимо отвести для вывода числа. Если, количество знаков в выводимом значении будет меньше числа, указанного в формате вывода – оставшиеся незаполненными знаковые позиции будут заполнены пробелами слева от числа. То есть при выполнении оператора write (43:4) слева от числа 43 будут выведены два пробела. Если в выводимом значении количество знаков будет превышать число, указанное в формате вывода – то количество знаковых позиций для вывода числа будет автоматически увеличено на необходимое количество.

Для значений с дробной частью формат вывода указывается в виде двух чисел, перед каждым из которых ставится двоеточие. Первое число указывает на количество знаковых позиций, которые будут выделены для вывода числа с учётом точки, отделяющей дробную часть от целой. Второе число указывает на то, какое количество знаков в числе необходимо выводить после запятой.  Если количество этих знаков в выводимом значении будет меньше указанного числа, то недостающие знаки будут заполнены нулями справа от числа. То есть, при выполнении оператора write (3.75:5:3) перед числом будет выведен один пробел, а в его дробной части будет выведен ноль в конце.

Формат вывода вещественного выражения

Также есть и другой оператор вывода данных, writeln. Он отличается от оператора write лишь тем, что по окончании вывода курсор в консоли перейдёт на следующую строку.

Задача: Даны длины сторон прямоугольника. Найти его площадь и периметр.

Напишем программу для решения данной задачи. Как мы помним, программа начинается с заголовка, а заголовок начинается со служебного слова program, после которого идёт имя программы. Назовём нашу программу pryamougolnik. После заголовка следует точка с запятой. Дальше нам необходимо описать переменные, которые будут использоваться в программе. Раздел описания переменных начинается со служебного слова var. После него через запятую перечисляются переменные одного типа.  Нам понадобится четыре переменных, длины сторон прямоугольника, назовём их a и b. Также нам понадобятся переменные, в которых будут храниться площадь и периметр прямоугольника. Назовём их соответственно s и p. Очевидно, что все перечисленные величины могут принимать дробные значения, поэтому зададим их вещественного типа real. После описания переменных одного типа следует точка с запятой.

Запишем логические скобки, то есть служебные слова begin и end. Как мы помним, после слова end следует точка. Между логическими скобками запишем операторы программы, в порядке их выполнения. В начале запишем оператор вывода writeln с текстом поясняющего сообщения, о том, что это программа расчёта площади и периметра прямоугольника по длине его сторон. C помощью операторов присваивания зададим длины сторон прямоугольника, то есть переменные a и b равными 7.3 и 3.5 соответственно. Дальше нам нужно рассчитать значения площади и периметра прямоугольника. Начнём с площади. Её значение будет храниться в переменной s. Для её расчёта нам нужно перемножить длины сторон прямоугольника, то есть переменные a и b. Для расчёта периметра, который будет храниться в переменной p, нужно сумму длин его сторон: a и b умножить на 2.

Теперь остаётся лишь вывести значения переменных s и p. Сделаем это с помощью оператора write. В нём укажем по порядку, строковое значение 's=', значение переменной s, второе строковое значение ' p=' и значение переменной p. Для переменных s и p укажем формат для их вывода. Всего для их вывода отведём по 5 символов, а для их дробной части – по 2 символа.

program pryamougolnik;

var

  a, b, s, p: real;

begin

 writeln ('Программа расчёта площади и периметра прямоугольника по длине его сторон.');

 a:=7.3;

 b:=3.5;

 s:=a*b;

 p:=(a+b)*2;

 write ('s=', s:5:2, ' p=', p:5:2);

end.

Исходный код программы

Запустим программу на выполнение, нажав на кнопку Выполнить. Площадь заданного нами прямоугольника действительно равна 25.55, а периметр – 21.6. Задача решена верно.

Результат работы программы

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

Это позволяет сделать оператор ввода данных. Он записывается служебным словом read, после которого в скобках следует список переменных, значения которых пользователь может ввести. После оператора read, как и после других операторов следует точка с запятой. При выполнении оператора ввода, программа переходит в режим ожидания ввода данных пользователем. Числовые значения могут разделяться при вводе пробелами или запятыми, на усмотрение пользователя. После окончания ввода данных пользователь должен нажать клавишу Enter. Важно помнить при этом что строковые данные не разделяются пробелами и запятыми, так как эти символы воспринимаются как часть строки, поэтому после ввода каждой строки пользователь должен нажать клавишу Enter. При вводе данных пользователь должен соблюдать порядок ввода данных и совместимость типов. То есть если пользователь вместо ожидаемого целочисленного значения введёт строку, символ или дробное число – программа вернёт пользователю сообщение об ошибке.

Например, рассмотрим, как сработает оператор ввода в составе следующей программы:

program test;

var

 a: integer;

 b: real;

 c: string;

begin

 …

 read (a, b, c);

 …

end.

Как видим, данный оператор принимает на ввод одно целочисленное значение, одно дробное и одно строковое. При выполнении оператора программа ввода перейдёт в режим ожидания ввода данных. Пользователь при этом может вводить переменные, нажимая после ввода каждой из них Enter или же ввести все три значения сразу, разделив их пробелами или запятыми.  Или же может разделить первые два значения пробелом, а третье ввести после нажатия клавиши Enter или наоборот. При этом программа во всех случаях одинаково примет на ввод все три значения.

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

Изменим нашу программу расчёта площади и периметра прямоугольника, так чтобы пользователь самостоятельно вводил длины его сторон. Для этого уберём из кода программы операторы присваивания значений переменным a и b. Вместо них для переменной a напишем оператор вывода write (‘a=’), который будет выводить на экран запрос на ввод этой переменной, а также напишем оператор readln (a), считывающей значение этой переменной. Тоже напишем и для переменной b.

program pryamougolnik;

var

 a, b, s, p: real;

begin

 writeln ('Программа расчёта площади и периметра прямоугольника по длине его сторон.');

 write ('a=');

 readln (a);

 write ('b=');

 readln (b);

 s:=a*b;

 p:=(a+b)*2;

 write ('s=', s:5:2, ' p=', p:5:2);

end.

Код изменённой программы

Запустим программу на выполнение. Введём длины сторон прямоугольника равные 1.2 и 6.1. Таким образом площадь заданного прямоугольника равна 7.32, а периметр – 14.6. Задача решена верно.

Результат работы программы

Важно запомнить:

·     Ввод значений переменных в оперативную память компьютера осуществляется с помощью операторов read и readln.

·     Вывод данных из оперативной памяти на экран монитора осуществляется с помощью операторов write и writeln.

·     Ввод и вывод данных в программе должны быть организованы как можно понятнее и удобнее для пользователя для дружественности пользовательского интерфейса.

1
4263

Комментарии 1

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Галина Недбайлова, 08.04.2020 14:27

Уже куплены и использовались в учебном процессе. Но. теперь дистант. Спасибо за материалы!