Другие языки программирования и технологии

Люди блин...почему в программах я практически никогда не вижу and, not, or

Вот например код проверки в программе if (X < 10) then begin if (X > 0) then begin write('Число больше нуля, и меньше 10') else write('Число больше десяти'); else('Число меньше нуля'); end; end; Сорри код составил примерно, почему не написать if((X <= 10) and (X > 0)) then write('Число меньше 10, или равно ему') else write('Число больше 10, или меньше 0'); end. И почему не так пишут, ведь код читать легче
потому что они при написании не используються
хД
Сергей Сутковенко
Сергей Сутковенко
649
Лучший ответ
наверно потому что серьёзные системы программ писать не доводилось) )
"if((X <= 10) and (X > 0)) then " мысль в правильную сторону - часто надо в один if запихать 10 условий чтоб на пару страниц не писать. Там как раз
if(!strcmp(..) && (a< b) || .. ну и т. д.

а
if( ! ukazatel_Nuzhnogo ) - вообще стандарная проверка распределения памяти или существования объекта

для обучения логике новичкам обычно дают каскады поштучных if`ов. а как чуть глубже переходят к "100 операторов в одной строке"
Первый пример более шире. Возможности обработки тела операции больше - если разбить по шагам можно более детально обрабатывать ошибки. Или результат конкретно- меньше нуля, больше нуля меньше 10, больше 10. В основном данный код идет при проектировании, типа бета версия. Потом из за отсутствия ошибок код оптимизируется-как во втором примере.
M(
Mc_Beka (Akorda)
23 849
Чтобы проверить каждое условие в отдельности. Вложенность используется для снижения мощности множества проверяемых условий.
>>наверно потому что серьёзные системы программ писать не доводилось) )
>>часто надо в один "иф" запихать 10 условий чтоб на пару страниц не писать.

Это, наверное потому, что серьёзные системы, написанные "программистами" которые любят сокращать Вам поддерживать не доводилось.
Если под "серьёзной системой" понимается драйвер, или еще какая "узко заточенная" или ориентированная на АКАП-исполнение программа, то спору нет, нужно оптимизировать как только можно, иначе - это бред.

Лично я бы отбил руки за написание "сокращенного" кода:
- реально толку от такой "оптимизации" - ноль (компиляторы и прочего рода препроцессоры уже давно намного умнее программистов в плане оптимизации и перевода в байт/машинный коды)
- программисту, поддерживающему большую систему намного проще разобраться в хорошо структурированных блоках условий (а, поскольку, логическое ветвление один из самых частых и трудноотлавливаемых багов - желательно еще и комментировать или писать то-же условие на метаязыке, чтобы читалось легче) чем в однострочной абракадабре (современные ИДЕ позволяют "сворачивать" код поблочно и выборочно, или вы пользуетесь "блокнотом" для написания "серьёзных систем"? о. О)

Теперь по сути вопроса: видимо автор - учитель информатики в школе или ее ученик? Просто мне трудно представить, что где-то еще можно увидеть программы, не содержащие условных конструкций "НЕ", "И", "ИЛИ", "ЛИБО" и написанные в таком стиле.
Где вы нашли тех людей, которые пишут так программы, как Вы продемонстрировали? Это же стиль написания пятого класса!.. .
Хотя, если мне не изменяет память, то в чистом паскале нет операторов типа "елсеИф", так что, видимо, выкручиваются, как умеют :)
GG
Gi4A Gi4Emon
658
Владимир Ефременков "Лично я бы отбил руки за написание "сокращенного" кода:"
))

А без него системы поддерживающие десятки объектов раскиданные на тысячи километров сложновато писать))
удобнее видеть в экране логический кусок, а не 20 строк скобок - в учебниках круто всё вынесенными скобкими обозначено, а это только в простейших формочках удобно))
Владимир Ефременков "или вы пользуетесь "блокнотом" для написания "серьёзных систем"? "
Неа не блокнотом.
UltraEdit - он много удобнее (компилю естественно из командной строки)
Максим Шардаков Я не писал серьезных программ)
Потому что это школьная хрень, а не полноценная программа.
Школьные программы редко можно назвать программами. Ибо они настолько крупны/криворуки.

Все и пишут, используя and, or. А вот без not можно обойтись.

Вообще удобнее Си, ежели паскаль. ;)
if ((x<=10)||(X>0)) {
Тело
}