Воробьева А.П., Соппа М.С. - Система программирования Турбо Паскаль 7.0 (1092189), страница 6
Текст из файла (страница 6)
5. Вычислить арифметическое выражение
№ вар. | Запись в Турбо Паскале | Исходные данные |
1 | 18.75 - 16.4Е0 + 1/4 | - |
2 | frac(sqrt(a + b)) | a =0.84; b=0.16 |
3 | 3 DIV x + sqr(x) | x=2 |
4 | (xxt + 2.1)trunc(1/4) + 5 | x=36; t=5.287 |
5 | I + 3 – i sqr(i) | i= -3 |
6 | 4 + exp(trunc(3/2) ln(6.25E-1)) | - |
7 | 1 MOD 3 + 1 DIV 3 | - |
8 | 2 10 DIV 4 | - |
9 | x/(y x - y) + x/y + 1.2E1 | x=3; y= 1.5 |
10 | 19 DIV 4 + 1 MOD 4 | - |
11 | 100 (99 DIV 100) | - |
12 | m + k ((m + k) DIV n) - n | m =2; k=7; n=10 |
13 | 2 trunc(4/10) + 2E0 | - |
14 | 2.0 (1E1 / 5) | - |
15 | 19 DIV 4 + 5 MOD 4 | - |
16 | exp(1/3 ln(27)) + 2 | - |
Глава 4. Линейные вычислительные процессы
Линейный вычислительный процесс представляет собой последовательность действий, выполняемых один за другим. Основу программы линейного вычислительного процесса составляют оператор присваивания и операторы ввода-вывода данных.
4.1. Оператор присваивания
Оператор присваивания служит для вычисления выражения и записи результата в память компьютера.
Общий вид записи оператора:
<переменная> : = <выражение>;
Знак : = читается как «присвоить». Конец любого оператора в Турбо Паскале фиксируется точкой с запятой.
При выполнении оператора присваивания происходит замена текущего значения переменной, стоящей слева от знака присваивания, новым значением, полученным в результате вычисления выражения. Например, после выполнения оператора
k : = k+1;
текущее значение переменной k увеличится на 1.
При записи оператора присваивания необходимо строго следить за типами переменной и выражения:
а) если переменная слева - вещественного типа, то арифметическое выражение может быть как целым, так и вещественным. В случае целого арифметического выражения происходит преобразование его результата к вещественному типу. Например, при выполнении оператора
m : = 20 + 15 DIV 4;
вещественной переменной m будет присвоено значение 23.0;
б) если переменная слева - целого типа, то арифметическое выражение должно быть обязательно целым. Например, задано следующее описание типа переменных.
Var
a, b, c: real;
n: integer;
Тогда записать оператор присваивания в виде n := ab/c нельзя. В этом случае надо воспользоваться функцией TRUNC.
n := trunc(ab/c);
Примеры использования оператора присваивания
1. Записать оператор присваивания, который позволяет вычислить расстояние между двумя точками с координатами (x1, y1) и (x2, y2).
Ответ: d := sqrt(sqr(x1 - x2) + sqr(y1 - y2));
2. Записать последовательность операторов присваивания, обеспечивающих обмен значениями переменных x и y в памяти компьютера.
Ответ: c := x;
x := y;
y := c;
4.2. Операторы ввода – вывода
Операторы ввода – вывода данных служат для обмена информацией между внутренней памятью компьютера и внешними устройствами (монитор, клавиатура, принтер, накопители на жестких и гибких магнитных дисках и др.)
Информация, представленная на внешних устройствах, организуется в файлы. Файлы, предназначенные для хранения исходных данных, называются входными. Результаты вычислений (выходные данные) записываются в выходные файлы. В Турбо Паскале определены стандартные устройства ввода (клавиатура) и вывода (экран монитора), для которых имена стандартных файлов не указываются (используются по умолчанию).
Операторы ввода исходных данных с клавиатуры
Общий вид записи операторов:
READ(<список переменных>);
READLN(<список переменных>);
Переменные в списке перечисляются через запятую.
Операторы ввода обеспечивают чтение данных с клавиатуры, преобразование из внешнего представления во внутреннее и присваивание их значений переменным, указанным в списке.
Оператор READLN отличается от оператора READ лишь тем, что после окончания чтения данных из списка, указанного в операторе READLN, необходимо перевести курсор к чтению следующей строки.
При вводе с клавиатуры значения данных в строке отделяются друг от друга одним или несколькими пробелами. После набора данных в строке необходимо нажать клавишу <ENTER>.
Пример. Пусть в задаче определены следующие исходные данные: a = 4; x = 3,8; y = 1,2104 ; k = 5; m = 74.
Операторы ввода
read(a, x,y);
read(k,m);
вызывают чтение данных с клавиатуры, набранных следующим образом:
4 3.8 1.2E4 <Enter>
5 74 <Enter>.
Операторы вывода данных на экран
Общий вид записи операторов:
WRITE(<список выражений>);
WRITELN(<список выражений>);
Выражения в списке перечисляются через запятую. В качестве простейших выражений могут быть константы, переменные, символы, строки.
Операторы вывода преобразуют вычисленные значения выражений, указанных в списке, из внутреннего представления во внешнее и выводят эти значения на экран монитора.
Оператор WRITELN отличается от оператора WRITE лишь тем, что после вывода значения последнего выражения из списка осуществляется автоматический переход курсора к началу следующей строки.
Например, операторы
writeln(‘Выходные данные’);
writeln(‘К =’, 8+5, ‘ y =’, 7/10);
выводят на экран результаты в следующем виде:
Выходные данные
K =13 y =7.0000000000E –01
Управление выводом данных
При стандартной форме вывода вещественные числа отображаются на экране с порядком. Мантисса выводится в нормализованном виде - с одной значащей цифрой в целой части и с десятью цифрами в дробной части. На порядок отводится четыре позиции: первая позиция - под букву Е, вторая позиция - под знак порядка, третья и четвертая позиции – под цифры порядка.
Если программиста не устраивает стандартная форма вывода, то он может использовать форматированный вывод, предусмотренный в Турбо Паскале. При форматированном выводе чисел используются два формата:
а) ширина поля, определяющая число позиций отводимых для вывода всего числа, включая целую, дробную части, знак и десятичную точку;
б) точность представления вещественного числа, определяющая число позиций в дробной части.
Вещественные числа с указанием формата всегда выводятся в десятичной форме.
Для целых чисел используется только формат ширины поля.
В операторах вывода форматы записываются после выражения и отделяются друг от друга двоеточием.
Например, при записи оператора
writeln(‘K =’, 8+5:3, ‘ y =’, 7/10:5:1);
результаты отображаются на экране в следующем виде:
K = 13 y = 0.7
В приведенном примере форматы 3 и 5 задают ширину поля, формат 1 – точность выводимого числа.
Вывод данных на печать
Для организации вывода данных на печать в Турбо Паскале необходимо вызвать стандартный модуль PRINTER, в котором описан внешний файл печати с именем LST. Для вызова модуля в программе после ее заголовка записывается предложение использования модулей:
USES PRINTER;
Файл LST является нестандартным, поэтому его имя должно быть непосредственно указано в операторе вывода.
Например, оператор
writeln(LST, ‘K =’, 8+5:3, ‘ y =’, 7/10:5:1);
выведет результаты на печать в том же виде, что и на экран монитора.
4.3. Структура основной программы
Программа в Турбо Паскале включает в себя заголовок, раздел описаний и раздел операторов. После заголовка может стоять предложение использования модулей.
Раздел операторов оформляется в виде составного оператора. Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки, обозначаемые служебными словами BEGIN…END.
Конец любого предложения на Паскале (описание, оператор) фиксируется точкой с запятой. Программа всегда заканчивается точкой.
Общий вид основной программы
Program <имя>; Заголовок программы
Uses Printer; Вызов модуля
Var
<переменная>,…,<переменная>: <тип>; Раздел описания
…………………………………………… переменных
<переменная>,…,<переменная>: <тип>;
Begin
<оператор>; Раздел
…………… операторов
<оператор>;
End.
Предложение Uses Printer может отсутствовать, если не требуется вывод данных на печать.
В программу могут быть включены комментарии – тексты, поясняющие программу. Комментарии заключаются в фигурные скобки и записываются в любом месте программы.
Пример линейной программы
Составить программу вычисления площади треугольника по формуле:
Program LVP;
Uses Printrer;
Var
a, b, c, p, S: real;
Begin
writeln(‘Введите исходные данные’);
read(a, b, c);
p := (a + b + c) / 2;
S := sqrt(p (p - a) (p - b) (p - c));
{Вывод на экран}
writeln(‘Площадь треугольника S =’, S:5:2);
{Вывод на печать}
writeln(LST, ‘Площадь треугольника S =’, S:5:2);
End.
При выполнении оператора READ программа останавливается и переходит в режим ожидания набора исходных данных с клавиатуры. В этот момент надо набрать на клавиатуре:
1 2 0.5 <Enter>
После нажатия клавиши <Enter> программа продолжает работу и выведет результат сначала на экран, а затем на печать в следующем виде:
Площадь треугольника S = 3.87
4.4. Контрольные задания
1. Записать в Турбо Паскале операторы присваивания