Что общего между программистом и художником, кроме творческого беспорядка на столе? Они оба создают интересные вещи, используя креативность и выходя за рамки привычного мышления. Главное отличие в том, что программист следует законам логики и разрабатывает точные алгоритмы создания произведения. Об этом мы сегодня и поговорим.
Где логика?
Логика – это наука о правильном мышлении. Или в нашем случае – о правильной постановке команд, которые приведут к нужному результату.
Последовательность таких команд в виде инструкций, описывающих порядок действий, называется Алгоритмом. Набор инструкций, которые идут друг за другом по определённому алгоритму, называется Программой.
Наименьшая автономная часть программы – это инструкция (команда или набор команд). По-другому инструкции называют «оператор» или «statements». Один оператор выполняет конкретный программный код. Это главная часть любой программы.
Пишите максимально подробные и логичные инструкции для компьютера, чтобы он понял команду именно так, как вам требуется. Если этого не сделать – нужного результата не выйдет.
Git — как совместно вести разработку одного проекта. Полезно знать новичкам в программировании.
По сути, инструкции и алгоритмы – это то, чему подчиняются все процессы в реальном мире. Чтобы наглядно показать, как всё это работает, приведем пример из жизни.
Разбираем «на пальцах»
Вот Алексей. Он обычный парень, который любит играть в футбол. Нам необходимо прописать программу, симулирующую игру Лёши. Для этого мы прописываем конкретную инструкцию, которая состоит из таких команд:
- Надеть спортивную одежду.
- Взять мяч.
- Выйти на улицу.
- Поставить мяч на землю.
- Ударить по мячу.
Запускаем игру и понимаем, что что-то идёт не так. Причина в том, что Алексей вышел играть в туфлях, а не в спортивной обуви, так как мы не учли в инструкции этот нюанс.
Возвращаемся назад и дополняем:
- Надеть спортивную одежду.
- Надеть спортивную обувь.
- Взять мяч.
- Выйти на улицу.
- Поставить мяч на землю.
- Ударить по мячу.
Теперь игра идёт так, как мы задумали.
Этот вариант примитивный. В настоящей программе инструкций будет гораздо больше. Каждое действие Алексея придётся прописывать подробно. Например, выход из дома:
- Открыть дверь.
- Выйти.
- Закрыть дверь.
- Подойти к лифту.
- Нажать на кнопку.
- Зайти в лифт.
- Нажать кнопку первого этажа.
- Выйти из лифта и т. д.
Чем подробнее прописаны стейтменты, тем более качественно работает программа.
Гайд по блокноту | Трюки и фишки в блокноте
Представьте количество команд, инструкций и сложность алгоритма в искусственном интеллекте или роботе. Сколько подробных инструкций предусматривает и прописывает программист, чтобы искусственный интеллект самостоятельно принимал решения, а робот ходил, разговаривал, отвечал и реагировал на действия.
Программа – живой организм, который постоянно развивается и изменяется. Актуализировать её придётся бесконечно: дописывать инструкции, расширять функционал, упрощать. При этом программа всё ещё не будет идеальной. Всегда есть что добавить или изменить.
В случае с Алексеем, дополнительно понадобилось бы прописать и то, что он идёт на выбранную спортивную площадку или стадион, зовёт с собой друзей и т. д.
Учитывайте тот факт, что ваша программа обязательно будет изменяться и дополняться. Тот, кто после вас займётся её поддержкой и развитием, должен понять вашу логику. Не слишком стремитесь к упрощению и минималистичности.
Виды алгоритмов
Последовательность команд и инструкций может быть разной. Но в основе лежат три вида алгоритмов:
Линейный
Каждое действие выполняется последовательно друг за другом в строгом порядке. Когда выполнено одно, начинается другое. И так до последнего.
Циклический
По достижении определенного действия алгоритм возвращается на любое из предыдущих сколько угодно раз. Это делается с помощью циклов, которые мы обсудим на следующих уроках. В примере с футболистом цикличным алгоритм считался бы в том случае, если бы Алексей бесконечно бил по мячу.
Ветвление
В одной из команд (или нескольких) прописывается разветвление. Доходя до него, необходимо выбрать на какую из ветвей пойти дальше. Представьте, что идёте по дороге и встречаете развилку. Вам необходимо выбрать путь налево или направо. Это и есть алгоритм ветвления.
В чистом виде эти алгоритмы встречаются лишь в простейших программах. Чаще всего они комбинируются между собой. Именно комбинируемый алгоритм – самый распространённый вид алгоритма.
Каждая программа состоит из сложного набора инструкций, где есть и циклы, и ветвления, и прямые линии. Со стороны это похоже на большое дерево с множеством веток, которые растут в разные стороны.
Все алгоритмы выполняют конкретные логические задачи: сортировка, поиск, сравнение и т. д. В каждой из задач эффективными будут разные алгоритмические последовательности. Для сортировки одни, для поиска другие.
Для разработки подходящего алгоритма и потребуется креативность. Вы сами выбираете путь и способы достижения результата, вдохновляясь природными процессами, опираясь на собственные ощущения, и описываете их в программе. Вспомните об этом, когда кто-нибудь снова скажет, что программирование – это только математика 🙂
Домашнее задание
Напишите линейный, циклический или разветвленный алгоритм. Это должен быть порядок действий, список команд, конкретная инструкция. Программа должна упростить вашу жизнь, делать то, что сами вы делать не хотите.
Источник: loftschool.com
Урок 13
Тема 13. Представление о программе
— что такое Исполнитель и каково его назначение;
— что означают понятия программы и программирования на алгоритмических языках;
— в чем отличие процедурного и объектного подходов к программированию.
13.1. Исполнитель алгоритма
Действия, описываемые в алгоритме, прежде всего должны быть понятны самому разработчику алгоритма. Только тогда алгоритм можно преобразовать в форму, понятную тому, кто будет его выполнять.
Поэтому разработка алгоритма практически всегда осуществляется в две стадии. На первой стадии человек приближенно описывает последовательность выполнения действий объектом, который будет претворять в жизнь заложенную в алгоритме идею. Возможно, этим объектом будет сам разработчик. На этой стадии человек должен ясно представить себе, что же он хочет получить и каким образом. На следующей стадии алгоритм претерпевает некоторые изменения для того, чтобы в нем были учтены особенности среды, в которой предполагается выполнение этого алгоритма.
Объект, который будет выполнять разработанный человеком алгоритм, обычно называют Исполнителем.
Его предназначение — точно выполнить предписания алгоритма, подчас не задумываясь о результатах и целях. Например, Исполнителем может быть:
✔ солдат в армии, который обязан беспрекословно выполнять приказы старших по званию чинов;
✔ собака, которая должна выполнять команды хозяина;
✔ животные в цирке, которые должны точно исполнять требования дрессировщика;
✔ робот, производящий измерения в космосе, выполняет команды, поступающие от космического центра;
✔ летчик, который должен точно выполнять распоряжения диспетчера аэропорта.
Во всех приведенных выше примерах объект, исполняющий действия алгоритма, не обязан:
✔ понимать цели и методы достижения этой цели;
✔ пропускать действия или менять их порядок по своему усмотрению;
✔ искать какую-то замену, если действие выполнить невозможно.
Исполнитель — объект, который выполняет алгоритм.
Идеальными Исполнителями являются машины, роботы, компьютеры. Они в состоянии выполнять указанные команды, не обсуждая их целесообразность. Человек тоже может поставить себя в положение Исполнителя алгоритма, хотя бы для проверки его правильности. При этом человек формально, не стараясь понять поставленную задачу, выполняет команду за командой.
Исполнитель способен выполнять только ограниченное количество команд. Поэтому алгоритм, переписанный на второй стадии под конкретного Исполнителя, должен еще раз пройти дополнительное преобразование. Алгоритм дорабатывается и детализируется так, чтобы в нем присутствовали только те команды и конструкции, которые может выполнить Исполнитель.
Так появляется третья стадия, на которой алгоритм должен быть представлен в форме, понятной Исполнителю. Исполнитель, как и любой объект, находится в определенной среде и может выполнять только допустимые в ней действия. Если Исполнитель встретит в алгоритме неизвестную ему команду, то выполнение алгоритма прекратится.
13.2. Понятие программы
На третьей стадии разработки алгоритма необходимо познакомиться с командами, доступными Исполнителю, и с правилами их записи. Так, игра в шахматы теряет всякий смысл, если Исполнитель не представляет себе правил поведения в среде «шахматное поле».
Алгоритм, представленный на понятном Исполнителю языке, называют программой. Обычно понятие программы связывают с компьютером, и тогда процесс создания программы называют программированием или кодированием. Программа должна быть составлена так, чтобы каждый блок компьютера выполнял задуманное человеком действие в соответствии с алгоритмом.
Программа — упорядоченная последовательность команд (инструкций), необходимых компьютеру для решения поставленной задачи.
Программирование (кодирование) — процесс составления программы для компьютера.
Для первых электронно-вычислительных машин программы записывались в виде последовательности элементарных операций. Это была очень трудоемкая и неэффективная работа. Для исправления любой ошибки приходилось переделывать всю программу и снова записывать ее в память.
Поэтому впоследствии были разработаны специальные языки программирования, которые позволяют удобно и наглядно представить алгоритм решения задачи. Первым алгоритмическим языком для создания компьютерных программ был АЛГОЛ (60-е годы). Очень скоро появились и другие языки: Фортран, ПЛ, Бейсик, Паскаль и др. Каждый из них нес в себе какую-нибудь особую идею по более рациональному использованию ресурсов компьютера и усовершенствованию формы представления программы.
В настоящее время существует множество искусственных языков для составления программ. Однако так и не удалось создать идеального алгоритмического языка, который устроил бы всех, как не удалось создать и искусственный разговорный язык, который удовлетворил бы все страны и народы. Одним нравится программировать на Паскале, другим — на Си, третьи, прекрасно овладев правилами составления программ на Бейсике, вполне довольны получающимися результатами. Алгоритм, представленный с помощью языка программирования, чем-то похож на математическую формулу.
Программы, так же как и алгоритмы, обладают свойствами дискретности и детерминированности. Верно составленные программы должны быть конечны и правильны. Хорошие программы обладают свойством массовости.
Программа хранится в памяти компьютера. При запуске программы компьютер выполняет команды в том порядке, в котором они записаны.
В каждом алгоритмическом языке программирования имеется набор встроенных команд —-инструментов для выполнения разнообразных действий. В состав языка обязательно включены команды (операторы) для создания в программе циклов и разветвляющихся конструкций. Любой язык содержит правила для разработки и применения вспомогательных программ, называемых процедурами.
Процедура — вспомогательная программа, которая вызывается из другой программы.
В течение жизни человек постоянно расширяет свой словарный запас. Услышав или прочитав новое слово, вы иногда не понимаете, о чем идет речь, пока не сопоставите это слово с уже знакомыми понятиями. Столкнувшись с новым явлением, мы стараемся подобрать для него название, иногда придумывая его, но обязательно объясняя с помощью уже известных слов. Таким образом увеличиваются наши знания.
Разрабатывая программу для компьютера, вы даете ей уникальное имя. Записывая в память программу под этим именем, вы расширяете словарный запас компьютера. Применяя специальные конструкции языка программирования, можно разработанную программу использовать в качестве процедуры при создании новых программ. Обращение к процедуре происходит по ее имени.
Источник: xn—-7sbbfb7a7aej.xn--p1ai
Способы представления алгоритмов
Алгоритмом (algorithm) называют чёткое описание последовательности действий, направленных на решение конкретной задачи. О важности и типах алгоритмических последовательностей сказано уже немало. В этой статье пойдёт речь о способах их представления при записи алгоритмов.
Словесный способ
Словесное описание алгоритма предполагает наличие некого словесного перечня действий. Пример — вам говорят что-то типа следующего: «Вычислите Z при условии, что Z = X + Y, когда X равен 0,89, а Y равен 1,286. Полученное значение Z следует возвести в куб и вычислить корень».
Можно представить ситуацию туристического посещения незнакомого города. Когда вы спрашиваете, как пройти в интересующее место, вам объясняют, что надо через 100 метров повернуть направо, потом пройти прямо, пока не увидите перед собой здание кинотеатра, далее потребуется перейти дорогу, повернуть налево и не сворачивая идти до нужного объекта.
Все эти примеры можно назвать словесным способом представления. У такого способа есть недостаток: отсутствие наглядности выполнения процесса и чёткой формализации объектов алгоритма.
Формульно-словесный способ
При использовании формульно-словесного способа инструкции задаются более чётко. Этот тот случай, когда словесные пояснения сопровождаются перечнем конкретных действий, плюс эти пояснения характеризуются наличием формальных символов и выражений (формул).
Для примера составим формульно-словесный алгоритм вычисления выражения: z=2∙x–(y+6): • вводим значения х и y; • находим сумму (y+6); • находим произведение (2∙x); • вычисляем z как разность уже полученных выше значений: z=2∙x–(y+6); • выводим z как результат вычисления выражения.
Это более компактный и лаконичный метод, он нагляднее, но всё же строго формальным не является.
Табличный способ
В случае применения табличного метода алгоритм задаётся в виде входных данных: расчётных форм и таблиц. Способ широко применяется в экономических расчетах. Исходные данные, как и результаты, заносятся в заголовки столбцов используемой таблицы. Простейший пример такого способа представления — та же таблица умножения:
Графический способ
Этот метод ещё называют способом блок-схем. В данной ситуации каждый этап прохождения алгоритма представляется в виде геометрических фигур — так называемых «блоков», причём конкретная форма фигур зависит от выполняемой операции. Существует стандарт, регламентирующий размеры используемых графических блоков, а также их отображение, функции, формы и взаимное расположение. Направление работы алгоритма показывают линии соединения блоков.
Другое название способа — визуальное представление. При проектировании алгоритмов, представленных графически, придерживаются ряда правил: • в начале алгоритма располагаются блоки ввода значений (входные данные); • после ввода значений располагаются блоки обработки и блоки условия; • алгоритм завершается блоками вывода значений, полученных в результате работы алгоритма (выходные данные); • должен быть лишь один блок начала и один — окончания; • межблочная связь указывается линиями (направленными либо ненаправленными); • вычислительные формулы, данные и логические выражения размещаются внутри соответствующих блоков; • возможно наличие комментариев в виде выносок.
Графический способ представления имеет практическое значение и используется не только в случае программирования. Его применяют при составлении информационных и структурных схем, инфографики и в иных ситуациях, когда нужно обеспечить чёткую визуализацию данных и графически отобразить последовательность расположения объектов алгоритма.
Создание блок-схемы алгоритма — важный и нужный этап решения поставленной задачи. Но при некоторых обстоятельствах этот этап можно считать промежуточным, так как в таком виде описанный алгоритм невозможно выполнить средствами ЭВМ. Зато графический способ представления значительно облегчает процесс дальнейшего создания компьютерной программы. О ней ниже.
Программный способ (текстовая запись)
Программа представляет собой алгоритм, который записан как последовательность команд. Речь идёт о командах, понятных компьютеру, для чего используются различные языки программирования, представляющие собой системы кодирования предписаний с правилами их применения. Языки программирования характеризуются строго определённым синтаксисом, то есть свободное толкование конструкций не допускается.
В случае программного способа представления алгоритмическая последовательность записывается в виде компьютерной программы с высокой степенью формализации. В результате появляется возможность решать прикладные задачи.
Пример — простейший алгоритм сложения 2-ч чисел, который записан средствами языка программирования Qbasic:
О взаимодополнении способов представления
Способы, представленные выше, нередко являются взаимодополняемыми: — на этапе обсуждения используются словесные и словесно-формульные способы; — на этапе проектирования рекомендуется использовать графические алгоритмы (графическое представление); — на этапе проверки возможно табличное описание; — на этапе непосредственного применения и решения прикладных задач используют текстовую запись, представленную в виде компьютерной программы.
Источник: otus.ru