- •Л. Б. Бузюков, о. Б. Петрова
- •Учебное пособие
- •Предисловие
- •Глава 1. Введение в язык с
- •1.1. История создания и особенности языка с
- •1.3. Элементы языка с
- •1.3.1. Основные символы
- •1.3.2. Ключевые слова
- •1.3.3. Идентификаторы
- •1.3.4. Константы
- •1.3.5. Лексемы
- •1.3.6. Комментарии
- •Глава 2. Типы данных языка c
- •2.1. Числовые типы данных
- •2.2. Объявление переменных
- •2.3. Данные целого типа
- •2.4. Данные вещественного типа
- •Глава 3. Выражения
- •3.1. Операции
- •3.1.1. Арифметические операции
- •3.1.2. Операция присваивания
- •Глава 4. Составление простейших программ
- •4.1. Препроцессор и его функции
- •4.2. Основные директивы препроцессора
- •4.2.1. Директива include
- •4.2.2. Директива define
- •4.2.3. Директива undef
- •4.3. Структура и правила составления программ
- •4.3.1. Структура функции
- •4.3.2. Функция main()
- •4.3.3. Структура простой программы
- •4.3.4. Правила записи объявлений, операторов и комментариев
- •4.3.5. Пример простейшей программы
- •Глава 5. Средства ввода/вывода
- •5.1. Общие замечания
- •5.2. Функция форматированного вывода printf()
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Глава 6. Управляющие операторы
- •6.1. Условные операторы
- •6.1.1. Логические выражения
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •6.2. Операторы цикла
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3. Операторы перехода
- •6.3.1. Оператор break
- •6.3.2. Оператор continue
- •6.3.3. Оператор return
- •6.3.4. Применение оператора goto и меток
- •Глава 7. Функции
- •7.1. Основные понятия
- •7.2. Определение функции
- •7.3. Прототип функции
- •7.4. Вызов функции
- •Глава 8. Классы памяти
- •8.1. Логическаяструктура памяти программы
- •8.2. Особенности классов памяти
- •8.3. Объявления переменных
- •8.4. Объявления функций
- •8.5. Время жизни и область видимости программных объектов
- •8.6. Инициализация глобальных и локальных переменных
- •Глава 9. Указатели
- •9.1. Операция получения адреса
- •9.2. Операции над указателями
- •Глава 10. Массивы
- •10.1. Общие сведения о массивах
- •10.2. Одномерные массивы
- •10.3. Двумерные массивы
- •10.4. Массивы и указатели
- •10.5. Массивы и функции
- •Глава 11. Строки
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Глава 12. Структуры
- •12.1. Определение структуры
- •12.2. Структуры и функции
- •12.3. Указатели на структуру
- •12.4. Массивы структур
- •12.5. Вложенные структуры
- •12.6. Использование синонима типа
- •12.7. Объединения
- •Глава 13. Файлы
- •13.1. Работа с файлами
- •13.2. Функции ввода/вывода
- •Глава 14. Динамическая память
- •14.1. Распределение памяти
- •14.2. Функции управление памятью
- •Глава 15. Проект
- •15.1. Основы создания проекта
- •15.2. Пример создания проекта
- •Глава 17. Основы объектно-ориентированного программирования
- •17.1. Объектно-ориентированный подход
- •17.3. Конструкторы и деструкторы
- •17.4. Инкапсуляция
- •17.5. Полиморфизм
- •17.6. Наследование
- •17.7. Виды взаимодействия классов
- •17.8. Способы графического представления объектно-ориентированной задачи
- •18.2. Библиотека Win32 api
- •18.3. Библиотека owl
- •18.4. Библиотека vcl
- •18.5. Библиотека clx
- •18.6. Библиотека mfc
- •18.7. Библиотека OpenGl
- •19.3. Создание проекта
- •19.4. Редактирование проекта
- •19.5. Компиляция и выполнение программы
- •19.6. Файловая структура проекта
- •19.7. Создание консольного приложения
- •Глава 20. Разработка приложений для операционных систем windows
- •20.1. Взаимодействие программы и Windows
- •20.2. Компоненты библиотеки Win32 api
- •20.3.Функция WinMain()
- •20.4. Оконная процедура
- •20.5. Структура программы для ос Windows
- •20.6. Ресурсы Windows
- •20.7. Взаимодействие прикладной программы и устройств в Windows
- •Глава 21. Создание приложений для ос windows на основе библиотеки mfc
- •21.1. Обзор классов библиотеки mfc
- •21.2. Класс cString
- •21.3. Класс cFile
- •21.4. Класс cPoint
- •21.5. Класс cRect
- •21.7. Приложение, основанное на диалоге
- •21.8. Использование в приложении элементов управления
- •21.9. Мастер классов mfc ClassWizard
- •21.10. Установка начального значения элементам управления
- •21.11. Элементы управления Picture
- •21.12. Элемент управления Group Box
- •21.13. Элемент управления Radio Button
- •21.14. Элемент управления Check Box
- •21.15. Элемент управления List Box
- •21.16. Создание меню
- •21.17. Приложение с двумя диалоговыми панелями
- •21.18. Приложение sdi
- •21.19. Создание панели инструментов
- •21.20. Приложение mdi
- •21.21. Контекстыустройств в mfc
- •21.22. Графические объекты Windows в mfc
- •21.23. Графические операции в mfc
- •П.1. Основы методологии конструирования программ
- •П.1.1. Основные понятия. Программа и алгоритм
- •П.1.2. Этапы разработки программ
- •П.2. Алгоритмы
- •П.2.1. Алгоритм и его свойства
- •П.2.2. Способы описания алгоритмов
- •П.2.3. Средства графического изображения алгоритмов Схемы алгоритмов
- •Псевдокоды
- •Структурограммы
- •П.3. Основные приемы программирования
- •П.3.1. Разновидности структур программирования
- •П.3.2. Программирование линейных и разветвляющихся процессов
- •П.3.3. Программирование циклических процессов
- •Арифметический цикл (цикл с параметром)
- •Итерационный цикл
- •Вложенный цикл
- •Литература
19.3. Создание проекта
Проект представляет собой группу файлов, в которых размещены код и ресурсы программы. Для создания проекта используется специальное приложение – AppWizard – Мастер приложений.
AppWizard позволяет создавать несколько типов приложений, приведем краткую характеристику некоторых из них:
MFC AppWizard(exe) – наиболее часто используемый тип приложения – приложение на базе библиотеки классов MFC,
MFC AppWizard(dll) – динамическая библиотека на базе библиотеки классов MFC,
Win32 Application – приложение, использующее библиотеку Win32 API,
Win32 Console Application – консольное приложение, т. е. приложение с минимальным интерфейсом, использующее для вывода результатов на экран окно, аналогичное окну MS-DOS в текстовом режиме,
Win32 Dynamic-Link Library – динамическая библиотека на базе библиотеки Win32 API,
Win32 Static Library – статическая библиотека на базе библиотеки Win32 API.
Последовательность действий при создании проекта следующая:
вызвать AppWizard с помощью команды File/New;
выполнить настройки будущего проекта в окне New/Projects. В этом окне нужно указать, какой тип проекта будет создан, его расположение (диск, каталог) и имя. AppWizard создаст в указанном каталоге каталог с именем проекта и в нем разместит файлы проекта. Также на этом шаге определяется, создается ли новое рабочее пространство WorkSpace или проект включается в рабочее пространство, открытое в данный момент в среде.
Дальнейшие действия будут зависеть от типа выбранного приложения. Создание некоторых типов приложений будет рассмотрено отдельно.
Чтобы закрыть проект, можно воспользоваться командой File/Close Workspace.
19.4. Редактирование проекта
На различных этапах работы с проектом возникает необходимость добавления файлов в проект или исключения их из проекта.
Добавление файла выполняется уже знакомой командой File/New… Эта команда создает новый файл и включает его в соответствующий раздел проекта на диаграмме File View в зависимости от типа создаваемого файла. На экране появляется окно New, но теперь в этом окне активна панель Files. Панель Files позволяет выбрать тип файла, задать его имя, указать расположение файла и проект, в который надо включить файл. По умолчанию файл включается в текущий проект и помещается в его каталог.
Добавление в проект созданного ранее файла можно выполнить командой Add Files to Folder, которая доступна через контекстное меню диаграммы FileView. Этой же командой можно добавить новый файл, при этом он сначала включается в проект, а потом по вашему требованию создается на диске.
Удаление файла из проекта выполняется просто клавишей Delete клавиатуры. Следует отметить, что это действие не приводит к удалению файла с диска.
К появлению новых файлов в проекте приводит также выполнение других команд, например, добавление класса в проект.
Для добавления в проект класса используется команда Insert/New Class… В открывшемся диалоговом окне указываем имя класса и при необходимости базовый класс, если для создания нового класса будем использовать механизм наследования. Результатом этих действий будет появление двух файлов со служебным кодом класса. Первый – заголовочный файл, содержит объявление класса, в раздел public которого включены конструктор без параметров и деструктор. Второй файл *.cpp содержит заготовки для конструктора и деструктора. Размещение кода класса в двух файлах отражает принцип сокрытия данных в модуле: код, помещаемый в заголовочный файл (имена класса и его свойств и методов из разделов public и protected) доступен объектам программы, в то время как прямой доступ к определению методов запрещен, код методов доступен только через заголовочный файл класса.
Пример файлов, генерируемых VC++ 6.0 при создании нового класса с именем person:
Файл person.h
// person.h: interface for the person class.
//
///////////////////////////////////////////////////
#if!defined(AFX_PERSON_H_8B9715F9_A4AA_4628_9547_10684C42D0BD_INCLUDED_)
#define AFX_PERSON_H__8B9715F9_A4AA_4628_9547_10684C42D0BD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif //_MSC_VER > 1000
class person
{
public:
person();
virtual ~person();
};
#endif //!defined(AFX_PERSON_H__8B9715F9_A4AA_4628_9547_ 10684C42D0BD //__INCLUDED_)
Файл person.cpp
//person.cpp: implementation of the person class.
//
///////////////////////////////////////////////////
#include "person.h"
///////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////
person::person()
{
}
person::~person()
{
}
Редактирование класса также выполняется специальными командами. Эти команды доступны через контекстное меню диаграммы классов ClassView и позволяют добавить в класс свойство или функцию. Для добавления свойства надо выделить редактируемый класс и выбрать команду Add Member Variable… , в открывшемся окне указать тип свойства, его имя и раздел класса, куда это свойство следует включить (public, protected или private). Для добавления функции выбирается команда Add Member Function… , для функции указывается тип возвращаемого значения, имя функции и в скобках список параметров, раздел класса, в который надо включить функцию. Если функция без параметров, скобки после имени функции можно не ставить, они будут добавлены автоматически.
При вводе и редактировании программы большую помощь оказывает контекстная подсказка в виде всплывающих примечаний, которые появляются, если навести курсор мыши на какой-либо идентификатор в тексте программы. Такая подсказка дает краткую информацию об элементе программы, например, тип переменной, список аргументов функции. Для получения более подробной справки следует обращаться в специальную справочную библиотеку MSDN (Microsoft Developer Network), которая представляет собой самостоятельный программный продукт и устанавливается в дополнение к среде VC++. Для VC++ 6.0 требуется установка версии MSDN Library 2003. Доступ к информации из библиотеки осуществляется нажатием функциональной клавиши F1.
