В Камаев - Технологии программирования

Тут можно читать онлайн В Камаев - Технологии программирования - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство Издательство «Высшая школа», год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

В Камаев - Технологии программирования краткое содержание

Технологии программирования - описание и краткое содержание, автор В Камаев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
В книге изложены технологии структурного программирования, объектно-ориентированного проектирования, визуального программирования, технология, основанная на абстракции данных Дейкстеры. Рассмотрено использование средств автоматизации проведения программных разработок.
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».

Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)

Технологии программирования - читать книгу онлайн бесплатно, автор В Камаев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

WriteLn ("Нет решения ')

end;

if

then

begin

{ Вывод сообщения: бесчисленное множество решений уравнения }

Write ('бесчисленное множество решений уравне');

WriteLn ('ния (корни — любые числа)');

end;

В последней альтернативе одна строка выводится одним оператором.

Далее в соответствии с действиями запишем логические условия выполнения действий. При этом простым сравнением проверять на равенство значения двух вещественных переменных нельзя. Например, при сравнении f = g, считающихся равными 5, даже если g = 5,00000, в силу округлений при вычислениях значение f может оказаться равным либо 4,99999, либо 5,00000, либо 5,00001. Согласно данному примеру путем простой проверки на равенство факт равенства будет установлен в одном случае из трех.

Для надежного сравнения двух вещественных чисел используют прием использования неравенства |f — g| ≤ ε, где ε — заведомо малое число. На языке программирования это неравенство имеет вид

Abs (f — g) <= 1е — 6

Продолжаем кодирование структуры. Глядя на действия, записываем логические условия выполнения действий. Входная информация: a, b, c.

{ Само решение квадратного уравнения }

if (Abs(а) > 1e — 6)

then

begin

{ Продолжение решения с вычислением дискриминанта }

end;

if ((Abs (a) <= 1e — 6) and (Abs (b) > 1e — 6))

then

begin

{ Решение линейного уравнения }

end;

if ((Abs(a) <= 1e — 6) and (Abs(b) <= 1e — 6 and (Abs(c) > 1e — 6))

then

begin

{ Вывод сообщения: линейное уравнение не имеет решения }

WriteLn ('Нет решения');

end;

if ((Abs(a) <= 1e — 6) and (Abs(b) <= 1e — 6 and (Abs(c) <= 1e — 6))

then

begin

{ Вывод сообщения: бесчисленное множество решений уравнения }

Write ('бесчисленное множество решений уравне');

WriteLn ('ния (корни — любые числа)');

end;

Осуществим сборку получившейся программы. При сборке удалим избыточные комментарии и избыточные операторные скобки begin — end, охватывающие лишь один оператор. Испытаем полученную программу на тестах a = 0, b = 0, c = 0 a = 0, b = 0, c = 2. Собранный вариант программы:

Program Kvadrat;

{ Программа решения квадратного уравнения

вида a*x*x + b*x + c = 0 с произвольными значениями

коэффициентов a, b, c типа вещественный }

Uses

Crt, Dos;

Var

a, b, c: Real; {Коэффициенты квадратного уравнения}

xl, x2: Real; {Корни квадратного уравнения}

begin

ClrScr; { Очистка экрана }

{Вывод информации о назначении программы}

WriteLn ('Программа решения квадратного уравнения');

Write ( 'вида a*x*x + b*x + c = 0 с произвольными');

Write ('значениями');

WriteLn ('коэффициентов a, b, c типа вещественный');

WriteLn;

{Ввод значений коэффициентов а, b, с};

Write ('Укажите значение коэффициента а = ');

ReadLn(a); { Ввод а}

Write ('Укажите значение коэффициента b = ');

ReadLn(b); { Ввод b}

Write ('Укажите значение коэффициента с = ');

ReadLn(c); { Ввод с}

{ Вывод проверочно-протокольной информации

о введенных значениях коэффициентов a, b, c }

WriteLn;

WriteLn ('Решается квадратное уравнение');

Write (a:10:4, '*x*x + ', b:10:4, '*x + ');

WriteLn(с:10:4, ' = 0:');

{ Само решение квадратного уравнения }

if (Abs (a) > 1e — 6)

then

begin

{ Продолжение решения с вычислением дискриминанта }

end;

if ((Abs(a) <= 1e — 6) and (Abs(b) > 1e — 6))

then

begin

{ Решение линейного уравнения }

end;

if ((Abs(a) <= 1e — 6) and (Abs(b) <= 1e — 6) and (Abs(c) > 1e — 6))

then

WriteLn ('Нет решения');

if ((Abs(a) <= 1e — 6) and (Abs(b) <= 1e — 6 and (Abs(c) <= 1e — 6))

then

begin

Write ('бесчисленное множество решений уравне');

WriteLn ('ния (корни — любые числа)');

end;

WriteLn;

Write ('Для завершения программы нажмите');

WriteLn ('любую клавишу…');

repeat until KeyPressed; { Цикл ожидания нажатия любой клавиши }

end.

Декомпозируем действие "Решение линейного уравнения". Это действие представляет цепочку из двух элементарных операторов. Выполним проверку информационной согласованности действий:

Входная информация: b, с.

{ Решение линейного уравнения }

x1:= — c/b;

WriteLn ('уравнение линейное x = ', x1: 10: 4);

Декомпозируем действие "Продолжение решения с вычислением дискриминанта". Данное действие представляет ЦЕПОЧКУ СЛЕДОВАНИЙ из двух СЛЕДОВАНИЙ.

Входная информация: а, Ь, с

{ Продолжение решения с вычислением дискриминанта }

{ Вычисление дискриминанта квадратного уравнения }

d:= Sqr (b) — 4.0*а*с; { Решение уравнения }

Переменная d у нас не описана, поэтому в секцию Var необходимо добавить строку описания:

d: Real; { Значение дискриминанта }

Декомпозируем действие "Решение уравнения". Согласно табл. 5.3 данное действие представляет ЦЕПОЧКУ АЛЬТЕРНАТИВ из трех альтернатив в цепочке. Осуществив детализацию этих альтернатив в установленном порядке, получим:

Входная информация: a, b, c, d.

{ Решение уравнения }

if d > 1e-6

then

begin

{ Расчет двух различных корней }

end;

if ((d >= -1e-6) and (d <= 1e-6))

then

begin

{ Расчет двух равных корней }

WriteLn ('два равных корня x = ', (-b)/(2.0 * а):10:4);

end;

if d < -1e-6 then begin

{ Вывод надписи: уравнение не имеет решения }

WriteLn ('уравнение не имеет решения');

end;

Декомпозируем действие "Расчет двух различных корней". Это действие представляет цепочку из трех элементарных операторов. Выполним проверку информационной согласованности действий:

Входная информация: a, b, c, d

{ Расчет двух различных корней }

x1:= ((-b) — Sqrt (d))/(2.0*a);

x2:= ((-b) + Sqrt (d))/(2.0*а);

Write ('два различных корня x1 = ', x1:10:4);

WriteLn (' x2 = ', х2:10:4);

Здесь вывод одной строки осуществлен двумя операторами. Осуществим сборку всей программы, удалив избыточные комментарии и избыточные операторные скобки begin — end, охватывающие лишь один оператор. Испытаем полученную программу на всех заранее подготовленных тестах. Собранный вариант программы:

Program Kvadrat;

{ Программа решения квадратного уравнения

вида a*x*x + b*x + c = 0 с произвольными значениями

коэффициентов a, b, c типа вещественный }

Uses

Crt, Dos;

Var

a, b, c: Real; {Коэффициенты квадратного уравнения}

xl, x2: Real; {Корни квадратного уравнения}

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


В Камаев читать все книги автора по порядку

В Камаев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Технологии программирования отзывы


Отзывы читателей о книге Технологии программирования, автор: В Камаев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x