Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы программирования в С++Builder CE

Покупка
Новинка
Основная коллекция
Артикул: 856158.01.99
Доступ онлайн
180 ₽
В корзину
В учебном пособии рассмотрены основы технологии компонентно-ориентированного программирования на Embarcadero C++Builder 12 Сomunity Еdition: свойства как расширение языка С++, рисование линий на канве формы, получение графического представления графа, формирование случайного графа, отображение матрицы смежности графа, показаны примеры решения ряда задач на графах, а также динамическое создание компонент, задание их свойств и событий. Учебное пособие предназначено для использования студентами специальности 09.03.02 «Информационные системы и технологи» при изучении курса «Технологии программирования», а также для студентов других специальностей.
Литвиненко, В. А. Основы программирования в С++Builder CE : учебное пособие / В. А. Литвиненко ; Южный федеральный университет. – Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2024. - 122 с. – ISBN 978-5-9275-4800-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2204522 (дата обращения: 19.05.2025). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
 
 
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ  
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Федеральное государственное автономное образовательное  
учреждение высшего образования 
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» 
Инженерно-технологическая академия 
 
 
 
В. А. ЛИТВИНЕНКО 
 
ОСНОВЫ ПРОГРАММИРОВАНИЯ  
В С++BUIDER CE 
 
Учебное пособие 
 
 
 
 
 
 
 
 
Ростов-на-Дону − Таганрог  
Издательство Южного федерального университета  
2024 


 
 
УДК 004.4 (075) 
ББК  32.973я73 
         Л641 
Печатается по решению кафедры систем автоматизированного  
проектирования имени В. М. Курейчика Института компьютерных  
технологий и информационной безопасности Южного федерального  
университета (протокол № 11 от 4 июня 2024 г.) 
Рецензенты: 
ведущий научный сотрудник Южного Научного Центра РАН,                              
доктор технических наук С. Г. Капустян 
доцент кафедры информационной безопасности телекоммуникационных 
систем,  ИКТИБ ФГАОУ ВО «Южный федеральный университет» (ЮФУ), 
кандидат технических наук С. А. Ховансков 
Литвиненко, В. А. 
Л641      Основы программирования в С++Builder CE : учебное пособие /                
В. А. Литвиненко ; Южный федеральный университет. – Ростов-наДону ; Таганрог : Издательство Южного федерального университета, 
2024. – 120 c. 
ISBN 978-5-9275-4800-2 
В 
учебном 
пособии 
рассмотрены 
основы 
технологии 
компонентноориентированного программирования на Embarcadero C++Builder 12 Сomunity 
Еdition: свойства как расширение языка С++, рисование линий на канве формы, 
получение  графического представления графа, формирование случайного графа, 
отображение матрицы смежности графа, показаны примеры решения ряда задач 
на графах, а также  динамическое создание компонент, задание их свойств и событий. 
Учебное пособие предназначено для использования студентами специальности 09.03.02 «Информационные системы и технологи» при изучении курса «Технологии программирования», а также для студентов других специальностей. 
УДК 004.4 (075) 
ББК 32.973я73 
ISBN 978-5-9275-4800-2 
© Южный федеральный университет, 2024 
© Литвиненко В. А., 2024 
© Оформление. Макет. Издательство 
    Южного федерального университета, 2024 


СОДЕРЖАНИЕ 
ВВЕДЕНИЕ……………………………………………………………………  
1. СВОЙСТВА………………………………………………………………. 
1.1. Свойство типа переменной…………………………………………….. 
1.2. Свойство типа двумерный массив.…………………………………….. 
2. РИСОВАНИЕ НА КАНВЕ ФОРМЫ………………………………......... 
2.1. Рисовать при нажатой любой кнопки мыши………………………….. 
2.2. Рисовать с изменением толщины пера………………............................ 
2.3. Рисовать тремя цветами…………………………………………………. 
2.4. Рисовать пером любого цвета……………………………....................... 
2.5. Задания для самостоятельной работы…………………………………. 
3. ГРАФИЧЕСКИЙ ВВОД СИММЕТРИЧЕСКОГО ГРАФА……………… 
3.1. Рисуем граф на канве формы…………………………………………… 
3.2. Вывод матрицы смежности с помощью компоненты 
TStringGrid………………………………………………………………. 
3.3. Определение множества вершин, смежных двум заданным  
 
вершинам графа….……………………………………………………… 
3.4. Задания для самостоятельной работы…………………………………. 
4. СОЗДАНИЕ СЛУЧАЙНОГО ГРАФА…………………………………… 
4.1. Постановка задачи и сценарий приложения………………………....... 
4.2. Формирование случайной матрицы смежности графа……………….. 
4.3. Отображение графа, заданного случайной матрицей смежности……  
4.4. Определение вершины графа с наибольшей 
локальной степенью…………………………………………………….. 
4.5. Определение паросочетания графа…………………………………….. 
4.6. Задания для самостоятельной работы…………………………………. 
5. ДИНАМИЧЕСКОЕ СОЗДАНИЕ КОМПОНЕНТ………………………. 
5.1. Создание однострочного редактора текста и метки………….............. 
5.2. Создание события для динамически созданной компоненты…………. 
5.3. Динамическое создание компонент TShape и TTimer…………,……… 
5.4. Задания для самостоятельной работы…………………………………. 
ЗАКЛЮЧЕНИЕ………………………………………………………………. 
СПИСОК ЛИТЕРАТУРЫ……………………………………………,………. 
ПРИЛОЖЕНИЯ…………………………………………………………………. 
4 
7 
7 
13 
18 
18 
22 
30 
33 
36 
37 
37 
 
47 
 
60 
64 
66 
66 
66 
74 
 
80 
84 
88 
90 
90 
95 
97 
110 
111 
112 
113 


ВВЕДЕНИЕ 
 C++Builder Community Edition (C++Builder CE) является полнофункциональной  бесплатной  версией интегрированной среды разработки Rad 
Studio компании Embarcadero Tehnologis [1], которая в ноябре 2023 года выпустила ее 12-ю версию [2]. 
C++Builder CЕ − это среда разработки, которую выделяют такие особенности как [1, 2]:  
1) кроссплатформенность, позволяющая создавать приложения для 
операционных систем, таких как Windows, iOS, Android, macOS;  
2) полнофункциональность, за счет наличия визуальной среды разработки приложений, редактора кода с инструментами отладки и встроенного 
доступа к базам данных, таким как InterBase, MeSQL и др.; 
3) визуальная разработка, позволяющая создавать приложения и их 
интерфейсы пользователя с использованием фреймворков и компонент Rad 
Studio. 
Редакции C++Builder CE предназначены для стартапов, студентов и 
любителей для создания надежных и масштабируемых приложений на нескольких платформах. 
Скачать бесплатную 12-ю версию C++Builder CЕ можно с сайта компании Embarcadero можно по ссылке [1]. 
Условия использования C++Builder CE следующие.  
C++Builder CE является ограниченной версией – 365 дней.  
Можно использовать C++Builder CE [1]: 
1) физическому лицу для создания приложений для собственного использования, а коммерческих приложений, только пока доход не достигнет 
5 тыс. долларов в год; 
2)  коммерческой организации, только той, которая имеет доход менее  
5 тыс. долларов в год, или число разработчиков не будет более 5 человек.  
На сайте Embarcadero C++Builder доступен в версиях Community, Academic, Professional, Enterprise и Architect. Подробнее о различиях между редакциями можно посмотреть на сайте [2].  
Установка 12-й версии C++Builder в отличие от предыдущей 11-ой 
версии значительно упрощена, тем не менее, порядок установки такой:  
1) нужно зарегистрироваться на сайте, в том числе, указать адрес электронной почты, на который придет сообщение с серийным номером − его 


