ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ vba  ms excel · УДК 004.02(075.8) ББК 32.973-018я73...

27
Â. Ì. Ëåáåäåâ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA  MS EXCEL УЧЕБНОЕ ПОСОБИЕ ДЛЯ АКАДЕМИЧЕСКОГО БАКАЛАВРИАТА Ðåêîìåíäîâàíî Ó÷åáíî-ìåòîäè÷åñêèì îòäåëîì âûñøåãî îáðàçîâàíèÿ â êà÷åñòâå ó÷åáíîãî ïîñîáèÿ äëÿ ñòóäåíòîâ âûñøèõ ó÷åáíûõ çàâåäåíèé, îáó÷àþùèõñÿ ïî èíæåíåðíî-òåõíè÷åñêèì, ýêîíîìè÷åñêèì è åñòåñòâåííîíàó÷íûì íàïðàâëåíèÿì Ìîñêâà Þðàéò 2017 Êíèãà äîñòóïíà â ýëåêòðîííîé áèáëèîòå÷íîé ñèñòåìå biblio-online.ru ФИНАНСОВЫЙ УНИВЕРСИТЕТ ПРИ ПРАВИТЕЛЬСТВЕ РОССИЙСКОЙ ФЕДЕРАЦИИ

Upload: others

Post on 26-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

Â. Ì. Ëåáåäåâ

ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL

УЧЕБНОЕ ПОСОБИЕ ДЛЯ АКАДЕМИЧЕСКОГО БАКАЛАВРИАТА

Ðåêîìåíäîâàíî Ó÷åáíî-ìåòîäè÷åñêèì îòäåëîì âûñøåãî îáðàçîâàíèÿ â êà÷åñòâå ó÷åáíîãî ïîñîáèÿ äëÿ ñòóäåíòîâ âûñøèõ ó÷åáíûõ çàâåäåíèé,

îáó÷àþùèõñÿ ïî èíæåíåðíî-òåõíè÷åñêèì, ýêîíîìè÷åñêèì è åñòåñòâåííîíàó÷íûì íàïðàâëåíèÿì

Ìîñêâà Þðàéò 2017

Êíèãà äîñòóïíà â ýëåêòðîííîé áèáëèîòå÷íîé ñèñòåìåbiblio-online.ru

ФИНАНСОВЫЙ УНИВЕРСИТЕТ ПРИ ПРАВИТЕЛЬСТВЕ РОССИЙСКОЙ ФЕДЕРАЦИИ

Page 2: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

УДК 004.02(075.8)ББК 32.973-018я73 Л33

Автор:Лебедев Виктор Михайлович — доцент, кандидат технических наук, доцент кафе-

дры прикладной информатики Департамента математики и информатики Финансо-вого университета при Правительстве Российской Федерации.

Рецензенты:Кондрашов Ю. Н. — профессор, доктор технических наук, профессор кафедры при-

кладной информатики Финансового университета при Правительстве Российской Федерации;

Крылов С. С. — кандидат физико-математических наук, доцент, декан факультета прикладной математики и физики Московского авиационного института.

Л33 Лебедев, В. М.

Программирование на VBA в MS Excel : учеб. пособие для академического бака-лавриата / В. М. Лебедев. — М. : Издательство Юрайт, 2017. — 272 с. — Серия : Бака-лавр. Академический курс. Модуль.

ISBN 978-5-9916-7880-3

Рассматриваются вопросы макропрограммирования в OpenOffi ce и среде MS Excel, а также возможности языка VBA, что позволяет создавать собственные макросы и при-обрести базовое понимание парадигмы, лежащей в основе интегрированной среды раз-работки приложений в MS Excel и OpenOffi ce 4.1.1. Данное учебное пособие рассчитано на изучение и практическое освоение основ программирования в среде VBA с целью создания приложений для решения прикладных задач в среде MS Excel.

Соответствует актуальным требованиям Федерального государственного образо-вательного стандарта высшего образования.

Предназначено в основном для студентов очной и сокращенной форм обучения по направлению «Прикладная информатика» (программа подготовки бакалавра), начинающих разработчиков приложений, создаваемых на языке Visual Basic for Application (VBA) в среде Microsoft Offi ce. Будет также полезно для широкого круга читателей, занимающихся проблемами автоматизации документооборота в средах Microsoft Offi ce и OpenOffi ce.

УДК 004.02(075.8)ББК 32.973-018я73

ISBN 978-5-9916-7880-3© Лебедев В. М., 2016© ООО «Издательство Юрайт», 2017

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.Правовую поддержку издательства обеспечивает юридическая компания «Дельфи».

Page 3: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

3

Îãëàâëåíèå

Предисловие ..................................................................................... 7

Раздел IТЕОРИЯ ПРОГРАММИРОВАНИЯ

Глава 1. Принципы разработки алгоритмов ........................................111.1. История развития алгоритмов .....................................................................................111.2. Основы алгоритмизации ................................................................................................131.3. Средства представления алгоритма ...........................................................................141.4. Требования оформления схем алгоритмов ..............................................................171.5. Типовые алгоритмические конструкции..................................................................20

1.5.1. Линейная конструкция .......................................................................................201.5.2. Разветвляющаяся конструкция .......................................................................211.5.3. Циклические алгоритмы ....................................................................................22

Резюме ..........................................................................................................................................26Вопросы для самоконтроля ...................................................................................................26Упражнения для самостоятельного выполнения ...........................................................27

Глава 2. Языки и методы программирования ......................................282.1. Характеристика уровней и среды разработки языков программирования ...282.2. История развития и сравнительные характеристики

