- •В.В. Чуркин лабораторные работы по программированию
- •Содержание
- •Введение
- •Основное окно иср
- •Лабораторная работа 1
- •Задания
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды обработчиков событий и функций
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания
- •Лабораторная работа 2
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания
- •Лабораторная работа 3
- •Задание
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Тестирование и использование приложения
- •Заголовочный файл
- •Файл реализации
- •Контрольные вопросы
- •Задания
- •Лабораторная работа 4
- •Введение
- •Алгоритмы шифрования и дешифрования
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Лабораторная работа 5
- •Введение
- •Алгоритмы
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Диспетчеризация действий на основе компонента ActionList
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Лабораторная работа 6
- •Введение
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания (стеки, очереди)
- •Лабораторная работа 7
- •Введение
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Диспетчеризация действий на основе компонентов ActionManager, ActionMainMenuBar, ActionToolBar
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания
- •Лабораторная работа 8
- •Введение
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания
- •Лабораторная работа 9
- •Введение
- •Проектирование приложения. Выбор, размещение и задание свойств компонентов. Коды классов, функций и обработчиков событий
- •Тестирование и использование приложения
- •Контрольные вопросы
- •Задания
- •Библиографический список
Введение
При составлении данного учебно-методического пособия была поставлена задача – совместить изучение технологий программирования на языкеC/C++ – структурного, модульного и объектно-ориентированного с изучением и получением навыков работы в интегрированной среде разработки (ИСР) приложенийC++ Builder.
Лабораторные работы предваряет ознакомление с ИСР на примере разработки проекта для расчетов по формуле, содержащей математические функции. Сначала пользователь получает сведения о содержании проекта, его файлах, об основном окне ИСР, главном меню, инструментальных панелях, Дереве Объектов,Инспекторе Объектов. Затем пользователь создает проект, получает представление о библиотеке визуальных компонентов и её применении.
В лабораторной работе «Формирование и обработка динамических массивов» изучается работа с динамической памятью в процессе обработки одномерного и двумерного массивов. В работе используются компоненты: многостраничная панель, компоненты ввода целых чисел, индикаторы, таблица, компонент для отображения хода длительных процессов, полоса состояния, компоненты для построения графиков. Функции пользователя размещаются в файле реализации модуля формы.
В лабораторной работе «Текстовые файлы, символы, строки» используются многострочные окна редактирования для работы с текстами в простом и обогащенном форматах, компоненты-диалоги для работы с текстовыми файлами, компонент – всплывающее меню. В коде использованы функции работы со строками разных типов. Функции пользователя размещаются в файле реализации модуля формы.
Лабораторная работа «Сортировки числовых массивов. Рекурсивные функции» содержит изложение процесса создания проекта для классических сортировок числовых массивов с сохранением результатов в графических файлах. Для реализации сортировок предложены рекурсивные функции; в процессе выполнения работы вскрывается их основной недостаток – переполнение стека. В проекте разрабатывается и используется класс; объявление класса размещено в заголовочном файле модуля формы, а реализация класса – в файле реализации модуля формы. Использованы новые компоненты: главное меню, управляющая кнопка с пиктограммой, панель общего назначения. Студентам предлагается дополнить проект функциями сортировок с использованием циклов.
Лабораторная работа «Способы шифрования и дешифрования текста» предназначена для изучения алгоритмов и приложения, позволяющего шифровать и дешифровать тексты по треугольнику Паскаля, методом Гронсфельда и по матрице. Приложение содержит класс шифрования/дешифрования текста. В проекте использован модуль, не связанный с формой; объявление класса находится в заголовочном файле, а реализация класса – в файле реализации данного модуля. Результаты шифрования и информация о способе шифрования сохраняются в бинарных файлах. Для представления информации о программе и её разработчике в проект включена дополнительная форма. В приложении впервые использована инструментальная панель на основе простой панели с расположенными на ней кнопками с фиксацией и пиктограммами. Показано использованиеИсследователя классов.
В лабораторной работе «Преобразование и вычисление арифметических выражений с помощью стека» изложены алгоритмы преобразования инфиксной записи арифметических выражений в постфиксную и префиксную записи и алгоритм вычисления значения выражения по постфиксной записи. Представлены коды для реализации алгоритмов. Пользовательские типы и класс помещены в файл, не связанный с формой. В проекте впервые использованы интерфейсные компоненты: список изображений, диспетчер действий, инструментальная панель. Изложен порядок диспетчеризации действий. Цель данной лабораторной работы состоит в изучении динамической структуры данных – стек и типичного примера использования стека.
Лабораторная работа «Очередь приоритетов» представляет собой пример построения проекта для изучения реализации динамической структуры данных на основе массива структур. В проекте использован структурный тип и два класса: первый – для заявок, а второй – для очереди заявок. Продолжено изучение использования диспетчера действий при проектировании интерфейса проекта. В заключение студентам предлагается модифицировать приложение путем переноса данных-элементов из закрытых разделов в открытые разделы классов.
В лабораторной работе «Двунаправленный неоднородный список с однородными подсписками» продолжается изучение динамических структур данных на основе использования взаимосвязанных блоков динамической памяти, выделяемой по мере поступления разнотипных данных во время выполнения приложения. В проекте используется четыре пользовательских класса: базовый, два производных и класс, интегрирующий базовый и производные классы. В интерфейсной части проекта впервые использован более мощный диспетчер действий - с полосами действий: полосой главного меню и инструментальными панелями.
В лабораторной работе «Бинарное упорядоченное дерево» изучается нелинейная динамическая структура данных – бинарное упорядоченное дерево поиска. В проекте использованы два класса: для узла дерева и для бинарного дерева, причем последний объявлен дружественным первому. Даны основные функции работы с деревом и продемонстрировано их использование. Интерфейс подобен интерфейсу в предыдущей работе.
В лабораторной работе «Иерархия : точка, круг, цилиндр» изучается пример иерархии с прямым открытым наследованием. Для демонстрации возможностей полиморфизма в лабораторной работе рассмотрено два варианта иерархии. Виртуальные функции находятся во втором варианте. В первом варианте для отображения объектов использовано приведение типов указателей базовых классов к указателям производных классов, во втором – полиморфизм, реализованный при помощи виртуальных функций-элементов.
Ознакомление с Интегрированной Средой Разработки (ИСР) C++Builder 6
Интегрированная Среда Разработки(IntegratedDevelopmentEnvironment–IDEилиИСР) – это средав которой есть все необходимое для быстрой разработки (проектирования) сложных прикладных программ (приложений)ИСР интегрирует в себе редактор кодовотладчикинструментальные панелиредактор изображенийинструментарий баз данныхчто позволяет проектироватьзапускать и тестировать приложения
Проекты C++Builder
Проект C++Builderсостоит из форммодулей с их заголовочными файлами и файлами реализацииустановок параметров проектаресурсов и тдВся эта информация размещается в файлахМногие из этих файлов автоматически создаютсяC++Builderв процессе построения приложения:
Головной файл проекта (.cpp) |
C++Builder создает файл .cpp для головной функции WinMain, инициирующей приложение и запускающей его на выполнение |
Файл опций проекта (.bpr) |
Этот текстовый файл содержит установки опций проекта и указания на то какие файлы должны компилироваться и компоноваться в проект Файл сохраняется в формате XML |
Файл ресурсов проекта (.res) |
Двоичный файл содержащий ресурсы проекта: пикто-граммы курсоры и тп По умолчанию содержит только пиктограмму проекта Может дополняться с помощью Редактора Изображений |
Файл реализации модуля (.cpp) |
Каждой создаваемой пользователем форме соответствует текстовый файл реализации модуля используемый для хранения кода Пользователь может создавать модули не связанные с формами |
Заголовочный файл модуля (.h) |
Каждой создаваемой пользователем форме соответствует не только файл реализации модуля но и его заголовочный файл с описанием класса формы Пользователь может и сам создавать необходимые заголовочные файлы |
Файл формы (.dfm) |
Это двоичный или текстовый файл который C++Builder создает для хранения информации о фор-мах пользователя Пользователь может смотреть этот файл в текстовом виде или в виде формы Каждому файлу формы соответствует файл модуля (.cpp) |
Заголовочный файл компонента (.hpp) |
Файл создается при создании пользователем нового компонента Пользователю также часто приходится подключать к проекту эти файлы из библиотеки компонентов C++Builder расположенные в каталоге Include\VCL |
Файл группы проектов (.bpg) |
Текстовый файл создаваемый в C++Builder при созда-нии пользователем группы проектов |
Файлы пакетов (.bpl и .bpk) |
Эти двоичные файлы используются C++Builder при ра-боте с пакетами: .bpl – файл самого пакета .bpk – файл определяющий компиляцию и компоновку пакета |
Файл рабочего стола проекта (.dsk) |
В этом текстовом файле C++Builder хранит информа-цию о последнем сеансе работы с проектом: открытых окнах их размерах и положении Благодаря этому файлу в новом сеансе работы пользователь сразу видит тот же экран который был в предыдущем сеансе Файл создается только при включении опции Опции автосохранения |Рабочий стол проекта ( на странице Предпочтения–многостраничного окна Опции среды общих настроек среды вызываемого командой Инструменты|Опции среды) |
Файлы резервных копий (.~bp, .~df, .~cp, .~h) |
Это соответственно файлы резервных копий для файлов проекта формы реализации модуля и заголовочного Если пользователь что-то безнадежно испортит в своем проекте он может соответственно изменить расширения этих файлов и таким образом вернуться к предыдущему не испорченному варианту |
Следующая группа файлов создается компилятором:
Исполняемый файл (.exe) |
Это исполняемый файл проектируемого приложения Он является автономным исполняемым файлом для которого больше ничего не требуется если только пользователь не использует библиотеки содержащиеся в пакетах DLL, OCX и тд |
Объектный файл модуля (.obj) |
Это откомпилированный файл модуля (.cpp) который компонуется в окончательный исполняемый файл |
Динамически присоединяемая библиотека (.dll) |
Этот файл создается в случае если пользователь проектирует свою собственную DLL |
Файл таблицы символов (.tds) |
Двоичный файл используемый отладчиком в процессе отладки приложения |
Файлы выбороч-ной компоновки (.il?) |
Файлы с расширением начинающемся с il (.ilc, .ild, .ilf, .ils), позволяют повторно компоновать только те файлы которые были изменены после последнего сеанса |
C++Builderможет использовать файлыWindows:
Файлы справки (.hlp) |
Это стандартные файлы справки Windows, которые мо-гут быть использованы приложением C++Builder |
Файлы изображе-ний или графи-ческие файлы (.wmf, .bmp, .ico) |
Эти файлы обычно используются в приложениях Win-dows для создания привлекательного и дружественного пользовательского интерфейса |
Из всех перечисленных файлов (а могут использоваться еще и другие) важнейшими являются файлы .cpp,.h,.dfm,.bpr,.res. Это файлыкоторые необходимо перенести на другой компьютерчтобы продолжить на нем работу над проектомВсе остальные файлыC++Builderсоздаст автоматически в процессе компиляции проекта и его отладки
Главной частью приложения является головной файл .cpp (файл проектаисходный файл проекта) с функциейWinMain, с которой начинается выполнение программы и которая обеспечивает инициализацию других модулейОна создается и модифицируетсяC++Builderавтоматически в процессе разработки приложенияИмякоторое дает пользователь файлу проектакогда сохраняет егостановится именем исполняемого файла
Все изменения файла проекта при добавлении новых формизменении имен форм и тпподдерживаютсяC++BuilderавтоматическиДля просмотра исходного файла проекта надо выполнить командуПроект|Вид источника. Но обычно просмотр не требуется
Информация о формах C++Builderхранится в трех файлах:.dfm,.cpp, и.h. Информация о внешнем виде формыее размерахместоположении на экране и тдхранится в файле с расширением.dfm, который по умолчанию имеет текстовый видДля хранения файла формы в двоичном виде нужно щелкнуть на форме правой кнопкой мышии во всплывшем меню выключить индикаторТекст DFM.
Основной файлс которым работает пользователь– это файл реализации модуля.cpp, в котором хранится кодсоответствующий данной формеВ текстовом заголовочном файле с расширением.h хранится объявление класса используемой формыВесь основной текст этого файлаC++Builderформирует автоматически по мере проектирования пользователем формыНо иногда требуется вручную вводить в этот файл объявления каких-то функцийтиповпеременныхВC++Builderзаголовочный файл загружается в окноРедактора Кодаавтоматически
Имена всех файловописывающих модульодинаковыЭто имя задает пользователькогда в первый раз сохраняет модуль
Рекомендуется создавать в приложении модульне связанный с формойв который помещают описания типовконстантпеременныхфункцийиспользуемых другими модулямиЭто способствует хорошей структурированности программыподдерживает единое понимание типовконстантпеременных во всех модулях и уменьшает количество взаимных ссылок модулей друг на другаТем самым упрощается модификация и сопровождение программы
Чтобы создать в проекте новый модульне связанный с какой-либо формойнадо выполнить командуФайл|Новый|Другоеи в открывшемся многостраничном окнеНовые элементыдважды щелкнуть на пиктограммеМодуль страницыНовый.
По окончании работы над проектом следует удалить вспомогательные файлы – .obj,.res, .tds, .il?,~*. Объем файлов.tdsможет быть очень большим (мегабайты)