Программирование линейных алгоритмов.

 

Варианты индивидуальных заданий.

 

N Вычисляемое выражение Исходные данные
y = abc- cba a, b, c
y = b(tg a)c + a(tg c)b a, b, c
y=logab - e tg (с/b) a, b, c
k = ln(y+x )(cos(x+y)-ctg(y2)) x, y
y = (ab + ba )1.5 – (b - c )6 a, b, c
y=(a Sin b )3c + (b tg a )4c a, b, c
Y = tg b ( a + b (a + b)0.5)0.5 a, b
y = (a + ba )0.5 – (b - c )0.3 a, b, c
m = lg(1-2x - 4x3 + x 0.5 ) / z x, z
Найти площадь симметричного (вписанного в окружность) шестиугольника, стороны которого имеют чередующиеся длины a, b, a, b, a, b a, b.
  Найти площадь симметричного (вписанного в окружность) восьмиугольника, стороны которого имеют чередующиеся длины a, b, a, b, a, b, a, b a, b
cos(x-1) 1 s= ------------ - ---------- 1 + sin0.5(x-1) ln(x+y) x, y
Найти радиус окружности, описанной вокруг симметричного шестиугольника, стороны которого имеют чередующиеся длины a, b, a, b, a, b x, y
Найти радиус окружности, описанной вокруг симметричного восьмиугольника, стороны которого имеют чередующиеся длины a, b, a, b, a, b, a, b x, y

Образец выполнения работы.

Это задание включает выполнение трех вариантов программной реализации одной и той же задачи.

В первом варианте: каждый оператор программы должен описывать ровно одну вычислительную операцию. Структура такой программы максимально соответствует синтаксису внутреннего языка ЭВМ (язык понимаемый процессором). Транслятор преобразует исходные тексты любых программ именно к такому виду. При написании этого варианта программы следует продумать рациональное (экономное) использование рабочих переменных для вычисления и хранения промежуточных результатов.

Во втором варианте: все вычисления должны быть описаны одним оператором. Этот «громоздкий» вариант программы наглядно продемонстрирует необходимость и обязательность замены «многоэтажных» записей языка математики на упорядоченную систему формул, которые максимально приближенны к структуре линейно-последовательных записей языка Pascal.

В третьем варианте: исходная математическая формула разделяется на несколько «удобных» составляющих, которые реализуются отдельными операторами. Именно в такой форме будут создаваться все последующие программы, т.к. это удобно:

- для читаемости программы (жаргон – «читабельность»),

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

Все три варианта оформляются в рабочей тетради или на подписываемых (ФИО, группа) листах формата А4. Один из вариантов (по выбору) реализуется на компьютере.

 

Требования к оформлению лабораторных работ.

 

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

- Исходная постановка задачи.

- Уточнение постановки (математическая формулировка задачи).

- Описание используемых обозначений

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

- Пояснение используемых в программе идентификаторов.

- Текст программы (листинг).

- Подбор «удобных» значений исходных данных для проверки правильности работы программы.

- Результаты расчетов по программе

 

 

Постановка задачи:

Ввести (прочитать консольно) значения исходных данных a и b, вычислить значение по формуле

=loga+b(tg3 a + ba) (1)

и распечатать (вывести на экран) результат .

Уточнение постановки задачи (математическая формулировка):

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

tg x = sin x/ cos x (2)

log xy = ln y / ln x (3)

xy = e y ln x (4)

x3 = x x x (5)

Алгоритм программы (блок-схема).

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

 

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

1). Описание используемых обозначений:

a, b- читаемые исходные данные

вычисляемый результат

p1, p2, p3рабочие переменные для хранения значений промежуточных вычислений.

2). Ввод исходных данных - a, b.

3). Вычисление значения основания логарифма. Результат помещаем в рабочую переменную p1

a + b p1

Последовательность операций вычисляющих tg3 a согласно формулам (2) и (5):

4). Sin a p2

5) Cos a p3

6). p2 / p3 p2 {теперь в рабочей переменной p2 значение tg a }

7). p2 ´ p2 p3

8). p2 ´ p3 p2 {теперь в рабочей переменной p2 значение tg3 a }

Последовательность операций вычисляющих значение ba согласно формуле (4)

9). Ln b p3

10). a ´ p3 p3

11). e p3 p3 {теперь в рабочей переменной p3 значение ba }

12). p2 + p3 p2 {теперь в рабочей переменной p2 значение tg3 a + ba }

Завершающая последовательность операций вычисляющих , т.е. вычисляем согласно формуле (3) значение логарифма от p2 по основанию a+b

13). Ln p1 p1

14). Ln p2 p2

15). p2 / p1

16). Печать результата .

 

Пояснение используемых в программе идентификаторов.

Язык математики a b p1 p2 p3
Язык Pascal A B BT P1 P2 P3

 

Текст программы (листинг) представляет построчный (дословный) перевод всех 16-ти пунктов вышеизложенного алгоритма на язык Pascal.

Программа набирается в структурированном виде: внешне, программа на языке Pascal напоминает стихотворный текст, в котором куплеты (у нас – блоки) выделяются как пустыми строками, так и смещением их начала. Каждый блок желательно сопроводить текстовым комментарием.

 

Program Nov001;

{Блок описания рабочих перемеенных}

Var A, B, BT, P1, P2, P3: real;

 

Begin

{Блок консольного ввода исходных данных}

Write(‘Введите число а=’); Readln(A);

Write(‘Введите число в=’); Readln(B);

 

{ блок вычисление значения tg a в рабочей переменной p2 }

P1:=A+B;

P2:=Sin(A);

P3:=Cos(A);

P2:=P2/P3;

{ блок вычисление значения tg3 a в рабочей переменной p2 }

P3:=P2*P2;

P2:=P2*P3;

 

{ блок вычисление значения ba в рабочей переменной p3 }

P3:=ln(B);

P3:=A*P3;

P3:=Exp(P3);

 

{ блок вычисление логарифмируемого значения ba+ tg3 a

в рабочей переменной p3 }

P2:=P2+P3;

 

{блок вычисление логарифма – искомого результата }

P1:=ln(P1);

P2:=ln(P2);

BT:=P2/P1;

 

{блок вывода результата на экран }

Writeln(‘Ответ БЕТА=’, BT:7:3);

End.

Подбор «удобных» значений исходных данных дляпроверки

правильности работы программы.

Если взять a = 3 , то значение tg a 0

Если взять b=7, то логарифм будет десятичным и

Ответ lg (0 + 73) = 3´ lg72.53

 

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

 

Результаты расчетов по программе (срисовка экрана).

Введите число а=3

Введите число в=7

Ответ БЕТА= 2.535

 

Вариант программы реализующий все вычисления в одном операторе.

Program Nov002;

Var A, B, BT: real;

Begin

{Блок консольного ввода исходных данных}

Write(‘Введите число а=’); Readln(A);

Write(‘Введите число в=’); Readln(B);

 

{блок вычисление искомого результата }

BT:=Ln( Sin(a)*Sin(a)*Sin(a)/Cos(a)/Cos(a)/Cos(a)+exp(a*ln(b)) )/Ln(a+b);

 

{блок вывода результата на экран }

Writeln(‘Ответ БЕТА=’, BT:7:3);

End.

 

Вариант программы с вычислением и отладочной печатью

промежуточных значений.