Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ



Основные сведения Понятие алгоритма

Наша цель — научить компьютер решать те задачи, которые он самостоятельно и изначально решать не уме­ет. Что же для этого нужно?

А что, например, следует сделать, если нужно привлечь к решению задачи человека (назовем его исполнитель), не знакомого с ее решением? В общем виде последова­тельность действий здесь следующая:

а) выбрать способ (метод) решения задачи и изучить
его во всех подробностях;

б) сообщить исполнителю выбранный метод в абсолют­
но понятном для него виде.

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

Второй этап значительно сложнее. Дело в том, что если способ (метод) решения задачи описан произвольно, то нет гарантии, что он будет верно понят исполнителем.

Попробуйте, например, небольшую игру. Попросите товарища на время забыть все, что он знает, например, о процессе варки картофеля. Если же выбранный вами по­мощник еще никогда не варил картошку, то эксперимент будет максимально «чистым». Опишите ему процесс при­готовления этого нехитрого блюда и попросите его приго­товить, точно следуя вашим инструкциям. После чего уда­литесь с кухни и подождите результата в другой комнате. Ну как картошечка? Надеюсь, вы не забыли сказать ва­шему другу, чтобы он предварительно почистил ее?..

Именно поэтому описание метода следует выполнять в соответствии с определенными правилами, а именно: - выделить величины, являющиеся исходными для задачи;


 




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

- указать порядок выполнения этапов;

- указать признак окончания процесса решения задачи;

- указать во всех случаях, что является результатом ре­шения задачи.

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

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

Итак, мы подошли к центральному понятию информа­тики — алгоритму .Более строго это понятие можно дать следующим образом.

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

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

Примером алгоритма может служить уже упоминав­шийся кулинарный рецепт — алгоритм варки картофеля:

1. Подготовить исходные величины — воду, картофель, соль, посуду (кастрюлю с крышкой для варки), нож.

2. С помощью ножа очистить картофель и промыть его водой.

3. Нарезать картофель для варки.

4. Поместить картофель в кастрюлю.

5. Залить содержимое кастрюли водой.

6. Посолить.

7. Довести воду до кипения.

8. Убавить огонь.

9. Варить картофель до готовности (приблизительно в течение 20-30 минут).

 

10. Снять кастрюлю с огня и слить воду.

11. Картофель готов. Процесс прекратить.


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

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

1. Дискретность алгоритма. Это свойство означает, что решение задачи, записанное в виде алгоритма, разби­то на отдельные простейшие команды, которые располо­жены в порядке их выполнения.

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

3. Результативность алгоритма. Свойство алгорит­ма, состоящее в том, что он всегда приводит к результату через конечное число шагов.

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

Действительно, рассмотрим приведенный выше алго­ритм варки картофеля с точки зрения его свойств.

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

Алгоритм определен, т.к. каждая команда описана просто, коротко и достаточно понятно для исполнителя. Более того, команды даны именно в той последовательно­сти, которая необходима для решения данной задачи. Действительно, попробуйте, например, поменять местами пункты 5 и 7 алгоритма. Вряд ли в этом случае вы полу­чите нужный результат.

Алгоритм результативен, т.к. при его точном механи­ческом исполнении вы сможете отведать вполне приемле­мый вареный картофель.

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

3. Способы описания алгоритмов. Существует не­сколько способов описания алгоритмов.


 




                   
     
     
 
 
   
   
 
 
 
 


1. Словесно-формульное описание алгоритма, т.е. опи­сание алгоритма с помощью слов и формул.

2. Графическое описание алгоритма, т.е. описание с помощью специальных графических схем алгоритмов — блок-схем.

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

4. Запись алгоритма на одном из языков программиро­вания (Pascal, Basic и т.п.)

Рассмотрим два способа описания алгоритмов для сле­дующего примера.

Пример.

Составить алгоритм начисления зарплаты согласно сле­дующему правилу: «Если стаж работы сотрудника менее 5 лет, то зарплата 130 руб., при стаже работы от 5 до 15 лет — 180 руб., при стаже свыше 15 лет зарплата по­вышается с каждым годом на 10 рублей».

Сформулируем задачу в математическом виде:

Вычислить

130, если5Т< 5 ZP= 180, если5< 5Г< 15

180+(5Г-15)10, если15< 577

где ZP — зарплата; ST — стаж работы.

А. Словесно-формульное описание алгоритма решения

задачи:

1. Ввести ST, перейти к п.2.

2. Если ST< 5, to ZP: =130, перейти к п. 4, иначе — пе­рейти к п.З.

3. Если 5< ST< 15, то ZP: =180, перейти к п. 4, иначе ZP: =180+(ST-15)10, перейти к п. 4.

4. Вывести значение ZP, перейти к п. 5.

5. Конец работы.

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


Прежде чем перейти к описанию алгоритма графичес­ким способом, введем понятие блок-схемы алгоритма.

Блок-схема алгоритма представляет собой систему свя­занных геометрических фигур.

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

Если условие выполняется — выходим из блока по вы­ходу Да, если не выполняется — по выходу Нет.

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


 




       
   
 



Выводы

Итак, подытожим главное в этом разделе.

Алгоритм — это строго определенная последовательность действий, необходимая для решения данной задачи.

Алгоритм должен обладать определенным набором свойств.

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

2. Определенность алгоритма: каждая команда ал­горитма должна быть понятна исполнителю, не оставлять места для ее неоднозначного толкования и неопределен­ного исполнения.

