Единое окно доступа к образовательным ресурсам

Программирование и основы алгоритмизации: Учебное пособие

Голосов: 4

Пособие соответствует требованиям государственного образовательного стандарта высшего профессионального образования по направлению подготовки дипломированных специалистов 651900 - "Автоматизация и управление" (специальность 210100 -"Управление и информатика в технических системах") и направлению подготовки бакалавров 550200 -"Автоматизация и управление". Учебное пособие предназначено для студентов, изучающих дисциплину "Программирование и основы алгоритмизации". В пособии рассматривается принятая классификация вычислительных алгоритмов, приводятся примеры составления алгоритмов для различных прикладных задач и изложены основы программирования на языке С++.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
       МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального
                             образования

    Северо-Западный государственный заочный технический
                        университет




                         В. Л. Макаров




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

    Утверждено редакционно-издательским советом университета
                   в качестве учебного пособия




                         Санкт-Петербург

                               2003


                                    2



  УДК 62.52/07




Макаров В.Л. Программирование и основы алгоритмизации: Учеб.пособие.
- СПб.: СЗТУ, 2003. – 110 с.


   Пособие соответствует требованиям государственного образовательного
стандарта высшего профессионального образования по направлению подготов-
ки дипломированных специалистов 651900 –“Автоматизация и управление”
(специальность 210100 –“Управление и информатика в технических системах”
) и направлению подготовки бакалавров 550200 –“Автоматизация и управле-
ние”.


   Учебное пособие предназначено для студентов, изучающих дисциплину
“Программирование и основы алгоритмизации”. В пособии рассматривается
принятая классификация вычислительных алгоритмов, приводятся примеры со-
ставления алгоритмов для различных прикладных задач и изложены основы
программирования на языке С++.


   Рецензенты: А.Ю.Дорогов, канд.техн.наук., доц. кафедры АПУ Санкт- Пе-
тербургского     государственного      электротехнического   университета;
Р.Р.Хамидуллин, канд.техн.наук., доц. кафедры КТ и ПО Северо-Западного за-
очного государственного университета.




                 ©     Северо-Западный государственный
                     заочный технический университет, 2003


                                     3


                              Предисловие

   Цель данного учебного пособия – помочь студенту в изучении основ алго-
ритмизации и элементов программирования на языке С++. В первом разделе по-
собия наряду с изложением общих понятий приводится принятая классифика-
ция вычислительных алгоритмов. Рассматриваются линейные, разветвляющиеся
и циклические алгоритмы, а также приводятся примеры составления алгорит-
мов для различных прикладных задач. Второй раздел пособия связан с изуче-
нием основ программирования на языке С++. Методика изложения учебного
материала в обоих разделах пособия в основном связана с разборкой примеров,
а не голой формулировкой правил. Примеры, приведенные в учебном пособии,
в их большей части являются законченными реальными программами, а не от-
дельными фрагментами. Все примеры были проверены непосредственно с тек-
ста пособия, где они напечатаны в виде, пригодном для ввода в машину. При
работе над учебным пособием использовался компилятор, входящий в состав
интегрированной среды разработки Borland C++ 3.1. Хотя это не самый свежий
продукт, однако, для обучения основам С++, благодаря своей надежности и
сравнительно малому объему требуемой памяти, подходит как нельзя лучше. К
тому же выбор транслятора абсолютно не принципиален.          Следует лишь
иметь в виду, что выполнение примеров в других инструментальных средах в
ряде случаев может привести к иным результатам.
   При написании пособия автор сосредоточил усилия на подборе необходимо-
го материала из различных опубликованных источников и изложении его в наи-
более доступной форме на базе многочисленных примеров.
   В заключение автор выражает признательность рецензентам и редактору за
