Студопедия — Операторы ввода данныхReadLnи Read.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Операторы ввода данныхReadLnи Read.

Порядок составления простой программы

Задача:

Известны размеры спичечной коробки: высота - 12.41 см., ширина - 8 см., толщина - 5 см. Вычислить площадь основания коробки и ее объем.

 

Порядок составления программы:

1. Определим названия переменных:

shirina - ширина
tol - толщина
visota - высота
pl - площадь
V - объем

2. Нужно определить, какого типа будут переменные. Поскольку ширина и толщина - целые, то и площадь будет целой. Высота и, следовательно, объем - вещественные. Первые две строки программы будут такими:

 

VAR shirina,tol,pl: Integer;

visota,V: Real;

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

BEGIN

shirina:=8; tol:=5; visota:=12.41;

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

pl:= shirina * tol;

V:= pl * visota;

5. После получения результата его нужно напечатать. Действительно, все операторы присваивания компьютер выполняет "в уме". После их выполнения в ячейках памяти pl и V будут находиться числовые результаты решения задачи. Чтобы их узнать, нужно использовать оператор WriteLn, после чего программу можно заканчивать:

WriteLn (pl,' ', V:10:3)

END.

 

Обратите внимание, что поскольку переменная V имеет тип Real, для ее вывода мы использовали формат (см. примечание).

Вот как будет выглядеть программа целиком:

VAR shirina,tol,pl:Integer;

visota,V:Real;

BEGIN

shirina:=8; tol:=5; visota:=12.41;

pl:= shirina * tol;

V:= pl * visota;

WriteLn (pl,' ', V:10:3)

END.

 

Программа напечатает два числа: 40 и 496.400.

 

Примечание. Переменные, описанные как Real, Паскаль выводит на экран в так называемом экспоненциальном формате(виде), с первого взгляда непонятном. Чтобы заставить Паскаль выводить вещественные числа в обычном, понятном виде, допишем в оператор вывода - WriteLn (y:8:3). Это значит, что мы хотим численное значение переменной y типа Real видеть на экране в привычном виде с 3 знаками после десятичной точки, а всё изображение числа не должно занимать больше 8 символов, включая целую часть, дробную часть, знак и десятичную точку. Этот оператор напечатает на экране 1.667. Здесь напечатано действительно 8 символов (три пробела, предшествующие единице, видны вам, как пустое место). Вместо 8 и 3 в операторе программист может писать любые имеющие смысл числа.

Операторы ввода данныхReadLnи Read.

Задача 1: Сложить два числа - 20 и 16.

Сравним две программы решения этой задачи:

VAR a,b: Integer; BEGIN a:=20; b:=16; WriteLn (a+b) END. VAR a,b: Integer; BEGIN ReadLn (a,b); WriteLn (a+b) END.
Программы отличаются только одной строкой. Первая программа не требует пояснений - она печатает число 36. Во второй программе нигде не сказано, чему равны a и b, а вместо этого включен оператор ReadLn.

ReadLn читается "рид'лайн", переводится "читай строку". Он приказывает компьютеру остановиться и ждать, когда человек введет с клавиатуры определенную информацию, после чего продолжить работу. В частности, ReadLn (a,b) будет ждать ввода двух целых чисел.

Таким образом, если первая программа после запуска будет работать без остановки до самого конца и без хлопот выдаст результат, то вторая программа на операторе ReadLn остановится и будет ждать. Во время этого ожидания человек должен на клавиатуре набрать число 20 (так как первым в списке оператора ReadLn стоит a), затем нажать клавишу пробела, затем набрать 16 и нажать клавишу Enter. Паскаль воспринимает нажатие пробела, как сигнал человека о том, что закончен набор на клавиатуре одного числа и сейчас начнется набор другого. После набора на клавиатуре последнего числа необходимо нажать клавишу Enter в знак того, что ввод чисел для данного оператора ReadLn закончен и компьютер может продолжать работу. В соответствии с этим компьютер сразу же после нажатия Enter прекращает ожидание и прежде всего направляет число 20 в память, в ячейку a, число же 16 - в ячейку b. На этом он считает выполнение оператора ReadLn законченным и переходит к следующему оператору - WriteLn. В результате будет напечатано число 36.

Таким образом, обе программы делают одно и то же. Зачем же тогда применять ReadLn вместо оператора присваивания? Ведь первая программа понятней, да и работает без остановки. Одна из причин в том, что программа с ReadLn гораздо универсальнее, "свободнее": если первая программа решает задачу сложения только двух конкретных чисел, то вторая программа складывает два любых числа. Вторая причина в том, что программа с ReadLn позволяет программисту во время написания программы не задумываться над конкретными значениями исходных данных, оставляя эту головную боль на момент выполнения программы. Но самая главная причина в том, что ReadLn позволяет человеку общаться с компьютером, вести с ним диалог во время выполнения программы.

 

Задача 2: В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику - две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

Придумаем имена переменным величинам:

kol_krol - количество кроликов в зоопарке

kol_slon - количество слонов в зоопарке

norma_krol - сколько морковок в день положено кролику

norma_slon - сколько морковок в день положено слону

vsego - сколько всего требуется морковок

 

А теперь напишем программу:

VAR kol_krol,kol_slon,norma_krol,norma_slon,vsego:Integer;

BEGIN

norma_krol:=2;

norma_slon:=100;

ReadLn (kol_krol);

kol_slon:=3;

vsego:= norma_krol * kol_krol + norma_slon * kol_slon;

WriteLn (vsego)

END.

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

Компьютер, выполнив автоматически первые два оператора (norma_krol:=2 и norma_slon:=100), останавливается на операторе ReadLn. Служитель вводит число 60, после чего компьютер посылает это число в ячейку kol_krol и переходит к выполнению следующего оператора (kol_slon:=3). На мониторе появится ответ: 420.

 

Схематическое изображение процесса выполнения программы:

ПОРЯДОК ИСПОЛНЕНИЯ ОПЕРАТОРОВ ЧТО НАХОДИТСЯ В ЯЧЕЙКАХ ПАМЯТИ
kol_krol kol_slon norma_krol norma_slon vsego
norma_krol:=2 ? ?   ? ?
norma_slon:=100 ? ?     ?
ReadLn (kol_krol)   ?     ?
kol_slon:=3         ?
vsego:=norma_krol          
WriteLn (vsego)          
 

На следующее утро, обнаружив, что 5 кроликов продано другому зоопарку, служитель запускает ту же самую программу, вводит число 55 и получает ответ - 410.

 

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

Можно было бы пойти по другому пути - вместо ReadLn использовать оператор присваивания, например kol_krol:=60. Но в этом случае программист каждое утро должен был бы бежать в зоопарк, чтобы исправлять в программе этот оператор присваивания.

Оператор ReadLn можно писать и без скобок, просто так: ReadLn. Выполняя оператор в такой записи, компьютер остановится и будет ждать, но не ввода какой-то информации, а просто нажатия на клавишу Enter. Таким образом, это просто оператор создания паузы в процессе выполнения программы. О том, зачем нужны паузы, поговорим чуть ниже.

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

 

 




<== предыдущая лекция | следующая лекция ==>
Фармакокинетика. Различают активные лекарственные препараты (эпросартан, вал­сартан, ирбесартан, телмисартан) и пролекарства (кандесартан) | ПУАНСОНЫ И МАТРИЦЫ

Дата добавления: 2015-10-12; просмотров: 882. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

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

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия