Предисловие дорогие друзья !
Вид материала | Документы |
Содержание§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,

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. При записи дробей, если числитель и знаменатель состоят из суммы или произведения нескольких величин или выражений, то числитель и знаменатель необходимо брать в скобки. Например:


 ìàòåìàòèêå èìååòñÿ ìíîãî ïàð ïðîòèâîïîëîæíûõ ïî ñâîåìó äåéñòâèþ îïåðàöèé, òàêèõ êàê * и /, + и — è ò.ï., äëÿ êîòîðûõ ñïðàâåäëèâû ñëåäóþùèå ðàâåíñòâà:
(õ/à)*à = õ
b+a—a = b
 ñèëó òîãî, ÷òî â ÝÂÌ ÷èñëà ïðåäñòàâëåíû â äâîè÷íîì âèäå, ñîâåðøåííî íå î÷åâèäíî, ÷òî ïðèâåäåííûå âûøå òðèâèàëüíûå ðàâåíñòâà áóäóò âûïîëíÿòьñÿ è âíóòðè ÏÝÂÌ.
Вопросы и задания.
- Каковы правила формирования выражений в Паскале?
- Сколько операций выполняется при вычислении выражения
(х+1/2)*(у+7/10)-3/4?
Как сократить число операций?
- Почему в языке Паскаль аргумент стандартной функции всегда записывается в скобках?
- Почему знак умножения всегда выписывается явно?
- Запишите на языке Паскаль следующие формулы:
а) (1+х2); б)

е) х-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.