- •Оглавление
- •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. Построение связных списков на основе структур с самоадресацией
- •Создание простого связного списка
- •Очереди
- •Деревья
- •Список рекомендуемой литературы
Мультипликативные операции
В С++ операция деления определена таким образом, что при делении целого числа всегда получается целое число.
Задача. Получить от пользователя радиус сферы и вывести на экран ее объем.
#include <iostream>
using namespace std;
int main()
{
float radius;
cout<<"Enter a radius"<<endl;
cin>>radius;
cout<<"Volume is:"<<(float)4/3*3.14*radius*radius*radius << endl;
return 0;
}
Рис. 2.4 Вычисление объема сферы
Для получения от пользователя значения используется операция >>(“взять из потока”). Слева от нее указывается поток, в данном случае, это стандартный поток вводаcin, а справа – переменная, в которую следует сохранить значение.
Объем сферы вычисляется по формуле:
В С++ нет встроенной операции возведения в степень, поэтому в задаче радиус дважды умножен на самого себя (на практике при возведении в степень используется библиотечная функция pow, которая определена в библиотекеmath.h). А перед операцией деления используется операция явного приведения типа. Число4из типаintвременно превращается в типfloat. Теперь в операции деления будет участвовать число с плавающей точкой, это значит, что результатом деления также будет число с плавающей точкой.
При радиусе сферы 8.5получаемый объем равен2571.14.
Если программист забудет использовать операцию приведения типа, то результат будет сильно отличаться: при таком же радиусе полученный объем будет 1928.35. Это объясняется тем, что при целочисленном делении4/3 получится единица.
В данном случае правильный результат можно получить, если записать в формуле не 4/3, а4.0/3– тогда делимое будет нецелым числом.
Результат на экран выводит с помощью объекта cout, при этом будет выведена не формула, а сосчитанный результат.
В С++ существует операция получения остатка от деления (%), которая применяется только к целым числам. Эта операция определена таким образом, что всегда справедливо равенство [3]:
a = (a/b)*b + a%b
Операции сравнения
Использование операций сравнения в С++ отличается от привычного их использования в математике.
Например, часть программы, представленная на рис. 2.5, четыре раза использует операцию сравнения и получает результаты, показанные на рис. 2.6.
int x = 40;
if(30<x<50)
cout<<"TRUE"<<endl;
else
cout<<"FALSE"<<endl;
if(45<x<60)
cout<<"TRUE"<<endl;
else
cout<<"FALSE"<<endl;
x = -20;
if(-30<x<-10)
cout<<"TRUE"<<endl;
else
cout<<"FALSE"<<endl;
if(-10<x<1)
cout<<"TRUE"<<endl;
else
cout<<"FALSE"<<endl;
Рис. 2.5. Неправильное использование операции сравнения
TRUE
TRUE
FALSE
TRUE
Рис. 2.6. Результат работы программы на рис. 2.5
Видно, что истинные условия дают неправильный результат, и наоборот. Это происходит потому, что результатом работы операции сравнения является истина (1) или ложь(0). И в следующей операции сравнения уже участвует не значение переменнойx, а результат предыдущей операции –1или0. Для получения правильного результата необходимо двойные сравнения разделять на два одиночных и объединять их логическими операциямиИлибоИЛИ:
45<x&&x<60
Побитовые логические операции
Побитовые операции применяются только к целым числам. В них целое число рассматривается как строка битов (нулей и единиц при записи числа в двоичной системе счисления или разрядов машинного представления).
Таблица 4