Общий вид записи операторов
Памятка по выполнению лабораторных работ
Арифметические выражения (АВ) строятся из операндов, которыми могут быть константы, переменные и стандартные функции. В АВ также входят арифметические операции и круглые скобки. В языке Паскаль определено 6 арифметических операций, перечислим их в соответствии с приоритетом, то есть, старшинством. Операции с одинаковым приоритетом равноправны между собой и выполняются слева направо, как и в математике.
Приоритет | Знак операции | Описание операции |
* | умножение | |
/ | деление | |
div | деление 2 целых значений с отбрасыванием остатка | |
mod | взятие остатка от деления 2 целых значений | |
+ | сложение | |
- | вычитание |
Операции div и mod определены только для целочисленных операндов. Приведем пример их использования:
var y,c,n:integer;
. . .
y:=2006;
c:=y div 100;
n:=y mod 100;
Здесь переменная c получит значение 20, а n – значение 6.
Примеры арифметических выражений мы приведем после рассмотрения стандартных функций языка Паскаль.
2. Стандартные функции служат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся в стандартной библиотеке Паскаля – файле с именем TURBO.TPL. Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенный в круглые скобки. Если аргументов несколько, они разделяются запятыми. Информацию об основных стандартных функциях удобно представить в виде таблицы:
Математическая запись | Запись на языке Турбо Паскаль | Пояснение | Тип аргумента и результата функции |
|x| | abs(x) | модуль аргумента x | Integer или Real |
x2 | sqr(x) | квадрат аргумента x | аргумент – I или R, результат - R |
sin x cos x arctg x | sin(x) cos(x) arctan(x) | Остальные тригонометрические функции выражаются через эти | аргумент – I или R, результат – R |
ex ln x | exp(x) ln(x) | экспонента и натуральный логарифм | аргумент - I или R, результат – R |
![]() | sqrt(x) | квадратный корень от аргумента x | аргумент - I или R, результат – R |
p | pi | функция без аргументов, вернет число p | R |
trunc(x) | функция отбрасывает дробную часть аргумента, аргумент не округляется | аргумент R, результат I | |
Frac(x) | функция выделяет дробную часть своего аргумента | R | |
Round (x) | округление вещественного числа до ближайшего целого | аргумент R, результат I |
Здесь x обозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа (см. ниже), либо соответствующий по типу результат, вычисленный другой стандартной функцией. Функция pi не имеет аргументов и возвращает число π.
Для тригонометрических функций аргумент x измеряется в радианах. Гиперболические функции записываются с применением экспоненты, например:
Sh (x)=(exp (x)-exp (-x)) /2
Приведем примеры вычисления некоторых математических функций, не входящих в библиотеку:
Примеры арифметических выражений:
1) возвести x в пятую степень
x*x*x*x*x или sqr(x)*sqr(x)*x или sqr(sqr(x))*x, последнее показывает, что результаты одних функций могут быть аргументами других – это называют вложением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.
2) возвести величину a в произвольную степень x
Так как в Паскале нет функции возведения в произвольную степень, воспользуемся формулой ax=ex*ln a
a:=2.5; x:=0.25;
ax:=exp(x*ln(a));
обратите внимание, что все скобки в выражении должны быть парными. Или:
= exp(1/3*ln(x)).
3) вычислить sin2x => sqr(sin(x)). Сравните с sin x2 => sin(sqr(x)).
Нельзя писать sin*x или sin x, после имени функции может следовать только аргумент в круглых скобках.
4) вычислить k=tg(t). Т.к. функции тангенса в Паскале нет, пишем k:=sin(t)/cos(t);
При необходимости изменить обычное старшинство операций в записи выражения используются круглые скобки. Пример:
вычислить . Правильная запись: y:=(a+b)/2; Неправильно y:=a+b/2, т.к. это означает
.
5) В записи выражений нельзя пропускать знак *, как часто делается в математике.
b2-4ac -> sqr(b)-4*a*c
Тип выражения определяется старшим из типов входящих в него операндов (т.е. стандартных функций, переменных, констант). Старшинство типов мы можем определить по таблице, как мы помним, в первой строке таблицы – самый младший тип. Пример:
var i,j:integer;
f:real;
. . .
i+4*j целый тип выражения, можно записать результат в целую переменную
f+i*0.5 вещественный, результат пишется в вещественную переменную
Оператор вывода
Общий вид записи операторов
write(список выражений и/или переменных);
writeln(список выражений и/или переменных);
Элементы списка перечисляются через запятую. В список могут входить также строки в апострофах ' '
Работа операторов
Элементы списка выводятся в пользовательское окно программы. Вещественные значения выводятся в экспоненциальной форме (с буквой E). Строки выводятся "как есть". После вывода работа программы продолжается со следующего оператора.
Оператор writeln отличается от write лишь тем, что после вывода значения последнего элемента списка выполняется перевод курсора на следующую строку экрана.
Примеры:
1) Нужно дать пользователю возможность ввести с клавиатуры число, затем программа возведет это число в квадрат и выведет результат на экран.
var a,a2:integer;
. . . .
writeln ('Введите целое число:'); {это приглашение к вводу!}
read (a);
a2:=sqr(a);
writeln ('Квадрат числа=',a2);
Если ввести a=2, на экране будет напечатано
Квадрат числа=4
| ---курсор на следующей строке
После вывода результата выполнение программы продолжится, а если оператор writeln был в ней последним, то и завершится. Чтобы пользователь успел прочитать результат, следует в конце программы добавить оператор
readln;
который будет ждать нажатия клавиши Enter.
2) Нужно вывести результаты решения квадратного уравнения x1=1.5 и x2=2.5
write ('x1=',x1,'_x2=',x2);
-пробел здесь нужен, чтоб значение x1 не слилось со строкой 'x2='
на экране будет напечатано:
x1= 1.5000000000E+00 x2= 2.5000000000E+00|
-курсор остался в конце строки, т.к. использован write!
Вещественные числа читать в подобной форме неудобно, для их вывода используйте решение из следующего раздела.
Управление выводом данных
В операторе write или writeln вещественное значение (а также целое или строковое) зачастую удобнее записывать в виде:
переменная:ширина:точность
ширина – целое положительное число, определяет, сколько экранных позиций отводится для вывода всего числа. Определена для любых чисел и строк.
точность – целое положительное число, определяет, сколько цифр из ширины отводится на вывод дробной части числа. Определена только для вещественных чисел. Не учитывает позицию десятичной точки. Разумные значения точности – от 0 до ширина-2 включительно. Недопустимые значения ширины и точности не будут учтены при выводе.
Пример: печатаем значения переменных
var x1,p:real;
i:integer;
. . . .
x1:=2.5; p:=-3.175; i:=2;
writeln ('x1=',x1:8:2,'_p=',p:9:4);
write ('I=','_':5,i:2);
На экране будет напечатано:
x1=____2.50_p=__-3.1750
I=______2
_ везде обозначает пробел