Файл: Могилев А.В. Информатика.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 6614

Скачиваний: 50

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

581 

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

 

2.4. НЕКОТОРЫЕ ПРИЕМЫ ПРОГРАММИРОВАНИЯ 

 

Как  уже  отмечалось  выше,  наибольшая  польза  при  изучении  вопросов,  затрагиваемых  в 

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

Именно поэтому мы не будем касаться здесь вопроса об использовании специализирован-

ных пакетов программ решения математических задач и графической поддержки. Во-первых, та-
кие пакеты различны на разных ЭВМ, постоянно появляются новые, и за этим не угнаться ника-
кому  учебнику. Во-вторых (и это главное), самостоятельно запрограммированное осознанное ре-
шение системы дифференциальных уравнений методом Эйлера и сопровождающая его простень-
кая самостоятельно созданная на BASIC или PASCAL иллюстрация в виде графика или движуще-
гося  по  экрану  предмета  дают  тому,  кто  это  сделал,  куда  больше,  чем  обращение  к  пакету 
MATHEMATICA  с  его  могучими  программами.  От  того,  что  задача  будет  решена,  скажем,  про-
граммой из этого пакета по методу Рунге - Кутта - Мерсона с автоматическим выбором шага ин-
тегрирования,  реальных  знаний  почти  не  прибавится.  Здесь  мы  упираемся  в  фундаментальные 
проблемы целей образования. Разумеется, овладение возможностями одного из пакетов математи-
ческой поддержки (Eureka, MathCad, MathLab, Derive и др. ) вполне желательно и может принести 
определенную пользу, но не заменить самостоятельно проделанной работы. 

Далее остановимся лишь на отдельных вопросах программирования, наиболее существен-

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

Организация диалога человек - ЭВМ в процессе проектирования и разработки моде-

лирующих программ.

 Организация интерфейса пользователя при разработке профессиональных 

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


background image

 

582 

другим классам программ. Именно по соответствию этим требованиям сегодня в первую очередь 
судят о профессионализме разработки. 

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

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

Диалог  человека  с  машиной  весьма  далек  от  привычного  человеческого  диалога.  Главная 

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

 

ли автор программы этому тексту какой-либо смысл. 

Слово «семантика» означает смысловую сторону сообщения. В распознании смысла сооб-

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

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

граммах, в основном, используются следующие типы элементов диалога: 

• меню; 
• вопросы, требующие ответа «да/нет»; 
• ответы по шаблону; 
• команды. 
Меню  -  на  экране  нумерованное  или  помеченное  иным  способом  (например,  выделением 

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

 

 

Рис. 7. 3, а.

 Пример кадра меню 

 

Программа 146.

 Фрагмент программы, реализующей меню с рис. 7. 3,а. 

Program St; Uses Crt; 
Var M : Byte; Logic : Boolean; 
(Про\"(о}е\"(a)ypa печати меню и выбора соответствующего пункта) 
Procedure Menu (Var M : Byte) ; 
Begin Repeat (Выбор пункта меню с верифика\"(о}ией вво\"(а)а} 

CIrScr; GotoXY (15, 7); 

Write('\"(А}ИНАМИКА ПОПУЛ\ss\"{0}ИЙ С НЕПРЕРЫВНЫМ РАЗМНОЖЕНИЕМ')•; 
GotoXY(22, 10); Write('1. Внутриви\"{а}овая конкурен\"(о}ия. '); 
GotoXY(22, 12); Write('2. Межви\"{а}овая конкурен\"(о}ия. '); 
GotoXY(22, 14); Write('3. Система хищник-жертва. '); 
GotoXY(22, 16); Write('4. Коне\"{о} работы. '); 
GotoXY(15, 22); Write('ВЫБЕРИТЕ НОМЕР НУЖНОГО ПУНКТА МЕНЮ '); 


background image

 

583 

Read(M)  
Until M In [1. . 4] 

End; 

Begin (OCHOBHA\ss ПРОГРАММА)  

Logic := False; 
Repeat 
Menu(M); (меню) 
Case M Of 
1 : Begin (Внутриви\"{а}овая конкурен\"{о}ия} End; 
2 : Begin {Межви\"{а}овая конкурен\"{о}ия) 
CIrScr; WriteLn('Пункт меню "Межви\"{а}овая конкурен\"{о}ия"') ; 

Repeat Until KeyPressed  

End; 
3 : Begin {Система хищник-жертва} End; 
4 : Logic := True (Выхо\"{а} из программы)  
End 
Until Logic  

End. 

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

вводом  букв  В,  M.  С;  еще  удобнее  -  установкой  курсора  в  нужную  строку  клавишами  и  (или) 
«мышью» (если она есть). Сути дела это не меняет. 

Вопрос, требующий ответа «да/нет» - частный случай меню, который, однако, целесообраз-

но выделить. 

 

 

Рис. 7. 3, б.

 Выбор одного из возможных ответов 

 

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

избежать длинных объяснений о формате числа, количестве значащих цифр. 

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

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

 

Рис. 7. 3, в.

 Форматированный ввод данных 

 

 

Рис. 7, 3, г.

 Выбор последующего режима работы 

 

В основной части кадра-некий текст, предписывающий определенную реакцию. Но указан-

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


background image

 

584 

возврата в кадр, из которого вышли. 

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

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

v

0

,

 

звуковым сигналом, 

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

Спроектируем возможное оформление диалога и формы представления результатов для од-

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

Неплохо,  если  в  процессе  счета  программа  выводит  на  экран  стационарную  или  мерцаю-

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

N(t)»,

  «Запись  парамет-

ров и результатов в файл», «Печать результатов», «Выполнение очередного расчета», «Окончание 
расчетов». 

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

деленной программистской культуры и немалого труда. 

Повсеместный  переход  на  графические  интерфейсные  операционные  системы  уровня 

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

,

  то  могут  получить  вполне  профессио-

нальные программные продукты. 

Отметим, наконец, что те несколько программ, которые приведены ниже при рассмотрении 

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

Компьютерная научная графика

. С простейшей научной графикой мы встречаемся очень 

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

В современной прикладной информатике этим обстоятельством очень широко пользуются, 

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


background image

 

585 

изображений. 

В машинной графике выделяют несколько разделов. 

Иллюстративная  графика,

  простейшими  программными  средствами  которой  являются 

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

Деловая графика

 существенно «скучнее». Когда администратору, бухгалтеру, экономисту и 

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

Одна из самых сложных и специализированных разновидностей систем машинной графики 

инженерная графика,

 известная также под именем САПР - системы автоматизированного проек-

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

И, наконец, 

научная графика -

 наиболее актуальная для изучаемого курса и наименее всех 

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

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

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

Более  того,  можно  «увидеть»  и  то,  что  строго  говоря,  вообще  плохо  соответствует  слову 

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

При реализации относительно несложных задач нашего курса прибегать к помощи каких-

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

Приведем несколько конкретных примеров, привязанных к нашему курсу. 

Траектории движения тел, графики

. В ряде рассмотренных ниже задач уместно иллюст-

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

Поскольку основные графические операторы языка BASIC или процедуры модуля GRAPH 

Turbo  Pascal  нашим  читателям  известны,  опишем  лишь  общие  моменты  построения  графиков  и 
траекторий. Напомним, что в главе 3 в разделе, посвященном PASCAL, приведена программа по-