Для чего нужны скобки в программировании

<> (Фигурные скобки)

Фигурные скобки <> (также называются просто «скобки») – важный элемент языка программирования С. Они используются в нескольких различных конструкциях, приведенных ниже, и это может иногда сбивать с толку начинающих.

Открывающая скобка «<» должна всегда сопровождаться закрывающей скобкой «>«. Это условие, известное как парность (симметричность) фигурных скобок. Arduino IDE (интегрированная среда разработчика) включает подходящий инструмент для проверки парности скобок. Достаточно выделить скобку, или даже поставить курсор сразу же за скобкой, как будет подсвечена её логическая пара.

Сейчас эта возможность работает с ошибкой, так как IDE часто ищет (некорректно) скобку в тексте, который «закомментирован».

Начинающие программисты или программисты, перешедшие на Си с Бейсика, часто считают использование фигурных скобок сбивающим с толку или пугающим. В конце концов, одни и те же фигурные скобки заменяют оператор RETURN в подпрограммах (функциях), оператор ENDIF в условных циклах и оператор NEXT в циклах FOR.

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

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

Источник

Arduino.ru

<> (фигурные скобки)


Фигурные скобки <> (также называются просто «скобки») – важный элемент языка программирования С. Они используются в нескольких различных конструкциях, приведенных ниже, и это может иногда сбивать с толку начинающих.

Открывающая скобка “<” должна всегда сопровождаться закрывающей скобкой “>”. Это условие, известное как парность (симметричность) фигурных скобок. Arduino IDE (интегрированная среда разработчика) включает подходящий инструмент для проверки парности скобок. Достаточно выделить скобку, или даже поставить курсор сразу же за скобкой, как будет подсвечена её логическая пара.

Сейчас эта возможность работает с ошибкой, так как IDE часто ищет (некорректно) скобку в тексте, который «закомментирован».

Начинающие программисты или программисты, перешедшие на Си с Бейсика, часто считают использование фигурных скобок сбивающим с толку или пугающим. В конце концов, одни и те же фигурные скобки заменяют оператор RETURN в подпрограммах (функциях), оператор ENDIF в условных циклах и оператор NEXT в циклах FOR.

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

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

Источник

Заберите свои скобки

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

Для чего нужны скобки в программировании. Смотреть фото Для чего нужны скобки в программировании. Смотреть картинку Для чего нужны скобки в программировании. Картинка про Для чего нужны скобки в программировании. Фото Для чего нужны скобки в программировании

В большинстве современных языков программирования скобки используются в качестве оператора применения функции к ее аргументам:

Подождите-ка, мы применяем функцию q к аргументам, а пробелов намного больше! Значит ли это, что у нас тут несколько применений функции к аргументам? Да:

Мы получаем несколько применений функции в каррированной форме:

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

И вот тут без скобочек нам не обойтись, потому что иначе проверка типов будет считать, что мы подаем на вход функции q два разных аргумента:

К счастью, у нас уже есть инфиксный оператор в базовой библиотеке, который поможет нам избавиться от ненужных скобок:

Одной функции никогда не бывает достаточно, и мы хотим применить другую, но уже вкусив код без скобочек, хочется просто написать:

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

Для чего нужны скобки в программировании. Смотреть фото Для чего нужны скобки в программировании. Смотреть картинку Для чего нужны скобки в программировании. Картинка про Для чего нужны скобки в программировании. Фото Для чего нужны скобки в программировании

«What is a Category? Definition and Examples» (c) Math3ma

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

Можно убрать лишь скобки справа:

Выходит, если мы хотим придумать такой оператор, который мог бы принимать несколько операндов, нам надо сделать его левоасcоциативным, чтобы он мог принимать операнды по-одному справа налево:

Мы можем взять какую-нибудь часто используемую функцию, чтобы на ней протестировать наш новый оператор. Например, обработчик опциональной ошибки:

Давайте выберем для нашего нового оператора какой-нибудь ASCII-символ, который еще вроде никак не используется в базовой библиотеке.

Но как нам его написать? На самом деле, это тоже оператор применения, только сфокусированный на функции, а не на аргументах:

Каррирование. отлично, значит, мы можем группировать скобки слева!

Если применяемые аргументы достаточно большие и нет особой надобности в том, чтобы придумывать им имена, мы можем выстроить их в такой блок с отступом:

Источник

Почему языки программирования, особенно C, используют фигурные скобки, а не квадратные?

Есть ли какая-то реальная выгода для производительности программиста, которая исходит из этих фигурных скобок, или новые разработчики языка должны искать альтернативы (например, парни из Python)?

Википедия говорит нам, что C использует указанные скобки, но не почему. Утверждение в статье в Википедии о Списке языков программирования на C позволяет предположить, что этот синтаксический элемент несколько особенный:

Двумя основными факторами, влияющими на C, были семейство языков Algol (Algol 60 и Algol 68) и BCPL (от которого C берет свое название).

BCPL представил и внедрил несколько нововведений, которые стали довольно распространенными элементами в дизайне более поздних языков. Таким образом, это был первый язык программирования с фигурными скобками (один из которых использовал <> в качестве разделителей блоков), и это был первый язык, который использовал // для пометки встроенных комментариев.

Использование фигурных скобок было дополнительно уточнено в B (что предшествовало C).

Из ссылки пользователей на Б Кена Томпсона:

Есть признаки того, что фигурные скобки использовались в качестве короткой руки для begin и end внутри Алгола.

Я помню, что вы также включили их в 256-символьный карточный код, который вы опубликовали в CACM, потому что мне показалось интересным, что вы предложили, чтобы они могли использоваться вместо ключевых слов algol ‘begin’ и ‘end’, что точно как они были позже использованы в языке Си.

Использование квадратных скобок (в качестве предлагаемой замены в вопросе) восходит еще дальше. Как уже упоминалось, семья Алгол повлияла на C. В Алголе 60 и 68 (C был написан в 1972 году и BCPL в 1966 году) квадратная скобка использовалась для обозначения индекса в массиве или матрице.

Поскольку программисты уже были знакомы с квадратными скобками для массивов в Algol и BCPL и фигурными скобками для блоков в BCPL, не было особой необходимости или желания изменить это при создании другого языка.

Обновленный вопрос включает в себя дополнение производительности для использования фигурных скобок и упоминает Python. Есть некоторые другие ресурсы, которые делают это исследование, хотя ответ сводится к «Это анекдотично, и то, к чему вы привыкли, это то, с чем вы наиболее продуктивны». Из-за различий в навыках программирования и знакомства с разными языками, их становится трудно объяснить.

Лучшее сравнение было бы между <> и begin / end которые были вариантами дня (горизонтальное пространство было драгоценным). Многие виртские языки были основаны на стиле begin и end стиле (Алгол (упомянутый выше), паскаль (многие знакомы с ним) и семья Модула).

Программисты C и Ratfor считают «начало» и «конец» громоздкими по сравнению с <и>.

) в качестве стенографии от начать

Для чего нужны скобки в программировании. Смотреть фото Для чего нужны скобки в программировании. Смотреть картинку Для чего нужны скобки в программировании. Картинка про Для чего нужны скобки в программировании. Фото Для чего нужны скобки в программировании

Обратите внимание на отсутствие фигурных скобок на макете IBM 2741!

Вы можете просмотреть и изучить исходный код на языке Си со страницы второго издания Unix (V2), чтобы получить представление о типичном стиле кодирования того времени.

Яркий пример, подтверждающий идею о том, что в то время программисту было достаточно легко набирать квадратные скобки, можно найти в исходном коде V2 / c / ncc.c :

Наблюдаемая связь между частотой и длиной называется законом Ципфа

. с той лишь разницей, что длина в вышеприведенном выражении заменяется / обобщается как скорость набора текста.

Источник

Скобки, используемые в Си и их цели

Извините, если раньше об этом спрашивали, но я новичок в C, и мне было интересно, если кто-то может помочь объяснить использование скобок () в следующем коде, я взял его из онлайн-урока и он работает нормально, но есть одна часть этого, я не понимаю.

> else (printf («Возраст старше 18 лет и старше 21 года»));

Из того, что я собрал, круглые скобки используются для содержания условий оператора if, а фигурные скобки используются для определения операции, которая следует за этим условием. За исключением вложенного условия else, выделенного жирным шрифтом, где за оператором else следуют круглые скобки, заключающие команду print.

Кто-нибудь может объяснить, почему это так?

7 ответов

Круглые скобки () (а также фигурные скобки <> ) могут появляться в нескольких разных контекстах, выполняя разные роли.

В то же время истинная ветвь if (age > 18) содержит несколько операторов, поэтому вам нужны фигурные скобки.

Это именно то, что вы наблюдаете в своем примере. Ваш

Без изменений в его значении.

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

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

Например, 3*(1+1) оценивается как 6, потому что сложение происходит до умножения, а умножение использует это значение в правой части.

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

Таким образом, следующее имеет смысл:

При условии отсутствия ошибки count будет инициализировано как 5 (количество напечатанных символов). Но это так же верно (хотя и избыточно), чтобы написать:

Но назначение не влияет на синтаксис, и следующие являются законными и эквивалентными.

Я подозреваю, что это опечатка. Любое выражение, включая одно в скобках, может быть введено в любое время. Скобки здесь имеют больше смысла и будут соответствовать остальной части кода, если отформатированы правильно.

Это законно, но абсолютно бесполезно, благодаря гибкой синтаксической системе C.

Это выражение является законным:

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

Похоже на опечатку: нет законной причины программирования использовать эти скобки. Но обратите внимание, что он прекрасно компилируется, потому что ничего не делает: (x) совпадает с x, поэтому включение printf (. ) в большее количество скобок допустимо, но ничего не меняет.

Таким образом, результат printf является выражением (поэтому printf() является выражением).

Выражение, заключенное в фигурные скобки, является выражением.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *