Вы находитесь на странице: 1из 289

byMcihaelHyman andBobArnson

Hungry Minds™

HUNGRYMINDS,INC.

Bes-tSenillgfiooks•DgitailDownolads•eB-ooks•AnswerNewtokrs•e-Newselettrs•BarndedWebSetis-e-Learnnig

NewYork,NY•Celvealnd,OH•Indianapolis,IN

Майкл Хаймен Боб Арнсон

ДИАЛЕКТИКА

Москва • Санкт-Петербург Киев

2002

Хаймен Боб Арнсон ДИАЛЕКТИКА Москва • Санкт-Петербург • Киев 2002

ББК32.973.26-018.2.75

Х15

УДК 681.3.07

Компьютерное издательство ''Диалектика"

Зав. редакцией В.В. Александров

Зав. редакцией В.В. Александров Перевод с английского и

Перевод с английского и редакция П.А. Минько

По общим вопросам обращайтесь в издательство "Диалектика' 1 по адресу: infoldialcktika.com. http://vvww.dialektika.coni

infoldialcktika.com. http://vvww.dialektika.coni Х15 Хаймен, Майкл, Арнсон, Боб.
Х15
Х15

Хаймен, Майкл, Арнсон, Боб. Visual C++.NET для "чайников". : Пер. с англ. — М. : Издательский дом "Вильяме".

: Издательский дом "Вильяме". 2002. — 288 с. : ил. — Парал. тит.

2002.

288 с.

:

ил. — Парал. тит. англ.

ISBN

5-8459-0326-2

(рус.)

тит. англ. ISBN 5-8459-0326-2 (рус.) Итак, вы решили серьезно
тит. англ. ISBN 5-8459-0326-2 (рус.) Итак, вы решили серьезно

Итак, вы решили серьезно взяться за Visual C++ .NHT. Это хорошая идея, ведь вы в действительности убиваете сразу трех зайцев: в ваших руках оказывается мощный, полезный и широко распространенный инструмент. С языком С+- 1 - можно сделать очень многое. С его помощью созданы такие продукты, как Hxeel и Access. 'Jror язык также применяется при разработке управленческих информационных систем и систем целевого назначения, используемых для анализа деятельности предприятий и принятия решений в сфере управления бизнесом. И. конечно же, целые армии хакеров и не только хакеров используют C++ для создания инструментов, утилит, игр и шедевров мультимедиа. Знания, которые вы получите, изучив язык C++ .NHT. позволят создавать не просто приложения, а приложения, работающие в разных операционных системах. Возможности этого языка практически не ограничены, и вы сами в этом убедитесь, прочитав эту книгу.

убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для
убедитесь, прочитав эту книгу. Книга предназначена для

Книга предназначена для начинающих программистов.

ББК 32.973.26-018.2.75

Все названия программных продуктов являются зарешстрнрованнымиторголыми чарками соответствующих фирм. Никакая чисть настоящею издания ни в каких целях не может быть воспрошведена в какой бы го ни было форме и какими бы ю ни было средствами, будь ю электронные или механические, включая фотокопирование и запись на магнитный носитель, если на эю fiei письменного разрешения издательства Hungry Minds. Inc.

издательства Hungry Minds. Inc. Copyright © 2002 by Dialektika Computer Publishing.
издательства Hungry Minds. Inc. Copyright © 2002 by Dialektika Computer Publishing.
издательства Hungry Minds. Inc. Copyright © 2002 by Dialektika Computer Publishing.

Copyright © 2002 by Dialektika Computer Publishing. Original English language edition copyright £> 2002 by Hungry Minds, Inc.

All rights reserved including the right of reproduction in whole or in part in any form. This edition published by arrangement with the original publisher. Hungry Minds, Inc. For Dummies and Dummies Man are trademarks under exclusive license to Hungry Mindi, Inc. Used by permission.

ISBN 5-8459-0326-2

(рус )

О Компьютерное изд-во "Диалектика". 2002

ISBN 0-7645-0868-7

(англ )

V: Munarv Minds, Inc

V: Munarv Minds, Inc

2002

Оглавление

Введение

 

14

Глава 1. Что представляет собой пакет Visual C+ + .NET

Глава 1. Что представляет собой пакет Visual C+ + .NET

19

Глава

2. Что такое программа

 

25

Глава 3.

Приступаем ксозданиюпрограмм

35

Глава 4.

Принятие решений

—делосерьезное

49

Глава 5. Хороший редактор — что еще нужно бывалому программисту? 55

Глава

6. Компиляция программ, или Первые трудности 7. Типы данных — это серьезно

65

Глава

71

Глава 8. Использование переменных Глава 9. Структуры данных

81

85

Глава

10. Выразите своижелания

89

Глава 11. Ключевые слова ключ к диалогу с компьютером Глава 12. Внимание! Повышенная функциональность

с компьютером Глава 12. Внимание! Повышенная функциональность

105

117

Глава

13. Указатели 14. Масса информации? Используйте массивы! 15. Пришел, увидел, применил

129

Глава

155

Глава

165

Глава 16. Через тернии к

работающейпрограмме

171

Глава

17. Смотрите на мир объективно

189

Глава 18. Конструкторы идеструкторы

209

Глава

19. Наследование

219

Глава 20. Исключительныеситуации

237

Глава 21. Потоки данных

 

249

Глава

22. Создаем пользовательский интерфейс

255

Глава

23. Десять

синтаксических ошибок

265

Глава 24.

Вторая десятка синтаксическихошибок

271

Глава 25. Десять функций .NET Предметный указатель

 

277

280

Содержание

Введение

14
14
Часть I. Первое знакомство с Visual C++ .NET

Часть I. Первое знакомство с Visual C++ .NET

 

17

Глава 1. Что представляет собой пакет Visual C++ .NET
Глава 1. Что представляет собой пакет Visual C++ .NET

Глава 1. Что представляет собой пакет Visual C++ .NET

19

Инструменты

Visual C++

19

Компилятор, запускающий тысячипрограмм

20

Отладчик программ

20

Интегрированная среда разработкипрограмм

21

Библиотеки - хранилища электронных инструментов

21

Эти разумные утилиты

22

Помощь, которая всегда рядом

22

Не знаете с чего начать - просмотрите примерыпрограмм

22

Управляемые

и неуправляемые программы

23

Глава 2. Что такое программа

25

Введение в программирование

25

Главная функция программы

26

Стандартные подпрограммы

27

Для чего

создаются программы

28

А теперь

немного теории

31
31

Что такое объект и с чем его едят

31

Инкапсуляция

32

Наследование

32

Полиморфизм

33

Глава 3. Приступаем к созданиюпрограмм

35

Зачем нужны исходные файлы

 

35

Как все это выглядит на практике

36

С

чего начинается выполнение программы

38

Как организовать диалог с пользователем

39

Не скупитесь накомментарии

Не скупитесь накомментарии
Не скупитесь накомментарии

40

Исходный код программы HelloWorld Пару штрихов к программе Hello World Забудем о . NET

41

42

42

Отображение информации на экране

43

Печать с новой строки

44

Обратная связь: получение ответа

45

Использование библиотечных функций

45

Итак, займемся делом

 

46

Глава 4. Принятие решений - дело серьезное

49

Правильное решение может сделать вас счастливым

49

Файлы проектов сделают вашу жизнь проще

50

Решения и проекты Построениепрограмм Определение параметров нового проекта Добавление файлов к проекту

 

50

50

50

52

Что может окно Solution Explorer

 

53

Глава 5. Хороший редактор что еще нужно бывалому программисту?

55

Коды существуют для того, чтобы их редактировать

55

Приемы редактирования

 

57

Коды бывают разные - черные, белые, красные

59

Помощь, которая всегда рядом

 

60

Навигация по просторам программы

 

60

Сокрытие и отображение кодов

 

61

Поиск и автозамена

 

62

Глава 6. Компиляция программ,

или

Первые трудности

65

Начать компилировать программу очень просто

65

Синтаксические ошибки: неужели их может быть так много?! Предупреждения Почему компилятор не исправляет ошибки самостоятельно

Почему компилятор не исправляет ошибки самостоятельно

66

67

68

Компилировать можно по-разному

 

68

Часть II. Все, что вы хотели знать о C++ , но о чем боялись спросить

Часть II. Все, что вы хотели знать о C++ , но о чем боялись спросить

69

Глава 7. Типы данных - это серьезно

 

71

Строгие и нестрогие языкипрограммирования

71

Объявление переменных

 

72

Наиболее часто используемые типы данных Реже используемые типы данных Обеспечение типовойбезопасности Функции преобразованиятипов

 

72

73
73

74

75

Константы - то, что никогда не меняется Использование констант в кодахпрограммы Константы и борьба сошибками Строки как один из наиболее важных типов данных

76

77

78

78

Глава 8. Использование переменных

Глава 8. Использование переменных

 

81

Именование переменных

 

81

Определение переменных

83

Инициализация переменных

 

83

Как сделать имя информативным

84

Глава 9. Структуры данных

85

Объявление структур

 

85

Использование этих загадочных структур

 

86

Использование одних структур для создания других

86

Структуры на практике

 

87

Глава10.Выразитесвоижелания

89

Можно ли "выражаться"?

89

Простые операторы

89

Более сложные операторы

90

Оператор ++

91

Оператор >>

91

Оператор

«

92

Истина и ложь в логических выражениях

92

Оператор присвоения

