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

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

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

« Ответ #60 : 09-04-2012 10:34 » 

simka, не знаю, где ты в словах "больше или равного 1" и "0 и больше" увидела "от 0 до 1"...

В таких случаях поступают следующим образом: родившаяся в голове мутная мысль, независимо от того, вызывает она сомнение или не вызывает, оформляется в некое конкретное высказывание; затем это высказывание принимается за гипотезу, а по всем имеющимся текстам разыскиваются противоречия этой гипотезе; если противоречия найдены, гипотеза неверна, если противоречий не найдено, гипотезу можно принять.

В данном случае у тебя гипотеза "от 0 до 1". Проверяешь по тексту: "больше или равно 1" подходит? - нет. Дальше можно не проверять, гипотеза неверна.

Так в большой программе подлаживаются друг к другу разные части. Полёт фантазии ограничивается предыдущими наработками Улыбаюсь

Цитата: simka
И вариант с застегиванием незастегнутых не подходит для тех случаев, когда что-то оторвано, а что-то нужно не застегивать
Оторванные и те, что не нужно застёгивать, - это как раз упомянутые мною переусложнения, в которые тут ломанулись некоторые граждане из желания впечатлить тебя сложностью, чтобы ты лучше прониклась Улыбаюсь Тут бы с простым случаем сначала разобраться Улыбаюсь
« Последнее редактирование: 09-04-2012 11:41 от Dimka » Записан

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

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

« Ответ #61 : 09-04-2012 10:49 » 

Dimka, я увидела два варианта прочтения, их и озвучила, несмотря на очевидный идиотизм одного... ну, мало ли...По мне так всегда лучше переспросить и уточнить, чем додумывать

С переусложненными пуговицами- понятно.
Записан
Dimka
Деятель
Команда клуба

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

« Ответ #62 : 09-04-2012 11:44 » 

Цитата: simka
По мне так всегда лучше переспросить и уточнить, чем додумывать
С одной стороны, это правильно - спрашивать лучше, чем додумывать. Но с другой стороны, учитывая, что вся информация уже была, предпочтительнее сверяться с ней, нежели переспрашивать.

Тут дело не в том, что программисты - люди не болтливые, а в том, что если так не делать, на болтовню будет уходить 100% рабочего времени, а работа будет стоять Улыбаюсь
Записан

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

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

« Ответ #63 : 09-04-2012 11:55 » 

Сей персонаж сейчас наилучшим образом отражает мой ответ

* окай.png (11.05 Кб - загружено 1287 раз.)
« Последнее редактирование: 09-04-2012 12:37 от Sla » Записан
Dimka
Деятель
Команда клуба

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

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

simka, твоё творчество? Вид у него запаренный, человека добродушного, но трудной судьбы Улыбаюсь
Записан

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

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

« Ответ #65 : 09-04-2012 13:28 » 

Не, не мое)) окай-фейс это практически народное творчество)))
Записан
Sla
Модератор

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

WWW
« Ответ #66 : 09-04-2012 13:46 » new

Уходим в сторону.

На чем остановились?

2 Dimka, не вижу причин не "усложнять"
Усложнения вносят некие условия в действие.

Конечно, было бы правильным добиться идеального алгоритма застегивания. Но его кто-нибудь знает.
Появляется некая эвристика при наописании процесса застегивания.
Например, застегиваем снизу. А ведь можно было пойти и сверху.

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

Таким образом, я так вижу, мы совсем не запутываем, а наоборот, даем больше и больше инфы, пусть пока и не совсем систематизированной.
Записан

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

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

« Ответ #67 : 09-04-2012 14:07 » 

Sla, из всего делаем вывод: все условия оговариваются заранее, могут ли пуговицы отсутствовать, и т.д.
Записан
Sla
Модератор

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

WWW
« Ответ #68 : 09-04-2012 14:53 » 

Sla, из всего делаем вывод: все условия оговариваются заранее, могут ли пуговицы отсутствовать, и т.д.
В принципе - да, и это называется ТЗ.
Но в процесс отладки, возникают исключительные ситуации, которые программист должен предусмотреть
Записан

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

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

« Ответ #69 : 09-04-2012 15:15 » 

Цитата: Sla
Появляется некая эвристика при наописании процесса застегивания.
Например, застегиваем снизу. А ведь можно было пойти и сверху.

Условия - можно ли пренебречь отсутствием пуговицы?
Появляется обработчик исключительных ситуаций, пусть и надуманных.
Вот человек ещё цикл с предусловием не написал, а ты уже за исключительные ситуации берёшься. Это ж завал сведений без закрепления на практике - выйдет каша в голове. По-моему не надо за всё сразу хвататься. А полезнее переходить к собственно программированию. Там ещё тоже много всяких "подводных камней". Например, "переменную" не все схватывают сразу.

simka, так как переписать цикл, чтобы было "от 0 и больше пуговиц" вместо "от 1 и больше пуговиц"? Либо предложи вариант, либо скажи, что не знаешь/не понимаешь.
Записан

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

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

« Ответ #70 : 09-04-2012 15:48 » 

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

это если на одежде их вообще нет...

Хотя скорее всего я снова что-то не поняла(
Записан
Sla
Модератор

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

WWW
« Ответ #71 : 09-04-2012 15:57 » 

тпру.... не гони лошадей.
Вад рассказывал что такое цикл с предусловием.
Вспоминай.
Записан

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

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

« Ответ #72 : 09-04-2012 16:06 » 

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

Если пуговиц незастегнутых нет, значит завершаем. Разве не так?

P.S. еще у меня косяки с оформлением, вот, кусок цитаты кривой, прошу извинить...
« Последнее редактирование: 09-04-2012 16:32 от Sla » Записан
Sla
Модератор

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

WWW
« Ответ #73 : 09-04-2012 16:33 » 

ага вспомнила, а теперь! если пуговиц 0?
Расскажи применяя сведения о цикле с предусловием
Записан

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

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

« Ответ #74 : 09-04-2012 16:38 » 

Sla,  если пуговиц 0, то и незастегнутых- тоже 0, а отсутствие незастегнутых пуговиц- сигнал к завершению процесса... не?
Записан
Sla
Модератор

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

WWW
« Ответ #75 : 09-04-2012 16:44 » 

да? Улыбаюсь
Записан

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

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

« Ответ #76 : 09-04-2012 16:46 » 

ну.... по логике - да...  Здесь была моя ладья...

*старательно мимикрирую под стену*
*пытаюсь провалиться сквозь землю*
« Последнее редактирование: 09-04-2012 16:55 от simka » Записан
Sla
Модератор

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

WWW
« Ответ #77 : 09-04-2012 16:57 » 

давай уйдем от чисел?
Записан

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

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

« Ответ #78 : 09-04-2012 17:00 » 

Sla, как скажете. С Вами- хоть от чисел... =)
Записан
Sla
Модератор

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

WWW
« Ответ #79 : 09-04-2012 17:04 » 

Не... сама, сама...

Задача
  Описать алгоритм застегивания рубашки
Начальное условие.
  Количество пуговиц неизвестно
Дополнительное условие
  Использовать цикл с предусловием
Записан

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

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

« Ответ #80 : 09-04-2012 17:15 » 

Предусловие - наличие незастегнутых пуговиц. (пуговицы расстегнуты).
Условие завершения операции - отсутствие незастегнутых пуговиц.(пуговицы застегнуты)

1) Взять незастегнутую пуговицу
2)Застегнуть
3) Повторять до тех пор, пока незастегнутых не останется.

Блин. Такая формулировка для 0 не подходит... (( я в сомнениях
Для нуля можно предусловие озвучить как "отсутствие застегнутых пуговиц" но это будет неверно, если часть пуговиц уже застегнута...

Я заблудилась Жаль
« Последнее редактирование: 09-04-2012 17:28 от simka » Записан
Sla
Модератор

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

WWW
« Ответ #81 : 09-04-2012 17:26 » 

3) Повторять до тех пор, пока незастегнутых не останется.

Пункт 3... последний.
Это не с предусловием, а с ...(хором)условием
Записан

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

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

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

Sla, значит я так и не поняла, что такое предусловие((
 1)Проверить наличие незстегнутой пуговицы. Если есть, то
2)Взять незастегнутую пуговицу
3))Застегнуть
4) Повторять 1-3
« Последнее редактирование: 09-04-2012 17:33 от simka » Записан
Sla
Модератор

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

WWW
« Ответ #83 : 09-04-2012 17:53 » 