алгоритмических языков программирования ........................................................312.3. История создания семейств языка программирования Basic ...........................332.4. Основные понятия объектно-ориентированного программирования ...........342.5. Основные этапы разработки программного обеспечения ..................................35Резюме ..........................................................................................................................................37Вопросы для самоконтроля ...................................................................................................39

Раздел IIВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА VBA

Глава 3. Первичное ознакомление с редактором VBA .........................433.1. Настройка параметров безопасности и запуск редактора VBA .......................433.2. Окна VBE ............................................................................................................................47Резюме ..........................................................................................................................................49Вопросы для самоконтроля ...................................................................................................50

Глава 4. Синтаксис языка VBA ..........................................................524.1. Алфавит и правила именования ..................................................................................524.2. Типы данных ......................................................................................................................534.3. Описание констант, переменных ................................................................................56

Page 4: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

4

4.4. Массивы ...............................................................................................................................604.5. Выражения ..........................................................................................................................62

4.5.1. Арифметические выражения ............................................................................634.5.2. Выражения отношения .......................................................................................634.5.3. Логические выражения .......................................................................................644.5.4. Строки и символьные выражения ..................................................................65

4.6. Операторы ...........................................................................................................................654.6.1. Оператор присваивания .....................................................................................664.6.2. Конструкции управления ..................................................................................664.6.3. Циклы .......................................................................................................................73

4.7. Процедуры и функции ....................................................................................................774.7.1. Пользовательские процедуры ..........................................................................784.7.2. Пользовательские функции ..............................................................................814.7.3. Стандартные функции ........................................................................................844.7.4. Встроенные окна диалога ...................................................................................88

Резюме ..........................................................................................................................................93Вопросы и задания для самоконтроля ...............................................................................94Упражнения для самостоятельного выполнения ...........................................................95

Раздел IIIСОЗДАНИЕ ОКОННЫХ ПРИЛОЖЕНИЙ

И ОТЛАДКА ПРОГРАММГлава 5. Объектно-ориентированное программирование и среда разработки VBA ................................................................. 101

5.1. Понятия объектно-ориентированного программирования в VBA .............. 1025.2. Среда разработки VBA ................................................................................................ 104Резюме ....................................................................................................................................... 110Вопросы для самоконтроля ................................................................................................ 110

Глава 6. Экранные формы и основные элементы управления VBA ..... 1116.1. Общие свойства и события элементов управления ........................................... 111

6.1.1. Общие свойства .................................................................................................. 1116.1.2. Обработка событий мыши и клавиатуры .................................................. 112

6.2. Экранные формы ........................................................................................................... 1186.3. Основные элементы управления .............................................................................. 121

6.3.1. Метка ...................................................................................................................... 1216.3.2. Текстовое поле .................................................................................................... 1216.3.3. Командная кнопка ............................................................................................. 1226.3.4. Флажок .................................................................................................................. 1236.3.5. Переключатель ................................................................................................... 1236.3.6. Рамка ...................................................................................................................... 1246.3.7. Список ................................................................................................................... 1246.3.8. Комбинированный список .............................................................................. 126

6.4. Примеры программ с использованием элементов управления ..................... 1266.4.1. Пример программы вычисления значения функции с использованием разветвляющего алгоритма ................................................... 126

Page 5: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

5

6.4.2. Пример программы с использованием пользовательских функций и элемента комбинированного списка ............................................... 131

Резюме ....................................................................................................................................... 136Вопросы для самоконтроля ................................................................................................ 136Упражнения для самостоятельного выполнения ........................................................ 137

Глава 7. Обработка ошибок и отладка программ ............................... 1407.1. Отладка программ в VBA ........................................................................................... 141

7.1.1. Классификация средств отладки ................................................................. 1417.1.2. Панель отладки и команды меню ................................................................. 1427.1.3. Окно Immediate .................................................................................................. 1457.1.4. Окно Locals .......................................................................................................... 1467.1.5. Окно Watches ...................................................................................................... 146

7.2. Обработка ошибок выполнения ............................................................................... 1487.2.1. Инструкции обработки ошибок .................................................................... 1487.2.2. Объект Err ............................................................................................................ 151

Резюме ....................................................................................................................................... 154Вопросы для самоконтроля ................................................................................................ 155Задания для самостоятельного выполнения ................................................................ 156

Раздел IVРАБОТА С VBA В ПРИЛОЖЕНИИ MS EXCEL

Глава 8. Объектная модель приложения MS Excel............................. 1598.1. Краткое описание назначения и возможностей Excel ...................................... 1608.2. Основные объекты приложения MS Excel ........................................................... 163

8.2.1. Объект Application ............................................................................................ 1648.2.2. Коллекция Workbooks ..................................................................................... 1688.2.3. Коллекция Worksheets ..................................................................................... 1708.2.4. Объекты Range, Selection ................................................................................ 173

8.3. Дополнительные возможности MS Excel и VBA для работы с объектами ...1838.3.1. Цикл For Each … Next ....................................................................................... 1838.3.2. Конструкция Set ................................................................................................. 1848.3.3. Конструкция With ... End With ..................................................................... 1858.3.4. Элемент управления RefEdit ......................................................................... 1858.3.5. Создание диалоговых листов......................................................................... 1878.3.6. Создание макросов с помощью макрорекордера .................................... 195

Резюме ....................................................................................................................................... 201Вопросы для самоконтроля ................................................................................................ 203Упражнения для самостоятельного выполнения ........................................................ 204

Глава 9. Диаграммы. Взаимодействие приложений MS Offi ce ............ 2069.1. Объекты диаграмм ........................................................................................................ 207

9.1.1. Объект Chart ....................................................................................................... 2079.1.2. Методы объектов ChartObjects и Charts ................................................... 209

