Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73

Как разобраться с принадлежностью фигурных скобок?

03.03.2011, 12:09. Показов 6494. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учусь писать программы на Microsoft Visual Studio 2008 Express edition. Иногда бывает трудно понять, к какой открывающей/закрывающей фигурной скобке принадлежит та или иная фигурная скобка. Думаю, любой начинающий программист сталкивался с этой проблемой. Ведь порою трудно бывает разобраться с массой фигурных скобок, особенно если они разположены в конце кода! Есть ли в MVS 2008 Ee фича, при помощи которой можно было бы узнать принадлежность скобок? Допустим, нажал на какую-нибудь интересующую скобку, а оболочка сама определила бы её принадлежность, и переместила бы курсор к соответстующей скобке?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2011, 12:09
Ответы с готовыми решениями:

Как в eclipse настроить расположение фигурных скобок?
Как в eclipse настроить расположение фигурных скобок? То есть я хочу чтобы классы и методы выглядели как в Visual Studio по умолчанию. То...

Как в Visual Studio настроить расположение фигурных скобок по умолчанию?
Доброго времени суток! Заинтересовал такой вопрос. Visual Studio автоматически расставляет фигурные скобки в вертикальную линию-одна под...

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

9
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
03.03.2011, 12:19
Используйте кнопочки tab и пробел. И ставьте фигурные скобочки друг под дружкой. А блок внутри них отделяйте к примеру tab'ом. Программа будет расти вправо, зато все видно.

upd1. Есть дополнительный пакет - visual assist X. Сам его использую, он помогает, да, но для новичка бы не советовал. Убивает всю соль программирования "на листе" в хлам. И ничего при этом не запоминается.
0
6 / 6 / 3
Регистрация: 28.02.2011
Сообщений: 20
03.03.2011, 12:34
Я не помню, как там в ExpressEdition, но в Professional, если поставить курсор (каретку) рядом с фигурной скобкой, то она выделится серым. При этом ее вторая половина будет выделена также - остается только ее, выделенную найти)
http://pics.livejournal.com/br... c/0000aw44
0
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
03.03.2011, 14:56  [ТС]
Цитата Сообщение от zulkis
Используйте кнопочки tab и пробел. И ставьте фигурные скобочки друг под дружкой. А блок внутри них отделяйте к примеру tab'ом. Программа будет расти вправо, зато все видно.
В маленьких программах так и делаю, но вот что делать в больших программах? В больших программах порою бывает невозможно разобраться, какая скобка к какой относится. Нет ли в MVS 2008 Ее хотя бы самой простенькой фичи, облегчающую эту задачу? Вроде, скажем, минуса в квадратике, сворачивающим какую-нибудь функцию.

Добавлено через 14 минут
Цитата Сообщение от Chaot
Я не помню, как там в ExpressEdition, но в Professional, если поставить курсор (каретку) рядом с фигурной скобкой, то она выделится серым. При этом ее вторая половина будет выделена также - остается только ее, выделенную найти)
Всем спасибо за ответы, вообще-то нашел решение. Оказывается, эта проблема очень хорошо решена в Notepad++, наводишь курсор на фигурную скобку, она очень заметно высвечивается кроваво-красным цветом, сразу бросающимся в глаза (в AkelPad, встроенной в Тотал-Коммандер, высвечивается не столь заметным темно-красным, бордовым цветом). Вдобавок к этому можно нажать на Ctrl + B, и курсор сам перепыгнет к нужной скобке! А если нажать еще раз, перепыгнет обратно. Вот за это спасибо разработчикам NotePad++, облегчили жизнь.
0
 Аватар для legend
