- •Информатика основы
- •Предисловие
- •Введение
- •Программы
- •1.1. Элементы языка
- •Список основных ключевых слов
- •Типы числовых данных
- •Разделители
- •Основные бинарные операции
- •Математические функции
- •1.2. Структура программы
- •1.3. Выполнение программы
- •Контрольные вопросы
- •2.1. Загрузка и настройка системы программирования
- •2.2. Создание и работа с проектом
- •Условные графические обозначения основных блоков схем алгоритмов
- •Словесно-формульный алгоритм
- •Листинг 2.1. Lin_prog.Cpp
- •Результат выполнения программы
- •3.2. Логический тип данных и базовые логические операции
- •Операции сравнения
- •Логические операции
- •При решении задач с множеством логических условий программа существенно упрощается, если эти условия удается объединить с помощью операций и, или, не в более крупные выражения.
- •Словесно-формульный алгоритм
- •Результат выполнения программы
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Области определения функции z (X,y)
- •Контрольные вопросы
- •4. Организация циклов
- •4.1. Организация программ с циклами
- •For (инициализация; условие; модификация) операторы
- •4.2. Инкремент, декремент и составные операции
- •Составные операции присваивания
- •Результат выполнения программы
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •5.Составление программ с массивами
- •5.1. Организация программ с массивами
- •Тип имя_массива [n];
- •Имя_массива [индекс]
- •Тип имя_массива [размер_1] [размер_2]
- •5.2. Манипуляторы и форматирование ввода-вывода
- •Манипуляторы
- •Результат выполнения программы
- •Результат выполнения программы
- •Контрольные вопросы
- •Дайте определение массива.
- •6. Составление программ с использованием функций
- •6.1. Описание, объявление и вызов функций
- •Механизм возврата из функции реализуется оператором
- •Тип имя_функции (тип размерность, тип имя_массива[ ]) ,
- •6.2. Глобальные и локальные переменные
- •Результат выполнения программы
- •6.3. Перегруженные функции
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •7. Программирование с использованием указателей
- •7.1. Общие сведения об указателях
- •7.2. Динамические массивы
- •Результат выполнения программы
- •Результат выполнения программы
- •7.3. Указатели и функции
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •8. Программирование с использованием структур
- •8.1. Определение структур
- •8.2. Организация программ с использованием структур
- •Имя_структуры . Имя_элемента_структуры
- •Список товаров
- •Результат выполнения программы
- •Упражнения
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
- •Основные бинарные операции
- •Операции сравнения
- •Составные операции присваивания
- •Логические операции
- •Типы числовых данных
- •Константы, используемые в математических выражениях
- •Математические функции
- •Типовые сообщения об ошибках
- •Оглавление
4.2. Инкремент, декремент и составные операции
присваивания
Для сокращения записи операторов итерационного вида в С++предусмотрен ряд специальных операций. К ним относятся инкремент, декремент и составные операции присваивания. Их часто применяют в циклах.
Инкремент(++) – автоувеличение переменной на единицу. Он имеет две формы: префиксную и постпрефиксную.
Префиксный инкремент(++x) – увеличение значения операнда (х) на единицу до его использования.
Например:
intx=1;inty=++x; // в результатеy=2.
Постпрефиксный инкремент(х++) - увеличение значения операнда (х) на единицу после его использования.
Например:
intx=1;intz=x++; // в результатеz=1.
Декремент(--) – автоматическое уменьшение переменной на единицу. Он так же, как и инкремент, имеет две формы: префиксную и постпрефиксную.
Составные операцииприсваивания содержат два разных знака операций, один из которых (второй слева) является простым оператором присваивания (=). Наиболее часто используемые арифметические составные операции и их эквиваленты приведены в табл. 4.1.
В С++можно использоватьмножественное присваиваниедля однотипных переменных. Оно часто применяется для сокращения записи начальных установок.
Например: z=y=x=0.
Таблица 4.1
Составные операции присваивания
Знак операции |
Вид операции |
Пример |
Эквивалент |
* = |
Умножение с присваиванием |
х*=2 |
x=х*2 |
/ = |
Деление с присваиванием |
x/=5-y |
x=x/(5-y) |
+ = |
Сложение с присваиванием |
x+=y |
x=x+y |
- = |
Вычитание с присваиванием |
x-=y+0.5 |
x=x-(y+0.5) |
Пример. Вычислить значение гиперболического синусаshxс заданной точностьюepsс помощью разложения в бесконечный ряд:
.
Вычисление заканчивается, когда абсолютная величина очередного члена ряда, прибавляемого к сумме, станет меньше eps.
. . . . . . . . . . . .
double y,x,s;
cin>>x;
y=s=x; //множественное присваивание
for (int i=0; fabs(y)>eps; i++)
{ y*=pow(x,2)/(2*i+2)/(2*i+3); //очередной член ряда
s+=y;
if (i>500) //проверка на зацикливание
{cout<<"\n Ряд расходится!";
break;
}
}
cout<<"\n Значение s="<<s;
. . . . . . . . . . . .
Пример 1. Найти значение степенного ряда
Вычисление осуществлять до выполнения условия .
В основе алгоритма лежит рекуррентная формула расчета следующего члена ряда по предыдущему: .
Для решения данной задачи можно использовать циклы, реализуемые операторами whileиdo(лист. 4.1).
Листинг 4.1. st_ryd.сpp
#include <iostream.h>
#include <math.h>
void main()
{
float x,y,z,eps;
cout<<"Задайте точность вычислений eps=";cin>>eps;
cout<<"Введите переменную x=";cin>>x;
while (fabs(x)>=1) // Цикл проверки правильности ввода
{
cout<<"Введите переменную x в диапазоне |x|<1";
cout<<"\nx=";cin>>x;
}
const int MaxIter=100; //Ограничитель количества итераций
y=z=x; //Множественное присваивание
int i=1; //Задание параметра цикла
do
{
z*=-x*i/(i+1); //Определение члена ряда
y+=z; //Текущая сумма ряда
i++; //Модификация параметра цикла
if(i>MaxIter) //Проверка зацикливания
{cout<<"\nРяд расходится!";
break;
}
}
while (fabs(z)>=eps); //Условие выхода из цикла
cout<<"y="<<y<<" при x="<<x<<" eps="<<eps;
}