ebook img

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

647 Pages·2006·1.36 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

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

Сергей Сабуров Языки программирования C и C++ УДК 681.3 ББК 32.973.26(cid:5)018.2 С418 Сабуров С.В. С418 Языки программирования C и C++. (cid:17) М.: Бук(cid:17)пресс, 2006. (cid:17) 647 с. (cid:17) (Справочное руководство пользователя персонального компьютера). ISBN 5(cid:5)8321(cid:5)0138(cid:5)2 В книге («неофициальное» руководство пользователя) полностью описаны языки программирования C и С++. Уделено особое внимание описанию языка C++ и интегрированных средах разработки программ TURBO C++ и Visual C. Язык программирования C++ — это C, расширенный введением классов, inline(cid:17)функций, перегруженных операций, перегруженных имен функций, константных типов, ссылок, операций управления свободной памятью, проверки параметров функций. Этот язык, сохранив средства ставшего общепризнанным стандартом для написания системных и прикладных программ языка С (процедурно(cid:17)ориентированный язык), ввел в практику программирования возможности нового технологического подхода к разработке программного обеспечения, получившего название «объектно(cid:17) ориентированное программирование». УДК 681.3 ББК 32.973.26(cid:5)018.2 © Сабуров С.В., составление, 2006 © Бук(cid:17)пресс, 2006 © Издательско(cid:17)торговая компания ISBN 5(cid:5)8321(cid:5)0139(cid:5)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 Видео(cid:17)функции ...........................................................................................................................................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 Отладка объектно(cid:17)ориентированных программ .......................................................................................327 Отладка резидентных программ и драйверов устройств ..........................................................................331 Турбо Си ++ Интегрированная среда разработки ...........................................................................................................342 Строка меню и меню ...................................................................................................................................342 Окна TURBO C++ ......................................................................................................................................343 Работа с экранным меню ............................................................................................................................344 Структура файла, типы данных и операторов ввода(cid:17)вывода ....................................................................351 Арифметические, логические операции и операции отношения и присваивания .................................355 Логическая организация программы и простейшее использование функций ........................................359 Логическая организация простой программы ...........................................................................................360 Использование констант различных типов ...............................................................................................360 Управляющие структуры .............................................................................................................................362 Приемы объявления и обращения к массивам, использование функций и директивы define при работе с массивами ..............................................................................................364 Трюки программирования Правило «право(cid:17)лево» .................................................................................................................................367 STLport 4.0 ..................................................................................................................................................368 Новый язык программирования от Microsoft: C# ...................................................................................370 C++ Builder ................................................................................................................................................372 Применение «умных» указателей .............................................................................................................376 Рассуждения на тему «Умных» указателей .................................................................................................382 Виртуальные деструкторы .........................................................................................................................389 Запись структур данных в двоичные файлы ............................................................................................392 Оператор безусловного перехода goto ......................................................................................................399 Виртуальный конструктор ........................................................................................................................403 Чтение исходных текстов ............................................................................................................................410 645 Содержание Функция gets() ............................................................................................................................................412 Свойства .....................................................................................................................................................414 Комментарии .............................................................................................................................................418 Веб(cid:17)программирование ...............................................................................................................................424 Ошибки работы с памятью .........................................................................................................................429 Создание графиков с помощью ploticus ...................................................................................................432 Автоматизация и моторизация приложения ..............................................................................................435 Обзор C/C++ компиляторов EMX и Watcom ...........................................................................................456 Использование директивы #import ............................................................................................................462 Создание системных ловушек Windows на Borland C++ Builder 5 ...........................................................480 Тонкости и хитрости в вопросах и ответах ..................................................................................................... Приложения Средства для разработчиков .......................................................................................................................635 Список использованной литературы .........................................................................................................640 646 Язык программирования Си Язык программирования Си Введение Си — это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Указанные преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта. Использование Си в качестве инструментального языка позволяет получать быстрые и компактные программы. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке. Хотя Си не содержит встроенных компонент языка, выполняющих ввод(cid:17)вывод, распределение памяти, манипуляций с экраном или управление процессами, тем не менее, системное окружение Си располагает библиотекой объектных модулей, в которой реализованы подобные функции. Библиотека поддерживает многие из функций, которые требуются. Это решение позволяет изолировать языковые особенности от специфики процессора, на котором выполняется результирующая программа. Строгое определение языка делает его независимым от любых деталей операционной системы или машины. В то же время программисты могут добавить в библиотеку специфические системные программы, чтобы более эффективно использовать конкретной особенности машины. Перечислим некоторые существенные особенности языка Си: ●● Си обеспечивает полный набор операторов структурного программирования. ●● Си предлагает необычно большой набор операций. Многие операции Си соответствуют машинным командам и поэтому допускают прямую трансляцию 3 Язык программирования Си в машинный код. Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего кода. ●● Си поддерживает указатели на переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно(cid:17)выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путем, как это делает машина. Си поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти. В своем составе Си содержит препроцессор, который обрабатывает текстовые файлы перед компиляцией. Среди его наиболее полезных приложений при написании программ на Си являются: определение программных констант, замена вызовов функций аналогичными, но более быстрыми макросами, условная компиляция. Препроцессор не ограничен процессированием только исходных текстовых файлов Си, он может быть использован для любого текстового файла. Си — гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения. Тем не менее, Си налагает незначительные ограничения в таких, например, действиях, как преобразование типов. Во многих случаях это является достоинством, однако программисты должны хорошо знать язык, чтобы понимать, как будут выполняться их программы. Множества символов В программах на Си используется два множества символов: множество символов Си и множество представимых символов. Множество символов Си содержит буквы, цифры и знаки пунктуации, которые имеют определенное значение для компилятора Си. Программы на Си строятся путем комбинирования в осмысленные конструкции символов из множества Си. Множество символов Си является подмножеством множества представимых символов. Множество представимых символов состоит из всех букв, цифр и символов, которые 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(cid:5)Z рассматривается как индикатор конца файла. Компилятор игнорирует любой текст, следующий за символом CONTROL(cid:5)Z. Компилятор Си игнорирует пробельные символы, если они не используются как разделители или как компоненты константы(cid:17)символа или строковых литералов. Это нужно иметь в виду, чтобы дополнительно использовать пробельные символы для повышения наглядности программы (например, для просмотра редактором текстов). Знаки пунктуации и специальные символы Знаки пунктуации и специальные символы из множества символов Си используются для различных целей, от организации текста программы до определения заданий, которые будут выполнены компилятором или откомпилированной программой. Эти символы имеют специальный смысл для компилятора Си. Их использование в языке Си описывается в дальнейшем содержании руководства. Знаки пунктуации из множества представимых символов, которые не представлены в данном списке, могут быть использованы только в строковых литералах, константах(cid:17)символах и комментариях. ESC!последовательности ESC(cid:17)последовательности — это специальные символьные комбинации, которые представляют пробельные символы и не графические символы в строках и символьных константах. Их типичное использование связано со спецификацией таких действий, как возврат каретки и табуляция, а также для задания литеральных представлений символов, таких как символ двойная кавычка. ESC(cid:17)последовательность состоит из наклонной черты влево, за которой следует буква, знаки пунктуации, «'», «"», «\» или комбинация цифр. Если наклонная черта влево предшествует символу, не включенному в этот список, то наклонная черта влево игнорируется, а символ представляется как литеральный. Например, изображение \c представляет символ "c" в литеральной строке или константе(cid:17)символе. Последовательности \ddd и \xdd позволяют задать любой символ в ASCII (Американский стандартный код 6

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.