Вад
|
|
« Ответ #30 : 08-04-2012 20:44 » |
|
Я бы, кстати, про телефон зашёл с другой стороны, раз уж мы о протоколах общения с устройством. Мне лично куда интереснее не описывать рутину, а попробовать придумать, отталкиваясь от единственного знания, что по проводу каким-то неизвестным пока для нас способом передаётся звук (условно) любой частоты, как можно самому сделать механизм дозвона. То есть, создать свою собственную телефонию. Так мы можем, постепенно усложняя схему, пройти все этапы: от уровня полевого телефона с индуктивным вызовом и "барышней" на АТС через "вертушку" до тонового набора, заодно создав свои собственные AT-команды
|
|
« Последнее редактирование: 08-04-2012 20:46 от Вад »
|
Записан
|
|
|
|
simka
|
|
« Ответ #31 : 08-04-2012 20:46 » |
|
Условия? наличие пары пуговица-отверстие, факт рассегнута/застегнута она, ну и ,собственно, наличие рук.... больше условий не вижу.
Насчет подпрограмм - сунулась в википедию, но это помогло слабо в данном контексте...
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Online
Пол:
Пролетал мимо
|
|
« Ответ #32 : 08-04-2012 20:46 » |
|
Вад, Не усложняй сложное
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Вад
|
|
« Ответ #33 : 08-04-2012 20:49 » |
|
Finch, да это я так, как альтернативу: не всегда же программисты прописывают рутинные алгоритмы, где-то велосипеды всё равно приходится изобретать, так или иначе.
|
|
|
Записан
|
|
|
|
simka
|
|
« Ответ #34 : 08-04-2012 20:50 » |
|
Да, Вад, хотела о том же попросить... Гуманнее нужно быть... Хотя если регулярно пытаться общаться с юзерами типа меня, то самое гуманное это вечный бан А про велосипеды - не надо. Это тема больная и, если меня понесет, мне будет мучительно стыдно за жесткий оффтоп..
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Online
Пол:
Пролетал мимо
|
|
« Ответ #35 : 08-04-2012 20:51 » |
|
Условие, если пуговица уже застегнуто. Не нужно выполнять определенные действия. Подпрограмма все действия с застегиванием пуговици. при этом руки уже спозиционированы на ней Тем самым тебе не нужно описывать по несколько раз эти действия. Скажем если вдруг ты применеш действия по отношению к блузке, а не к польту.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Вад
|
|
« Ответ #36 : 08-04-2012 20:53 » |
|
simka, подпрограмма позволяет нам выделить типовое действие с тем, чтобы описать его один раз и потом использовать там, где захочется. Если мы опишем алгоритм застёгивания одной пуговицы, то надо будет только узнать, где находится пуговица, а дальше у нас уже есть готовый набор инструкций по её застёгиванию - подпрограмма.
Результатом подпрограммы, если не усложнять, будет то, удалось ли застегнуть пуговицу. Мы можем этот результат игнорировать или нет, в зависимости от надобности (нет смысла перепроверять, если эта пуговица для нас неважна), но в целом, знание результата проделанных действий полезно (а вдруг мы застёгивали и не застегнули-таки почему-то важную пуговицу -- на штанах, например, -- и нам надо срочно что-то предпринять, чтобы избежать нежелательных последствий).
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Online
Пол:
Пролетал мимо
|
|
« Ответ #37 : 08-04-2012 20:56 » |
|
Простое действо. Приготовить яичницу. При этом учесть, что в дальнейшем, может быть некоторые действия применить для омлета.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Sla
|
|
« Ответ #38 : 08-04-2012 21:01 » |
|
А теперь плавно можно перейти к объектам Шутка, но с претензией. Не будем далеко уходить от пуговиц. Просто поменяем пуговицы на крючки и кнопки. А для усложнения задачи перейти к "молнии" Добавлено через 3 минуты и 55 секунд:Продевание пуговицы в петлю - это и есть подпрограмма Т.е. Пройтись по всем нужным пуговицам, и выполнит процесс застегивания (подпрограмма) нужным - верхнюю пуговицу не застегиваем. Кроме того. Усложняем процесс. Одна пуговица оторвалась!!! Описать действия.
|
|
« Последнее редактирование: 08-04-2012 21:05 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
simka
|
|
« Ответ #39 : 08-04-2012 21:07 » |
|
Вад, спасибо за пояснение подпрограммы. Finch, теперь оно мне таким простым уже не кажется.... Ну да ладно, яичница скромная, по-студенчески 1)Зажечь огонь на плите 2)Поставить на плиту сковороду 3)налить масло 4)подождать, пока сковорода нагреется 5)Разбить в сковороду яйца 6)Посолить 7)Накрыть крышкой и оставить до готовности 8)Погасить огонь 9)выложить получившееся на тарелку 10)мужественно употребить в пищу 11)сказать спасибо всем присутствующим.... Добавлено через 2 минуты и 11 секунд:Молния- усложнение задачи? Оторвалась- пропускаем, идем дальше, что ж поделать... А с крючками и кнопками то же самое, только чуть другая подпрограмма будет...
|
|
« Последнее редактирование: 08-04-2012 21:09 от simka »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #40 : 08-04-2012 21:14 » |
|
Оторвалась- пропускаем, идем дальше, что ж поделать...
А постарайся это описать "формальным языком Используя условия (если ... то ... иначе ...)
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Вад
|
|
« Ответ #41 : 08-04-2012 21:14 » |
|
Кстати, подумалось тут, что будет не лишним помянуть прекрасную (на мой скромный вкус) книгу Абельсона и Сассмана "Структура и интерпретация компьютерных программ". Эта книга является учебником для вводного курса программирования, на котором, в общем-то, с нуля закладываются основы программирования. Не знаю, насколько доступным является язык книги, но, по-моему, она довольно последовательно и чётко вводит в мир программирования. По крайней мере, я бы порекомендовал попробовать её почитать - если не пойдёт, всегда можно отказаться ЗЫ. Стоит, пожалуй, заметить, что там с места в карьер пускаются программировать, поэтому какая-то минимальная моральная подготовка должна быть, чтобы не испугаться.
|
|
« Последнее редактирование: 08-04-2012 21:19 от Вад »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #42 : 08-04-2012 21:19 » |
|
А с крючками и кнопками то же самое, только чуть другая подпрограмма будет...
Я не зря сказал про объекты В данном случае существует объект Пара: Пуговица и Петля или объект Пара: Крючок и Петля или объект Кнопка: Папа и Мама И каждый объект обладает методом - Застегнуть А эти объекты приложены к одежде Одеваем гимнастерку. Начальные условия. Гимнастерка обладает пуговицами и верхним крючком (как сейчас - даже понятия не имею) Задача Все должно быть застегнуто.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
|
|
« Ответ #43 : 08-04-2012 21:21 » |
|
С яичницей - замечательно. Замечу, что каждый из указанных пунктов тоже не прост. Можно рассматривать описанное тобой как последовательный вызов одиннадцати подпрограмм. Например, подпрограмма "Зажечь огонь на плите" может выглядеть так: 1. Проверить, зажжен ли огонь на конфорке? Если да, выходим. 2. Повернуть ручку (перекрыть газ для конфорки). 3. Проверить, открыт ли кран подачи газа к плите. Если закрыт, открыть. 4. Повернуть ручку (подать газ на конфорку). 5. Поджечь газ. 6. Перейти на пункт 1.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
simka
|
|
« Ответ #44 : 08-04-2012 21:22 » |
|
Sla, Если пуговица или отверстие отсутствуют/непригодны к использованию, то действия выполняются по отношению к следующей паре Если пуговицы закончились, то завершить процесс. Как-то так? Вад, поищу- почитаю, спасибо за совет. Добавлено через 56 секунд:Про яичницу понимаю, просто почему-то подумала, что на данном этапе это не нужно расписывать... Добавлено через 7 минут и 47 секунд:В тему увеличения количества видов застежек, в каждую подпрограмму добавится определение того, пуговица это или крючок, в зависимости от чего будет определяться то, как застегивать... А вообще странные вы все. Я думала пошлете куда подальше, а тут- рванули помогать...
|
|
« Последнее редактирование: 08-04-2012 21:31 от simka »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #45 : 08-04-2012 21:32 » |
|
В тему увеличения количества видов застежек, в каждую подпрограмму добавится определение того, пуговица это или крючок, в зависимости от чего будет определяться то, как застегивать...
Замечательно! Усложняем Оторвана самая нижняя пуговица , но ее можно заправить в штаны Оторвана самая верхняя - но я ее никогда не застегиваю. Оторвана посередине, - нужно менять, или пришивать Опиши эти три задачи. Договоримся, что при описании задач, ничего не упрощаем. Типа: повторение - мать... Добавлено через 1 минуту и 56 секунд:А вообще странные вы все. Я думала пошлете куда подальше, а тут- рванули помогать...
Нашли жертву А на самом деле материал хороший для лепки попался.
|
|
« Последнее редактирование: 08-04-2012 21:34 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
|
|
« Ответ #46 : 08-04-2012 21:45 » |
|
Про яичницу понимаю, просто почему-то подумала, что на данном этапе это не нужно расписывать...
Верно. Важный в программировании принцип: любую сложную задачу можно разбить на несколько более простых задач. Добавлено через 2 минуты и 54 секунды:simka, тебе крупно повезло: 1. Звезды сошлись. 2. Слава и Димка преподавали данный предмет. 3. Показываешь заинтересованность в обучении и, что важно, пытаешься учиться.
|
|
« Последнее редактирование: 08-04-2012 21:48 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
simka
|
|
« Ответ #47 : 08-04-2012 21:50 » |
|
1)Проверяем наличие пуговицы/петли 2)Если она отсутствует, проверяем: а)является ли она крайней (1 или последней), если да, то пропускаем. б)если все застегнуты, то завершаем процесс в) если не является крайней, то пришиваем новую 3)Берем пуговицу 4)Берем петельку(или как там это отверстие обозвать можно) 5)продеваем 6)повторяем 1-5 до завершения 7)если отсутствовала нижняя, заправляем в штаны! )
|
|
|
Записан
|
|
|
|
simka
|
|
« Ответ #48 : 08-04-2012 21:53 » |
|
RXL, программисты верят в случайное соединение звезд в некую, несущую смысл, картину? А обычно я не такая везучая.. где подвох??
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #49 : 08-04-2012 21:55 » |
|
Очень сложные задачи проще рассматривать обобщено. Комплексное условие "звезды сошлись"...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
simka
|
|
« Ответ #50 : 08-04-2012 22:08 » |
|
Что-то я тут у вас зависла серьезно... Пока думала, муж, залипнув в комп, сжег чайник( Ваш коллега, между прочим... из чего алгоритм сожжения чайника 1) желание попить чаю 2)кто идет ставить чайник условия: Я - противоречит конечному итогу сожжения чайника Не я- муж 3) если я помню о том, что чайник на плите- см п1 условие1 если не помню, то 4) Если муж не занят компом- чайник будет жить Если занят- чайник сгорел простите, вопль души...
|
|
« Последнее редактирование: 08-04-2012 22:26 от simka »
|
Записан
|
|
|
|
Вад
|
|
« Ответ #51 : 08-04-2012 22:46 » |
|
simka, по пугавицам: почему п.7 идёт именно после всех условий, последним пунктом? И пункт 3б неоднозначный: в определённых условиях оно, может, и имеет смысл, но в общем случае, если мы остановились на какой-то пуговице и пытаемся застегнуть, даже если она оторвана, то условие выхода мы должны проверять уже после того, как разберёмся с этой пуговицей - в тот момент, когда будем пытаться перейти к следующей.
Возможны, разумеется, варианты: мы можем проверять это условие в самом начале (обычно так и делают), либо в самом конце - так поступают, когда уверены, что хотя бы одна пуговица у нас есть.
Терминологически, сам список повторяющихся действий (п. 1-6) называют циклом, условие "все пуговицы застёгнуты" называется условием цикла, 1-5 называется телом цикла, а однократное выполнение 1-5 - итерацией.
|
|
|
Записан
|
|
|
|
simka
|
|
« Ответ #52 : 08-04-2012 22:54 » |
|
7 пункт идет после всех, потому что, ИМХО, так удобнее, сначала застегнуть, а потом заправить...
по проверке на завершенность процесса- не поняла, о чем Вы( Точнее свой косяк сейчас увидела, но о чем Вы, все равно не поняла... За терминологию спасибо, попробую запомнить и взять на вооружение
|
|
« Последнее редактирование: 08-04-2012 22:56 от simka »
|
Записан
|
|
|
|
Вад
|
|
« Ответ #53 : 08-04-2012 23:03 » |
|
Что-то я тут у вас зависла серьезно... Пока думала, муж, залипнув в комп, сжег чайник( Ваш коллега, между прочим... из чего алгоритм сожжения чайника 1) желание попить чаю 2)кто идет ставить чайник условия: Я - противоречит конечному итогу сожжения чайника Не я- муж 3) если я помню о том, что чайник на плите- см п1 условие1 если не помню, то 4) Если муж не занят компом- чайник будет жить Если занят- чайник сгорел Тут уже стоит применять вложенные условия, потому что "плоская" структура плохо передаёт ветвление вариантов. Например: процедура Сгорит_ли_чайник(параметр: действующее_лицо): 1. первоначальный итог = чайник_цел 2. если действующее_лицо хочет_чаю, то 2.1 поставить_чайник 2.2 если действующее_лицо - муж, то 2.2.1 если муж занят_за_компом и никто больше не помнит про чайник, то 2.2.1.1 итог = чайник_сгорел 3. подвести итог Здесь мы видим, как условия вкладываются одно в другое, что в итоге приводит нас к тому, что определённый итог возникает в результате последовательной комбинации условий. Но необязательно этот алгоритм будет выглядеть именно так.
|
|
« Последнее редактирование: 08-04-2012 23:05 от Вад »
|
Записан
|
|
|
|
simka
|
|
« Ответ #54 : 08-04-2012 23:10 » |
|
по чайнику - да, так гораздо аккуратнее и понятнее, когда нас интересует именно этот итог оплавившейся крышки...Благодарю
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #55 : 08-04-2012 23:15 » |
|
7 пункт идет после всех, потому что, ИМХО, так удобнее, сначала застегнуть, а потом заправить...
А, теперь понял. Да, так тоже можно. Только тогда мы должны запомнить, что какая-то пуговица у нас отсутствовала (а могло отсутствовать и более одной пуговицы, или ни одной). И тогда мы либо должны вместо 7 действия посмотреть все оставшиеся оторванными пуговицы и при наличии нижней заправить её в штаны, либо оставить себе напоминание "надо заправить оторванную нижнюю пуговицу в штаны". В противном случае нам придётся проверить нижнюю пуговицу ещё раз - и хорошо, когда дело касается только пуговицы, а ведь это может быть какой-нибудь длительный процесс диагностики по проверке на завершенность процесса- не поняла, о чем Вы( Точнее свой косяк сейчас увидела, но о чем Вы, все равно не поняла...
Ну, если буквально следовать описанию, то мы проверяем, все ли пуговицы уже застёгнуты, только при попытке застегнуть оторванную пуговицу. Правильнее сделать это вообще п.1: ведь если все пуговицы застёгнуты, то и делать дальше по списку нечего. Если же застёгнуты не все, перейти к очередной незастёгнутой и разбираться, оторвана она, или нет, и т.д. Циклы вроде застёгивания пуговиц обычно называются "циклами с предусловием", потому что мы сначала проверяем условие завершения цикла операций, а уже по итогам этой проверки принимаем решение, делать ли итерацию (набор действий), или нет. Последним же пунктом в цикле мы тогда возвращаемся к 1му ("зацикливаемся")
|
|
|
Записан
|
|
|
|
simka
|
|
« Ответ #56 : 08-04-2012 23:24 » |
|
Ух... вроде все просто и логично, но мозг тактично намекает на то, что "а не пошла бы ты, многоуважаемая и наилюбимейшая хозяйка, спать?". И я думаю с ним согласиться... Алгоритм засыпания 1. Первоначальный итог= я бодрствую 2.Если я хочу спать, то 2.1Если уже поздний час, то 2.1.1.Если сейчас не сессия, то 2.1.1.1.Ложусь спать= я сплю 3. Доброй ночи и еще раз спасибо)
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #57 : 08-04-2012 23:25 » |
|
Кстати, на примере п.7 с заправлением нижней пуговицы хорошо видно, что если в алгоритме не указано явно, какие промежуточные результаты и насколько долго мы запоминаем и держим в уме, то стоит исходить из того, что таких результатов у нас нет. Если мы хотим в конце заправить пуговицу в штаны, нам нужно либо в процессе перебора всех пуговиц как-то запомнить, что она оторвана, либо придётся проверять заново.
Для обычного человека такое мелкое запоминание очевидно (хотя у людей с проблемами концентрации или памяти могут быть проблемы), но у компьютера нет никакого понятия о том, что стоит хранить, а что нет - поэтому программист так или иначе предписывает хранить ту информацию, которая ему нужна будет в дальнейшем.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #58 : 09-04-2012 05:31 » |
|
RXL, программисты верят в случайное соединение звезд в некую, несущую смысл, картину? Верят, не верят... Но бубен у меня висит Так никто и не показал простой пример цикла с условием на пуговицах - стали куда-то переусложнять. Делается так: 1. Берёшь нижнюю незастёгнутую пуговицу. 2. Застёгиваешь. 3. Если есть незастёгнутые пуговицы, то повторять, начиная п. 1 Следует обратить внимание, что это работает для любого количества пуговиц, больше или равного 1. Вопрос на засыпку, а как изменить алгоритм, чтобы он был применим для 0 и больше пуговиц?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
simka
|
|
« Ответ #59 : 09-04-2012 09:29 » |
|
Dimka, а от нуля до единицы это в привязке к жизни... как? если все пуговицы оторваны? Или Вы имели в виду неотрицательное множество целых чисел? И вариант с застегиванием незастегнутых не подходит для тех случаев, когда что-то оторвано, а что-то нужно не застегивать
|
|
« Последнее редактирование: 09-04-2012 09:37 от simka »
|
Записан
|
|
|
|
|