
Лабораторна робота №4
Тема: Типи даних. Оператори.
Мета: отримання практичних навичок у роботі з операторами переходу, операторами циклу мови C++.
Контрольні запитання:
Описати у виді блок-схеми семантику кожного оператора циклу в C++ (з урахуванням операторів break і continue, що, можливо, містяться в тілі циклу ).
Чи може бути визначене число ітерацій циклу for до початку його виконання?
у Паскалі
у С/C++
Чи вірно вирішена задача: «знайти суму перших 100 натуральних чисел»?
a) i = 1; sum = 0;
for ( ; i <= 100; i++) sum += i;
b) sum = 0;
for ( i = 1; i <= 100;) sum += i++;
c) for ( i = 1, sum = 0; i <= 100; sum += i+, i++);
d) for ( i = 1, sum = 0; i <= 100; sum += i++);
e) for ( i = 0, sum = 0; i++, i <= 100; sum += i);
Виразити семантику циклу for за допомогою циклу while. Чи еквівалентні отримані фрагменти програм?
Чи Еквівалентні наступні фрагменти програми:
for ( ; e2 ; ) S; і while ( e2 ) S;
for ( ; ; ) S; і while (1) S;
Зауваження: тут e2 - вираз припустимого в цьому випадку типу; S - довільний оператор.
Чи можна написати фрагмент програми на С++, еквівалентний даному, використовуючи один оператор циклу for з порожнім оператором як тіло циклу?
i = 0; c = getchar();
while (c != ’ ’ && c != ’\n’ && c !=’ \t’ && c != EOF)
{ i++; c = getchar(); }
Порівняти семантику операторів repeat у Паскалі і do-while у C++.
Чи Вірні наступні твердження:
«цикл for ( ; ; ) є нескінченним циклом, і тому його використання в C++ заборонено»
«семантика операторів циклу while і do-while у C++ розрізняється тільки тим, що тіло циклу while може не виконатися жодного разу, а тіло циклу do-while виконається хоча б один раз.»
«кожна гілка в операторі switch повинна бути позначена однією чи кількома різними цілочисельними константами чи константними виразами»
«якщо в операторі switch немає гілки default, то значення виразу вибору повинне збігатися з однієї з констант гілок case»
«в операторі switch вітки case і вітку default можна розташовувати в будь-якому порядку»
чи Вірно твердження: « дія оператора continue; у приведених нижче прикладах еквівалентно дії оператора go to next; ».
while ( E ) { S; ... continue; ... S; next: ; }
do { S; ... continue; ... S; } while ( E ); next: ; ...
for ( E1; E2; E3) { S; ... continue; ... S; next: ; }
while ( E) { S; ... for (E1;E2;E3) { S; ... continue; ... S; } ... S; next:; }
while ( E) { S; ... for (E1;E2;E3) { S; ... continue; ... S; next: ; } ... S;}
Зауваження: тут E, E1, E2, E3 - вираз припустимого в цьому випадку типу ; S - довільний оператор; C1, C2 C3 - константи відповідного типу.
чи Вірно твердження: « дія оператора break; у приведених нижче прикладах еквівалентна дії оператора go to next; ».
a) while ( E ) { S; ... break; ... S; next: ; }
b) while ( E ) { S; ... break; ... S; } next: ; ...
c) do { S; ... break; ... S; } while ( E ); next: ; ...
d) for ( E1; E2; E3) { S; ... break; ... S; next: ; }
e) while ( E) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } next: ; ... S; }
f) while ( E ) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } ... S; next: ; }
g) while ( E) { S; ... for ( E1; E2; E3) { S; ... break; ... S; } ... S; } next: ;
h)
Зауваження: тут E, E1, E2, E3 - вираз припустимого в цьому випадку типу; S - довільний оператор; C1, C2 C3 - константи придатного типу.
Завдання:
Знайти граничні значення для цілочисельних типів. Не використовувати наперед визначені константи границь типів.
Вивести на екран 2-ий та 16-вий еквіваленти цілого числа.
Завдання для індивідуального виконання:
Порахувати суму ряду з точністю 0.00001 та суму перших k членів ряду. Члени ряду обчислюються за формулою згідно із Вашим варіантом. При необхідності формула може бути спрощена.
Варіант 1 Варіант 2
Варіант 3 Варіант 4
Варіант 5 Варіант 6
Варіант 7 Варіант 8
Варіант 9 Варіант 10
Варіант 11 Варіант 12
Варіант 13 Варіант 14
Варіант 15 Варіант 16