9.2. Взаимодействие приложений MS Offi ce ................................................................ 2169.2.1. Запуск другого приложения .......................................................................... 2169.2.2. Использование ранней и поздней привязки в автоматизации .......... 218

Page 6: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

9.2.3. Управление приложением Word из Excel ................................................. 222Резюме ....................................................................................................................................... 226Вопросы для самоконтроля ................................................................................................ 227Упражнения для самостоятельного выполнения ........................................................ 227

Раздел VОСОБЕННОСТИ ВЗАИМОДЕЙСТВИЯ

ПРИЛОЖЕНИЙ MS EXCEL И ОPENOFFICE.ORG CALCГлава 10. Возможности и среда разработки пакета ОpenOffi ce.org ..... 231

10.1. Состав и возможности ОpenOffi ce.org ................................................................. 23110.2. Интегрированная среда разработки ОpenOffi ce Calc ..................................... 23410.3. Политика безопасности ............................................................................................. 23610.4. Создание макроса в среде IDE ................................................................................ 23610.5. Автоматическое создание макросов ...................................................................... 241Резюме ....................................................................................................................................... 245Вопросы для самоконтроля ................................................................................................ 246

Глава 11. Сравнение сред программирования VBA и OO.o Basic ........ 24711.1. Введение в язык OO.o Basic и объектную модель OpenOffi ce Calc ........... 247

11.1.1. Структура и возможности языка OO.o Basic......................................... 24711.1.2. Диалоги ............................................................................................................... 24911.1.3. Элементы управления ................................................................................... 25011.1.4. Обработка событий ......................................................................................... 252

11.2. Сравнение конструкций VBA и OO.o Basic и проблемы импорта ............ 25211.2.1. Манипулирование объектами электронной таблицы ........................ 25311.2.2. Манипулирование ячейками электронной таблицы .......................... 25411.2.3. Проблемы импорта в OpenOffi ce Calc ...................................................... 254

11.3. Импорт документов MS Excel c макросами базового языка VBA ............. 25511.4. Импорт документов MS Excel c макросами, использующими

объекты электронной таблицы ............................................................................... 25811.5. Импорт документов MS Excel c формами и диалоговыми листами ......... 264Резюме ....................................................................................................................................... 268Вопросы для самоконтроля ................................................................................................ 271Упражнения для самостоятельного выполнения ........................................................ 271

Новые издания по дисциплине «Программирование на VBA в MS Excel» и смежным дисциплинам .............................................. 273

Page 7: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

7

Ïðåäèñëîâèå

В данном учебном пособии рассматриваются вопросы макропрограм-мирования в MS Excel и OpenOffi ce, а также возможности языка VBA и StarBasic, что позволяет создавать собственные макросы и приобрести базовое понимание парадигмы, лежащей в основе интегрированной среды разработки приложений в MS Excel и OpenOffi ce 4.1.1.

Пособие состоит из пяти разделов.В первом разделе излагаются: теоретический материал по основным

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

Во втором разделе приведен синтаксис языка VBA с основными языко-выми конструкциями, которые являются общими для большинства прило-жений Microsoft Offi ce. Также здесь осуществляется первичное ознакомле-ние с интегрированной средой разработки в VBA, в частности с редактором Visual Basic Editor (VBE).

В третьем разделе рассмотрены вопросы объектно-ориентированного программирования, создания экранных окон на основе техно логии пользо-вательских форм UserForm и элементов управления VBA, обработки оши-бок и отладки программ. Также продолжено ознакомление с интегрирован-ной средой разработки в VBA с позиций создания оконных приложений.

В четвертом разделе рассмотрена объектная модель Excel. Здесь также рассмотрен скелет документа Excel. При создании нового документа из мно-гочисленных библиотек объектов MS Office по умолчанию выбирается несколько. Их объекты и составляют модель документа. Центральное место в модели документов MS Excel занимают, естественно, объекты библиотеки MS Excel. Создаваемая по умолчанию в момент открытия новой рабочей книги модель состоит из объектов, входящих в состав библиотек MS Excel.

В пятом разделе приводится краткий обзор состава и возможностей пакета Оpenoffice.org (OO.o). Рассматриваются его объектная модель и языковые конструкции языка OO.o Basic (StarBasic) только в рамках его сравнения и взаимодействия с приложением MS Excel.

В основу настоящего учебного пособия легли материалы лекций и прак-тических занятий, которые автор вел в течение нескольких лет по дис-циплине «Программирование офисных приложений» для студентов 1—2 курсов Финансового университета, обучающихся по направлению «Прикладная информатика» (программа подготовки бакалавра). В основ-ном пособие предназначено для студентов очной и сокращенной форм обучения по направлению «Прикладная информатика» (программа подго-

Page 8: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

товки бакалавра), начинающих разработчиков приложений, создаваемых на языке Visual Basic for Application (VBA) в среде Microsoft Offi ce. Изда-ние будет также полезно широкому кругу читателей, занимающихся про-блемами автоматизации документооборота в среде Microsoft Offi ce.

В пособии для изложения синтаксиса языковых конструкций VBA и StarBasic используется формальная система описания в форме Бэкуса — Наура. В данной системе:

• курсивом выделяются определяемые разработчиком элементы;• элементы, набранные прямым полужирным шрифтом, соответствуют

ключевым словам или символам;• элементы в квадратных скобках ([ ]) необязательны для указания;• список в фигурных скобках ({ }), разделенный вертикальными чер-

тами (|), требует обязательного выбора одного из элементов списка;• многоточие []..., следующее за парой квадратных скобок, означает,

что последовательность элементов в квадратных скобках может неодно-кратно повторяться.

Пример: правило записи целого числа в данной нотации можно опреде-лить следующим образом:

