Моделирование, алгоритмизация и программирование

User Rating: 4 / 5

Star ActiveStar ActiveStar ActiveStar ActiveStar Inactive
 

 

Моделирование, алгоритмизация и программирование

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

Решение задачи с применением компьютера предполагает следующие этапы:

Рассмотрим подробнее каждый из перечисленных этапов.

1. Постановка задачи. Построение информационной модели

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

Примеры:

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

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

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

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

Все эти сведения образуют информационную модель задачи.

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

Шаги построения информационной модели:

Дадим определение понятия «модель» и возможные классификации.

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

Процесс создания ( а иногда и исследования) модели называется моделированием.

Метод познания, состоящий в исследовании объекта по его свойствам, называется моделированием.

Классификация моделей

По области использования

Классификация с учетом фактора времени

По способу представления

По форме представления можно выделит следующие виды информационных моделей:

2. Формализация задачи

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

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

3. Построение алгоритма

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

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

Само слово «алгоритм» происходит от algorithmi – латинской формы написания имени великого математика IX века аль-Хорезми, который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмами и понимали только правила выполнения четырех арифметических действий над многозначными числами.

Алгоритм – понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели или решение поставленной задачи.

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

Исполнитель – это кто-то или что-то, умеющий выполнять некоторый вполне определенный набор действий.  Он обладает следующими свойствами:

Вся совокупность команд, которые данный исполнитель умеет выполнять, называется системой команд исполнителя (СКИ).

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

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

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

Свойства  алгоритмов

Дискретность алгоритма

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

Понятность алгоритма

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

Понятными для исполнителя считаются те команды, которые он может выполнить.

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

Точность алгоритма

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

Результативность и конечность алгоритма

Исполнение алгоритма должно приводить к получению результата (свойство результативности) за конечное число шагов (свойство конечности).

Массовость алгоритма

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

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

Способы записи алгоритмов

На практике наиболее распространены следующие формы фиксации алгоритмов:

Словесный способ

Для человека основным является словесный способ.

Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.

Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

Алгоритм может быть следующим:

задать два числа;

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

определить большее из чисел;

заменить большее из чисел разностью большего и меньшего из чисел;

повторить алгоритм с шага 2.

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

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

Псевдокод

Псевдокод – система обозначений и правил для единообразной и точной записи алгоритмов.

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

Отметим, что между понятиями «алгоритмический язык» и «языки программирования» есть различие; прежде всего, под исполнителем в алгоритмическом языке может подразумеваться не только компьютер, но и устройство для работы «в обстановке». Программа, записанная на алгоритмическом языке, не обязательно предназначена компьютеру. Практическая же реализация алгоритмического языка – отдельный вопрос в каждом конкретном случае.

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

Алгоритм, записанный на алгоритмическом языке, должен иметь название. Название желательно выбирать так, чтобы было ясно, решение какой задачи описывает данный алгоритм. Для выделения названия алгоритма перед ним записывают служебное слово АЛГ (АЛГоритм). За названием алгоритма (обычно с новой строки) записывают его команды. Для указания начала и конца алгоритма его команды заключают в пару служебных слов НАЧ (НАЧало) и КОН (КОНец). Команды записывают последовательно.

Последовательность записи алгоритма:

АЛГ название алгоритма

НАЧ

серия команд алгоритма

КОН

Графическое  представление  алгоритмов

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

Прежде всего определим понятие блок-схемы.

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

Блок-схема – это графическое представление алгоритма.

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

В блок-схеме действия алгоритма (блоки) изображаются следующими геометрическими фигурами:

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

Конструкция следования (линейный алгоритм)

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

Здесь в качестве серий команд могут выступать:

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

Пример

Задача: вычислить площадь круга, если известен радиус.

Дано: R - радиус круга.

Найти: S - площадь круга.

Решение: S=3,14 R2

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

Прочесть значение R.

Умножить значение R на 3,14.

Умножить результат второго действия на значение R.

Записать полученный результат как значение S.

На языке блок-схем

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

Конструкция ветвления

Конструкция ветвления – это форма организации действий, при которой в зависимости от выполнения (невыполнения) некоторого условия выполняется одна из двух серий команд.

Алгоритм, содержащий конструкцию ветвления, имеет разветвляющуюся структуру.

Если <условие>

то <серия команд 1>

иначе <серия команд 2>

конец ветвления

Пример

Задача: вычислить

Дано: х – значение аргумента.

Найти: у – значение функции.

Решение:

-x, если х<0

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

Сделаем словесное представление данного алгоритма.

Начало

Если х>0, то

у: = х

иначе

начало

у: = -х

Конец ветвления

Записать значение у

Конец

Выделяют полную и неполную условную конструкцию.

Введём обозначение:

Q – условие;

P1, P2, … PN – действия, которые выполняются в случае истинности условия;

T1, T2, … TN - действия, которые выполняются, если условие ложно.

Блок-схема и алгоритм выглядят следующим образом (см. табл.):

Условные конструкции

Полная

Неполная

Р1

Р2

РN

иначе

Т1

Т2

ТN

Конец ветвления

Р1

Р2

РN

Конец ветвления.

Конструкция цикла

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

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

Различают два основных типа циклов: цикл с параметром и цикл с условием.

Цикл с параметром

Он применяется, когда количество повторений известно заранее.

При этом параметр (переменная цикла) изменяется от своего начального значения до конечного с заданным шагом и определяет количество повторений.

Запись цикла с параметром на алгоритмическом языке выглядит так:

начальное            конечное                    шаг

для <имя параметра> от <   значение  > до <  значение  > шаг <изменения>

параметра            параметра               параметра

нц

<тело цикла>

кц

Цикл с условием

Он применяется, когда количество повторений заранее неизвестно и зависит от выполнения некоторого условия.

Различают циклы с предусловием и с постусловием.

Цикл с предусловием (цикл «пока»)

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

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


пока<условие>

нц

< тело цикла >

кц

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

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

Цикл с постусловием (цикл «до»)

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

 


повторять

< тело цикла >

до < условие >



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


.


4. Составление программы

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

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

Технологии программирования

Алгоритмическое (модульное) программирование

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

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

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

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

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

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

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

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

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

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

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

Событийно-ориентированное программирование

С активным распространением системы Windows и появлением визуальных RAD-сред широкую популярность приобрел событийный подход к созданию программ — событийно-ориентированное программирование.

Идеология системы Windows основана на событиях. Щелкнул человек на кнопке, выбрал пункт меню, нажал на клавишу или кнопку мыши - в Windows генерируется подходящее сообщение, которое отсылается окну соответствующей программы. Структура программы, созданной с помощью событийного программирования, следующая. Главная часть представляет собой один бесконечный цикл, который опрашивает Windows, следя за тем, не появилось ли новое сообщение. При его обнаружении вызывается подпрограмма, ответственная за обработку соответствующего события (обрабатываются не все события, их сотни, а только нужные), и подобный цикл опроса продолжается, пока не будет получено сообщение «Завершить работу».

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

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

Объектно-ориентированное программирование

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

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

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

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

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

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

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

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

Примеры:

  1. Инкапсуляция – объединение в объекте его свойств и возможных над ним операций (методов). Сочетание данных с допустимыми действиями над этими данными приводит к «рождению» нового элемента в конструировании программ – объекта и объект действует, так как в нем заложено, и только над тем, что в нем описано. Обращение к данным объекта не через его действия недопустимо. Объекты, инкапсулирующие одинаковый перечень свойств и операций, объединяются в классы. Каждый отдельный объект является экземпляром класса. Экземпляры класса могут иметь отличающиеся значения свойств.

