Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

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

Покупка
Новинка
Артикул: 046437.04.99
Доступ онлайн
1 000 ₽
В корзину
В систематизированном виде излагаются основные понятия и описываются возможности языка C++. При этом основное внимание уделяется объяснению того, как теми или иными возможностями пользоваться. Язык программирования C++ - это универсальный язык программирования, который позволяет разрабатывать программы в соответствии с разными парадигмами: процедурным программированием, объектно-ориентированным, параметрическим. В данном курсе рассматриваются все основные возможности языка C++ и их применение при разработке объектноориентированных программ. Дается краткое описание библиотек языка C++, необходимых для создания типичных программ.
Фридман, А. Л. Язык программирования Си++ : краткий курс / А. Л. Фридман. - Москва : ИНТУИТ, 2016. - 169 с. - ISBN 5-9556-0017-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2162627 (дата обращения: 08.09.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Язык программирования C++

2-е издание, исправленное

Фридман А.Л.

Национальный Открытый Университет “ИНТУИТ”
2016

2

УДК 32.973.26-018.1
ББК 7
Ф88
Язык программирования Си++ / Фридман А.Л. - M.: Национальный Открытый Университет
“ИНТУИТ”, 2016 (Основы информационных технологий)
ISBN 5-9556-0017-5

В систематизированном виде излагаются основные понятия и описываются возможности языка C++.
При этом основное внимание уделяется объяснению того, как теми или иными возможностями
пользоваться.
Язык программирования C++ – это универсальный язык программирования, который позволяет
разрабатывать программы в соответствии с разными парадигмами: процедурным
программированием, объектно-ориентированным, параметрическим. В данном курсе
рассматриваются все основные возможности языка C++ и их применение при разработке объектноориентированных программ. Дается краткое описание библиотек языка C++, необходимых для
создания типичных программ.

(c) ООО “ИНТУИТ.РУ”, 2004-2016
(c) Фридман А.Л., 2004-2016

3

Начальные сведения о языке

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

История и назначение языка Си++

Разработчиком языка Си++ является Бьерн Страуструп. В своей работе он опирался на
опыт создателей языков Симула, Модула 2, абстрактных типов данных. Основные
работы велись в исследовательском центре компании Bell Labs.

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

На сегодня стандарт утвержден Международной организацией по стандартизации ISO.
Его номер ISO/IEC 14882. ISO бесплатно стандарты не распространяет. Его можно
получить на узле американского национального комитета по стандартам в
информационных технологиях: ссылка: www.ncits.org - http://www.ncits.org

В России следует обращаться в ВНИИ Сертификации:

ссылка: http://www.vniis.ru - http://www.vniis.ru

Проекты стандарта имеются в свободном доступе:

ссылка: http://www.research.att.com/~bs/bs_faq.html http://www.research.att.com/~bs/bs_faq.html

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

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

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

4

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

Обработка сложных структур данных – текста, бизнес-информации, Internet-страниц и
т.п. – одна из наиболее распространенных возможностей применения языка. В
прикладном программировании, наверное, проще назвать те области, где язык Си++
применяется мало.

Разработка графического пользовательского интерфейса на языке Си++ выполняется, в
основном, тогда, когда необходимо разрабатывать сложные, нестандартные
интерфейсы. Простые программы чаще пишутся на языках Visual Basic, Java и т.п.

Программирование для Internet в основном производится на языках Java, VBScript, Perl.

В целом надо сказать, что язык Си++ в настоящее время является одним из наиболее
распространенных языков программирования в мире.

Простейшая программа на языке Си++

Самая короткая программа на языке Си++ выглядит так:

// Простейшая программа
int main() { return 1; }

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

main – это имя главной функции программы. С функции main всегда начинается
выполнение. У функции есть имя ( main ), после имени в круглых скобках
перечисляются аргументы или параметры функции (в данном случае у функции main
аргументов нет). У функции может быть результат или возвращаемое значение. Если
функция не возвращает никакого значения, то это обозначается ключевым словом void.
В фигурных скобках записывается тело функции – действия, которые она выполняет.
Оператор return 1 означает, что функция возвращает результат – целое число 1.

Если мы говорим об объектно-ориентированной программе, то она должна создать
объект какого-либо класса и послать ему сообщение. Чтобы не усложнять программу,
мы воспользуемся одним из готовых, предопределенных классов – классом iostream
(поток ввода-вывода, базовый класс для iostream). Этот класс определен в файле
заголовков ” iostream.h “. Поэтому первое, что надо сделать – включить файл
заголовков в нашу программу:

#include <iostream.h>
int main() { return 1; }

Кроме класса, файл заголовков определяет глобальный объект этого класса cout.

5

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

#include <iostream.h>
int main()
{
   std::cout << "Hello, world!" << std::endl;
   return 1;
}

Операция сдвига << для класса iostream определена как “вывести”. Таким образом,
программа посылает объекту cout сообщения “вывести строку Hello, world!” и
“вывести перевод строки” ( endl обозначает новую строку). В ответ на эти сообщения
объект cout выведет строку ” Hello, world!” на консоль и переведет курсор на
следующую строку.

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

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

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

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

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

Компилирование и выполнение программ в среде Windows

Если Вы используете персональный компьютер с операционной системой Microsoft 
Windows 98 
, Windows NT 
 или Windows 2000 
, то компилятор у Вас, скорее

всего, Visual C++ 
. Этот компилятор представляет собой интегрированную среду

программирования, т.е. объединяет текстовый редактор, компилятор, отладчик и еще
ряд дополнительных программ. Мы предполагаем, что читатель работает с версией 5.0
или старше. Версии младше 4.2 изучать не имеет смысла, поскольку реализация
слишком сильно отличается от стандарта языка.

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

6

Projects в списке различных типов выполняемых файлов выберите Win32 Console

Application. Убедитесь, что отмечена кнопка Create new workspace. Затем следует
набрать имя проекта (например, test ) в поле Project name и имя каталога, в котором
будут храниться все файлы, относящиеся к данному проекту, в поле Location. После
этого нажмите кнопку ” OK “.

Теперь необходимо создать файл. Опять в меню File выберите атрибут New. В
появившемся диалоге в закладке File отметьте text file. По умолчанию новый файл
будет добавлен к текущему проекту test, в чем можно убедиться, взглянув на поле Add

to project. В поле Filename нужно ввести имя файла. Пусть это будет main.cpp.
Расширение .cpp – это стандарт для файлов с исходными текстами на языке Си++.
Поле Location должно показывать на каталог C:\Work. Нажмите кнопку ” OK “.

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

Компиляция выполняется с помощью меню Build. Выберите пункт Build test.exe
(этому пункту меню соответствует функциональная клавиша F7 ). В нижней части
экрана появятся сообщения компиляции. Если Вы сделали опечатку, двойной щелчок
мышью по строке с ошибкой переведет курсор в окне текстового редактора на
соответствующую строку кода. После исправления всех ошибок и повторной
компиляции система выдаст сообщение об успешной компиляции и компоновке (пока
мы не будем уточнять, просто вы увидите сообщение Linking ).

Готовую программу можно выполнить с помощью меню Build, пункт Execute

test.exe. То же самое можно сделать, нажав одновременно клавиши CTRL и F5. На
экране монитора появится консольное окно, и в нем будет выведена строка ” Hello,

world!”. Затем появится надпись “Press any key to continue”. Эта надпись означает, что
программа выполнена и лишь ожидает нажатия произвольной клавиши, чтобы закрыть
консольное окно.

Компилирование и выполнение программ в среде Unix

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

Редактор Emacs предпочтительнее, поскольку в нем есть специальный режим
редактирования программ на языке Си++. Этот режим включается автоматически при
редактировании файла с именем, оканчивающимся на ” .cpp ” или ” .h “. Но при
отсутствии Emacs сгодится любой текстовый редактор.

Первое, что надо сделать – это поместить текст программы в файл. В редакторе
следует создать файл с именем main.cpp (расширение cpp используется для текстов
программ на языке Си++). Наберите текст программы из предыдущего параграфа и
сохраните файл.

Теперь программу надо откомпилировать. Команда вызова компилятора зависит от

7

того, какой компилятор Си++ установлен на компьютере. Если используется
компилятор GNU C++, команда компиляции выглядит так:

gcc main.cpp

Вместо gcc может использоваться g++, c++, cc. Уточнить это можно у системного
администратора. Отметим, что у широко распространенного компилятора GNU C++
есть ряд отличий от стандарта ISO.

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

a.out

Результатом выполнения будет вывод на экран терминала строки:

Hello, world!

8

Имена, переменные и константы

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

Имена

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

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

abc A12 NameOfPerson    BYTES_PER_WORD

Отметим, что abc и Abc – два разных идентификатора, т.е. заглавные и строчные
буквы различаются. Примеры неправильных идентификаторов:

12X a-b

Ряд слов в языке Си++ имеет особое значение и не может использоваться в качестве
идентификаторов. Такие зарезервированные слова называются ключевыми.

Список ключевых слов:

№ п/п Ключевое слово Описание 
1 
and альтернатива оператору && 

2 
and_eq 
альтернатива оператору &= 

3 
asm вставить код на ассемблере 

4 
auto объявить локальную переменную 

5 
bitand 
альтернатива оператору bitwise & 

6 
bitor альтернатива оператору | 

7 
bool объявить булеву переменную 

8 
break 
выйти с цикла 

9 
case определенная ветка в операторе ветвления switch 

10 catch 
обработать исключение от throw 

11 char объявить символьную переменную 
12 class объявить класс 
13 compl 
альтернатива оператору ~ 

14 const 
объявить неизменяемые данные или функцию, которая не изменяет данных 

15 const_cast 
приведение типа от константной переменной 

16 continue пропустить код до конца цикла и начать новую итерацию 
17 default 
вариант по умолчанию в switch 

18 delete 
освобождение памяти, выделенной new 

19 do оператор цикла 
20 double 
объявить вещественное число двойной точности 

9

dynamic_cast выполнить приведение типов во время выполнения 
22 else ветка оператора if, которая выполняется при ложном условии 
23 enum 
создание перечисляемого типа 

24 explicit использовать данный конструктор только при полном соответствии типов 
25 export 
позволить разделить объявление и реализацию шаблона 

26 extern 
указание компилятору, что переменная объявлена в другом файле 

27 false константа для ложного значения булевой переменной 
28 float объявить вещественную переменную 
29 for оператор цикла 
30 friend 
разрешить другим функциям доступ к приватным данным класса 

31 goto безусловный переход 
32 if 
оператор условия 

33 inline 
оптимизация вызовов для функций (встраиваемые функции) 

34 int объявить переменную целого типа 
35 long объявить следующий тип длинным 
36 mutable перекрыть константность 
37 namespace 
определить новое пространство имен 

38  new выделить динамическую память под новую переменную 
39 not альтернатива оператору ! 
40 not_eq 
альтернатива оператору != 

41 operator создание перегруженных операторов 
42 or 
альтернатива оператору || 

43 or_eq 
альтернатива оператору |= 

44 private 
объявить приватное поле класса 

45 protected объявить защищенное поле класса 
46 public 
объявить общее поле класса 

47 register запрос компилятору на оптимизацию переменной по скорости 
48 reinterpret_cast 
изменить тип переменной 

49 return 
возврат из функции 

50 short объявить короткое целое 
51 signed 
сделать данный целый тип знаковым 

52 sizeof 
возвратить размер переменной или типа 

53 static 
создать статическую переменную 

54 static_cast 
сделать не полиморфное приведение типов 

55 struct 
определить новую структуру 

56 switch 
оператор ветвления 

57 template создать шаблонную функцию 
58 this указатель на текущий объект 
59 throw 
выбросить исключение 

60 true константа для истинного значения булевой переменной 
61 try выполнить код, который может выкинуть исключение 
62 typedef создание нового типа с существующего 
63 typeid 
задать описание объекта 

64 typename объявить класс или иной новый тип данных 
65 union 
структура, содержащая несколько переменных в одной области памяти 

66 unsigned объявить беззнаковое целое 
67 using 
импортировать полностью или частично указанное пространство имен внутрь текущ

10

Доступ онлайн
1 000 ₽
В корзину