Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сабуров С.В. - Язык программирования C и C++ - 2006

.pdf
Скачиваний:
312
Добавлен:
13.08.2013
Размер:
1.42 Mб
Скачать

Сергей Сабуров

Языки программирования

C и C++

УДК 681.3 ББК 32.973.26 018.2

С418

Сабуров С.В.

С418 Языки программирования C и C++. М.: Бук пресс, 2006. 647 с. (Справочное руководство пользователя персонального компьютера).

ISBN 5 8321 0138 2

В книге («неофициальное» руководство пользователя) полностью описаны языки программирования C и С++. Уделено особое внимание описанию языка C++ и интегрированных средах разработки программ TURBO C++ и Visual C. Язык программирования C++ — это C, расширенный введением классов, inline функций, перегруженных операций, перегруженных имен функций, константных типов, ссылок, операций управления свободной памятью, проверки параметров функций. Этот язык, сохранив средства ставшего общепризнанным стандартом для написания системных и прикладных программ языка С (процедурно ориентированный язык), ввел в практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название «объектно ориентированное программирование».

УДК 681.3 ББК 32.973.26 018.2

 

© Сабуров С.В., составление, 2006

 

© Бук пресс, 2006

 

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

ISBN 5 8321 0139 2

МиК, оформление,2006

Содержание

Содержание

Язык программирования Си

 

Введение ...........................................................................................................................................................

3

Множества символов .....................................................................................................................................

4

Константы .....................................................................................................................................................

10

Идентификаторы ..........................................................................................................................................

14

Ключевые слова ............................................................................................................................................

15

Комментарии ................................................................................................................................................

16

Лексемы .........................................................................................................................................................

17

Исходная программа ....................................................................................................................................

18

Исходные файлы ..........................................................................................................................................

19

Выполнение программ .................................................................................................................................

21

«Время жизни» и «Видимость» ....................................................................................................................

22

Классы имен .................................................................................................................................................

24

Объявления ....................................................................................................................................................

27

Спецификаторы типов .................................................................................................................................

28

Область значений величин ..........................................................................................................................

29

Деклараторы ..................................................................................................................................................

30

Объявления переменной ..............................................................................................................................

34

Классы памяти ..............................................................................................................................................

45

Инициализация ............................................................................................................................................

51

Объявления типов ........................................................................................................................................

54

Имена типов ..................................................................................................................................................

55

Выражения и присваивания .........................................................................................................................

56

Операнды ......................................................................................................................................................

57

Операции .......................................................................................................................................................

63

Операции присваивания ..............................................................................................................................

72

Старшинство и порядок выполнения .........................................................................................................

75

Побочные эффекты ......................................................................................................................................

75

Преобразования типов .................................................................................................................................

76

Операторы ......................................................................................................................................................

80

Функции .........................................................................................................................................................

90

Язык программирования С++

 

Введение .........................................................................................................................................................

98

Лексика ........................................................................................................................................................

101

643

Содержание

Синтаксис ....................................................................................................................................................

106

Область видимости ......................................................................................................................................

106

Определения ................................................................................................................................................

108

Компоновка .................................................................................................................................................

108

Классы памяти .............................................................................................................................................

108

Основные типы ............................................................................................................................................

109

Производные типы ......................................................................................................................................

110

Объекты и LVALUE (адреса) .....................................................................................................................

110

Символы и целые .........................................................................................................................................

111

Преобразования ...........................................................................................................................................

112

Выражения и операции ...............................................................................................................................

114

Описания .....................................................................................................................................................

127

Спецификаторы класса памяти ..................................................................................................................

128

Описатели .....................................................................................................................................................

131

Описания классов ........................................................................................................................................

137

Инициализация ...........................................................................................................................................

150

Перегруженные имена функций .................................................................................................................

157

Описание перечисления ..............................................................................................................................

158

Описание Asм ...............................................................................................................................................

159

Операторы ...................................................................................................................................................

159

Внешние определения ................................................................................................................................

165

Командные строки компилятора ...............................................................................................................

167

Обзор типов .................................................................................................................................................

170

Соображения мобильности ........................................................................................................................

174

Свободная память .......................................................................................................................................

175

Справочник по работе с DOS

 

Управление памятью в DOS .......................................................................................................................

177

Модели памяти ...........................................................................................................................................

182

Программирование со смешанными моделями и модификаторы адресации ........................................

185

Оверлеи (VROOMM) ...................................................................................................................................

192

Математические операции .........................................................................................................................

202

Видео функции ...........................................................................................................................................

211

Библиотеки DOS .........................................................................................................................................

236

Отладчик Turbo Debugger

 

Назначение отладчика .................................................................................................................................

245

Установка и настройка Turbo Debugger .....................................................................................................

246

Выполнение программ с отладчиком ........................................................................................................

255

Интерфейс отладчика .................................................................................................................................

269

644

 

Содержание

Специальные средства Turbo Debugger .....................................................................................................

274

Точки останова ...........................................................................................................................................

281

Окно Log ......................................................................................................................................................

291

Окно Watches ...............................................................................................................................................

293

Окно Variables .............................................................................................................................................

295

Окна Inspector .............................................................................................................................................

297

