Арифметическое выражение представляет собой совокупность одного или нескольких арифметических констант, переменных, функций, соединенных знаками арифметических операций и круглыми скобками.
Следовательно, константа, переменная, функция являются частными случаями арифметического выражения.
При записи выражений необходимо выполнять следующие правила:
1. Все составные части выражения записываются в одну строку. Поднимать и опускать символы над строкой не разрешается.
2. Использовать в выражениях можно скобки только одного типа -круглые. Применение в выражениях фигурных и квадратных скобок запрещается, так как они имеют особое назначение.
3.Нельзя записывать последовательно два знака арифметических операций, их необходимо разделить круглой скобкой.
4. Вычисление выражений производится слева направо в соответствии со старшинством операций.
Старшинство операций в порядке убывания приоритета:
1. умножение, деление;
2. DIV, MOD;
3. сложение, вычитание.
Необходимый порядок вычислений в выражениях задается с помощью скобок. Выражения в скобках вычисляются первыми. Если выражений в скобках несколько и они вложены друг в друга, то вычисление начинается в самых внутренних скобках и далее последовательно переходит во внешние скобки.
|
|
Если аргумент функции задан в виде выражения, то сначала определяется значение этого выражения, а затем значение функции.
Если операции, следующие одна за другой, имеют одинаковое старшинство, то они выполняются последовательно в порядке их записи.
Логические выражения строятся из логических данных, логических операций и операций отношения.
В операциях отношения могут участвовать арифметические и логические выражения, а также символьные данные.
Результатом логического выражения является значение TRUE или FALSE.
При вычислении логических выражений принят следующий приоритет операций (по старшинству):
1) арифметические операции;
2) операции отношений;
3) логические операции.
При наличии скобок сначала выполняются действия в скобках (в первую очередь самые внутренние), а затем вне скобок. В круглые скобки обязательно заключаются части выражения, стоящие слева и справа от логических операций AND и OR.
Старшинство операций в порядке убывания приоритета:
1. Not
2. *, /, Div, Mod, And.
3. +, -, or.
4. <, <=, =, <>, >=, >, in.
Приоритет вычисления функций выше, чем приоритет выполнения операций. Операции, имеющие одинаковый приоритет выполняются слева на право в порядке следования выражений.
Тип результата выражения определяется последовательным вычислением типов результатов всех операций, выполненных при вычислении значения выражения, т.е. зависит от типа операндов (величин) участвующих в операции:
|
|
Пример: (TLR-LN(X)>2.5*KL)AND(ORD(S)<N1)
1) A1=LN(X) – REAL
2) A2=2.5*KL – REAL
3) A3=TLR-A1 – REAL
4) A4=A3>A2 – BOOLEAN
5) A5=ORD(S) – INTEGER
6) A6=A5<N1 – BOOLEAN
7) A4 AND A6 – BOOLEAN
При записи выражений:
- Нельзя опускать знак умножения.
Х:=2А+В;Х:=2*А+В; - Слева всегда должна стоять одиночная переменная.
Х-2*Z:=B+3-D*C;
X:= B+3-D*C+2*Z;
- В правой части последовательность операндов, соединенных знаками арифметических операций, должна записываться в одну строку.
Примеры записи математических выражений:
Математическая запись | Запись на Pascal |
x 2 – 7 x + 6 | Sqr(x) - 7 * x + 6 |
(Abs(x) - Abs(y)) / (1 + Abs(x * y)) | |
Ln(Abs((y - Sqrt(Abs(x))) * (x - y / (z + Sqr(x) / 4)))) | |
y:=(b*x+a)/(a*x+c); |
Примечания:
В Turbo Pascal нет операции возведения в степень. При необходимости вычисления , используют имеющиеся стандартные функции, например:
4.9 Объявление констант
Для записи программ в разделе описаний могут потребоваться объявления констант и переменных.
Константа – это идентификатор, обозначающий некоторую неизменную величину (значение данных) определенного типа. Константы должны, также как и переменные, объявляться в декларационной части программы (или процедуры) до момента своего использования в процессе вычислений.
Объявление констант имеет вид: ключевое слово Const, после которого записываются имена используемых констант и их значения. Имена и значения разделяются знаком равенства. Каждое определение константы заканчивается точкой с запятой.
Пример:
Const
Year = 2000; {целочисленные константы}
Time = 12.05; { вещественные константы}
A1= ‘a’; a2=’7’; { символьные константы}
STR =’язык программирования Турбо-Паскаль’; {строковые константы}
4.10 Объявление переменных
Переменной называют элемент программы, который предназначен для хранения, коррекции и передачи данных внутри нее.
Общий вид описания переменных:
Var
A, B, C..Z: T;
где A, B, C.. Z - имена переменных данного типа; Т - тип переменных.
В разделе объявления, который следует после зарезервированного слова Var, однотипные переменные могут перечисляться через запятую перед объявлением их типа.
Пример:
Var
a,b,c: real;
Fam, Name: string;
Flag: Boolean;
Summa, sila_toka: integer;
Тема 5 «Операторы для записи линейных процессов»
5.1 Оператор присваивания
Этот оператор относится к простым операторам, т.к. не содержит внутри себя других операторов.
Общий вид оператора:
V:= A;
Где V - имя переменной;
":= " - знак присваивания;
А - выражение.
Данный оператор вычисляет значение выражения А и присваивает полученное значение переменной V. Выражение в правой части может быть арифметическим, логическим и символьным. Поэтому при использовании оператора присваивания нужно следить за тем, чтобы переменная в левой части и выражение в правой части были одного и того же типа.
5.2 Оператор ввода числовых данных
Ввод числовых данных на Turbo Pascal выполняется оператором READ и READLN. Общий вид операторов следующий:
READ(a1, a2,..., an);
READLN(a1, a2,..., an);
READLN;
где а1, а2,..., аn - имена переменных, которым последовательно присваиваются вводимые с клавиатуры числовые значения.
При выполнении оператора READ вычислительная система приостанавливает работу и ждет ввода значений переменных, указанных в данном операторе. Если в операторе указано два и более переменных, то значения этих переменных при наборе на клавиатуре печатаются через пробел или <Enter>.
При выполнении оператора READLN(а1, а2,..., аn); вводятся значения всех переменных, а затем осуществляется переход на новую строку.
Допускается применение оператора ввода без параметров - READLN. Этот оператор выполняет переход на новую строку и приостанавливает работу компьютера до тех пор, пока пользователь не нажмет клавишу <Enter>.
Следует помнить, что значения переменных и их имена должны соответствовать одному и тому же типу.
|
|
5.3 Оператор вывода числовых данных
Вывод числовых данных выполняется операторами WRITE и WRITELN.
Общий вид операторов следующий:
WRITE(b1, b2,..., bn);
WRITELN (b1, b2,..., bn);
WRITELN;
Оператор Write выполняет вывод значений b1, b2,..., bn в одной строке. Оператор WriteLn с параметрами после вывода последнего значения осуществляет переход на новую строку. Оператор WriteLn без параметров осуществляет переход к новой строке.
Примеры:
1) Write(a, b); Write(c); - вывод а, b, с в одну строку;
2) Writeln(a, b); Write(c); - вывод а и b на одной строке, с - на следующей строке.
5.4 Вывод числовых данных с форматом и без формата
1. Вывод данных без формата.
В случае бесформатного вывода значения целого типа выводятся в виде последовательности цифр и знака; значение действительного числа выводится в форме с плавающей точкой (или экспоненциальной форме) с указанием мантиссы и порядка.
Пример:
A:= 27.3; write(‘A=’,a); на экран будет выведено: A= 2.7300000000Е-01
2. Вывод данных с форматом.
Формат вывода указывается после переменной через двоеточие -:L:D. Для целых чисел формат состоит из одной величины L, равной количеству цифр в числе и символа под знак. Для вещественных чисел формат состоит из двух величин, указывающих соответственно общее поле выводимого значения L и количество цифр в дробной части D. L включает позиции под знак, целую часть, десятичную точку и дробную часть числа.
Общий вид оператора следующий:
Write (v:L) - для целых переменных;
Write (v:L:D) - для вещественных переменных.
Здесь v - переменная, значение которой выводится на экран;
L - общая длина поля числа;
D - количество символов в дробной части числа.
Пример:
Var
a,b: Integer;
c: Real;
Begin
A:=25; B:=7; C:=2.09;
Writeln(A:5, B:3);
Writeln;
Write(C:7:2);
End.
После запуска программы на экране появится следующее
- - -25- -7
- - - 2.09
где ‘-‘ это пробел.
Рассмотрим примеры задач, где алгоритм решения является линейным.
Задача 1. Скорость первого автомобиля v 1 км/ч, второго — v 2 км/ч, расстояние между ними s км. Какое расстояние будет между ними через t ч, если автомобили движутся в разные стороны?
|
|
Согласно условию задачи искомое расстояние s 1= s +(v 1+ v 2) t (если автомобили изначально двигались в противоположные стороны) или s 2=|(v 1+ v 2) t-s| (если автомобили первоначально двигались навстречу друг другу).
Чтобы получить это решение, необходимо ввести исходные данные, присвоить переменным искомое значение и вывести его на печать.
Program Car;
Var V1, V2, T, S, S1, S2: Real;
Begin
Write('Введите скорости автомобилей, расстояние между ними и время движения:');
ReadLn(V1, V2, S, T);
S1:= S + (V1 + V2) * T;
S2:= Abs((V1 + V2) * T - S);