Выражения и стандартные функции



Действия, которые должен выполнить ПК, указываются в выражениях. Выражение задает порядок выполнения действий над данными и состоит из операндов, круглых скобок и знаков операций. Операнды – это константы, переменные и функции языка. Круглые скобки используются для изменения последовательности выполнения операций в выражении. Операции – это действия, выполняемые над операндами. В арифметических выражениях используются арифметические операции, представленные в Таблице 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!