На этом уроке в презентации предложен материал по информатике в 9 классе при изучении языка программирования в среде Паскаль. Учащимся предложено рассмотреть программы с операторами ввода данных ReadLn и Read, в чем их отличие и для чего их нужно применять, как меняется запись программы, что происходит с результатом.
Операторы ввода
Операторы ввода
данных ReadLn
данных
ReadLn и и ReadRead
Учитель информатики
МОУ Юрцовская СОШ Егорьевский район
Сафонова Ольга Викторовна
Задача
Задача
20; b:=1b:=166;;
Сложить два числа – 20 и 16.
Сравним две программы решения этой задачи:
VAR a, b : Integer;
VAR a, b :
VAR a, b : Integer;
VAR a, b :
BBЕЕGINGIN
Integer;
Integer;
BBЕЕGINGIN
ReadLn (a,b);
ReadLn (a,b);
a:=a:=20;
WriteLn (a + b)
WriteLn (a + b)
WriteLn (a
WriteLn (a + +
END.
END.
b)b)
только одной
Программы отличаются
END.
END.
программа не требует
пояснений – она печатает число 36.
Во второй программе нигде не сказано чему равны aa и bb, а
вместо этого
ReadLn.
включен оператор ReadLn
строкой. Первая
ReadLn
Оператор ReadLn
Оператор
ReadLn (читается – «рид’лайн») переводится как «читай
ReadLn
строку».
Он приказывает компьютеру остановиться и ждать, когда с
клавиатуры будет
введена определенная информация, после чего продолжит
работу.
В частности, ReadLn (a,b)
Во время этого ожидания надо ввести с клавиатуры число 20
(т.к. a равно 20),
затем нажать пробел, набрать число 16 ( т.к. bb равно 16) и
нажать клавишу
Enter.
Enter
После нажатия клавиши Enter прекращается ожидание и
направляет число 20
в память, в ячейку a, число 16 – в ячейку bb. На этом он считает
выполнение
ReadLn законченным и переходит к следующему
оператора ReadLn
ReadLn (a,b) будет ждать ввода двух целых чисел.
ReadLn
Оператор ReadLn
Оператор
Итак, обе программы делают одно и то же. Зачем же тогда
ReadLn
применять ReadLn
вместо оператора присваивания?
Одна из причин в том, что программа с ReadLn
универсальнее,
«свободнее»:
если первая программа решает задачу сложения только двух
конкретных чисел,
то вторая программа складывает два любых числа.
Вторая причина в том, что программа с ReadLn
программисту во
время написания программы не задумываться над конкретными
значениями
исходных данных, оставляя это на момент выполнения
программы.
ReadLn гораздо
ReadLn позволяет
Задача
Задача
Напишем программу для решения следующей задачи:
В зоопарке 3 слона и довольно много кроликов, причём
количество кроликов
часто меняется. Слону положено съедать в сутки 100
морковок, а кролику – 2.
Каждое утро служитель зоопарка сообщает компьютеру
количество кроликов.
Компьютер в ответ на это должен сообщить служителю общее
количество
kol_krol
– количество кроликов в зоопарке
морковок, которые сегодня нужно скормить кроликам и слонам.
kol_slon
– количество слонов в зоопарке
norma_krol
Придумаем имена переменным величинам:
norma_slon
vsego
– сколько морковок в день положено кролику
– сколько морковок в день положено слону
– сколько всего требуется морковок
Напишем программу
Напишем программу
VAR kol_krol, kol_slon, norma_krol, norma_slon, vsego :
VAR
Integer;
BBЕЕGINGIN
norma_krol:=2;
norma_slon:=100;
ReadLn (kol_krol);
kol_slon:=3;
vsego:= norma_krol * kol_krol + norma_slon * kol_slon;
WriteLn (vsego)
END.
END.
Компьютер, выполнив автоматически первые два оператора (norma_krol:=2 и
norma_slon:=100 ), останавливается на операторе ReadLn
число 60, после чего компьютер посылает это число в ячейку kol_krol и
переходит к выполнению следующего оператора kol_slon:=3
программы на мониторе появится ответ: 420.
kol_slon:=3. В конце этой
ReadLn . Служитель вводит
Схематическое
Схематическое
изображение процесса
изображение процесса
выполнения программы
выполнения программы
Что находится в ячейках памяти
Порядок
выполнения
kol_krol
операторов
norma_krol:=2
?
norma_slon:=100
?
ReadLn (kol_krol)
60
kol_slon:=3
60
vsego:= norma_krol *
60
kol_krol + norma_slon
* kol_slon
WriteLn (vsego)
Измените в программе количество кроликов.
kol_slon
?
?
?
3
3
norma_krol
2
2
2
2
2
norma_slon
?
100
100
100
100
vsego
?
?
?
?
420
100
420
60
3
2
Интерфейс пользователя
Интерфейс пользователя
Когда служитель запускает программу и она делает паузу на
операторе
ReadLn (kol_krol), служитель видит перед собой пустой экран
монитора, на
котором нет никаких намёков на приглашение вводить какую-
либо
информацию. Посторонний человек ни за что и не догадается,
что компьютер
чего-то ждёт. Так же, когда получаем результат, то на экране
появляется сухое
число 420 (нельзя определить, что оно обозначает).
В данном случае говорят, что у нашей программы неудобный
Дополним нашу программу, чтобы интерфейс стал более удобным:
VAR kol_krol, kol_slon, norma_krol, norma_slon, vsego : Integer;
VAR
BBЕЕGINGIN
norma_krol:=2;
norma_slon:=100;
WriteLn (‘Введите, пожалуйста, количество кроликов’);
ReadLn (kol_krol);
kol_slon:=3;
vsego:= norma_krol * kol_krol + norma_slon * kol_slon;
WriteLn (‘ Вам всего понадобится ‘,vsego, ‘ морковок‘);
ReadLn
END.
END.
Эта программа будет работать точно так же, как и предыдущая,
с тем
отличием, что во время паузы, вызванной оператором ReadLn
(kol_krol),
на экране будет гореть удобная надпись:
Введите, пожалуйста, количество кроликов
а результат будет выведен на экран в виде:
Вам всего понадобится 420 морковок
Оператор ReadLn без скобок в конце программы нужен для
нейтрализации
неприятной особенности в работе Паскаля. После выполнения
программы
Паскаль торопится погасить экран с результатами решения
задачи и делает
это так быстро, что можно не успеть разглядеть результаты.
Оператор ReadLn,
поставленный после оператора WriteLn , выводящего
результаты на экран,
задает паузу. Во время ее экран не гаснет, и можно спокойно
разглядеть
Задания
Задания
Написать с использованием интерфейса программы решения задач:
1. Длина одной стороны треугольника равна 20 см. Длины двух
других сторон
будут известны только после запуска программы на
выполнение.
Вычислить периметр треугольника.
2. В компьютер вводятся путь, пройденный телом, и скорость тела.
Найти время движения тела.