Команды ввода/вывода информации.

Каждый день мы получаем информацию.(Книги, интернет и т.п.). Эту информацию мы обрабатываем (анализируем) и делаем определённые умозаключения, выводы. А затем своими выводами делимся с другими. Коротко это можно обозначить следующими пунктами:

1. Получить информацию (Входящие данные).
2. Обработать информацию.
3. Выдать информацию.

Программирование (программы) строится по такому же принципу. Сначала программа получает данные, затем обрабатывает соответственно поставленной задаче и выводит результат.
Допустим, стоит задача решить квадратное уравнение Ax2+Bx+C=0. Для его решения нужно
1. Знать коэффициенты А,В,С. (В нашем случае — это входящие данные).
2. Обрабатываем данные, используя значения дискриминанта (D=B*B-4*A*C) (Дискриминант это дополнительная переменная (внутренняя или промежуточная) которая позволит нам получить результат.
3. Вычисляем Х1, Х2.
Но эти значения сначала мы держим в калькуляторе или в уме. И только затем только пишем на бумаге. Итак, исходя из выше сказанного, для решения квадратного уравнения нужно:
1. Получить значения А,В,С.
2. Используя дополнительные переменную/переменные вычислить результат.
3. Вывести результат на экран.

Для выполнения данных операций в Паскале существуют команды ввода/вывода информации.
Команды ввода информации

С английского слово Read переводится как «ЧИТАТЬ». Его и взяли для считывания данных от пользователя.

Общий вид команды: Read (список переменных);
Для ввода информации (точнее значений переменных) используют команду Read (a1, a2, a3). Здесь a1, a2, a3 — это список переменных объявленных в разделе Var. Приложением к команде Read есть команда Readln (список переменных) Эти команды отличаются друг от друга тем, что после выполнения команды Read текстовый курсор не переходит на новую строку, а в команде Readln — переходит. Кстати, без списка переменных команда Readln используется для задержания информации на экране до тех пор, пока пользователь не нажмет клавишу Enter.

Var A,B,C:integer;
Begin
Read(A,B,C);
End.
Var A,B,C:integer;
Begin
Read(A);
Read(B);
Read(C);
End.
Var A,B,C:integer;
Begin
ReadLn(A,B,C);
End.
Var A,B,C:integer;
Begin
ReadLn(A);
ReadLn(B);
ReadLn(C);
End.
Var A,B,C:integer;
Begin
ReadLn;
End.

Компьютер — это машина для обработки информации, которую получает от пользователя. Затем выполняет с ней определенные действия и выдает пользователю результат. Поэтому для обеспечения общения с ПК придется изучить команды ввода/вывода информации и определенных правил форматирования результатов (на основе работы с числами) Вспомним немного английский язык. Слово «Пиши», или «Напечатай» в нём пишеться Write. В языке Паскаль аналогичная команда отвечает за вывод различных сообщений. Только с различными вариациями. Попробуем разобраться с этим вопросом. Итак …
Команды вывода информации
Общая структура команды Write (‘Сообщение’ [, список переменных]);
После вывода сообщения, текстовый курсор находится в той же строке, что и информирующее сообщение. Для вывода сообщения «Hello» нужно дать следующую команду
Write (‘Hello World’);
команда (‘Сообщение’);

 Begin 
 Write ('Hello World'); 
 Readln; 
 End.

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

 Var Area : integer; 
 Begin 
    Area:=25; 
    Write ('Площадь фигуры= ',Area ); 
    Readln; 
 End. 
 

Write (‘Площадь фигуры= ‘,Area );

команда ( ‘сообщение ‘, значение переменной);


И неугомонный руководитель проекта пожелал дополнительное информационное сообщение после числового результата.


Var Area : integer; 
Begin 
    Area:=25; 
    Write ('Площадь фигуры=  ', Area,' квадратных единиц'); 
    Readln; 
    End. 

команда ( ‘сообщение ‘, значение переменной, ‘завершение сообщения’);

И опять-таки руководство требует, чтобы был запас для вывода выделить 4 знакоместа в значении площади …

Var Area : integer; 
Begin Area:=25; 
Write ('Площадь фигуры=  ' , Area:4,' квадратных единиц'); 
Readln; 
End. 

команда ( ‘сообщение ‘ , значение переменной с форматированием, ‘завершение сообщения’);

И только сейчас руководитель проекта понял, что площадь может быть действительным числом. Поэтому требует рассчитать значение площади фигуры с максимальной точностью. В этом случае — тип переменной Area: Real;

Var Area : real; 
Begin    Area:=25.0; 
    Write ('Площадь фигуры=  ' , Area , ' квадратных единиц'); 
Readln; 
End. 

Иногда результат выводится в виде Площадь фигуры= = 2.5Е+1
Запись E + 01 означает, что результат (2.5) нужно умножить на 10
Запись E + 02 означает, что результат (2.5) нужно умножить на 100 и т.д.
Запись E-01 означает, что результат нужно разделить на 10
Запись E-02 означает, что результат нужно разделить на 100 и т.д.

Руководителю не понравилась большое количество цифр. Он решил, что достаточно лишь 5 знаков после запятой.

Var Area : real; 
Begin  Area:=25; 
  Write ('Площадь фигуры=  ' , Area:4:5, ' квадратных единиц'); 
Readln; 
End. 

Площадь фигуры= 25.91326 квадратных единиц
Запись Area:4:5 означает, что под вывода целой части результата отводится 4 знакоместа и 5 знаков для цифр после запятой.
Но кроме площади фигуры существует еще и периметр …. Руководитель проекта требует, чтобы точность значения площади была 5 знаков и рассчитан периметр с максимальной точностью.

Var Area, Perimetr : real; 
Begin 
Area:=25.0; 
Perimetr:=20.0; 
Write('Площадь фигуры=  '); 
Write(Area:4:5,' квадратных единиц'); 
Write(' и Периметр= ',Perimetr, ' единиц'); 
Readln; 
End. 

Площадь фигуры= 25.91326 квадратных единиц и Периметр==2.0035769132E+01 единиц
Есть 3 команды Write, но результат выводится в одну строку. Возникает вопрос, а можно перенести текстовый курсор на следующую строку? Для пополнения багажа знаний читаем следующий раздел

Общая структура команды Writeln.
Writeln (‘Сообщение’ [, список переменных]);
Аналогом команды Write в Паскале есть команда Writeln с тем отличием, что после вывода сообщения на экран, текстовый курсор переходит на новую строку. например:

Begin 
Write('Hello'); 
Write (' World'); 
Readln; 
End. 

Hello World
Курсор остается в той же строке, что и слово World. Точнее сразу после него.

Begin 
Writeln('Hello'); 
Writeln(' World'); 
Readln; 
End. 

Hello
World
пустая строка

После вывода на экран слова Hello, текстовый курсор перемещается на новую строку. Поэтому слово World выводится с новой строки. Для перехода на новую строку без вывода сообщений можно использовать команду Writeln; без параметров.
Пример

Begin 
  Write('Hello'); 
  Writeln; 
  Write (' World'); 
Readln; 
End.

Hello
World
Как видим, в тексте программы у нас 3 команды вывода данных. Одна из них «пустая» для перехода на новую строку. Изменений в формате записи команды по сравнению с предыдущей нет. Единственное отличие — переход текстового курсора на новую строку. Данные (конкретные значения переменных). которые получает компьютер извне (например от пользователя или от датчиков) называются входящими. Данные (информация) которые компьютер выдает как результат решения задачи называются результатом. Переменные в программе, которые помогают решить задачу и содержат промежуточные значения — называются вспомогательными или промежуточными.
Пример из школьной программы по математике.
Для квадратного уравнения
А, В, С это входящие данные.
Х1,Х2 — это результат.
Дискриминант — это вспомогательнаня переменная, которая позволяет рассчитать решение уравнения

Пример из школьной программы по геометрии.
Дано треугольник со сторонами А, В, С. Найти его площадь используя формулу Герона. (Смотреть в учебнике).
А, В, С — входящие.
Area — результат.
А вот Р (полупериметр) — вспомогательная или промежуточная (Она позволяет рассчитать площадь треугольника).
Количество вспомогательных переменных зависит от поставленной задачи.

Что нужно запомнить:
1. Правильно писать команды Write/Writeln и Read/Readln
2. Понимать разницу между Write/Writeln и Read/Readln
3. Знать и понимать принцип форматирования результата ввода/вывода данных

4. При вводе данных желательно использовать Write/Readln.

Дано целое число А. Вывести его квадрат.

var a:integer;
Begin
  Write('Число A=');readln(a);
  Writeln('Результат=',A*A);
  Wrieln('Press Enter to Exit');
Readln
End.

Например, чем отличаются результаты работы приведенных ниже программных кодов:
1. Write(‘ Число A=’); Readln(A);
2. Writeln(‘ Число A=’); Read(A);

1. A:integer Write(‘Результат=’,a:3);
2. A:real; Write(‘Результат=’,a:3:3)
3. A:real; Write(‘Результатt=’,a);

Для начала предлагаю Вам простое задание.
Выполните нижеуказанные действия для Задача1 не особо вдаваясь в подробности. Просто «проба пера». Если «процесс пойдет», внесите в программу изменения согласно задач для самостоятельного решения.
Задача1.
Дано действительное число Т=23.
Вывести его на экран с двумя знаками после запятой.
1. Запускаем ТР 2.
2. Набираем код программы
Программный код для набора в Паскале

var T:real; 
BEGIN t:=23; 
Writeln('Число T=', t:2:2); 
Writeln('Press Enter to Exit'); 
Readln; 
END. 

3. Для проверки на наличие синтаксических ошибок нажимаем F9. Если нет синтаксических ошибок — появиться мигающая фраза Press any Key/ Если таковые есть — придется исправлять.
4. Нажимаем любую клавишу (чаще всего пробел).
5. Для запуска программы нажимаем Ctrl+F9.
6. Программа напечатает Chislo T=23.00 и будет ждать нажатия на клавишу Enter
7. Нажимаем Enter и возвращаемся в среду программирования.
8. Если нужно сохранить программу нажимаем F2. Указываем имя и кнопочка ОК. (для открытия файла — F3)
9. Для выхода из ТР — Alt+X Общая структура программы в данном случае будет такова:

Var переменные; 
BEGIN Переменная:=значение (число); 
Write(); или Writeln(); 
Readln; 
END. 

{****** Для самостоятельного решения  ********}
К каждой нижеуказанной задаче назовите, какие переменные будут «входящими», промежуточными, и укажите переменную/переменные, которая содержит результат.
Объявить переменные и вывести результат согласно условию.
Внимание: Во всех примерах при выводе использовать значения переменных. (Вывод просто указанной строки не есть верным решением)
Пример:
Дано площадь квадрата S=25.
Вывести результат в виде: Площадь квадрата=25

Var s:integer; 
BEGIN 
s:=25; 
writeln('Площадь квадрата=',s); 
writeln('Press Enter to Exit'); 
readln; 
END.

S: входящие, S: результат. (промежуточных нет)

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 1 vote
Article Rating
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments