Лабораторная работа № 1. Алгоритмы линейной структуры

Алгоритмы линейной структуры

Задачи лабораторной работы

Вопросы, изучаемые в работе

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

Задание (общее ко всем вариантам).

Запрограммировать вычисление заданной функции, вычислить и вывести на экран результат при указанных значениях аргументов. Проверить программу по приведенному в задании ответу. Оформить отчет по лабораторной работе в соответствии с образцом, приведенным для варианта № 31. Таблицу идентификаторов, блок-схему алгоритма и текст программы аккуратно выполнить от руки, с обозначениями пробелов (в программе), где они необходимы.

Требования к программе

  • Программа должна содержать комментарий с указанием названия работы, номера варианта, фамилии студента и номера группы
  • Аргументы задавать операторами присваивания значений.
  • При программировании выражений, части выражений встречающиеся два и более раз вычислять один раз с запоминанием в промежуточных (рабочих) переменных.
  • Вывод результата выполнять на экран по формату :12
  • Отладить программу, чтобы результат совпадал по всем цифрам с приведенным ответом.

Содержание программы

  • Заголовок программы с комментарием;
  • Описание переменных;
  • Задание значений аргументам;
  • Вычисление (если необходимо) промежуточных значений;
  • Расчет результата;
  • Вывод результата на экран.

Общие пояснения

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

Текст должен быть написан латинскими символами (прописные и строчные символы не различаются) в файле с именем, удовлетворяющем правилам файловой системы DOS и с расширением .PAS. Рекомендуется использовать имена, состоящие не более чем из 6 символов, за которыми следует номер лабораторной работы.

Операторы могут начинаться с любой позиции строки, переноситься на последующие строки (переход на другую строку разрешен в любом месте, где можно вставить пробел) и записываться по несколько операторов в одной строке (что, однако, не рекомендуется). Операторы разделяются между собой символом ";".

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

Операторы не рекомендуется записывать дальше 75-ой колонки для обеспечения возможности распечатки текста программы на стандартных листах бумаги (или 60-ой колонок – для распечатки на странице из тетради).

Программа может начинаться с необязательного оператора

PROGRAM <имя программы>;

за которым должен идти блок описаний, состоящий из одного или нескольких разделов. Затем идет выполняемый блок, заканчивающийся символом ".". Как правило, блок описаний содержит раздел описания переменных, начинающийся с ключевого слова VAR. Остальные разделы могут отсутствовать. Выполняемый блок должен быть заключен в операторные скобки BEGIN ... END, причем рекомендуется любую соответствующую пару скобок записывать начиная с одной и той же колонки. Открывающую скобку Begin лучше всегда начинать с новой строки.

Пример простейшей программы будет приведен перед таблицей с данными вариантов заданий.

Уточним задачи лабораторной работы.

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

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

Запись оператора присваивания во всех случаях выполняется в виде:

<какой переменной> <присваиваем> <значение выражения>;.

Следует помнить, что присваивание выполняется справа налево. Примеры:

Summa := 0; {Обнуление переменной Summa}

A := B; {Значение переменной B копируется в ячейку

(переменную) A}

I := I+1; {Увеличение значения

счетчика I на единицу}

Gip:=Sqrt(Sqr(X)+Sqr(Y)); {расчет гипотенузы по

величинам катетов}

Оператор вывода на экран в простейшем случае выглядит так:

Writeln(<список объектов вывода>);

или

Write(<список объектов вывода>);

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

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

Второе число используется только при выводе вещественных чисел и указывает, сколько дробных цифр выводить после десятичной точки. При этом число выводится в форме с фиксированной точкой (без десятичного порядка). Если второго числа в формате нет, вещественное значение выводится в экспоненциальной форме.

Примеры операторов вывода:

Writeln('Сколько будет чисел?'); {запрос перед вводом количества чисел}

Write(X, Sin(X)+1.5); {вывод значения переменной Х и значения зависящего от него выражения}

Writeln('Минимальное - ',K,' по порядку число');

Writeln(A,A:5,A:12,A:8:2,A:10:4); {при A=12.345, будет выведена следующая строка: }

1.23450000000012E+01 1.2E+01 1.23E+01 12.35 12.3450

Видно, что при выводе вещественные числа отделяются друг от друга пробелом (или знаком "-") и округляются, если не помещаются в отводимое для них поле.

Следует помнить, что целые числа при выводе без формата пишутся подряд, без пробелов, например, если K=12, L=34, а M=-5:

Writeln(K,L,M); { получим результат в виде: }

1234-5

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

Примеры операторов описаний:

VAR

A,B,C :real;

X1,X2 :real;

VAR R,D: real; {раздел описаний переменных может

встречаться несколько раз}

При записи выражений на языке Паскаль нужно помнить, что написанное выражение будет выполняться слева направо, если позволяет приоритет соседних операций и отсутствуют скобки. Знаки операций для числовых выражений и их приоритеты приведены в табл. 1.

Таблица 1. Арифметические операции Турбо-Паскаля

Название операции Знак Тип Приоритет
Операндов Результата
Умножение * Числовые Как операнды
Деление / Числовые Вещественный
Целочисленное деление div Целочисленные Целочисленные
Остаток целочисленного деления mod Целочисленные Целочисленные
Сложение + Числовые Как операнды
Вычитание - Числовые Как операнды