94

Все об операторах

96

Работа с битами

97

Условный оператор

98

Приоритет операторов

99

Примеры работыоператоров

101

Математические функции

101

Старый формат математических функций

103

Глава 11. Ключевые слова — ключ к диалогу с компьютером

Глава 11. Ключевые слова — ключ к диалогу с компьютером

105

Великолепная тройка: ключевые слова if, for и while

106

Условный оператор

106

Оператор for

109

Пример использования цикла for

109

Повторение ради повторения

110

Вычисление факториала

110

Операторwhile

112

Ключевые слова switch и do

112

Операторswitch

113

Операторdo

114

Глава 12. Внимание! Повышенная функциональность

117

Некоторые вводные замечания

117

Создание функций

118

Использованиеаргументов

119

Функции, которые возвращают результат

120

И снова вернемся к факториалам

122

Рекурсия: спасибо мне, что есть я у меня

124

Если тип аргументов не определен

127

Значения, установленные по умолчанию

128

Глава 13. Указатели

129

Почему указатели

129

Указатели и переменные

130

Что вы! Указатели - это очень сложно

131

Информация и ее адрес

131

Безымянныеданные

131

Связанный список - размер не ограничен Использование указателей в C++ Дайте указателю адрес

Как получить значение, на которое ссылается указатель Пример программы, использующей указатели Изменение значения, на которое ссылается указатель

Изменение

значений в структурах данных

Использование стрелки Динамическое выделение памяти

132

133
133

134

134
134

134

136

136
136

136

136

Знимание - графика

137
137

Все цвета радуги

139

Перья для рисования

141

Кисточка для раскраски

142

Шрифты

142

Займемся рисованием

142

Связанные списки и графика

144

Как эта программа работает

144

Код программы

146

Вопросы безопасности

149
149

Освобождение памяти

149

Общее нарушение защиты

150

Генеральная уборка

151

Кое-что о строках

152

Подведем итог

153
153

Глава 14. Масса информации? Используйте массивы!

155

Массивы: познакомимся поближе

155
155

Это же "элементарно", Ватсон

156
156

Инициализация массива

157
157

Многомерные массивы

158
158

Класс ArrayList

159
159

Класс Stack

161

Перечислимые типы

Перечислимые типы
162
162

Безопасность при использовании перечислимых типов

162

Одно маленькое "но"

163

Глава 15. Пришел, увидел, применил

Немного теории

Почему это так важно

Правила определения области видимости

Глава 16. Через тернии к

работающей программе

165

165

166 169 171
166
169
171

Синтаксические и логические ошибки

171

Процесс отладки программы

172

Отладчик плюс редактор - и все в наших руках

173

Остановись, мгновение!

173

Шаг за шагом: движение к цели

174

Посмотрим, что получилось

175

Не нравится значение - измените его

176

Торопитесь? Нет проблем!

177

Очень торопитесь?

177

Генеральная уборка

178

Итак, приступим

178

Так где же ошибка?

180

Что теперь?

183

Но в программе по-прежнему есть ошибка

184

Устранение ошибки

184

Последние штрихи

185

Часть III. Экскурс в объектно-ориентированное программирование Глава 17. Смотрите на мир объективно

17. Смотрите на мир объективно Что такое классы и с чем их едят

Что такое классы и с чем их едят

Разберемся в деталях Членыданных Функции-члены Объявление классов Ограничение доступа Защищенныйдоступ Определение функций-членов Что делать с готовыми классами? Доступ к элементам класса Имена, используемые функциями-членами Немного практики

Управление памятью в неуправляемых программах

в неуправляемых программах Функции доступа Общие

Функции доступа

Общие рекомендации

Глава 18. Конструкторы и деструкторы

Работа "до" и "после"

Подготовительный этап Много конструкторов - много возможностей Открытые и закрытые конструкторы Заметание следов Когда объект больше не нужен Не забывайте также освобождать динамически выделяемую память

динамически выделяемую память 187 189 189 190 190 190 191 191 192 192 193 193 194

187

189

189

190

190

190

191

191

192

192

193

193

194

194

198

203

207

209

209

209

210

212

212

212

214

Классы внутри классов

215

Чтение кодов объектно-ориентированных программ

216

Глава 19. Наследование

Глава 19. Наследование

219

Что происходит при наследовании кодов

219

Наследование открытых, закрытых и защищенных элементов

221

Перегрузка функций-членов

221

Родительские связи

222

А теперь немного практики

222

Как процесс наследования отображается на конструкторах и деструкторах

224

Универсальный указатель

224

Защищенное и закрытое наследование

225

Виртуальная реальность

226

Тест на виртуальность

227

Декларация ваших виртуальных намерений

227

Когда без этого не обойтись

228

Абстрагирование от деталей

231

Искусство абстрагирования

232

Глава 20. Исключительныеситуации

237

Как это было раньше

237

Новый усовершенствованный способ обработки ошибок Вот как это выглядит на практике Гибкость - основное свойство механизма обработки исключений Определение собственных исключительных ситуаций

238

239

241

241

Поговорим о синтаксисе Все это хорошо, но несколько запутанно Наследование классов, описывающих исключения

242

245

246

Пять правил исключительного благополучия

247

Глава 21. Потоки данных

Глава 21. Потоки данных

249

.NET-классы I/O

249

Записали - прочитали

250

Повторное использование потоковых переменных Записали - прочитали Специальные команды, погружаемые в потоки данных

251

252

253

Формат

передаваемых данных

253

Кое-что о работе с файлами

254

Глава 22. Создаем пользовательский интерфейс

255

Основной набор инструментов

255

Формы

257

Наследование форм

257

Настройка формы

258

Открытие формы

258

Обработка событий

259

Объекты, которые умеют реагировать

259

Хорошие менеджеры умеют делегировать свои обязанности

260

Объявление и определение обрабатывающей событие функции

261

Добавление делегата

261

Содержание

11
11

Часть IV. Горячие десятки

263

Глава 23. Десять синтаксических ошибок

Подключаемый файл не может быть найден Пропущена точка с запятой

Не подключен заголовочный файл

Не обновлено объявление класса Использование названия класса вместо названия объекта

После объявления класса не поставлена точка с запятой В определении класса пропущено слово public:

12
12

Неправильно набранные имена переменных Использование точки вместо стрелки и наоборот Пропущена закрывающая фигурная скобка Глава 24. Вторая десятка синтаксических ошибок

Конструкторы, которые не требуют аргументов Незакрытые комментарии Несоответствие типов данных То, что работало в С, может не работать в C++ Использование ключевого слова void Конструкторы для производных классов Точка с запятой в конце строки #define Отсутствие свободного места на диске Так в чем же проблема Глава 25. Десять функций .NET

Глава 25. Десять функций .NET Console: :WriteLlne lnt32::Parse Application::Run

Console: :WriteLlne

lnt32::Parse Application::Run
lnt32::Parse
Application::Run

Console::ReadLJne

Graphics->DrawLine

Color:
Color:

Graphics->DrawString lmage::FromFile Form:;OnMouseMove Controls->Add Предметный указатель

Controls->Add Предметный указатель ;FromArgb 265 265 266 266 267 267 268 268 268 269 269 271

;FromArgb

265

265

266

266

267

267

268

268

268

269

269

271

271

272

272

273

273

274

274

274

275

277

277

277

277

278

278

278

278

279

279

279

280

Содержание

OS а £* но/га)с Майкл Хаймен (Michael Hyman) — руководитель технического

OSа£*но/га)с

Майкл Хаймен (Michael Hyman)руководитель технического отдела компании DataChannel. Ранее занимался вопросами медиатехнологий, XML и Internet. Майкл написал множество книг по компьютерной тематике, среди которых Dynamic HTML For Dummies, Visual J++ For Dummies и PC Roadkiil. Он имеет ученую степень по электронной инженерии и компь- ютерным наукам, полученную в Принстонском университете. В свободное время Майкл зани- мается серфингом, ходит в спортзал и стирает пеленки. Боб Арнсон (Bob Arnson)— разработчик программного обеспечения в крупной компью- терной компании. Боб написал несколько других книг no Visual Basic, Visual C++ и Borland C++. Также его статьи публиковались в журналах VB Tech Journal и VC++ Professional.

в журналах VB Tech Journal и VC++ Professional. Майкл Хаймен посвящает эту книгу
в журналах VB Tech Journal и VC++ Professional. Майкл Хаймен посвящает эту книгу

Майкл Хаймен посвящает эту книгу Мириам Бэс (Miriam Beth) и Габриеле Миа (Gabrielle Mia). Боб Арнсон посвящает эту книгу Марио (Mario).

Особая благодарность моей жене Саре, которая неделями терпела мои ночные писатель- ские бдения и. как следствие, мой уставший вид и сонные глаза. Также спасибо моим доче- рям, которые иногда отвлекали меня от компьютера и возвращали на землю. Спасибо читате- лям, просто за то, что они интересуются такими вопросами, как программирование на Visual C++. А также спасибо всем людям, которые приняли участие в создании этой книги.

Майкл Хаймен

Спасибо моим друзьям из Нью-Гемпшира и Мичигана за моральную помощь и поддерж- ку, которая так нужна была мне в мои нелегкие писательские будни. Спасибо моим коллегам по издательству, которые внесли свою посильную лепту в создание этой книги и благодаря которым она имеет такое прекрасное оформление. Также хочу выразить благодарность ком- пании Microsoft за новые технологические решения, появившиеся вместе со средой .NET.

