
- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Система подсказок.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Арифметические выражения. Приоритет арифметических операций
И в команде присваивания, и в команде writeln мы использовали арифметические выражения, вместо которых Паскаль подставлял результаты их вычислений. Арифметическое выражение состоит из констант, переменных и функций, соединённых знаками арифметических операций.
Арифметические операции имеют различный приоритет (старшинство). Если в выражении имеются операции разного приоритета, то в первую очередь выполняются более приоритетные операции. Операции одного приоритета выполняются подряд, слева направо.
Приоритет |
Операции |
Название |
||
1 |
( ) |
группировка |
||
2 |
+, − |
знаковые операции |
||
3 |
* |
умножение |
мультипликативные операции |
|
/ |
дробное деление |
|||
div |
целочисленное деление |
|||
mod |
остаток от деления |
|||
4 |
+ |
сложение |
аддитивные операции |
|
− |
вычитание |
Обычный знак деления ( / ) в Паскале используется как дробное деление, то есть, делит вещественные числа, и результат деления – вещественное число. Даже если поделить 6 на 3, результат будет не 2, а 2.0, то есть, вещественное число. Кроме дробного деления есть ещё деление без остатка div. Оно работает только с целыми числами, и результат деления – целое число. Остаток игнорируется. Если же, наоборот, нужен остаток от деления, используется операция mod. Например, выражение 20 div 6 даёт 3, а результат выражения 20 mod 6 равен 2. Пробелы в этих выражениях пропускать нельзя. Операция mod будет полезна при определении, делится ли одна величина на другую. Если остаток от деления равен нулю, - значит, делится без остатка.
Стандартные арифметические функции
Кроме операций над числами можно выполнять более сложные действия, называемые арифметическими функциями. Функции, встроенные в Паскаль, называются стандартными. К ним относятся:
№ |
На Паскале |
В математике |
тип |
пояснение |
1 |
abs(x) |
|x| |
ц, в |
модуль x |
2 |
exp(x) |
e x |
в |
экспонента x |
3 |
ln(x) |
ln(x) |
в |
натуральный логарифм x |
4 |
sqr(x) |
x 2 |
ц, в |
квадрат x |
5 |
sqrt(x) |
|
в |
квадратный корень из x |
6 |
sin(x) |
sin(x) |
в |
синус x |
7 |
cos(x) |
cos(x) |
в |
косинус x |
8 |
arctan(x) |
arctg(x) |
в |
арктангенс x |
9 |
int(x) |
|
в |
целая часть числа x |
10 |
trunc(x) |
|
ц |
целая часть x, преобразованная к целому типу |
11 |
round(x) |
|
ц |
округлённое до ближайшего целого значение x |
12 |
frac(x) |
|
в |
дробная часть числа x |
13 |
random |
|
в |
случайное число в интервале [0; 1) |
14 |
random(x) |
|
ц |
случайное целое число в интервале [0; x) |
15 |
power(a,b) |
ab |
в |
степень |
Некоторые из этих функций требуют пояснений.
Функции int и trunc делают одно и то же: отбрасывают дробную часть числа. Только int оставляет его вещественным (например, 13.0), а trunc делает целым.
Ф
ункция
random(x) даёт
целое случайное число от 0 до x
(не включая x). Пока программа
работает, каждое следующее обращение
к random даст новое число в
этом интервале. Но при следующем запуске
программы набор случайных чисел
повторится. Чтобы этого избежать, нужно
в начале программы поставить команду
randomize. Чтобы получить
случайные числа не от 0 до x,
а в произвольном диапазоне от a
до b, нужно использовать
формулу:
Простейший пример использования функции в выражении:
y:=2*sin(x/2+0.7);
Аргумент функции может содержать и другие функции. Например:
c:=trunc(sqrt(sqr(a)+sqr(b))) ;