Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕМА 2 Как включить в работу числовые данные.doc
Скачиваний:
6
Добавлен:
01.09.2019
Размер:
29.19 Mб
Скачать

2.4. Ввод и вывод данных

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

Вводим переменные с клавиатуры

Пример 2.8. Ввод с клавиатуры значения переменной N

program Inp;

uses Crt;

var

N: integer;

Begin

ClrScr;

write('Введите число с клавиатуры:');

readln(N); {Здесь программа приостановится и будет ожидать ввод с клавиатуры. Наберите на клавиатуре число, например 153, и нажмите клавишу Enter}

writelп ('Вы ввели число ', N);

readln { Это оператор пустого ввода. Здесь программа опять приостановится и будет ожидать нажатия клавиши Enter. За это время вы успеете просмотреть вывод на экране. Этот прием мы рекомендуем использовать, чтобы не нажимать AU+F5 после окончания работы программы}

end.

Красивый вывод на экран

Рассмотрим еще одну задачу: задать с клавиатуры цвет фона (экра­на), символов и координат для вывода текста, а затем вывести текст в окно с заданными координатами.

Продумаем алгоритм решения данной задачи (рис. 2.9).

Рис. 2,9. Алгоритм решения задачи примера 2.9

Пример 2.9. Красивый вывод текста

program Inp_CoVor;

uses

Crt; { Подключение библиотечного модуля Crt }

var

{ Опишем переменные, где будут храниться цвет экрана – Сl1 и цвет выдаваемых символов - Сl2 }

Сl1.Сl2: 0..15; {0..15 - этот тип для переменных называется интервальным. В данном случае значения переменных могут меняться в интервале от 0 до 15. Здесь мы имеем отрезок (интервал) базового типа integer. Палитра цветов лежит именно в этом интервале }

X,Y: integer; { Для хранения координат }

begin

{ Блок 1:}

ClrScr;

{Ниже следует вызов процедуры Window(X1,Y1.X2.Y2) из модуля Crt, которая определяет на экране текстовое окно. (X1,Y1) - координаты верхнего левого угла окна. (X2,Y2) - координаты нижнего правого угла }

Window(20,5,60,20);

{Блок 2:}

write('Введите цвет для экрана:');

readln(Cl1); { Здесь работа программы приостанавливается и ожидается ввод номера цвета экрана в переменную СИ. Во время работы программы следует ввести число и нажать Enter }

{Блок 3:}

write("Введите цвет для символов:');

readln(Cl2);

{Ожидается ввод номера цвета символов в переменную Сl2. Во время работы программы следует ввести число и нажать Enter }

{Блок 4:}

TextBackGraund (Cl1) {Выбор фонового цвета}

{Блок 5:}

TextColor (Cl2) {Выбор цвета выводимых символов}

{Блок 6:}

Writeln (‘Введите координаты X и Y’);

Readln(X,Y) {Ожидается ввод координат для выводимого текста. Необходимо ввести два числа (координаты) через пробел и нажать Enter. Помните, что координаты внутри текстового окна отсчитываются от его левого верхнего угла. В нашем окне 16 строк и 41 столбец}

{Блок 7:}

ClrScr;

{ Функция очистки экрана в данном случае очистит не весь экран, а только заданное текстовое окно }

{Блок 8:}

GoToXYCX,Y); { Позиционирование курсора в точку с координатами X.Y }

{Блок 9:}

writelnC (‘Мы отлично вводим с клавиатуры!');

readln{ Этот "пустой" оператор readln задерживает нас в экране пользователя. Возврат в среду Turbo Pascal происходит после нажатия Enter }

end.

Задание значений переменных датчиком случайных чисел

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

Зададим этим способом цвет экрана. Вместо второго блока в программе поставим вызов датчика случайных чисел Random(X). Но перед этим обязательно нужно выполнить процедуру инициализации датчика, иначе он будет выдавать нам неслучайные числа:

Randomize; { Инициализация датчика случайных чисел проводится один раз в программе }

Cl1:=Random(16); { В результате переменной Сl1 присваивается целое случайное число из диапазона 0..15. Результат функции Random(N) случайное число из диапазона 0..N-1}

ЗАМЕЧАНИЕ

Нa самом деле настоящий программный датчик случайных чисел создать невозможно. Функция Random выдает псевдослучайные числа. Это значит, что числа, выдаваемые функцией, порождаются по определенной закономерности. Эта закономерность придумана так, чтобы казалось, что числа получаются случайными. Однако если не использовать процедуру randomize, каждый раз при запуске программы последовательность чисел будет одинаковой. (Процедура randomize «встряхивает» начальное значение последовательности. После этого порождаемая последовательность чисел становится почти уникальной.

Рассмотрим еще несколько примеров использования функции Random.

Пусть нам необходимо получить случайное двузначное число, то есть число от 10 до 99. Логика проста: нам нужно одно случайное число из 90 (именно столько всего двузначных чисел). Значит, будем использовать функцию Random, которая выдаст одно число из 90, то есть Random(90). Но результат тогда будет лежать в диапазоне 0..89, а нам требуется 10..99! Значит, нужно сдвинуть полученный диапазон вправо на 10. Это делает операция +10. В итоге получаем следующее: Random(90)+10.

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

Задание 2.13. Напишите программу, которая выдает сообщение на полный экран (без текстового окна). Координаты сообщения, цвет экрана и цвет символов задайте с помощью датчика случай­ных чисел.

ЗАПОМНИТЕ!

Заливка экрана или текстового окна выполняется вызовом двух процедур: установка цвета экрана — процедурой TextBackGround(...), а очистка экрана — процедурой ClrScr.

Зачем нужны константы в программе?

Бывают случаи, когда некоторые величины не меняются по ходу выполнения программы. Для удобства работы с такими величинами в Паскале предусмотрена отдельная категория — константы.

Для начала простой пример:

Пример 2.10. Расчет скорости тела при падении с башни

Program Piza;

var

G.V.H: real;

begin

G:=9.8; { Эта переменная всегда имеет одно значение и не изменяет его по ходу выполнения программы }

Write('Введите высоту башни:');

readln(H);

V:=Sqrt(2*G*H);

Writeln ('Скорость падения':20,V:7:3);

{ На выводимый текст выделяется 20 позиций }

readln

end.

Для наглядности в формуле вычисления скорости падения мы использовали переменную G, которая, однако, в действительности не менялась. И это неудивительно: она представляет ускорение сводного падения, которое, как известно, есть величина постоянная. Для того чтобы явно указать в программе, что величина G не может измениться, перенесем ее описание в отдельный раздел — раздел описания постоянных величин, или констант (см. следующий пример). Тем самым мы покажем Паскалю и человеку, который будет читать нашу программу, что эту величину нельзя менять по ходу выполнения программы. Она получает свое значение один раз и не может быть изменена.

Пример 2.11. Программа при использовании констант — более логична и читабельна

Program Piza2;

Const { Это раздел описания констант. Он находится перед разделом var}

G=9.8; { Тип константы определяется автоматически, по форме записи числа. В данном случае из-за наличия десятичной точки это тип real }