Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие по информатике. Часть 3

.pdf
Скачиваний:
25
Добавлен:
31.05.2015
Размер:
1.49 Mб
Скачать

11

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

Арифметические операции: «сложения» (+), «вычитания» (-), «умножения»

(*) и «деления» (/) – позволяют записывать арифметические выражения с использованием идентификаторов переменных.

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

1)2 * (b + c);

2)2 * b + c

Операции одного старшинства выполняются в порядке записи в выражении.

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

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

Безусловный переход – это когда выполнение команд определяется вне от каких-либо условий. Условный переход – это когда выполнение команд определяется по некоторому условию.

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

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

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

Воснове принципов структурного программирования лежит утверждение

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

12

Следование – означает, что действия могут быть выполнены (следовать) друг за другом (рис. 2):

Рис. 2. Структура «следование»

Здесь прямоугольники представляют как одну команду (оператор), так и множество (серию) команд, необходимых для обработки данных.

Ветвление – это структура, обеспечивающая выбор между двумя альтернативами. Выполняется проверка, а затем выбирается один из путей (рис. 3). Эта структура называется «ЕСЛИ - ТО - ИНАЧЕ» или условным алгоритмом. Каждый из путей (ТО или ИНАЧЕ) ведет к общей точке слияния, так что выполнение программы продолжается независимо от того, какой путь был выбран.

Рис. 3. Структура «полное ветвление»

Если для одного из результатов проверки ничего предпринимать не надо, то можно применять только один обрабатывающий блок (рис. 4).

Рис. 4. Структура «укороченное ветвление»

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

элемент, который управляет работой цикла (называемый управляющий элемент цикла);

13

условное выражение, задающее условие выхода из цикла (или наоборот, условие продолжения цикла);

шаг цикла, задающий итерацию цикла. Разновидности цикла изображены на рис. 5 и рис. 6.

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

Рис. 5. Структура цикла «Пока» или «С предусловием»

Рис. 6. Структура цикла «До» или «С постусловием»

Отличие в этих циклах состоит в местонахождении логических выражений

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

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

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

14

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

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

Допустим, надо ввести в память компьютера 100 чисел и найти сумму только тех из них, которые положительны. Задачу эту можно решить двумя способами – с помощью массива и простой числовой последовательностью.

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

а) б) в) Рис. 7. а) нахождение суммы трех чисел;

б) нахождение наибольшего из трех; в) нахождение суммы 100 чисел

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

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

15

Ясно, что ввод – операция циклическая, а внутри этого цикла находится условный алгоритм укороченного типа, в котором проверяется знак числа и производится суммирование их. На рис. 8 изображена схема алгоритма решения этой задачи, в которой условный алгоритм вложен в циклический алгоритм.

Рис. 7. Алгоритм вычисления суммы положительных чисел 100 элементов массива

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

создавать программы несколькими программистами; упрощать проектирование и последующую модификацию программы;

упрощать отладку программы (поиск и устранение в ней ошибок); использования готовых библиотек наиболее употребительных модулей.

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

16

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

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

Если в основе языков структурного программирования лежит понятие команда и данные, то в объектном программировании основное понятие – объекты, которые могут связываться друг с другом и перенимать свойства друг у друга (т.е. наследовать). Объекты «оживают» только при наличии в программе процедур (подпрограмм), которые связаны откликами с этими объектами. Т.о. особенно важным компонентом в объектном программировании является реакция объектов на событие (нажатие на клавишу, на кнопку мыши и т.д.). Составление алгоритмов решения задач мало чем отличается от основного подхода – структурного, но описание алгоритмов подпрограмм необходимо выполнять в отдельной схеме алгоритма. Наиболее популярные языки объектно-ориентированного программирования созданы на основе языков

Basic, Pascal и C – это соответственно Visual Basic, Delphi и C++ Builder.

Декларативное программирование относится к решению задач искусственного интеллекта, в котором описываются свойства исходных данных, их взаимосвязи, т.е. описывается не алгоритм получения результата, а свойства, которым должен обладать результат. Алгоритмы таких задач порождаются автоматически той системой, в которой поддерживает декларативноориентированный язык программирования. При логическом варианте (язык Prolog) задача описывается совокупностью факторов и правил, при функциональном – в виде функциональных отношений между фактами (язык

Lisp).

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

4КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Что такое алгоритм? Перечислите основные свойства алгоритмов.

2.Охарактеризуйте основные элементы блок-схем.

3.Опишите основные особенности различных видов алгоритмов.

4.Какие требования предъявлялись к алгоритмам для компьютеров первых поколений?

5.Какой подход к созданию алгоритмов называется операционным?

6.Охарактеризуйте операции, которые применялись при разработке программ при операционном подходе.

17

7.В чем состоят недостатки операционного подхода?

8.Охарактеризуйте базовые структуры алгоритмов.

9.В чем состоит модульность при структурной разработке алгоритмов?

10.Что такое нисходящее проектирование программ?

11.В чем состоит особенность объектно-ориентированного программирования и, соответственно, алгоритма?

18

ЧАСТЬ 2. ВИЗУАЛЬНОЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ

Переход от текстового интерфейса к графическому связан с созданием операционных графических систем (Windows) и вызвал изменения в средствах разработки программного обеспечения. Появились новые системы программирования Visual Basic (фирма Microsoft), фирмы Borland Delphi, а

также Visual C++, C++ Builder. Все перечисленные системы называют визуальными и объектно-ориентированными, т.е. программирование ведется новым визуальным методом, в основе которого используется понятие объекта. Визуальное программирование предлагает своеобразный конструктор из интерфейсных объектов. Интерфейсные объекты помещаются в создаваемое окно (форму) и затем начинается собственно программирование. Рассмотрим визуальное программирование на примере Delphi – это система, имеющая интерфейс качественно нового типа, позволяющий при составлении текста программы видеть те графические объекты, для которых она пишется. Delphi является системой программирования очень высокого уровня приложений. Она берет на себя значительную часть работы по управлению компьютером, что делает возможным в простых случаях обходиться без особых знаний о деталях ее работы.

1ЯЗЫК ПРОГРАММИРОВАНИЯ BORLAND DELPHI

Вотличие от традиционных систем программирования, Delphi даже «сама» пишет значительную часть текста программы: описания объектов, заголовки процедур и многое другое. Программисту остается только вписать необходимые строчки, определяющие индивидуальное поведение программы, которые система не в состоянии предугадать. Но даже здесь Delphi во многих случаях сама указывает место, где надо разместить эти строки. Вершиной автоматизации процесса программирования являются, так называемые, эксперты [3]. Эксперт - это диалоговое окно, которое помогает пользователю описать, что он хочет видеть в своей программе. Например, Эксперт проекта спрашивает, необходимо ли вам системное меню и какого из предложенных типов ваш проект. Проанализировав введенные ответы. Delphi пишет код программы на Object Pascal. Отметим, что эксперты могут быть созданы самим пользователем.

Delphi относится к классу инструментальных систем ускоренной разработки программ RAD (Rapid Application Development) – быстрая разработка. Ускорение достигается за счет двух характерных свойств Delphi [3]:

1)визуального конструирования форм;

2)широкого использования библиотеки визуальных компонентов (Visual

Component Library).

Интегрированная среда разработки Delphi представляет собой

многооконную систему.

19

Главное

окно

Окно

Инспектор а объектов

Окно формы

 

Окно кода модуля

 

Рис. 8. Интегрированная среда разработки Delphi

После загрузки интерфейс Delphi включает следующие окна:

Главное окно – Project1, осуществляет основные функции управления проектом создаваемой программы

Окно Инспектора объектов Object Inspector содержит две страницы Properties (Свойства) и Events (События).

Окно Конструктора формы Form1 представляет проект интерфейсной части будущего проекта

Окно Редактора кода – Unit1.pas предназначено для создания и редактирования текста программы на языке Object Pascal.

Пункт меню VIEW позволяет увидеть окна на экране при их отсутствии. В зависимости от настроек можно видеть окна:

Окно обозревателя дерева объектов Object Tree View;

Окно Проводника кода – Exploring Unit1.pas.

Delphi – однодокументная среда и может работать только с одним приложением. Закрытие Delphi – закрытие главного окна.

Project1 включает:

главное меню, которое содержит команды доступа к функциям Delphi; панели инструментов (часто используемые команды главного меню); палитру компонентов (содержит строительные блоки для форм

приложения).

Имеется 6 панелей инструментов: Standard (стандартная);

20

VIEW (просмотра);

DEBUG (отладки); CUSTOM (пользователя); DESKTOP (Рабочий стол); Internet (Интернет).

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

Основные страницы Палитры компонентов: Standard (стандартная);

Additional (дополнительная);

Win32 (32разрядный интерфейс Windows); System (доступ к системным функциям);

Data Access (работа с информацией из базы данных); Data Controls (создание элементов управления данными); BDE (доступ к данным с помощью процессора баз); Qreport (составление отчетов);

Dialogs (создание стандартных диалоговых окон).

Окно конструктора формы находится в центре экрана с заголовком

FORM1.

В нем выполняется проектирование формы. На форму из палитры компонентов помещаются компоненты. Окно редактора кода Unit1.pas находится под окном конструктора формы – это обычный текстовый редактор, используется для редактирования текста модуля и в начале содержит исходный код модуля. Окно проводника кода (Exploring Unit1.pas) содержит и отображает все объекты модуля формы.

Окно инспектора объектов (Object Inspector) находится в левой части экрана и отображает свойства и события объектов для текущей формы FORM1. Страница Properties (Свойства) отображает информацию о текущем компоненте и позволяет изменять свойства компонентов.

Events (События) определяет процедуру, которую должен выполнить компонент при возникновении события. Компонент, расположенный на форме, можно выбрать щелчком мыши на нем или выбором в списке Инспектора объектов (Object Inspector). Каждый объект имеет свой набор свойств и событий, определяющий его особенности.

Создаваемое в среде Delphi приложение, включает: код проекта (.dpr)

описание форм (.dfm) модуль формы (.pas) параметры проекта (.dof) описание ресурсов (.res).

В скобках указано расширение имени файла, определяющее тип файла приложения.