Выражения и стандартные функции
Действия, которые должен выполнить ПК, указываются в выражениях. Выражение задает порядок выполнения действий над данными и состоит из операндов, круглых скобок и знаков операций. Операнды – это константы, переменные и функции языка. Круглые скобки используются для изменения последовательности выполнения операций в выражении. Операции – это действия, выполняемые над операндами. В арифметических выражениях используются арифметические операции, представленные в Таблице 2.
Таблица 2 – Используемые арифметические операции
Операция | Действие | Тип операндов | Тип результата |
+ | Сложение | Целый действительный | Целый действительный |
- | Вычитание | -“- | -“- |
* | Умножение | -“- | -“- |
/ | Деление | -“- | -“- |
Div | Целочисленное деление | Целый | Целый |
Mod | Остаток от деления | -“- | -“- |
Результат вычисления выражения заносится в переменную с помощью оператора присваивания: Z := (SUMMA+5) * D;.
Рекомендуется следить за тем, чтобы тип переменной совпадал с типом выражения. При несовпадении типов ПК попытается преобразовать тип результата вычисления арифметического выражения к типу переменной. Если переменная действительного типа (REAL), а выражение целого типа (INTEGER), то оператор присваивания выполнится успешно. Если переменная целого типа (INTEGER), а выражение действительного типа (REAL), ПК выведет сообщение об ошибке преобразования типа.
|
|
Пример 1. Записать оператордля вычисления выражения:
Y = a4 + b3.
Изначально в Pascal отсутствовала операция возведения в степень, поэтому вместо нее чаще всего использовалось многократное умножение операндов на свое собственное значение:
y:=a * a * а * а + b * b * b.
Надо иметь в виду, что в современных версиях языка, например, таких, как PascalABC, имеется встроенная функция возведения в степень, которая представлена в Таблице 3.
В выражениях могут использоваться встроенные функции. Некоторые наиболее часто используемые функции приведены в Таблице 3.
Если операнды выражений содержат другие функции, необходимо использовать известные математические соотношения. Например, для вычисления логарифма с произвольным основанием a используется соотношение
;
- для возведения положительного числа x в действительную степень a используется соотношение
.
Кроме того, в этом случае, как и выше, можно использовать функцию POWER (см. Таблицу 3).
В современных версиях Pascal (PascalABC) существуют и другие встроенные функции, которые отсутствуют в исходной версии языка. Среди часто используемых функций к таким можно отнести функцию тангенса (см. Таблицу 3).
С другими новыми нестандартными встроенными функциями PascalABC можно познакомиться, воспользовавшись системой помощи, имеющейся в программе, или на сайте программы и её поддержки (www.pascalabc.net).
|
|
Таблица 3 – Основные функции алгоритмического языка Рascal
Математическая запись | Действие | Запись на языке Рascal | Пример |
|х| | Вычисление абсолютного значения х | ABS(X) | ABS(-4)=4 |
х2 | Вычисление квадрата х | SQR(X) | SQR(5)=25 |
Вычисление квадратного корня из х | SQRT(X) | SQRT(25)=5 | |
ех | Вычисление экспоненты х | EXP(X) | EXP(1)=2.7183… |
lnx | Вычисление натурального логарифма | LN(X) | LN(EXP(1))=1 |
sinx | Вычисление синуса х | SIN(X) | SIN(PI/6)=0.5 |
cosx | Вычисление косинуса х | COS(X) | COS(PI/3)=0.5 |
tgx | Вычисление тангенса x (PascalABC) | TAN(X) | TAN(0.42)= |
arctgx | Вычисление арктангенса х | ARCTAN(X) | ARCTAN(1)= PI/4=0.7854 |
xy | Вычисление значения вещественного числа x в вещественной степени y (PascalABC) | POWER(X,Y) | POWER(2.0,3.0)=8.00 |
Округление х до целого | ROUND(X) | ROUND(2.5)=3 | |
Вычисление целой части х, результат – действительный | INT(X) | INT(2.5)=2.0 | |
Вычисление целой части х, результат – целый | TRUNC(X) | TRUNC(2.5)=2 | |
Вычисление дробной части х | FRAC(X) | FRAC(2.5)=0.5 | |
True, если х – нечетный; False, если х – четный | ODD(X) | ODD(3)=TRUE |
Пример 2. Вычислить значение выражения:
|
|
,
при a = 0,.56, b = 2,734, x = 1,8·10–3, y = 0,35 × 102.
Так как функция arcsin в языке отсутствует, для ее вычисления используем известное соотношение:
.
Для уменьшения вероятности ошибок и упрощения отладки программы запишем заданное выражение в виде нескольких операторов присваивания:
A := 0.56; B := -2.734; X := 1.8e-3; Y := 0.35e2;
FI := (EXP(B*LN(Y)) + ABS(B) – EXP(LN(A)/3));
FI := FI*(EXP(A) - SQRT(A) + COS(Y));
FI := FI/(LN(A)/LN(10) - X*X* LN(Y) + ARCTAN(A/SQRT(1-A*A)));
В этих операторах переменные А, В, Х, Yявляются исходными данными, а переменная FI– результатом вычислений. Наиболее часто численные значения исходных данных вводятся с клавиатуры, а результаты вычислений выводятся на экран дисплея. Такие действия выполняют операторы ввода и вывода.
Операторы ввода данных
Дляввода данныхприменяют операторы READ или READLN, которые имеют одинаковый формат записи:
READ (список ввода);
В операторе после ключевого слова READ следует заключенный в круглые скобки список переменных, переменные друг от друга отделяются запятыми. Оператор завершается точкой с запятой. Например:
VAR A,B,C: REAL;
READ (A,B,C);.
После запуска программы на выполнение осуществляется ввод данных, например 0.5 6.25 -2.5E-2.
При выполнении оператораREAD программа приостанавливает свои действия в ожидании ввода значений, которые по очереди в соответствии с приведенным в операторе списком будут присвоены переменным. Значения переменных могут вводиться с клавиатуры во время исполнения программы или читаться из файла. При вводе числовых значений (типы INTEGER, REAL, BYTE) их отделяют друг от друга как минимум одним пробелом или размещают в разных строках. В пределах одного числа пробелы между цифрами недопустимы. Тип вводимых значений должен соответствовать типу переменных, которым они будут присвоены. В Паскале допускается ввод данных типов INTEGER, REAL, CHAR, BYTE.
|
|
Оператор READLN по своим действиям аналогичен оператору READ, за исключением того, что по окончании чтения значения последней переменной из списка ввода он дает указание на переход к началу новой строки для чтения данных последующими операторами READ илиREADLN. Когда оператор READLN может быть применен и без списка переменных, тогда будет произведен переход на новую строку. Например:
VAR A,B: REAL;
I,K: INTEGER;
........................
READ (A, B);
READLN; или READLN (A, B);
READ (I, K); READ (I, K);
После запуска программы на выполнение данные для ввода должны быть расположены следующим образом:
1.5 7.48
6 -1
Операторы вывода данных
Вывод данныхорганизуется операторамиWRITEиWRITELN, форматзаписи которых имеет вид:WRITE (список вывода);.
В списке вывода приводят разделенные запятыми переменные и выражения (типа INTEGER, REAL, CHAR и BOOLEAN), заключенные в кавычки строки символов. Например:
WRITE (DAY[3], Alfa/Sin(X), LETTERS, ‘Результат =’);
По умолчанию в строке вывода для данных целого типа отводится 13 позиций (мест для размещения цифр и знака “±” числа). Вещественные числа выводятся в экспоненциальном виде с плавающей точкой по формату ±#.######Е±## (знаком # отображено место для цифр мантиссы и степени числа). Формат выводимых данных может быть изменен явным указанием числа отводимых позиций. Для этого после идентификаторов переменных (выражений, констант) в списке вывода указывается отведенная ширина поля для выводимой информации и точность представления числа (только для вещественных чисел). Эти две величины должны быть целыми и положительными, отделяться от имен переменных (выражений, констант) и друг от друга двоеточием. Они соответственно указывают количество позиций в строке, отводимых под значение переменной (выражения, константы), и количество мест – под цифры дробной части числа. Например, WRITE (‘I=’, I:3, ‘K=’, K:4:2); –на экране появитсяI=-12 K=3.25
В отличие отWRITE, оператор WRITELN автоматически организует перевод курсора на новую строку. При его использовании последующий оператор WRITEилиWRITELN, если он присутствует в программе, начинает вывод информации с новой строки. Оператор WRITELNможет применяться и без списка вывода, что приведет к переходу курсора на новую строку (если следует после WRITE) или к пропуску пустой строки (если следует после WRITELN). Например, после выполнения операторов:
WRITELN (‘ЗАДАЧА’);
WRITELN (‘I=’, I:3, ‘K=’, K:4:2);
WRITELN (‘Z=’, Z:4:1);
WRITELN (‘Y=’, Y);
на экране появится следующая информация:
ЗАДАЧА
I=-12 K= 3.25
Z=-9.5
Y=3.7800E+02.
Структура программы
Программа вПаскале структурно состоит из заголовка, области описания данных, разделов процедур и функций, а также операторов, составляющих ее тело:
PROGRAM имя;
CONST имя константы = значение константы;
TYPE имя типа = значение констант типа;
VAR имя [,имя]… : тип данных;
PROCEDURE имя процедуры [список формальных параметров с указанием типа];
[Блок процедуры];
FUNCTION имя функции [список формальных параметров с
указанием типа] : тип значения функции;
[Блок функции];
BEGIN {начало тела программы}
оператор [; оператор]
END.
В заголовке программы после служебного словаPROGRAM указывают ее имя, образованное по тем же правилам, что и имя переменных. Заголовок оформляется в виде отдельной строки и оканчивается “;”.
В обязательном порядке указывается тип всех используемых в программе данных.Область описания данных включает декларацию констант (CONST) и переменных (VAR). Каждый из них, а также операторы внутри разделов отделяются друг от друга символом “;”. Если в программе данные каких-либо типов отсутствуют, то и соответствующий раздел описания данных не приводится.
Если в программе используются константы, имеющие достаточно громоздкую запись, либо сменные константы (для разных вариантов программы), то такие константы целесообразно описать в разделе CONST, например: CONST N=100;.
Следует отметить, что в разделеCONST используется знак равенства “=”, а не присваивания “:=”.
Все переменные, встречающиеся в программе, должны быть описаны в разделе VAR, где после имени переменной (или разделенных запятыми нескольких имен) и двоеточия приводится одно из служебных слов: INTEGER (целочисленный),REAL(вещественный), BOOLEAN (логический), CHAR (символьный).
За областью описания данных следует раздел операторов. Он начинается с ключевого словаBEGIN и заканчивается словом END, после которого ставится точка. Программа при отсутствии явных команд, изменяющих последовательность ее действий, выполняется построчно по мере следования операторов (слева-направо и сверху-вниз). В каждой строке программы может присутствовать несколько операторов, отделенных друг от друга точкой с запятой “;”. ПередEND (после последнего используемого оператора) разделитель операторов “;”, как правило, не ставят, но его наличие не является ошибкой.
Раздел операторов должен присутствовать всегда. Остальные разделы могут отсутствовать.
Дата добавления: 2018-05-31; просмотров: 351; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!