участие в подготовке данного учебного пособия.


                                         4

             Раздел I. Основы алгоритмизации
                                1. Общие понятия
     Разработка алгоритма является одним из основных этапов решения задачи
  на ЭВМ. Под алгоритмом понимается точное предписание, определяющее
  процесс преобразования исходных данных в искомый результат [5]. Харак-
  терными свойствами алгоритма являются определенность, массовость и ре-
  зультативность.
     Определенность алгоритма предполагает такое составление предписа -
  ния, которое не оставляет места для различных толкований или искажений
  результата.
     Массовость – определяет возможность использования любых исходных
  данных из некоторого допустимого множества. Правило, сформулированное
  только для данного случая, которое не может быть использовано при других
  исходных данных, не является алгоритмом. (Например, таблица умножения
  не является алгоритмом, а правило умножения ”столбиком “ есть алгоритм.)
     Результативность алгоритма – это его сходимость при любых допусти-
  мых данных. Процесс применения алгоритма к исходным данным называется
  алгоритмическим. Он сводится к переработке исходных данных по прави-
  лам, определяемым этим алгоритмом. Основным способом записи алгорит-
  мов в настоящее время является графический метод. Вспомним основные
  условные обозначения, используемые при графической записи алгоритма
  (рис 1.1)




Начало алгоритма   Ввод(вывод) данных              Операция           Ссылка

                                                                  1      1

                                                               Соединитель


                                  Цикл
                                                                  Комментарий



  Разветвление                               Конец алгоритма



                                    Рис. 1.1


                                     5



                  2. Классификация алгоритмов

   По типу используемого вычислительного процесса различают линейные
(прямые), разветвляющиеся и циклические алгоритмы.
   Линейные алгоритмы описывают линейный вычислительный процесс, этапы
которого выполняются однократно и последовательно один за другим. Он
включает последовательное выполнение следующих этапов:
             - ввод исходных данных в память ЭВМ;
             - вычисление искомых величин по формулам;
             - вывод результатов из памяти ЭВМ на информационный носи-
               тель.
   Пример 1. Составить алгоритм вычисления площади круга по формуле
 S = π R2. Решение показано на рис. 2.1.

                                 Начало




                                 Ввод R




                                 S = πR2



                                 Вывод S




                                  Конец


                                Рис. 2.1


   Разветвляющийся алгоритм описывает вычислительный процесс, реализа-
ция которого происходит по одному из нескольких заранее предусмотренных
направлений. Направления, по которым может следовать вычислительный про-
цесс, называются ветвями. Выбор конкретной ветви вычисления зависит от
результатов проверки выполнения некоторого логического условия. Результа-
тами проверки являются: “ истина” (да), если условие выполняется, и “ ложь ”
(нет), при невыполнении условия.


                                      6


   Пример 2. Составить алгоритм решения для функции F(x) = 1 при x > 0 и
F(x) = 0 при x ≤ 0. Блок – схема разветвляющегося алгоритма показана на
рис. 2.2.


                             Начало




                             Ввод x




                              x >0



           F=0                                  F=1




                             Вывод F




                               Конец


                              Рис.2.2

   Циклический алгоритм описывает вычислительный процесс, этапы которого
повторяются многократно. Различают простые циклы, не содержащие внутри
себя других циклов, и сложные (вложенные), содержащие несколько циклов. В
зависимости от ограничения числа повторений выделяют циклы с известным
числом повторений и циклы, число повторений которых заранее неизвестно.

            2.1. Циклы с известным числом повторений
  При организации этих циклов присутствуют стандартные элементы, сопро-
вождающие любой цикл:


                                      7
- подготовка первого выполнения цикла (присвоение счетчику цикла началь-
   ного значения);
- тела цикла, которое образуют блоки , выполняемые многократно;
- изменение значения счетчика циклов и сравнение его с конечным значением.
  Блок-схемы циклических алгоритмов существенно отличаются структурами
повторения “повторять ДО ”(повторять до выполнения условия окончания
цикла) или “повторять ПОКА ” (повторять пока выполняются условия про-
должения циклического процесса). В первом варианте проверка условий окон-
чания циклических вычислений осуществляется в конце цикла (рис. 2.3, а), а во
втором – в начале цикла (рис. 2.3, б). Как видно из рисунка, цикл “повторять
ДО ”выполняется, по крайней мере, один раз, а цикл “повторять ПОКА”может
сразу привести к выходу из цикла.


           Подготовка вы-                    Подготовка вы-
           полнения пер-                     полнения пер-
             вого цикла                        вого цикла



            Тело цикла
                                                                 да
                                               Условие
                                              окончания

            Подготовка
            выполнения
            следующего                                     нет
               цикла
                                             Тело цикла



                                             Подготовка вы-
            Условие                          полнения сле-
            окончания                          дующего
   нет                                           цикла



                        да

                а)                                    б)


                                  Рис. 2.3

  Пример 3. Составить алгоритм решения задачи вычисления N первых членов
