Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Voprosy_k_ekzamenu_po_informatike

.pdf
Скачиваний:
41
Добавлен:
09.06.2015
Размер:
2.24 Mб
Скачать

6) Константные выражения. Константные выражения целиком состоят из константных данных. Пример:

5 + 6 + 7;

2.32 * 12.1;

“name” + “_” + “23”;

7)Выражения с явными преобразованиями типов. Явные преобразования

(приведения) типов могут использоваться в выражениях.

8)Выражения с указателем на член. Пример:

variable.*name1 = 1; variable->*name2 = 2;

9)Приведение. Типобезопасное приведение можно использовать в выражениях.

10)Информация о типах во время выполнения. Задает тип объекта во время выполнения программы.

Порядок вычисления выражений. Операции в выражениях выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Ниже представлена таблица приоритетов операторов:

Приоритет

Оператор

Описание

Ассоциативность

 

 

 

 

 

1

::

 

Область видимости

Слева-направо

 

 

 

 

 

 

++

--

Суффиксальный/постфиксный инкремент и

 

 

декремент

 

 

 

 

 

2

()

 

Вызов функции

 

[]

 

Обращение к массиву по индексу

 

 

 

 

 

.

 

Выбор элемента по ссылке

 

 

−>

 

Выбор элемента по указателю

 

 

 

 

 

 

 

++

--

Префиксный инкремент и декремент

Справа-налево

 

+

Унарный плюс и минус

 

 

!

~

Логическое НЕ и побитовое НЕ

 

 

(type)

Приведение к типу type

 

3

*

 

Indirection (разыменование)

 

 

&

 

Адрес

 

 

sizeof

Размер

 

 

new, new[]

Динамическое выделение памяти

 

 

delete,delete[]

Динамическое освобождение памяти

 

 

 

 

 

 

4

.*

->*

Указатель на член

Слева-направо

 

 

 

 

 

5

*

/ %

Умножение, деление и остаток

 

 

 

 

 

 

6

+

Сложение и вычитание

 

 

 

 

 

 

7

<<

>>

Побитовый сдвиг влево и сдвиг вправо

 

 

 

 

 

 

8

<

<=

Знаки сравнения

 

 

 

 

 

>

>=

 

 

 

 

 

 

 

21

9

==

!=

 

Равенство и неравенство

 

 

 

 

 

 

 

10

&

 

 

Побитовое И

 

 

 

 

 

 

 

11

^

 

 

Побитовый XOR (исключающее или)

 

 

 

 

 

 

 

12

|

 

 

Побитовое ИЛИ (inclusive or)

 

 

 

 

 

 

 

13

&&

 

 

Логическое И

 

 

 

 

 

 

 

14

||

 

 

Логическое ИЛИ

 

 

 

 

 

 

 

 

?:

 

 

Тернарное условие

Справа-налево

 

=

 

 

Прямое присваивание (предоставляемое по

 

 

 

 

умолчанию для C++ классов)

 

15

 

 

 

 

+=

−=

 

Присвоение с суммированием и разностью

 

 

 

 

 

*=

/=

%=

Присвоение с умножением, делением и остатком

 

 

от деления

 

 

 

 

 

 

 

 

 

 

 

16

throw

 

Throw оператор (выброс исключений)

 

 

 

 

 

 

 

17

,

 

 

Запятая

Слева-направо

 

 

 

 

 

 

Пример выражения с порядком вычисления:

Порядок, в котором оценивается выражение, показанное на рисунке выше, определяется приоритетностью и ассоциативностью операторов. Умножение (*) имеет наибольший приоритет в этом выражении; следовательно, выражение b * c оценивается первым. Сложение (+) имеет следующий наибольший приоритет, поэтому a добавляется к произведению b и c. Левый перенос (<<) имеет самый низкий приоритет в выражении, однако существует два вхождения. Поскольку оператор левого переноса группирует выражение слева направо, левое вложенное выражение оценивается первым, а затем — правое.

22

8. СТРУКТУРА ПРОГРАММЫ НА С/С++, ПРИМЕР ПРОГРАММЫ.

Статическая структура представляется текстом программы или его структурной схемой, описывающими действия и проверки, которые должны быть выполнены для решения конкретной задачи. Статическая структура — значит, что программа не зависит от исходных данных.

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

Пример программы на C++.

#include <iostream> using namespace std; int main() {

cout << "Hello world."; return 0;

}

Описание структуры программы. Эта программа состоит из единственной функции с названием main, которая не принимает аргументов, но возвращает значение типа int. Тело функции заключено в фигурные скобки. В теле функции содержатся два оператора cout и return. Первый выводит фразу, заключенную в кавычки на экран, а второй является указанием функции возвратить значение 0 в место вызова функции. Перед функцией, в первой строчки программы находится директива препроцессора, которая подключает заголовочный файл <iostream> для подключения функций, хранящихся в нем. Строчка ниже тоже является директивой, называемой пространством имен, которая означает, что все определенные ниже имена в программе будут относиться к пространству имен std.

