![]() #программируем_с_балтикой
Часть 4, вводный курс. Пожалуй, самое главное, без чего мы не сможем написать код (не считая самого языка программирования) - это алгоритм. Алгоритм является строительным материалом программ. Что же он такое? Алгоритм - это последовательность шагов в решении задачи, приводящая от исходных данных к результату. Алгоритмами являются, к примеру, те же инструкции или рецепты. Они предписывают, по каким шагам мы должны, к примеру, собрать диван или приготовить борщ. У алгоритма есть общая схема работы: Исходные данные -- Алгоритм -- Результат То есть вначале, к примеру, робот получает данные, скажем, введенное число. Потом он, следуя алгоритму, преобразует его и мы получаем результат. Или еще один пример: мы наливаем в чайник воды и нажимаем кнопку. Чайник, получив исходные данные (нажатие кнопки), начинает выполнять алгоритм (кипятит воду). После того, как вода достигает определенной температуры, чайник завершает алгоритм и мы получаем результат (горячую воду). Попробуйте придумать больше таких алгоритмов. Кем же являются чайник и робот? В нашем примере они называются исполнителями. Исполнитель - это какой-то объект, который способен выполнить определенный набор данных ему команд. Исполнители делятся на формальных и неформальных. Чем они отличаются? Формальный исполнитель будет выполнять набор команд ни смотря ни на что и имеет ряд характеристик: имеет круг решаемых задач, нужна необходимая среда исполнителя, имеет список команд исполнителя (СКИ), имеет режим работы (непосредственное управление и программное); неформальный же исполнитель может не выполнить свою программу по стечению обстоятельств. К примеру, если сказать человеку (неформальному исполнителю) постирать мусорный мешок, он откажется, а если дать эту задачу стиральной машинке (формальному исполнителю) - она просто будет следовать своей программе. Для разработки алгоритма есть свой план: 1) необходимо выделить объекты, которые будут присутствовать в задаче, установить их свойства, отношения между ними и возможными действиями с ними; 2) определить исходные данные и необходимый результат; 3) определить, в какой последовательности будут идти действия исполнителя, чтобы при этом он сумел прийти от исходных данных к результату; 4) записать полученный алгоритм с помощью специальных команд, которые поймет исполнитель. При этом верный алгоритм обладает такими свойствами, как: 1. Путь решения задачи разделен на отдельные шаги. 2. Алгоритм состоит из задач, которые входят в СКИ исполнителя. 3. Команды однозначны и понятны. 4. Алгоритм дает ожидаемый результат. 5. Алгоритм может обеспечить решение задач с разными исходными данными. Также хочу дать второе определение алгоритма, которое можно вывести вследствии последнего написанного. Алгоритм - это определенная последовательность действий конкретного исполнителя, приводящее от исходных данных к требуемому результату, которая обладает необходимыми свойствами. Задача (самопроверка): попробуйте написать несколько алгоритмов, учитывая план составления и необходимые свойства. Это могут быть рецепты, инструкции, планы действий и т.д. Далее я хочу рассказать, что бывают линейные алгоритмические конструкции и алгоритмические конструкции ветвления. Алгоритмическая конструкция следования, или линейная - алгоритмическая конструкция, показывающая последовательный, простой порядок действий. Именно такие конструкции мы и рассматривали ранее. Они выглядят примерно так: ... ↓ Действие 1 ↓ Действие 2 ↓ ... Также есть алгоритмическая конструкция ветвления - это алгоритм, который в зависимости проверки условия исходных данных (правда/ложь) выбирает одни или несколько из возможных действий (ветвей) Также есть алгоритмическая конструкция ветвления - это алгоритм, который в зависимости проверки условия исходных данных (правда/ложь) выбирает одни или несколько из возможных действий (ветвей). Такие алгоритмы называются разветвляющими. Пример как он может выглядеть: /////////////////////////// ......... ////////////////////////////////↓ /////////////////////////Условие Проверка условия 1 ↓ Проверка условия 2 ––––––––––––––––––––––––––––––– ///////↓ ////////////////////////////////////////////////↓ Действие 1/////////////////////////////// Действие 2 Примером такого алгоритма может быть: ////////////////Постель заправлена /////////////////////////Да ↓ Нет –––––––––––––––––––––––––––––––– ///////////↓ ////////////////////////////////////////↓ Ничего не делать /////////////Заправить постель Этот алгоритм, конечно, не совсем верный, так как имеет неточные указания. В письменно виде этот алгоритм выглядел бы так: 1) постель заправлена? если да, то: ничего не делать. если нет, то: заправить постель. Задание (самостоятельная проверка): составьте алгоритмические конструкции ветвления от 2х ветвей и больше письменно. В следующей главе я уже перейду к началу кодинга. 17 мая в 22:56
1 |