Программирование линейных алгоритмов.
Варианты индивидуальных заданий.
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´ lg7≈2.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.
Вариант программы с вычислением и отладочной печатью
промежуточных значений.