Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Последовательность подготовки и решения задачи на ЭВМ

End.

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

var – переменные; integer [интедже]– целый;

readln [риидлн]– ввод данных с клавиатуры;

writeln [райтелн]– вывод данных на экран;

begin – начало текста программы или ее блока;

end – конец текста программы или ее блока; until [антил]– пока;

halt – конец вычислений; then [зен]– тогда;

if – если (проверка условия); else [элз]– иначе;

repeat [репиит]– повторять; false [фолс] – ложно.

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

 

2.3. Базовые алгоритмические структуры

<TBODY>Логическая структура любого алгоритма может быть представлена комбинацией трех базовых (основных) структур: следование, ветвление, цикл.

1. Базовая структура “следование”. Образуется из последовательности действий, следующих строго одно за другим.

Например, требуется вычислить величину y по формуле y = ax2 + bx при произвольных a, b, x. Блок-схема соответствующего алгоритма имеет вид, приведенный на рис 2.2. В данном случае алгоритм состоит из простой последовательности действий (блоков). Значит, </TBODY>он соответствует структуре “следование”.

       
   
 
 
Рис. 2.2. Алгоритм вычисления по формуле y = ax2 + bx

 


2. Базовая структура “ветвление” обеспечивает в зависимости от результата проверки выполнения некоторого условия (да или нет) выбор одного из альтернативных путей работы алгоритма.

Структура “ветвление” существует в двух основных вариантах:

если – то:

если – то – иначе.

 

 

В алгоритме примера 2.1 присутствуют оба варианта этой структуры. После блока “m = n?” в случае положительного ответа выполняется действие “Вывести n”, а в случае отрицательного – работа алгоритма продолжается далее. Таким образом, реализована структура “если – то”. После блока “m > n?” в случае положительного ответа выполняется действие “m = m – n”, а в случае отрицательного (т.е. иначе) – действие “n = n – m”,. Таким образом реализована структура “если – то – иначе”.</TBODY>

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

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

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

1. Оба мальчика переправляются на левый берег.

2. Один мальчик возвращается на правый берег, второй – остается на левом.

3. Первый боец переправляется на левый берег, а первый мальчик остается на правом.

4. Второй мальчик переправляется на правый берег.

5. Оба мальчика переправляются на левый берег.

6. Один мальчик возвращается на правый берег, второй – остается на левом.

7. Второй боец переправляется на левый берег.

8. Второй мальчик переправляется на правый берег.

Заметим, что шаги 1 – 4 почти совпадают с шагами 5 – 8, разница только в номере переправляемого бойца. Очевидно, что с помощью подобного алгоритма можно переправить любое количество N бойцов, а не только двоих. Для этого надо выполнить следующий алгоритм.

1. Повторять шаги со 2 по 6, увеличивая каждый раз на 1 значение k от 1 до N.

2. Оба мальчика переправляются на левый берег.

3. Один мальчик возвращается на правый берег, второй – остается на левом.

4. k-й боец переправляется на левый берег, а первый мальчик остается на правом.

5. Второй мальчик переправляется на правый берег.

6. Если k = N, то стоп.

Это будет циклический алгоритм, тело которого составляют шаги 2 – 6. Другой вариант циклической структуры дан в примере 2.1. В нем телом цикла являются шаги 2 – 4.

 

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

Вспомним пример 1.1.Митя и Алеша вместе собрали 40 грибов. Митя собрал на 10 грибов больше, чем Алеша. Сколько грибов собрал каждый мальчик?

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

,

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

Трансляция программы – перевод текста программы с алгоритмического языка (например, 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;

<== предыдущая лекция | следующая лекция ==>
Процесс обработки данных | Конструктивные элементы языка PASCAL
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 345; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.031 сек.