геометрической прогрессии, используя формулу bn+1 = bn *q для любых b и q,
где n – текущий член геометрической прогрессии.


                                     8
   Блок-схема алгоритма решения данного примера показана в двух вариантах:
с использованием цикла “ДО” (рис. 2.4, а) и цикла “ПОКА”( рис. 2.4, б).


                  Ввод b,q,N                          Ввод b,q,N




                    n=1                                 n=1


                   b = b*q                                              нет
                                                        n≤N


                    Вывод b                                        да

                                                      b = b*q

                    n = n +1

                                                      Вывод b


            нет
                    n>N                                 n = n +1



                          да

                     Конец                                Конец


                             a)                               б)

                                   Рис. 2.4

          2.2. Циклы с неизвестным числом повторений
   Примером циклов, число повторений которых не задано, являются итераци-
онные вычислительные процессы. В них решение задачи реализуется путем по-
следовательного приближения к искомому результату. Процесс является цикли-
ческим, поскольку заключается в многократных вычислениях. Начальное
приближение Y0 выбирается заранее или задается по определенным правилам.
Заканчивается итерационное вычисление при выполнении условия
                              Yi – Yi – 1 ≤ d ,

                      где d – допустимая ошибка вычисления.


                                          9
   Типовая структура алгоритма итерационных вычислений имеет вид, пока-
занный на рис. 2.5.

                                                   Задание начальных
                          Y1=Y(0)                       условий

                          Y= f(Y1)                 Первая итерация


                          D = Y- Y1                Вычисление текущей
                                                        ошибки

                            Y1= Y                     Переприсвоение




                            D≤d                    Оценка точности
               нет


                                  да
                                       Рис. 2.5

   Пример 4. Составить алгоритм вычисления функции y = √ x c точностью d,
используя рекуррентную формулу yi+1 = 0.5 (x / yi + yi )
Если начальное приближение y1 = x , тогда на первом цикле вычисления будем
иметь y = 0.5 (x / y1 + y1) Блок - схема алгоритма решения примера 4 приве-
дена на рис. 2.6.

                                          Ввод x , d



                                              y1= x


                                       y=0.5(x/y1 +y1 )


                                        D = y - y1



                      2                        1


                                       Рис. 2.6


                                     10




                        2                    1


                                           y1 = y


                               да
                                                    нет
                                           D>d

                                                     нет

                                          Вывод x, y



                                            Конец



                                Рис. 2.6. Окончание


                            2.3. Сложные циклы

   Вычислительные процессы, содержащие два или более включенных друг в
друга циклов, называют сложными циклическими процессами (алгоритмами).
Цикл, который содержит внутри себя другой цикл, называют внешним в проти-
воположность внутреннему (вложенному). Необходимо учитывать, что за одно
исполнение внешнего цикла внутренний цикл повторяется многократно.
   Пример 5. Составить алгоритм вычисления и вывод на печать функции
y = x*z / (A + B) при изменении аргументов 1≤ x ≤ 10 c шагом ∆x = 2 и
1≤ z ≤4 с шагом ∆z = 0.5.
   Решение данного примера показано на рис. 2.7. Внутренний цикл организо-
ван по переменной z , а внешний – по переменной x . На каждом шаге измене-
ния переменной x (переменной внешнего цикла) переменная z (переменная
внутреннего цикла) проходит весь заданный диапазон изменения от 1 до 4 с ша-
гом 0.5. Блок вывода на печать помещен во внутреннем цикле, что позволяет
регистрировать переменные во всем диапазоне их изменения. На рис. 2.8 эта же
задача решена с помощью модифицированной блок-схемы алгоритма. В ней
циклы представлены с помощью более компактных условных обозначений,
принципы организации которых становятся ясными из рис. 2.9. Первая цифра
внутри фигуры (рис. 2.9) определяет начальное значение переменной, вторая –



    
Яндекс цитирования Яндекс.Метрика