WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |

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

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

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

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

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

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

формулы и алгоритмы, описывающие процесс смены состояний моделируемого объекта.

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

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

При компьютерном моделировании можно проводить обезразмеривание величин.

2.3. Компьютерные программы.

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

Различают алгоритмическое, структурное, объектно-ориентированное, визуальное и событийное программирование.

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

Основные положения структурного программирования:

Программа разбивается на блоки, каждый из которых имеет один "вход" и один "выход".

Любая программа может быть составлена из структур, которые представлены на рис. 10:

Рис. 10. Структограммы.

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

Идентификаторами Паскаля называют произвольный набор символов.

Требования к идентификаторам:

Идентификатор состоит из латинских букв и цифр (заглавные и строчные буквы не различаются).

Идентификатор должен начинаться обязательно с буквы {"а1", а не "1а"}.

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

Служебные слова запрещается использовать в качестве идентификаторов.

При написании идентификатора нельзя использовать пробелы.

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

Программа составляется из операторов Паскаля, которые разделяются символом ";".

Для выделения группы операторов используют операторные скобки:

begin…end.

Несколько операторов, заключенных в операторные скобки, называют составным оператором.

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

Структура программы состоит из блока описания и основной программы:

Блок описания:

Program P1; {заголовок, название программы} {±} Uses………;{подключение внешних модулей с расширением *.tpu} {±} Const……...; {описание констант} {±} Type………; {задание типов} {±} Var………..; {раздел объявления переменных}{±} Основная программа:

Begin {начало основной программы} {+} … {тело основной программы} {±} End. {конец основной программы} {+}.

{+} – обязательная часть программы.

{±} – необязательная часть программы.

Основные части программы:

Uses – подключение внешних библиотек для расширения в программе набора доступных операторов.

Пример 1:

UsesDOS, Crt, Graph, Printer; {Подключение четырех стандартных модулей:

DOS – использование в программе команд операционной системы.

Crt – расширение возможностей ввода-вывода, использование звукового генератора.

Graph – подключение графических процедур и функций.

Printer – легкий доступ к печати.} Пример 2: Следующая программа обеспечивает реализацию легкого доступа к печати.

UsesPrinter; { подключение модуля} begin Write(‘количество’); { выводится на экран слово "количество"} Write(lst,‘количество’); { выводится на принтер слово "количество"} end.

Const (константы).

В этом разделе описания идентификаторам задаются значения, которые не меняются при выполнении программы.

Пример:

Const a=3; {численная константа} b=’A’; {символьная константа } s=’ABBA’; {строковая константа } b1=false; {логическая константа } M:array[1..4] of integer=(1,5,6,7); {массив констант }.

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

Основные типы данных: простые (численные, символьные, логические и др.); сложные (массивы, строки, записи, файлы, процедуры, объекты и др.) Численные типы: Byte, Shortint, Word, Integer, Longint, Single, Real, Double, Extended.

Символьные переменные - char Значениями символьного типа является множество всех символов ПК.

Каждому символу приписывается целое число в диапазоне 0…255.

Логические переменные - boolean Значениями логического типа может быть одна из предварительно объявленных констант (False – ложь, True – истина).

Сложные типы Массивы - array.

Тип данных Массив позволяет одному идентификатору задать несколько значений, которые отличаются порядковым номером. Номер элемента массива указывается после идентификатора в квадратных скобках {M[5] – пятый элемент массива М}. При описании массива указывается диапазон номеров элементов массива и тип, к которому относится каждый его элемент. Массивы могут быть одно-, двух- и многомерными.

Пример описания и заполнения элементов массива.

Var {описание массивов} M: array [1..5] of integer; {одномерный массив М с номерами элементов от 1 до 5, состоящий из целых чисел} M1: array [2..3,11..15] of char; {двумерный массив М1 с номерами строк от 2 до 3, с номерами столбцов от 11 до 15, состоящий из символов} Begin {заполнение массива} М[2]:=100; {второму элементу численного массива М присвоено значение 100} М1[2,3]:=’d’; {элементу второй строки и третьего столбца символьного двумерного массива М1 присвоено значение ’d’} End.

Строковые переменные – string.

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

Пример.

Var s:string; {описание идентификатора s как строковой переменной} Begin s:=’Количество’; {задание значения строковой переменной} Writeln(s); {распечатка на экране слова "Количество"} end.

Var (Переменные).

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

Пример.

Var x,y:real; {идентификаторы x,y - переменные реального типа} i,j,k:integer; { идентификаторы i,j,k – переменные целого типа } M:array [1..4] of char; { M - одномерный символьный массив из элементов} M1:array [1..3,1..4] of byte; { M1 двухмерный массив из 12 элементов целого типа} Type re=real; { описание нового типа: идентификатор re - реальный тип} Var z:re; {идентификатор z – переменная типа re, то есть реального типа} {Четыре последние строки примера можно заменить следующим образом: Var z:real;} Основная программа Основная программа, как правило, состоит из трех частей:

1. Ввод исходных данных.

2. Расчет.

3. Вывод результата.

Рассмотрим эти части более подробно.

Ввод исходных данных.

Варианты ввода исходной информации покажем на примерах:

Const х=20; {идентификатору x задается постоянное значения в разделе описания констант} y:=20; {идентификатору y присваивается численное значение в теле основной программы} read(x); {выполнение программы приостанавливается для ввода значения "x" с клавиатуры. Оператор аналогичен оператору INPUT в Бейсике} readln(x); {ввод значения идентификатора с новой строки} read(x,y); {ввод двух значений x,y; одно значение от другого отделяется нажатием клавишей пробела или Enter} Write(‘x= ’); readln(x); {Ввод значения с пояснением; на экране в месте ввода появляется сообщение: ‘х= ’} Расчет.

Основные математические соотношения и операции:

+ { сложение} – { вычитание} * { умножение} / { деление} = {равенство (используется при описании констант, типов и т.д.)} := {присваивание} > { больше} < { меньше} >= { больше либо равно} <= { меньше либо равно} <> { не равно}.

Стандартные функции:

abs(x); {модуль, абсолютная величина} exp(x); {еx- экспонента} sqr(x); {x2 - квадрат числа} ln(x); {вычисление натурального логарифма } sin(x); {вычисление синуса} cos(x); {вычисление косинуса} arctan(x); {вычисление арктангенса} round(x); {округление: x=4.9; y=round(x), y=5 } trunc(x); { выделение целой части: x=4.9; y=trunc(x), y=4} i mod j; { остаток целочисленного деления 10 mod 3 1} i div j ; { целочисленное деление 10 div 3 3} chr(i) ; { по порядковому номеру i возвращает символ} ord(b); {функция, обратная предыдущей (возвращение порядкового номера)} int(r) ;{возвращение целой части числа} frac(r) ;{возвращение дробной части числа} Стандартные процедуры:

Dec(i); {i:=i-1} inc(i); {i:=i+1} Goto XY(i,j); {перемещение курсора в указанную точку экрана с координатами i, j} str(x,S); {идентификатор численного типа x переводит в строковую переменную S: xS. } { Требуется модуль Crt} Clrscr; {очистка экрана} {Требуется модуль Crt } Константы Pi {число = 3.14…} Вывод результатов Write(x); {вывод на экран значения x: при реальном x=4, на экран выводится "4.0000000000E+00"} Write(x:4:2); {вывод форматированных данных, то есть выделение на экране заданного количества позиций для вывода идентификатора: показывает общее число позиций, 2 – число знаков после запятой: при x=4, на экран выводится "4.00"} Writeln(x); {вывод с новой строки} Writeln(x,y); {вывод двух значений идентификаторов} Writeln(‘x= ’,x:4:1); {вывод с комментариями и форматированием: "x= 4.0"} Writeln(‘Площадь круга радиусом 3 м равна’,3.14*sqr(3):4:1);

{Вывод с комментариями и выполнением расчетов: "Площадь круга радиусом 3 м равна 28.3"} Технология программирования включает пять этапов: постановка задачи; математическое описание; разработка алгоритма; написание текста программы; отладка, получение результатов.

Пример: Определить площадь основания цилиндра и объем цилиндра.

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

Постановка задачи: Составить программу для моделирования объекта цилиндрической формы радиусом R и высотой H.

Математические модели: расчетная формула для площади основания S=R2; расчетная формула для объема цилиндраV=SH.

Разработка алгоритма: Описание R, S, H, V. Ввод R, H. Расчет S=R2.

Расчет V=SH. Вывод S,V.

Написание программы:

Program SP; { программа вычисления площади основания и объема цилиндра} Var R, H, S, V:real; {Описание переменных} Begin Read(R, H); {в этом месте программа останавливается, для ввода числового значения R и H} {R:=4; H:=3}{другой вариант ввода исходных данных} S:=3.14*Sqr(R); {расчет} V:=S*H; {расчет} {V:=Pi*sqr(R);} {другой вариант расчета} Writeln(‘S=’, S:8:4, ‘ V=’,V:8:4); {Вывод} End.

Отладка и получение результатов:

R= 4.00 H=3.00 S=50.24 V=150.Данная программа может быть использована в качестве подпрограммы (процедуры) в больших структуированных программах:

Procedure SP;

Var R, H, S, V: real;

Begin Read(R, H);

S:=3.14*Sqr(R);

V:=S*H;

Writeln(‘S=’, S:8:4, ‘ V=’,V:8:4);

End; { “;” – окончание подпрограммы}.

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

• Basic: Microsoft Visual Basic;

• Pascal: Borland Delphi;

• C++: Microsoft Visual C++;

• Java: BorlandJBuilder • С#: Microsoft Visual Studio.NET, Borland C#Builder.

На рис. 11 показаны фрагмент палитры компонентов, используемых для разработки формы – прототипа интерфейса будущей программы в среде быстрого программирования (проектирования) Delphi.

Рис 11. Фрагмент палитры и форма.

Разработанная форма наполняется содержанием – подпрограммой (процедурой).

Математические пакеты типа Eureka фирмы Borland, MathCAD фирмы Math Soft, MatLAB фирмы Math Work (первые публикации на русском языке относятся к началу 90-х годов) позволяют использовать возможности развитых численных методов без классической процедуры программирования и в тоже время предоставляют исследователю удобную для его работы среду. Если первое поколение этих и аналогичных, гораздо более мощных систем (Maple V, Mathematica 2, MathCAD 3.0), проявляло часто «детскую беспомощность» при решении задач в формульном виде, то последующие, а тем более нынешние поколения, работали с символьной математикой и с числами уже с той эффективностью и в таком темпе, что пользователю не было необходимости тратить на организацию процессов преобразований и вычислений все свои интеллектуальные и временные ресурсы. В настоящее время используется довольно много систем компьютерной алгебры, систем автоматизации математических вычислений, рассчитанных на массового пользователя: muMath, Reduce, MathCAD 3.0-7.0, Derive, Maple V, Mathematica 2/3 [20, 21].

Основные возможности математических пакетов:

вычисление алгебраических, тригонометрических, гиперфункций, статистических и финансово-экономических функций, специальных математических функций;

действия над числами, операции с действительными и комплексными числами, представление их в дробно-рациональной форме;

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

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.