Введение  
5 
нужно сохранить, поскольку его придется использовать при дальнейшей 
установке, а также при регистрации базы данных InterBase до ее первого 
использования;  
2) установочный файл будет в «Загрузках»;  
3) перед установкой нужно будет выбрать модули, которые будут установлены − выбирать различные языки не нужно, но выберите все пункты, 
которые связаны с базой данных InterBase, которая будет установлена вместе с C++Builder в отдельной директории, иначе ее придется скачивать с 
сайта и устанавливать отдельно. 
История использования C++Builder началась с 26 февраля 1997 г., когда в продаже появился первый релиз C++Builder 1.  
В 2022 г. C++Builder отмечал свой 25-летний юбилей. Разработку 
C++Builder 1 провела команда в 119 человек, включая тех, кто работал над 
продуктом из отдела исследований и разработок, контроля качества, документации, локализации, управления продуктами, маркетинга продукта, 
маркетинга, поддержки разработчиков и отношений с разработчиками. 
Список разработчиков C++Builder можно посмотреть на сайте [3].     
Полная хронология версий C++Builder представлена на сайте [4].  
Последняя версия C++Builder 12 СЕ относится к ноябрю 2023 г., когда 
вышел в свет Embarcadero RAD Studio 12 Athens (v29).  В сентябре 2024 г. 
вышла его новая версия 12.2.  
C++Builder постоянно развивается и возвращает свою популярность. 
Сообщество C++Builder объединяет более 3-х млн участников, зарегистрироваться и стать членом которого можно по ссылке [1].  
В настоящем учебном пособии рассмотрены основы разработки приложений на C++Builder 12 СЕ для Windows [5−8]. Прежде всего, рассмотрено расширение языка С++ − доступа к личным данным классов с использованием аппарата свойств, на котором основана работа с C++Builder.   
Рассмотрены вопросы создания и работы со свойствами типа переменной  
и типа двумерного массива с использованием консольного приложения. 
Начальное освоение работы с C++Builder проведено на задаче создания 
разработки простого приложения для рисования на канве формы от  
простого приложения – рисования при нажатой кнопке мыши, до более 
сложного – рисования пером различной толщины, тремя цветами или выбором любого цвета с использованием стандартного диалога выбора цвета. 


Введение 
6 
Дальнейшее освоение работы с C++Builder 12 СЕ проведено на основе 
решения задач на графах [9]. Рассмотрены задачи ввода графа рисованием 
на канве формы его графического представления, формирования и отображения матрицы смежности с использованием компонент C++Builder. Рассмотрены также задачи построения случайного графа, его отображения с 
использованием компонент C++Builder и вывода графического представления графа на канве формы размещением вершин графа по длине окружности. В качестве примеров, решены задачи на графах, такие как определение 
вершины с наибольшей локальной степенью и выделения паросочетания 
симметрического графа с отображением результатов решения на графическом представлении графа [9].  
Освоение технологии компонентно-ориентированного программирования в 
C++Builder проведены с использованием следующих наиболее часто используемых компонент и их свойств [5−8]: TEdit, TButton, TLable, TMainMenu, TMenuItem, TStringGrid, TColorDialog, TPaintBox, TImage, TShape, а 
также с использованием функций для работы с графикой: MoveTo(), 
LineTo(), Ellipse(), объектов: Canvas, Pen, Brush и их свойств. 
Настоящее учебное пособие является началом освоения технологии 
компонентно-ориентированного 
программирования 
на 
C++Builder.                  
В дальнейшем будут рассмотрены технологии работы с базами данных, такими как InterBase и MySQL, а также разработки приложений на 
C++Builder для операционной системы Android. 
Учебное пособие предназначено для использования студентами специальности 09.03.02 «Информационные системы и технологии» при изучении 
курса «Технологии программирования», а также для студентов других специальностей. 
 
 
 
 
 
 


1.  СВОЙСТВА 
1.1. Свойство типа переменной 
Важным дополнением языка С++ в С++Builder являются свойства, на 
которых основана работа с классами компонент.  
Свойства могут быть разного типа: свойства типа переменной, свойства типа массив, свойства типа индекса одномерного массива, свойства 
типа bool, свойства типа объект класса. От типа свойства зависит его объявление. 
Свойства – это доступ к личным данным класса. Свойства создаются в 
общей части класса – public. Свойства должны иметь имена. Тип свойства 
должен соответствовать типу личного данного класса, доступ к которому 
организован с помощью этого свойства. Главное при работе со свойствами 
это то, что свойства наследуются, что позволило отказаться от метки protected при объявлении класса. После создания объекта класса обращение к 
свойству выполняется также, как и к членам класса через операции точка (.) 
или стрелочка (->) в зависимости от того – в какой памяти создан объект 
класса – в статической или динамической. 
При обращении к свойствам главное – это где расположен знак равенства (=) – до или после записи этого свойства. Если знак (=) расположен 
после свойства, то это означает, что через свойство должно быть присвоено 
значение личному данному класса. Если знак (=) расположен перед свойством, то это означает, что через свойство личное данное класса должно 
быть прочитано. 
Рассмотрим создание свойств типа переменной.  Создадим консольное 
приложение (рис. 1), которое проверяет – попадает ли точка в круг.   
Объявим класс Tochka, в котором в личной части класса – private объявим координаты точки – две переменные X и Y.  Обычно личные данные 
класса, доступ к которым реализован с помощью свойства, имеют приставку – букву F, а имя свойства получают отбрасыванием этой первой буквы.  
class Tochka 
{  private: int FX, FY; 
}; 
Свойство объявляют в общей части класса – public. Для работы с личным данным класса FX создадим свойство X следующим образом: 


1. Свойства 
8 
class Tochka 
{  private: int FX, FY; 
    public:  __property  int X = {read =  GetX, write =  SetX }; 
}; 
 
 
Рис. 1. Окно возможных типов проектов 
 
Рис. 2. Окно консольного приложения 


1.1. Свойство типа переменной  
9 
Вначале пишем ключевое слово   __property – свойство, с двумя знаками подчеркивания впереди. Затем тип свойства, который должен быть таким же, как и тип личного данного класса FX. После знака (=) в фигурных 
скобках указываем два ключевых слова read (прочитать) и write (записать). 
После каждого из которых после знака (=) указываем имена функций, которые будут вызываться: функция GetX(), если нужно прочитать личное данное класса FX, и  функция SetX(), если нужно присвоить значение личному 
данному класса FX: 
read =  GetX, write =  SetX. 
Имена функций GetX() и SetX(), конечно, могут быть любыми. Но 
обычно их образуют, добавляя к имени свойства приставки Get (взять) и Set  
(установить). После объявления свойства нужно не забыть поставить точкузапятую − (;). 
Теперь осталось написать сами функции GetX() и SetX(). Каждая их 
этих функций может выполнять любые действия. Однако для каждой из них 
есть особые правила написания. 
Функция GetX():  
1) должна возвращать значение такого же типа, как и тип личного данного класса FX;  
2) не должна иметь аргументов; 
3) должна иметь обязательно один оператор, который возвращает значение личного данного класса координаты FX  - return FX: 
int GetX() { return FX; } 
Функция SetX():  
1) не должна возвращать значение, т.е. в функции не должно быть оператора return;  
2) должна иметь обязательно один аргумент такого же типа, как и тип 
личного данного класса FX;  
3) должна иметь обязательно один оператор, который присваивает личному данному класса FX  значение этого аргумента: 
void SetX(int a) { FX=a; } 
Класс Tochka будет таким: 


1. Свойства 
10 
class Tochka 
{  private: int FX, FY; 
    public: 
    __property int X = {read =  GetX, write =  SetX }; 
  
 
 
int GetX() { return FX; } 
  
 
 
void SetX(int a) { FX=a; } 
}; 
Добавим в класс Tochka объявление еще одного свойства для работы с 
личным данным класса FY. 
В результате получим:  
class Tochka 
{  private: int FX, FY; 
    public: 
    __property  int X = {read =  GetX, write =  SetX }; 
  
 
 
int GetX() { return FX; } 
  
 
 
void SetX(int a) { FX=a; } 
   __property  int Y = {read =  GetY, write =  SetY }; 
  
 
 
int GetY() { return FY; } 
  
 
 
void SetY(int a) { FY=a; } 
}; 
Добавим в класс Tochka какую-нибудь простую функцию, например, 
которая проверяет − попадает ли точка в центр системы координат: 
void proverka() 
{  if (FX == 0 && FY == 0) cout << “YES“; 
      else cout << “NO“; 
} 
Эта функция может быть написаны и с использованием свойств: 
void proverka() 
{  if (X == 0 && Y == 0) cout << “YES“;   else cout << “NO“; 
 } 
Свойства X и Y должны прочитать личные данные класса FX и FY, поэтому функция будет переписана компилятором следующим образом: 


Доступ онлайн
180 ₽
В корзину