Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_2_часть_1_Лин_процесс.doc
Скачиваний:
7
Добавлен:
17.08.2019
Размер:
333.82 Кб
Скачать

Лабораторная работа № 2

Часть 1

Тема - программирование линейных вычислительных процессов с использованием операторов, реализующих базовые структуры следования.

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

Задание.

Все варианты задания содержат по четыре задачи. Для каждой из них нужно выполнить действия, указанные в пунктах 1 - 7, и составить отчёт о работе.

1. Составить расчётные формулы для использования их в программе, вводя при необходимости обозначение промежуточных результатов.

2. Подготовить необходимое количество тестов для проверки программы.

3. Подготовить значения исходных данных для каждого теста.

4. Представить алгоритм решения задачи в виде блок - схемы.

5. Составить программу, согласуя её с блок - схемой.

6. Используя среду программирования Turbo Pascal, ввести программу в компьютер и сохранить в личном каталоге.

7. Отладить программу, используя подготовленные тесты.

Варианты задания помещены после примеров выполнения задания.

Общие сведения.

Линейные вычислительные процессы относятся к основным типам вычислительных процессов. В данных процессах расчётные формулы применяются последовательно по одному разу.

Линейный вычислительный процесс реализуется с помощью графической структуры, представленной на рис. 4.

Рис. 4. Базовая алгоритмическая структура Следование

Программы, реализующие линейные вычислительные процессы, содержат операторы ввода - вывода, операторы присваивания и операторы описания. Все вычисления и другие преобразования данных в программе записываются в виде выражений. При программировании линейных вычислительных процессов обычно выражение включает несколько арифметических операций: + (сложение), - (вычитание), * (умножение), / (деление вещественное), div (деление целочисленное), mod (остаток целочисленного деления) – эти операции применяют к вещественным и целым числам, результат - также число.

При вычислении значений выражений важен порядок выполнения операторов. Приняты следующие правила выполнения операторов. Операторы *, /, div, mod имеют более высокий приоритет, чем операторы + и -. Операторы с более высоким приоритетом выполняются раньше операторов, приоритет которых ниже. Если приоритет операторов одинаков, то оператор, стоящий левее, выполняется раньше. Для задания любого нужного порядка выполнения операций в выражении можно использовать скобки.

В выражениях также допускается использование стандартных и определенных программистом функций. Им присваивается высший приоритет.

Основные стандартные функции:

Функция

Наименование

Тип результата

Abs(X)

Абсолютное значение аргумента

Совпадает с типом X

Arctan(X)

Арктангенс аргумента

Вещественный

Cos(X)

Косинус аргумента

Вещественный

EXP(X)

Вещественный

Frac(X)

Дробная часть числа

Вещественный

Int(X)

Целая часть числа

Вещественный

Ln(X)

Натуральный логарифм

Вещественный

Pi

Значение Pi=3,1415926535897932

Вещественный

Round(X)

Округляет аргумент до ближайшего целого числа

Целый

Sin(X)

Синус аргумента

Вещественный

Sqr(X)

Квадрат аргумента

Совпадает с типом X

Sqrt(X)

Квадратный корень аргумента

Вещественный

При программировании линейных вычислительных процессов могут быть полезны следующие формулы для вычисления некоторых функций:

Запись выражений, содержащих арифметические операции, выполняется «в строку», порядок выполнения операций определяется скобками. Особенно внимательно следует программировать выражения, включающие операции различных приоритетов.

С помощью оператора присваивания в программе записываются действия, связанные с изменением значений переменных. На языке Pascal оператор присваивания в общем виде выглядит так:

Имя переменной := Выражение ;

где двоеточие и следующий за ним знак равенства это символ присваивания. При выполнении этого оператора вычисляется выражение, приведенное в правой части, и его результат заносится в переменную, имя которой указано слева. Если оператор присваивания записывается в последовательности операторов, то после него ставится точка с запятой.

Для корректного выполнения операции присваивания результат выражения и переменная, записанная в левой части оператора присваивания, должны иметь одинаковые или совместимые типы. Тип выражений определяется типом операндов, входящих в выражения и зависит от операций, выполняемых над ними. Тип константы определяется видом самой константы. Тип переменной задается в ее объявлении. Если хотя бы один операнд в операторах *, +, - имеет тип real, то и результат будет типа real. Если оба операнда в операторах *, +, - имеют тип integer, то и результат будет типа integer. Результат оператора / всегда является выражением типа real. Операнды в операторах div и mod всегда должны быть типа integer.

Для ввода значений с клавиатуры используют специальные процедуры Read и ReadLn (рис. 5). Эти процедуры позволяют вводить значения стандартных типов, кроме boolean, и строки (string).

Рис. 5 Синтаксическая диаграмма <Процедура ввода с клавиатуры>

Вводимые значения (кроме значений символов и строк) разделяют пробелами или записывают на разных строках. Отдельные символы и строки символов при вводе записывают подряд, так как пробел в этом случае также считается символом.

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

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

Для вывода значений на экран используют процедуры Write и WriteLn (рис. 6). Эти процедуры предназначены для вывода значений стандартных типов и строк.

Рис. 6 Синтаксическая диаграмма <Процедура вывода на экран>

Целочисленный литерал <Целое 1> интерпретируется как ширина поля, в которое выводится значение, причем выводимые значения прижимаются к правой границе. Если указанной ширины поля недостаточно, то она автоматически увеличивается до нужного значения. Если <Целое 1> не указано, то его значение определяется количеством выводимых символов.

Целочисленный литерал <Целое 2> указывается только для вещественных чисел: он определяет количество цифр дробной части числа. Если <Целое 2> указано равным 0, то ни дробная часть числа, ни десятичная точка не выводятся. Если <Целое 1> и <Целое 2> не указаны, то вещественные числа выводятся в виде мантиссы и порядка, причем ширина поля вывода по умолчанию принимается равной 17, а количество дробных цифр – 14.

После вывода значений процедурой WriteLn курсор переводится на следующую строку.

Пример выполнения работы.

Задача 1. Составить программу для вычисления y при заданном значении x = 0,13 по формуле

Напечатать x, sinx, cosx, y.

Решение.

1. Расчётные формулы:

2. Тест для отладки программы:

x = - 0,13 , c = cos(-0,13) = 0,9916,

s = sin(-0,13) = -0,1296,

3. Исходные данные: x = - 0,13==> -0.13.

4. Блок - схема:

5. Программа:

Program Prim1 ; { Программирование линейного

вычислительного процесса }