Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
Основные сведения Понятие алгоритма Наша цель — научить компьютер решать те задачи, которые он самостоятельно и изначально решать не умеет. Что же для этого нужно? А что, например, следует сделать, если нужно привлечь к решению задачи человека (назовем его исполнитель), не знакомого с ее решением? В общем виде последовательность действий здесь следующая: а) выбрать способ (метод) решения задачи и изучить б) сообщить исполнителю выбранный метод в абсолют Первый этап этого процесса обычно не вызывает затруднений, так как для большинства встречающихся задач метод решения либо известен из практики, либо подсказывается здравым смыслом, либо описан в литературе. Главная трудность этого этапа — выбрать из нескольких методов более подходящий для решения данной задачи: наименее трудоемкий, максимально эффективный и т.д. Второй этап значительно сложнее. Дело в том, что если способ (метод) решения задачи описан произвольно, то нет гарантии, что он будет верно понят исполнителем. Попробуйте, например, небольшую игру. Попросите товарища на время забыть все, что он знает, например, о процессе варки картофеля. Если же выбранный вами помощник еще никогда не варил картошку, то эксперимент будет максимально «чистым». Опишите ему процесс приготовления этого нехитрого блюда и попросите его приготовить, точно следуя вашим инструкциям. После чего удалитесь с кухни и подождите результата в другой комнате. Ну как картошечка? Надеюсь, вы не забыли сказать вашему другу, чтобы он предварительно почистил ее?.. Именно поэтому описание метода следует выполнять в соответствии с определенными правилами, а именно: - выделить величины, являющиеся исходными для задачи;
- разбить процесс решения задачи на такие этапы, которые известны исполнителю и которые он может выполнить однозначно без всяких пояснений; - указать порядок выполнения этапов; - указать признак окончания процесса решения задачи; - указать во всех случаях, что является результатом решения задачи. Описание метода, выполненное в соответствии с этими правилами, называется алгоритмом решения задачи. Составить такое описание обычно нелегко, но, следуя ему, механически выполняя все указанные в нем этапы в требуемом порядке, исполнитель может всегда правильно решить задачу. Итак, мы подошли к центральному понятию информатики — алгоритму .Более строго это понятие можно дать следующим образом. Алгоритм — это метод (способ) решения задачи, записанный по определенным правилам, обеспечивающим однозначность его понимания и механического исполнения при всех значениях исходных данных (из некоторого множества значений). Или более коротко: алгоритм — это строго определенная последовательность действий, необходимых для решения данной задачу.. Примером алгоритма может служить уже упоминавшийся кулинарный рецепт — алгоритм варки картофеля: 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. Псевдокоды — это: а) описание алгоритма с помощью слов и формул; б) описание с помощью специальных графических схем в) описание шагов алгоритма на обычном языке, кото Укажите правильный вариант ответа.
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. Проверим работу нашего алгоритма:
Результат работы алгоритма совпадает с ожидаемым. Значит, алгоритм составлен верно. Логические выражения Прежде чем перейти к рассмотрению ветвящихся и циклических алгоритмов, рассмотрим понятие логического выражения. В некоторых случаях выбор варианта действий в программе должен зависеть от того, как соотносятся между собой значения каких-то переменных. Например, расчет корней квадратного уравнения производится по-разному в зависимости от знака дискриминанта (вспомните школьную математику). В результате сравнения значений двух выражений возможны два варианта ответа: сравнение истинно или ложно? Например: 2+3 > 3+1 — да (истинно); О < -7? — нет (ложно). Выражения такого вида мы будем называть логическими выражениями. Нам известны 6 операций сравнения:
С помощью этих операций мы будем составлять логические выражения. Причем в выражениях обязательно присутствуют не только константы, но и переменные. Часто встречаются задачи, в которых используются не отдельные условия, а совокупность связанных между собой условий (отношений). Например, в магазине вам нужно выбрать туфли, размер которых г=45, цвет со1=белый, цена price не более 400 руб. Другой пример: школьник выяснил, что сможет купить шоколадку, если она стоит 3 руб. или 3 руб. 50 коп. В первом примере мы имеем дело с тремя отношениями, связанными между собой союзом «и» и частицей «не», во втором — с двумя отношениями, связанными союзом «или». Подобные условия назовем составными, и для их обозначения в алгоритме договоримся использовать союзы «и», «или», частицу «не», которые будем выделять жирным шрифтом и рассматривать как знаки логических операций, позволяющих из простых условий создавать составные, подобно тому, как из простых переменных и констант с помощью знаков +, - и т.д. можно создавать алгебраические выражения. Так, условия наших примеров в алгоритме могут выглядеть таким образом: первое: (г=45) и (со1=белый) и (не (price> 400)); второе: (цена=3) или (цена=3, 5). Популярное:
|
Последнее изменение этой страницы: 2016-06-04; Просмотров: 2767; Нарушение авторского права страницы