![]() |
|
|
![]()
|
|
| nssh |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.1.2012 Репутация: нет Всего: нет |
Привет,
Словом "алгоритм" обозначают много всего разного. Но если вы наберёте это слово в Гугле и попросите показать картинки или в Википедии, например так : http://en.wikipedia.org/wiki/Algorithm , то увидите - схемки с квадратиками и ромбиками. Вот об этих алгоритмах я и хочу поговорить. Подобные алгоритмы, приводили преподаватели в школе и универе, они встречаются в книжках, но давайте посмотрим на них, по внимательнее ... Из чего они состоят ? Ромбик - это языковая конструкция по типу: if...then...else, остальные операции блок-схемок, можно свести к двум: (а) - операции ввода-вывода и, (б) - модификация данных. Т.о. алгоритм - это попытка собрать программу используя самые примитивные (базовые) конструкции, которые находят своё отражение в любом языке программирования. Давайте проведём аналогию с радиоэлектроникой. Если, некий чиж, решит собрать радиоприёмник методом, подобным методу алгоритмов, то, он - должен взять базовые конструкции, которыми являются радиодетали, и - начать - творить ... Представьте, подходит чиж к своему рабочему месту, вываливает на стол сотни радиодеталей (в радиоэлектронике - их -ой, как много) и начинает собирать... Понятно, что собирать - он - будет очень долго ... И результат его усилий - тоже - очевиден ... В результате, в радиотехнике, принято использовать - другие методы. Например, разложение сложной задачи на более простые; затем, более простые - ещё на более простые и т.д. , до тех пор, пока, самые простые подзадачи, сами собой, не сведутся, к выражению в базовых элементах. Таких, например, как, транзисторы, резисторы, конденсаторы и т.д. Так, почему же, в программировании - не так. Почему же, пропагандируется метод работы "из базовых элементов", т.е. алгоритмический ??? |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
Простить-то простим, но Вы называете "алгоритмом" блок-схему, а "алгоритмическим подходом" - простейший вариант императивной парадигмы, из-за чего трудно понять, что именно Вам не нравится. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Именно так. Фактически любую из трех операций (выбор, ввод-вывод, модификация данных) можно рассматривать не как элементарный шаг, а как блок. А, если нужно, блок или несколько может быть развернут другой схемой. Именно поэтому никто еще не видел алгоритмов расписанных на листах формата А1 Например, вот такоая схема алгоритма вполне законна: ![]() И врядли кому-то придет в голову расписывать в этой же схеме весь метод наименьших квардратов -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: нет Всего: 11 |
Блок-схемами никто не пытается представить полноценную программу, да и невозможно это. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Н-е-е-е, не согласная я. Я вот до сих пор иногда блок-схемы расписываю, хотя впервые нарисовал что-то подобное еще для перфокартной машины. Если не могу сразу въехать в алгоритм, один из способов - начать рисовать. Особенно это удобно если алгоритм описан путано и непонятно. И полноценную программу можно представить. Не надо только пытаться вогнать в нее все мелкие само-собой разумеющиеся операции, а надо представлять группы операций крупными блоками. Скажем так, блок-схема может быть написана для разных уровней абстракции. Самый не-абстрактный вариант: блок-схема какой-то мелочи включающая все сложения-вычитания. Самый абстрактный: Запустить программу -> Выполнить все опереции -> Закончить выполнение При этом не надо рисовать все, а только то и на тех уровнях абстракции, что действительно в этом нуждается. ЗЫ: В моем предидущем посте это уже было проиллюстрировано. Но там блок-схемой, а их, как выяснилось, не все любят -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Absinthe |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: нет Всего: 11 |
Понятнее - потому что без ненужных рамочек и с экономией места. Быстрее - ну и так понятно, почему.
|
||||
|
|||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: 2 Всего: 3 |
Ну почему же "не так"? Примерно так же. Просто вы же не предлагаете человеку, который в электронике ни бу-бум, сразу начинать ваять радиоприемник? Вот так и у вас знакомство с алгоритмами произошло на уровне "элементной базы", так сказать. Т.е. на уровне самого простого. Вы же не собираетесь в схеме с операционным усилителем брать и разрисовывать каждый внутренний его элемент по отдельности? Примерно то же и с алгоритмами... В этом смысле неплохо почитать "Алгоритмы. Введение в разработку и анализ" А. Левитина - там алгоритмы подаются под углом, который, скажем так, мне представляется для вас наиболее подходящим. Можно посмотреть "Алгоритмы. Просто, как 2*2" Красиковых, но это скорее микросправочник, но дающий возможность увидеть, что алгоритмы и блок-схемы - это две большие разницы По поводу дискуссии - как следует описывать алгоритмы... Если вы не привязаны к конкретному языку/машине - то лучше вообще словесно, на мой взгляд Это сообщение отредактировал(а) disputant - 15.1.2012, 13:21 |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Угу, конечно. И весь мир должен изучить Python В том и удобство схемы (в программировании, электронике или биохимии - не важно), что она наглядна и не требует для понимания дополнительных знаний. Если человек программирует на любом языке, блок-схему он поймет. Если стоит задача экономии места, то я согласен По мне, так квадратик карандашом нарисовать - самое быстрое. Но, здесь уж наверное у кого какая моторика пальцев, а кто-то и карандашом пользоваться не умеет
Почему? Алгоритм взаимодействия представить можно. Впрочем, может я чего-то и не знаю в этом плане. Пожалуй, с удовольствием посмотрю на простой пример алгоритма, который невозможно описать блок-схемой. Заранее оговорюсь: Python мне не знаком -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |