Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
INF_Ch_1_LEKTs.doc
Скачиваний:
18
Добавлен:
02.04.2015
Размер:
1.13 Mб
Скачать

2.4. Последовательность подготовки и решения задачи на эвм

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

  1. постановка задачи;

  2. составление математического описания задачи;

  3. разработка алгоритма решения;

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

  5. ввод программы в ЭВМ, ее трансляция и отладка;

  6. ввод исходных данных и выполнение программы (счет);

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

Постановка задачи должна включать в себя

- цель решения;

- словесную формулировку самой задачи в терминах той области знаний, для которой она решается;

- перечень исходных данных, необходимых для решения задачи;

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

- сведения о требуемой точности счета.

Во многих случаях в постановку задачи включают ее экономическое обоснование.

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

Вспомним пример 1.1. Если мул возьмёт у лошади один мешок, его ноша станет вдвое тяжелее лошадиной. А если перенести со спины мула один мешок на спину лошади, их поклажи сравняются. Сколько мешков несла лошадь, и сколько нёс мул?

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

Обозначим Х и Y – количество мешков на спине лошади и мула, соответственно.

Если снять у лошади один мешок и положить на мула, то у них будет X – 1 – у лошади и Y + 1 – у мула. По условию Y + 1 = 2 (X – 1) – первое уравнение (формализованное представление первого условия).

Если снять у мула один мешок и положить на лошадь, то у них будет X + 1 – у лошади и Y – 1 – у мула. По условию Y – 1 = X + 1 – второе уравнение.

После преобразований получим систему уравнений

,

которая и является математической моделью данной проблемы. Чтобы решить задачу, надо составить алгоритм, например, на основе правила Крамера (см. 1.2.4).

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

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

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

Пример 2.3. Пусть необходимо составить программу решения системы уравнений, полученной в примере 1.1. Воспользуемся для этого правилом Крамера. Представим данную систему в общем виде

Тогда, согласно правилу Крамера, решение будет иметь следующий вид:

; , гдеD = А11А22 – А21А12, Dx = b1A22 – b2A12,

Dy = A11b2 – A21b1.

Соответствующая программа будет иметь вид:

var x,y,A11,A12,A21,A22,b1,b2,Dx,Dy,D : real;

begin readln(A11,A12,b1);

readln(A21,A22,b2);

D:=A11*A22-A21*A12;

Dx:=b1*A22-b2*A12; Dy:=A11*b2-A21*b1;

x:=Dx/D; y:=Dy/D;

writeln(x:10:2,y:10:2);

readln;

end.

Как было сказано, в программе возможны синтаксические и семантические ошибки. Синтаксические ошибки обнаруживаются транслятором, а семантические – тестированием программы. Наиболее вероятные семантические ошибки в любой программе – неправильно записанные формулы. Для проверки правильности формул данной программы решим какую-нибудь простую, легко решаемую систему, например, систему

с единичной матрицей, т.е. при A11 = 1, A12 = 0, A21 = 1, A22 = 0. Тогда для любых b1 и b2 при правильных формулах получим x = b1, y = b2. В противном случае формулы содержат ошибки. Если, например, мы при b1 = 10, b2 = 6 получили х = 6, у = 10, то это означает, что мы перепутали формулы для Dx и Dy и в программу надо внести соответствующее изменение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]