Целое число [{[]|-}] {0|1|2|3|4|5|6|7|8|9}[{0|1|2|3|4|5|6|7|8|9}]...В результате изучения материала пособия студент должен:знать• историю развития алгоритмов;• типовые алгоритмические конструкции;• базовые понятия объектно-ориентированного программирования;• основные объекты приложения MS Excel;уметь• настраивать параметры безопасности и запускать редактор VBA;• работать с основными элементами управления VBA;владеть• способами разработки алгоритмов;• основами синтаксиса языка VBA.Хочу выразить благодарность Джону Уокенбаху за его книги1, которые

способствовали, в частности, формированию идейной содержательности практических примеров и выбору направления изложения материала, каса-ющегося вопросов взаимодействия приложений MS Offi ce (параграф 9.2).

Желаю Вам удачи в освоении VBA и StarBasic!Автор

1 Уокенбах Дж. Excel 2010: профессиональное программирование на VBA : пер. с англ. М. : Диалектика, 2013 ; Его же. Профессиональное программирование на VBA в MS Excel 2003 : пер. с англ. М. : Вильямс, 2006.

Page 9: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

Ðàçäåë I. ÒÅÎÐÈß ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß

Page 10: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,
Page 11: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

11

Ãëàâà 1. ÏÐÈÍÖÈÏÛ ÐÀÇÐÀÁÎÒÊÈ ÀËÃÎÐÈÒÌÎÂ

В результате изучения материала данной главы студент должен:знать• особенности и отличительные признаки форм представления алгоритмов;• историю развития алгоритмизации;уметь• использовать полученные знания о требованиях оформления схем алгоритмов;• выбирать необходимые методы представления алгоритмов;владеть• методами алгоритмизации;• спецификой типовых алгоритмических конструкций.

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

Алгоритмы являются объектом систематического исследования научной дисциплины — теории алгоритмов, которая находится на стыке матема-тики и информатики1. Вместе с математической логикой теория алгоритмов составляет теоретический фундамент современных вычислительных наук.

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

В ясной и простой форме в главе излагаются: история развития понятия алгоритма, свойства алгоритма и алгоритмизации, формы представления алгоритма, требования оформления схем алгоритмов и типовые алгорит-мические конструкции. Изложение теоретического материала сопровожда-ется соответствующими практическими примерами.

1.1. Èñòîðèÿ ðàçâèòèÿ àëãîðèòìîâ

Одним из основных понятий информационных техно логий является понятие алгоритма, хотя оно и возникло задолго до появления компьюте-

1 Могилев А. В., Пак Н. И., Хеннер Е. К. Информатика : учеб. пособие. М. : Издательский центр «Академия», 2004.

Page 12: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

12

ров. Греческий математик Евклид (III в. до н.э.) сформулировал правило нахождения наибольшего общего делителя двух натуральных чисел. Дан-ное правило принято считать первым алгоритмом, несмотря на то, что тер-мин «алгоритм» появился гораздо позднее.

Термин «алгоритм» происходит от algorithmi — латинского написания имени аль-Хорезми (великого математика IX в.), который сформулировал правила выполнения арифметических действий1.

Одно из первых интуитивных понятий алгоритма можно сформулиро-вать следующим образом: «Алгоритм — это строгая система правил, которая определяет последовательность действий над некоторыми объектами и после конечного числа шагов приводит к достижению поставленной цели»2. Дру-гими словами, набор правил считается алгоритмом, если разные исполнители, не знающие сущности задачи, будут при строгом соблюдении этого набора правил действовать одинаково и достигнут одного и того же результата.

Английский математик А. Тьюринг сформулировал одно из первых фор-мальных определений алгоритма3. В 1936 г. он описал схему абстрактной машины и то, что она умеет делать, назвал алгоритмом. На основе много-численных экспериментов на своих машинах Тьюринг подтвердил широ-кие возможности его конструкции и выдвинул тезис: «Всякий алгоритм может быть реализован соответствующей машиной Тьюринга». Данный тезис является формальным определением алгоритма и главной гипотезой теории алгоритмов по Тьюрингу.

В конце 1940-х гг. советский математик А. А. Марков предложил следующую основную гипотезу теории алгоритмов: «Всякий алгоритм нормализуем»4. По Маркову определение алгоритма сформулировано таким образом: «Алгоритм — это точное предписание, которое задает вычислительный процесс, начинающийся с произвольного (но выбранного из фиксированной для данного алгоритма совокупности) исходного дан-ного и направленный на получение полностью определяемого этим исход-ным данным результата»5.

Более общее уточнение понятия алгоритма предложил советский уче-ный А. Н. Колмогоров6. В его формулировке алгоритма содержатся два важных момента: итеративность алгоритмического процесса и локаль-ность каждого отдельного шага.

В дальнейшем (с середины ХХ в.) начали создаваться различные сред-ства описания алгоритмов, например, специальные алгоритмические языки и графические схемы изображения алгоритма.

В настоящее время понятие «алгоритм» стали использовать в различ-ных областях деятельности, понимая под этим набор точных инструкций

1 Могилев А. В., Пак Н. И., Хеннер Е. К. Информатика.2 Успенский В. А., Семенов А. Л. Теория алгоритмов: основные открытия и приложения.

М. : Наука, 1987.3 Марков А. А., Нагорный Н. М. Теория алгорифмов. 2-е изд. М. : ФАЗИС, 1996.4 Там же.5 Там же.6 Успенский В. А., Семенов А. Л. Теория алгоритмов: основные открытия и приложения.

Page 13: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

13

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

1.2. Îñíîâû àëãîðèòìèçàöèè

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

При автоматизированном решении любой задачи для получения резуль-тата необходимые исходные данные преобразовываются компьютером по определенному заданному набору правил — алгоритму обработки.

Дадим два определения понятия алгоритма.Алгоритм является строгой системой правил, определяющих последова-

тельность действий над некоторыми объектами.Алгоритм — это описание необходимой последовательности действий

для решения задачи.Другими словами, алгоритм задает порядок действий к искомому резуль-

тату от исходных данных. Алгоритм решения задачи разрабатывается путем разбиения ее на последовательно выполняющиеся шаги (или этапы). При этом указываются содержание всех шагов и порядок их выполнения.

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

Алгоритм обладает набором свойств, которые помогают расширить его понятие. К основным свойствам алгоритма относятся:

• детерминированность (определенность, точность, однозначность) заключается в том, что при нескольких прогонах на одних и тех же исход-ных данных алгоритм выполняется одинаково и дает один и тот же резуль-тат. Это свойство проявляется и в том, что каждый шаг алгоритма должен быть четко определен и не допускать произвольной трактовки;

• дискретность. Алгоритм является последовательностью отдель-ных шагов (действий). Таким образом, решение задачи алгоритм сводит к решению отдельных, более простых и не представляющих сложности задач, благодаря чему алгоритм может быть реализован на электронно-вычислительной машине (ЭВМ);

• конечность (финитность). Определяет то, что последовательность элементарных действий алгоритма не может быть бесконечной, неограни-ченной, хотя может быть и большой;

• корректность. Означает, что алгоритм для всех исходных данных решаемой задачи должен давать правильный результат. Алгоритм не явля-ется корректным, если хотя бы один из результатов противоречит хотя бы одному из ранее установленных и получивших признание фактов;

Page 14: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

14

• компактность. Это свойство предполагает лаконичность изложе-ния алгоритма;

• массовость. Один и тот же алгоритм можно применять для решения множества однотипных задач при всевозможных допустимых значениях исходных данных;

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

• эффективность. Алгоритм может быть выполнен не просто за конеч-ное, а за разумно конечное время.

Если разработанная последовательность действий не обладает хотя бы одним из перечисленных выше свойств, то она не может считаться алго-ритмом.

1.3. Ñðåäñòâà ïðåäñòàâëåíèÿ àëãîðèòìà

Средства, используемые для записи алгоритмов, в значительной мере определяются тем, кто будет исполнителем.

Основными формами описания алгоритмов являются:• словесно-формульный;• формальные языки;• блок-схемный или структурный.Рассмотрим указанные способы описания алгоритмов.В словесно-формульном способе алгоритм представляет собой набор

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

Пример 1.1

Создать алгоритм нахождения значения функции y для заданного значения аргумен-

та x, где функция y задана следующим выражением :

6, 02 3, 0

xy

x xесли

если.

РешениеВ словесной формулировке алгоритм будет выглядеть следующим образом:

1. Ввести значение аргумента x.2. Проверить выполнение условия x < 0. Если условие x < 0 верно, то перейти к шагу 3, иначе (x 0) перейти к шагу 4.3. Задать значение y 6 и перейти к шагу 5.4. Найти значение y 2x + 3 и перейти к шагу 5.5. Вывести результат y.6. Закончить вычисления.

Сначала такая форма использовалась для формулирования многих вычислительных алгоритмов (например, алгоритмы поиска корней алге-браических уравнений разных степеней). Однако применение естествен-

Page 15: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

15

ных языков при алгоритмизации было связано с рядом трудностей и часто приводило к противоречиям. Естественным языкам свойственны много-значность и расплывчатость высказываний. Не всегда отдельным словам и конкретному предложению соответствует единственное содержание.

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

Формализованный (формальный) язык — язык, который характери-зуется точными правилами построения и понимания выражений. Он обе-спечивает точное, компактное и непротиворечивое отображение свойств и отношений моделируемых объектов1.

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

В научной и практической деятельности часто формальные и естествен-ные языки используются совместно, так как дополняют друг друга. Есте-ственные языки обладают боqльшими выразительными возможностями по сравнению с формальными. Формальный язык, в отличие от естествен-ного, более точно представляет знания и, естественно, является более точ-ным и объективным средством обмена информацией между людьми2.

Алгоритмический язык — это система наименований для формальной записи алгоритмов, которые предназначены для некоторого исполнителя. В состав алгоритмического языка входят команды, операторы, служебные слова и символы. Он обладает своим синтаксисом и семантикой.

Заметим, что понятие «алгоритмический язык» отличается от понятия «языки программирования». Под исполнителем в алгоритмическом языке подразумевается не только компьютер, но и любое устройство, которое понимает этот язык и может с ним работать. Поэтому написанная на алго-ритмическом языке программа не обязательно предназначена компьютеру.

Вот как выглядит алгоритм для примера 1.1 на одном из школьных алгоритмических языков3:

алг Функция (вещ X, Y) арг X рез Yнач ввод X

1 Вирт Н. Алгоритмы и структуры данных. М. : ДМК Пресс, 2011 ; Кнут Д. Искусство программирования. Т. 1. Основные алгоритмы The Art of Computer Programming. V. 1. Fundamental Algorithms. 3-е изд. М. : Вильямс, 2006.

2 Кнут Д. Искусство программирования. Т. 1. Основные алгоритмы ; Хопкрофт Дж., Мотвани Р., Ульман Дж. Введение в теорию автоматов, языков и вычислений. М. : Вильямс, 2002.

3 Аракелян Г. Математика и история золотого сечения. М. : Логос, 2014 ; Бадд Т. Объ-ектно-ориентированное программирование в действии. СПб. : Питер, 2006.

Page 16: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

16

если X < 0 то Y 6 иначе Y 2X + 3 все вывод Yкон

К существенным недостаткам алгоритмических языков можно отнести то, что разработанные с их помощью алгоритмы не всегда наглядны, подчас объемны и громоздки. Например, описания сложных математических задач или процессов управления могут занимать несколько сот страниц. Помочь сделать описание алгоритма более наглядным может его графическое изо-бражение в виде структурной схемы. На рис. 1.1 представлена структур-ная схема алгоритма для примера 1.1.

Начало

Стоп

Y 6

Y 2X 3 Печать Y

Ввод X X 1Да

Нет

Рис. 1.1. Блок-схема алгоритма примера 1.1

Формально структурная схема представляет собой ориентированный граф1, у которого вершины представляются в виде графических обозна-чений (символов, блоков), а ребра являются линиями потока. Структур-ная схема используется в качестве способа описания систем со сложными связями. При этом укрупненная схема отображает функцио нальные связи между отдельными фрагментами алгоритма. Более «мелкие», подробные схемы содержат детали, описывающие содержание этих фрагментов.

При реализации алгоритма на персо нальном компьютере его нужно записать на одном из языков программирования в виде программы. Языки программирования при всем своем разнообразии строятся на сходстве с естественными языками и обладают высокой степенью формализации по сравнению с алгоритмическими языками. Ниже приведено описание алгоритма примера 1.1 средствами языка Visual Basic for Application (VBA):

Sub fun() Dim X As Double, Y As Double X InputBox(«Введите Х») If X < 0 Then Y 6

1 Марков А. А., Нагорный Н. М. Теория алгорифмов.

Page 17: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

17

Else Y 2 * X + 3 End If MsgBox («Y « & CStr(Y))End Sub

После ввода алгоритма в ПК специально предназначенная программа-транслятор «переводит» его в программу на машинном алгоритмическом языке. На этом языке данные и действия алгоритма представлены в конеч-ном счете в виде двоичных чисел. Программа является физической моде-лью алгоритма выполнения. После запуска программа выполняется уже автоматически.

1.4. Òðåáîâàíèÿ îôîðìëåíèÿ ñõåì àëãîðèòìîâ

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

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

Правила описания схем алгоритмов и условные обозначения блоков регламентируются требованиями Единой системы программной документа-ции в соответствии с ГОСТ 19.701—901. Основные блоки данного ГОСТа приведены в табл. 1.1.

Таблица 1.1Основные блоки схем алгоритмов

Наименование Обозначение Функции

Терминатор Начало, конец, прерывание процесса обра-ботки данных

Ввод-вывод Преобразование данных в форму, пригодную для ввода или вывода результатов обработки (носитель данных не определен)

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

1 ГОСТ 19.701—90. Единая система программной документации. Схемы алгоритмов и программ. Условные обозначения и правила выполнения. М. : Издательство стандартов, 1991.

Page 18: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

18

Наименование Обозначение Функции

Предопределенный процесс

Определяет предопределенный процесс (набор операций), который ранее создан (в подпрограмме, модуле)

Решение Функция переключательного типа. Имеет один вход и ряд альтернативных выходов, только один из которых может быть активи-зирован после вычисления условия

Документ Данные, представленные на носителе в удо-бочитаемой форме (например, вывод данных на бумажный носитель)

Соединитель Указание связи между прерванными лини-ями, соединяющими блоки

Межстраничный соединитель

Указание связи между блоками, располо-женными на разных листах

Комментарий Связь между элементом схемы и пояснением

Запоминающее устройство с после-довательным досту-пом

Определяет данные, хранящиеся на запо-минающем устройстве с последовательным доступом

Запоминающее устройство с пря-мым доступом

Определяет данные, хранящиеся на запоми-нающем устройстве с прямым доступом

Ручной ввод Определяет данные, вводимые вручную с устройства любого типа

Схема алгоритма состоит из блоков, соединяющих линий и краткого пояснительного текста (см. табл. 1.1). Блоки являются графическим обо-значением отдельных операций, смысл которых выражается внутри бло-ков текстом. Текст блока, по возможности, должен быть минимальным, но достаточным для выражения его функцио нальной сути. Для размеще-ния длинного текста следует использовать символ «комментарий». Пунк-тирная линия символа «комментарий» связывается с соответствующим блоком или может обводить группу блоков (рис. 1.2).

Линии в схеме соединяют блоки и указывают потоки управления. Стандартным считается направление потока слева направо и сверху вниз. Нестандартное направление потока отмечается стрелкой на конце линии. Линии должны быть направлены к центру блока. При необходимости линии в схемах следует разрывать, особенно если схема состоит из несколь-ких страниц. В точках разрыва ставятся соединители: в начале разрыва — внешний, в конце разрыва — внутренний. Комментарии к соединителям могут содержать ссылки к страницам (рис. 1.3).

Окончание табл. 1.1

Page 19: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

19

Процесс 1

Процесс 2

Данные А

Данные В

Комментарий 2

Комментарий 1

Рис. 1.2. Использование комментариев на схеме

А АК с. 3 Из с. 2

Рис. 1.3. Использование соединителей на схеме

Как правило, каждый блок имеет один вход и один выход. Исключение составляют блоки:

• «терминатор» («начало» не имеет входа, «конец» без выхода); • «решение» (один вход и несколько выходов).«Решение» является логическим блоком. Каждый выход из блока «реше-

ние» должен помечаться значением, которое принимает приведенное вну-три блока условие (рис. 1.4).

X 0Да Нет Сравнить

A и B

A B

A BA B

Рис. 1.4. Другой пример использования соединителей на схеме

Схема алгоритма должна быть удобочитаемой и наглядной, не быть чересчур подробной, «перегруженной». Выполнять ее надо как единое целое, но в случае необходимости можно разрывать межблочные линии.

Page 20: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

20

В схемах, занимающих более одного листа, для разрыва линии исполь-зуется межстраничный соединитель. Каждый соединитель содержит адрес с информацией: откуда и куда направлена соединительная линия. Записывается адрес в две строки: в первой указывается номер листа, во второй — порядковый номер блока.

В случае создания алгоритма для решения сложной задачи схему реко-мендуется выполнять с несколькими уровнями детализации. В этом случае алгоритм разбивается на смысловые фрагменты. Связь между ними указы-вается на более крупной схеме. Сами фрагменты выполняются на отдельных страницах. На одной странице желательно размещать отдельный фрагмент, не перегружая его чрезмерными ссылками и комментариями.

1.5. Òèïîâûå àëãîðèòìè÷åñêèå êîíñòðóêöèè

Из многообразия алгоритмов выделяются три основные типовые алго-ритмические конструкции (структуры):

• линейная,• разветвляющаяся,• циклическая.Конечно, отнести в чистом виде конкретный алгоритм к какой-либо

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

1.5.1. Линейная конструкцияАлгоритм, в котором все действия выполняются строго последовательно

один раз, называется линейным.Структурно линейные алгоритмы, как правило, состоят из трех частей:

ввод исходных данных, вычисление результатов, вывод значений результатов.

Пример 1.2

Необходимо найти значение выражения у 2а – (х + 6) для заданных значений переменных а и х.

На рис. 1.5 приведен линейный алгоритм решения задачи примера 1.2.

Конец

Начало

Y 2a (x 6)

Вывод Y

Ввод a, x

Рис. 1.5. Линейный алгоритм примера 1.2

Page 21: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

21

Каждый шаг алгоритма обозначен в схеме отдельным блоком. Последовательность выполнения блоков определяют линии потока. Из схемы очевидно, что при вводе любых допустимых (в данном случае, числовых) исходных данных все шаги алго-ритма выполняются всегда и их порядок никогда не меняется.

1.5.2. Разветвляющаяся конструкцияАлгоритм называется разветвляющимся, если при его выполне-

нии может быть разная последовательность действий. Другими словами, при каждом прогоне алгоритма выбирается один из нескольких путей его прохождения. Определенный путь прохождения называется ветвью алго-ритма. Схема разветвляющегося алгоритма содержит хотя бы один блок «решение», который и осуществляет разветвление вычислительного про-цесса.

Запись этой конструкции выглядит следующим образом:ЕСЛИ условие справедливо ТО выполнить действия_1, ИНАЧЕ выполнить действия_2.

Если присутствуют действия_1 и действия_2, то это полная альтерна-тива (рис. 1.6).

Условие

Действие 1 Действие 2

Да Нет

Рис. 1.6. Полная альтернатива разветвляющегося алгоритма

Если действия_2 отсутствуют, то говорят о неполной альтернативе (рис. 1.7).

Условие

Действие 1

Да

Нет

Рис. 1.7. Неполная альтернатива разветвляющегося алгоритма

Условие — это некоторое логическое выражение, принимающее только два значения — «истина» или «ложь». В зависимости от значения условия выполняется та или иная ветвь алгоритма.

Page 22: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

22

Пример блок-схемы с разветвляющимся алгоритмом приведен на рис. 1.1.Особенность тестирования разветвляющихся алгоритмов заключается

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

1) ход выполнения алгоритма один и тот же при использовании исход-ных данных из одной и той же области определения;

2) ход выполнения алгоритма разный при использовании исходных данных из разных областей определения.

Если эти утверждения выполняются, то можно сделать вывод о пра-вильном составлении алгоритма.

1.5.3. Циклические алгоритмыАлгоритм называется циклическим (или циклом), если содержит мно-

гократно исполняющийся участок (тело цикла). При каждом исполнении цикла переменные его тела изменяются по одним и тем же законам и полу-чают новые значения.

Для определения количества повторений некоторой последовательно-сти действий цикл содержит условие. Требуемые вычисления произво-дятся в основном блоке цикла — теле цикла.

Циклы по способу организации делятся на два основных вида:• классические, или циклы с параметром (циклы с заранее известным

числом повторений);• итерационные, или беспараметрические (циклы с неизвестным чис-

лом повторений).Цикл с параметром. Классический цикл использует специальную пере-

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

• начальное значение (обозначим его tнач);• конечное значение (tкон);• шаг изменения (Δt).По известным значениям этих величин можно вычислить количество

повторений цикла по формуле

1.t tkt

нач кон

Квадратные скобки в формуле обозначают выделение целой части част-ного без его округления, так как тело цикла повторяется целое количество раз.

На рис. 1.8 представлена типовая схема цикла с параметром. Тело цикла выполняется несколько раз в зависимости от величины параме-тра цикла (Пц). Параметр цикла изначально принимает значение, равное величине, называемой начальным значением (Нз). После выполнения тела цикла параметр цикла наращивается на величину, равную шагу (Ш).

Page 23: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

23

Цикл заканчивается, если параметр цикла принимает значение, большее величины, называемой конечным значением (Кз).

Пц Кз

Тело цикла

Пц Нз

Пц Пц Ш

Да

Нет

Рис. 1.8. Типовая схема алгоритма цикла с параметром

Для обозначения циклического процесса можно использовать специаль-ный блок «подготовка». В блоке указываются характеристики параметра цикла (начальное, конечное значения и шаг изменения в формате t tнач, tкон, Δt). Тело цикла на схеме располагается, как правило, ниже блока «под-готовка».

На рис. 1.9 приведена типовая схема одиночного цикла с блоком «под-готовка».

(Вход в цикл)...

...(Выход

из цикла)

Тело цикла

x a, b, h

Рис. 1.9. Типовая схема алгоритма классического цикла с помощью блока «подготовка»

Пример 1.3

Вычислить значения функции y sin(x) при изменении аргумента x на заданном интервале с постоянным шагом.

РешениеВведем следующие обозначения: [xn, xk] — интервал изменения х; h — шаг изме-

нения аргумента функции. На рис. 1.10 приведен циклический алгоритм решения задачи примера 1.3.

Page 24: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

24

yf(x)

Начало

Конец

Печать x, y

Ввод xn, xk, h

x a, b, h

Рис. 1.10. Схема алгоритма классического цикла примера 1.3

Беспараметрический цикл. Итерационный (беспараметрический) цикл является циклом с неизвестным числом повторений и отличается от классического другой организацией. Выход из итерационного цикла осуществляется при выполнении условия, связанного с проверкой значе-ния монотонно изменяющейся в цикле величины (точности вычисления).

От взаимного расположения частей (тела и условия) цикла зависит вид его типовой схемы: с предусловием или с постусловием.

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

Для беспараметрического цикла с постусловием вначале выполня-ется тело цикла, а затем проверяется условие. В зависимости от его значе-ния тело цикла повторно выполняется или же происходит переход к сле-дующему за телом цикла оператору. Все сказанное выше о возможном зацикливании справедливо и для данного цикла.

На рис. 1.11 представлены типовые блок-схемы беспараметрических циклов с предусловием и постусловием.

Из приведенных блок-схем очевидно основное различие этих циклов: цикл с постусловием выполняется гарантированно хотя бы раз, а цикл с предусловием может ни разу не выполняться.

Page 25: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

25

Условие

Условие

Цикл с предусловием Цикл с постусловием

Тело цикла

Тело цикла

Рис. 1.11. Типовые блок-схемы алгоритма беспараметрического цикла

Пример 1.4

Для заданного целого положительного числа n вычислить его факториал (n!). Определение факториала следующее:

1

1, 0;!

1 2 ... , 1.n

i

nn

n i n

если

если

РешениеВведем следующие обозначения: n — аргумент; i — промежуточная переменная;

F — результат. На рис. 1.12 приведена блок-схема алгоритма решения задачи при-мера 1.4.

F1

FF i

i1

ii1

Начало

Конец

Ввод n

Вывод F

Нет

Да

i n

Рис. 1.12. Схема алгоритма беспараметрического цикла примера 1.4

Page 26: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

26

Ðåçþìå

Понятие алгоритма является фундаментальной категорией програм-мирования. Однако возникло оно задолго до появления вычислительных машин. Еще в III в. до н.э. греческий математик Евклид применил прин-ципы алгоритмизации при изложении правила вычисления наибольшего общего делителя двух натуральных чисел.

Первоначальные интуитивные понятия алгоритма со временем превра-тились в более строгие определения. Большой вклад в этот процесс внесли такие ученые, как английский математик А. Тьюринг, советские ученые А. А. Марков и А. Н. Колмогоров.

Одним из современных определений алгоритма является следующее понятие: алгоритм представляет собой строгую систему правил, определен-ную последовательность действий над некоторыми объектами.

Алгоритм обладает следующим набором свойств: детерминированность, дискретность, конечность, компактность, массовость, результативность, эффективность.

К основным методам описания алгоритмов относятся следующие: сло-весно-формульный; формальные языки; структурный или блок-схемный.

Условные обозначения и правила выполнения схем алгоритмов рег -ламентируются требованиями Единой системы программной документа-ции в соответствии с ГОСТ 19.701—90 «ЕСПД. Схемы алгоритмов, про-грамм, данных и систем».

Из многообразия алгоритмов выделяются три основные типовые алго-ритмические конструкции (структуры): линейная, разветвляющаяся, циклическая.

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

циклы с параметром);2) циклы с неизвестным числом повторений (итерационные или бес-

параметрические).

Âîïðîñû äëÿ ñàìîêîíòðîëÿ

1. Как формулируется тезис английского математика А. Тьюринга относительно алгоритма?

2. Как звучит основная гипотеза теории алгоритмов А. А. Маркова?3. Каково определение алгоритма как категории программирования?4. Что понимается под алгоритмизацией в узком смысле?5. Каковы основные свойства алгоритмов?6. Какие существуют основные способы описания алгоритмов?7. Каковы типовые алгоритмические конструкции?8. Что такое конструкция «цикл с параметром»?9. Каким ГОСТом регламентируются правила выполнения схем алгоритмов?10. Каково назначение используемых для создания блок-схем следующих блоков:

«процесс», «терминатор», «решение», «подготовка»?11. В чем смысл свойств алгоритмов «дискретность», «конечность», «коррект-

ность», «результативность», «массовость»?12. Что такое алгоритмический язык?

Page 27: ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÍÀ VBA Â MS EXCEL · УДК 004.02(075.8) ББК 32.973-018я73 Л33 Автор: Лебедев Виктор Михайлович — доцент,

Óïðàæíåíèÿ äëÿ ñàìîñòîÿòåëüíîãî âûïîëíåíèÿ

В приведенных ниже заданиях необходимо в зависимости от их условий выбрать соответствующий способ описания и разработать алгоритм решения. Для первого и второго задания применить также и словесно-формульное описание алгоритма.

Упражнение 1. Найти сторону и диаго наль квадрата, если известна его площадь.

Упражнение 2. Вычислить значение функции y по формуле2 3

1ayx

.

Упражнение 3. Найти наибольшее из трех чисел.

Упражнение 4. Вычислить n-е число Фибоначчи.

Упражнение 5. Определить сумму четных натуральных чисел до 100. Условный оператор не использовать.

Упражнение 6. Вычислить значения функции y 2sin(x2 1) на заданном интер-вале и шагом изменения аргумента х.