Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Учимся логически думать...  (Прочитано 155349 раз)
0 Пользователей и 15 Гостей смотрят эту тему.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 08-04-2012 20:44 » 

Я бы, кстати, про телефон зашёл с другой стороны, раз уж мы о протоколах общения с устройством.
Мне лично куда интереснее не описывать рутину, а попробовать придумать, отталкиваясь от единственного знания, что по проводу каким-то неизвестным пока для нас способом передаётся звук (условно) любой частоты, как можно самому сделать механизм дозвона.  То есть, создать свою собственную телефонию. Так мы можем, постепенно усложняя схему, пройти все этапы: от уровня полевого телефона с индуктивным вызовом и "барышней" на АТС через "вертушку" до тонового набора, заодно создав свои собственные AT-команды Улыбаюсь
« Последнее редактирование: 08-04-2012 20:46 от Вад » Записан
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #31 : 08-04-2012 20:46 » 

Условия? наличие пары пуговица-отверстие, факт рассегнута/застегнута она, ну и ,собственно, наличие рук.... больше условий не вижу.

Насчет подпрограмм - сунулась в википедию, но это помогло слабо в данном контексте...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #32 : 08-04-2012 20:46 » 

Вад, Не усложняй сложное Улыбаюсь
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 08-04-2012 20:49 » new

Finch, да это я так, как альтернативу: не всегда же программисты прописывают рутинные алгоритмы, где-то велосипеды всё равно приходится изобретать, так или иначе.
Записан
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #34 : 08-04-2012 20:50 » 

Да, Вад, хотела о том же попросить... Гуманнее нужно быть... Хотя если регулярно пытаться общаться с юзерами типа меня, то самое гуманное это вечный бан С ума сойти...

А про велосипеды - не надо. Это тема больная и, если меня понесет, мне будет мучительно стыдно за  жесткий оффтоп..
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #35 : 08-04-2012 20:51 » 

Условие, если пуговица уже застегнуто. Не нужно выполнять определенные действия.

Подпрограмма все действия с застегиванием пуговици. при этом руки уже спозиционированы на ней Улыбаюсь Тем самым тебе не нужно описывать по несколько раз эти действия. Скажем если вдруг ты применеш действия по отношению к блузке, а не к польту.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #36 : 08-04-2012 20:53 » 

simka, подпрограмма позволяет нам выделить типовое действие с тем, чтобы описать его один раз и потом использовать там, где захочется. Если мы опишем алгоритм застёгивания одной пуговицы, то надо будет только узнать, где находится пуговица, а дальше у нас уже есть готовый набор инструкций по её застёгиванию - подпрограмма.

Результатом подпрограммы, если не усложнять, будет то, удалось ли застегнуть пуговицу. Мы можем этот результат игнорировать или нет, в зависимости от надобности (нет смысла перепроверять, если эта пуговица для нас неважна), но в целом, знание результата проделанных действий полезно (а вдруг мы застёгивали и не застегнули-таки почему-то важную пуговицу -- на штанах, например, -- и нам надо срочно что-то предпринять, чтобы избежать нежелательных последствий).
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #37 : 08-04-2012 20:56 » 

Простое действо. Приготовить яичницу. При этом учесть, что в дальнейшем, может быть некоторые действия применить для омлета.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 08-04-2012 21:01 » 

А теперь плавно можно перейти к объектам Улыбаюсь
Шутка, но с претензией.
Не будем далеко уходить от пуговиц.
Просто поменяем пуговицы на крючки и кнопки.
А для усложнения задачи перейти к "молнии" Улыбаюсь

Добавлено через 3 минуты и 55 секунд:
Продевание пуговицы в петлю - это и есть подпрограмма
Т.е.
Пройтись по всем нужным пуговицам, и выполнит процесс застегивания (подпрограмма)
нужным  - верхнюю пуговицу не застегиваем.

Кроме того. Усложняем процесс.
Одна пуговица оторвалась!!!
Описать действия.
« Последнее редактирование: 08-04-2012 21:05 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #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
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #40 : 08-04-2012 21:14 » 

Цитата
Оторвалась- пропускаем, идем дальше, что ж поделать...
А постарайся это описать "формальным языком
Используя условия (если ...  то ... иначе ...)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #41 : 08-04-2012 21:14 » 

Кстати, подумалось тут, что будет не лишним помянуть прекрасную (на мой скромный вкус) книгу Абельсона и Сассмана "Структура и интерпретация компьютерных программ". Эта книга является учебником для вводного курса программирования, на котором, в общем-то, с нуля закладываются основы программирования.
Не знаю, насколько доступным является язык книги, но, по-моему, она довольно последовательно и чётко вводит в мир программирования. По крайней мере, я бы порекомендовал попробовать её почитать - если не пойдёт, всегда можно отказаться Улыбаюсь
ЗЫ. Стоит, пожалуй, заметить, что там с места в карьер пускаются программировать, поэтому какая-то минимальная моральная подготовка должна быть, чтобы не испугаться.
« Последнее редактирование: 08-04-2012 21:19 от Вад » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #42 : 08-04-2012 21:19 » 

Цитата
А с крючками и кнопками то же самое, только чуть другая подпрограмма будет...
Я не зря сказал про объекты

В данном случае существует
объект  Пара: Пуговица и Петля
или
объект Пара: Крючок и Петля
или
объект Кнопка: Папа и Мама

И каждый объект обладает методом - Застегнуть

А эти объекты приложены к одежде

Одеваем гимнастерку.
Начальные условия.
Гимнастерка обладает пуговицами и верхним крючком (как сейчас - даже понятия не имею)
Задача
Все должно быть застегнуто.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #43 : 08-04-2012 21:21 » 

С яичницей - замечательно. Замечу, что каждый из указанных пунктов тоже не прост. Можно рассматривать описанное тобой как последовательный вызов одиннадцати подпрограмм. Например, подпрограмма "Зажечь огонь на плите" может выглядеть так:
1. Проверить, зажжен ли огонь на конфорке? Если да, выходим.
2. Повернуть ручку (перекрыть газ для конфорки).
3. Проверить, открыт ли кран подачи газа к плите. Если закрыт, открыть.
4. Повернуть ручку (подать газ на конфорку).
5. Поджечь газ.
6. Перейти на пункт 1.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #44 : 08-04-2012 21:22 » 

Sla,
Если пуговица или отверстие отсутствуют/непригодны к использованию, то действия выполняются по отношению к следующей паре
Если пуговицы закончились, то завершить процесс.
                                                                                    Как-то так?

Вад, поищу- почитаю, спасибо за совет.

Добавлено через 56 секунд:
Про яичницу понимаю, просто почему-то подумала, что на данном этапе это не нужно расписывать...

Добавлено через 7 минут и 47 секунд:
В тему увеличения количества видов застежек, в каждую подпрограмму добавится определение того, пуговица это или крючок, в зависимости от чего будет определяться то, как застегивать...

А вообще странные вы все. Я думала пошлете куда подальше, а тут- рванули помогать...  Быть такого не может
« Последнее редактирование: 08-04-2012 21:31 от simka » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #45 : 08-04-2012 21:32 » 

В тему увеличения количества видов застежек, в каждую подпрограмму добавится определение того, пуговица это или крючок, в зависимости от чего будет определяться то, как застегивать...
Замечательно!
Усложняем Улыбаюсь

Оторвана самая нижняя пуговица , но ее можно заправить в штаны Улыбаюсь
Оторвана самая верхняя  - но я ее никогда не застегиваю.
Оторвана  посередине, - нужно менять, или пришивать

Опиши эти три задачи.
Договоримся, что при описании задач, ничего не упрощаем. Типа:  повторение - мать...



Добавлено через 1 минуту и 56 секунд:
Цитата
А вообще странные вы все. Я думала пошлете куда подальше, а тут- рванули помогать...
Нашли жертву Улыбаюсь

