blob: 8b12ee0e067a6e728b6da1c8683a0993f85fb37a [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Учебный курс по внесению изменений и переходам в файлах исходных кодов на языках C/C++</TITLE>
<meta name="DESCRIPTION" content="Short tutorial that demonstrates editing
and navigating C and C++ source files in NetBeans IDE">
<meta name="author" content="Susan Morgan"><!--Optional tag-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
<a name="top"></a>
<h1>Внесение изменений и переходы в файлах исходных кодов на C/C++ - учебный курс по среде IDE NetBeans</h1>
<!-- START INTRO -->
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p><em>Составитель <i>Энн Райс (Ann Rice)</i>, редактор <i>Сьюзан Морган (Susan Morgan)</i> <br> Март 2013 г.</em> [Номер редакции: V8.0]
</div>
<p>В этом кратком практическом руководстве описываются некоторые возможности навигации по исходным файлам и редактирования этих файлов в проекте C или C++ в среде IDE NetBeans.</p>
<!-- END INTRO -->
<h3>Содержание</h3>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.4 и 8.0" class="stamp" src="../../../images_www/articles/74/netbeans-stamp-80-74.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.4 и 8.0" />
<table class="b-none vatop" cellpadding="0" cellspacing="0">
<tr>
<td class="hyphen"></td>
<td><a href="#requirements" title="Требования">Требования</a></td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#project" title="Создание примера проекта"></a>Создание примера проекта</td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#editing" title="Изменение исходных файлов на языке C и C++">Изменение исходных файлов на языке C и C++</a></td>
</tr>
<!-- <table cellspacing="0" cellpadding="0">
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#formatting" title="Setting the Formatting Style">Setting
the Formatting Style</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#folding" title="Folding Blocks of Code in C and C++ Files">
Folding Blocks of Code in C and C++ Files</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href=#markoccurrences" title="Using Semantic Highlighting">Using
Semantic Highlighting</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#completion" title="Using Code Completion">Using Code
Completion</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#templates" title="Using Code Templates">Using Code Templates</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#pairs" title="Using Pair Completion">Using Pair
Completion</a></td>
</tr>
</table>
-->
<tr>
<td class="hyphen"></td>
<td><a href="#navigating" title="Переход по исходным файлам на C и C++">Переход по исходным файлам на C и C++</a></td>
</tr>
<!-- <table cellspacing="0" cellpadding"0">
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#classes" title="Using the Classes Window">Using the
Classes Window</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#navigator" title="Using the Navigator Window">Using the Navigator
Window</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#findusages" title="Finding Class, Method, and Field
Usages">Finding Class, Method, and Field Usages</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#callgraph" title="Using the Call Graph">Using the Call
Graph</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#classes" title="Using Hyperlinks">Using Hyperlinks</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#include" title="Using the Include Hierarchy">Using the
Include Hierarchy</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#type" title="Using the Type Hierarchy">Using the
Type Hierarchy</a></td>
</tr>
</table>
-->
<tr>
<td class="hyphen"></td>
<td><a href="#nextsteps" title="Что дальше?">Следующие действия</a></td>
</tr>
</table>
<h2><a NAME="requirements"></a>Требования</h2>
<p><b>Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.</b> </p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Программное обеспечение или материал</th>
<th class="tblheader" scope="col">Требуемая версия</th>
</tr>
<tr>
<td class="tbltd1">IDE NetBeans</td>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html"> версия 7.4 или 8.0 с подключаемым модулем NetBeans C/C++</a></td>
</tr>
<tr>
<td class="tbltd1">Комплект для разработчика на языке Java (JDK)</td>
<td class="tbltd1"><a href="http://java.sun.com/javase/downloads/index.jsp">версия 7 или 8</a></td>
</tr>
</tbody>
</table>
<br>
<p>Ознакомьтесь с разделами <a href="../../../community/releases/80/install.html">Указания по установке среды IDE NetBeans 8.0</a> и <a HREF="../../../community/releases/80/cpp-setup-instructions.html">Настройка среды IDE NetBeans для C/C++/Фортрана</a><br> для получения сведений о загрузке и установке требуемого программного обеспечения.</p>
<p><b>Примеры проектов</b>
</p>
<p>Чтобы поэкспериментировать с проектами, выберите в среде IDE команду &quot;Файл&quot; &gt; &quot;Новый проект&quot;, а затем откройте категорию &quot;Примеры&quot; и подкатегорию &quot;C/C++&quot;. В среде IDE представлено несколько примеров проектов на языке C и C++, которые помогут ознакомиться с функциями среды.
</p>
<h2><a name="project"></a>Создание примера проекта</h2>
<p>Подключаемый модуль NetBeans IDE с C/C++ предоставляет расширенные возможности редактирования для изменения исходного кода. Для наглядного рассмотрения этих функций в этом учебном курсе используется проект <tt>Quote</tt>. Если проект еще не создан, выполните следующие действия:</p>
<ol>
<li>Выберите команду &quot;Файл&quot; &gt; &quot;Новый проект&quot;.</li>
<li>Разверните в мастере создания проекта категорию &quot;Примеры&quot; и выберите подкатегорию &quot;C/C++&quot;.</li>
<li>Выберите проект <tt>Quote</tt>. Нажмите кнопку &quot;Далее&quot;, а затем нажмите кнопку &quot;Готово&quot;.
</li>
</ol>
<h2><a name="editing"></a>Изменение исходных файлов на языке C и C++</h2>
<h3><a name="formatting"></a>Установка стиля форматирования</h3>
Окно &quot;Параметры&quot; по умолчанию используется для настройки стиля форматирования проектов на языке C и C++.
<ol>
<li>Выберите команду &quot;Сервис&quot; &gt; &quot;Параметры&quot;.</li>
<li>Нажмите элемент &quot;Редактор&quot; на верхней панели окна.</li>
<li>Выберите вкладку &quot;Форматирование&quot;.</li>
<li>Выберите в раскрывающемся списке &quot;Язык&quot; язык C++, поскольку в проекте Quote используется язык C++.
</li>
<li>Выберите в раскрывающемся списке &quot;Стиль&quot; необходимый стиль.<br> <img alt="Снимок вкладки &apos;Стили форматирования&apos;" src="../../../images_www/articles/74/cnd/navigating-editing/formatting_style.png">
</li>
<li>Измените свойства стиля требуемым образом.</li>
</ol>
<h3><a name="folding"></a>Свертывание блоков кода в файлах C и C++</h3>
<p>
Для некоторых типов файлов можно использовать функцию свертывания кода, чтобы свернуть блоки кода для отображения в редакторе исходного кода только первой строки блока.
</p>
<ol>
<li>Откройте в проекте приложения <tt>Quote_1</tt> папку &quot;Source Files&quot; и дважды щелкните файл <tt>cpu.cc</tt>, чтобы открыть его в редакторе исходного кода.
</li>
<li>Щелкните в левом поле значок свертывания (небольшое поле со знаком &quot;-&quot;), чтобы свернуть код одного из методов.</li>
<li>Наведите курсор на символ <tt>{...}</tt> справа от свернутого блока для отображения кода блока. <br> <img alt="Снимок свернутого кода в редакторе исходного кода" class="b-all margin-around" src="../../../images_www/articles/72/cnd/navigating-editing/code_folding.png">
</li>
</ol>
<h3><a name="markoccurrences"></a>Использование семантического выделения</h3>
<p>Параметр можно настроить таким образом, чтобы при щелчке по классу, функции, переменной или макросу выделялись все вхождения этого класса, функции, переменной или макроса в текущем файле.
</p>
<ol>
<li>Выберите команду &quot;Сервис&quot; &gt; &quot;Параметры&quot;.</li>
<li>Нажмите элемент &quot;Редактор&quot; на верхней панели окна.</li>
<li>Выберите вкладку &quot;Выделение&quot;.</li>
<li>Убедитесь, что все флажки установлены.</li>
<li>Нажмите кнопку &quot;ОК&quot;.</li>
<li>Обратите внимание, что в файле <tt>customer.cc</tt> проекта <tt>Quote_1</tt> имена методов выделены жирным.</li>
<li>Щелкните вхождение класса <tt>Customer</tt>.
</li>
<li>Все вхождения класса <tt>Customer</tt> в файле будут выделены желтым цветом. В правом поле также отображаются отметки, указывающие расположение вхождений в файле. Отметки позволяют оценить число вхождений в файле без прокручивания. Чтобы перейти ко вхождению, следует щелкнуть необходимую отметку.<br> <img alt="Снимок выделенного кода в редакторе исходного кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/highlighting1.png">
</li>
<li>Для легкого перехода между вхождениями нажимайте клавиши Alt+Down, чтобы перейти к следующему вхождению, и Alt+Up, чтобы перейти к предыдущему вхождению.</li>
<li>Откройте файл <tt>customer.h</tt>, расположенный в папке &quot;Headers&quot;, и обратите внимание, что имена методов снова выделены жирным.<br> <img alt="Снимок файла с выделенными методами в редакторе исходного кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/highlighting2.png">
</li>
</ol>
<h3><a name="completion"></a>Работа с автозавершением кода и документированием</h3>
<p>
Среда IDE имеет функцию динамического автозавершения кода на языке C и C++, благодаря которой при вводе одного или нескольких символов выводится список возможных классов, методов, переменных и т.д., которые можно использовать для завершения выражения.</p>
<p>Также в среде IDE выполняется динамический поиск документации классов, функций, методов и пр., а также отображение документации во всплывающем окне.</p>
<ol>
<li>Откройте файл в проекте <tt>Quote_1</tt> <tt>quote.cc</tt>.</li>
<li>Введите в первой пустой строчке файла <tt>quote.cc</tt> заглавную латинскую букву &quot;C&quot; и нажмите сочетание клавиш CTRL+ПРОБЕЛ. Появится окно автозавершения кода с небольшим списком, включающем классы <tt>Cpu</tt> и <tt>Customer</tt>. Также отобразится окно документации с сообщением &quot;Документация не найдена&quot;, поскольку исходный код проекта не содержит документации по коду.</li>
<li>Разверните список элементов, снова нажав CTRL+ПРОБЕЛ. <br> <img alt="Снимок поля автозавершения кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/code_completion1.png">
</li>
<li>Используйте клавиши со стрелками или кнопки мыши для выделения стандартной функции библиотеки (например, <tt>calloc</tt>) из списка. В окне документации появится страница системной справки для этой функции, если эта страница доступна для среды IDE. <br> <img alt="Снимок документации автозавершения кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/code-completion-documentation.png">
</li>
<li>Выберите класс <tt>Customer</tt> и нажмите ENTER.
</li>
<li>Заполните новый экземпляр класса <tt>Customer</tt>, введя текст <tt>andrew;</tt>. Введите в следующей строке латинскую букву <tt>a</tt> и нажмите CTRL+ПРОБЕЛ. Появится окно автозавершения кода со списком возможных элементов с начальной буквой <tt>a</tt>, например аргументы метода, поля класса и глобальные имена, доступные в текущем контексте.<br> <img alt="Снимок поля автозавершения кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/code_completion2.png">
</li>
<li>Дважды щелкните параметр <tt>andrew</tt>, чтобы принять его и ввести после него точку. Нажмите Ctrl-пробел, и будет выведен список общедоступных методов и полей класса <tt>Customer</tt>.<br> <img alt="Снимок поля автозавершения кода" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/code_completion3.png">
</li>
<li>Удалите добавленный код.</li>
</ol>
<h3><a name="documentation"></a>Добавление документации к исходному коду</h3>
<p>Можно добавить в код комментарии для автоматического создания документации к функциям, классам и методам. Среда IDE распознает комментарии с синтаксисом Doxygen и автоматически создает документацию. Также среда IDE может автоматически создавать блок комментариев для документирования функции под комментарием.</p>
<ol>
<li>Наведите курсор в файле <tt>quote.cc</tt> на строку 75 или на строку, расположенную выше. <br> <tt>int readNumberOf(const char* item, int min, int max) {</tt>
</li>
<li>Введите косую черту и две звездочки, а затем нажмите ENTER. Редактор вставляет комментарий, отформатированный по синтаксису Doxygen, для класса <tt>readNumberOf</tt>. <br> <img alt="Снимок автоматически созданных комментариев Doxygen" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/doxygen_comment.png">
</li>
<li>Добавьте текст описания в каждую строку аннотации @param и сохраните файл. <br> <img alt="Снимок отредактированных комментариев Doxygen" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/doxygen_comment_edited.png">
</li>
<li>Щелкните класс <tt>readNumberOf</tt> для выделения его желтым и щелкните одну из отметок вхождений справа для перехода к области использования класса.
</li>
<li>Щелкните класс <tt>readNumberOf</tt> в строке, к которой выполнен переход, и нажмите сочетание клавиш CTRL+SHIFT+ПРОБЕЛ для отображения документации, добавленной для параметров.<br> <img alt="Снимок отображенной документации Doxygen" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/doxygen_displayed.png">
</li>
<li>Щелкните в любом месте файла, чтобы закрыть окно документации, а затем щелкните класс <tt>readNumberOf</tt> повторно.</li>
<li>Выберите &quot;Исходный код&quot; &gt; &quot;Показать документацию&quot;, чтобы снова открыть окно документации для класса.</li>
</ol>
<h3><a name="templates"></a>Использование шаблонов кода</h3>
<p>В редакторе исходного кода существует набор настраиваемых шаблонов кода со стандартными фрагментами кода на C и C++. Можно создать полный фрагмент кода путем ввода его сокращения и нажатия клавиши Tab. Например, в файле <tt>quote.cc</tt> проекта <tt>Quote</tt>:
</p>
<ol>
<li>Введите <tt>uns</tt> с последующим нажатием клавиши Tab, и <tt>uns</tt> развернется до <tt>unsigned</tt>.</li>
<li>Введите <tt>iff</tt> с последующим нажатием клавиши Tab, и <tt>iff</tt> развернется до <tt>if (exp) {}</tt>.</li>
<li>Введите <tt>ife</tt> с последующим нажатием клавиши Tab, и <tt>ife</tt> развернется до <tt>if (exp) {} else {}</tt>.
</li>
<li>Введите <tt>fori</tt> с последующим нажатием клавиши Tab, и <tt>fori</tt> развернется до <tt>for (int i = 0; i &lt; size; i++) { Object elem = array[i];</tt>.</li>
</ol>
<p class="tips">Чтобы просмотреть все доступные шаблоны кода, изменять их, создавать собственные или выбрать другой ключ для расширения шаблонов кода:</p>
<ol>
<li>
Выберите команду &quot;Сервис&quot; &gt; &quot;Параметры&quot;.
</li>
<li>В диалоговом окне 'Параметры' щелкните 'Редактор' и щелкните вкладку 'Шаблолны кода'.
</li>
<li>В раскрывающемся списке &quot;Язык&quot; выберите необходимый язык.<br> <img alt="Моментальный снимок диалогового окна &apos;Параметры&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/code_templates.png"></li>
</ol>
<h3><a name="pairs"></a>Подстановка парных символов</h3>
<p>При редактировании исходных файлов на языках C и C++ редактор исходного кода выполняет &quot;интеллектуальную&quot; подстановку парных символов, например кавычек, круглых и квадратных скобок. При вводе одного из символов редактор исходного кода автоматически подставляет закрывающий символ.
</p>
<ol>
<li>В проекте <tt>Quote_1</tt> поместите курсор в пустую строку 115 файла <tt>module.cc</tt> и нажмите клавишу Return для добавления новой строки.
</li>
<li>Введите <tt>enum state {</tt> и нажмите ENTER. Закрывающая фигурная скобка и точка с запятой будут добавлены автоматически, а курсор будет размещен в строке между скобками.
</li>
<li>Введите <tt>invalid=0, success=1</tt> в строке в квадратных скобках для завершения перечисления.
</li>
<li>В строке после закрывающей фигурной скобки <tt>};</tt> перечисления введите <tt>if (</tt> закрывающая круглая скобка добавляется автоматически, и курсор оказывается внутри скобок).</li>
<li>Введите <tt>v==null</tt> в круглых скобках. Затем введите <tt> {</tt> и добавьте новую строку после правой круглой скобки. Закрывающая квадратная скобка будет добавлена автоматически. </li>
<li>Удалите добавленный код.</li>
</ol>
<h3><a name="finding"></a>Поиск текста в файлах проекта</h3>
<p>Вы можете использовать диалоговое окно 'Поиск текста в файлах проекта' для поиска в проектах экземпляров указанного текста или регулярных выражений.</p>
<ol>
<li>Откройте диалоговое окно 'Поиск текста в файлах проекта', выполнив одно из следующих действий:
<ul>
<li>Выберите 'Правка' > 'Найти в проектах'</li>
<li>Щелкните правой кнопкой мыши проект в окне &quot;Проекты&quot; и выберите команду &quot;Найти&quot;.</li>
<li>Нажмите Ctrl+Shift+F.</li>
</ul>
</li>
<li>В диалоговом окне &quot;Найти в проектах&quot; перейдите на вкладку &quot;Список по умолчанию&quot; или на вкладку &quot;Grep&quot;. На вкладке 'Grep' используется служебная программа <tt>grep</tt>, обеспечивающая более быстрый поиск, особенно для удаленных проектов. <br> <img alt="Снимок диалогового окна &amp;quot;Найти в проектах&amp;quot;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/find_in_projects.png"></li>
<li>На вкладке Grep введите искомый текст или регулярное выражение, укажите область поиска и шаблон имени файла и установите флажок 'Открыть в новой вкладке'. Это позволит сохранить несколько результатов поиска на отдельных вкладках.
</li>
<li>Нажмите 'Найти'.<br> На вкладке 'Результаты поиска' перечислены файлы, в которых найдены текст или регулярные выражения.
<p>С помощью кнопок в левой части окна можно изменить представление результатов поиска. </p>
<img alt="Снимок вкладки &apos;Результаты поиска&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/find_in_projects2.png"></li>
<li>Нажмите кнопку 'Развернуть/Свернуть', чтобы свернуть список файлов. При этом будут отображаться только имена файлов. Другие кнопки предназначены для отображения результатов поиска в виде дерева каталогов или в виде списка файлов. Эти функции удобно использовать при поиске по нескольким проектам.</li>
<li>Дважды щелкните один из элементов в списке. Среда IDE перемещает вас на соответствующую позицию в редакторе исходного кода.</li>
</ol>
<h2><a name="navigating"></a>Переход по исходным файлам на C и C++</h2>
<p>Подключаемый модуль NetBeans IDE с C/C++ предоставляет расширенные возможности навигации для просмотра исходного кода. Чтобы изучить эти функции, продолжайте использовать проект <tt>Quote_1</tt>.
<h3><a name="classes"></a>Использование окна классов</h3>
<p>
Окно классов позволяет просматривать все классы проекта, а также члены и поля каждого класса.</p>
<ol>
<li>Выберите вкладку &quot;Классы&quot; для просмотра окна классов. Если вкладка &quot;Классы&quot; не отображается, выберите 'Окно' > 'Классы'</li>
<li>Разверните узел <tt>Quote_1</tt> в окне классов. Выводится список всех классов проекта.
</li>
<li>Разверните класс <tt>Customer</tt>. <br> <img alt="Снимок вкладки &apos;Представление класса&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/classes_window.png">
</li>
<li>Дважды щелкните переменную <tt>name</tt>, чтобы открыть файл заголовка <tt>customer.h</tt>.</li>
</ol>
<h3><a name="navigator"></a>Использование окна навигатора</h3>
<p>Окно навигатора предоставляет компактное представление выбранного в настоящий момент файла и упрощает процедуру перехода между различными частями файла. Если окно навигатора не отображается, выберите команду &quot;Окно&quot; &gt; &quot;Навигация&quot; &gt; &quot;Навигатор&quot;, чтобы открыть его.
</p>
<ol>
<li>Щелкните в любом месте окна редактора файла <tt>quote.cc</tt>.</li>
<li>В окне навигатора отобразится компактное представление файла.<br> <img alt="Снимок окна &apos;Навигатор&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/navigator_window.png">
</li>
<li>Для перехода к определенному элементу файла дважды щелкните его в окне навигатора, а курсор в окне редактора переместится к этому элементу.
</li>
<li>Щелкните правой кнопкой мыши в окне навигатора, чтобы выбрать другой способ сортировки элементов, группировку элементов или их фильтрацию.</li>
</ol>
<p class="tips">Для получения сведений о назначении значков в окне навигатора воспользуйтесь интерактивной справкой по среде IDE. Для этого выберите команду &quot;Справка&quot; &gt; &quot;Содержание справки&quot; и введите в поле поиска окна справки &quot;значки навигатора&quot;. </p>
<h3><a name="findusages"></a>Поиск мест использования класса, метода и поля</h3>
<p>Окно &quot;Случаи использования&quot; применяется для просмотра класса (структуры), функции, переменной, макроса или файла, которые используются в исходном коде проекта.</p>
<ol>
<li>Щелкните правой кнопкой мыши в файле <tt>customer.cc</tt> класс <tt>Customer</tt> в строке 42, и выберите команду &quot;Найти случаи использования&quot;.
</li>
<li>Нажмите в диалоговом окне &quot;Найти случаи использования&quot; кнопку &quot;Найти&quot;.
</li>
<li>Появится окно &quot;Случаи использования&quot; со случаями использования класса <tt>Customer</tt> в исходных файлах проекта.<br> <img alt="Снимок окна &apos;Использования&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/usages_window.png">
</li>
<li>Кнопки со стрелками в левой части окна предназначены для перехода между вхождениями и их отображения в редакторе, а также для переключения представления с логического на физическое и наоборот. Также можно фильтровать данные с помощью второго вертикального ряда кнопок в левой части окна.</li>
</ol>
<h3><a name="callgraph"></a>Работа с графиком вызовов</h3>
<p>В окне &quot;Граф вызовов&quot; отображаются два представления отношений вызовов между функциями проекта. В древовидном представлении отображаются функции, вызванные из выбранной функции, или функции, вызывающие выбранную функцию. Графическим представлением отношений вызовов служат стрелки между вызываемыми и вызывающими функциями.
</p>
<ol>
<li>В файле <tt>quote.cc</tt> щелкните правой кнопкой мыши в функции <tt>main</tt> и выберите 'Показать график вызовов'.</li>
<li>Откроется окно &quot;Граф вызовов&quot; с деревом и графическим представлением всех функций, вызванных из функции <tt>main</tt>.<br> <img alt="Снимок окна &apos;График вызовов&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/call_graph1.png">
<p class="tips">Если отображаются не все функции, приведенные на рисунке выше, нажмите в окне &quot;Граф вызовов&quot; третью кнопку слева для вывода элементов, вызванных из данной функции.</p>
</li>
<li>Разверните узел <tt>endl</tt> для отображения функций, вызванных этой функцией. Обратите внимание, что график обновляется для дополнительного вывода функций, вызванных функцией <tt>endl</tt>.</li>
<li>Нажмите вторую кнопку 'Фокусировать' в левой части окна для перемещения фокуса к функции <tt>endl</tt>, затем нажмите четвертую кнопку 'Кто вызывает эту функцию', чтобы просмотреть все функции, вызывающие функцию <tt>endl</tt>. <br> <img alt="Снимок окна &apos;График вызовов&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/call_graph2.png">
</li>
<li>Разверните несколько узлов дерева для просмотра большего числа функций.<br> <img alt="Снимок окна &apos;График вызовов&apos;" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/call_graph3.png">
</li>
</ol>
<h3><a name="hyperlinks"></a>Работа с гиперссылками</h3>
<p>Функция перехода по гиперссылкам позволяет переходить от вызова класса, метода, переменной или константы к их объявлению и от объявления к определению. Кроме того, гиперссылки позволяют переходить от переопределяемого метода к переопределяющему и наоборот.
</p>
<ol>
<li>В файле <tt>cpu.cc</tt> проекта <tt>Quote_1</tt> наведите курсор мыши на строку 37, нажав клавишу CTRL. Функция <tt>ComputeSupportMetric</tt> будет выделена, а в аннотации будут выведены сведения о данной функции.<br> <img alt="Снимок вызова функции с аннотациями" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/hyperlinks1.png">
</li>
<li>
Щелкните гиперссылку, и в окне редактора будет выполнен переход к определению функции.<br> <img alt="Снимок определения функции" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/hyperlinks2.png">
</li>
<li>Наведите курсор на определение, нажав клавишу CTRL, и щелкните ссылку. В редакторе будет выполнен переход к объявлению функции в файле заголовка <tt>cpu.h</tt>.<br> <img alt="Снимок объявления функции" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/hyperlinks3.png">
</li>
<li>Нажмите на панели редактора стрелку влево (вторая кнопка слева), и редактор снова перейдет к определению в файле <tt>cpu.cc</tt>.
</li>
<li>Наведите курсор мыши на зеленый круг в левом поле и просмотрите аннотацию, указывающую, что данный метод переопределяет другой метод.<br> <img alt="Снимок переопределения аннотаций" class="b-all margin-around" src="../../../images_www/articles/72/cnd/navigating-editing/overide_annotation.png">
</li>
<li>Щелкните зеленый круг для перехода к переопределенному методу: будет выполнен переход к файлу заголовка <tt>module.h</tt>. В это файле на полях отображается серый круг, указывающий на то, что метод переопределен.</li>
<li>Щелкните серый круг, и в окне редактора появится список методов, переопределяющих этот метод.<br> <img alt="Снимок методов переопределения" class="b-all margin-around" src="../../../images_www/articles/72/cnd/navigating-editing/overridden_by_list.png">
</li>
<li>Щелкните элемент <tt>Cpu::ComputeSupportMetric</tt> для обратного перехода к объявлению метода в файле заголовка <tt>cpu.h</tt>.</li>
</ol>
<h3><a name="include"></a>Работа с иерархией Includes</h3>
<p>Окно &quot;Иерархия Includes&quot; позволяет просматривать все файлы заголовков и исходные файлы, которые напрямую или косвенно включены в исходный файл, или все исходные файлы и файлы заголовков, которые напрямую или косвенно включают по #include файл заголовка.
</p>
<ol>
<li>Откройте в проекте <tt>Quote_1</tt> в окне редактора файл <tt>module.cc</tt>.</li>
<li>Щелкните правой кнопкой мыши строку <tt>#include &quot;module.h&quot;</tt> в файле и выберите команду &quot;Переход&quot; &gt; &quot;Просмотреть иерархию Includes&quot;.
</li>
<li>По умолчанию окно &quot;Иерархия&quot; представляет собой список файлов, напрямую включающих файл заголовка. Нажмите крайнюю правую кнопку в нижней части окна для изменения представления на древовидное. Нажмите вторую кнопку справа, чтобы изменить представление для всех включаемых и включающих файлов. Разверните узлы дерева для просмотра всех исходных файлов, включающих файл заголовка.<br> <img alt="Снимок иерархии Includes" class="b-all margin-around" src="../../../images_www/articles/74/cnd/navigating-editing/includes_hierarchy.png">
</li>
</ol>
<h3><a name="type"></a>Работа с иерархией типов</h3>
<p>Окно &quot;Иерархия типов&quot; позволяет проверять все подтипы и родительские типы класса.
</p>
<ol>
<li>Откройте в проекте <tt>Quote_1</tt> файл <tt>module.h</tt>.</li>
<li>Щелкните правой кнопкой мыши объявление класса <tt>Module</tt> и выберите &quot;Переход&quot; &gt; &quot;Просмотреть иерархию типов&quot;.
</li>
<li>Окно иерархии содержит все подтипы класса Module.<br> <img alt="Снимок иерархии типов" class="b-all margin-around" src="../../../images_www/articles/72/cnd/navigating-editing/type_hierarchy.png">
</li>
</ol>
<h3><a name="nextsteps">Следующие действия</a></h3>
<p>Учебный курс по использованию функций отладки проекта C или C++ в IDE NetBeans см. в разделе <a href="debugging.html">Отладка проектов C/C++</a>.
</p>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Editing%20and%20Navigating%20C/C++%20Source%20Files%20-%20NetBeans%20IDE%207.3%20Tutorial">Отправить отзыв по этому учебному курсу</a></div>
</body>
</html>