Этапы решения задач на компьютерах. Трансляция, компиляция и интерпретация
знать: основные этапы создания программных продуктов; понятия «трансляция», «компиляция», «интерпретация»; их различие
уметь: выделять основные этапы создания программных продуктов
Этапы решения задач на компьютерах.
Работа по решению прикладной задачи на компьютере проходит через следующие этапы:
1. постановка задачи;
2. математическая формализация;
3. построение алгоритма;
4. составление программы на языке программирования;
5. отладка и тестирование программы;
6. проведение расчетов и анализ полученных результатов.
Эту последовательность называют технологической цепочкой решения задачи на компьютере.
1 Постановка задачи
На этапе постановки задачи должно быть четко определено, что дано, и что требуется найти. Так, если задача конкретная, то под постановкой задачи понимают ответ на два вопроса: какие исходные данные известны и что требуется определить. Если задача обобщенная, то при постановке задачи понадобится еще ответ на третий вопрос: какие данные допустимы. Таким образом, постановка задачи включает в себя следующие моменты: сбор информации о задаче; формулировку условия задачи; определение конечных целей решения задачи; определение формы выдачи результатов; описание данных (их типов, диапазонов величин, структуры и т. п.).
2 Математическая формализация (Моделирование).
На этом этапе строится математическая модель - система математических соотношений - формул, уравнений, неравенств и т. д., отражающих существенные свойства объекта или явления. Необходимо отметить, что при построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности.
В случае большого числа параметров, ограничений, возможных вариантов исходных данных модель явления может иметь очень сложное математическое описание (правда, реальное явление еще более сложно), поэтому часто построение математической модели требует упрощения требований задачи. Необходимо выявить самые существенные свойства объекта, явления или процесса, закономерности; внутренние связи, роль отдельных характеристик. Выделив наиболее важные факторы, можно пренебречь менее существенными.
Итак, создавая математическую модель для решения задачи, нужно: выделить предположения, на которых будет основываться математическая модель; определить, что считать исходными данными и результатами; записать математические соотношения, связывающие результаты с исходными данными.
3 Построение алгоритма.
Наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели. Для этого может быть использован язык блок-схем или какой-нибудь псевдокод, например учебный алгоритмический язык. Разработка алгоритма включает в себя выбор метода проектирования алгоритма; выбор формы записи алгоритма (блок-схемы, псевдокод и др.); выбор тестов и метода тестирования; проектирование самого алгоритма.
4 Составление программы на языке программирования (Программирование).
Первые три этапа - это работа без компьютера. Дальше следует собственно программирование на определенном языке в определенной системе программирования. Программирование включает в себя следующие виды работ: выбор языка программирования; уточнение способов организации данных; запись алгоритма на выбранном языке программирования.
Справедливости ради, надо сказать, что этот этап решения задачи было бы правильнее назвать "Компьютерным моделированием", т. к. при решении некоторых задач можно обойтись без составления программы на языке программирования, это можно успешно сделать, используя современные приложения (электронные таблицы, системы управления базами данных и пр.). В этом случае не понадобится и следующий этап - отладка и тестирование программы, а вот проведение расчетов и анализ полученных результатов следует проводить с особой тщательностью.
5 Отладка и тестирование программы.
Под отладкой программы понимается процесс испытания работы программы и исправления обнаруженных при этом ошибок. Обнаружить ошибки, связанные с нарушением правил записи программы на языке программирования (синтаксические и семантические ошибки), помогает используемая система программирования. Пользователь получает сообщение об ошибке, исправляет ее и снова повторяет попытку исполнить программу.
Проверка на компьютере правильности алгоритма производится с помощью тестов. Тест - это конкретный вариант значений исходных данных, для, которого известен ожидаемый результат. Прохождение теста - необходимое условие правильности программы. На тестах проверяется правильность реализации программой запланированного сценария.
Таким образом, тестирование и отладка включают в себя синтаксическую отладку; отладку семантики и логической структуры программы; тестовые расчеты и анализ результатов тестирования; совершенствование программы.
6 Проведение расчетов и анализ полученных результатов .
Последний этап - это использование уже разработанной программы для получения искомых результатов. Производится анализ результатов решения задачи и в случае необходимости - уточнение математической модели (с последующей корректировкой алгоритма и программы). Программы, имеющие большое практическое или научное значение, используются длительное время. Иногда даже в процессе эксплуатации программы могут исправляться, дорабатываться.
Пример. Пусть тело брошено вертикально вверх с начальной скоростью V0 с некоторой высоты Н0. Определить его местоположение и скорость в заданный момент времени.
На первом этапе обычно строится описательная информационная модель объекта или процесса. В нашем случае с использованием физических понятий создается идеализированная модель движения объекта. Из условия задачи можно сформулировать следующие основные предположения:
- тело мало по сравнению с Землей, поэтому его можно считать материальной точкой;
- скорость бросания тела мала, поэтому:
- ускорение свободного падения можно считать постоянной величиной;
- сопротивлением воздуха можно пренебречь.
На втором этапе создается формализованная модель, т. е. описательная информационная модель записывается с помощью какого-либо формального языка.
Из курса физики известно, что описанное выше движение является равноускоренным. При заданных начальной скорости (Vo), начальной высоте (Но) и ускорении свободного падения (g = 9,8 м/с2) зависимость скорости (V) и высоты (Н) от времени (t) можно описать следующими математическими формулами:
(1)
(2)
На третьем этапе необходимо формализованную информационную «модель преобразовать в компьютерную модель, т. е. выразить ее на понятном для компьютера языке. Существуют два принципиально различных пути построения компьютерной модели:
- создание алгоритма решения задачи и его кодирование на одном из языков программирования;
- формирование компьютерной модели с использованием одного из приложений (электронных таблиц, СУБД и т. д.).
Для реализации первого пути надо построить алгоритм определения Координаты тела в определенный момент времени и записать его на псевдокоде или построить блок-схему алгоритма.
алг Движение_тела1
нач
вещ: V0, H0, H, t, g:=9.8
ВВОД: V0
ВВОД: H0
ВВОД: t
H := H0+V0*t – (g*t2)/2
ВЫВОД: H
кон
Второй путь требует создания компьютерной модели, которую можно исследовать в электронных таблицах. Для этого следует представить математическую модель в форме таблицы функции зависимости координаты от времени (формула (1)) и таблицы зависимости скорости тела от времени (формула (2)).
Четвертый этап состоит в переводе алгоритма на конкретный язык программирования с учетом специфики выбранного языка.
При переводе на язык Basic (Бейсик) консольная программа может выглядеть так:
Sub Main()
Dim V0 As Double, H0 As Double, H As Double, t As Double, g As Double
g = 9.8
V0 = InputBox("Начальная скорость:")
H0 = InputBox("Начальная высота:")
t = InputBox ("Время полета:")
H = H0 + V0 * t - (g * t * t) / 2
MsgBox("Искомая высота = " & H)
End Sub
При переводе на язык C# (Си шарп):
static void Main()
{
double V0, H0, H, t, g = 9.8;
Console.WriteLine("Начальная скорость:");
V0 = double.Parse(Console.ReadLine());
Console.WriteLine("Начальная высота:");
H0 = double.Parse(Console.ReadLine());
Console.WriteLine("Время полета:");
t = double.Parse(Console.ReadLine());
H = H0 + V0 * t - (g * t * t) / 2;
Console.WriteLine(("Искомая высота = {0}", H);
}
В приведенных примерах показана реализация алгоритма на конкретных языках программирования с учетом специфики языка.
Пятый этап исследования информационной модели состоит в проведении компьютерного эксперимента. Если компьютерная модель существует в виде программы на одном из языков программирования, ее нужно запустить на выполнение и получить результаты.
Если компьютерная модель исследуется в приложении, например в электронных таблицах, можно провести сортировку или поиск данных, построить диаграмму или график и т. д.
Далее выполняется анализ полученных результатов и при необходимости корректировка исследуемой модели. Например, в нашей модели необходимо учесть, что не имеет физического смысла вычисление координаты тела после его падения на поверхность Земли.
Транслятор – это программа или техническое средство, выполняющее преобразование программы, представленной на одном из языков программирования, в программу на другом языке, в определенном смысле равносильную первой.
Компилятор – это программа, предназначенная для трансляции исходного текста программы с высокоуровневого языка в объектный код. Входной информацией для компилятора является описание алгоритма или программа на языке программирования. На выходе компилятора – эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
Компоновка – это один из этапов создания исполняемого файла.
Компилировать – проводить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык (создание объектного кода) для ее исполнения. Результатом компиляции является объектный файл с необходимыми внешними ссылками для компоновщика. Программа уже переведена в машинные инструкции, однако еще не полностью готова к выполнению. В объектном файле имеются ссылки на различные системные функции. Даже если в программе явно не упомянута ни одна функция, необходим, по крайней мере, один вызов системной функции – завершение программы и освобождение всех принадлежащих ей ресурсов.
Компоновщик – модуль системы программирования или самостоятельная программа, которая собирает результирующую программу из объектных модулей и стандартных библиотечных модулей. Этот процесс называется компоновкой, его результатом и будет исполняемый файл (как правило, имеющий расширение .exe). С процедурой интерпретации компоновка не связана.
Интерпретатор анализирует и тут же выполняет программу покомандно, по мере поступления ее исходного кода на вход интерпретатора.
Алгоритм работы простого интерпретатора:
1) прочитать инструкцию;
2) проанализировать инструкцию и определить соответствующие действия;
3) выполнить соответствующие действия;
4) если не достигнуто условие завершения программы, прочитать следующую инструкцию и перейти к пункту 2.
Дата добавления: 2016-05-31; просмотров: 11192;