Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_1_11.doc
Скачиваний:
1
Добавлен:
27.11.2019
Размер:
208.9 Кб
Скачать

Часть III. Изучение процедур ввода/вывода

Рекомендуемое время

5 Минут

Вводить данные в Паскале можно при помощи двух стандартных процедур — Read и ReadLn. Процедуры используются следующим образом: сначала указывается имя процедуры, а затем в круглых скобках указывается список переменных, значения которых необходимо ввести. Переменные отделяются друг от друга запятыми.

Пример:

Read(x, y, z);

ReadLn(a, b, c);

При выполнении этих процедур вводимые значения отделяются друг от друга одним или несколькими пробелами или переходом на следующую строку. В отличие от Read выполнение процедуры ReadLn завершается только после нажатия на клавишу «возврат каретки».

Рассмотрим эту разницу на примере. При выполнении следующего фрагмента программы

Read(a, b);

Read(c);

и при вводе данных

4 5 1

переменной а присвоится значение 4, переменной b5, а переменной с1. В случае же фрагмента

ReadLn(a, b);

ReadLn(c);

при вводе данных таким же образом переменной а присвоится значение 4, переменной b5. После этого ожидается ввод значения с на новой строке. Значение 1 будет проигнорировано.

Часто процедура Readln без параметров ставится в конце программы для задержки окна ввода/вывода на экране до нажатия «возврат каретки». Однако если предыдущий ввод запрашивался процедурой Read, задержки не будет.

Вывод данных обеспечивается двумя стандартными процедурами Write и WriteLn. В скобках после имени процедуры могут быть записаны константы, выражения, переменные.

Пример:

Write(‘Корень уравнения= ', X);

Writeln(‘Сумма =’,Sum,’ Среднее значение=’,Sum/n);

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

WriteLn(X:n:m);

где Х — переменная вещественного типа, а n и m — выражения целого типа, характеризующие ширину поля вывода. Выражение n означает, что все число будет выравниваться по правому краю поля из n символов (недостающие символы слева заменяются пробелами), выражение m означает, что число будет выводиться с m знаками после запятой. При этом будет происходить округление абсолютной величины числа.

Для вывода целых чисел можно использовать форму:

WriteLn(a:n);

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

Отличие WriteLn от Write состоит в том, что после вывода всех значений, перечисленных в скобках, производится переход на следующую строку.

Алгоритм, в котором все действия выполняются последовательно одно за другим, называется линейным. Приведем пример программы, в которой реализуем линейный алгоритм.

Пример.

Условие задачи:

Какого роста цен за год можно ожидать, если правительство гарантирует, что инфляция в новом году составит р%?

Если за каждый месяц цены возрастут в 1 + р/100 раз, то за год рост цен составит (1+р/100)12 раз или прирост в процентах

Поясним формулу. За один месяц цены возрастут на р/100 и составят 1 + р/100. Для того, чтобы сократить изложение, обозначим эту величину за Х.

Х = 1 + р/100

Единица — это условная цена единица товара. В следующем месяце цены возрастут на тот же процент, но уже от имеющихся цен на остаток месяца: Х* р/100. Цены будут иметь значение Х + Х * р/100 или Х*(1 + р/100).

Х*(1 + р.100) = Х2

В следующем (третьем месяце) цены будут иметь значение:

Х2 + Х2*р/100 = Х2*(1+р/100) = Х3

И так далее. В конце 12-го месяца года цена единицы товара будет равна Х12 или(1 + р/100)12. Очевидно, что рост цены будет равен (1 + р/100)12 – 1.

Чтобы получить прирост в процентах, необходимо умножить на 100%.

Схема алгоритма:

Программа на Турбо Паскале в этом случае может иметь следующий вид:

Program Procent; {Заголовок программы}

Var a, p, S: Real; {Описание переменных}

{p — процент инфляции в месяц.

a — кратность роста цен. S — рост цен за год в процентах}

Begin {Начало операторной части }

Write(‘Введите процент месячной инфляции’); ReadLn(p);

{Вывод подсказки ввода. Ввод переменной р}

a := Exp(Ln(1+p/100)*12); {Оператор присваивания}

{Так как в Паскале нет возведения в степень, используется тождество:

a^b = exp(Ln(a)*b)}

S := (a – 1) * 100; {Оператор присваивания}

Writeln(‘Годовой прирост цен составит ‘, a:10:2,

‘ раз, или ’S:10:2, ‘ процентов’); {Процедура вывода}

End. {Конец программы}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]