Лекции. Основные понятия и определения
Скачать 1.94 Mb.
|
ПРИЛОЖЕНИЯ. ПРОЕКТ ПРОГРАММЫ. СРЕДСТВА РАЗРАБОТКИВ современных средах разработки программ существуют специальные средства, позволяющие управлять процессом трансляции отдельных модулей, собирать (компоновать) полученные после трансляции объектные файлы в единый загрузочный модуль (расширение .exe). Загрузочный модуль затем размещается в память компьютера (загружается) и выполняется. Эти средства создают и корректируют файл описания проекта программы. Проект – это набор файлов, используемых при построении приложения. Средства работы с проектами выполняют также и некоторые дополнительные функции, облегчающие разработку. Приложение 1. Среда разработки MinGW C/C++ 4.8Среда разработки содержит: компилятор MinGW C/C++ 4.8.1, отладчик GDB 7.5, текстовый редактор SciTE, справку cppreference.com Здесь в качестве оболочки используется текстовый редактор SciTE, П 1.1. Установка средыУстановочный файл MinGW.7z может быть скачан по адресу: http://ipc.susu.ac.ru/learn.html, раздел MinIDE v1.1 либо скопирован из папки h:\ Учебные материалы \ 1 курс \ Информатика и программирование \ MinGW на сервере кафедры ПРИМА. Файл представляет собой архив, который открывается программами 7-Zip П 1.2. Запуск средыСреда запускается с помощью командного файла с расширением .bat или .cmd, например, MinIDE.cmd, который должен содержать текст: set path=<путь к папке установки среды>\MinGW\bin;%path% start "" " <путь к папке установки\MinGW\SciTE\scite.exe" Во вложенной папке bin хранятся необходимые файлы для работы среды. К ним относятся: - g++.exe – компилятор языка С++, - gcc.exe – компилятор языка С, - ld.exe –компоновщик, - mingw32-make.exe –утилита для управления процессом построения программы, - gdb.exe – отладчик и другие необходимые для работы файлы. Во вложенной папке SciTE находится программа SciTE.exe и конфигурационные файлы для нее. При подготовке решения конкретной задачи необходимо создать для нее отдельную папку. Для создания кода и отладки приложения желательно установить такие свойства редактора как: размеры отступов и табуляции, выполнение отступа по нажатии клавиши Tab, возврат к предыдущему его положению по нажатию клавиши ← (BackSpace), показ номеров линий (строк кода) и некоторые другие. Первоначально настройка свойств задана в файле SciTEGlobal.properties, находящемся в папке SciTE. Можно изменить нужные и сохранить их в файле SciTE.properties, который следует поместить в папку создаваемого приложения. Тогда при запуске среды редактор будет работать в соответствии с установками данного файла. При создании нового приложения надо повторить указанные действия: создать папку, скопировать туда файлы MinIDE.cmd и SciTE.properties. Ниже приводится рекомендованное содержание файла SciTE.properties с поясняющими комментариями, который можно скопировать из любой выложенной задачи на сетевом диске кафедры H: \Учебные материалы\1 курс\Информатика и программирование\MinGW. #Показ панели инструментов toolbar.visible=1 # Отступы #Размер табуляции tabsize=3 #Размер автоматического отступа indent.size=3 #Использует табуляцию для отступа use.tabs=1 #Размеры табуляции и отступа у открываемого файла устанавливаются, как у открытого документа indent.auto=1 #Включает автоматический отступ indent.automatic=1 #Задают положение открывающей { и закрывающей } Так нормально indent.opening=0 indent.closing=0 #При нажатии Tab сдвиг на indent.size, а не на tab.size tab.indents=1 #При нажатии backspace внутри отступа сдвиг влево на indent.size backspace.unindents=1 #Сохраняет все файлы-буферы при компиляции, компоновки и выполнении, а не только текущий save.all.for.build=1 #Сохраняет список открытых файлов в файле *.session для дальнейшего одновременного открытия save.session=1 #Показ строки статуса внизу, содержащей 4 строки - переключаются щелчком по строке #1: {li-№ строки, co-№ столбца} - положение курсора; INS - вертикальный курсор, OVR - горизонтальный, переключаются клавишей Ins #2: Показывает: число символов, число строк, число выделенных символов в файле-буфере #3: Текущие дата и время #4: Дата/время последней коррекции файла SciTE.properties statusbar.visible=1 #Задает выбранный шрифт Courier New - моноширинный, что удобно font.base=font:Courier New,size:10 #Показывает при запуске номера строк line.margin.visible=1 #Не показывать значки свертки fold=0 #В пункте "Поиск\Заменить" появляется кнопка "Заменить в буфере", которая позволяет заменить все вхождения во всех открытых файлах find.replace.advanced=1 При двойном щелчке по значку файла MinIDE.cmd, откроется окно редактора. Как видно из рисунка, редактор уже настроен на заданные свойства (показывается № строки, панель инструментов, строка статуса и т.д.). Следующий шаг – сохранить файл Безымянный под каким-либо осмысленным именем <имя>.cpp (пункт Файл→Сохранить как …) в ранее созданной папке будущего приложения. Рекомендуется main.cpp. Далее в переименованном файле можно создавать код модуля. П1.3. Меню ФайлТексты программных (исходных) модулей сохраняются в файлах с расширением .cpp (язык C++). Изложим действия, выполняемые в некоторых пунктах данного меню. Создать (Ctrl+N) – создает пустой файл с именем Безымянный и открывает его в окне редактирования. В скобках указывается «горячая» клавиша (сочетание клавиш) (нажатие на них позволяет выполнить то же действие, не открывая меню). Задать осмысленное имя исходному модулю можно при его сохранении либо в пункте Файл→Сохранить как …. Использовать, начиная со 2-го файла приложения, 1-й создается при открытии среды. Открыть… (Ctrl+O) – открывает ранее созданный файл в окне редактирования. При выполнении открывается окно «Открытие файла». Необходимо найти нужный, выделить и щелкнуть по кнопке «Открыть». В окне редактора появится вкладка с именем открываемого файла. Для каждого открытого файла в окне кода устанавливается отдельная вкладка. По умолчанию (файл SciTEGlobal.properties) максимальное количество открытых вкладок в окне редактирования 10. Закрыть (Ctrl+W) – закрывает файл активной вкладки окна редактора. Если в текущем сеансе на вкладке были сделаны изменения, предлагается их сохранить. То же действие выполняется при щелчке на «корешке» вкладки правой кнопкой мыши и выборе во всплывающем контекстном меню пункта Закрыть. Сохранить (Ctrl+S) – сохраняет текст исходного файла активного окна редактирования без выхода из среды в той папке, откуда он был загружен. То же можно выполнить с помощью контекстного меню (см. предыдущий пункт). Сохранить как… (Ctrl+Shift+S) – сохраняет текст исходного файла в выбранной папке с возможным изменением имени и расширения. При выборе этого пункта открывается окно, похожее на окно открытия файла. Работа в окне аналогична (см.выше). Команда также может быть выполнена через контекстное меню. Сохранить сессию… – команда сохраняет информацию о всех открытых файлах в окне редактора в файле с расширением .session. Это позволит в дальнейшем с помощью команды Загрузить сессию… открыть сразу все файлы, имена которых сохранены. Это удобно при разработке приложений, содержащих более 2-х .cpp или .h файлов. В открывшемся окне надо выбрать папку для сохранения, указать имя файла .session (по умолчанию предлагается SciTE) и щелкнуть по кнопке «Сохранить». Загрузить сессию – команда позволяет после открытия среды выбрать в открывшемся окне файл .session и открыть файлы, имена которых в нем были сохранены (щелчок по кнопке «Открыть»). Результат на рисунке. Остальные пункты меню желающие могут изучить самостоятельно. П1.4. Меню СервисПункты меню управляют процессами компиляции, компоновки, выполнения и отладки приложения. Проверить на ошибки компиляции (Ctrl+F7) – запускает файл в активной вкладке окна редактора на компиляцию. При этом в окне редактора появляется панель для сообщений компилятора, компоновщика и отладчика. Главным в этой панели являются сообщения о предупреждениях и ошибках этапа компиляции. Внешний вид выдачи на данном этапе показан на рисунке. Ошибки (error): трансляция и синтаксический анализ продолжаются, но компоновка не выполняется. Предупреждения (warning): компоновка выполняется, программа запускается на выполнение, но на этой стадии возможны ошибки. Формат сообщения: < имя модуля>:<№ строки, № позиции, где обнаружена ошибка или подозрительное место>: <тип сообщения>: <поясняющий текст>. <фрагмент кода с указанием позиции сомнительного места> При двойном щелчке по сообщению последнее выделяется, одновременно в панели кода отмечается строка, где обнаружена вызвавшая его ситуация. При перемещении на другое сообщение происходит автоматическое перемещение в панели кода на соответствующую строку исходного текста. Замечание. Место обнаружения ошибки может отстоять от места ее возникновения достаточно далеко. Примером таких ошибок могут служить незакрытые скобки (простые и фигурные). Кроме того, некоторые ошибки могут вызвать серию других ошибок или предупреждений. Это происходит из-за того, что транслятор при обнаружении ошибки прекращает проверять остаток ошибочной конструкции языка, что в свою очередь может породить некорректные ситуации. Собирать из всех (F7) – выполняет компоновку (редактирование связей) объектных модулей в 1 загрузочный модуль. На рисунке приведена выдача компоновщика. При компоновке внутри папки задачи создается папка release, в которую помещаются объектные (расширение .о) и исполняемый (расширение .exe) файлы. Ошибки при компоновке относительно редки, связаны, в основном, с неправильным размещением объектных файлов по папкам и здесь не рассматриваются. Собирать из <имя>.cpp (Alt+F7) – выполняет компоновку приложения из указанного единственного файла. Разумное применение: наличие в папке нескольких вариантов задачи, реализованных в отдельных одиночных файлах. Выполнить (F5) – запускает задачу на решение. Для выдачи на экран на этом этапе открывается окно консоли. Чтобы правильно отображать русский алфавит, следует изменить свойства консольного окна. Для этого нужно вызвать контекстное меню щелчком правой кнопкой мыши по заголовку окна и выбрать пункт Свойства, вкладка Шрифт. Затем установить шрифт Lucida Console 12 или 14. Также разумно задать стандартный размер окна консоли 80х25 (вкладка Расположение). После изменения свойств появится соответствующее окно, в котором следует выбрать пункт Сохранить. Ошибки во время выполнения происходят из-за неправильного алгоритма решения задачи, поэтому их наиболее трудно исправлять. Сообщение о такой ошибке зависит от установленного на компьютере программного обеспечения и операционной системы. Часто это сообщение о необработанном исключении с предложением выбрать доступный отладчик (см.рис.). Предложенные отладчики в нашей среде разработки работать не могут, поэтому от отладки надо отказаться и обратиться к соответствующему пункту меню Сервис. Очистить окно консоли (Shift+F5) – очищает Панель сообщений. Полезно при неоднократном запуске приложения в одном сеансе работы. П1.5. ОтладкаОтладка - это деятельность, направленная на обнаружение места и причины возникновения известной ошибки. Первым этапом отладки является устранение ошибок, обнаруженных в процессе синтаксического анализа программы. Такие ошибки в большинстве случаев легко ликвидируются, поэтому многие специалисты склонны не включать этот этап в процесс отладки. Главным приемом отладки программы является проверка значений интересующих объектов в контрольных точках алгоритма. Для этого необходимо иметь возможность прервать (с возможным продолжением) работу программы в интересующей точке и получить значения нужных переменных и выражений. Основными функциями, предоставляемыми отладчиком пользователю, являются: - прогон программы до заданной точки, - пошаговое выполнение, - установка прерываний программы в выбранных заранее контрольных точках, - получение значений переменных и выражений в точке прерывания. Начало отладкиОтладка: Запуск (Alt+r) – вызывает отладчик gdb.exe. Информация о выполняемых действиях и результаты отладки выводятся в Панель сообщений. Установка точек прерыванияОтладка: Точка останова (F9-Breakpoint) – устанавливает прерывание исполнения приложения на заданной строке кода. Для этого необходимо поместить курсор мыши на выбранную строку и щелкнуть по данному пункту меню Сервис либо нажать клавишу F9. После этого справа от № строки появится красный треугольник, индицирующий установленную точку прерывания, и строка выделяется цветом (см.рис.). Повтор этих действий на той же строке снимает точку останова. Замечание. При первом запуске отладчика точка останова должна быть установлена обязательно. В противном случае будут недоступны другие пункты меню отладки. После запуска отладчика и остановки выполнения в Панели сообщений появится информация вида (см. выше). Кроме того, в папке задачи появится папка debug, в которую помещается вариант исполняемого файла с дополнительной отладочной информацией. Справа показан вид меню Сервис при запущенном отладчике. Если завершить прогон, не закрывая среду разработки, то все отладочные пункты в меню Сервис сохранятся. Прогон до точки прерыванияОтладка: Идти до строки (Alt+g) – выполнить программу до места в тексте, помеченного курсором. Это и последующие отладочные действия работают только при наличии хотя бы одной установленной точки прерывания. Пошаговое выполнение программыОтладка: Шаг (Alt+c) – нажатие этих клавиш вызывает выполнение одной строки кода. При выполнении строки, содержащей вызов процедуры, эта команда переходит в тело данной процедуры и продолжает пошаговое выполнение ее инструкций. Отладка: Шаг над (Alt+n) – команда работает аналогично предыдущей, но при выполнении инструкции, содержащей вызов процедуры, в ее тело не переходит. Отладка: Шаг из (Alt+m) – выполняет действия от точки останова до конца процедуры, где произошло прерывание, и передает управление в точку возврата. Получение значений объектов программыПод объектами здесь будем понимать переменные, массивы и структуры. Отладка: Вывести переменную (Alt+i) – вызывает вывод в Панель сообщений значения или значений объекта программы, на котором расположен указатель мыши. Эта цель достигается проще наведением указателя мыши на имя объекта в момент прерывания (значение «всплывает» рядом с именем). Отладка: Следить за переменной (Alt+w) – включает объект программы, на имени которого находится указатель мыши, в список отслеживаемых. При каждом останове программы его значение будет выводиться в Панель сообщений. Отладка: Локальные переменные (Alt+Ctrl+l) – выводит значения всех локальных объектов текущей процедуры в Панель сообщений. Замечание. Все перечисленные выше приемы отладки будут иметь смысл только в том случае, если будут известны правильные значения объектов программы в точках прерывания. Их получают ручным вычислением, с помощью других средств или специальным подбором входных данных программы. Проще всего отладочные манипуляции выполняются с помощью «горячих» клавиш. Выход из отладчика производится выполнением команды Отладка: Завершить (Alt+k). Остальные функции отладчика рекомендуется изучить самостоятельно. |