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

конспект

.pdf
Скачиваний:
18
Добавлен:
30.03.2015
Размер:
874 Кб
Скачать
☆

Разветвленные алгоритмы. В этих алгоритмах в зависимости от некоторых условия выполняются те или иные действия. Ниже приведен пример ветвления алгоритма на псевдокоде.

алг решение квадратного уравнения

вещ a, b, c, x1, x2, D

стр y

 

нач

 

D:=b*b – 4*a*c

 

если D<0

 

то

y:=’нет решения’

иначе

x1:=(-b+√D)/(2a)

 

x2:=(-b - √D)/(2a)

 

y:=’корни уравнения’

вывод x1,x2

 

конесли

 

вывод y

 

кон

 

Команда ветвления иногда записывается в сокращенной форме, не с двумя, а с одной альтернативой. Например, суммирование только положительных чисел (рис.13).

Нет

X > 0

Да

S:=S + X

Рис. 13

Циклические алгоритмы. Для многократно повторяемых действий используют специальную конструкцию – цикл. Команды цикла содержат условие для определения количества повторений. Существуют три типа

51

циклов. Рассмотрим их на примере суммирования и подсчета количества положительных чисел из 10 введенных чисел.

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

1)Обнулить значения суммы s, счетчика всех чисел i и счетчика положительных чисел k.

2)Пока i меньше 10 выполнять действия 3 – 5.

3)Ввести очередное число x.

4)Увеличить счетчик i на единицу.

5)Если x положительное, то к значению суммы s прибавить x и увеличить счетчик k на единицу.

6)Вывести сумму положительных чисел s и их количество k.

Вцикле с постусловием условие проверяется после действий в теле цикла. И если это условие выполняется, то происходит выход из цикла. Такой цикл выполнится хотя бы один раз (рис.14).

i:=0, k:=0 s:=0

Ввод x

i:=i + 1

Нет

x>0

Да

k:=k+1

s:=s+x

Нет

i=10

Да

Рис.14

52

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

алг суммирование и подсчет положительных чисел

вещ s, x цел i,k

нач

s:=0

i:=0

k:=0

для i от 1 до 10 вып

нц

ввод x если x>0

то s:=s+x k:=k+1

конесли

кц вывод s,k

кон

53

6. Программные средства информационных технологий

6.1. Структура программного обеспечения с точки зрения пользователя

Нижний уровень. У каждого устройства системного блока есть свои логические адреса – порты ввода-вывода. На нижнем уровне происходит чтение/запись информации из ячеек памяти в порты или наоборот. Для этого программист должен включить в программу на языке ассемблера команды типа MOV A, B , что означает переслать содержимое из А в В. Программирование на ассемблере достаточно трудоемкое и требует высокой квалификации программиста.

Уровень BIOS. В языках программирования высокого уровня (Бейсик, Паскаль, Си) есть средства вызова подпрограмм операционной системы (ОС) и базовой системы ввода-вывода (BIOS), обслуживающих частые ситуации, такие как, например, ввод символа с клавиатуры, вывод его на экран. Происходит это через механизм прерываний. BIOS хранится в ПЗУ.

Уровень ОС. Этот уровень предоставляет больший сервис. Здесь подпрограммы обработки прерываний загружаются с диска. На этом уровне пользователь уже может взаимодействовать с ЭВМ непосредственно в диалоговом режиме, без написания программ (например, копировать файлы). Операционные системы играют важнейшую роль во всей иерархии взаимодействия человека и ЭВМ. ОС – часть общего программного обеспечения для планирования и организации процесса обработки, ввода-вывода и управления данными, распределения ресурсов, подготовки и отладки программ. По сути, это главная часть интерфейса между программами пользователя и самим пользователем, с одной стороны и аппаратной частью с другой стороны. Многие годы доминирующее положение среди ОС занимали различные версии MS DOS фирмы Microsoft. Сейчас наступила эпоха графических оболочек Windows, которые выполняют все функции ОС. Не теряет своих позиций и мобильная ОС UNIX, ориентированная на суперкомпьютеры и на мощные рабочие станции для научных исследований.

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

54

Уровень прикладных систем. Прикладные системы создаются для конкретной предметной области. Например, FoxPro для управления базами данных, PCAD для автоматизации проектирования электронных устройств.

Уровень программ пользователя. Как правило, прикладные системы имеют свой внутренний язык программирования. Пользователь создает свои программы для решения конкретных задач, используя эти языки или языки инструментальных систем.

6.2. Методы проектирования программных продуктов

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

-структурное проектирование программных продуктов,

-информационное моделирование предметной области и связанных с ней приложений,

-объектно-ориентированное проектирование программных продуктов.

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

Информационное моделирование предметной области связано с использованием СУБД. В этом походе можно выделить следующие составляющие:

-информационный анализ предметной области,

-информационное моделирование – построение комплекса моделей данных,

-системное проектирование функций обработки данных,

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

-Первоначально строятся информационные модели различных уровней представления:

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

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

55

Даталогические модели имеют логический и физический уровни представления. Логический уровень данных применительно к СУБД реализуется в виде концептуальной модели базы данных и внешних моделей данных. Физический уровень соответствует организации хранения данных в памяти компьютера.

Объектно-ориентированный подход к проектированию программных продуктов основан на:

-выделении классов объектов,

-установлении характерных свойств объектов и методов их обработки,

-создание иерархии классов, наследовании свойств объектов и методов их обработки.

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

6.3. Структурное проектирование и программирование

Нисходящее проектирование. Метод нисходящего проектирования предполагает последовательное разложение общего алгоритма на простые функциональные элементы ("сверхувниз").

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

Последовательность действий по разработке ФСА:

•определяются цели автоматизации предметной области и их иерархия (цель-подцель);

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

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

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

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

56

Подобная структура приложения отражает наиболее важное — состав и взаимосвязь функций обработки информации для реализации приложений, хотя и не раскрывает логику выполнения каждой отдельной функции, условия или периодичность их вызовов. (На рис.15 Ц — цель; пЦ

— подцель; П — приложение; Ф — функция).

Ц1

 

Ц1

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

ПЦ11

 

ПЦ1s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

П1

 

 

 

П2

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

Ф1

 

 

 

Ф2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

Ф11

 

 

 

Ф1k

 

 

ПЦ21 ... ПЦ2n

Пn

Фm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

Фm1

 

 

Фm2

Фmp

 

 

 

 

 

 

 

 

 

Рис. 15

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

Функции ввода-вывода информации рекомендуется отделять от функций вычислительной или логической обработки данных.

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

Некоторые функции, например Ф2, далее неразложимы на составляющие: они предполагают непосредственную программную реализацию. Другие функции, например Ф1, Фm, могут быть представлены в виде структурного объединения более простых функций, например Ф11,

57

Ф12 и т.д. Для всех функций-компонентов осуществляется самостоятельная программная реализация; составные функции (типа Ф1, Фm) реализуются как программные модули, управляющие функциями-компонентами, например, в виде программ-меню.

Модульное программирование подразумевает составление программы из отдельных достаточно независимых модулей

Модуль характеризуют:

•один вход и один выход — на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных;

•функциональная завершенность — модуль выполняет полный набор операций для реализации конкретной функции;

•логическая независимость – результат работы модуля зависит только от исходных данных, но не зависит от работы других модулей;

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

•обозримый по размеру текст, например на одном листе формата А4 или на одном экране (20-24 строки).

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

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

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

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

58

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

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

•принятие основных решений в алгоритме выносится на максимально "высокий" по иерархии уровень;

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

Врезультате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, которая является основой для программирования

Алгоритмы большой сложности обычно представляются с помощью схем двух видов:

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

•детальной схемы алгоритма, она представляет содержание каждого элемента обобщенной схемы с использованием управляющих структур в блок-схемах алгоритма, псевдокода либо алгоритмических языков высокого уровня. Наиболее часто детально проработанные алгоритмы изображаются в виде блок-схем согласно требованиям структурного программирования; при их разработке используются условные обозначения согласно ГОСТам.

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

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

1)Следование функциональных блоков (линейный алгоритм), причем каждый блок должен иметь только один вход и один выход.

2)Развилка.

3)Цикл с предусловием.

59

Кроме этих конструкций допускается ещё три дополнительные:

1)Цикл с постусловием.

2)Неполная развилка.

3)Множественный выбор (в Паскале - оператор CASE)

6.4.Организация и средства дружественного интерфейса пользователя

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

Системы, поддерживающие диалоговые процессы, классифицируются на:

•системы с жестким сценарием диалога—стандартизированное представление информации обмена;

•дескрипторные системы – формат ключевых слов сообщений;

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

•системы с языком деловой прозы — представление сообщений на языке, естественном для профессионального пользования.

Наиболее просты для реализации и распространены диалоговые системы с жестким сценарием диалога, которые представлены в виде:

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

•действия запрос-ответ — фиксирован перечень возможных значений, выбираемых из списка, или ответы типа Да/Нет;

•запрос по формату — с помощью ключевых слов, фраз или путем заполнения экранной формы.

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

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

60