решения, появившиеся вместе со средой .NET. Боб Арнсон;

Боб Арнсон;

Введение

Введение Итак, вы решили серьезно взяться за C++ .NET. Это хорошая

Итак, вы решили серьезно взяться за C++ .NET. Это хорошая идея, поскольку вы убиваете сразу трех зайцев: в ваших руках оказывается мощный, полезный и широко распространен- ный инструмент. С языком C++ можно сделать очень многое. С его помощью созданы такие продукты, как Excel и Access. Этот язык также применяется при разработке управленческих информационных систем и систем целевого назначения, используемых для анализа деятель- ности предприятий и принятия решений в сфере управления бизнесом. И, конечно же. целые армии хакеров и не только хакеров используют C++ для создания инструментов, утилит, игр н шедевров мультимедиа.

игр н шедевров мультимедиа. Знания, которые вы получите,
игр н шедевров мультимедиа. Знания, которые вы получите,
игр н шедевров мультимедиа. Знания, которые вы получите,

Знания, которые вы получите, изучив язык C++ .NET, позволят вам создавать не просто приложения, а приложения, работающие в разных операционных системах. Возможности этого языка практически не ограничены, и вы скоро сами в этом убедитесь.

и вы скоро сами в этом убедитесь. Об э/ной книге Скажем сразу,

Об э/ной книге

Скажем сразу, книга должна вам понравиться. Здесь не нужно читать главы одну за дру- гой от начала и до конца, Если вы уже знакомы с Visual Studio, пропустите главы, посвяшен- ные ей. Просмотрите содержание книги и. если найдете что-то для себя незнакомое, просто начните читать с этого места. Если же во время чтения вы вдруг уснете — не волнуйтесь, это тоже бывает. Здоровый сон еше никому не повредил. Тем, кто еще ничего не знает о C++, следует начинать чтение с самого начала, чтобы узнать не только о C++, но и о Visual Studio .NET. Хотим сразу предупредить, что язык О + vie так прост, как это может показаться вначале. Придется немного напрячь умственные способности, чтобы осилить его. Вы столкнетесь с множеством правил, приемов, концепций и терминов. Кроме того, в отличие от обычных языков программирования, О-+ реализует концепцию объ- ектно-ориентированного программирования, что вообще является нишей не для слабых умов. Вдобавок к сложностям C++ вас ожидает знакомство с массой инструментов Visual Studio ЛЕТ . В целом приложение Visual C++, имеющие 120 Мбайт надстроек, библиотек и тому подобных вещей, может внушать непосвященным благоговейный ужас. Вначале даже трудно решить, с какого конца к нему подойти. Но не все так страшно, когда у вас в руках эта книга. Она дает общее представление как о С 4 -- 1 -, так и о Visual C++. На вас не обрушится лавина технических деталей и терминов, вме- сто этого вы познакомитесь с наиболее важной информацией и общими концепциями. При- чем это будет сделано в стиле, понятном любому нормальному человеку. Эта книга не раскрывает всех возможностей языка C++. поскольку для этого понадоби- лось бы добавить в нее еше несколько сот страниц или набрать весь текст очень мелким шрифтом. Но зато вы получите достаточно знаний для того, чтобы начать писать на языке С—*- свои собственные программы.

С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать
С—*- свои собственные программы. вы utOMeffie не Можете не читать

вы utOMeffie не

Можете не читать высказывания жены Михаэля, поскольку она просто злилась на то, что ее муж уделяет больше внимания книге, чем ей. Можете не читать газеты, которые пишут о политике. Не читайте электронную почту, если она приходит вместе с фотоснимком извест- ной русской теннисистки. Если не хотите, не читайте текст, отмеченный в книге как техниче- ские подробности, поскольку эти вещи, по сути, являются второстепенными и могут вызвать интерес разве что у заядлых любителей покопаться в деталях.

разве что у заядлых любителей покопаться в деталях. Введение 14
разве что у заядлых любителей покопаться в деталях. Введение 14
разве что у заядлых любителей покопаться в деталях. Введение 14

Введение

14
14
UcxoqHbienfteqnocMUtcu Чтобы прочитать и понять эту книгу, не обязательно

UcxoqHbienfteqnocMUtcu

Чтобы прочитать и понять эту книгу, не обязательно иметь опыт программирования. Од- нако, если раньше вы уже пытались что-то программировать, например создавали макросы для электронных таблиц или баз данных, вы будете чувствовать себя во время чтения книги намного комфортнее тех, кто ранее с программированием вообще не сталкивался. Если вы уже освоили BASIC, COBOL, Pascal или даже С, научиться программировать на C++ для вас не составит большого труда. (Но если вы уже профессионал по C++, то, вероят- но, купили не ту книгу-) Вне зависимости от вашего программистского прошлого, мы все же предполагаем, что вы знаете, как запускаются приложения Windows и что представляют собой файлы и программы, Также мы предполагаем, что на вашем компьютере установлены .NET и Visual Studio .NET (если вы, конечно, хотите сами попробовать набрать приведенные в книге коды и проверить, как они работают).

и проверить, как они работают). Мак организована э*па книга
и проверить, как они работают). Мак организована э*па книга
и проверить, как они работают). Мак организована э*па книга
и проверить, как они работают). Мак организована э*па книга

Мак организована э*па книга

Книга состоит из четырех частей. В первой части дается краткий обзор Visual C++. Вы познакомитесь с основными возможностями этого языка программирования и научитесь ими пользоваться.

Во второй части дается обзор основ программирования на C++ (обратите внимание, что многие рассмотренные положения будут справедливы также и для языка С). Здесь же вы уз- наете, что такое программы .NET и как они создаются.

В третьей части вы окунетесь в мир объектно-ориентированного программирования и

программирования и расширите свои познания о среде
программирования и расширите свои познания о среде

расширите свои познания о среде .NET.

В четвертой, заключительной, части, вы найдете практические советы, позволяющие ре-

шить многие проблемы, наиболее часто возникающие у начинающих программистов.

используемые книге

используемые € книге Пиктограммы— это маленькие

Пиктограммы— это маленькие картинки, акцентирующие ваше внимание на некоторых важных вещах. Вот, что они обозначают.

Этой пиктограммой обозначаются технические подробности, которые, впрочем, читать не обязательно.

впрочем, читать не обязательно. Внимательно относитесь к

Внимательно относитесь к информации, отмеченной такой пиктограммой! Обяза- тельно постарайтесь ее запомнить. Это будет несложно, поскольку информация дается в максимально сжатом и лаконичном виде. Если же вы ее проигнорируете, потом об этом можете пожалеть.

Этой пиктограммой отмечены различные полезные советы, которые могут облег- чить вашу программистскую жизнь и избавить от ненужных проблем.

15

Введение

Такой

пиктограммой

отмечено

все,

что

касается

!„•;_• 1
!„•;_•
1

программ,

написанных

на

старом

добром

C++,

.NET дали такое пренебрежительное определение.

дальше?
дальше?

неуправляемых

которым

программ,

т.е.

среды

разработчики

На Гавайи, Тайвань, Фиджи. Но только не туда, куда посылала Михаэля эго жена, оби- женная тем, что на какое-то время он посвятил себя написанию этой книги.

Введение

16
16

ЧастьI

Первоезнакомство

cVisualC++.NET

НЕ
НЕ

Л1Л

6+ +
6+ +

о VUUAI

.

/3э&ой

Здесь дается краткий обзор Visual C++, начиная с установочного пакета и заканчивая описанием его отдельных инструментов. Вы узнаете, как создаются программы, и сможете получить обшее представление об основных принципах объектно-ориентированного программирования. Также вы увидите, как можно использовать мастера Visual C++ для создания программ .NET. Здесь же вы познакомитесь с такими важными компонентами окружения Visual C++, как компилятор, редактор кодоь и средство Solution Explorer.

Глава1

Что представляет собой пакет Visual C++ .NET

В3tfU>u иаве
В3tfU>u
иаве

> Что такое Visual C++

> Обзор возможностей Visual C++

Разница между управляемыми и неуправляемыми программамиC++ > Обзор возможностей Visual C++ к, вы решили стать программистом

к, вы решили стать программистом на языке C++. Это действительно хорошая идея, Освоив этот язык, вы дополните свое резюме, сможете создавать потрясающие приложения и находить общий язык с множеством очаровательных людей. Но главное— вы сможете сказать, что владеете самым великолепным и мощным языком программирования из всех когда-либо созданных.

из всех когда-либо созданных. Мнс/и/и/асен/ны VisualC++ Не все
из всех когда-либо созданных. Мнс/и/и/асен/ны VisualC++ Не все
из всех когда-либо созданных. Мнс/и/и/асен/ны VisualC++ Не все

Мнс/и/и/асен/ныVisualC++

Не все качественные приложения занимают много места. Увидев впервые установочный комплект Visual C++, вы, наверное, решите, что чего-то в нем не хватает,— настолько он небольшой и компактный. Казалось бы, приложение, зани- мающее множество мегабайт памяти, должно иметь более внушительный вид. Однако такое впечатление создается потому, что наиболее массивная часть почти каждого установочного пакета— руководство пользователя — поставляется не в распечатанном, а в электронном ви- де. (Таким образом не только экономится место, но и спасается несколько деревьев.) Открыв установочный пакет Visual C++, вы найдете в нем компакт-диск с программным обеспечением. На нем содержится множество инструментов, участвующих в создании про- грамм на языке C++:

|

V

компиляторы;

f

V

отладчики;

I S
I
S

интегрированная среда разработки;

I •/ системы создания приложений;

;. S

;. S

библиотеки;

i

S
S

утилиты Windows;

i

S

общие утилиты;

\ { S 1 S
\
{ S
1 S

библиотека оперативной документации;

примеры программ.

Далее в этой главе дается краткое описание этих инструментов с тем, чтобы вы имели о них обшее представление и знали, для чего устанавливаете.

Компилятор, запускающий тысячи программ

Компилятор преобразует коды из вида, понятного программистам [исходные коды), к ви- ду, воспринимаемому компьютером [выполняемые коды). В приложении Visual O + есть два компилятора:

Visual O + есть два компилятора: S строковый компилятор; •/
S
S

строковый компилятор;

•/
•/

интегрированная среда разработки.

Когда вы будете изучать описание примеров, приведенных в книге, используйте интегри- рованный компилятор, поскольку его пользовательский интерфейс проще и удобнее.

интерфейс проще и удобнее. Что представляет собой

Что представляет собой строковый компилятор

Строковый компилятор- это компилятор, не имеющий графического пользовательского интерфейса. Он быстр, но не очень дружелюбен по отношению к пользователю. Чтобы обратиться к нему, нужно набрать специального вида компактную инструкцию, подобную этой:

c l /FR /WX foo.cp p

В данном примере первый элемент является именем компилятора, который вы хотите использовать, вто- рой и третий представляют собой команды, сообщающие компилятору, что нужно делать, и наконец по- следний - это имя файла, который должен быть откомпилирован. (Использовать строковый компилятор вместо интегрированной среды разработки могут только те программисты, которые знают, например, что команда /F R применяется для отображения окна просмотра информации, а команда /w x обозначает, что все предупреждения нужно интерпретировать как ошибки. Те, для кого приведенная выше строка яв- ляется просто набором букв, использовать строковый компилятор не могут.)

В старые добрые времена известны были только строковые компиляторы. Те, кто занимается программировани- ем довольно длительное время, используют в основном строковые компиляторы, во-первых, по привычке, а во- вторых, поскольку они предоставляют возможность дополнительного использования множества замечательных инструментов. Те же, кто только начинает программировать на Visual C++, предпочитают интегрированную сре- ду разработки программ, поскольку она намного понятнее и проше в использовании.

и проше в использовании. Отладчик программ Если вы
и проше в использовании. Отладчик программ Если вы

Отладчик программ

Если вы написали программу, состоящую более чем из двух или трех строк, у вас навер- няка возникнут проблемы при се компиляции. Если же этого не произойдет, то вы либо вели- кий программист, либо скопировали коды программы из этой книги. Все возникающие при запуске программы проблемы можно разделить на две категории:

разделить на две категории: синтаксические ошибки и
разделить на две категории: синтаксические ошибки и
разделить на две категории: синтаксические ошибки и

синтаксические ошибки и логические ошибки. Синтаксические ошибки случаются тогда, ко- гда вы что-то неправильно набираете, забываете указать информацию, которая нужна компи- лятору, или некорректно использ\сте команду. Компилятор сам находит синтаксические ошибки и указывает строки, где такие ошибки встречаются. Вам придется исправить все най- денные синтаксические ошибки, иначе компилятор не сможет преобразовать набранные вами коды в выполняемые. Логические ошибки случаются тогда, когда неправильно разработана или реализована са- ма программа. Например, вы забыли набрать коды для обработки какой-то информации или даете команду отобразить на экране не те данные, которые необходимы. Программы, содер- жащие логические ошибки, процесс компиляции проходят успешно, однако выполняются не так, как вы хотите. Рассмотрим это на примере. Допустим, вы создали программу, отслеживающую количе- ство денег на вашем счете. Но при написании ее кодов забыли набрать команду, прибавляю-

набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с
набрать команду, прибавляю- 20 Часть I. Первое знакомство с

щую суммы, вносимые на счет. Или наоборот: забыли набрать команду, вычитающую из об- шей суммы деньги, снимаемые со счета. Тогда сколько бы денег вы со счета не снимапи, со- стояние счета не изменялось бы (этакий вечный источник наличных). Это пример логической ошибки. Вы забыли набрать один оператор, и в результате получилась хотя и симпатичная, но работающая неправильно программа. Исправить логические ошибки намного сложнее, чем синтаксические. Сложность заклю- чается в их поиске и локализации места возникновения. Помочь справиться с этой проблемой призван отладчик программы. Отладчик позволяет строка за строкой проследить за выпол- нением программы и просмотреть значения обрабатываемых при этом данных. Таким обра- зом, обнаружив, что какая-то переменная приняла неверное значение, вы сразу же определите место возникновения ошибки.

Интегрированная среда разработки программ

Пакет Visual C++ включает в себя интегрированную среду разработки (devent.exe), объе- диняющую множество разнообразных инструментов, значительно упрощающих процесс соз- дания программ. Если вы используете среду разработки Visual C++. нет необходимости изу- чать и запоминать принципы работы каждого инструмента в отдельности. Среда разработки Visual C++ состоит из таких основных компонентов:

I S 1 S
I S
1 S

редакторы, позволяющие набирать и модифицировать исходные коды программы; компилятор, выполняющий компиляцию кодов программы (на этом этапе отсей-

| ваются и исправляются все синтаксические ошибки);

все синтаксические ошибки); 1 V \ в S отладчик, помогающий

1 V

\

в S
в S

отладчик, помогающий исправить логические ошибки и заставить программу рабо-

тать так, как вы хотите; диспетчер проектов, позволяющий легко создавать выполняемые подпрограммы

| (файлы с расширением DLL и LIB);

I /

I /

обозреватель,

позволяющий отследить

связи между

различными

объектами

объ-

1

ектно-ориентированных программ;

 
I S ^ \ -/
I S
^
\ -/

Visual-инструменты (мастера),

с

помощью

которых

можно легко

создавать

Win-

dows-приложения; списки свойств, которые помогают контролировать отображение и поведение объ-

| ектов пользовательского интерфейса создаваемой программы.

Чтобы воспользоваться возможностями любого из этих компонентов, достаточно просто выбрать команду из раскрывающегося меню и задать настройки в диалоговом окне. Это зна- чительно упрощает процесс реализации сложных проектов, поскольку нет необходимости изучать II применять множество не совсем понятных командных строк. Читая эту книгу, вы будете иметь дело только со средой разработки Visual C++ и освоите при этом большое ко- личество различных приемов программирования.

Библиотеки — хранилища электронных инструментов

Библиотеки — это наборы заранее созданных функций и классов, которые могут быть ис- пользованы для решения многих типичных задач. Приложение Visual С+- 1 - имеет несколько библиотек. Они могут заметно облегчить процесс создания программ, поскольку позволяют использовать готовые варианты вместо разработки собственных решений. Среда .NET, no существ), является одной большой библиотекой. Библиотеки выполнения (обозначаемые аб- бревиатурой RLT — runtime libraries) содержат множество полезных функций, выполняющих математические вычисления, обработку текстовых значений и многие другие задачи. Файла- ми библиотек RLT являются libc.lib, libcmt.lib и msvcrt.lib.

RLT являются libc.lib, libcmt.lib и msvcrt.lib. Глава 1. ЧТО представляет собой

О чем говорят названия файлов библиотек

Со временем вы обратите внимание на то, что одни и те же библиотеки реализованы в нескольких вари- антах. Каждый вариант соответствует разным наборам опций, поддерживаемых библиотекой и обозна- чаемых буквой (или буквами), которая добавляется в начале или в конце названия файла библиотеки. Например, название mfc70d.lib обозначает, что это файл библиотеки MFC, выполненной в варианте для отладчика (d - debuggable version). Вот список букв, используемых для обозначения версий библиотек;

•/ D Debuggable (Отладка); •/ МТ Multithreacl (Многопоточные процессы); s О OLE
•/
D Debuggable (Отладка);
•/
МТ Multithreacl (Многопоточные процессы);
s
О OLE (Технология связывания и внедрения объектов);
s
S
Static (Статические объекты);
s
U
Unicode (Уникоды).

Эти разумные утилиты

(Уникоды). Эти разумные утилиты Visual C++ содержит набор утилит,

Visual C++ содержит набор утилит, позволяющих проследить за выполнением .NET- и Windows-программ. Обычно только опытные программисты пользуются услугами утилит, наиболее важной среди которых является Spy+-. Во время выполнения программы она ото- бражает на экране информацию о классах, применяемых этой программой. Вы можете ис- пользовать ее для отслеживания не только своих, но и чужых программ. Другие утилиты соз- даны для упрощения процесса программирования. В основном они рассчитаны на опытных программистов и предназначены для использования совместно с инструментами командной строки. Наиболее часто используемой среди них является утилита NMAKE. Но вы можете также найти для себя парочку полезных утилит, не требующих умения работать с командной строкой. Например, утилита W1NDIFF может сравнивать между собой содержимое двух фай- лов и находить в них отличия. Утилита ZOOM1N позволяет изменять размеры отображаемых объектов таким образом, чтобы они выглядели на экране именно так, как вы хотите.

экране именно так, как вы хотите. Помощь, которая всегда рядом Все.
экране именно так, как вы хотите. Помощь, которая всегда рядом Все.

Помощь, которая всегда рядом

Все. что есть в пакете Visual C++ (компиляторы, отладчики, среда разработки, библиотеки. \тилиты), должно сопровождаться документацией. Однако, чтобы не делать установочный па- кет слишком громоздким, компания Microsoft поставляет документацию в электронном виде. Причем эта документация организована в виде оперативной справочной системы, позволяющей быстро находить нужную информацию и читать ее, не выходя из среды разработки программ. Справочная система может быть открыта также в отдельном окне. В самом крайнем случае вы можете лаже подключить дополнительный монитор к своей системе и постоянно иметь перед глазами справку об инструментах и возможностях, используемых в данный момент.

используемых в данный момент. Незнаетес чего начать —
используемых в данный момент. Незнаетес чего начать —

Незнаетесчегоначатьпросмотритепримерыпрограмм

Пакет Visual C++ включает в себя множество примеров готовых программ, воспользо- вавшись которыми вы сможете быстрее и проще создавать собственные программы. Некото- рые из них демонстрируют определенные приемы программирования, другие являются гото- выми вариантами решения каких-то задач, например обработки текстовой информации. Са- мое лучшее в этих программах то, что их коды можно копировать и вставлять в коды своих программ. Это сохранит ваше время и силы и позволит сосредоточить внимание на решении более специфических проблем.

Управляемые и

Visual C++ позволяет создавать программы как для среды Windows, так и для среды Micro- soft .NET. В этой книге основное внимание уделяется вопросам разработки приложений для среды .NET, но будет также рассмотрено и создание приложений для Windows. Среда .NET, разработанная компанией Microsoft, предназначена для создания программ, работающих в Inter- net. Она включает в себя язык CLR (Common Language Runtime) и библиотеку классов. CLR является основой среды .NET-— все работает под его управлением. CLR следит за выполнением кодов и обеспечивает предоставление программам всех сервисов нижнего уровня, таких, например, как управление памятью. Библиотека классов является пртожени- ем среды .NET и содержит в себе набор готовых классов, которые вы можете использовать при создании объектно-ориентированных программ. (О том, что такое классы и для чего они нужны, вы узнаете чуть позже.)

Чтобы работать в среде .NET, программа должна быть изначально созданной для этой це- ли. Это подразумевает использование при ее создании классов .NET, но главное — она долж- на быть откомпилирована для работы в этой среде. Visual C++ может удовлетворить оба тре- бования. Коды программы, которая может работать в среде .NET, называются управляемыми.

.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных
.NET, называются управляемыми. | ,_,,.( Коды программ, написанных

|

,_,,.(

называются управляемыми. | ,_,,.( Коды программ, написанных для

Коды программ, написанных для работы в среде Windows и не предназначенных для использования в среде .NET, принято называть неуправляемыми.

Если вы не используете при разработке программы систему создания приложений, снабдить программу хорошим пользовательским интерфейсом будет отнюдь не просто. Пользователям очень нравятся программы с качественным интерфейсом, однако программистам приходится потратить немало времени и усилий, чтобы создать его. Например, чтобы создать небольшую программу для Windows, содержащую несколько пунктов меню и отображающую на экране со- общение "Hello World!", потребуется набрать от двух до четырех тысяч строк с кодами. (Программисты называют между собой такие программы Hello World. По тому, насколько легко или сложно создать программу Hello World, определяют, насколько проста и успешна та или иная система программирования.) Это действительно так, если не использовать при создании программы библиотеку классов среды .NET. Только программисты, помешанные на командах нижнего уровня, занимаются подобными глупостями, все же остальные используют среду раз- работки .МЕТ. И сложность даже не в том, что нужно набирать эти четыре тысячи строк, а в том. что нужно знать и помнить тысячи команд, используемых для управления средой Windows. Это, пожалуй, не та информация, которой стоит засорять голову.

Большинство программ на порядок сложнее, чем Hello World, и при их создании прихо- дится решить множество задач, прежде чем они заработают так, как нужно. Например, к их числу относятся такие задачи:

их числу относятся такие задачи: I S определение алгоритма
их числу относятся такие задачи: I S определение алгоритма
их числу относятся такие задачи: I S определение алгоритма

I S определение алгоритма получения сообщений Windows;

х S определение комбинаций клавиш, нажатием которых будут вызываться эти сообщения;

|

определение, в какой части программы будут храниться полученные сообщения;вызываться эти сообщения; | ; S .,S определение, какие другие

; S .,S
;
S
.,S

определение, какие другие части программы выполняются в данный момент;

регистрация имен разных частей программы.

имен разных частей программы. Обратите внимание, что ни одно из

Обратите внимание, что ни одно из этих действий не имеет никакого отношения к выводу чего-либо на экран.

Системы создания приложений позволяют автоматически решать эти и многие другие за- дачи. Например, приступив к созданию программы, вы можете воспользоваться классом Sys- tem.Windows.Forms.Application, содержащим в себе все колы, необходимые для начала напи- сания программы. В частности, этот класс содержит коды, необходимые для создания окон. Эти и подобные им классы автоматически вставляют в коды вашей программы типичные фрагменты, что дает возможность сосредоточиться на решении более важных задач. Visual C++ содержит также другие системы создания приложений, например библиотеку MFC (Microsoft Foundation Classes), включающую в себя классы C++. используемые при соз- дании Windows-программ. Библиотека ATL {Active Template Library) содержит шаблоны C++, используемые при создании объектов для модели COM (Component Object Model). Однако системы ATL и СОМ настолько сложны, что их использование вызывает трудности даже у хакеров со стажем, а потому в данной книге рассматриваться не будут.

книге рассматриваться не будут. 24 Часть I. Первое знакомство с
книге рассматриваться не будут. 24 Часть I. Первое знакомство с
книге рассматриваться не будут. 24 Часть I. Первое знакомство с
книге рассматриваться не будут. 24 Часть I. Первое знакомство с
книге рассматриваться не будут. 24 Часть I. Первое знакомство с

Глава2

Что такое программа

Вэ/Лой

Основы программированияГлава2 Что такое программа Вэ/Лой > Выражения, переменные,

> Выражения, переменные, комментарии и библиотеки

> Чтение программ

Основы объектно-ориентированного программированияи библиотеки > Чтение программ этой главе дается краткий

этой главе дается краткий оозор основных этапов создания программ: проектирова- ния, написания, компиляции и отладки. Кроме того, вам придется "проглотить" не-

много теории, касающейся объектно-ориентированного программирования. Вас также ожи- дает встреча с настоящей живой работающей .NET-программой.

м< '•^
м<
'•^

/Звес/ениевп

Проектированием программ называется этап, на котором принимается решение о том, что же именно программа должна делать. Для этого нужно четко определить проблему или круг проблем, которые должны быть решены, и выработать стратегию их решения. Написание программ — это этап, во время которого вы садитесь и набираете коды своей программы. Обычно вы набираете инструкции языков программирования высокого уровня. Например, одной строкой можно сказать компьютеру, что нужно вывести что-то на экран. В этом и следующих разделах вы познакомитесь с множеством команд языка C++, с помощью которых можно заставить компьютер делать что-нибудь полезное. Далее программу нужно откомпилировать. На этом этапе Visual C++ .NET преобразует коды C++ высокого уровня, понятные вам, в коды низкого уровня, понятные компьютеру. В процессе проектирования и написания программы обычно разбиваются на несколько отдель- ных файлов (поскольку это удобно, а иногда и полезно). В процессе компиляции программы эти файлы объединяются в приложение. После того как программа откомпилирована, ком- пьютер знает, как ее нужно выполнять. Теперь можно запустить программу на выполнение. Если она не примитивна и состоит бо- лее чем из нескольких строк, вполне вероятно наличие в ней ошибок. Поскольку ошибки не всегда бывают явными, необходимо тщательно протестировать программу, чтобы убедиться в том. что она работает именно так, как было задумано. Процесс поиска и исправления ошибок называется отладкой программы. Для поиска ошибок обычно используются услуги отладчика. Когда ошибка найдена, вы снова возвращае- тесь к этапу редактирования кодов программы для ее исправления. Все программы состоят из команд, объясняющих компьютеру, что нужно делать и как обрабатывать имеющиеся данные. Почти все действия программ сводятся к получению, об- работке и отображению (или сохранению) данных. Даже, например, программы видеоигр за- няты в основном только этим. Они получают данные, следя за нажатием клавиш, движениями

мыши или джойстика, обрабатывают данные, принимая решения, что нужно делать дальше, и затем отображают результат (например, на экране отображается следующая комната лаби- ринта и с потолка прыгают два монстра с пушками в лапах).

Языки высокого и низкого уровня

Чтобы понять разницу между языком программирования высокого уровня и языком программирования низкого уровня, сравните между собой выражение, набранное в C++ (язык высокого уровня}, и эквива- лентный ему код, набранный на языке ассемблера (низкий уровень}. Код C++:

а = 3*а - Ь*2 + 1;

Эквивалентный ему код ассемблера:

ему код ассемблера: mov eax, DWORD PTR _a$[ebp] lea eax, DWORD

mov eax, DWORD PTR _a$[ebp] lea eax, DWORD PTR[eax+eax*2] mov ecx, DWORD PTR _b$[ebp] 1 add ecx, ecx sub eax, ecx inc eax mov DWORD PTR _a$[ebp], eax

ecx, ecx sub eax, ecx inc eax mov DWORD PTR _a$[ebp], eax В действительности коды
ecx, ecx sub eax, ecx inc eax mov DWORD PTR _a$[ebp], eax В действительности коды
ecx, ecx sub eax, ecx inc eax mov DWORD PTR _a$[ebp], eax В действительности коды

В действительности коды ассемблера также относятся к более высокому уровню, чем коды, которые ком- пьютер может воспринимать непосредственно (без компиляции}. Компьютер может понимать только ма- шинный язык, представляющий любые инструкции и команды в числовом виде. Вот как выглядит фрагмент кодов машинного языка:

45

fc

8d 04

40

3b 4d

f8

03

c9

2d cl

2d cl

 

40

89

45

fc

Теперь вы можете сравнить коды языков высокого и низкого уровня и решить, язык какого уровня вы хо- тели бы использовать для написания программ.

для написания программ. Тлавяал (рунщил n/toi/tauut&t

Тлавяал (рунщил n/toi/tauut&t

Тлавяал (рунщил n/toi/tauut&t Выполнение всех программ,

Выполнение всех программ, написанных на языке О+ , начинается с функции, именуемой main . При запуске программы прежде всего выполняется первое выражение функции main . Выражение — это строка кодов, представляющая собой отдельную инструкцию для компью- тера. (Функция состоит из группы выражений, собранных вместе для решения определенной задачи. Более подробно функции будут рассмотрены в следующей главе.) Затем поочередно выполняются все остальные выражения — по одному за раз.

выражения — по одному за раз. Инструкции некоторых выражений
выражения — по одному за раз. Инструкции некоторых выражений
выражения — по одному за раз. Инструкции некоторых выражений

Инструкции некоторых выражений выполняются только в тех случаях, если справедливо какое-то условие. Такие выражения называются условными операторами. Так, строка кодов может содержать, например, следующую информацию для компьютера: "Если пользователь щелкнет на кнопке Печать, выведи открытый документ на печать'".

документ на печать'". 26 Часть I. Первое знакомство с
документ на печать'". 26 Часть I. Первое знакомство с

Переменные используются для представления данных в программе. Например, если нужно запомнить имя пользователя, можно создать переменную Имя. Затем в любой мо- мент, когда потребуется имя пользователя, можно просто сослаться на значение перемен- ной Имя. В процессе выполнения программы значения переменных могут изменяться. На- пример, можно присвоить переменной Имя значение Мартин, а потом другим выражением присвоить этой же переменной значение Степан. Но само по себе значение переменной никогда не меняется — в любом случае вы должны написать какое-нибудь выражение, ме- няющее одно значение на другое. Комментарии используются для описания того, что происходит в процессе выполне- ния программы. Вы можете добавлять их для расшифровки целей, с которыми пишутся те или иные фрагменты кодов, для фиксирования каких-то мыслей и идей, для описания решаемых задач. Добавляя комментарии, вы упрощаете чтение кодов вашей программы пользователями. Для вас комментарии также могут быть очень полезны. Если через не- которое время вы захотите внести изменения в уже набранные коды, вам, скорее всего, трудно будет вспомнить, для чего используется та или иная переменная и зачем нужно было создавать ту или иную функцию. В таких случаях, пожалуй, комментарии могут быть единственным средством, которое поможет вам вспомнить, что же именно вы хо- тели сделать, набирая эти коды. (Кроме того, в комментариях программы вы можете вы- сказать все, что наболело. Компьютеру ведь все равно, а вы избавитесь от лишнего гру- за.) При преобразовании кодов C++ в машинные коды компилятор игнорирует строки, являющиеся комментариями, и просто пропускает их. На рис. 2.1 показана небольшая программа, в которой используются функция main , вы- ражения, переменные и комментарии.

#using

<mscorlib.dll>

 

in t

nMylnt;

-•

Переменная

in t

main (void)

 

Начало функции

main

//Получение

значения

от

пользователя

Комментарий

nMylnt

=

GetNumberf);

-*

-

Выражение

 
 

if

(nMylnt

>

0)

Условный оператор

return nMylnt;

return -1;

Рис.2.1.Основныекомпоненты,изкоторыхсостоитпрограмма

CtnattqafitnMyte noqnfiotfiaMMU Коды общих для

CtnattqafitnMyte noqnfiotfiaMMU

CtnattqafitnMyte noqnfiotfiaMMU Коды общих для большинства

Коды общих для большинства программ алгоритмов хранятся в компоненте среды .NET, называемом CLR (Common Language Runtime). Например, почти все программы отображают какие-то значения на экране. Возможно, это покажется вам странным, но для выполнения такого простого действия компьютеру нужно сделать множество шагов. Вместо того чтобы писать целые наборы кодов для всех этих шагов каждый раз, когда нужно что-то вывести на экран, вы можете просто воспользоваться готовой подпро- граммой, созданной для среды .NET.

Когда вы пишете неуправляемые программы (те, которые создаются с ис- ) пользованием старой версии С-+), подпрограммы, реализующие типичные -/ алгоритмы, содержатся в так называемых библиотеках. Чем они отличаются от CLR? По сути, ничем. И тс и другие являются библиотеками. Разница только в названии. CLR может быть использован при создании программ на языках Visual Basic, О- и Visual С"! - (при этом сами библиотеки для разных языков будут несколько отличаться). Хотя CLR, по существу, является тем же набором библиотек, его возможности значительно шире возможностей стан- дартных библиотек языка О -t.

Г:сть два типа библиотек: статические и динамические. Если вы используете при создании своей программы процедуры статической библиотеки, коды этих про- цедур непосредственно копируются в текст вашей программы, увеличивая таким образом ее размер. Если же вы используете динамические библиотеки (называемые также DLL), сами процедуры не копируются в вашу программу, а вызываются в процессе ее выполнения.

н/гог/гаммы

ее выполнения. н/гог/гаммы Любая программа создается для

Любая программа создается для решения каких-то задач. При этом, перед тем как на- чать писать колы, нужно разделить задачу на несколько отдельных логических частей и за- тем создать процедуры, каждая из которых будет решать проблемы своей части. Поначалу перспектива разделения общей задачи на несколько более мелких может показаться до- вольно сложной, однако по мере приобретения опыта программирования вы научитесь де- лать по быстро и почти автоматически. (Любые хорошие компьютерные курсы уделяют лому вопросу большое внимание.)

В качестве примера рассмотрим вариант создания программы для решения обычной зада-

чи. Предположим, вам нужно вычислить площадь квадрата. (Зачем? Какая разница. Может, у вас вечеринка и вы хотите чем-то удивить своих друзей.) Вше со школы вы помните, что

площадь квадрата вычисляется как умножение его стороны на саму себя.

В контексте создания программы эта задача может быть разбита на три логические

подзадачи.

1.

Определение длины стороны квадрата.

2.

Вычисление площади квадрата путем умножения стороны на саму себя.

3.

Отображение полученного результата.

Теперь, когда общая проблема разбита на отдельные подзадачи, каждую из них следует преобразовать в коды программы, чтобы компьютер знал, какие задачи ему нужно решать. Например, на языке C++- .NET эти коды могут выглядеть так:

/ , 3^".^ г.сг. '.'оа //'Ъы'-глг.лен.'ле площади квадрата при условии, что известна

при условии, что известна / ' }\:iVM7i О~С СТОрОНЫ v r : :"!"i

/ ' }\:iVM7i

О~С

СТОрОНЫ
СТОрОНЫ
v r : :"!"i - jde
v r : :"!"i - jde
}\:iVM7i О~С СТОрОНЫ v r : :"!"i - jde "s tda f x . h" #.:sinc

"s tda f x . h"

#.:sinc

<irscorlib.dl] >
<irscorlib.dl] >

using namespace System;

//С этой строки начинается выполнение программы tifdef _UNICODE int wmain(void) ttelse int main{void) #endif

_UNICODE int wmain(void) ttelse int main{void) #endif String *pszSize; int nSize; int nArea; //Запрос от

String *pszSize; int nSize; int nArea;

//Запрос от пользователя значения длины стороны квадрата Console::WriteLine(Ь"Чему равна длина стороны квадрата?"]

//Получение ответа DszSiire = Console :: ReadLine

ответа DszSiire = Console :: ReadLine //Преобразование полученного

//Преобразование полученного значения в число nSize = nSize.Parse(pszSize);

//Вычисление площади квадрата nArea = nSize*nSize;

//Отображение результата //Обратите внимание, что для этого вначале нужно //преобразовать полученное значение в строку Conso]е::WriteLine(L"Площадь квадрата составляет {0} единиц.", nArea.ToString()};

//Ожидание, пока пользователь не остановит //выпслнение программы Console: :WriteLine (L/'Нажмите Enter, чтобь: завершить выполнение программы");

Console::ReadLine(); return 0;

}

Итак, вы только что узнали, как выглядят коды программы. Но как разобраться, для чего нужна каждая отдельная строка? Для этого сначала познакомьтесь с общими принципами чтения кодов программы (если вы их еще не знаете).

1. Начинайте читать с самого начала.

2. Читайте по одной строке.

3. Старайтесь понять, для чего нужна каждая строка.

4. Если вы чего-то не понимаете, переходите к следующей строке.

Эти же принципы используются при работе компилятора, за исключением разве что чет- вертого пункта. Далее описывается, как вы могли бы интерпретировать коды приведенной выше про- граммы. Итак, обратимся к первым двум строкам:

