
- •Основы программирования на языке Паскаль
- •Часть 1. Основы языка Паскаль 2
- •Часть 2. Элементы профессионального программирования на Паскале 44
- •От автора
- •Часть 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. Компилятор и оболочкаTurboPascal
- •7. Разветвляющийся вычислительный процесс и условный оператор
- •7.4. Короткий условный оператор
- •If логическое_выражение then оператор1;
- •7.5. Полный условный оператор
- •If логическое_выражение then оператор1
- •7.7. Вложенные условные операторы
- •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. Назначение и структура модулей
- •Implementation
- •23.2. Стандартные модули Паскаля
- •24. МодульCrTи создание простых интерфейсов
- •25. МодульGraphи создание графики на Паскале
- •Приложение 1. ТаблицыAscii-кодов символов для операционных системDoSиWindows
- •Приложение 2. Основные директивы компилятора Паскаля
- •Приложение 3. Основные сообщения об ошибках Паскаля
- •Приложение 4. Дополнительные листинги программ
- •Приложение 5. Расширенные коды клавиатуры
- •Ascii‑коды
- •Расширенные коды
- •Приложение 6. Правила хорошего кода
- •Приложение 7. Рекомендуемая литература
3. Арифметические выражения
Арифметические выражения (АВ) строятся из операндов, которыми могут быть константы, переменные истандартные функции. В АВ также входятарифметические операциии круглые скобки. В языке Паскаль определено 6 арифметических операций, перечислим их в соответствии сприоритетом, то есть, старшинством. Операции с одинаковым приоритетом равноправны между собой и выполняются слева направо, как и в математике.
Приоритет |
Знак операции |
Описание операции |
1 |
* |
умножение |
/ |
деление | |
div |
деление 2 целых значений с отбрасыванием остатка | |
mod |
взятие остатка от деления 2 целых значений | |
2 |
+ |
сложение |
- |
вычитание |
Операции divиmodопределены только для целочисленных операндов. Приведем пример их использования:
var y,c,n:integer;
. . .
y:=2006;
c:=y div 100;
n:=y mod 100;
Здесь переменная cполучит значение20, аn– значение6.
Примеры арифметических выражений мы приведем после рассмотрения стандартных функций языка Паскаль.
Стандартные функциислужат для выполнения элементарных математических расчетов, часто требуемых при написании программ. Разработчики Паскаля стремились сделать его программное ядро максимально компактным, поэтому в него не вошел ряд функций, обычно имеющихся в других языках, таких, как вычисление максимума и минимума, возведение числа в произвольную степень и др. Физически коды стандартных функций хранятся встандартной библиотекеПаскаля – файле с именемTURBO.TPL. Все функции оформляются одинаково: после имени функции следует ее аргумент, заключенныйв круглые скобки. Если аргументов несколько, они разделяютсязапятыми. Информацию об основных стандартных функциях удобно представить в виде таблицы:
Математическая запись |
Запись на языке Турбо Паскаль |
Пояснение |
Тип аргумента и результата функции |
|x| |
abs(x) |
модуль аргумента x |
Integer илиReal |
x2 |
sqr(x) |
квадрат аргумента x |
аргумент – IилиR, результат -R |
sin x cos x arctg x |
sin(x) cos(x) arctan(x) |
Остальные тригонометрические функции выражаются через эти |
аргумент – IилиR, результат –R |
ex lnx |
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 |
Здесь xобозначает любую подходящую по типу переменную, либо результат вычисления выражения соответствующего типа (см. ниже), либо соответствующий по типу результат, вычисленный другой стандартной функцией. Функцияpiне имеет аргументов и возвращает число π.
Примеры арифметических выражений:
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)). Сравните сsinx2=>sin(sqr(x)).
Нельзя писать sin*xилиsin x,после имени функции может следовать только аргумент в круглых скобках.
4) вычислить k=tg(t). Т.к. функции тангенса в Паскале нет, пишемk:=sin(t)/cos(t);
При необходимости изменить обычное старшинство операций в записи выражения используются круглые скобки. Пример:
вычислить
.
Правильная запись:y:=(a+b)/2;Неправильноy:=a+b/2,
т.к. это означает
.
5) В записи выражений нельзя пропускать знак *, как часто делается в математике.
b2-4ac->sqr(b)-4*a*c
Тип выраженияопределяется старшим из типов входящих в него операндов (т.е. стандартных функций, переменных, констант). Старшинство типов мы можем определить по таблице, как мы помним, в первой строке таблицы – самый младший тип.Пример:
var i,j:integer;
f:real;
. . .
i+4*jцелый тип выражения, можно записать результат в целую переменную
f+i*0.5вещественный, результат пишется в вещественную переменную
Операция деления / в Паскале всегдадает вещественное число. Для деления целых чисел с целым результатом (остаток отбрасывается) используйтеdiv, для взятия остатка от деления двух целых –mod.