- •Записать тернарную операцию для оператора (л.6):
- •Определите понятие «оператор». «Пустой оператор» и пример его использования. Каждый ли оператор заканчивается «точкой с запятой»? (л.6)
- •Синтаксис оператора if. (л.6).
- •Использование вложенного условного оператора для оптимизации выполнения условия. (л.6).
- •Указать область видимости переменной k: (л.6).
- •Синтаксис оператора цикла с предусловием. Организация на его основе бесконечного цикла (л.7) .
- •Использование операторов break, сontinue, return и функции exit() (л.6) .
- •Интерпретировать выражения:
- •Указать ошибку:
- •Являются ли эквивалентными приведенные две группы операторов:
- •Синтаксис оператора цикла с постусловием. Организация на его основе бесконечного цикла (л.7) .
- •Синтаксис оператора цикла for. Организация на его основе бесконечного цикла. Использование «неполных» форм записи оператора цикла for (л.7) .
- •Выражение оператора цикла for через while (л.7) .
- •2.1. Определить, какому интервалу из области определения функции принадлежит текущее значение х.
- •2.2. Вычислить значение функции y по соответствующей формуле.
- •2.3. Вывести значения X и y
- •. Нахождение корня нелинейного уравнения методом половинного деления
- •Приемы эффективного программирования (л.7) .
- •Определение наибольшей степени целого числа 100, которую можно вычислить, пользуясь типом long
- •Табулирование функции на отрезке с выбором расчетной формулы (л.7) . Табулирование функции на отрезке
- •Вычисление суммы членов бесконечного ряда (ряд Тейлора) на отрезке (л.7) .
- •Вычисление значения многочлена на отрезке по схеме Горнера (л.7) .
- •Проверить, является ли заданное число простым. (л.7) Проверка, является ли число простым
- •Логическое представление в компьютере целых чисел (с примерами) (л.8) .
- •Логическое представление в компьютере вещественных чисел (с примерами) (л.8) .
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Объяснить получение результата*:
- •Определение и способы инициализации указателей. Операции над указателями (л.9) .
- •Операции над указателями
- •Операции инкремента и декремента
- •Укажите особенности использования указателей типа void * (л.9) .
- •Составить описание типа(л.9):
- •Проинтерпретируйте выражение int *(*pp[15])(). (л.9)
- •Проинтерпретируйте выражение int *(*pp[15])(int *).(л.9)
- •Определите понятие «ссылка». Как инициализировать ссылку? (л.9)
- •Как изменить значение ссылки после инициализации? Можно ли построить ссылку на ссылку? указатель на ссылку? (л.9)
- •Виды указателей (указатель на константу, константный указатель, константный указатель на константу) и их особенности (л.9) . Виды указателей указатель на константу
- •Указатель-константа
- •Указатель-константа на константу
- •Указатель на указатель
- •Возможные присваивания (л.9):
- •Указать и объяснить ошибку, если она есть (л.9):
Определите понятие «ссылка». Как инициализировать ссылку? (л.9)
Как мы уже знаем, ссылка, в отличие от указателя, не занимает дополнительного пространства в памяти и является просто другим именем переменной:
Инициализация ссылки:
int i = 0;
int &rint = i; // ссылка rint синоним переменной i
int *pint = &i; // указатель pint
// int &jj = 1; error!!!
const int j(17);
// int& jjj = j; error!!!
//ссылка на переменную не может инициализироваться константой; компилятор // предполагает последующее изменение величин, на которые ссылаются jj и jjj const char& CR = ‘\n’; // ок!!! CR – ссылка на симв.константу инициализируется симв.константой !!!
Как изменить значение ссылки после инициализации? Можно ли построить ссылку на ссылку? указатель на ссылку? (л.9)
Изменить значение ссылки после инициализации нельзя.
int ii=1; //но можно так:
int& rr = ii;
rr++; // ii увеличивается на 1
int *p = &rr; // p указывает на ii;
cout << *p << endl; // 2
int ii=1;
int& rr = ii;
int &p = rr; // p указывает на ii;
cout << p << endl;
Правила работы со ссылками:
ссылка не может существовать сама по себе – она связана с переменной и у нее даже нет своего адреса (если взять адрес ссылки, то получим адрес связанной с ней переменной).
ссылку можно только создать; затем работать мы будем не со ссылкой, а с самой переменной.
тип ссылки должен совпадать с типом величины, на которую она ссылается;
ссылка явно инициализируется при ее описании (кроме случаев, когда она является параметром функции, описана как extern или ссылается на поле данных класса);
ссылку можно рассматривать как указатель, который всегда разыменовывается;
изменить значение ссылки после инициализации нельзя;
на данную переменную может быть объявлено несколько ссылок.
в отличие от указателя, ссылка после инициализации не может быть изменена, чтобы представлять другую переменную;
неконстантная переменная-ссылка не может ссылаться на константную величину;
указатель можно инициализировать адресом ссылки;
не разрешается определять указатели на ссылки, создавать массивы ссылок и ссылки на ссылки;
ссылки применяются чаще всего в качестве параметров функций и типов значений, возвращаемых функциями.
ссылку нельзя уничтожить, она может «умереть» только своей смертью (например, когда программа выйдет из локального блока, где ссылка объявлена).
Виды указателей (указатель на константу, константный указатель, константный указатель на константу) и их особенности (л.9) . Виды указателей указатель на константу
int var1=5, *pvar1=&var1;
int var2=6;
const int cvar1 = 1; // cvar1 – целая константа
// pcvar1, pcvar11 – указатели на константу
const int *pcvar1 = &cvar1; // const запрещает изменение значения *pcvar1
c
onst
int
*pcvar11
= &var2; //
const
запрещает изменение значения *pcvar11
cout << *pvar1 << " " << *pcvar1 << " " << *pcvar11 << endl; // 5 1 6
// *pcvar11=*pvar1; // error!!! l-value specifies const object
// *pcvar1=*pcvar11; // error!!! l-value specifies const object
pcvar11 = pcvar1; // OK!!! изменение самого указателя разрешено
pcvar1 = pvar1; // OK!!! изменение самого указателя разрешено
cout << *pvar1 << " " << *pcvar1 << " " << *pcvar11 << endl; // 5 5 1
