Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
04-09-2015_19-17-13 / Конспект лекций.doc
Скачиваний:
98
Добавлен:
01.03.2016
Размер:
1.31 Mб
Скачать

ЭВМ И ПРОГРАММИРОВАНИЕ

Предисловие

1. Лексические основы языка С++. Общие сведения о программах, лексемах и алфавите языка. Идентификаторы и служебные слова.

1.1. Общие сведения о программах, лексемах и алфавите языка

1.2. Алфавит и лексемы языка СИ++.

1.3. Идентификаторы и служебные слова

2. Константы: целые, вещественные (с пла­вающей точкой), перечислимые, символьные (литерные), строковые (строки или литерные строки)

3. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций.

3.1 Знаки операций

3.2 Унарные операции

3.3 Бинарные операции.

3.4 Приоритеты операций

4. Переменные. Определения и описания. Спецификатор typedef.

4.1 Переменные. Определения и описания.

4.2 Класс памяти

5. Базовые и производные типы данных. Массивы. Указатели, ссылки и адреса. Структуры. Поля битов. Объединения

5.1 Массивы

5.2 Указатели, ссылки и адреса объектов

5.3 Структуры

5.3 Поля битов

5.4 Объединения

6. Операторы

6.1 Оператор выражение

6.2 Пустой оператор

6.3 Составной оператор

6.4 Оператор if

6.5 Оператор switch

6.6 Оператор break

6.7 Оператор for

6.8 Оператор while

6.8 Оператор do while

6.9 Оператор continue

6.10 Оператор return

6.11 Оператор goto

7. Функции

7.1 Определения, описания и вызовы функций

7.2 Начальные (умалчиваемые) значения параметров.

7.3 Функции с переменным количеством параметров

7.4 Перегрузка функций.

7.5 Ссылки и параметры-ссылки.

7.6 Шаблоны функций.

8. Технологии программирования.

8.1 Введение.

8.2 Модульное программирование.

8.3 Нисходящее программирование.

8.4 Структурное программирование.

8.5 Понятия объекта, класса объектов.

8.6 Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.

9. Классы С++.

9.1 Тип данных - класс.

9.2 Доступность компонентов класса

9.3 Конструктор и деструктор

9.4 Компоненты-данные и компоненты-функции. Статические и константные компоненты класса

10. Указатели на компоненты класса

10.1 Указатели на компоненты- данные.

10.2 Указатели на компоненты- функции.

10.3 Указатель this

11. Друзья классов

11.1 Дружественная функция

11.2 Дружественный класс

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

12.1 Определение производного класса.

12.2 Конструкторы и деструкторы производных классов

13. Полиморфизм

13.1 Виртуальные функции.

13.2 Абстрактные классы

14. Шаблоны классов

15. Перегрузка операций

15.1 Общие сведения о перегрузке стандартных операций

15.2 Перегрузка унарных операций

15.3 Перегрузка бинарных операций

15.4 Перегрузка операций ++ и --.

15.5 Перегрузка операции вызова функции

15.6 Перегрузка операции присваивания

15.7 Основные правила перегрузки операций.

16. Обработка исключительных ситуаций

16.1 Операторы try, throw, catch

16.2 Универсальный обработчик исключений

17. Структура Windows-приложения

17.1 Разработка Windows – приложений на языке С++

17.2 Структура каркасного Windows-приложения

17.3 Главная функция WinMain()

17.4 Сообщения Windows

17.5 Класс окна. Регистрация и его характеристики

17.6 Создание и показ окна

17.7 Цикл обработки сообщений

17.8 Оконная функция

17.9 Завершение выполнения приложения

18. Препроцессор

18.1 Общие пpеобpазования

18.2 Директивы Препроцессора

18.3 Подключаемые файлы

18.4. Директива '#include'.

18.5 Однократно подключаемые файлы

18.6 Макросы

18.7 Стрингификация

18.8 Объединение

18.9 Удаление макросов

18.10 Условия

19. Разработка Windows приложений с использованием библиотеки классов MFC (microsoft foundation class library)

19.1 Некоторые сведения о программировании Windows-приложений

19.2 Преимущества использования MFC

19.4 Библиотека MFC

20. Простейшие MFC-приложения

20.1 Приложение без главного окна

20.2 Приложение с главным окном

20.3 Обработка окном сообщений

Предисловие

Язык программирования Си++ был разработан на основе языка Си Бьярном Страуструпом (Bjarne Stroustrup) и вышел за пределы его исследовательское группы в начале 80-х годов. На первых этапах разработки (1980г.) язык носил условное название "Си с классами", а в 1983 г. Рик Масситти придумал название "Си++'', что образно отра­зило происхождение этого нового языка от языка Си. Язык Си++ яв­ляется расширением (надмножеством) языка Си, поэтому программы, написанные на Си, могут обрабатываться компилятором языка Си++. Более того, в программах на языке Си++ можно использовать тексты на языке Си и обращаться к библиотечным функциям языка Си. Та­ким образом, одно из достоинств Си++ состоит в возможности ис­пользовать уже существующие программы на Си. Однако это не единственное достоинство языка. Язык Си++ был создан с учетом следующих целей: улучшить язык Си, поддержать абстракцию данных и обеспечить объектно-ориентированное про­граммирование.

Через несколько лет его прак­тического использования стандартом де-факто стала спецификация языка AT&T C++ release 2.0, разработанная в Bell Laboratories фирмы AT&T под руководством автора языка Б. Страуструпа. Затем там же появилась усовершенствованная версия 3.0 языка Си++. В настоящее время в Американском национальном институте Стандартов (ANSI) существует комитет по языку Си++. Изданное в 1990 году описание языка с комментариями принято комитетом ANSI в качестве исходного материала для стандартизации Си++. Весьма полная реализация соглашений по языку Си++ выполнена в широко распространенных компиляторах Turbo C++ и Borland C++ фирмы Borland, Microsoft Visual C++ фирмы Microsoft.

1. Лексические основы языка С++. Общие сведения о программах, лексемах и алфавите языка. Идентификаторы и служебные слова.

1.1. Общие сведения о программах, лексемах и алфавите языка

Следуя классикам, начнем с примера программы, выводящей на экран фразу "Hello, World!"

// HELLO.CPP - имя файла с программой

#include <iostream.h>

void main() {

cout << "\nHello, World!\n";

}

Основная программная единица на языке Си++ - это текстовый файл с названием <имя>.срр, где cpp - принятое расширение для программ на Си++, а имя выбирается достаточно произвольно. Для удобства ссылок и сопоставления программ с их внешними именами целесооб­разно помещать в начале текста каждой программы строку коммен­тария с именем файла, в котором она находится. Текстовый файл с программой на Си++ вначале обрабатывает препроцессор, который распознает команды (директивы) препроцессора (каждая такая ко­манда начинается с символа '#') и выполняет их. В приведенной вы­ше программе использована препроцессорная команда include <имя вставляемого файла>

Выполняя препроцессорные директивы, препроцессор изменяет исходный текст программы. Команда <include> вставляет в програм­му заранее подготовленные тексты из включаемых файлов. Сформи­рованный таким образом измененный текст программы поступает на компиляцию. Компилятор, во-первых, выделяет из поступившего к нему текста программы лексические элементы, т.е. лексемы, а затем на основе грамматики языка распознает смысловые конструкции языка (выражения, определения, описания, операторы и т.д.), построенные из этих лексем. Фазы работы компилятора здесь рассматривать нет необходимости. Важно только отметить, что в результате работы компилятора формируется объектный модуль программы.

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

В языке Си++ есть два способа задания комментариев. Традици­онный способ (ведущий свое происхождение от многих предше­ствующих языков, например, ПЛ/1, Си и т.д.) определяет коммента­рий как последовательность символов, ограниченную слева парой символов /*, а справа - парой символов */. Между этими граничны­ми парами может размещаться почти любой текст, в котором разре­шено использовать не только символы из алфавита языка Си++, но и другие символы (например, русские буквы):

/* Это комментарий */

ANSI-стандартом запрещено вкладывать комментарии друг в друга, однако многие компиляторы предусматривают режим, допус­кающий вложение комментариев.

Второй способ (введенный в Си++) определяет комментарий как последовательность символов, началом которой служат символы //, а концом - код перехода на новую строку. Таким образом, одностроч­ный комментарий имеет вид:

// Это однострочный комментарий, специфичный для языка Си++

1.2. Алфавит и лексемы языка СИ++.

В алфавит языка Си++ входят

  • прописные и строчные буквы латинского алфавита;

  • цифры 0, 1, 2, 3, 4, 5, 6 7, 8, 9;

  • специальные знаки: " { } , | [ ] ( ) + - / % \ ; ' : ? < = > _ ! & # ~ ^ . *

Из символов алфавита формируются лексемы языка:

  • идентификаторы;

  • ключевые (служебные, иначе зарезервированные) слова;

  • константы;

  • знаки операций;

  • разделители (знаки пунктуации).

Соседние файлы в папке 04-09-2015_19-17-13