Лабораторные работы МИРЭА 2014 (1017113), страница 16
Текст из файла (страница 16)
if ()
{
}
else
{
}
Редактор кода предоставляет программисту большой набор шаблонов: объявления классов, функций, инструкций выбора (if, switch), циклов (for, while). Для некоторых инструкций, например для if и while, есть несколько вариантов шаблонов.
Для того чтобы в процессе набора текста программы воспользоваться шаблоном кода и вставить его в текст программы, нужно нажать комбинацию клавиш <Ctrl>+<J> и из появившегося списка выбрать нужный шаблон (рис. 2.28). Выбрать шаблон можно обычным образом, прокручивая список, или вводом первых букв имени шаблона (имена шаблонов в списке выделены полужирным). Выбрав в списке шаблон, нужно нажать клавишу <Enter>, шаблон будет вставлен в текст программы.
Рис. 28. Список шаблонов кода отображается в результате нажатия <Ctrl>+<J>
Рис. 29. В поля диалогового окна надо ввести имя шаблона и его краткое описание
Программист может создать свой собственный шаблон кода и использовать его точно так же, как и стандартный. Для того чтобы создать шаблон кода, нужно в меню Tools выбрать команду Editor Options и в окне Code Insight щелкнуть на кнопке Add. В появившемся окне Add Code Template (рис. 2.25) надо задать имя шаблона (Shortcut Name) и его краткое описание (Description). Затем, после щелчка на кнопке ОК, в поле Code надо ввести шаблон (рис. 30).
Рис. 30. Пример шаблона кода программиста
Справочная система
В процессе набора текста программы можно получить справку о конструкции языка, типе данных, классе или функции. Для этого нужно в окне редактора кода набрать слово, о котором надо получить справку (например, имя функции), и нажать клавишу <F1>. Так как с запрашиваемой темой в справочной системе может быть связано несколько разделов, на экране, как правило, появляется окно Найденные разделы (рис. 31), в котором можно выбрать нужный раздел. Следует обратить внимание на то, что после имени функции может быть указано имя библиотеки, к которой эта функция относится: VCL или CLX (вспомните: библиотека VCL используется при разработке приложений для Windows, a CLX — при разработке кроссплатформенных приложений). Поэтому, выбирая раздел справочной системы, надо обращать внимание на то, к какой библиотеке он относится.
Рис. 31. В диалоговом окне следует уточнить раздел
Справочную информацию можно получить также, выбрав из меню Help команду C++ Builder Help. В этом случае на экране появится стандартное окно справочной системы. В этом окне на вкладке Предметный указатель нужно ввести ключевое слово, определяющее тему, по которой нужна справка. В качестве ключевого слова можно ввести, например, первые несколько букв имени функции, свойства или метода (рис. 28).
Рис. 32. Поиск справочной информации по ключевому слову
Сохранение проекта
Проект — это набор файлов, используя которые компилятор создает выполняемый файл программы (ехе-файл). В простейшем случае проект составляют: файл описания проекта (bpr-файл), файл главного модуля (срр-файл), файл ресурсов (res-файл), файл описания формы (dfm-файл), заголовочный файл формы (h-файл) и файл описания функций формы (срр-файл).
Чтобы сохранить проект, нужно в меню File выбрать команду Save Project As. Если проект еще ни разу не был сохранен, то C++ Builder сначала предлагает сохранить модуль (содержимое окна редактора кода) и поэтому на экране появляется окно Save Unitl As. В этом окне (рис. 33) надо выбрать папку, предназначенную для проектов, создать в ней папку для сохраняемого проекта, открыть ее и ввести имя модуля. В результате щелчка на кнопке OK в указанной папке будут созданы три файла: срр, h и dfm, и на экране появится диалоговое окно Save Projectl As (рис. 34), в которое надо ввести имя проекта.
Рис. 33. Сохранение модуля
Рис. 34. Сохранение проекта
Обратите внимание, что имена файла модуля (срр) и файла проекта (bрr) должны быть разными, т. к. C++ Builder в момент сохранения файла проекта создает одноименный срр-файл (файл главного модуля). Кроме того, надо учесть, что имя генерируемого компилятором выполняемого файла совпадает с именем проекта. Поэтому файлу проекта следует присвоить такое имя, которое, по вашему мнению, должен иметь выполняемый файл программы, а файлу модуля — какое-либо другое имя, например, полученное путем добавления к имени проекта порядкового номера модуля.
Компиляция
Процесс преобразования исходной программы в выполняемую состоит из двух этапов: непосредственно компиляции и компоновки. На этапе компиляции выполняется перевод исходной программы в некоторое внутреннее представление. На этапе компоновки выполняется сборка (построение) программы. После ввода текста функции обработки события и сохранения проекта можно, выбрав в меню Project команду Compile, выполнить компиляцию. Процесс и результат компиляции отражается в диалоговом окне Compiling (рис. 35). Если в программе нет синтаксических ошибок, то окно будет содержать сообщение: Done: Compile Unit, в противном случае будет выведено сообщение Done: There are errors.
Рис. 35. Результат компиляции: в программе есть ошибки
В случае если компилятор обнаружит в программе ошибки и неточности, диалоговое окно Compiling будет содержать информацию о количестве синтаксических (Errors) и семантических (Warnings) ошибок, а также о числе подсказок (Hints). Сами сообщения об ошибках, предупреждения и подсказки находятся в нижней части окна редактора кода.
Чтобы перейти к фрагменту кода, который, по мнению компилятора, содержит ошибку, надо выбрать сообщение об ошибке (щелкнуть в строке сообщения левой кнопкой мыши) и из контекстного меню (рис. 36) выбрать команду Edit Source.
Рис. 36. Переход к фрагменту программы, который содержит ошибку
Процесс компиляции можно активизировать, выбрав в меню Run команду Run, которая запускает разрабатываемое приложение. Если будет обнаружено, что с момента последней компиляции в программу были внесены изменения или программа еще ни разу не компилировалась, то будет выполнена компиляция, затем — компоновка, и после этого программа будет запущена (естественно, только в том случае, если в программе нет ошибок).
Ошибки
Компилятор переходит ко второму этапу генерации выполняемой программы только в том случае, если исходный текст не содержит синтаксических ошибок. В большинстве случаев в только что набранной программе есть ошибки. Программист должен их устранить. Процесс устранения ошибок носит итерационный характер. Обычно сначала устраняются наиболее очевидные ошибки, например, объявляются необъявленные переменные. После очередного внесения изменений в текст программы выполняется повторная компиляция. Следует обратить внимание на то, что компилятор не всегда может точно локализовать ошибку. Поэтому, анализируя фрагмент программы, который, л о мнению компилятора, содержит ошибку, нужно обращать внимание не только на тот фрагмент кода, на который компилятор установил курсор, но и на тот, который находится в предыдущей строке. Например, в следующем фрагменте кода:
// вычислить ток
i = u/r
//. вывести результат в поле метки
Labe14->Caption = "Ток : " +
FloatToStrF(i,ffGeneral,7,2) + " А";
не поставлена точка с запятой после оператора присваивания. Компилятор это обнаруживает, выводит сообщение statement missing ;, но выделяет строку Label4->caption = "Ток : " + и устанавливает курсор после идентификатора Label4.
В табл. 10 перечислены типичные ошибки и соответствующие им сообщения компилятора.
Таблица 10. Типичные ошибки
Сообщение | Ошибка |
Undefined symbol (неизвестный символ) | Используется необъявленная переменная Имя переменной, функции или параметра записано неверно. Например, в программе объявлена переменная Summ, а в инструкциях используется sum |
Statement missing ; (отсутствует точка с запятой) | После инструкции не поставлена точка с запятой |
Unterminated string or character constant (незаконченная строковая или символьная константа) | В конце строковой константы, например, текста сообщения, нет двойных кавычек |
) expected (ожидается закрывающая скобка) | При записи арифметического выражения, содержащего скобки, нарушен баланс открывающих и закрывающих скобок |
if statement missing ( (в инструкции if нет открывающей скобки) | В инструкции if условие не заключено в скобки |
Compound statement missing } | Нарушен баланс открывающих и закрывающих фигурных скобок. Вероятно, не поставлена закрывающая фигурная скобка отмечающая конец функции или группы инструкций, например, после условия или слова else в инструкции if |
Extra parameter in call to (лишний параметр при вызове функции) | Неверно записана инструкция вызова функции, указан лишний параметр |
Если компилятор обнаружил достаточно много ошибок, то просмотрите все сообщения и устраните сначала наиболее очевидные ошибки и выполните повторную компиляцию. Вполне вероятно, что после этого количество ошибок значительно уменьшится. Это объясняется особенностями синтаксиса языка, когда одна незначительная ошибка может "тащить" за собой довольно большое количество других.
Предупреждения и подсказки
При обнаружении в программе неточностей, которые не являются ошибками, компилятор выводит подсказки (Hints) и предупреждения (Warnings). Например, наиболее часто выводимой подсказкой является сообщение об объявленной, но не используемой переменной (... is declared but never used.). Действительно, зачем объявлять переменную и не использовать ее? В табл. 11 приведены предупреждения, наиболее часто выводимые компилятором.
Таблица 11. Предупреждения компилятора
Предупреждение | Вероятная причина |
... is declared but never used | |
Possibly incorrect assignment. (вероятно, инструкция присваивания некорректная) | В условии, например, инструкции if, вместо оператора сравнения (=) использован оператор присваивания (=) |
Possibly use of ... before definition. (вероятно, используется неинициализированная переменная) | Не присвоено начальное значение переменной |
Компоновка
Если в программе нет ошибок, то можно выполнить компоновку. Для этого надо в меню Compile выбрать команду Make или Build. Разница между командами Make и Build заключается в следующем. Команда Make обеспечивает компоновку файлов проекта, а команда Build — принудительную перекомпиляцию, а затем — компоновку.
На этапе компоновки также могут возникнуть ошибки. Чаще всего причина ошибок во время компоновки состоит в недоступности файлов библиотек или других ранее откомпилированных модулей. Устраняются эти ошибки путем настройки среды разработки и включением в проект недостающих модулей. В простых проектах ошибки времени компиляции, как правило, не возникают.
Запуск программы
Пробный запуск программы можно выполнить непосредственно из среды разработки, не завершая работу с C++ Builder. Для этого нужно в меню Run выбрать команду Run или щелкнуть на командной кнопке Run (рис. 37).