Как правильно ставить фигурные скобки в c
Перейти к содержимому

Как правильно ставить фигурные скобки в c

  • автор:

Arduino.ru


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

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

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

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

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

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

Основные способы использования фигурных скобок

Функции

void НазваниеФункции(тип данных аргумента)

Циклы

while (логическое выражение)

do < оператор(ы) >while (логическое выражение);

for (инициализация; условие окончания цикла; приращения цикла)

Условные операторы

if (логическое выражение) < оператор(ы) >else if (логическое выражение) < оператор(ы) >else

Контакты

Петрозаводск, пр. Ленина, 31 (IT-парк ПетрГУ), кабинет 211.

Замечания по содержимому и работе сайта принимаются по адресу webmaster@acm.petrsu.ru.

Последние обновления

11.10.2023

8.07.2023

9.04.2023

27.11.2022

13.10.2022

15.11.2021

3.03.2021

27.01.2021

14.11.2020

3.09.2020

Некоторые синтаксические ошибки в C++

1) Точки с запятой

Каждое действие в программе на C++ завершается символом ‘;‘. Стоит внимательно проверить, стоят ли точки запятой в конце строк с командами:
cin >> a;
b=a*a;
if(a>1)
b=b+a;
cout >

В случае отсутсвия точки с запятой компилятор сообщит, что не хватает символа ‘;‘ перед следующей за ней командой.

Следующий код ошибочен, так как точка с запятой означает конец текущей команды. В таком случае условный оператор не выполнит ничего, а действия в фигурных скобках будут выполняться вне зависимости от условия.
if(a>1);
b=b+a;
cout >

2) Правильность написания операторов, типов данных и т.д.

Опечатки случаются. Если команда написана неверно, компилятор сообщит, что это неизвестное ему наименование оператора, типа данных и т.д.

3) Правильность использования команд

Лучше всегда сверяться с образцом использования команд. На сайте есть справочник по C++, в котором указаны базовые операторы и примеры их использования.

4) Определены ли все используемые переменные?

Если не инициализировать (объявить) переменную до операций с ней, компилятор сообщит, что данная переменная не инициализирована.

Неправильно:
cin >> a;
int a;

Правильно:
int a;
cin >> a;

5) Правильность написания имён переменных

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

6) Фигурные скобки и другие парные символы

Символы фигурных скобок ‘‘ и ‘>‘ в C++ служат для объединения операций в блоки. Как и все остальные скобки и кавычки, эти скобки должны быть парные, т.е. для каждой открывающей скобки в коде должна иметься закрывающая.
Не являющаяся синтаксической, но всё же связанная с синтаксисом ошибка — отсутствие сразу пары фигурных скобок. Операторы в C++ выполняют ровно одну операцию, указанную после них. Заключая группу операций в скобки, вы объединяете их в один блок, который выполнится целиком после оператора. В следующем кода под условием оказывается только строчка с присваиванием, а вывод числа будет срабатывать вне зависимости от условия:
if(a>1)
b=b+a;
cout

Как правильно ставить фигурные скобки в c

Сообщений всего: 3291
Дата рег-ции: Янв. 2010

Выделено в отдельную тему из темы «Среда программирования GameLOGO»
а зачем фигурные скобки?
(раз уж тема популярная) лет 50 назад когда Си придумывали — они были нужны: и для экономии памяти и чтобы компилятор быстрее работал.
А сейчас?

Разве не логичьнее напмсать

повторить 10 раз
.
.
.
повторять до этого места.

Отправлено: 05 Сентября, 2010 — 10:57:04

Сообщений всего: 895
Дата рег-ции: Май 2006

Перенесено из темы «Среда программирования GameLOGO»
Операторные скобки в явном виде присутствуют в классическом Лого. Полностью от них отказываться и перейти к неявному виду нет особого резона.

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

Отправлено: 05 Сентября, 2010 — 17:07:57

Сообщений всего: 3291
Дата рег-ции: Янв. 2010

Но ведь это для детей, а не для будущих Сишников?
подсказка: В моем языке было так [. <(. )>] или так (<. []. >)
МО США пишет на Ада, большинство офисных компьютеров- Wintel + VB, почти вся российская бухгалтерия- 1С. Где тут скобки то фигурные?

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

Отправлено: 05 Сентября, 2010 — 20:13:38

Сообщений всего: 895
Дата рег-ции: Май 2006

Перенесено из темы «Среда программирования GameLOGO»
Языки, имеющие Си-образный синтаксис, являются наиболее распространенными и востребованными и их рано сбрасывать со счетов, если вообще стоит.

В авторитетном TIOBE Programming Community Index (янв. 2010) на первых местах

Java, C, C++, PHP (все имеют си-образный синтаксис)

на 5-м месте Visual Basic

еще в десятку индекса от TIOBE с си-образным синтаксисом входят C#, Perl, Objective-C.

У Велтона Visual Basic на 10-м месте.

Отправлено: 05 Сентября, 2010 — 21:46:40

Сообщений всего: 3291
Дата рег-ции: Янв. 2010

от круглых скобок отказались, а от фигурных не можем?

опрос был повидимомому среди профессиональных программистов. А интересно что сказалибы дети- для них фигурная скобка- только потому что папа сказал её ставить.

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

я уж не говорю про вербальное программирование, к этому ведь постепенно идем?
«повторяй десять раз левая фигурная скобка»- так что-ли?

Отправлено: 05 Сентября, 2010 — 22:33:24

Сообщений всего: 895
Дата рег-ции: Май 2006

Перенесено из темы «Среда программирования GameLOGO»
Видимо, Вы не совсем поняли предыдущие ответы. В них объяснены причины существования фигурных скобок в GameLogo. Отказываться от них никто не собирается. И на это есть ряд очень веских причин.

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

Простите, но суть Вашего последнего сообщения я уловить не смог.

Отправлено: 05 Сентября, 2010 — 22:56:57

Сообщений всего: 3291
Дата рег-ции: Янв. 2010

Ставить ли фигурные скобочки?

У Срауструпа в примерах ничего по этой теме неясно — в одних случаях он использует фигурные скобки после условия, даже если нужно выполнить всего одно действие, в других нет.
Красота или лаконичность?

  • Вопрос задан более трёх лет назад
  • 2472 просмотра

Комментировать
Решения вопроса 3

aminought

Правилом хорошего тона считается постановка фигурных скобок в любом случае. Для вдохновения можете прочитать вот эту статью: Исключительная красота исходного кода Doom 3

Ответ написан более трёх лет назад
Нравится 7 2 комментария

Daniro_San

Даниил Демидко @Daniro_San Автор вопроса
Спасибо, я так и думал но колебался между красотой и лаконичностью.

Adamos

Даниил Демидко: лаконичность в С++ — это ни в коем случае не экономия символов!
Лаконичность в С++ — это создание дополнительного уровня черновой работы в классе, работу которого (класса) в алгоритме потом можно будет читать, как роман. Потому что весь очевидный код убран в методы, имеющие очевидные названия.

Vitaly @vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)

Ответ на этот вопрос не так однозначен. Существуют стандарты оформления кода, согласно которым должен быть отформотирован весь исходный код. Это актуально и для коммерческих компаний и для открытых проектов. Поэтому «хорошо» или «плохо» сказать нельзя, нужно говорить «соотвествует стандарту или нет». Можете для своих личных проектов выбрать какой-нибудь стандарт кодирования и следовать ему. Вот пример стандарта: https://wiki.qt.io/Coding_Conventions . Помимо этого существуют программы, которые позволяют отформатировать весь код согласно набору правил (astyle, clang-format, uncrustify etc.). Использовать их далеко не всегда удобно, так как зачастую форматирование может быть не стандартным чтобы повысить читабельность кода, но в общем случае нормально.

Что касается вашего примера, я предпочитаю не ставить лишние скобки для тела if в одну инструкцию:

// OK if (a > 3) ++a;

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

if (a > 3) ++a; // Как поставить бряку на «++a»?

Что касается циклов, то с for лучше всегда ставить скобки, т.к. некоторые IDE в режиме отладки вроде VS2008 (а возможно и более старших версий) не умеют заходить в тело однострочного цикла без скобок.

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

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