29 / 28 / 7
Регистрация: 17.11.2010
Сообщений: 152
03.03.2011, 15:21
у меня стоит вижуал 2010 там уже все по стандарту так выделяет..
0
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
03.03.2011, 16:42  [ТС]
У меня компьютер слабенький, 2010 -й не потянет, только 2008-й может, а то писал бы на 2010.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
03.03.2011, 16:55
AdPotam, когда ставите закрывающую скобку, она и открывающая выделяются жирным шрифтом. Чтобы найти таким макаром парную скобку, достаточно ту, что есть, удалить и заново поставить, и ищите, где ещё что жирным выделилось...
1
19 / 19 / 2
Регистрация: 30.11.2010
Сообщений: 164
03.03.2011, 17:05
попробуйте использовать Notepad++, выставив стиль С++
сам использую, очень удобно
0
 Аватар для Leningradeс
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
03.03.2011, 17:19
У меня сереньким цветом на Визуле 2010 высвечивается, а вобще тут правильно сказали что ставить следует друг над другом, тем более если свой код то и так видно где да что.
Есть такая вот штука, конечно не по фиг.скобкам, но все же по улучшению понимания и чтения кода.

Соглашение об идентификаторах в программе.
Данный документ предназначен для изложения основных достоинств о формальном формировании идентификаторов.
При введении нового идентификатора в программу, хороший программист учитывает следующие факторы:
1. мнемоническое значение: идентификатор должен легко запоминаться
2. смысловое значение: роль идентификатора должна быть ясна из его названия
3. преемственность: часто рассматривается как чисто эстетическая идея, но все же, похожие объекты должны иметь похожие идентификаторы.
4. скорость решения: придумывание, ввод и редактирование идентификатора не должны занимать слишком много времени, идентификатор не должен быть слишком длинным.
Выбор имен может стать задачей, поглощающей лишнее время у разработчика. Часто идентификатор, удовлетворяющий одним условиям противоречит другим. Кроме того, поддержать преемственность имен иногда бывает достаточно трудно.
Преимущества Соглашений
Данные соглашения об идентификаторах обеспечивают удобную технологию для формирования имен, удовлетворяющих вышеупомянутым критериям. Основной идеей является передача основных характеристик идентификатора как части в его названии. Эта простая идея, безусловно, требует уточнения (что, например, предполагается под "критерием", что делать если они(критерии) не уникальны?). Однако, давайте сначала оговорим общие положения.
Названия будут мнемоническими в строго определенном смысле: идентификатор будет очевиден для того, кто помнит название характеристики или принцип его построения.
Названия имеют смысловое значение: должна быть возможность отобразить любое название в наборе характеристик.
Названия будут непротиворечивы, так как произведены теми же самыми правилами.
Построение названий будет производится механически, следовательно быстро.
Выражения в программе могут быть проверены на преемственность методами, похожими на обычные измерения свойств объекта.
Правила обозначения
Предлагаются следующие правила обозначения:
1) Описание характеристики идентификатора входит в идентификатор. Удобной пунктуацией является указание характеристики перед названием, с разделением их (началом названия с большой буквы в Cи, например: rowFirst: row - характеристика, Fist - название).
2) Название отличают идентификаторы, имеющие один и тот же тип и существующие в одном контексте. Контекстом может являться как система в целом, так и блок, процедура, структура данных в зависимости от среды программирования. Если существует стандартное название, оно должно быть использовано. Выбор должен быть максимально простым, так как требуется уникальность идентификатора только в пределах определенного контекста.
3) Простые типы названы короткими тегами, которые выбраны программистом. Такие теги должны быть интуитивно понятны большинству программистов.
Тег должен быть коротким для выполнения четвертого условия (фактора), введенного нами выше. Названия составных типов должны включать имена составляющих. Существуют стандартные схемы построения указателя и массива. Другие типы данных могут быть определены произвольно. Например префикс p используется для указателей. В принципе, соглашения могут быть обогащены в соответствии с новыми схемами типов данных. Однако стандартные конструкции могут послужить еще долгое время. Следует отметить что поля структур не должны участвовать в формировании префикса, так как в этом случае конструкции более чем с двумя полями были бы просто не читаемыми. Более важна передача в префиксе для структуры ее сути, зависимой не от набора полей, а от способа ее использования.
Я рекомендую использование нового тега для каждой новой структуры данных. Тег с некоторой пунктуацией (первая или все заглавные буквы) тоже может и должен использоваться как имя типа для структуры. Использование новых тегов так же оправдано в тех случаях, когда это влияет на удобочитаемость программы.
Мой опыт показывает, что теги более трудны для выбора по сравнению с названиями. Когда необходим новый тег, первым желанием бывает использовать короткий, наглядный, общий и универсальный термин как имя типа. Это - почти всегда ошибка. Нельзя резервировать наиболее полезные термины и фразы для частных целей конкретной задачи или даже версии. Как правило любой универсальный термин одинаково применим ко многим типам, даже в той же самой программе.
Обратите внимание, что, как правило, очевидный выбор для названия, является и самым правильным. Причиной этому является то, что название должно быть уникально в рамках значительно меньшего по сравнению с тегом контекста. Так как названия, как правило, не участвуют в формировании других названий, им не требуется быть особенно короткими.
Например мы создаем графическую программу. В данном случае у нас существует тип данных "цвет". Естественным желанием является сделать префикс color для обозначения цвета. Однако при детальном рассмотрении может оказаться, что применение термина color более удобно в приложении к названию, например: LineColor. Для обозначения цвета более выгодным является сокращение, например clr. clrDefault.
Обозначение для упрощения написания.
Правильное формирование идентификаторов должно позволить нескольким программистам независимо создавать программу для решения одной задачи. Каждый программист должен знать правила именования, иначе будет невозможно организовать взаимодействие. Такой эксперимент бесполезен при рассмотрении крупного проекта, однако представляет из себя четкую цель. Результатом является возможность понимать и исправлять программу, написанную другим человеком. Такой результат достижим при надлежащем использовании общеопределенных соглашений. Именно поэтому процесс документирования тегов крайне важен.
Обозначение для процедур.
К сожалению, простое понятие квалифицированных напечатанных тэгов не работает для названий процедуры. Некоторые процедуры не получают параметров или не возвращают значения. Контексты названий процедур имеют тенденцию быть большими. Следующий набор специальных правил для процедур может работать весьма удовлетворительно:
1) Названия процедур должны отличаться от других названий пунктуацией, например, всегда начинаясь с заглавной буквы (тогда как тэги характеристик других идентификаторов пишутся строчными буквами).
2) Начинайте название процедуры с тега типа возвращаемого значения, если таковое существует.
3) Выразите действие процедуры в одном или двух словах. Слова должны быть разделены пунктуацией для более простого разбора читателем (обычный метод заключается в использовании заглавных инициалов для каждого слова).
4) В конец названия можно добавить список тегов некоторых или всех формальных параметров, если есть смысл.
Последний пункт противоречит более ранним замечаниям по описанию структуры данных. Если параметры процедуры будут изменены, то это повлечет за собой изменение имени и всех точек вызова процедуры. Однако такое изменение может быть использовано для проверки того, что все точки вызова измененной процедуры будут также выполнены корректно. В случае же со структурами данных, добавление или изменение поля не оказывает решающего влияния на использование типа данных. В случае если процедура имеет один или два параметра использование тегов упростит выбор имени.
1. Некоторые примеры для названий процедуры
Описание Название
InitSy Берет sy как его параметр и инициализирует его.
OpenFn fn - параметр. Процедура "откроет" fn. Никакое значение не будет возвращено.
FcFromBnRn Возвращает fc, для переданной пары Bn,Rn (Названия не передают нам информации о типе данных для Fc, Rn, Bn).
Далее приведен список стандартных конструкций, X и Y замещают произвольные теги.

