- •Оглавление
- •Лекция 1 Тема: Процесс построения программы.
- •Директивы #include
- •Комментарии
- •Лекция 2 Тема: Представление данных в с. Литералы
- •Встроенные типы данных
- •Типизированные константы
- •Операции и выражения
- •Семантика операций
- •Операции присваивания сама возвращает значение, что позволяет, например, написать:
- •Приведение типа
- •Смешанные выражения.
- •Поразрядные операции и сдвиги.
- •Инкремент и декремент
- •Запятая
- •Лекция 3 Управляющие конструкции с.
- •Условный оператор if... Else
- •Оператор выбора switch
- •1. Цикл while
- •2. Цикл do—while
- •3. Цикл for
- •Операторы прерывания блока
- •Escape-последовательности.
- •Лекция5 Функции
- •Задание
- •Лекция 6 Массивы и указатели
- •Последнее эквивалентно
- •Указатель на функцию
- •Лекция 7 Строки.
- •Лекция 8 Типы, определяемые пользователем.
- •Переименование типов.
- •Перечислимые типы
- •Структуры.
- •Объединения.
- •Лекция 9 Файлы.
- •Лекция 10 Связанные структуры.
- •Новый элемент Конец стека Начало стека
- •Лекция 11 Директивы препроцессора
- •Условная компиляция
- •Типичное применение препроцессорных директив Предотвращение включения файлов
- •Переключение разделов кода
- •Отладочные диагностические сообщения
- •Лекция 12 Тема: Состав проекта.
- •Лекция 13 Тема: Объектно-ориентированное программирование.
- •Лекция 14 Тема: Создание классов и их потомков. Перегрузка функций.
- •Лекция 15 Тема: Создание новых компонентов.
Типичное применение препроцессорных директив Предотвращение включения файлов
Иногда при использовании заголовков может происходить дублирование кода из-за повторного включения некоторого файла. (Допустим, у вас имеется исходный файл myprog.c, который подключает директивой # include два заголовка headerl.h и header2.h. Если, в свою очередь, оба этих файла подключают некоторый headerO.h, то последний будет дважды включен в исходный файл myprog.c. Это ни к чему, хотя обычно и не приводит к ошибке.)
Чтобы предотвратить повторное включение кода заголовочного файла, можно организовать контроль следующим образом (как говорят, “поставить часового”):
/* header0.h: Заголовочный файл, который может оказаться многократно включенным*/
#ifndef _HEADERO_H
#define _HEADERO_H
/* Здесь идут макросы, определения типов и т.д. вашего заголовочного файла*/
*endif
Переключение разделов кода
Директивы условной компиляции могут использоваться для простого переключения между двумя различными вариантами кода — старым и экспериментальным алгоритмом, например. Это можно сделать так:
/*Измените определение на 0, чтобы вернуться к старому варианту.*/
*define NEW_VER I
#if NEW_VER /* Экспериментальный код.*/
#else /* Старый код.*/
*endif
Или, если не вводить дополнительный идентификатор:
/*Измените на 1, когда новый код будет отлажен.*/
*if 0 /* Экспериментальный код.*/
#else /* Старый код.*/
*endif
Отладочные диагностические сообщения
При отладке программ можно с большой пользой применять макросы, генерирующие операторы вывода различных сообщений с указанием файла и номера строки, например:
#define INFO(msg)
printf(#msg "\n")
#define DIAG(msg)
printf("File " _FILE_ " Line %d: " \ #msg "\n", _LINE_)
void SomeFunc(void)
{
INFO(Entering SomeFunc.); /* Выводит информационное сообщение. */
if (someError)
DIAG(Error encountered!); /* Выводит сообщение об ошибке. */
INFO(Exiting SomeFunc...) ;
}
Лекция 12 Тема: Состав проекта.
Программные задачи в Visual C++ оформляются в виде проектов, т.е. представляют собой набор файлов, которые совместно используются для создания одной программы.
Проекты размещаются в рабочих областях, причем одна область может содержать несколько проектов.
При создании новой рабочей области с именем New в ней автоматически создаются:
New.dsw – основной файл рабочей области (определяет параметры новой области);
New.dsp –файл проекта (определят параметры проекта);
New.h – заголовочный файл приложения;
New.срр – исходный текст приложения;
StdAfx.h – заголовочный файл для стандартного каркаса приложения;
StdAfx.cpp – исходный текст стандартного каркаса приложения;
MainFrm.h – заголовочный файл главного окна;
MainFrm.cpp – исходный текст главного окна;
NewDoc.h – заголовочный файл документа;
NewDoc.cpp – исходный текст документа;
NewView.h – заголовочный файл вида;
NewView.cpp – исходный текст вида;
Resource.h – файл с ресурсными константами;
New.rc – файл с ресурсами;
New.ncb – файл с информацией о представлении и взаимных связях;
Res – каталог для ресурсов.
Программа, созданная на Visual C++ AppWizard, состоит из четырех основных частей:
объекта приложения;
объекта главного окна;
объекта документа ;
объекта вида.
Объект приложения, находящийся в файлах New.h (содержит определения констант, объявления переменных и методов класса) и New.срр, - это то, что Windows запускает при старте программы. Когда этот объект начинает работу, он запускает программу, создает и размещает на экране главное окно и организовывает передачу сообщений Windows в главное окно и из него. Сообщения – это сигналы, с помощью которых разные объекты в среде Windows общаются между собой. Например, когда пользователь завершает работу программы, Windows посылает объекту приложения сообщение WM_QUIT. Если пользователь изменяет размеры окна – сообщение WM_SIZE. Большинство полученных сообщений объект приложение отсылает объекту главного окна.
Объект главного окна отображает на экране саму программу. В нем находится меню, заголовок окна, панель инструментов и строка состояния. Причем меню и заголовок окна создаются автоматически, а панель инструментов и строка состояния добавляются в методе Create (хотя основная часть программного кода для них сосредоточена в объекте вида). Здесь пишутся различные методы, предназначенные для обработки конкретных сообщений Windows.
Например, метод OnDraw вызывается при необходимости перерисовать клиентскую область окна. В этом методе можно использовать класс CDC – класс для работы с контекстными устройствами. Графический вывод может выполняться как на экран, так и на принтер. Например метод TextOut позволяет отобразить на поверхности главного окна текстовое сообщение.
Объект вида предназначен для работы с клиентской областью, т.е. рабочей зоной программы. (Объект вида – это окно, которое накладывается поверх клиентской области). Программы для Windows управляются событиями, т.е. реагируют на действия пользователя. Так метод OnDraw вызывается, когда необходимо перерисовать клиентскую область. В этом методе можно вывести текстовое сообщение прямо в объекте вида.
PDC->TextOut(0,0,”Hello”);
Переменная PDC принадлежит классу CDC. Это класс для работы с контекстными устройствами. Графический вывод может выполняться как на экран, так и на принтер. Все рисование будет выполняться через контекст устройств.
Объект документа – хранит данные программы, которые отображаются и в клиентской, и в неклиентской области. Объект вида потом отображает только те данные, которые попадают в клиентскую область. Так для вывода текстового сообщения с помощью текстовой переменной, описание этой переменной следует разместить именно в объекте документа, а точнее в заголовочном файле объекта документа (где расположено объявление класса объекта документа). Инициализация такой переменной может находиться в конструкторе класса документа.
При генерации кода AppWizard автоматически создает указатель на объект документа с помощью метода GetDocument() класса вида.
CExampleDoc* pDoc=GetDocument(); //Example – название рабочей области
ASSERT_VALID(pDoc); // проверка на правильность создания указателя.
