- •1. Краткие теоретические сведения
- •1.4. Пустой оператор
- •1.5. Составной оператор (блок)
- •1.6. Операторы начала и конца программы
- •Int main()
- •1.7. Оператор return
- •1.8. Оператор присваивания
- •1.8.1. Множественное присваивание
- •1.8.2. Ошибки при присваивании
- •1.8.3. Не путайте операторы равенства и присвоения
- •1.8.4. Составные операторы присвоения
- •1.8.6. Присваивание значения при объявлении
- •1.9. Операторы ввода-вывода
- •1.10. Функции ввода и вывода
- •1.10.1. Функция printf
- •1.10.2. Функция scanf
- •1.11. Операторы потокового ввода и вывода
- •1.11.1. Использование cout для отображения вывода на экран
- •1.11.2. Использование cout для вывода чисел
- •1.11.3. Вывод нескольких значений одновременно
- •1.11.4. Использование специальных символов вывода
- •1.11.5. Другие специальные символы
- •1.11.5. Вывод восьмеричных и шестнадцатеричных значений
- •1.11.6. Вывод на стандартное устройство ошибок
- •1.11.7. Управление шириной вывода
- •1.11.8. Директива #define
- •1.11.9. Оператор потокового вывода cin
- •1.11.10. Второе знакомство с cin
- •1.11.11. Следите за ошибками переполнения
- •1.11.12. Следите за ошибками несовпадения типов
- •1.11.13. Чтение символьных данных
- •1.11.14. Чтение слов с клавиатуры
- •1.11.15. Чтение строковых данных
- •1.12. Комментарии. Использование пробелов
- •1.13. Линейный вычислительный процесс
- •1.16. Таблица выбора идентификаторов
- •2. Задание
- •2.10. Задания
- •2.10.1. Задание 1
- •2.10.2. Задание 2
- •2.10.3. Задание 3 (домашнее)
- •3. Выводы
- •4. Требование к отчету
- •5. Вопросы для самоконтроля
- •Литература
- •Оглавление
1.13. Линейный вычислительный процесс
Как уже отмечалось (лабораторная работа № 3), в программировании можно выделить три характерных типа вычислительных процессов: линейный, разветвляющийся и циклический. Рассмотрим более подробно первый из них и его реализацию в С++.
Линейным вычислительным процессом называют процесс, в котором операторы выполняются последовательно один за другим, в естественном и единственном порядке следования.
На блок-схеме линейный вычислительный процесс представляется последовательностью блоков. При этом на схеме блоки, выражающие автономные этапы вычислений, размещаются сверху вниз в порядке их выполнения. Для этих процессов характерно, что направления вычислений не зависят от исходных данных или промежуточных результатов.
Пример 5.35. Составить блок-схему алгоритма и написать программу на алгоритмическом языке С++ для вычисления значения функции
где = 5,6; = -11,44; с = 0,01; значение x задать вводом.
Очевидно, что вычисление функции y можно упростить, если предварительно найти значение выражения , которое обозначить через z. Тогда вычисление функции y будет проходить в такой последовательности: вначале вычислим , затем определим значение выражения
Однако, чтобы ЭВМ определила численное значение функции y дополнительно, необходимо, во-первых, ввести исходные данные (т.е. численное значение переменной x); во-вторых, присвоить численные значения коэффициентам , и с; в-третьих, вычислить численное значение искомой функции y; в-четвертых, вывести значение y из ЭВМ и, в-пятых, остановить машину. Таким образом, последовательность выполнения операций будет:
1) ввод исходного значения переменной x;
2) присвоение коэффициентам , и с численных значений: = 5,6; = -11,44; с = 0,01;
3) вычисление и ;
4) вывод результата y;
5) останов машины.
Используя начертание символов из ГОСТа 19003-80 и правила выполнения блок-схем по ГОСТу 19002-80, изобразим блок-схему вычисления функции рассматриваемого примера (см. рис. 5.2.) В алгоритме все блоки имеют последовательное соединение и выполняются один за другим в порядке следования их номеров.
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод |
|
|||
|
= 5,6 |
|
|
Ввод х |
|
|
|
, , с, x,у |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= - 11,44 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с = 0,01 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||||||
Рис. 5.2. Блок-схема алгоритма линейного вычислительного процесса примера 5.35 |
|||||||||||||
|
Обычно алгоритм детализируется до элементарных операций. Так, блок 6 содержит 5 операций, а блок 7 будет включать в себя три подпрограммы для определения стандартных функций численными методами. Более того, блоки 5 и 8 также связаны с подпрограммами перевода чисел из десятичной системы счисления в двоичную при вводе и обратно при выводе.
Степень детализации алгоритма выбирается такой, чтобы установить лишь основную последовательность выполнения машиной задачи. Та последовательность, которая очевидна и не представляет трудности для составления программы, не рассматривается. В целом детализация алгоритма в определенной степени произвольная и определяется самим программистом. При этом преследуется цель – однозначно формализованно описать последовательность выполнения задачи при минимальной детализации процесса.
В самих блоках названия операций обычно не записывают. Сама форма блока м его содержание дают полное представление об операциях: блок 5 – ввод x; блоки 2 - 4 – присваивание коэффициентам , и с численных значений: = 5,6; = -11,44; с = 0,01; блоки 6 и 7 – вычисления функций по приведенным формулам; блок 8 – вывод результата у и значений , , с и x ; блоки 1 и 9 устанавливают начало и конец вычислительного процесса.