русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Реализация линейных алгоритмов


Дата добавления: 2015-07-04; просмотров: 3159; Нарушение авторских прав


 

 

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

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

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

Примеры реализации линейного алгоритма

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

Y= .

Результаты вычислений вывести с поясняющим текстом.

Решение.

Анализ постановки задачи

Требуется выполнить вычисления по заданной формуле, используя линейный алгоритм решения задачи. Прежде, чем вычислять функцию, необходимо определить значения аргументов а,b,x. После вычислений значения выво­дятся на экран. Другими словами, в алгоритме можно выделить три этапа: ввод исходных данных, вычисления, вывод результатов.

Имена объектов задачи (а следовательно, и объектов программы) фак­тически заданы: аргументы—А, B, X, функция—Y.

Все объекты — переменные вещественного типа.

Ввод исходных данных в задаче — ввод трех переменных. Его можно реализовать одним оператором, например в виде

WRITE(‘Введите аргументы A, B, X: ’);

READLN(A,B,X);

Детализируем этап вывода результатов. Форма вывода в постановке задачи не определена, поэтому принимаем макет печати результатов в виде:

Результаты решения задачи

Аргументы функции: А= **.** В= **.**, X= **.**

Значение функции: Y = *****.**

Здесь и далее символ "*" обозначает любую цифру, а символ "." – десятичную точку, разделяющую целую и дробную части.



Макет вывода результатов определен, а его реализация — последовательность операторов WRITELN - не представляет каких-либо затруднений.

Детализируем этап вычислений. Поскольку задана одна формула, то вычисления можно реализовать одним оператором присваивания. Однако при этом рекомендуется избегать сложных выражений. С этой целью можно использовать разные приемы, например, дополнительные обозна­чения: t=1+lg2|x|, z=x2+a2+56.78 l0-8 b2, v=l+e-ax ,w=1+е-sin b.

В результате для вычисления функции получим выражение:

Y = SQR-(t -z/v/w).

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

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

Y:= LN(ABS(X))/LN(10);

Y:=1+Y*Y;

Y:=Y*(X*X+A*A+56.78E-8*B*B);

Y:=Y/(1+EXP(-A*X);

Y:=Y/(1.+EXP(-SIN(B));

Y:=SQR(Y);

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

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

PROGRAM Prim11;

{Программа вычисления функции}

{А,В,Х —Аргументы}

{Y—функции}

VAR

A,B,X,Y : REAL;

BEGIN

WRITE(‘Введите аргументы A, B, X: ’);

READLN(A,B,X);

{Этап вычислений}

Y := LN(ABS(X))/LN(10);

Y :=1+Y*Y;

Y:=Y*(X*X+A*A+56.78E-8*B*B);

Y:=Y/(1+EXP(-A*Х));

Y:=Y/(1+EXP(-SIN(B)));

Y:=SQR(Y);

{Этап вывода результатов}

WRITELN(‘Результаты решения задачи');

WRITELN (‘Аргументы функции:');

WRITELN (‘A= ‘,A:5:2,’ B = ‘,В:5:2,’ Х= ‘,Х:5:2);

WRITELN (‘Значение функции — Y= ‘,Y:8:2);

END.

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

Пример 2.Вычислить высоты треугольника со сторонами a, b, c, используя формулы:

,

,

,

где p = (a+b+c)/2.

Решение.

При решении данной задачи для исключения повторений следует вычислять не по приведенным выше формулам непосредственно, а используя промежуточную переменную

,

тогда ha = t/a, hb = t/b, hc = t/c.

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

procedure TForm1.Button2Click(Sender: TObject);

VAR

a, b , c, t, p,ha,hb,hc: REAL;

BEGIN

a:= StrToFloat(InputBox(‘Ввод', 'Введите a',''));

b:= StrToFloat(InputBox(' Ввод ', ' Введите b',''));

c:= StrToFloat(InputBox('Ввод', ' Введите c',''));

 

p:= (a+b+c)/2;

t:= 2*SQRT(p*(p-a)*(p-b)*(p-c));

ha:=t/a;

hb:=t/b;

hc:=t/c;

RichEdit1.Text:=RichEdit1.Text+ floatToStr(ha) +chr(13) + floatToStr(hb);

RichEdit1.Text:=RichEdit1.Text+ chr(13) + floatToStr(hc);

ShowMessage(floatToStr(ha) + chr(13)+ chr(10) + floatToStr(hb) + chr(13)+ chr(10) + floatToStr(hc));

ShowMessage(floatToStr(ha) + ' ' +floatToStr(hb) + ' '+floatToStr(hc));

end;

end.

END.

 



<== предыдущая лекция | следующая лекция ==>
Операторы вывода. | Циклические алгоритмы.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.468 сек.