//SquareArea //Вычисление плошади квадрата при условии, что известна //длина его стороны

Увидев их, вы можете подумать: "Ну, в этих строках нет ничего сложного. В них говорит- ся, что эта программа вычисляет площадь квадрата исходя из длины его стороны". (Две ко- сые черты в начале строк указывают, что эти строки являются комментариями.)

строки являются комментариями.) #includ e "stdafx.h " #using usin g
#includ e "stdafx.h "
#includ e
"stdafx.h "

#using

usin g

<mscorlib.dll >
<mscorlib.dll >

namespace

System;

эт о

уже

что-т о

совсе м

непонятное .

Наверное ,

о

том ,

для

чег о

вс е

это

нужно,

я

узнаю

в

следующих

глаэах" .
глаэах" .

(Совершенно

правильный

ход

мыслей.)

 

#ifde f

^UNICODE
^UNICODE
 

i n t

wmain(void)

ttelse

 

i n t

main(void)

 

#endif

''Опять ЧТО-ТО непонятное. Пожалуй, сейчас это можно пропустить".

Strin g

*pszSize ;

i n

t

nSize ;

i n t

nArea;

"Зачем нужны зт и строк и я точно не знаю,

зт и строк и я точно не знаю, однако слов а siz e и area //Запрос

однако

слов а

siz e

и area

//Запрос от пользователя значения длины стороны квадрата

значения длины стороны квадрата (площадь) уже как-т о созвучны с

(площадь)

уже

как-т о

созвучны

с

решаемой

задачей" .

Console::WriteLine(Ь"Чеы у

равна

длина

стороны

квадрата?"! ;

//Получение

pszSize

=

ответа Console::ReadLine(} ;

//Преобразование

nSize

полученного

=

nSize.Parse(pszSize) ;

значения

в

число

(длина)

'"Все это выглядит немного странно, но в целом можно понять, что коды эти нужны для того, чтобы компьютер узнал, чему равна длина стороны квадрата".

//

nArea

Вычисление

=

площади

r.Size*nSize ;

квадрата

"Да, да! Это я понимаю! В этой строке длина стороны умножается на саму себя, и мы на- ходим площадь квадрата"'. Ну и так далее.

Закончив читать эту книгу, вы будете знать, для чего нужна каждая из встретившихся вам здесь команд. Более того, вы будете знать не только как читать коды программ, но и как их создавать. Другими словами, вы научитесь программировать.

inenefib

научитесь программировать. inenefib немного fneoftuu Вы только что

немного

fneoftuu
fneoftuu

Вы только что узнали, как выглядят коды настоящей программы на С+-=-. Однако в этой программе не были использованы возможности объектно-ориентированного программирова- ния. Язык C++ настолько популярен во многом благодаря именно этим возможностям. Поче- му? На это есть ряд причин.

I \
I
\
I S % ;• ^
I S
%
;• ^

I S Объектно-ориентированное программирование позволяет повторно использовать

одни и те же коды, что значительно экономит время и усилия, необходимые при

создании программы.

венно облегчает чтение и понимание их кодов.

небольшие компоненты и отдельно проверять работу каждого из них.

В объектно-ориентированные программы очень легко вносить изменения и добав-

;• ^ Объектно-ориентированные программы имеют хорошую структуру, что сущест-

:.

Объектно-ориентированные программы легко тестировать. Их можно разбить на

i лять новые возможности.

Основная идея объектно-ориентированного программирования проста. Данные и про- цедуры, обрабатывающие эти данные, объединяются в одно целое, называемое классом. Если нужно получить доступ к данным какого-то класса, используются процедуры этого же класса.

В старых процедурных языках программирования, напротив, данные и процедуры, их

обрабатывающие, не могли быть объединены и воспринимались как совершенно разные

компоненты.

Что такое объект и с чем его едят

В основу всего объектно-ориентированного программирования положена такая идея:

разбить решаемую задачу на группу объектов. Объекты состоят из данных и процедур, которые эти данные обрабатывают. Например, рассмотрим программу, управляющую дисководом с автоматической сменой дисков. Она может состоять из нескольких объек- тов, обрабатывающих информацию о воспроизводимых с устройства музыкальных тре- ках. Один объект, например, может использоваться для представления воспроизводимых треков, а второй для представления самого дисковода. Каждый объект должен содер- жать данные, которые его описывают (объект Трек может содержать информацию о продолжительности песни), и функции, которые оперируют этими данными (объект Трек может иметь функцию, отображающую название песни и ее продолжительность). Объединение данных и обрабатывающих их функций в отдельные объекты называется инкапсуляцией.

Уже готовые объекты можно объединять между собой для создания новых объектов. Это называется композицией. Например, можно создать объект Караоке, объединив объект ДИСКОБОЛ С объектом Микрофон. (Можно создать объект Сутки, объединив объект День с объектом Ночь.)

Например, на

основе объекта, воспроизводящего видео, можно создать объект, распространяющий видео, добавив в него функции обработки денежных переводов. Изменение существующих свойств объектов или добавление к ним новых функций для создания новых объектов называется на- следованием.

Наследование— одно из наиболее важных свойств объектно-ориентированного програм- мирования. Создавая новые объекты путем наследования кодов уже существующих рабо- тающих объектов, вы получаете ряд преимуществ.

\ 1е нужно повторно набирать те же коды: все коды, которые набраны для исходных объектов, автоматически могут быть использованы новыми объектами.

*•" Снижается вероятность возникновения ошибок: если вы точно знаете, что ис- ходный объект работал правильно, значит, любые возникшие ошибки следует искать в кодах, которые были добавлены к новому объекту при его создании. С другой стороны, если вы найдете и исправите ошибку в исходном объекте, она автоматически будет исправлена для всех других объектов, созданных из данно- го путем наследования.

Коды программы становятся легче для чтения и понимания: нужно понять, как ра- ботают исходные объекты. Понять, как работают объекты, созданные путем насле- дования, будет намного проще, поскольку вам останется только изучить, как рабо- тают добавленные к ним данные и функции.

Можно создавать новые объекты

на основе уже существующих объектов.

S
S
уже существующих объектов. S •S Еще одним свойством
уже существующих объектов. S •S Еще одним свойством
уже существующих объектов. S •S Еще одним свойством
•S
•S

Еще одним свойством объектно-ориентированного программирования является тот факт, что одна и та же функция может выполняться по-разному в зависимости от того, данные ка- кого объекта обрабатываются. Это свойство называется полиморфизмом. Например, если функция должна распечатать содержимое ячейки электронной таблицы, на печать выводится число. Вели же функция должна распечатать диаграмму, на печать выводится изображение. В обоих случаях используется одна и та же ф\нкция, но поскольку объекты разные (ячейка и диаграмма), выполняемые действия б\дуг совершенно различными.

Инкапсуляция

Инкапсуляцией называется выделение данных и функций, обрабатывающих эти данные, в отдельные 'элементы, называемые объектами или классами. Данные, в зависимости от того как они используются, иногда называют свойствами классов. Функции также иногда называ- ют методами классов. Секрет создания качественной объектно-ориентированной программы заключается в том, чтобы выделить классы, которые бы максимально точно описывали реальную решаемую проблему и которые можно было бы максимально часто повторно использовать. Поначалу эта задача может показаться довольно сложной, однако по мере приобретения практического опыта вы научитесь это делать почти автоматически.

Наследование

Ото одно из наиболее интересных свойств объектно-ориентированного программи- рования. Как отмечалось ранее, с помощью этого свойства можно создавать новые объ- екты, используя для этого уже существующие. Новый класс, созданные на основе гото- вого класса, называется производным. А тот класс, который был взят за основу, называ- ется базовым. (Иногда производные классы называются дочерними, а базовые — родительскими.')

На рис. 2.2 показано семь классов. Класс Звук является самым простым. Он содержит название воспроизводимого звука и его продолжительность. Класс Трек основан на классе Звук, а потому также содержит информацию о названии и продолжительности. Кроме то- го, он содержит данные об исполнителе и о дате записи. Класс Rock является производ- ным от класса Трек . Он содержит все элементы класса тре к (как и все элементы класса Звук) плюс еще некоторые. Таким образом, на основе любых классов можно создавать более сложные классы, содержащие в себе больше разных данных и функций для их обра- ботки. При этом каждый производный класс содержат в себе все данные и функции, кото- рые есть в базовом классе.

кото- рые есть в базовом классе. Звук Название Продолжительность

Звук

Название

Продолжительность

7

ЗвукиЖивотных

Животное

Rock

Группа

Альбом

\
\

Трек

Исполнитель

ДатаЗаписи

t
t

Классика

Дирижер

Оркестр

ПерваяСкрипка

1

AlternativeRock

Направление

Pop

Альбом

Рейтинг

Рис.2.2.Новыеклассыможносоздаватьпутемнаследованиясвойствиметодовужесоздан-

ныхклассов

Полиморфизм

При создании новых классов можно использовать не только возможность наследова- ния, но также полиморфизм для определения способа поведения новых классов. Если вы еще не запомнили все греческие слова, употребляемые в этой главе, напомним, что под полиморфизмом подразумевается возможность одних и тех же функций по-разному об- рабатывать данные, принадлежащие разным объектам. Например, класс Звук может иметь функцию Получить. Если запустить ее для объекта ЗвукиЖивотных, она может отобразить на экране сообщение, советующее взять с собой диктофон и сходить в бли- жайший зоопарк. Если запустить эту же функцию для объекта Rock, может быть пред- принята попытка открыть соответствующую Web-страницу с возможностью загрузки нужного файла.

Используя одновременно возможность наследования и полиморфизм, вы сможете легко создавать наборы подобных, но уникальных объектов. Благодаря наследованию объекты бу- дут во многом похожи друг на друга. А благодаря полиморфизму каждый из них может чем- ю оыичатьея от других. Так, если вы используете полиморфизм, то функция, прнсутствую- 1И. а я в разных объектах (такая, как функция Получить), для каждого из них будет работать по-разному.

из них будет работать по-разному. • - ; Ьслч для какой-то функции
из них будет работать по-разному. • - ; Ьслч для какой-то функции
из них будет работать по-разному. • - ; Ьслч для какой-то функции
• - ;
• - ;

Ьслч для какой-то функции полиморфизм не используется, для производного класса она будет выполняться точно так же, как и для базового. Если для класса, производного от класса

•:'-:. не перегрузить функцию "случит ь (т.е. просто наследовать ее без внесения измене- нии), то ее выполнение также будет приводить к попытке открыть ту же Web-страницу. Та- ким образом, производные классы изначально имеют ту же функциональность, что и базовые. he m же какие-то функции отличаются, значит, к ним был применен полиморфизм.

к ним был применен полиморфизм. 34 Часть I. Первое знакомство с
к ним был применен полиморфизм. 34 Часть I. Первое знакомство с

Глава3

Приступаем к созданию программ

Приступаем к созданию программ В э/Оой главе > Что такое

В э/Оой главе

> Что такое исходные файлы

Создание и выполнение управляемых программ .NET C++ .NET C++

> Создание и выполнение неуправляемых программ C++

о
о

та глава поможет вам создать свою первую программу C++. (И даже не одну.) Нач- ^ ^ нем с создания управляемой программы C++. Это дружественное определение дано разработчиками среды .NET программам, создаваемым для работы в этой среде, и обознача- ет, что при разработке этих программ предоставляется множество дополнительных возмож- ностей (благодаря CLR) и обеспечивается их корректное выполнение (благодаря правильному управлению памятью и многому другому). Также вы научитесь создавать добрые старые (или стандартные) программы C++, для которых разработчики среды .NET придумали нехорошее название— неуправляемые программы. Но вначале вы научитесь создавать то, что является основой любой программы C++ — исходные файлы.

Зачем нужны исходные файлы

Зачем нужны исходные файлы Исходные файлы, или файлы

Исходные файлы, или файлы реализации с расширением СРР (читается как С Plus Plus) либо СХХ, содержат в себе основную часть выполняемой программы. Именно здесь опреде- ляются функции, данные и ход выполнения программы. (Под ходом выполнения программы подразумевается последовательность, в которой будут выполняться отдельные выражения или части программы.) Исходные файлы состоят из выражений. Выражением является строка программы, кото- рая дает указание компьютеру выполнить какое-то действие. Например, приведенная ниже строка является выражением, которое указывает компьютеру, что необходимо вычислить площадь квадрата путем умножения длины стороны на саму себя:

nArea = nSize * nSize;

на саму себя: nArea = nSize * nSize; Каждое выражение должно

Каждое выражение должно заканчиваться точкой с запятой. Точка с запятой по- казывает компьютеру, где заканчивается одно выражение и начинается другое (так же, как на письме одно предложение заканчивается точкой, после чего начи- нается другое предложение).

Можно объединить несколько выражений, заключив их в фигурные скобки ( { пример, допустим, что есть такое выражение:

i f
i
f

чай

горячий,

подожди

немного;

}

). На-

(Команда if , которая будет более подробно рассмотрена в главе 11, указывает компьюте- ру на необходимость выполнить какое-то действие в случае, если справедливо некоторое ус- ловие.) Если вы хотите, чтобы в это же время компьютер сделал еше какое-то действие, мож- но набрать такое выражение:

мож- но набрать такое выражение: i f чай горячий {подожди немного;
i f
i
f

чай

горячий

{подожди

немного;

просмотри

почту;}

Два выражения были объединены с помощью фигурных скобок.

Открывающую и закрывающую фигурные скобки можно

также использовать для обозна-

чения начала и окончания функции. Более подробно об этом речь идет в главе \2. Если для выполнения функции требуется указание параметров, они заключаются в круг-

лые скобки. Например:

if номер заня т {немного подожди(2 минуть:); поззони еще раз; }

Таким образом функция подожди точно указывает, сколько нужно подождать, перед тем как еще раз позвонить. Узнать об этом более подробно (не о телефонных звонках, а об ис- пользовании параметров), вы сможете, прочитав главу 12. Итак, подытожим полученные знания об использовании выражений:

об использовании выражений: ; S строки заканчиваются
об использовании выражений: ; S строки заканчиваются

;

S
S

строки заканчиваются точкой с запятой (;);

1

S
S

объединение строк осущест вляется с помощью фигурных скобок ({ });

объединение строк осущест вляется с помощью фигурных скобок ({ });

\

S
S

значения параметров заключаются в круглые скобки — () .

все s0io

на

nfiatctnuice
nfiatctnuice

Пожалуй, теории пока достаточно. Самое время заняться делом. Начнем с создания ново- го проекта .NET.

1. Выберите команду File^New^Project (Файл^Создать^Проект).

File^New^Project (Файл^Создать^Проект). 2. Откроется диалоговое окно New

2. Откроется диалоговое окно New Project.

3. В разделе Project Types (Тип проекта) выберите пункт Visual C++ Project.

4. В разделе Templates (Шаблоны) выберите Managed C++ Application.

5. В поле Name (Имя) наберите Hell o World.

6. В папке Visual Studio Projects (она расположена в папке My Documents) будет создана папка Hello World. Обратите внимание на рис. 3.1. Если вы хотите создать папку Hello World в какой- нибудь другой папке, укажите ее название в поле Location (Размещение) или щелкните на кнопке Browse (Обзор), чтобы открыть окно для поиска этой папки.

HewProject

preelctTypes:

_JVsiualC*Proj-tts

:

1_jVKualC++Proejct! _JSeutoandDepolymentPro

ects

i+_|«retPrDejftS

!_JVsiualStudoi Soulotins

' ManaaedC+-V

i

Appkatian

Prcnie^ur

Dll

Managed :++

try

Ш

ii!SJ

i Appkatian Prcnie^ur Dll Managed :++ try Ш ii!SJ Empyt Managed C++ Profftct Anappcilatointhat u« a

Empyt ManagedC++ Profftct

Anappcilatointhat

a M
a
M

^ E

-ten»msfenCi+.

fajme:

Locator:

&ddto^oJuotin

-HdolA'o'rW

i С >p«une

nts arid Se'tings^Bdrriian

jkjseSolution

MyDocurceri

•№
•№

•*\&owse.,.}

•

ссл.-ЛВаг ^ J
ссл.-ЛВаг
^
J

otfejctwBi becreated

-

son'iMv Documents\VimalStudioProiecB\HeloW»ld.

I
I
- son'iMv Documents\Vimal Studio ProiecB\HeloW»ld. I - ncef i Рис.

- ncef

i

Рис.З.1.ИспользованиедиалоговогоокнаNewProject

длясозданияпроектаHelloWorld

7.

Щелкните на кнопке ОК. Visual C++ создаст целый набор файлов, принадлежащих одному проекту. Один или несколько создаваемых проектов составляют одну задачу {solution). Более подробно о задачах речь идет в главе 4. Окно Solutin Explorer (Разработчик задач), показанное на рис. 3.2, отображает файлы, из которых состоит проект Hello World.

SolutionExplorer-HelbWorld

проект Hello World. SolutionExplorer -HelbWorld 5olution'HelloWorid'(l project) VbrUj •~ j

5olution'HelloWorid'(lproject)

VbrUj

•~jSourceFiles

j£] HelloWorid.cpp

ij Assemblylnfo.cpp

•~ j SourceFiles j£] HelloWorid.cpp ij Assemblylnfo.cpp \£\ stdafx.cpp C^ HeaderFiles У У stdafx.h

\£\stdafx.cpp

C^HeaderFiles

У У
У
У

stdafx.h

?"""!ResourceFiles

ReadMe.txt

У У stdafx.h ?"""! ResourceFiles ReadMe.txt i!3 Solution Explorer \Щ Рис. З.2.
У У stdafx.h ?"""! ResourceFiles ReadMe.txt i!3 Solution Explorer \Щ Рис. З.2.

i!3 Solution Explorer

Рис. З.2. З.2.

можноувидетьфайлы,используемые

S окне

Solution

Explorer

даннымпроектом

Все эти файлы были созданы для того, чтобы можно было реализовать простую програм- му, отображающую на экране сообщение Hell o World. Чтобы увидеть исходные коды про- граммы, дважды щелкните в окне Solution Explorer на значке HelloWorid. cpp. Этот файл расположен в папке Source Files (Исходные файлы) проекта Hello World. К счастью, эта простая программа, отображающая на экране сообщение Hell o World, может быть создана автоматически. Для этого выполните следующее.

1.

Выберите команду Debug s Start

Выберите команду Debug s Start

Without Debugging (Отладка'ФЗапустить без

отладки). Visual C++ отобразит сообщение о том, что проект HelloWorid - Debug Win32 явля- ется устаревшей программой.

2.