3. Результативность алгоритма: алгоритм всегда
должен приводить к определенному решению через конеч­
ное число шагов (или сообщать, что такого решения нет).


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

Существует несколько способов описания алгоритмов.

1. Словесно-формульное описание алгоритма, т.е. опи­сание алгоритма с помощью слов и формул.

2. Графическое описание алгоритма, т.е. описание с помощью специальных графических схем* алгоритмов — блок-схем.

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

4. Запись алгоритма на одном из языков программи­рования (Pascal, Basic и т.п.)

Контрольные вопросы_____________________

1. Строго определенная последовательность действий,
необходимая для решения данной задачи — это...

а) метод решения;

б) алгоритм;

в) блок-схема.

Укажите правильный вариант ответа.

2. Ниже перечислены основные свойства алгоритма:

а) дискретность алгоритма;

б) определенность алгоритма;

в) актуальность алгоритма;

г) результативность алгоритма;

д) массовость алгоритма;

е) строгость алгоритма.

Некоторые из этих понятий не относятся к основным свойствам алгоритма. Укажите какие именно.

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


 




а) дискретность алгоритма;

б) определенность алгоритма.
Укажите правильный вариант ответа.

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

Верно ли данное высказывание?

5. Существует несколько способов описания алгоритмов:

а) словесно-формульное;

б) графическое (блок-схемы).

Все ли способы описания алгоритмов здесь перечислены?

6. Псевдокоды — это:

а) описание алгоритма с помощью слов и формул;

б) описание с помощью специальных графических схем
алгоритмов;

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

Укажите правильный вариант ответа.



б) блок-схема № 2

а) блок-схема № 1

7. Ниже приведены две блок-схемы некоторого алго­
ритма. Какая из приведенных блок-схем ошибочна?


Ответы

1. Правильный ответ — б.

2. Правильный ответ — в, е.

3. Правильный ответ — а.

4. Правильный ответ — ДА.

5. Правильный ответ — НЕТ.

6. Правильный ответ — в.

7. Правильный ответ — б.,

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

Типы Алгоритмов

В зависимости от особенностей своего построения ал­горитмы делятся на три основные группы:

1) линейные;

2) разветвляющиеся;

3) циклические.

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

Линейные алгоритмы

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

Рассмотрим составление схем линейных алгоритмов на конкретных примерах.

Структура такого алгоритма показана на рисунке.


 




Пример.

Даны переменные А и В. Требуется обменять их значе­ния, т.е. переменная А должна получить значение В, а В — значение А.

Решение:

1. Исходные данные: А, В. Вспомогательная перемен­ная DOP. Результат: А, В.

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

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


Схема алгоритма

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


Мы получили запись алгоритма решения данной зада­чи с помощью блок-схемы. Рассмотрим теперь запись это­го алгоритма с помощью псевдокода.

Напомню, что псевдокоды это интерпретация шагов алгоритма на обычном языке, которая описы­вает действие команды.

При записи алгоритма с использованием псевдокодов знаки арифметических операций будем обозначать так: + - / *

Знак: = (двоеточие и равно) означает операцию при­своения выбранной переменной некоторого значения.

К инструкциям линейных алгоритмов относятся инст­рукции ввода-вывода информации и инструкция присва­ивания. На языке псевдокода эти инструкции обознача­ются следующим образом. + Инструкция ввода — Ввод (х, у, z)\

* Здесь в скобках перечислены имена элементов, кото­
рые надо ввести.

♦ Инструкция вывода — Вывод (х, у). -f Инструкция присваивания — х: = 32*.

* Читается: «х присвоить значение 32».
Алгоритм Перемещение; {заголовок алгоритма}

Переменные А, В, Dop: целые числа; {описатель­ный блок} Начало

Ввод (А, В); Dop: =A; А: =В; B: =Dop; Вывод(А, В); Конец.

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

Пусть переменным А и В задаются значения 3 и 6 соот­ветственно. В итоге переменная А должна содержать 6, а В — 3. Проверим работу нашего алгоритма:


 




A В DOP
3 3

Результат работы алгоритма совпадает с ожидаемым. Значит, алгоритм составлен верно.

Логические выражения

Прежде чем перейти к рассмотрению ветвящихся и циклических алгоритмов, рассмотрим понятие логичес­кого выражения.

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

Например, расчет корней квадратного уравнения про­изводится по-разному в зависимости от знака дискрими­нанта (вспомните школьную математику).

В результате сравнения значений двух выражений воз­можны два варианта ответа: сравнение истинно или ложно?

Например:

2+3 > 3+1 — да (истинно);

О < -7? — нет (ложно).

Выражения такого вида мы будем называть логичес­кими выражениями.

Нам известны 6 операций сравнения:

 

Знак Операция
< Меньше
> Больше
< = Меньше или равно
> = Больше или равно
= Равно
о Не равно

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


Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между со­бой условий (отношений). Например, в магазине вам нужно выбрать туфли, размер которых г=45, цвет со1=белый, цена price не более 400 руб.

Другой пример: школьник выяснил, что сможет ку­пить шоколадку, если она стоит 3 руб. или 3 руб. 50 коп.

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

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

первое: (г=45) и (со1=белый) и (не (price> 400));

второе: (цена=3) или (цена=3, 5).


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-04; Просмотров: 2683; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.057 с.)
Главная | Случайная страница | Обратная связь