23

9. ТИПЫ ОПЕРАТОРОВ В С/С++, ОПЕРАТОР ПУСТОЙ, СОСТАВНОЙ, ОПЕРАТОР- ВЫРАЖЕНИЕ, ОПЕРАТОР ВОЗВРАТА.

Типы операторов С++. Операторы C++ представляют собой элементы программы, которые контролируют способ и порядок обработки объектов.

1)Операторы выражений. Эти операторы вычисляют выражение для определения побочных эффектов и возвращаемого значения.

2)Пустые операторы. Эти операторы могут указываться в тех случаях, когда синтаксис C++ требует использования оператора, однако никакие действия не требуются.

3)Составные операторы. Эти операторы представляют собой группы операторов, окруженные фигурными скобками ({ }). Их можно во всех случаях, где может использоваться отдельный оператор.

4)Операторы выбора. Эти операторы выполняют проверку, а затем, если проверка дает результат true (ненулевое значение), выполняют один из участков кода. Если проверка даст результат false, может выполняться другой участок кода.

5)Операторы итерации. Эти операторы вызывают повторное выполнение блока кода до тех пор, пока не будет выполнен заданный критерий завершения.

6)Операторы перехода. Эти операторы либо передают управление непосредственно в другое место функции, либо возвращают управление из функции.

7)Операторы объявления. Объявления вводят имя в программу.

Пустой оператор. Инструкция null — это инструкция выражения с отсутствующим выражением. Она полезна, если синтаксис языка требует инструкции, но не оценки выражения. Она состоит из точки с запятой.

Инструкции null часто используются как местозаполнители в инструкциях итерации или как инструкции, в которых нужно разместить метки в конце сложных инструкций или функций. Пример:

while( *Dest++ = *Source++ )

;// Null statement.

Составной оператор (блок). Составной оператор состоит из нуля или более операторов, окруженных фигурными скобками ({ }). Составной оператор может использоваться везде, где ожидается оператор. Составные инструкции часто называются "блоками". Пример:

{ int a; a++; int b = a; }

24

Оператор выражений. Операторы выражений обеспечивают вычисление выражений. В результате выполнения оператора выражения ни передачи управления, ни итерации не происходит. Пример:

i++;

a = b + c; g[2000];

Оператор возврата. Оператор возврата return заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение <выражения>, если оно задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата return, и возвращается в вызывающую функцию.

return 0;

25

10. ОПЕРАТОР УСЛОВНОЙ ПЕРЕДАЧИ УПРАВЛЕНИЯ В С/С++, ПРИМЕРЫ.

Условный оператор if..else используется для разветвления процесса обработки данных на два направления. Пример:

if (x > 100) cout << “Больше 100”; else cout << “Меньше или равно 100”;

За идентификатором if в круглых скобках заключено условие ветвления. После него на следующей строке находится тело оператора, выводящее на экран сообщение. Если же условие не выполняется, то совершается переход к оператору else, который также содержит блок операторов, выполняющих определенные действия. В данном примере он выводит на экран сообщение, противоположное тому, что было в теле оператора if. В зависимости от достигаемого результата, этот условный оператор может иметь или не иметь ветвление else.

Формат сокращенного оператора if:

if (B) S;

, где B – логическое или арифметическое выражение, истинность которого проверяется; S – один оператор: простой или составной.

Формат полного оператора if:

if (B) S1; else S2;

, где B – логическое или арифметическое выражение, истинность которого проверяется; S1, S2 – один оператор: простой или составной.

Примеры:

1)if (a > 0) x = y;

2)if (a > 0 || b < 0) x = y;

else x = z; 3) if (a < b)

if (b < c) a + c; else a + b;

4) if (a > 0 && b < 0) c = a + b; else if (a < 0 && b < 0) c = a – b; else if (a > 0 && b > 0) c = b – a; else {

cout << “Неверные значения\n”; c = 0;

}

26

11. ОПЕРАТОР ЦИКЛА С ПАРАМЕТРОМ В С/С++, ЕГО ИСПОЛЬЗОВАНИЕ, ПРИМЕРЫ.

Операторы цикла (перебора) приводят к тому, что операторы (или составные операторы) выполняются ноль или более раз в соответствии с некоторыми критериями завершения цикла. Если эти операторы являются составными операторами, они выполняются по порядку за исключением случаев, когда встречается оператор break или оператор continue.

Цикл for организует выполнение фрагмента программы фиксированное число раз. Как правило, этот тип цикла используется тогда, когда число раз, за которое должно повториться исполнение кода, известно заранее. Пример:

for ( int j = 0; j < 15; j++) { cout << j << ‘ ‘;

}

В круглых скобках после оператора for заключены три выражения.

Первое – инициализирующее, второе – условие проверки, третье –

инкрементирующее. Далее идет составной оператор, который выводит на экран значение переменной j.

Примеры:

1)for (int i = 1; i < 10; i++) cout >> i >> ‘ ‘;

2)for (int i = 20; i > n; i--) {

if (i % 2 == 0) cout >> i >> ‘ ‘; if (i % 3 == 0) cout << endl;

}

3) for (char i = ‘a’; i != ‘h’; i++) {

for (int j = 1; j < 10; j++) cout >> (char)(i % j) >> ‘ ‘; endl;

}

27

12. ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ И ПОСТУСЛОВИЕМ В С/С++, ОСОБЕННОСТИ

ИСПОЛЬЗОВАНИЯ.

Операторы перебора приводят к тому, что операторы (или составные операторы) выполняются ноль или более раз в соответствии с некоторыми критериями завершения цикла. Если эти операторы являются составными операторами, они выполняются по порядку за исключением случаев, когда встречается оператор break или оператор continue.

Цикл while содержит условие для продолжение цикла, но не содержит ни инициализирующих, ни инкрементирующих выражений.

int j = 0;

while ( j < 15) {

cout << j << ‘ ‘; j++;

}

До тех пор, пока условие цикла выполняется, исполнение тела цикла продолжается. Несмотря на отсутствие инициализирующего оператора, нужно инициализировать переменную цикла до начала исполнения тела цикла. Тело цикла должно содержать оператор, изменяющий значение переменной цикла, иначе он будет бесконечным.

В цикле do условие продолжение цикла располагается не перед, а после тела цикла.

int j = 0; do {

cout << j << ‘ ‘; j++;

} while ( j < 15);

Ключевое слово do обозначает начало цикла, затем следует тело цикла и завершает цикл условие продолжения while (j < 15). Оно обязательно должно завершаться точкой с запятой.

28

13. ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА, ОПЕРАТОРЫ ПРОДОЛЖЕНИЯ И ЗАВЕРШЕНИЯ, ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ.

Оператор перехода в C++ выполняет немедленную локальную передачу контроля.

Оператор break заканчивает выполнение ближайшего внешнего цикла или условного оператора, в котором он отображается. Управление передается оператору, который расположен после оператора, при его наличии.

for ( i = 0; i < 10; i++ ) { if ( i == 5) break; cout << "Success ”;

}

В случае со вложенными циклами, оператор break не производит выход из всех циклов, а только из цикла, в теле которого он находится.

Оператор continue обеспечивает передачу управления управляющему выражению наименьшего внешнего цикла do, for или while.

for ( i = 0; i < 10; i++ ) { if ( i == 5) continue; cout << "Success ”;

}

Оператор goto безусловно передаёт управление в инструкцию с меткой заданным идентификатором. Этот оператор состоит из двух частей: собственно оператора и метки, указывающей целевую точку перехода в программе. Действие оператора перехода состоит в том, что после его исполнения следующими будут исполняться операторы программы, идущие в тексте непосредственно после метки

for ( j = 0; j < INT_MAX; j++ ) { if ( j == 3 )

goto stop;

}

Stop: cout << "Success ”;

В теле оператора if находится оператор goto, который указывает на метку stop. Эта метка находится вне цикла и указывает на выполнение функции cout.

29

14. ОПЕРАТОР-ПЕРЕКЛЮЧАТЕЛЬ В С/С++, ПРИМЕРЫ.

Оператор switch предназначен для разветвления процесса вычислений на несколько направлений. Пример:

switch (n) {

 

 

case 1: cout

<< “one”;

break;

case 2; cout

<< “two”;

break;

case

3; cout

<< “three”;

case

4; cout

<< “four”; break;

default: cout << “unknown”;

}

За ключевым словом switch стоят круглые скобки, содержащие имя переменной, от значений которой зависит дальнейшее выполнение программы. Скобки ограничивают набор операторов case. Каждый раз за ключевым словом case следует константа, после значения которой стоит двоеточие. Тип константы должен совпадать с типом переменной, стоящей в скобках оператора switch. Оператор break прерывает выполнение следующих действий и выходит из тела. Если же между двумя ключевыми словами нет break, то выход не будет произведен и программа выполнит оператор следующего ключа. Ключевое слово default предназначено для выполнения действий, если не одно из значений констант не совпало со значением переменной-условия switch.

Пример: Известен порядковый номер дня недели. Вывести на экран его название.

int main() { int x; cin >> x;

switch (x) {

case 1: cout << "понедельник" ; break; case 2: cout << "вторник"; break;

case 3: cout << "среда"; break; case 4: cout << "четверг"; break; case 5: cout << "пятница"; break; case 6: cout << "суббота"; break;

case 7: cout << "воскресенье"; break, default: cout << "вы ошиблись";

}

return 0 ;

}

Результат работы программы:

2 вторник

4 четверг

10 вы ошиблись

30