Основы программирования (947332), страница 50
Текст из файла (страница 50)
Основы алгоритмизации и процедурное программированиеЗадание для самопроверкиМодернизировать профамму из задания 1 к параграфу 8.4 так, чтобы реализовать двойное управление меню: с использованием клавиатуры и мыши.8.9. Управление задачами. Вызов дочерних процессовС точки зрения MS DOS каждая программа (задача) представляет собойпроцесс. При запуске процессу выделяется память и передаются окружениеи параметры командной строки MS DOS.Окружение - это специальная область памяти, в которой размещены ввиде символьных строк некоторые параметры, установленные в DOS. Например:COMSPEC=C:\COMMAND.COM{адрес интерпретатора командMS DOS}PATH=C:\QEMM;C:\DOS;C:\NC{каталоги автоматического поиска}PROMPT=$p$q{вид запроса в командной строке MS DOS}Пользователь может включить в окружение другие строки, используякоманду SET.Для работы с окружением модуль DOS содержит следующие ресурсы.1.
Функция EnvCount: integer - возвращает количество переменных окружения, содержащихся в среде MS DOS.2. Функция EnvStr(Index:integer):strmg - возвращает переменную окружения MS DOS с указанным индексом.3. Функция GetEnv(EnvVar:string):string - возвращает переменную окружения MS DOS с указанным именем.Используя эти функции, можно, например, определить в системе местоположение каталога временных файлов, обычно заданного в MS DOS параметром work:flag:--false;while (i<EnvCount) and not flag dobeginifpos('work^\EnvStrli])^l thenbeginpath: =copy(EnvStr[i], 6, length(EnvStr[i])-5);flag:'=true;endelse inc(i);3008. Управление техническими средствами и взаимодействие с MS DOSend;if flag then <каталог найден>else <каталог не определен> ...Командная строка MS DOS - это символьная строка, которая вводитсяв командном режиме MS DOS при вызове той или иной программы (или команды). Помимо указания пути к исполняемому файлу она может содержатьсписок параметров командной строки, например:A:\>C:\My\copyflle A.dat B.dat 80В модуле DOS имеются средства, обеспечивающие доступ к этим параметрам.1.
Функция РагатСоunt:integer - B03Bpaui?ieT количество параметров.2. Функция ParamStr(Index:integer):string - возвращает параметр с указанным индексом в виде символьной строки, например для программы, вызов которой приведен выше:ParamCountParamStrfOJParamStrflJParamStr[2]ParamStr[3]=3= C:\My\copyfile= 'A.dat'= 'B.dat'= WДочерний процесс - это самостоятельная программа, существующая ввиде файла с расширением .сом или .ехе и вызываемая из другой программы.Необходимость организации дочерних процессов возникает, например, еслитребуется вставить в программу заставку, вывод на экран которой выполняется специальной программой, или разрабатывается среда, которая будет вызывать специальные программы обработки.При вызове дочерних процессов обычно используются специальные ресурсы модуля DOS.1.
Процедура Exec С<полное имя файла программы>,<параметры командной строк\\>:string) - осуществляет вызов дочернего процесса.2. Функция DosExitCode:word - возвращает код завершения дочернегопроцесса.Старший байт этого кода интерпретируется следующим образом:0123-нормальное завершение;завершение по Ctrl - С;завершение по ошибке;завершение с сохранением в памяти.301Часть 1.
Основы алгоритмизации и процедурное программированиеМладший байт содержит код возврата дочернего процесса (параметрHalt).3. Процедура SwapVeciors - сохраняет в памяти настройки (например,адреса обработчиков прерываний) среды Borland Pascal или восстанавливаетих, если они были сохранены:DOS->Pascal -> 005(дочерний процесс) ^Pascal->DOSSwapVectorsSwapVectorsДанная процедура должна выполняться, если дочерний процесс ~ программа, написанная на любом языке, кроме Borland Pascal.При вызове дочерних процессов также используется специальная директива управления памятью, иначе выполняемая программа получает всю имеющуюся память и дочерний процесс некуда грузить:{$М <размер стека>, <минимальный размер «кучи»>,<максимальный размер «кучи»>}где размер стека - от 1024 до 65520 байт; минимальный размер «кучи» - отО до 655360 байт; максимальный размер «кучи» - от минимального до655360 байт.Пример 8.11. Разработать программу, вызывающую специальную программу просмотра графических файлов типа .рсх.
Эта программа требуетуказания имени просматриваемого файла в качестве параметра команднойстроки.{$М $4000,0,0} {стек 16К, кучи нет}Program ex;Uses Dos;beginWriteLnCВызываем дочерний процесс ,./);SwapVectors;Exec('c: \utils\bitmap.exe \ *r24.pcx');SwapVectors;WriteLn(\., вернулись в основную программу');ifDosError о О then {если есть ошибка при вызове дочернегопроцесса}WriteLn(Vuiu6Ka DOS #', DosError)elseWriteLn(*Дочерний процесс вызван. Код завершения = *,DosExitCode); {код завершения дочернего процесса}End.302Часть 2.
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕПРОГРАММИРОВАНИЕ9. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯСчитается, что технология процедурного программирования применима, если размер профаммы не превышает 100 тыс. операторов. Программы, используемые в настоящее время, существенно длиннее. Поэтому современное программирование в основномбазируется на технологии, позволившей снять это ограничение и получившей название«объектно-ориентированное программирование» (ООП). Именно ООП лежит в основетаких современных сред создания программного обеспечения «под Windows», какDelphi, Visual C++, C++ Builder.В теории программирования ООП определяется как технология создания сложного программного обеспечения, основанная на представлении программы в виде совокупности объектов^ каждый из которых является экземпляром определенного типа {класса),а классы образуют иерархию с наследованием свойств [2].Как следует из определения, ООП в отличие от процедурного программирования,которое рассматривалось в первой части учебника, базируется не на процедурной, а наобъектной декомпозиции предметной области программы.9.1.
Объектная декомпозицияОбъектной декомпозицией называют процесс представления предметной области задачи в виде совокупности функциональных элементов {объектов), обменивающихся в процессе выполнения программы входными воздействиями (сообщениями).Каждый выделяемый объект предметной области отвечает за выполнение некоторых действий, зависящих от полученных сообщений и параметров самого объекта.Совокупность значений параметров объекта называют его состоянием,2i совокупность реакций на получаемые сообщения - поведением.303Часть 2. Объектно-ориентированное программированиеПараметры состояния и элементы поведения объектов определяются условием задачи.В процессе решения задачи объект, получив некоторое сообщение, выполняет заранее определенные действия, например, может изменить собственное состояние, выполнить некоторые вычисления, нарисовать окно илиграфик и, в свою очередь, сформировать сообщения другим объектам.
Такимобразом, процессом решения задачи управляет последовательность сообщний. Передавая эти сообщения от объекта к объекту, программа выполняетнеобходимые действия.Различие процедурной и объектной декомпозиции предметной областизадачи продемонстрируем на примере разработки программы исследованияэлементарных функций, рассмотренной в параграфе 5.2.Пример 9.1.
Разработать программу исследования элементарных функций, которая для функций y=sin х, y=cos х, y=tg х, у=1п х, у=е^ выполняетследующие действия:• строит таблицу значений функции на заданном отрезке с заданнымшагом;• определяет корни функции на заданном отрезке;• определяет максимум и минимум функции на заданном отрезке.В основе объектной декомпозиции также лежит граф состояний интерфейса (см. рис. 5.6 - 5.7). Будем считать, что каждое состояние интерфейса это состояние некоторого функционального элемента системы, т.
е. объекта.Состояний интерфейса пять, соответственно, получаем пять объектов. Назовем эти объекты следующим образом: Главное меню. Меню операций. Табулятор, Определитель корней. Определитель экстремумов. Эти объекты передают управление друг другу, генерируя сообщение Активизировать. Результат объектной декомпозиции изображают в виде диаграммы объектов(рис.
9.1).Кроме этого можно выделить еще один объект Функцию, который должен обеспечивать вычисление выбранной функции по заданному аргументу.Номер функции сообщается данному объекту Главным меню после того, какпользователь осуществит выбор.Полная характеристика объекта включает идентифицирующее условноеимя, а также перечень и описание параметров состояния и аспектов поведения.Так, состояние объекта Функция характеризуется единственным параметром: номером функции, который передает ему Главное меню. Поведениеже включает реакции на два типа сообщений: получив номер функции, объект должен сохранить его, изменив таким образом свое состояние, а получивзапрос на вычисление значения функции, сопровождающийся определеннымзначением аргумента, - вернуть значение функции в заданной точке.304p. Основные теоретическиеУстановить номерфункции (fVположенияГлавноеменюАктивизироватьМенюоперацийАктивизироватьi Активизировать^ОпределителькорнейОпределительэкстремумовВычислить(х)Вычислить(х)ФункцияНомер функцииРис.