Обращение к функциям имеет более высокий приоритет (1-й), а скобки определяются как имеющие наивысший приоритет (0-й). Если в выражении соседние операции имеют разный приоритет, сначала выполняется операция с более высоким приоритетом, например:

Таблица 2. Запись математических выражений на Паскале.

Вид математического выражения Запись на Паскале Порядок вычислений
3,5.10-3 - 2A 3.5e-3 - 2.0*A * , -
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru (A+B)/(C-D) + , - , /
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru A*B/C/D *, /, /
sin X2 +sin 2X sin(X*X)+sqr(sin(X)) * , sin , sin , sqr , +

В программе на Паскале можно пользоваться стандартной константой, соответствующей числу ¶ (3.1415925...). Ее обозначение в программе – Pi, и при ее использовании нельзя описывать и применять другую переменную с таким же именем.

При работе в Турбо-Паскале (5, 6 или 7 версии), можно пользоваться стандартными математическими функциями, имена которых приведены в табл. 3.

Таблица 3. Математические функции в Турбо-Паскале

Назначение функции Имя функции Тип
Аргументов Результата
Абсолютное значение аргумента (модуль) abs(X) числовой как у аргумента
Арктангенс аргумента (в радианах) arctan(X) Вещественный Вещественный
Косинус (аргумент в радианах) cos(X) Вещественный Вещественный
Экспонента Х (е в степени Х) exp(X) Вещественный Вещественный
Дробная часть вещественного аргумента frac(X) Вещественный Вещественный
Целая часть вещественного аргумента int(X) Вещественный Вещественный
Натуральный логарифм веществен.аргумента ln(X) Вещественный Вещественный
Синус (аргумент в радианах) sin(X) Вещественный Вещественный
Квадрат аргумента sqr(X) Числовой Как у аргумента
Квадратный корень веществ. аргумента sqrt(X) Вещественный Вещественный

       
  Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru   Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru
 

Для применения других математических функций необходимо выражать их через приведенные в табл. 2, учитывая, что:

log10(X) = ln(X)/Ln(10.0), XY = exp(Y*ln(X)), Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru
и так далее.

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

Разбор контрольного варианта

Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru Титульный лист

Задание

Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru
С помощью операторов присваивания задать значения всем аргументам, входящим в выражение, вычислить выражение и, присвоив полученное значение переменной Х, вывести результат на экран

A=10-2 ; C=102 ; D= -2.5 ;

Таблица распределения памяти

Таблица 4 Таблица идентификаторов

Имя Тип Р-р, б Назначение
Lab_1 Имя программы - Расчет формулы
X Вещественное. Результат (выражения)
A Вещественное Аргумент
C Вещественное Аргумент
D Вещественное Аргумент
R Вещественное Рабочая переменная
Sqrt Вещ.функция Вычисление квадратного корня
Exp Вещ.функция Вычисление экспоненты
Ln Вещ.функция Вычисление натурального логарифма

Блок-схема алгоритма

     
  Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru
 
    Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru

Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru

Текст программы

PROGRAM Lab_1;

{

Лабораторная работа N 1

Вариант N 31

А.Я.Умненькая, ст. гр. Я-007

}

VAR

A,C,D,X,R :real;

BEGIN

A:=1e-2;

C:=1e2;

D:=-2.5;

R:=Exp(1.5*Ln(A));

X:=Sqrt( Exp(D/3.0*Ln(C)) - 0.5*R +

Exp(R*(C+D)/2.0/A) );

Writeln(' X= ',X:12);

END.

Результат расчета

X= 1.14453E+01

Варианты заданий

Таблица 5. Исходные данные к лабораторной работе №1

№ вар. Программируемая формула A B C D Результат
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 105 2.5 1.95862E+2
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 104 0.1 -3 -1.48774E+1
        Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 104 0.2 1.79615E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-2 -1.5 4.1 -3 1.61778E-2
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 101 -1.7 3.9 -3 -3.83304E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 103 3.5 4.1 -3 1.06442E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 101 -0.5 1.1 -1 9.65643E-1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 102 -20.5 5.1 -1.5 1.36556E+3
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-1 2.5 5.1 -1.5 -5.55037E-1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-1 1.2 5.1 2.05 1.42678E+3
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 103 7.21 - 2.79759E-1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 1.3 0.1 -.05 4.72802E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-2 1.39 3.1 0.55 1.39860E-4
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-3 21.39 23.1 -0.12 -4.73017E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-1 2.1 0.1 -3.12 -2.24257E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-3 -2.1 1.1 -3.12 1.07743E+2
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 104 122.2 1.1 -3.12 4.39587E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 103 33.3 2.1 - 3.15920E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru -103 - - 2.96095E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru -104 0.2 -0.5 5.26688E-1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 104 7.7 -0.9 0.77 9.38646E-1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 103 -0.88 0.9 1.77 -1.08136E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-1 -0.33 2.2 - 1.28586E-4
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 102 -0.33 -3.3 -2.78081E+3
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-1 -0.83 -4.4 1.4 5.31933E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 103 - - -1.40486E+1
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 2.5 0.5 - -4.37319E-3
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 1.9 103 -2.1 13.5 4.27833E+2
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 1.09 10-2 -2.4 103 -1.10303E-2
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10.3 0.2 -104 - -3.31949E+0
Лабораторная работа № 1. Алгоритмы линейной структуры - student2.ru 10-2 - 102 -2.5 1.14453E+1

Наши рекомендации