- •Оглавление
- •Часть 1. Основы языка Паскаль 5
- •Часть 2. Элементы профессионального программирования на Паскале 92
- •Введение
- •Часть 1. Основы языка Паскаль
- •1. Алгоритм и программа
- •1.1. Алгоритм
- •1.2. Свойства алгоритма
- •1.3. Формы записи алгоритма
- •1.4. Программа и программное обеспечение
- •1.5. Этапы разработки программы
- •2. Данные в языке Паскаль
- •2.1. Константы
- •2.2. Переменные и типы переменных
- •3. Арифметические выражения
- •4. Линейный вычислительный процесс
- •4.1. Оператор присваивания
- •4.2. Оператор ввода
- •4.3. Оператор вывода
- •4.4. Управление выводом данных
- •4.5. Вывод на печать
- •5. Структура простой программы на Паскале
- •6. Компилятор и оболочка Turbo Pascal
- •7. Разветвляющийся вычислительный процесс и условный оператор
- •7.1. Логические выражения
- •7.2. Операции отношения
- •7.3. Логические операции
- •7.4. Короткий условный оператор
- •7.5. Полный условный оператор
- •7.6. Составной условный оператор
- •7.7. Вложенные условные операторы
- •7.8. Оператор выбора
- •7.9. Примеры программ с условным оператором
- •8. Директивы компилятора и обработка ошибок ввода
- •9. Оператор цикла. Циклы с предусловием и постусловием
- •10. Цикл со счетчиком и досрочное завершение циклов
- •11. Типовые алгоритмы табулирования функций, вычисления количества, суммы и произведения
- •11.1. Алгоритм табулирования
- •11.2. Алгоритм организации счетчика
- •11.3. Алгоритмы накопления суммы и произведения
- •12. Типовые алгоритмы поиска максимума и минимума
- •13. Решение учебных задач на циклы
- •14. Одномерные массивы. Описание, ввод, вывод и обработка массивов на Паскале
- •15. Решение типовых задач на массивы
- •Часть 2. Элементы профессионального программирования на Паскале
- •16. Кратные циклы
- •16.1. Двойной цикл и типовые задачи на двойной цикл
- •16.2. Оператор безусловного перехода
- •17. Матрицы и типовые алгоритмы обработки матриц
- •18. Подпрограммы
- •18.1. Процедуры
- •18.2. Функции
- •18.3. Массивы в качестве параметров подпрограммы
- •18.4. Открытые массивы
- •19. Множества и перечислимые типы
- •20. Обработка символьных и строковых данных
- •20.1. Работа с символами
- •20.2. Работа со строками
- •21. Текстовые файлы
- •21.1. Общие операции
- •21.2. Примеры работы с файлами
- •21.3. Работа с параметрами командной строки
- •22. Записи. Бинарные файлы
- •23. Модули. Создание модулей
- •23.1. Назначение и структура модулей
- •23.2. Стандартные модули Паскаля
- •24. Модуль crt и создание консольных интерфейсов
- •25. Модуль graph и создание графики на Паскале
- •Заключение
- •Приложение 1. Таблицы ascii-кодов символов для операционных систем dos и Windows
- •Приложение 2. Основные директивы компилятора Паскаля
- •Приложение 3. Основные сообщения об ошибках Паскаля
- •Приложение 4. Дополнительные листинги программ
- •Приложение 5. Расширенные коды клавиатуры
- •Приложение 6. Правила хорошего кода
- •Рекомендуемая литература
3. Арифметические выражения
Арифметические выражения (АВ) строятся из операндов, которыми могут быть константы, переменные и стандартные функции. В АВ также входят арифметические операции и круглые скобки. В языке Паскаль определено 6 арифметических операций, перечислим их в соответствии с приоритетом, то есть, старшинством (табл. 3.1). Операции с одинаковым приоритетом равноправны между собой и выполняются слева направо, как и в математике.
Табл. 3.1. Арифметические операции языка Паскаль
Приоритет |
Знак операции |
Описание операции |
1 |
* |
умножение |
/ |
деление |
|
div |
деление 2 целых значений с отбрасыванием остатка |
|
mod |
взятие остатка от деления 2 целых значений |
|
2 |
+ |
сложение |
- |
вычитание |
Операции div и mod определены только для целочисленных операндов. Приведем пример их использования:
var y,c,n:integer;
. . .
y:=2009;
c:=y div 100;
n:=y mod 100;
Здесь переменная c получит значение 20, а n -- значение 9.
Примеры арифметических выражений мы приведем после рассмотрения стандартных функций языка Паскаль.
Стандартные функции служат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся в стандартной библиотеке Паскаля -- файле с именем turbo.tpl. Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенный в круглые скобки. Если аргументов несколько, они разделяются запятыми. Информация об основных стандартных функциях представлена в табл. 3.2.
Табл. 3.2. Стандартные функции языка Паскаль
Математи-ческая запись |
Запись на Паскале |
Пояснение |
Тип аргумента и результата |
|x| |
abs(x) |
Модуль аргумента x |
Integer (I) или Real (R) |
x2 |
sqr(x) |
Квадрат аргумента x |
аргумент – I или R, результат – R |
sin x cos x arctg x |
sin(x) cos(x) arctan(x) |
Остальные тригонометрические функции выражаются через эти |
аргумент – I или R, результат – R |
ex ln x |
exp(x) ln(x) |
Экспонента и натуральный логарифм |
аргумент – I или R, результат – R |
sqrt(x) |
Квадратный корень от аргумента x |
аргумент – I или R, результат – R |
|
|
pi |
Функция без аргументов, вернет число |
R |
|
trunc(x) |
Функция отбрасывает дробную часть аргумента, аргумент не округляется |
аргумент R, результат I |
|
frac(x) |
Функция выделяет дробную часть своего аргумента |
R |
|
round(x) |
Округление вещественного числа до ближайшего целого |
аргумент R результат I |
В табл. 3.2 x обозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа, либо соответствующий по типу результат, вычисленный другой стандартной функцией.
Приведем примеры арифметических выражений.
1. Возвести величину x в пятую степень. Выражение может быть записано как x*x*x*x*x или sqr(x)*sqr(x)*x или sqr(sqr(x))*x, последнее показывает, что результаты одних функций могут быть аргументами других -- это называют вложением функций. Разумеется, тип результата, возвращаемый вложенной функцией, должен быть подходящим для аргумента внешней функции.
2. Возвести величину a в произвольную степень x. Так как в Паскале нет функции возведения в произвольную степень, воспользуемся формулой ax=ex*ln a:
a:=2.5; x:=0.25;
ax:=exp(x*ln(a));
Обратите внимание, что все круглые скобки в выражении должны быть парными. Другой пример применения этого способа: = exp(1/3ln(x)).
3. Вычислить sin2x . Запись на Паскале: sqr(sin(x)). Сравните с выражением sin x2, которое записывается как sin(sqr(x)).
4. Вычислить k=tg(t). Т. к. функции тангенса в Паскале нет, распишем тангенс в виде k:=sin(t)/cos(t);.
5. При необходимости изменить обычное старшинство операций в записи выражения используются дополнительные круглые скобки. Например, правильная запись выражения выглядит как y:=(a+b)/2;. Запись y:=a+b/2; неверна, т. к. это означает .
6. В записи выражений нельзя пропускать знак *, как часто делается в математике: b2-4ac записывается как sqr(b)-4*a*c. Нельзя писать sin*x или sin x, после имени функции может следовать только ее аргумент в круглых скобках.
Тип выражения определяется старшим из типов входящих в него операндов (т. е., стандартных функций, переменных, констант). Старшинство типов можно определить по табл. 2.1, напомню, что в первой строке таблицы находится самый младший тип.
Например, для переменных
var i,j:integer; f:real;
выражение i+4*j имеет целый тип, и его результат можно записать в целую переменную. Выражение f+i*0.5 дает вещественный, результат, который должен быть записан в вещественную переменную.
Операция деления / в Паскале всегда дает вещественное число. Для деления целых чисел с целым результатом (остаток отбрасывается) используйте div, для взятия остатка от деления двух целых -- mod.