Окно Stack ...................................................................................................................................................

299

Вычисление выражений .............................................................................................................................

301

Отладка на уровне ассемблера ...................................................................................................................

308

Отладка в Windows ......................................................................................................................................

318

Трассировка исключительных ситуаций операционной системы ..........................................................

325

Отладка объектно ориентированных программ .......................................................................................

327

Отладка резидентных программ и драйверов устройств ..........................................................................

331

Турбо Си ++

 

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

342

Строка меню и меню ...................................................................................................................................

342

Окна TURBO C++ ......................................................................................................................................

343

Работа с экранным меню ............................................................................................................................

344

Структура файла, типы данных и операторов ввода вывода ....................................................................

351

Арифметические, логические операции и операции отношения и присваивания .................................

355

Логическая организация программы и простейшее использование функций ........................................

359

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

360

Использование констант различных типов ...............................................................................................

360

Управляющие структуры .............................................................................................................................

362

Приемы объявления и обращения к массивам, использование функций

 

и директивы define при работе с массивами ..............................................................................................

364

Трюки программирования

 

Правило «право лево» .................................................................................................................................

367

STLport 4.0 ..................................................................................................................................................

368

Новый язык программирования от Microsoft: C# ...................................................................................

370

C++ Builder ................................................................................................................................................

372

Применение «умных» указателей .............................................................................................................

376

Рассуждения на тему «Умных» указателей .................................................................................................

382

Виртуальные деструкторы .........................................................................................................................

389

Запись структур данных в двоичные файлы ............................................................................................

392

Оператор безусловного перехода goto ......................................................................................................

399

Виртуальный конструктор ........................................................................................................................

403

Чтение исходных текстов ............................................................................................................................

410

645

Содержание

Функция gets() ............................................................................................................................................

412

Свойства .....................................................................................................................................................

414

Комментарии .............................................................................................................................................

418

Веб программирование ...............................................................................................................................

424

Ошибки работы с памятью .........................................................................................................................

429

Создание графиков с помощью ploticus ...................................................................................................

432

Автоматизация и моторизация приложения ..............................................................................................

435

Обзор C/C++ компиляторов EMX и Watcom ...........................................................................................

456

Использование директивы #import ............................................................................................................

462

Создание системных ловушек Windows на Borland C++ Builder 5 ...........................................................

480

Тонкости и хитрости в вопросах и ответах .....................................................................................................

 

Приложения

 

Средства для разработчиков .......................................................................................................................

635

Список использованной литературы .........................................................................................................

640

646

Язык программирования Си

Язык программирования Си

Введение

Си — это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать.

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

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

Перечислим некоторые существенные особенности языка Си:

Си обеспечивает полный набор операторов структурного программирования.

Си предлагает необычно большой набор операций. Многие операции Си соответствуют машинным командам и поэтому допускают прямую трансляцию

3

Язык программирования Си

в машинный код. Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего кода.

Си поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта.

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

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

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

Множества символов

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

Множество символов Си является подмножеством множества представимых символов. Множество представимых символов состоит из всех букв, цифр и символов, которые

4

Язык программирования Си

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

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

Буквы и цифры

Множество символов Си включает большие и малые буквы из английского алфавита и 10 десятичных арабских цифр:

● большие английские буквы:

A B C D E F G H I J K L M N O P Q R T U V W X Y Z

● малые английские буквы:

a b c d e f g h i j k l m n o p q r t u v w x y z

● десятичные цифры:

0 1 2 3 4 5 6 7 8 9

Буквы и цифры используются при формировании констант, идентификаторов и ключевых слов. Все эти конструкции описаны ниже.

Компилятор Си рассматривает одну и ту же малую и большую буквы как отличные символы. Если в данной записи использованы малые буквы, то замена малой буквы a на большую букву A сделает отличной данную запись от предшествующей.

Пробельные символы

Пробел, табуляция, перевод строки, возврат каретки, новая страница, вертикальная табуляция и новая строка — это символы, называемые пробельными, поскольку они имеют то же самое назначение, как и пробелы между словами и строками на печатной странице. Эти символы разделяют объекты, определенные пользователем, такие, как константы и идентификаторы, от других объектов программы.

5

Язык программирования Си

Символ CONTROL Z рассматривается как индикатор конца файла. Компилятор игнорирует любой текст, следующий за символом CONTROL Z.

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

Знаки пунктуации и специальные символы

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

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

ESC!последовательности

ESC последовательности — это специальные символьные комбинации, которые представляют пробельные символы и не графические символы в строках и символьных константах.

Их типичное использование связано со спецификацией таких действий, как возврат каретки и табуляция, а также для задания литеральных представлений символов, таких как символ двойная кавычка. ESC последовательность состоит из наклонной черты влево, за которой следует буква, знаки пунктуации, «, «"», «\» или комбинация цифр.

Если наклонная черта влево предшествует символу, не включенному в этот список, то наклонная черта влево игнорируется, а символ представляется как литеральный. Например, изображение \c представляет символ "c" в литеральной строке или константе символе.

Последовательности \ddd и \xdd позволяют задать любой символ в ASCII (Американский стандартный код

6

Соседние файлы в предмете Программирование на C++