Leave a comment

exacter June 6 2024, 11:20:18 UTC

Если несколько условий относятся к одному и тому же блоку кода, можно объединить их с помощью логических операторов && (И) и || (ИЛИ). Это поможет сократить количество отдельных операторов if.

Reply

antisovetchina7 June 6 2024, 11:23:37 UTC
"можно объединить их с помощью логических операторов"
Клавиатура Вам в руки!

Reply

exacter June 6 2024, 11:34:15 UTC

В бытность работы прогером, всегда начинал с чистых листков бумаги. ;-)

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

По существу куча операторов if then друг за другом в программисткой среде считается плохим стилем программирования для кодера. А для алгоритмистов вообще глаза режет.

Reply

antisovetchina7 June 7 2024, 13:32:49 UTC
"Это улучшит его структуру"
Почему бы Вам не показать конечный результат рекомендуемых Вами улучшений?

Reply

exacter June 8 2024, 08:55:03 UTC

Сначала всегда четко поставленное тех.задание.

Reply

antisovetchina7 June 8 2024, 12:44:15 UTC
"Сначала всегда четко поставленное тех.задание."
Ай-я-яй!
Сначала - критиковали автора статьи, а когда Вам предложили исправить его "ошибки" - заговорили про техзадание!
Автору статьи - техзадания никто не ставил!!!

Reply

exacter June 9 2024, 09:02:32 UTC

ок. Если сами не хотите, но настиваете, сам свараганю, говорю это обреченно, заранее зная, что вы то "хотели на самом деле соовсем другое!" ;-)
------
Имеем множество (set) неупорядоченной коллекции уникальных элементов, связанной с массивом значений. При операции пересечения двух наборов результатом будет новый набор, содержащий только элементы, общие для обоих исходных наборов. Это позволяет получить выборку (подмножество) элементов, принадлежащих обоим наборам. *без if then

на языке pyton.
# два множества

set_a = set(range(10)) # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

set_b = set(range(5, 15)) # {5, 6, 7, 8, 9, 10, 11, 12, 13, 14}

# каждое ассоциировано с массивом значений

print("Set A:", list(set_a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print("Set B:", list(set_b)) # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

# Пересечение двух множеств получаем подмножество

intersection = set_a.intersection(set_b)

print("Intersection:", intersection) # {5, 6, 7, 8, 9}

Вывод будет выглядить так
Set A: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Set B: [5, 6, 7, 8, 9, 10, 11 ( ... )

Reply

tsakaloktonos June 10 2024, 17:48:52 UTC

Думаю, что логичнее было дать ответ в псевдокодах - как это сделано в стартовом сообщении.

Ну и, опять-таки, если код предназначен не только для исполнения, но и для чтения человеком, то лучше его писать более наглядно.

По мне, лучше $a = $a + 5, чем $a += 5 (правда, подобный оператор конкатенации я воспринимаю нормально).

Reply

exacter June 10 2024, 19:05:09 UTC

Главное уловили и, как я понял ,согласны - линейные алгоритмы if then менее эффективны и менее понятны, чем этот приведенный bitmasking, где определенные биты числа множества выделяются или сбрасываются с помощью логических операций (И, ИЛИ, НЕ) . Это ближе к тому алгоритму, который люди используют в своей жизни при принятии решений.
Приведенный же в топике алгоритм , это не только , что просто неэффективное программирование, а еще и уводит , применительно к христианству, куда-то совсем не в ту сторону, и к очень странным выводам.

Reply

antisovetchina7 June 11 2024, 11:16:43 UTC
"Приведенный же в топике алгоритм , это не только , что просто неэффективное программирование, а еще и уводит , применительно к христианству, куда-то совсем не в ту сторону"
Так бы и сказали сразу, что Вам не понравились идеи автора.
Посему обвинять автора в непрофессионализме - с Вашей стороны нечестно.

Reply


Leave a comment

Up