2. Стандартные конструкции типа
pX Указатель на X.
dX Различие между двумя образцами типа X. X + dX имеет тип X.
cX Индекс образцов типа X.
mpXY Массив Ys, индексированного по X.
rgX Массив Xs.
iX Индекс массива rgX.
grpX Группа Xs, сохраненных последовательно. Используется когда X элементы имеют переменный размер и не применима стандартная индексация. Элементы X индексируются способом, отличным от обычного.
bX относительное смещение к типу X. Используется для обращений к полям переменной длины в структурах. Смещение может быть указано в байтах или словах, в зависимости от вида индексации.
cbX Размер X в байтах.
cwX Размер X в словах.
C конструкциями такого типа существует одна проблема. Например, является ли pfc собственно тегом или это указатель на fc. Ответ на такой вопрос может дать только человек, знакомый с принятой в рамках контекста системой именования.
Далее приведены стандартные имена. X замещает любой тег типа, записанный в нижнем регистре.

3. Стандартные спецификаторы
XFirst первый элемент в упорядоченном наборе X
XLast последний элемент в упорядоченном наборе X
XLim строгий верхний предел набора значений X. Границей цикла должно быть X < XLim.
XMax строгий верхний предел набора значений X. Если X начинается с 0, то XMax равен числу различных значений X.
XT временное значение X.

