Учебное пособие по информатике. Часть 3
.pdfСибирская государственная геодезическая академия
Учебное пособие «Информатика»
Часть 3
Новосибирск
2012
2
СОДЕРЖАНИЕ
Часть 1. Алгоритмы.......................................................................................... |
4 |
|||
1 |
Свойства алгоритма .................................................................................... |
4 |
||
2 |
Виды алгоритмов ........................................................................................ |
6 |
||
3 |
Технология разработки алгоритмов и программ....................................... |
9 |
||
4 |
Контрольные вопросы .............................................................................. |
16 |
||
Часть 2. Визуальное объектно-ориентированное проектирование.............. |
18 |
|||
1 |
Язык программирования Borland Delphi ................................................. |
18 |
||
2 |
Определение функциональности приложения ........................................ |
24 |
||
3 |
Особенности объектно-ориентированного программирования ............. |
26 |
||
4 |
Методы ...................................................................................................... |
29 |
||
5 |
Язык Object Pascal..................................................................................... |
29 |
||
5.1 |
|
Алфавит .............................................................................................. |
29 |
|
5.2 |
|
Словарь языка..................................................................................... |
30 |
|
5.3 |
Данные в Object Pascal ....................................................................... |
30 |
||
5.4 |
|
Структура программы ........................................................................ |
31 |
|
5.5 |
|
Переменные ........................................................................................ |
32 |
|
5.6 |
|
Типы данных ...................................................................................... |
33 |
|
5.7 |
|
Арифметические выражения ............................................................. |
37 |
|
5.8 |
|
Логические выражения ...................................................................... |
39 |
|
5.9 |
|
Строковые выражения ....................................................................... |
40 |
|
5.10 |
Подпрограммы (процедуры и функции)........................................ |
42 |
||
5.11 Описание процедур и функций ...................................................... |
43 |
|||
5.12 |
Структура модуля языка программирования Object Pascal .......... |
43 |
||
5.13 |
Операторы (инструкции) языка Object Pascal ............................... |
45 |
||
5.14 |
Подпрограммы ................................................................................ |
50 |
||
5.15 |
Знакомство с компонентами ........................................................... |
51 |
||
6 |
Работа в Delphi с массивами .................................................................... |
55 |
||
7 |
Контрольные вопросы .............................................................................. |
58 |
||
Часть 3. Visual Basic for Applications ............................................................. |
59 |
|||
1 |
Основные понятия языка VBA................................................................. |
59 |
||
2 |
Создание функций пользователя.............................................................. |
61 |
||
3 |
Встроенные типы данных ........................................................................ |
61 |
||
4 |
Переменные............................................................................................... |
62 |
||
5 |
Массивы переменных ............................................................................... |
62 |
||
6 |
Объявление констант ................................................................................ |
63 |
||
7 |
Операции языка VBA ............................................................................... |
63 |
||
8 |
Встроенные функции VBA....................................................................... |
64 |
||
9 |
Функции пользователя.............................................................................. |
64 |
||
10 |
|
Операторы языка VBA .......................................................................... |
64 |
|
10.1 |
Оператор присваивания .................................................................. |
64 |
||
10.2 |
Оператор комментариев ................................................................. |
65 |
||
10.3 |
Процедуры....................................................................................... |
65 |
||
10.4 |
Операторы управления ................................................................... |
67 |
|
|
3 |
|
10.5 |
Операторы повтора ......................................................................... |
70 |
|
11 |
Встроенные диалоговые окна ............................................................... |
75 |
|
11.1 |
Окно ввода информации................................................................. |
75 |
|
11.2 |
Встроенные диалоговые окна для обмена сообщениями ............. |
75 |
|
11.3 |
Диалоговые окна пользователей .................................................... |
77 |
|
12 |
Контрольные вопросы ........................................................................... |
79 |
|
Литература ...................................................................................................... |
80 |
4
ЧАСТЬ 1. АЛГОРИТМЫ
1 СВОЙСТВА АЛГОРИТМА
Ежедневно каждый из нас решает задачи различной сложности: стоит ли утром идти в школу, как быстрее добраться до школы в условиях недостатка времени и пр. Некоторые задачи решаются просто, так как они встречаются каждый день, другие задачи требуют длительных размышлений для нахождения решения. Причем зачастую решение найти не удается. Но в любом случае решение каждой задачи можно подразделить на простые этапы.
Например, Вас отправили вечером за хлебом. Решение данной задачи можно разбить на следующие шаги:
1.Пойти в магазин.
2.Если магазин уже закрыт (других магазинов рядом нет), то идти домой (конец задачи с отрицательным результатом).
3.Если магазин открыт, перейти к п.4.
4.Зайти в магазин.
5.Если есть хлеб, то перейти к п.6, иначе идти домой (конец задачи с отрицательным результатом).
6.Оплатить стоимость хлеба.
7.Получить хлеб.
8.Конец решения задачи с положительным результатом.
Приведенная последовательность шагов является алгоритмом решения задачи «Купить хлеб».
Для решения задачи надо знать, что дано и что следует получить, т.е. у задачи есть исходные данные и искомые результаты. Для получения результатов необходимо знать способ решения задачи, то есть располагать алгоритмом, в котором указано, какие действия и в каком порядке следует выполнить, чтобы решить задачу.
Алгоритм – это точная конечная система правил, определяющая содержание и порядок действий исполнителя над некоторыми объектами (исходными и промежуточными данными) для получения после конечного числа шагов искомого результата. [1]
Любой алгоритм обладает следующими свойствами.
1.Выполнение алгоритма разбивается на последовательность законченных действий. Каждое действие должно быть закончено исполнителем прежде, чем он приступит к исполнению следующего действия. Это свойство называется дискретностью. Произвести каждое отдельное действие исполнителю предписывает специальное указание в записи алгоритма, называемое командой.
2.Детерминированность – на каждом шаге однозначно определено преобразование объектов среды исполнителя, полученной на предыдущих шагах алгоритма. Если алгоритм многократно применяется к одному и тому же набору исходных данных, то на выходе он получает каждый раз один и тот же результат.
5
Понятие детерминированность объединяет в себе выполнение двух свойств
–точности и понятности.
3.Точность – запись алгоритма должна быть такой, чтобы на каждом шаге его выполнения было известно, какую команду надо выполнять следующей.
4.Понятность – алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно, т.е. одно и то же предписание после исполнения должно давать один и тот же результат. Алгоритм всегда рассчитан на выполнение «не размышляющего» исполнителя.
5.Результативность – каждый шаг после своего завершения создает среду, в которой все объекты однозначно определены. Если это по каким-то причинам невозможно, алгоритм должен сообщать, что решение задачи невозможно. При точном исполнении команд алгоритма процесс должен завершиться за точное количество шагов, и при этом должен быть получен ответ на вопрос задачи.
6.Массовость – алгоритм работает правильно на некотором множестве исходных данных, которое называется областью применения алгоритма, т.е. алгоритм пригоден для решения любой задачи из некоторого класса задач. [2]
Алгоритм может быть описан одним из трех способов:
словесным (пример в начале раздела); графическим (виде специальной блоксхемы);
с помощью специальных языков программирования.
Блок-схема – распространенный тип схем, описывающий алгоритмы или процессы, изображая шаги в виде блоков различной формы, соединенных между собой стрелками. Основные элементы схем алгоритма представлены в таблице 1.
Таблица 1. Основные элементы блок-схем
Наименование |
Обозначение |
|
|
|
Функция |
|
|
|
|
Элемент отображает вход из внешней среды |
|||||
Терминатор |
|
или |
выход |
из нее (наиболее частое |
|||
|
применение |
− |
начало и конец |
программы). |
|||
(пуск-останов) |
|
||||||
|
Внутри |
|
фигуры |
|
записывается |
||
|
|
|
|
||||
|
|
соответствующее действие. |
|
|
|||
|
|
Выполнение одной или нескольких операций, |
|||||
|
|
обработка данных любого вида (изменение |
|||||
Процесс |
|
значения данных, формы |
представления, |
||||
|
|
расположения). Внутри фигуры записывают |
|||||
|
|
непосредственно сами операции, например, |
|||||
|
|
операцию присваивания: k = 15*x + y; |
|||||
|
|
Отображает |
|
решение |
или |
функцию |
|
|
|
переключательного типа с одним входом и |
|||||
Решение |
|
двумя или более альтернативными выходами, |
|||||
|
из которых только один может быть выбран |
||||||
|
|
||||||
|
|
после вычисления условий, определенных |
|||||
|
|
внутри этого элемента. Если выходов два или |
|||||
|
|
три, |
то обычно каждый выход обозначается |
6
|
|
линией, выходящей из |
оставшихся |
вершин |
||
|
|
(боковых и нижней). Если выходов больше |
||||
|
|
трех, то их следует показывать одной линией, |
||||
|
|
выходящей из вершины (чаще нижней) |
||||
|
|
элемента, которая затем разветвляется. |
||||
|
|
Соответствующие |
результаты |
вычислений |
||
|
|
могут записываться рядом с линиями, |
||||
|
|
отображающими эти пути. Примеры решения: |
||||
|
|
в общем случае − сравнение (три выхода: >, <, |
||||
|
|
=); в программировании − условные |
||||
|
|
операторы if (два выхода: true, |
false) и case |
|||
|
|
(множество выходов). |
|
|
|
|
|
|
Символ отображает выполнение процесса, |
||||
|
|
состоящего из одной или нескольких |
||||
Предопреде- |
|
операций, который определен в другом месте |
||||
ленный |
|
программы (в подпрограмме, модуле). Внутри |
||||
процесс |
|
символа записывается название процесса и |
||||
|
|
передаваемые в него данные. Например, в |
||||
|
|
программировании − вызов процедуры или |
||||
|
|
функции |
|
|
|
|
|
|
Преобразование данных в форму, пригодную |
||||
Данные |
|
для обработки |
(ввод) |
или |
отображения |
|
|
результатов обработки |
(вывод). |
Данный |
|||
(ввод-вывод) |
|
|||||
|
символ не определяет носителя данных (для |
|||||
|
|
|||||
|
|
указания типа носителя данных используются |
||||
|
|
специфические символы). |
|
|
Пример алгоритма, записанного в виде блоксхемы, представлен на рис. 1
Рис. 1. Блоксхема
2 ВИДЫ АЛГОРИТМОВ
Алгоритмы как логико-математические средства отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы в
7
зависимости от цели, начальных условий задачи, путей ее решения, определение действий исполнителя подразделяются следующим образом [2]:
механические алгоритмы, или называемые детерминированными, жесткими (например, алгоритм работы двигателя), задают определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый результат, если выполняются те условия процесса, для которых разработан алгоритм.
гибкие алгоритмы:
o вероятностные (стохастические) алгоритмы дают программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата;
oэвристические алгоритмы - это алгоритмы, в которых достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач.
o линейные алгоритмы - наборы команд, выполняемых последовательно во времени друг за другом;
oразветвляющиеся алгоритмыалгоритмы, содержащие хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов;
o циклические алгоритмы – алгоритмы, предусматривающие многократное повторение одного и того же действия (или действий) над исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов;
o вспомогательные алгоритмы (процедуры) - алгоритмы, ранее разработанные и целиком используемые при алгоритмизации конкретных задач. Рассмотрим подробнее три основных вида алгоритмов: линейный, разветвляющийся и циклический
Линейный алгоритм
Приведем пример записи алгоритма в виде блок-схемы, в виде программы на алгоритмическом языке и на языке Паскаль. В качестве примера рассмотрим решение задачи вычисления среднего арифметического из двух чисел, водимых с клавиатуры.
8
Разветвляющийся алгоритм
В качестве примера рассмотрим алгоритм нахождения максимального из двух чисел, введенных с клавиатуры.
Циклический алгоритм
Работу циклического алгоритма рассмотрим на примере нахождения суммы четных чисел, находящихся в диапазоне от 0 до n (n вводится с клавиатуры).
9
Как правило, при разработке программ используются одновременно все типы алгоритмов, причем в один циклическую структуру могут включаться так называемые вложенные циклы. В циклах, как правило, используются структуры ветвления. Поэтому современные программу представляют собой довольно сложные алгоритмические конструкции.
3 ТЕХНОЛОГИЯ РАЗРАБОТКИ АЛГОРИТМОВ И ПРОГРАММ
Разработка алгоритма является важным конструктивным компонентом программирования, не зависящий от особенностей синтаксиса языков программирования и специфики функционирования конкретных вычислительных машин.
При решении на ЭВМ некоторой задачи работа распадается на следующие основные этапы [1]:
1)математическая формулировка задачи – определение состава и характера исходных данных, результатов, записи условия задачи с помощью математических обозначений;
2)разработка методики решения задачи – установление зависимости всех искомых результатов от исходных данных, указание методов получения результатов, которые могут быть реализованы на ЭВМ;
10
3)разработка алгоритма решения задачи – четкая установленная последовательность действий, записанная в виде текстуального, графического или формального языка с помощью математических описаний;
4)программирование – запись решающего алгоритма на языке программирования, и последующей трансляции на машинный язык;
5)отладка программы – устранение в программе синтаксических, семантических и алгоритмических ошибок;
6)решение задачи на ЭВМ и анализ полученных результатов. Вышеописанные этапы решения задачи на ЭВМ не менялись вне
зависимости от смены поколений ЭВМ, а подходы к созданию алгоритмов и требования к ним существенно изменялись в ходе эволюции компьютеров.
В эпоху ЭВМ 1-го и 2-го поколений основным требованием к алгоритму были [1]:
минимальные требования в отношении оперативной памяти компьютера, т.е. программа должна была использовать наименьшее возможное число ячеек оперативной памяти компьютера;
минимальное время исполнения (минимальное число операций). При этом программы составлялись из команд, исполнявшихся процессором. Это:
1)операции присваивания;
2)простейшие арифметические операции;
3)операции сравнения чисел;
4)операторы безусловного и условного переходов;
5)операторы вызова подпрограмм (вспомогательных алгоритмов).
Такой подход в создании алгоритмов, в котором операции непосредственно выполняются компьютером, принято называть операционным (или операциональным). Основные недостатки алгоритмов, к которым приводил операциональный подход:
злоупотребление командой условного и безусловного переходов зачастую приводило к очень запутанной структуре программы;
вместе с разнообразными уловками, направленными на повышение эффективности программы (т.е. минимальных требований к оперативной памяти и минимального времени выполнения), это приводило к непонятности программ, делая программирование трудоемким, сложным и чрезвычайно дорогостоящим.
Операция присваивания состоит в том, что значение величины помещается в ячейку памяти компьютера. Эта ячейка может либо принадлежать оперативной памяти, либо находиться в арифметико-логическом устройстве, которое является частью процессора и выполняет основные операции. После операции присваивания указанное значение сохраняется в этой в ячейке памяти, куда оно было помещено. Оно может быть заменено другим значением в результате другого присваивания.
Ячейка памяти, где размещается значение, в программе обозначается идентификатором (именем). Например, x, y1, z_3.
Переменные могут быть разных типов - числовые (целые или действительные), литерные и логические. Значения различных типов