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

Теоретические основы программирования

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

Программапоследовательность действий, которые должен выполнить компьютер в строго указанной очерёдности для достижения конкретного результата.

Языки программирования – это совокупность средств и правил представления алгоритма в виде, приемлемом для компьютера.

Системы программирования – это набор средств ввода, редактирования, трансляции и выполнения программ на ЭВМ.

Транслятор – это устройство или комплекс программ, обеспечивающий перевод программы, написанной на символическом языке, в совокупность машинных команд, либо передающие/преобразующие данные или другую программу.

Например, транслятор воспринимает операторы одного языка и вырабатывает соответствующие операторы другого языка.

Компилятор – это транслятор, обеспечивающий перевод программы, написанной на алгоритмическом языке, в совокупность машинных команд без ее выполнения в компьютере.

Компилятор оценивает исходный текст в соответствии с синтаксической конструкцией языка и переводит на машинный язык.

Например, компилятор берет программу, написанную на языке C, и преобразует ее в программу на языке ассемблера.

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

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

1.4. Правила записи в С++ арифметических выражений

Выражение состоит из операторов и операндов. Операндами могут быть, в свою очередь, выражения или одни из его частных случаев – числа (константы) или переменные, операторы обозначают выполняемые над ними действия (+ сложение, - вычитание, * умножение, / деление (для целых операндов – целая часть от деления), % остаток от деления (только для целых ), …).

Все основные операции языка С++ можно разбить на следующие группы:


- арифметические операции;

- логические операции;

- операции отношения;

- операции с битами информации;

- операции со строками;

- операции присваивания;

- операция sizeof;

- условная операция (?:).


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

(a + 0.12)/6

x && || !z

(t * sin(x)-1.05e4)/((2 * k + 2) * (2 * k + 3))

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

Порядок вычисления выражений определяется рангом (приоритетом) входящих в него операций (табл. 3). Принятый в С++ ранг операций наиболее близок к математическому, также как и принятый порядок их вычисления. Так, умножение и деление (мультипликативные операции) старше сложения и вычитания (аддитивные операции). Унарные операции + и – старше бинарных, т.е., знак операнда вычисляется в первую очередь. Операции типа присваивания младше прочих, что позволяет выполнить их только после того, как значение выражения вычислено полностью. Операции отношения младше арифметических операций, что позволяет использовать естественную запись логических выражений, например, x>0 && y>0. Здесь в первую очередь вычисляются значения отношений, которые затем являются операндами конъюнкции.

Таблица 3.Порядок вычисления выражений

Группа Тип действий Операции или элементы
Вычисления в круглых скобках ( )
Вычисления значений функции Функции
Унарные операции ++, --, ~, !, унарные - и +, &, * (разадресация), …
Операции типа умножения *, /, %
Операции типа сложения +, –
Операции отношения <, <=, >, >=, ==, !=

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

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

Арифметические выражения записываются по следующим правилам:

- Запись ведётся в строчку.

- Нельзя опускать знак умножения между сомножителями.

- Для обозначения переменных используются буквы латинского алфавита.

- Операции выполняются в соответствии с приоритетами: сначала вычисление функций, затем умножение и деление , потом сложение и вычитание.

- Если в одном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные – слева направо. Например, a = b = c означает a = (b = c),аa + b + с означает (a + b) + c.

- Для изменения порядка действий используются круглые скобки.

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

- В языке С++ предусмотрены базовые математические операции (см. прил. 2).

Примеры записи выражений:

Математическое выражение Запись на C++
1. 1. 10 * x + 3 * sqrtf(cos(x))
2. 2. (sin(2*x) - 1) / (pow(x, 2) - 1)
3. 3. abs(x) + 2 * cos(x) / sin(x)

Лабораторная работа № 1
Запись арифметических выражений

ЦЕЛЬ РАБОТЫ:закрепление знаний по теоретическим основам алгоритмизации и программирования, приобретение навыков использования арифметических операций, функций и правил записи арифметических выражений согласно синтаксису языка C++.

Выполнение работы: записать следующие выражения по правилам языка C++.

Задание I

1. sin 5x + 2 tg x2 5. ;
2. 2x + 3y2 - sin3x 6. ;
3. 7. ;
4. 8.

Задание II

Выполнить согласно варианту:

1. , .
2. , .
3. , .
4. , .
5. , .
6. , .
7. , .
8. , .
9. , .
10. , .
11. .
12. , .
13. , .
14. , .
15. , .
16. , .
17. , .
18. , .
19. , .
20. ,
21. ,
22. ,
23. , .
24. , .
25. , .

Контрольные вопросы

1. Что такое алгоритм?

2. Перечислите свойства алгоритмов.

3. Способы записи алгоритма.

4. Перечислите базовые алгоритмические конструкции. Какова блок-схема следования?

5. Какова блок-схема полной (неполной) формы команды ветвления?

6. Какова блок-схема цикла с предусловием?

7. Какова блок-схема цикла с постусловием?

8. Какова блок-схема цикла с параметром?

9. Что такое программа?

10. Что такое транслятор?

11. Что такое компилятор?

12. Что такое интерпретатор?

13. Что такое оператор и операнд?

14. В каких случаях при записи математических выражений на языке С++ используются круглые скобки?

15. Как используются стандартные математические функции в С++?