4. Некоторые базовые типы
f Флажок (Булева переменная, логическое значение). Используемое название должно относиться к истинному состоянию. Исключение: константы fTrue и fFalse.
w Машинное слово
ch Символ, обычно в тексте ASCII.
b Байт
sz Указатель на строку терминированную нулем (ASCIZ)

5. Базовые префиксы типов данных Win32
g_ префикс для глобальной переменной
m_ префикс для переменной класса
c константа (префикс для типа) const
l длинный (префикс для типа) far, long
p указатель (префикс для типа) *
ch char char
b байт BYTE, unsinged char
w 16-битное слово (2 байта) WORD, unsigned short
dw 32-битное слово (4 байта) DWORD, unsigned long
n,i целое int
flt с плавающей точкой float
dbl с плавающей точкой double
f логическое BOOL
sz ASCIZ строка char[]
psz ASCIZ строка char *
pcsz константа ASCIZ строка const char *
pv произвольный указатель void *
ppv указатель на произвольный указатель void **
h хендл HANDLE, void *
unk OLE объект IUnknown
punk указатель на OLE объект IUnknown *
disp Automation объект IDispatch
pdisp указатель на Automation объект IDispatch *
0
2 / 2 / 0
Регистрация: 29.11.2010
Сообщений: 73
03.03.2011, 17:39  [ТС]
Цитата Сообщение от easybudda
AdPotam, когда ставите закрывающую скобку, она и открывающая выделяются жирным шрифтом. Чтобы найти таким макаром парную скобку, достаточно ту, что есть, удалить и заново поставить, и ищите, где ещё что жирным выделилось...
Да, действительно, так и есть! Что-то я не обратил внимания, наверное, из-за того, что печатаю смотря на клавиатуру, жму энтер, а лишь потом подымаю глаза.
Цитата Сообщение от Valerko
попробуйте использовать Notepad++, выставив стиль С++
сам использую, очень удобно
Удобно, согласен. Я об этом как раз написал вверху, достаточно нажать Ctrl+В и перепрыгнул. Но и в 2008 экспрессе неплохо, мне хватит, спасибо ИзиБудде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.03.2011, 17:39
Помогаю со студенческими работами здесь

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

Баланс фигурных скобок в файле
Вообщем нужно прочитать текст (любая программа, в файле name.txt) из файла и проверить баланс фигурных скобок. Всё проходит нормально, но...

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

Перегрузка фигурных скобок / множественное присваивание
Хотелось бы узнать, как работает перегрузка в векторах при определении его вот таким образом: vector&lt;int&gt; a={0,1,2,3,4}; Как...

Стиль кода: положение фигурных скобок
ребята кто пишет вот так if () { } назовите хоть одно преимущество такой записи перед if()


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru