Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы 9-44.docx
Скачиваний:
4
Добавлен:
22.09.2019
Размер:
252.07 Кб
Скачать

17. Синтаксис и семантика операторов цикла, прерывания и продолжения. Пример циклической программы.

Цикл с предусловием (while) имеет вид:

while ( выражение ) оператор

Выражение определяет условие повторения тела цикла, представленного простым или составным оператором. Выполнение оператора начинается с вычисления выражения. Если оно истинно (не равно false), выполняется оператор цикла. Если при первой проверке выражение равно false, цикл не выполнится ни разу.

Распространенный прием программирования — организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия. В круглых скобках после ключевого слова while можно вводить описание переменной.

Областью ее действия является цикл:

while (int х = 0){ ... / * область действия х */ }

Цикл с постусловием (do while)

do оператор while выражение;

Сначала выполняется простой или составной оператор, составляющий тело цикла, а затем вычисляется выражение. Если оно истинно (не равно fаlse), тело цикла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему.

Цикл с параметром (for) имеет следующий формат:

for (инициализация: выражение: модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько операторов, разделенных запятой (операцией «последовательное выполнение»). Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Оператор break используется внутри операторов цикла или switch для обеспечения перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится break.

Оператор перехода к следующей итерации цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации.

18. Классификация типов данных. Основные и производные типы данных. Правила преобразования арифметических типов: по умолчанию и явное.

Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:

  • int (целый);

  • char (символьный);

  • wchar_t (расширенный символьный);

  • bool (логический);

  • float (вещественный);

  • double (вещественный с двойной точностью).

Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:

  • short (короткий);

  • long (длинный);

  • signed (знаковый);

  • unsigned (беззнаковый).

Производные типы можно условно подразделить на две группы:

  • Непосредственно производные типы. Эти типы являются производными от некоторых существующих типов, реализуя типы указателей, ссылки, функции преобразования типов. В группу непосредственно производных типов входят:

    • массивы

    • указатели

    • ссылки

    • перечисления

    • указатели на члены класса.

  • Составные производные типы. В группу составных производных типов входят:

    • классы

    • структуры

  • объединения

Неявное преобразование типов

Язык определяет набор стандартных преобразований между объектами встроенного типа, неявно выполняющихся компилятором в следующих случаях:

  • Арифметическое выражение с операндами разных типов: все операнды приводятся к наибольшему типу из встретившихся. Это называется арифметическим преобразованием.

  • Присваивание значения выражения одного типа объекту другого типа. В этом случае результирующим является тип объекта, которому значение присваивается.

  • Передача функции аргумента, тип которого отличается от типа соответствующего формального параметра. Тип фактического аргумента приводится к типу параметра.

  • Возврат из функции значения, тип которого не совпадает с типом возвращаемого результата, заданным в объявлении функции. Тип фактически возвращаемого значения приводится к объявленному.

Явное преобразование типов производится при помощи следующих операторов: static_cast, dynamic_cast, const_cast и reinterpret_cast. Заметим, что, хотя иногда явное преобразование необходимо, оно служит потенциальным источником ошибок, поскольку подавляет проверку типов, выполняемую компилятором.

Операция static_cast используется для преобразования типа на этапе компиляции между: целыми типами; целыми и вещественными типами; целыми и перечисляемыми типами; указателями и ссылками на объекты одной иерархии, при условии, что оно однозначно и не связано с понижающим преобразованием виртуального базового класса.

static_cast <тип> (выражение)

Результат операции имеет указанный тип, который может быть ссылкой, указателем, арифметическим или перечисляемым типом.

Операция reinterpret_cast применяется для преобразования не связанных между собой типов, например, указателей в целые или наоборот, а также указателей типа void* в конкретный тип. При этом внутреннее представление данных остается неизменным, а изменяется только точка зрения компилятора на данные. Формат операции:

reinterpret_cast <тип> (выражение)

Результат операции имеет указанный тип, который может быть ссылкой, указателем, целым или вещественным типом.