Программирование линейных вычислительных процессов
Ознакомление с основными концепциями языка и освоение его простейших стандартных средств, используемых при проектировании программ.
Методические указания
Алгоритмический язык Паскаль был разработан в 1968-71 гг. профессором Цюрихского института информатики (Швейцария) Никлаусом Виртом. Язык создавался как средство обучения “правильному” программированию, т. к. отражал все основные концепции структурного программирования. Он быстро завоевал популярность, поэтому были созданы версии языка для работы на персональном компьютере. Они носят название Turbo Pascal. Каждая версия сопровождалась определенными изменениями как в языке, так и в интегрированной среде программирования. Далее будут рассмотрены возможности версии 7.0 Turbo Pascal, работающей под управлением MS DOS.
Идентификаторы (имена) объектов программы должны начинаться с буквы, могут состоять из букв и цифр. Длина имени произвольная, но для компилятора значимыми являются первые 63 символа. Принято использовать длинные имена, несущие смысловую нагрузку, например: my_file; rezultat; koren_urav и т.п.
Знаки арифметических операций: + (сложение), — (вычитание), * (умножение), / (деление). Если в программе требуется изменить порядок выполнения операций, то для этих целей используют только круглые скобки. Другие виды скобок имеют свое назначение, о котором будет сказано позднее.
Знаки операций отношения: = (равно), < >(не равно), > (больше), < (меньше), >= (больше или равно),
Разделители: пробел, любой управляющий символ (т.е. символ с номером от 0 до 31 по таблице кодировки), комментарий. Комментарий — это пояснения в программе, заключаемые в скобки или (*…*). Комментарий может быть и на русском языке, т.к. компилятор его не обрабатывает. Комментарий в фигурных скобках может входить в состав комментария второго вида. Если “комментарий” начинается символом $ — , то это директива компилятора.
Числа в программе могут быть целыми и вещественными (действительными). Целые числа записывают как в десятичной форме, так и в шестнадцатеричной. В последнем случае число должно быть положительным и начинаться символом $, например $f3 = 1516 + 3 = 243. Вещественные числа записываются либо в естественной форме (с фиксированной точкой), либо c использованием порядка (с плавающей точкой). В форме с плавающей точкой разделителем мантиссы и порядка выступает символ Е (е):
Примеры записи: -0.125 4.77е-3 -0.13Е4.
Лабораторная работа 1 программирование линейных вычислительных процессов
1. Изучить некоторые возможности интегрированной среды Pascal ABC: редактирование исходного текста; компиляцию исходных модулей; запуск программ на исполнение; отладку программ.
2. Изучить структуру и правила записи программ на языке Pascal ABC.
3. Приобрести начальные навыки работы в системе Pascal ABC на примере программирования линейных алгоритмов.
Краткие сведения из теории
1. Назначение системы программирования
Система программирования Pascal ABC представляет собой интегрированную среду, включающую: экранный редактор; компилятор; редактор связей; отладчик.
Интегрированная среда (Турбо-среда) позволяет набирать тексты программ с использованием встроенного редактора текстов, компили ровать их, выполнять, проводить отладку программ.
Интегрированность среды проявляется не только в единой идеологии построения компонентов, но и в их связи друг с другом. Так, при возникновении ошибки трансляции система автоматически переходит в режим экранного редактирования и ставит курсор в точку возникновения ошибки. Аналогичные действия выполняются и отладчиком при возникновении ошибки во время выполнения программы.
2. Связь функция-клавиатура в интегрированной среде
В TURBO имеется ряд клавиш,которые доступны пользователю в любой момент («горячие» клавиши)
Подсказка по текущей компоненте .
Сохранение текущего редактируемого файла.
Выполнить программу до строки , где нахо-дится курсор.
Приблизить/отдалить активное окно.
Переключить активное окно.
Пооператорное выполнение программы.
Компановка программы из модулей.
Показать список активных окон.
Показать пpедыдущий экpан подсказки (в списке хpанятся последние 20 экpанов).
Закpыть (удалить) текущее окно.
Показать результаты выполнения программы
Компилировать текущий редактируемый файл.
Лабораторная работа № 2
Тема — программирование линейных вычислительных процессов с использованием операторов, реализующих базовые структуры следования.
Цель работы — освоить на практике программирование линейных вычислительных процессов, используя для этого, простейшие операторы ввода – вывода и присваивания, изучить построение и использование арифметических выражений, научиться отладке программ и подготовке с этой целью тестов.
Все варианты задания содержат по четыре задачи. Для каждой из них нужно выполнить действия, указанные в пунктах 1 — 7, и составить отчёт о работе.
1. Составить расчётные формулы для использования их в программе, вводя при необходимости обозначение промежуточных результатов.
2. Подготовить необходимое количество тестов для проверки программы.
3. Подготовить значения исходных данных для каждого теста.
4. Представить алгоритм решения задачи в виде блок — схемы.
5. Составить программу, согласуя её с блок — схемой.
6. Используя среду программирования Turbo Pascal, ввести программу в компьютер и сохранить в личном каталоге.
7. Отладить программу, используя подготовленные тесты.
Варианты задания помещены после примеров выполнения задания.
Линейные вычислительные процессы относятся к основным типам вычислительных процессов. В данных процессах расчётные формулы применяются последовательно по одному разу.
Линейный вычислительный процесс реализуется с помощью графической структуры, представленной на рис. 4.
Рис. 4. Базовая алгоритмическая структура Следование
Программы, реализующие линейные вычислительные процессы, содержат операторы ввода — вывода, операторы присваивания и операторы описания. Все вычисления и другие преобразования данных в программе записываются в виде выражений. При программировании линейных вычислительных процессов обычно выражение включает несколько арифметических операций: + (сложение), — (вычитание), * (умножение), / (деление вещественное), div (деление целочисленное), mod (остаток целочисленного деления) – эти операции применяют к вещественным и целым числам, результат — также число.
При вычислении значений выражений важен порядок выполнения операторов. Приняты следующие правила выполнения операторов. Операторы *, /, div, mod имеют более высокий приоритет, чем операторы + и -. Операторы с более высоким приоритетом выполняются раньше операторов, приоритет которых ниже. Если приоритет операторов одинаков, то оператор, стоящий левее, выполняется раньше. Для задания любого нужного порядка выполнения операций в выражении можно использовать скобки.
В выражениях также допускается использование стандартных и определенных программистом функций. Им присваивается высший приоритет.
Основные стандартные функции:
Абсолютное значение аргумента
Округляет аргумент до ближайшего целого числа
Квадратный корень аргумента
При программировании линейных вычислительных процессов могут быть полезны следующие формулы для вычисления некоторых функций:
Запись выражений, содержащих арифметические операции, выполняется «в строку», порядок выполнения операций определяется скобками. Особенно внимательно следует программировать выражения, включающие операции различных приоритетов.
С помощью оператора присваивания в программе записываются действия, связанные с изменением значений переменных. На языке Pascal оператор присваивания в общем виде выглядит так:
Имя переменной := Выражение ;
где двоеточие и следующий за ним знак равенства это символ присваивания. При выполнении этого оператора вычисляется выражение, приведенное в правой части, и его результат заносится в переменную, имя которой указано слева. Если оператор присваивания записывается в последовательности операторов, то после него ставится точка с запятой.
Для корректного выполнения операции присваивания результат выражения и переменная, записанная в левой части оператора присваивания, должны иметь одинаковые или совместимые типы. Тип выражений определяется типом операндов, входящих в выражения и зависит от операций, выполняемых над ними. Тип константы определяется видом самой константы. Тип переменной задается в ее объявлении. Если хотя бы один операнд в операторах *, +, — имеет тип real, то и результат будет типа real. Если оба операнда в операторах *, +, — имеют тип integer, то и результат будет типа integer. Результат оператора / всегда является выражением типа real. Операнды в операторах div и mod всегда должны быть типа integer.
Для ввода значений с клавиатуры используют специальные процедуры Read и ReadLn (рис. 5). Эти процедуры позволяют вводить значения стандартных типов, кроме boolean, и строки (string).
Рис. 5 Синтаксическая диаграмма
Вводимые значения (кроме значений символов и строк) разделяют пробелами или записывают на разных строках. Отдельные символы и строки символов при вводе записывают подряд, так как пробел в этом случае также считается символом.
Физически операции ввода выполняются с использованием буфера, т.е. вводимая с клавиатуры последовательность символов сначала помещается в память, а затем, уже из памяти, читается программой. Последовательность передается в буфер ввода по нажатию клавиши Enter. При этом в буфер вместе с кодами введенных символов помещается и код Enter.
Если ввод осуществляется процедурой ReadLn, то буфер ввода после выполнения операции очищается, причем символы, оставшиеся не обработанными, игнорируются. Если ввод осуществляется процедурой Read, то очистка не выполняется и, следовательно, следующий оператор ввода начнет читать символы из той же строки.
Для вывода значений на экран используют процедуры Write и WriteLn (рис. 6). Эти процедуры предназначены для вывода значений стандартных типов и строк.
Рис. 6 Синтаксическая диаграмма
Целочисленный литерал интерпретируется как ширина поля, в которое выводится значение, причем выводимые значения прижимаются к правой границе. Если указанной ширины поля недостаточно, то она автоматически увеличивается до нужного значения. Если не указано, то его значение определяется количеством выводимых символов.
Целочисленный литерал указывается только для вещественных чисел: он определяет количество цифр дробной части числа. Если указано равным 0, то ни дробная часть числа, ни десятичная точка не выводятся. Если и не указаны, то вещественные числа выводятся в виде мантиссы и порядка, причем ширина поля вывода по умолчанию принимается равной 17, а количество дробных цифр – 14.
После вывода значений процедурой WriteLn курсор переводится на следующую строку.
Пример выполнения работы.
Задача 1. Составить программу для вычисления y при заданном значении x = 0,13 по формуле
Напечатать x, sinx, cosx, y.
2. Тест для отладки программы:
x = — 0,13 , c = cos(-0,13) = 0,9916,
3. Исходные данные: x = — 0,13==> -0.13.
вычислительного процесса >