20:07

Простыми словами
Господа хорошие!
Я всё по поводу своих тестов.
Вот скажите, среди вас есть много людей, которые сведущи в программировании.
Блок-схема, представленная на рисунке, представляет собой CASE-структуру, или это всего лишь несколько условных операторов?
И если ответ отрицателен, т.е. эта блок-схема не соответствует оператору case, то как этот самый case нарисовать блок-схемой?


@темы: Вопросы

Комментарии
29.10.2007 в 20:21

Таар-лайх!
Amicus Plato
Обычно, когда изображают case, конкретизируют условия, т.е. вместо Усл.1, Усл.2, Усл.3 пишут
имя_переменной1==значение1
имя_переменной1==значение2
имя_переменной1==значение3
паодчёркивая, что в case рассматриваются различные значения одной и той же переменной.

Иначе получается просто набор вложенных if.
29.10.2007 в 20:25

На плечах гигантов, на спинах электронов
Хранитель печати а-а-а!!! Точно! Вот спасибо! А то я никак не могла понять, в чем же здесь подвох!!!
А "по форме"?
Нету отдельно: не условных операторов, а именно case в виде какого-нибудь хитрого многоугольника?
29.10.2007 в 20:29

Самый опасный хищник в мире
Дилетант
Мне кажется, по форме все варианты должны располагаться параллельно на одном уровне
29.10.2007 в 20:36

На плечах гигантов, на спинах электронов
Dieter Zerium тут есть одна тонкость очень серьезная...
Если его представлять в виде таких "ифов", то исчезает нехорошая неоднозначность, которую я никогда не знала, с какой стороны обойти.

А "теориии" про это нигде не читала.

Хранитель печати, Dieter Zerium
Вот смотрите. Сейчас постараюсь слёту придумать что-нибудь не сильно убогое.
Код на псевдоязе ))

x=7
y=0
DO CASE
CASE x > 5
y=1
CASE x<12
y=2
CASE x#0
y=3
END CASE

Чему равен у, если выполняются условия и первого и второго пункта?
Если моя схема (не считая "усл") верна, то выполняется первый case, после чего дальнейшая проверка прекращается. Тогда у=1.
Если есть альтернативная запись, то возможно, что за первым условием проверятся все остальные.
Тогда у=3.
...
?
29.10.2007 в 20:37

На плечах гигантов, на спинах электронов
Хранитель печати имя_переменной1==значение1
равенство ведь не обязательно?
Формально любые условия могут стоять. И формально же: не обязательно несовместные!
29.10.2007 в 20:37

Самый опасный хищник в мире
Дилетант
Вот два варианта:

и

Мне больше нравится второй, только его покрасивее надо бы нарисовать)
29.10.2007 в 20:40

Самый опасный хищник в мире
Дилетант
мне кажется, равенства необязательны, а вот перекрывание областей приведёт к ошибке.
Вот если наоборот: ничего не не будет выполняться, тогда пойдёт в обход
29.10.2007 в 20:41

На плечах гигантов, на спинах электронов
Dieter Zerium ммммм.... это не такой case, как у меня )))))))))))))
:-D
Блин!
Как многообразен мир! )))

*Это ГОСТовские обозначения?
29.10.2007 в 20:44

На плечах гигантов, на спинах электронов
Dieter Zerium не должно вести к ошибке, как бы оно там ни интерпретировалось. Но вот результат должен быть предсказуем для программиста! А каков он в этом случае?
29.10.2007 в 20:44

Самый опасный хищник в мире
Дилетант
Это ГОСТовские обозначения?
это ты у меня спрашиваешь? :-D

Ой, теперь мне кажется, что там только равенства можно писать...

29.10.2007 в 20:47

Самый опасный хищник в мире
Дилетант
Вот пример нашёл, должен помочь) правда, не на русском))
www.rl.odessa.ua/_For_Lyceistu/Informatics/Uche...
29.10.2007 в 20:48

На плечах гигантов, на спинах электронов
Dieter Zerium :-D:-D:-D
АГА! Запутался!!! )))
Я "как рыба в воде" только в FoxPro. Все остальные языки я знаю как недоучка. Т.е. знаю, где посмотреть, в случае чего... Но вот так чтобы что-то утверждать железно... Могу только в Фоксе. И в нем как раз в CASE можно писать всё! Вплоть до РАЗНЫХ условий: не с одной переменной, а с разными. И всё будет работать (если логически непротиворечиво).
29.10.2007 в 20:49

На плечах гигантов, на спинах электронов
Dieter Zerium суда по адресу, на украинском? ))) Спасибо! Сейчас посмотрю.
29.10.2007 в 20:50

На плечах гигантов, на спинах электронов
Dieter Zerium Ыыыы! Красота какая!!! ))))))))
29.10.2007 в 20:56

Самый опасный хищник в мире
29.10.2007 в 20:56

Позитивнее, позитивнее...
В Паскале, например, в case может одновременно выполняться только одно условие (поскольку там в качестве условий задаются именно равенства или непересекающиеся диапазоны).
Стандарт блок-схем (в частности, ГОСТ) не предусматривает отдельного многоугольника для множественных ветвлений. Вместо этого рисуется ромб ветвления с множеством выходов:

(весь ГОСТ можно найти вот тут: http://cert.obninsk.ru/gost/282/282.html).

Вообще, мне кажется, для неясных случаев корректнее рисовать несколько ромбов "if". Хотя я думаю, что на блок-схеме не должно быть пересекающихся альтернатив в case, она же рисуется для специально подобранных учебных задач.
Да и вообще я считаю пересекающиеся альтернативы в case неправильными)
29.10.2007 в 20:57

Самый опасный хищник в мире
Дилетант
запутался, ага :tear:
))
29.10.2007 в 21:00

Таар-лайх!
Дилетант
в Си равенство обязательно
29.10.2007 в 21:00

На плечах гигантов, на спинах электронов
Dieter Zerium, Disprein Спасибо за ссылки!!!

тот пример (с пересекающимися условиями), — это не порождение моего больного воображения. Это задание FEPO! Я вынуждена объяснять студентам, что будет при выполнении такого фрагмента кода ((((
Я говорю всегда, что первое истинное условие обрывает дальнейшую проверку.
Но на самом деле ни в чем не уверена.
Хотя, судя по всем блок-схемам, это действительно так!
29.10.2007 в 21:02

Таар-лайх!
Дилетант ну первое истинное условие в си, например, не обрывает проверку, если в конце case'a не стоит оператор break. Но это уже частности
29.10.2007 в 21:04

На плечах гигантов, на спинах электронов
Хранитель печати блин ((((
что-то теперь мне еще хуже, чем было вначале ((((:-D
я тоже запуталась (((
29.10.2007 в 21:08

На плечах гигантов, на спинах электронов
гхмммм...
Посмотрела ссылку Dieter Zerium'а; почитала учебник по VB...
Понятно... ФоксПро меня полностью развратил... Это не язык, это пир духа какой-то на нем всё можно...
Ни в Паскале, ни в Бэйсике такие штуки тоже не пройдут!

Откуда же они это в ФЕПО взяли? ((((

29.10.2007 в 21:12

Таар-лайх!
Дилетант
вот эта схема из поста Dieter Zerium ближе всего к классическому определению switch

29.10.2007 в 21:17

На плечах гигантов, на спинах электронов
Хранитель печати на украинском языке мне больше понравилось ))))
только оно что-то фигово вставляется ((
29.10.2007 в 21:50

Самый опасный хищник в мире
Дилетант
тот пример (с пересекающимися условиями), — это не порождение моего больного воображения. Это задание FEPO! Я вынуждена объяснять студентам, что будет при выполнении такого фрагмента кода ((((
вот так всегда: учат одному, а спрашивают другое((
29.10.2007 в 22:29

На плечах гигантов, на спинах электронов
Dieter Zerium :-D
Жизнь тяжела у всех ))))