русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Правила написания арифметических выражений


Дата добавления: 2013-12-23; просмотров: 2479; Нарушение авторских прав


Таблица 2.10

Таблица 2.9

Таблица 2.8

Таблица 2.7

Таблица 2.6

Таблица 2.5

Стандартные функции

Название функции Выполняемое действие
abs(x) возвращает модуль х
exp(x) возвращает e в степени х (экспоненту), результат вещественного типа
cos(x) возвращает косинус х, результат вещественного типа
sin(x) возвращает синус х, результат вещественного типа
arctan(x) возвращает арктангенс х, результат вещественного типа
ln(x) возвращает натуральный логарифм х, результат вещественного типа
sqr(x) возвращает квадрат числа х
sqrt(x) возвращает значение корня квадратного из х
pred(x) возвращает предыдущее целое число (х-1)
sucс(x) возвращает следующее целое число (х+1)
odd(x) возвращает результат логического типа (для четного аргумента – false, для нечетного - true)
ord(x) возвращает аргумент х (код символа х в ASCII)
chr(x) возвращает символ, ASCII–код которого равен х
random(x) генерирует случайное целое число в диапазоне от 0 до х
dec(x, n) уменьшает значение целочисленной переменной х на n
inc(x, n) увеличивает значение целочисленной переменной х на n

 

Вызов стандартной функции осуществляется путем указания в нужном месте программы имени функции и ее аргумента, заключенного в круглые скобки. После вычисления значения функции ее вызов заменяется результатом, а расчет содержащего ее выражения продолжается дальше.

Аргумент функций sin и cos задается в радианах. Для преобразования значения угла из радианной меры в градусную необходимо умножить величину угла на число 180/pi. Для перевода значения угла из градусной меры в радианную необходимо умножить величину угла на число pi/180.



 

Функция random(диапазон) возвращает случайное число, удовлетворяющее условию 0<=x<=диапазон. Тип аргумента и результата – word. Если необходимы случайные числа из диапазона a<=x<b - используется выражение random(b-a)+a.

Если параметр диапазон не указан, то random возвращает число в диапазоне 0<=x<1. Тип результата – real (см. п.3.2). Если нам необходимы вещественные числа из диапазона a<=x<b, мы можем задать его при помощи random*b+a.

Перед первым обращением к функции random необходимо с помощью вызова процедуры Randomize инициализировать программный генератор случайных чисел, иначе при каждом запуске программы датчик будет выдавать одни и те же числа.

 

Параметр n в процедуре dec(x,n) может отсутствовать, т.е. она примет вид dec(x), тогда значение х уменьшится на единицу. Аналогично, при отсутствии необязательного параметра n, процедура inc(x, n)примет вид inc(x), тогда значение х увеличится на единицу.

 

Примеры:

Пример функции Действие Результат
x:=random; выдает случайное вещественное число в диапазоне [0;1) может быть число 0.5413  
x:=random(50);   выдает случайное целое число в диапазоне [0;49] может быть число 26
x:=random(51)-25;   выдает случайное целое число в диапазоне [-25;25] может быть число -18
х:=10; dec (х, 2); уменьшает значение переменной х на 2 будет число 8
х:=10; dec (х); уменьшает значение переменной х на 1 будет число 9
х:=10; inc(x,3); увеличивает значение переменной х на 3 будет число 13
х:=10; inc(x); увеличивает значение переменной х на 1 будет число 11

 

2.3.2 Вещественные типы данных

 

Квещественному типуотносится подмножество вещественных чисел, которые могут быть представлены в формате с фиксированной точкой и с плавающей десятичной точкой. Вещественное число занимает в памяти от 4 до 10 смежных байтов.

Название типа Диапазон десятичного порядка Мантисса, значащие цифры Требуемая память (байт)
single (с одинарной точностью) 1.5*10-45…3.4*1038 7..8
real 2.9*10-39…1.7*1038 11..12
double (с двойной точностью) 5.0*10-324…1.7*10308 15..16
extended (с повышенной точностью) 3.4*10-4951…1.1*104932 19..20
comp (сложный) -2*1063+1…2*1063-1 19..20

Наиболее часто в простейших программах используется тип real. При разработке программ, критичных ко времени счета, следует заменять тип real на single, double или extended. Скорость вычислений при этом увеличивается не менее чем в 2 - 3 раза. Но пользоваться этими типами несколько сложнее, т. к. необходимо изменить способ компиляции, используемый по умолчанию. Сделать это можно двумя методами: при включенной директиве компилятора {$N+} или установив переключатель [*] для соответствующего пункта меню интегрированной среды языка Паскаль.

Над данными этого типа определены операции:

Ÿ арифметические (стандартные): сложение (+), вычитание (-), умножение (*) и деление нацело (/);

Ÿ операции отношения (=, <>, <, >, <=, >=), вырабатывающие результат логического типа.

 

Для вещественных чисел определены следующиестандартные функции:

Ÿ abs(x), chr(x), exp(x), sqr(x), sqrt(x), cos(x), sin(x), ln(x), arctan(x)(см.таблицу 2.5);

Ÿ trunc(x), round(x)(см.таблицу 2.7).

Название функции Выполняемое действие
trunc(x) преобразует вещественный аргумент х в целое число путем отбрасывания дробной части
round(x) преобразует вещественный аргумент х в целое число путем округления до ближайшего целого
frac(x) вычисляет дробную часть х (аргумент и результат – real)
int(x) вычисляет целую часть х (аргумент и результат – real)
random генерирует случайное число типа real из диапазона 0£...<1

Примеры:

frac(2.75)=0.75

int(2.75)=2.00

х=int(x)+frac(x) {результат: 2.75}

trunc(6.7)=6

trunc (-1.6)=-1

round(6.7)=7

round(-1.2)=-2

 

Вещественные числа могут записываться двумя способами — в общепринятой и экспоненциальной форме. Общепринятая форма предполагает запись по обычным правилам арифметики. Целая часть от дробной отделяется десятичной точкой, а не запятой, как в математике. Если точка отсутствует, число считается целым.

Запись вещественного числа в экспоненциальной форме (в форме с мантиссой и порядком) использует степень десяти (например: 25* 103) и удобна для записи очень больших и очень маленьких чисел. При этом число изображается так: пишется мантисса, знак умножения опускается, вместо основания 10 пишется буква Е, а следом указывается порядок (показатель степени). Буква е, предшествующая порядку, читается как "умножить на 10 в степени".

 

Примеры записи вещественных чисел:

в общепринятой форме — 123.456 или 11.9

в экспоненциальной форме — 5.18Е+02 (518) или 10Е-03 (0,01)

Примеры неправильной записи вещественных чисел:

123 — отсутствует десятичная точка;

1,23 — запятая вместо точки;

0.123-03 — отсутствует обозначение порядка Е;

12.34Е+1.2 — порядок числа должен быть целым.

 

 

2.3.3 Логический тип

Логический тип(булевский)может принимать только одно из двух значений, определяемых стандартными константами True (да - истина, 1) и False (нет – ложь, 0), причем данные значения упорядочены, т. е. в операциях сравнения true > false.

Логические переменные, занимающие 1 байт, используются для управления порядком выполнения операторов программы. В программе переменные логического типа описываются служебным словом boolean.

К типу boolean применимы операции отношения, а также логические операции, приведенные в таблице 2.8:

 

Название операции Выполняемое действие
not логическое отрицание – получение обратного значения
and логическое и (умножение) – принимает истинное значение, только если оба операнда истины
or логическое или (сложение) – принимает истинное значение, если хотя бы одно из операндов истинно
xor исключающее или: – истина, только если из операндов истинно – ложь, если оба операнда истинны

 

Примеры:

(2>0) or true {результат: true }

(2>0) or true and odd(4) {результат: true }

((2>0) or true) and odd(4) {результат: false }

(2>0) or true and odd(4) or (5*4¹4) {результат: true }

 

 

2.3.4 Символьный тип

Символьный тип (литерный) включает множество печатаемых символов, представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода).

В памяти компьютера символы хранятся в виде их числовых кодов. Числовые коды преобразуются в буквы и другие символы лишь в момент их вывода на экран или принтер. Соответствие между символом и его кодом задается при помощи кодовой таблицы, которая находится в памяти компьютера и используется при выводе символов. В переменную этого типа на компьютере может быть помещен любой из 256 символов расширенного кода ASCII: это буквы, цифры, знаки препинания и специальные символы.

В том случае, если в программе требуется использовать значение символьной переменной или константы, его необходимо заключить в апострофы или записать с использованием знака #, за которым следует код символа.

Например, 'А' обозначает букву А, ';' — точку с запятой, ' ' — пробел, #32 или #$20 являются также символом пробела (32 — это код, соответствующий пробелу, а шестнадцатеричное число 20 равно десятичному 32).

Примеры:

M:=’текст’;

СН := #65; — присвоение переменной СН символа ‘A’ (с ASCII-кодом 65)

Переменная литерного типа занимает в памяти 1 байт и описывается служебным словом char.

К типу char применимы:

· операции отношения, вырабатывающие результат логического типа, результат зависит от номера символа в кодовой таблице;

· встроенные функции, приведенные в таблице 2.9.

 

Название функции Выполняемое действие
ord(x) преобразует символ ch в его код типа byte и возвращает значение кода
chr(ch) преобразует выражение х типа byte в символ и возвращает значение символа
pred(ch) возвращает предыдущий символ
sucс(ch) возвращает следующий символ

Использование данных типа char в арифметических операциях запрещено.

Примеры:

ord(‘ : ‘)=58

chr(128)=Б

pred(‘ Б ‘)=А

succ(‘ Г ‘)=Д

 

 

2.4 ОПЕРАЦИИ И ВЫРАЖЕНИЯ

 

Конструкция языка, задающая порядок выполнения действий, над элементами данных, называется выражением.

 

Выражениясостоят из операндов, знаков операций и круглых скобок. Операндом может быть константа, переменная или обращение к функции. Операции определяют действия, которые надо выполнить над операндами.

Пример выражения:

(Х+У-10)

Х, У, 10 – операнды

“ + “ и “ – “ - знаки операций сложения и вычитания.

В простейшем случае выражение может состоять из одной переменной или константы. Круглые скобки ставятся так же, как и в обычных арифметических выражениях для управления порядком выполнения операций.

Операции в языке Паскаль делятся на арифметические, отношения, логические (булевские), строковые и др. Выражения соответственно называются арифметическими, отношения, булевскими, строковыми в зависимости от того, какого типа операнды и операции в них используются.

 

 

2.4.1 Арифметические выражения и операции

Арифметическимназывается выражение, составленное из операндов арифметического типа и использующее только знаки арифметических операций и круглые скобки.

Арифметические операции выполняют арифметические действия в выражениях над значениями операндов целочисленных и вещественных типов (см. таблицу 2.10).

Операция Действие бинарные операции
+ сложение
- вычитание
* умножение
/ деление
DIV целочисленное деление
MOD остаток от деления
AND арифметическое И
SHL сдвиг влево
SHR сдвиг вправо
OR арифметическое ИЛИ
XOR исключающее ИЛИ
+ сохранение знака
- отрицание знака унарные операции
NOT арифметическое отрицание

 

Унарные операции относятся к одному операнду, бинарные - связывают два. Например, -а – унарная, а+b – бинарная.

 

· Арифметическое И (AND) производит логическое умножение операндов в соответствии с таблицей истинности:

1 and 1 = 1

0 and 1 = 0

1 and 0 = 0

0 and 0 = 0

Операнды записываются в десятичной форме, но во время выполнения переводятся в двоичную форму. Результат представлен в десятичной форме.

Пример: Вычислить результат выражения А and В, если А=13 и В=21.

Ответ: 13 and 21 = 5

Т.к. числа 13 и 21 занимают в памяти по 2 байта и в двоичной форме имеют вид: 000000000001101 и 000000000010101. Запишем их друг под другом:

Умножая цифры в соответствии с таблицей истинности, получим результат 0000000000000101 или 5 в десятичной форме.

 

· Сдвиг влево (K SHL N) восстанавливает в качестве результата значение, полученное путем сдвига на N позиций влево представленного в двоичной форме числа К.

Пример: Вычислить результат выражения 2 SHL 7.

Ответ: 2 SHL 7 =256

Т.к. число 2 в двоичной форме имеет вид 0000000000000010. Каждый бит сдвигается на 7 позиций влево, в результате получится 0000000100000000, что соответствует 256 в десятичной форме.

 

· Сдвиг вправо (SHR) выполняется аналогично с той лишь разницей, что сдвиг производится вправо.

Примеры: 160 SHR 2=40

90 SHR 2=22

256 SHR 7=2

 

· Логическое ИЛИ (OR) выполняет сложение операндов в двоичной форме в соответствии с таблицей истинности:

1 or 1 = 1
0 or 1 = 1
1 or 0 = 1
0 or 0 = 0

Результат представлен в десятичной форме счисления.

Пример: Вычислить результат выражения А or В, если А=13 и В=21.

Ответ: 13 or 21 = 29

 

· Исключающее ИЛИ (XOR) производит сложение операндов в соответствии с таблицей истинности:

1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0

Результат преобразовывается в десятичную форму счисления.

Пример: Вычислить результат выражения А хor В, если А=13 и В=21.

Ответ: 13 or 21 = 24

 

· Унарная операциясохранения знака (+) оставляет текущий знак числа без изменения.

выражение результат
+(-77) -77
+(42)

 

· Унарная операция отрицания знака (-) восстанавливает значение операнда с противоположным знаком

выражение результат
-(-77)
-(+42) -42

 

· Унарная операцияотрицания (NOT) вызывает побитную инверсию, т.е. получение обратного значения, соответствующего данному числу двоичного кода.

выражение результат
NOT 0 -1
NOT 78 -79

 

Для правильного написания арифметических выражений и исключения ошибок при получении результата рекомендуется соблюдать следующие ограничения и правила:

1.Записывать все составные части выражений в одну строку.

Например, записывается как X/Y.

2.Знаки арифметических операций проставляются явно.

Например, a(b+c) записывается как a*(b+c).

3.Нельзя записывать подряд два знака арифметических операций.

Например, 3*-2, х1/-х2 записывается как 3*(-2), х1/(-х2).

4.Использовать скобки только одного типа — круглые. Применение фигурных и квадратных скобок в выражениях запрещается, так как они имеют особое назначение.

Например, записывается как X/(Y+Z).

Если при расстановке скобок возникнут сомнения, вспомните правило: “Лишние скобки не мешают”.

5.Операции с более высоким приоритетом (см. Таблицу 13) выполняются раньше чем операции с более низким.

Например, в выражении X*Y–D/4 сначала производится деление и умножение, лишь потом - вычитание.

 

6.В выражениях может присутствовать вызов стандартных функций. Функция передает свое значение в выражение. Аргументом функции может быть константа, переменная или арифметическое выражение.

Например, записывается как Sin(1/(x+sqr(c))).

 



<== предыдущая лекция | следующая лекция ==>
Операции div и mod | Перечисляемый тип


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.011 сек.