- •Оглавление
- •1.2. Свойства языков программирования
- •1.3. Основные парадигмы программирования Процедурное программирование
- •Модульное программирование
- •Абстракция данных
- •Объектно-ориентированное программирование
- •Непечатные символы
- •Тема 2 Типы данных
- •2.1. Понятие переменной и объявление переменных
- •Объявление переменных
- •Встроенные типы данных
- •Размер памяти, выделяемой под встроенные типы данных
- •2.2. Константы и перечисления Константные переменные
- •Перечисления
- •2.3. Операции и выражения
- •Мультипликативные операции
- •Операции сравнения
- •Побитовые логические операции
- •Побитовые операции
- •Комментарии
- •Оператор while(пока)
- •Оператор do/while(выполнять/пока)
- •Оператор for(цикл)
- •Оператор множественного выбора switch
- •Операторы breakиcontinue
- •Тема 4 Массивы
- •4.1.Определение, объявление и инициализация массивов
- •Объявления и инициализация массивов в программе
- •4.2. Сортировка массивов Пузырьковая сортировка
- •Сортировка вставками
- •4.3. Поиск в массивах Линейный поиск
- •Двоичный поиск
- •4.4. Многомерные массивы
- •Тема 5 Указатели Объявления и инициализация переменных указателей
- •5.1. Операции над указателями
- •5.2. Выражения и арифметические действия с указателями
- •5.3. Взаимосвязи между указателями и массивами
- •5.4. Массивы указателей
- •5.5. Динамическое выделение памяти под массивы
- •Тема 6 Функции
- •6.2. Определения функций
- •Генерация случайных чисел
- •6.3. Классы памяти и область действия Классы памяти
- •Область действия
- •6.4. Рекурсия
- •6.5. Ссылки и ссылочные параметры
- •Вызов функций по ссылке с аргументами указателями
- •6.6. Использование спецификатораconstс указателями
- •6.7. Перегрузка функций
- •Аргументы по умолчанию
- •6.8. Передача массивов в функции
- •6.9. Указатель на функцию
- •6.10. Командная строка аргументов
- •6.11 Неопределенное количество аргументов
- •Тема 7 Введение в обработку строк
- •7.1. Работа со строками в с
- •Понятие символов и строк в с
- •Функции для работы со строками
- •Определение длины строки
- •Сложение двух строк (конкатенация)
- •Добавление к исходной строке указанного количества символов.
- •Копирование строки в другую строку
- •Сравнение строк
- •Получение строки от пользователя
- •Тема 8 Работа с файлами
- •Открытие файла
- •Чтение из файла символа или строки символов
- •Запись символа или строки символов в файл
- •Смещение внутри файла
- •Значения параметра fromwhereфункцииfseek
- •Закрытие файла
- •Тема 9 Компоновка программ и препроцессор
- •9.1. Компоновка программ
- •Проблема использования общих функций и имен
- •Использование включаемых файлов
- •9.2. Препроцессор
- •Определение макросов
- •Условная компиляция
- •Дополнительные директивы препроцессора
- •Тема 10 Структуры
- •10.1. Определение структур и доступ к элементам
- •Доступ к элементам структур
- •Использование структур
- •10.2. Битовые поля
- •10.3. Объединения
- •10.4. Построение связных списков на основе структур с самоадресацией
- •Создание простого связного списка
- •Очереди
- •Деревья
- •Список рекомендуемой литературы
Комментарии
Хорошая программа должна содержать комментарии для документирования. Комментарии могут начинаться и заканчиваться в любом месте программы. В С++ используется два вида комментариев: однострочные и многострочные.
Однострочные комментарии начинаются с символа «//» и заканчиваются в конце текущей строки.
Многострочные комментарии начинаются с символов «/*» и заканчиваются парой «*/». Вложенных комментариев не бывает. Независимо от количества символов «/*», следующих друг за другом, их действие заканчивается на ближайшем символе «*/».
Тема 3
Операторы и выражения
Понятие оператора
Пустой операторсостоит из одного символа – «;». Он не выполняет никаких действий. Используется как заполнитель в других, более сложных операторах.
Операторы выраженияпредставляют собой просто выражения, за которыми следуют точка с запятой, или запятая, или некоторый другой контекст.
Составной оператор(блок) состоит из определений объектов (данных), за которыми следует последовательность операторов. Блок заключается в фигурные скобки.
Оператор return
Имеет две формы:
return;
return выражение;
Первая обеспечивает передачу управления из текущей функции, не имеющей возвращаемого значения, на оператор, непосредственно следующий за вызовом функции.
Вторая форма кроме этого еще и возвращает значение в место вызова. Тип выражения в операторе returnи тип возвращаемого значения должны совпадать.
Оператор returnможет отсутствовать в функции, но лучше его явно указывать.
Оператор if(ЕСЛИ)
Этот оператор позволяет изменять порядок выполнения программы в зависимости от истинности условия [1]. Структура ifявляется структурой с одним входом и одним выходом. Структураif/else (ЕСЛИ/ИНАЧЕ)предусматривает действия в случае ложного условия (см. рис. 3.1)
if (x>y)
cout << 1 << endl;
else if (x>z)
cout << 2 << endl;
else if (y>z)
cout << 3 << endl;
else
cout << 4 << endl;
Рис. 3.1 Использование структуры if/else
Структуры выбора ifобычно предполагает наличие в своем теле только одного оператора. Чтобы включить несколько операторов в тело структуры, необходимо заключить их в фигурные скобки{}. Тогда оператор будет составным.
В С++ есть операция, аналогичная структуре if/else. Это единственная тернарная операция условия?:. Использование ее выглядит следующим образом:
x > y ? z = 1 : z = 0 ;
С использованием оператора if/elseэто же выражение можно записать так:
if(x>y)
z = 1;
else
z = 0;
Оператор while(пока)
Задача.Найти среднее арифметическое оценок группы по предмету. Пользователь вводит оценки с клавиатуры, признак конца ввода оценок - -1.(рис 3.2.)
#include <iostream >
using namespace std;
int main()
{
int counter, grade, total;
float average;
total = 0;
counter = 0;
cout << "Enter the grade or -1 for stopping: ";
cin >> grade;
while (grade != -1)
{
total = total + grade;
counter++;
cout << "Enter the grade or -1 for stopping: ";
cin >> grade;
}
average = (float)total / counter;
cout << "The average grade is " << average << endl;
return 0;
}
Рис. 3.2. Поиск среднего арифметического оценок
Средние значения не всегда выражаются целыми числами [1]. Часто среднее значение имеет величину типа 7,2или-93,5. Подобные числа записываются как числа с плавающей точкой и представляются типом данныхfloat. Переменнаяaverageобъявлена как переменная типаfloat, чтобы учесть дробную часть результатов вычислений. Однако результат вычисленияtotal/counterявляется целым числом, поскольку иtotalиcounter– переменные целого типа. Деление двух целых чисел осуществляется как целочисленное деление, при котором любая дробная часть-результат теряется. Поскольку сначала осуществляется деление, дробная часть потеряется прежде, чем результат будет записан в переменнуюaverage. Чтобы осуществлять над целыми числами вычисления с плавающей запятой, надо создавать для вычислений временные величины с плавающей запятой. В С++ для решения этой задачи используется унарная операция приведения к типу. Оператор
average = (float)total / counter;
включает операцию приведения к типу, которая создает временную копию с плавающей запятой своего оператора total. Величина, сохраняемая вtotal, остается целой. А вычисления теперь сводятся к делению величины с плавающей запятой на целую величину.