п.1 И так и не так.
Так потому что у тебя есть проверка (если) в самом начале
Но... почему ты проверяешь наличие незастягнутой. А если пуговиц 0?

Подсказка
Пока <выполняется условие> делать
Записан

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

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

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

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

Так что, я бы, всё-таки, понятие структуры данных ввёл, хотя бы самое базовое Улыбаюсь Без чёткой структуры и правила игры нечёткие получаются.
В случае пуговиц, я бы предложил такое понятие как ряд петелек для пуговиц, с возможностью двигаться от петельки к петельке последовательно (неважно, с какого конца). Тогда, не видим ни одной петельки значит, - нет петелек. Видим - берём первую понравившуюся, ближайшую к себе, или как-то ещё.
« Последнее редактирование: 09-04-2012 18:02 от Вад » Записан
simka
Постоялец

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

« Ответ #85 : 09-04-2012 18:07 » 

Sla,
1)Если пуговиц нет, то завершить процесс. Если есть незастегнутые пуговицы
2)Взять незастегнутую пуговицу
3)Застегнуть
4) Повторять 1-3, Пока не останется незастегнутых пуговиц

ААА *голова-стена* Я не знаю, как еще( если пуговиц нет, то и подпрограмма смысла не имеет, нельзя застегнуть то, чего нет. следовательно и действия выполнять не нужно, нужно сразу же завершать
« Последнее редактирование: 09-04-2012 18:15 от simka » Записан
Sla
Модератор

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

WWW
« Ответ #86 : 09-04-2012 18:13 » 

Вад,  А потому что нужно уйти от процесса застегивания пуговицы

И не смотреть на количественные характеристики, а смотреть на качественные: можем застегнуть/ не можем застегнуть
Записан

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

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

« Ответ #87 : 09-04-2012 18:25 » 

Вад, не надо списка объектов. Она его не создаст, а, следовательно, это не годится для перехода к практике, на которой эти списки бы обрабатывались.


Пора бы определиться с языком. Предлагаю... что-то типа Ruby.


simka, "пред-" - это перед, в начале; "пост-" - это после, в конце.


Sla, она не понимает, какие условия к циклу относятся, а какие нет. А почему она этого не понимает? А потому, что помимо пред- и постусловий (в смысле Хоара) ещё есть инвариант цикла, каковой описывает всё, к циклу не относящееся, и потому сохраняющий своё значение до, во время и после выполнения цикла. Соответственно, инвариант должен быть исключён из всяких "если", потому что он заведомо положителен. И как ты объяснишь ей инвариант?


simka, смотри. Исходно было так:
Код:
1 Взять нижнюю незастёгнутую пуговицу.
2 Застегнуть её.
3 Если остались незастёгнутые пуговицы, повторить с пункта 1.

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

Что же ты попыталась написать? Ты попыталась написать такой ход конём:
Код:
1 Если есть незастёгнутые пуговицы, то
1.1 Взять нижнюю незастёгнутую пуговицу.
1.2 Застегнуть её.
1.3 Если остались незастёгнутые пуговицы, повторить с пункта 1.1
т.е. оставить цикл как он был, просто ограничив заход внутрь цикла условием. Это законно, но если присмотришься, то пункты 1 и 1.3 практически одинаковы, поэтому вопрос: как их объединить в одно условие? Причём сразу можно сказать, какими свойствами должно это условие обладать:
1) оно должно быть условием цикла (т.е. выполняющееся в повторе), чтобы по нему определялся конец работы;
2) оно должно быть в начале цикла (т.е. предусловие), чтобы при 0 незастёгнутых пуговиц цикл не выполнился ни разу.

Как это всё сделать? Думай Улыбаюсь
« Последнее редактирование: 09-04-2012 18:27 от Dimka » Записан

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

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

« Ответ #88 : 09-04-2012 18:38 » 

Dimka,  тогда может следует исправить пункт 1.3 Повторить с пункта 1 ?
Тогда если пуговиц нет(или незастегнутых, или вообще), то процесс завершается... или его завершение не само собой разумеется и тоже требует оговорки?
Записан
Вад
Команда клуба

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

« Ответ #89 : 09-04-2012 19:18 » 

simka, да, если точнее, "Перейти к п.1" - потому что, повторять или не повторять, - решим уже там, в п.1
Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines