Программирование в среде RobоtC
Приоритет операций
Приоритет операций
Приоритет операций
Сложные математические выражения
Способы записи сложных математических выражений
Способы записи сложных математических выражений
Способы записи сложных математических выражений
Задача 1.
Задача 2.
Задача 3.
Задача 4.
Задача 5.
Задача 6.
Задача 7.
Ответы к задачам
Завершение занятия

Программирование в среде Robot C. Приоритет операций. Сложные математические выражения

1. Программирование в среде RobоtC

Занятие 9: Приоритет операций.
Сложные математические выражения

2. Приоритет операций

В математических вычислениях важную роль играет порядок, в
котором выполняются действия. Чему, например, равно значение
выражения 2+2*2? Конечно же шесть, т.к. сначала выполняется
умножение.
В C используется знакомый нам порядок выполнения операций. Но
т.к. в программировании есть свои особенности, то кое-какие
отличия всё же есть.
Выпишем приоритет для тех операций, которые мы уже знаем.
1. вычисляются функции (например, sqrt(), cos() и др.)
2. умножение, деление, остаток от деления (слева направо)
3. сложение, вычитание
4. выполняется присваивание
Если нам нужно изменить порядок выполнения действий, то мы
можем использовать для этого круглые скобки

3. Приоритет операций

А каково значение переменной x после выполнения
следующего кода
int x = 8 / 4 / 2;
Правильный ответ 1. Т.к в случае одинакового приоритета
операций, команды выполняются слева направо. Другими
словами данный код эквивалентен коду
int x = (8 / 4) / 2;
Вот еще один пример
2+2*2 = 6
(2+2)*2 = 8 // действие в скобках будет выполнено прежде умножения

4. Приоритет операций

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

5. Сложные математические выражения

Иногда формулы, по которым нужно что-то вычислять, в
программе могут принимать довольно ужасный вид.
При этом когда мы пишем программу, любая формула
должна быть записана в одну строку. На начальном этапе
это может вызвать у вас некоторые затруднения. Чтобы
избавиться от этих затруднений, нужно овладеть навыком
переводить формулу из стандартной математической
записи в ту, которая используется в программировании и
обратно.

6. Способы записи сложных математических выражений

1.
2.
3.
Для записи сложных математических выражений полезно
использовать некоторые соображения, которые позволят
это сделать проще и не допустить ошибку.
При записи дробить общее выражение на мелкие части,
записывать их.
Вводить новые переменные.
Совершать математические преобразования, которые
могут упростить пример.
Рассмотрим эти идеи на примере.

7. Способы записи сложных математических выражений

Записать на языке С выражение
и вычислить его при a=6, b=100.
1. Пишем поэтапно: ()/()+()/() → (()/()+()/())*(()/()) →
теперь заполняем скобки →
((a-sqrt(b))/(a+sqrt(b))+(a+sqrt(b))/(a-sqrt(b)))*((2*a*sqrt(b)) /(a+sqrt(b)))
Получилось выражение. Возможно, какие-то скобки лишние, но лучше
поставить лишние скобки, чем забыть и получить неверный
ответ. Можете вставить это выражение в программу и вычислить.
Правильный ответ: 0.5

8. Способы записи сложных математических выражений

2. Можно ввести переменные
float t=a-sqrt(b);
float s=a+sqrt(b);
Тогда выражение будет записываться таким образом:
(t/s+s/t)*(2*a*sqrt(b))/s;
Можете проверить, что его вычисление даст такой же ответ 0.5.
3. Если преобразовать второе выражение, то получится более
простое:
Ответ получается таким же!

9. Задача 1.

Упорядочите указанные операции по убыванию
приоритета. Сверху операции, которые имеют более
высокий приоритет.
1.
2.
3.
4.
5.
*, /, %
+, операции в скобках
=
sqrt(), sin(), cos() и другие функции .

10. Задача 2.

1.
2.
3.
4.
5.
6.
Дано уравнение y=ax3+7. Среди указанных выражений
отметьте те, которые соответствуют верной записи этого
выражения на языке Си.
y = a * x * x * (x + 7);
y = (a * x) * x * (x + 7);
y = a*(x * x * x) + 7;
y = (a * x) * x * x +7;
y = a * x * x * x + 7;
y = a * x * (x * x + 7);

11. Задача 3.

Какое значение будет сохранено в переменной x после
выполнения следующего кода:
int x = 7 + 3 * 6 / 2 - 1;

12. Задача 4.

Какое значение будет сохранено в переменной x после
выполнения следующего кода:
int x = 2 % 2 + 2 * 2 - 2/2;

13. Задача 5.

Какое значение будет сохранено в переменной x после
выполнения следующего кода:
int x = (3 * 9 * (3 + (9 * 3 / 3)));

14. Задача 6.

Напишите программу, вычисляющую площадь треугольника по
трём сторонам.
Формат входных данных:
Вначале программы задаём три вещественных числа a, b, c —
длины сторон треугольника.
Формат выходных данных:
Одно число — площадь треугольника со сторонами a, b, c.
Точность — два знака после запятой.
Для вычисления площади используйте формулу Герона:
где p=(a+b+c)/2 – полупериметр.

15. Задача 7.

В выражении a/b*c/d*e/f*h расставьте скобки так, чтобы
выражению со скобками соответствовала дробь
Напишите программу, вычисляющее это выражение для
чисел a=7, b=2, c=3, d=7, e=8, f=3, h=4. Результат
вычисления должен быть равен 5.44.

16. Ответы к задачам

1. 3, 5,1, 4, 2
2. 3, 4, 5
3. 15
4. 3
5. 324
6. task main(){
float a=12.5, b=13.6, c=15.01, p, s;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
nxtDisplayTextLine(1,”%.2f”,s);
}
7. a/(b*c/(d*e/(f*h)))

17. Завершение занятия

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