Например, файловая система компьютера может содержать сотни и тысячи файлов. Все файлы обладают одним и тем же набором свойств (имя, положение в файловой системе) и операций (переименование, перемещение или копирование) и образую класс объектов ФАЙЛЫ. Каждый отдельный файл является экземпляром этого класса и имеет конкретные значения свойств (имя, местоположение и др).

  1. Наследование – определяет отношение между классами: объекты класса-потомок обладают всеми свойствами объектов класса-родитель. То есть каждый следующий производный объект наследует свойства, действия своих предшественников. Механизм наследования позволяет переопределить или добавить новые данные и методы их обработки, создать иерархию классов.

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

Одним из графических примитивов является класс объектов ТОЧКА. В этом классе каждый объект обладает определенными свойствами (Координаты, Цвет), над которыми возможны соответствующие операции (Перемещение, Изменение цвета). Класс объектов ТОЧКА можно задать таблицей

Свойства

Методы

Координаты (x,y)

Перемещение

Цвет

Изменение цвета

Из класса объектов ТОЧКА можно получить новый класс ОКРУЖНОСТЬ, добавив новое свойство Радиус и операцию Изменение радиуса. Класс объектов ОКРУЖНОСТЬ можно задать таблицей.

Свойства

Методы

Координаты (x,y)

Перемещение

Цвет

Изменение цвета

Радиус (R)

Изменение радиуса

Все объекты класса ОКРУЖНОСТЬ наследуют свойства и операции класса ТОЧКА. Класс ТОЧКА называется класс-родитель, класс ОКРУЖНОСТЬ – класс-потомок. Графически это выглядит так:


наследование

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

Например. Для большинства класса объектов в среде WINDOWS/OFFICE характерен набор одних и тех же операций – переименование, перемещение, копирование, удаление и т.д. Механизмы реализации этих действий неодинаковы для различных классов. Так, для копирования папки необходимо совершить последовательность действий по изменению файловой системы, а для копирования символа внести изменения в документ. Эти операции будут выполнятся различными программами.

Визуальное программирование

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

Развитие этой технологии связано с появлением графического интерфейса. Это технология разработки приложений в виде графических объектов, с последующим переводом их в программный код. В 90-х годах появляется технология RAD – Rapid Application Development – быстрая разработка приложений. Все необходимые элементы оформления и управления создаются и обслуживаются не путем ручного программирования, а с помощью готовых визуальных компонентов, которые с помощью мыши перетаскиваются в проектируемое окно. Свойства и поведение компонентов настраиваются с помощью простых редакторов, визуально показывающих характеристики соответствующих элементов. При этом исходный текст программы генерируется RAD-средой автоматически.

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

Из универсальных языков программирования сегодня наиболее популярны следующие:

Бейсик (Basic) — для освоения требует начальной подготовки (общеобразовательная школа);

Паскаль (Pascal) — требует специальной подготовки (школы с углубленным
изучением предмета и общетехнические вузы);

Си++ (C++), Ява (Java), Си Шарп (С#) — требуют профессиональной подго­товки (специализированные средние и высшие учебные заведения).

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

Basic: Microsoft Visual Basic;

Pascal: Borland Delphi;

C++: Microsoft Visual C++;

Java: BorlandJBuilder,

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

Для разработки серверных и распределенных приложений можно использовать систему программирования Microsoft Visual C++, продукты фирмы Borland, прак­тически любые средства программирования на java.

5. Ввод программы в память компьютера. Пробный запуск

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

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

6. Отладка и тестирование программы

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

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

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

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

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

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

До последнего времени 4, 5 и 6 этапы были необходимыми этапами решения задачи с помощью ЭВМ. При этом языки и системы программирования были теми программными инструментами, с помощью которых создавались новые программы для решения задач пользователя. Однако с расширением круга задач, для решения которых используется компьютер, растет число людей, которые, не будучи профессиональными программистами, применяют компьютер в своей работе.

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

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

7. Получение и анализ результатов

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

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

Вопросы для подготовки к контрольной работе по теме «Моделирование, алгоритмизация, программирование»