А на самом деле материал хороший для лепки попался.
« Последнее редактирование: 08-04-2012 21:34 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #46 : 08-04-2012 21:45 » 

Про яичницу понимаю, просто почему-то подумала, что на данном этапе это не нужно расписывать...

Верно. Важный в программировании принцип: любую сложную задачу можно разбить на несколько более простых задач.

Добавлено через 2 минуты и 54 секунды:
simka, тебе крупно повезло:
1. Звезды сошлись.
2. Слава и Димка преподавали данный предмет.
3. Показываешь заинтересованность в обучении и, что важно, пытаешься учиться.
« Последнее редактирование: 08-04-2012 21:48 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #47 : 08-04-2012 21:50 » 

1)Проверяем наличие пуговицы/петли
2)Если она отсутствует, проверяем:
  а)является ли она крайней (1 или последней), если да, то пропускаем.
  б)если все застегнуты, то завершаем процесс
  в) если не является крайней, то пришиваем новую
3)Берем пуговицу
4)Берем петельку(или как там это отверстие обозвать можно)
5)продеваем
6)повторяем 1-5 до завершения
7)если отсутствовала нижняя, заправляем в штаны!  Улыбаюсь)
Записан
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #48 : 08-04-2012 21:53 » 

RXL, программисты верят в случайное соединение звезд в некую, несущую смысл, картину?

А обычно я не такая везучая.. где подвох?? Не может быть...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #49 : 08-04-2012 21:55 » 

Очень сложные задачи проще рассматривать обобщено. Комплексное условие "звезды сошлись"... Ага
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #50 : 08-04-2012 22:08 » 

Что-то я тут у вас зависла серьезно... Пока думала, муж, залипнув в комп, сжег чайник( Ваш коллега, между прочим... Жаль

из чего алгоритм сожжения чайника
1) желание попить чаю
2)кто идет ставить чайник
условия: Я - противоречит конечному итогу сожжения чайника
Не я- муж
3) если я помню о том, что чайник на плите- см п1 условие1
если не помню, то
4) Если муж не занят компом- чайник будет жить
Если занят- чайник сгорел Я зол!

простите, вопль души... Жаль
« Последнее редактирование: 08-04-2012 22:26 от simka » Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #51 : 08-04-2012 22:46 » 

simka, по пугавицам: почему п.7 идёт именно после всех условий, последним пунктом? И пункт 3б неоднозначный: в определённых условиях оно, может, и имеет смысл, но в общем случае, если мы остановились на какой-то пуговице и пытаемся застегнуть, даже если она оторвана, то условие выхода мы должны проверять уже после того, как разберёмся с этой пуговицей - в тот момент, когда будем пытаться перейти к следующей.

Возможны, разумеется, варианты: мы можем проверять это условие в самом начале (обычно так и делают), либо в самом конце - так поступают, когда уверены, что хотя бы одна пуговица у нас есть.

Терминологически, сам список повторяющихся действий (п. 1-6) называют циклом, условие "все пуговицы застёгнуты" называется условием цикла, 1-5 называется телом цикла, а однократное выполнение 1-5 - итерацией.
Записан
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #52 : 08-04-2012 22:54 » 

7 пункт идет после всех, потому что, ИМХО, так удобнее, сначала застегнуть, а потом заправить...

по проверке на завершенность процесса- не поняла, о чем Вы(
Точнее свой косяк сейчас увидела, но о чем Вы, все равно не поняла...
За терминологию спасибо, попробую запомнить и взять на вооружение
« Последнее редактирование: 08-04-2012 22:56 от simka » Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #54 : 08-04-2012 23:10 » 

по чайнику - да, так гораздо аккуратнее и понятнее, когда нас интересует именно этот итог оплавившейся крышки...Благодарю Улыбаюсь
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #55 : 08-04-2012 23:15 » 

7 пункт идет после всех, потому что, ИМХО, так удобнее, сначала застегнуть, а потом заправить...
А, теперь понял. Да, так тоже можно. Только тогда мы должны запомнить, что какая-то пуговица у нас отсутствовала (а могло отсутствовать и более одной пуговицы, или ни одной). И тогда мы либо должны вместо 7 действия посмотреть все оставшиеся оторванными пуговицы и при наличии нижней заправить её в штаны, либо оставить себе напоминание "надо заправить оторванную нижнюю пуговицу в штаны".
В противном случае нам придётся проверить нижнюю пуговицу ещё раз - и хорошо, когда дело касается только пуговицы, а ведь это может быть какой-нибудь длительный процесс диагностики Улыбаюсь

Цитата
по проверке на завершенность процесса- не поняла, о чем Вы(
Точнее свой косяк сейчас увидела, но о чем Вы, все равно не поняла...
Ну, если буквально следовать описанию, то мы проверяем, все ли пуговицы уже застёгнуты, только при попытке застегнуть оторванную пуговицу.

Правильнее сделать это вообще п.1: ведь если все пуговицы застёгнуты, то и делать дальше по списку нечего. Если же застёгнуты не все, перейти к очередной незастёгнутой и разбираться, оторвана она, или нет, и т.д. Циклы вроде застёгивания пуговиц обычно называются "циклами с предусловием", потому что мы сначала проверяем условие завершения цикла операций, а уже по итогам этой проверки принимаем решение, делать ли итерацию (набор действий), или нет. Последним же пунктом в цикле мы тогда возвращаемся к 1му ("зацикливаемся")
Записан
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #56 : 08-04-2012 23:24 » 

Ух... вроде все просто и логично, но мозг тактично намекает на то, что "а не пошла бы ты, многоуважаемая и наилюбимейшая хозяйка, спать?". И я думаю с ним согласиться...

Алгоритм засыпания
1. Первоначальный итог= я бодрствую
2.Если я хочу спать, то
    2.1Если уже поздний час, то
      2.1.1.Если сейчас не сессия, то
         2.1.1.1.Ложусь спать= я сплю Ага
3. Доброй ночи и еще раз спасибо)
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #57 : 08-04-2012 23:25 » 

Кстати, на примере п.7 с заправлением нижней пуговицы хорошо видно, что если в алгоритме не указано явно, какие промежуточные результаты и насколько долго мы запоминаем и держим в уме, то стоит исходить из того, что таких результатов у нас нет. Если мы хотим в конце заправить пуговицу в штаны, нам нужно либо в процессе перебора всех пуговиц как-то запомнить, что она оторвана, либо придётся проверять заново.

Для обычного человека такое мелкое запоминание очевидно (хотя у людей с проблемами концентрации или памяти могут быть проблемы), но у компьютера нет никакого понятия о том, что стоит хранить, а что нет - поэтому программист так или иначе предписывает хранить ту информацию, которая ему нужна будет в дальнейшем.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #58 : 09-04-2012 05:31 » 

Цитата: simka
RXL, программисты верят в случайное соединение звезд в некую, несущую смысл, картину?
Верят, не верят... Но бубен у меня висит Улыбаюсь

Так никто и не показал простой пример цикла с условием на пуговицах - стали куда-то переусложнять. Делается так:

1. Берёшь нижнюю незастёгнутую пуговицу.
2. Застёгиваешь.
3. Если есть незастёгнутые пуговицы, то повторять, начиная п. 1

Следует обратить внимание, что это работает для любого количества пуговиц, больше или равного 1. Вопрос на засыпку, а как изменить алгоритм, чтобы он был применим для 0 и больше пуговиц?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
simka
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #59 : 09-04-2012 09:29 » 

Dimka, а от нуля до единицы это в привязке к жизни... как? Меня одолевают смутные сомнения если все пуговицы оторваны?
Или Вы имели в виду неотрицательное множество целых чисел?
 И вариант с застегиванием незастегнутых не подходит для тех случаев, когда что-то оторвано, а что-то нужно не застегивать
« Последнее редактирование: 09-04-2012 09:37 от simka » Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines