Предисловие дорогие друзья !
Вид материала | Документы |
Содержание§7. Арифметические выражения. |
- К. Бальмонт Дорогие друзья, сегодня мы в гостях у замечательного русского поэта Константина, 164.76kb.
- Медникова Надежда Александровна учитель начальных классов моу «Уинская сош» Пермский, 91.48kb.
- И в шутку и всерьез Ведущий Добрый день, дорогие друзья! Вот и пришла весна, вот, 339.91kb.
- Играют 2 команды. Вопросы викторины, 53.15kb.
- Летние каникулы в праге, 322.16kb.
- Мои дорогие литературные друзья, 136.81kb.
- Ведущий: Дорогие, друзья! Разрешите поздравить вас с большим и дорогим для всех праздником, 124.29kb.
- Отчет о конференции 17-18 апреля дорогие друзья!, 182.44kb.
- Дорогие друзья и единомышленники, 134.05kb.
- Сценарий для 7-8 классов «Старая сказка на новый лад», 52.44kb.
§7. Арифметические выражения.
В русском языке слово «выражение» имеет несколько значений. Например, внешний вид, оборот речи, формула, отражающая математические отношения. Именно последнее значение этого слова используется в языке Паскаль. Только вместо слова «формула» говорят «выражение».
В языке Паскаль по сравнению с математическим понятием выражение имеет свои особенности.
Выражение строится из констант, переменных, функций и операций над ними. допускается использование круглых скобок. Частным случаем выражения являются просто константа, переменная или функция.
По типу входящих в него значений, выражения могут быть различными: арифметическими, логическими, строковыми.
Рассмотрим построение арифметических выражений.
В языке Паскаль не для всех математических операций есть такие же обозначения. Например, х, х2, нельзя записать на языке Паскаль. Для реализации подобных операций необходим алгоритм решения и, соответственно, программа. Для облегчения работы программиста наиболее распространённые алгоритмы разработаны фирмой-производителем языка Паскаль и поставляются вместе с языком. Они хранятся в специальной библиотеке и называются стандартными или встроенными функциями, некоторые приведены ниже, а с остальными можно познакомиться в приложении 5.
Abs(x) Âû÷èñëåíèå модуля (àáñîëþòíîãî çíà÷åíèÿ) õ (х);
Sqr(x) Âû÷èñëåíèå êâàäðàòà õ (х2);
Sqrt(x) Âû÷èñëåíèå êâàäðàòíîãî êîðíÿ èç õ ().
Программисту достаточно знать, как записывается функция и аргумент. Аргументы большинства стандартных функций записываются в скобках, чтобы транслятор языка Паскаль мог распознать имя вызываемой функции. Встроенные функции можно использовать в выражениях. Аргументом может быть константа, переменная или выражение, например:
SQRT(SQR(B)-4*A*C)+ABS(P+X).
 ìàòåìàòèêå ñóùåñòâóåò áîëüøîå êîëè÷åñòâî îïåðàöèé íàä чèñëàìè и другими объектами. Ïîñêîëüêó äëÿ áîëüøèíñòâà çíàêîâ òàêèõ îïåðàöèé не хватает символов в алфавите ÿçûêà Ïàñêàëь, то âûíóæäåíû îäèí è òîò æå çíàê îïåðàöèè, ñêàæåì «+» èëè «—», èñïîëüçîâàòü äîâîëüíî øèðîêî, óïîòðåáëÿÿ åãî â ðàçíûõ çíà÷åíèÿõ, èëè èñïîëüçîâàòü àíãëèéñêîå íàïèñàíèå îïåðàöèè, íàïðèìåð, not, and, or. Поэтому рåçóëüòàò âûïîëíеíèÿ îïåðàöèè à + b çàâèñèò îò òèïîâ à è b!
Операции, которые можно производить над числовыми данными, целыми и вещественными, следующие:
1) Умножение: А * В, А и В могут быть целыми и вещественными. В зависимости от типа сомножителей тип результата может быть следующим:
А и В — целые, результат тоже целого типа.
Если один из сомножителей, или оба сразу, вещественные числа, то и результат вещественное число.
2) Деление А/В. Какими бы ни были делимое и делитель, целыми или вещественными, результат всегда вещественное число.
3) Сложение: А + В. Зависимость типов, как и при умножении.
4) Вычитание: А - В. Зависимость типов, как и при умножении.
5) Целочисленное деление: A DIV B. Эта операция определяет неполное частное от деления А на В. Тип делимого, делителя и результата целочисленный.
6) Нахождение остатка при целочисленном делении: A МОD B. Эта операция определяет остаток от деления А на В. Тип делимого, делителя и результата целочисленный.
При определении типа результата необходимо быть очень внимательным. Например, если описаны переменные
var a :shortint; b:integer; c:longint; x:real;
то тип результата будет следующим
a + b Òèï: integer
a + b + c Òèï: longint
a + b + c + x Òèï: real
a * x Òèï: real
c mod b Òèï: longint
x/a Òèï: real
Заметим, что в Паскале нет операции возведения в степень. Возведение в целую степень рекомендуется производить путём многократного умножения основания степени и использования функции возведения в квадрат SQR(X).
Как и в математике, при вычислении значения выражения в Паскале учитывается приоритет операции. сначала выполняются операции с наименьшим приоритетом. Если выражение содержит несколько операций одного приоритета, то они выполняются слева направо в том порядке, как следуют в выражении. Для изменения порядка выполнения операций используются круглые скобки.
 Òóðáî Ïàñêàëå самыми первыми выполняются âñòðîåííûå ôóíêöèè.
Следующим по приоритетности следует îïåðàтор ëîãè÷åñêîãî îòðèöàíèÿ not. Более подробно об этом операторе (как и о AND и OR) мы поговорим позднее.
На третьем месте стоят операции:
* — умножение,
/ — деление,
div — целочисленное деление (нахождение неполного частного),
mod — нахождение остатка при целочисленном деление;
and — операция логического умножения (логическое И).
На четвёртом месте стоят îïåðàöèè:
+ — сложение,
— — вычитание;
or — операция логического сложения (логическое ИЛИ).
При составлении выражений неоходимо выполнять следующие правила:
1. Записывать всё выражение в строку. Двухэтажные выражения, а также верхние и нижние индексы не допускаются. Например, аðèôìåòè÷åñêîå âûðàæåíèå çàïèñûâàåòñÿ òàê:
(A*Sqrt(Sqr(B*C+A))+Sqr(D))/(2*B+D).
2. Использовать только круглые скобки. В правильно записанном выражении число открывающих скобок всегда равно числу закрывающих.
3. Нельзя записывать подряд два знака операций. Например, выражение А+В/-С следует записать в виде А+В/(-С).
4. Знаки операций указываются явно. В математике можно опускать знак умножения. На языке Паскаль этого делать нельзя. Выражение 2ab+(c+d)(c-d) следует записывать так: 2*a*b+(c+d)*(c-d).
5. При записи дробей, если числитель и знаменатель состоят из суммы или произведения нескольких величин или выражений, то числитель и знаменатель необходимо брать в скобки. Например:
нужно записывать так (a+b)/(c-d);
нужно записывать так (sqr(a-b)-2*a)/(a*b).
 ìàòåìàòèêå èìååòñÿ ìíîãî ïàð ïðîòèâîïîëîæíûõ ïî ñâîåìó äåéñòâèþ îïåðàöèé, òàêèõ êàê * и /, + и — è ò.ï., äëÿ êîòîðûõ ñïðàâåäëèâû ñëåäóþùèå ðàâåíñòâà:
(õ/à)*à = õ
b+a—a = b
 ñèëó òîãî, ÷òî â ÝÂÌ ÷èñëà ïðåäñòàâëåíû â äâîè÷íîì âèäå, ñîâåðøåííî íå î÷åâèäíî, ÷òî ïðèâåäåííûå âûøå òðèâèàëüíûå ðàâåíñòâà áóäóò âûïîëíÿòьñÿ è âíóòðè ÏÝÂÌ.
Вопросы и задания.
- Каковы правила формирования выражений в Паскале?
- Сколько операций выполняется при вычислении выражения
(х+1/2)*(у+7/10)-3/4?
Как сократить число операций?
- Почему в языке Паскаль аргумент стандартной функции всегда записывается в скобках?
- Почему знак умножения всегда выписывается явно?
- Запишите на языке Паскаль следующие формулы:
а) (1+х2); б) ; в) a+bx; г) х-1; д) х4;
е) х-2; ж) ; з) ; и) ;
к) ; л); м) ; н) .
- Можно ли утверждать, что в Паскале значение выражения (1 / 3) * 3 - 1 равно нулю?
- Привести примеры положительного и отрицательного целых чисел, не представимых в Паскале.
- Вычислить значения выражений и определить их тип:
а) Trunc(6.9); б) Round(6.9); в) Trunc(6.2);
г) Round(6.2); д) 20 Div 6; е) 20 Mod 6;
ж) 3*7 Div 2 Mod 7/3 - Trunc(10/3);
з) Sqr(x)+Sqr(y), при x=0.3, y=-1.6;
и) k Mod 7 + k Div 5 - 1, при k=15;
л) Odd(Trunc(10*p)), при p=0.182.
- Объяснить ошибки в следующих записях:
а) (9.0-3) Div 4 + x Mod 3, при x=7.0;
б) Odd(Sqr(Trunc(7/2)))-5.
- Вычислить значения выражений:
а) 20 div 6; б) 20 mod 6; в) 20 div 4; г) 20 mod 4;
д) 2 div 5; е) 2 mod 5; ж) 123 div 0; з) 3.0 mod 3;
и) -10 mod 3; к) 10 div (-3).
- Пусть x и y – имена целых переменных. Напишите арифметическок выражение, значением которого является:
а) большее из двух значений x и y;
б) меньшее из значений x и y;
в) сумма значений цифр трехзначного x, например, при x=153 это 9.