- •Тема 9. Функції користувача.......................................................................................49
- •Тема 10. Структури......................................................................................................59
- •1.1. Структура програми
- •1.2. Етапи виконання програми
- •1.3. Порядок запуску програми
- •2.1. Функції вводу/виводу мови с
- •Пріоритет виконання операцій
- •Операції присвоювання
- •4.1. Складові оператори
- •4.2. Оператори розгалуження
- •If (умова) оператор1;
- •4.3. ОператорИ циклУ
- •For (вираз_1; вираз_2; вираз_3 ) оператор;
- •4.4. Оператори переходу
- •Тема 5. Вказівники та операції над ними
- •5.1. Поняття вказівника
- •5.2. Дії над вказівниками
- •Контрольні запитання:
- •Тема 6. Робота з одновимірними масивами
- •Статичні та динамічні масиви
- •6.2. Рядки, як одновимірні масиви символів
- •Тема 7. Двовимірні масиви
- •Наприклад:
- •Тема 8. Символьна інформація та рядки
- •8.1. Збереження символьної інформації
- •8.2. Функції вводу/виводу при роботі з рядками
- •8.3. Спеціальні функції для роботи з рядками та символами
- •Тема 9. Функції користувача
- •9.1. Функції: визначення, опис, виклик
- •9.2. Передача масивів у функцію
- •9.4. Функції зі змінною кількістю параметрів
- •Тема 10. Структури
- •Контрольні запитання:
- •Список використаної літератури
4.4. Оператори переходу
Оператори переходу виконують безумовну передачу управління.
-
goto < мітка> - оператор безумовного переходу. Керування передається оператору з даною міткою:
<мітка>: оператор;
В мові С мітка не декларується.
-
break - оператор перериває цикл або перемикач, управління передається на перший наступний оператор;
while (умова)
{< оператори>
if (<вираз-умова>) break;
<оператори>}.
Тобто оператор break доцільно використовувати, коли умову продовження ітерації потрібно перевіряти в тілі циклу.
-
continue – припинення поточної і перехід до наступної ітерації циклу. Використовується, коли тіло циклу містить розгалуження.
3) return – здійснює повернення результату з тіла функції.
Контрольні запитання:
-
Назвіть основні керуючі оператори структурного програмування.
-
Що таке оператор “вираз”, порожній оператор?
-
Яка відмінність між складовим оператором та блоком?
-
Назвіть оператори вибору. Який синтаксис умовного оператора?
-
В чому помилковість наступної послідовності?
If(j>0); {int n; n=2*k;} else n=-j; j++;
6. Коли зручно використовувати перемикач? Перепишіть наступний фрагмент програми з використанням оператора switch:
if (ch==’A’)
a_grade++;
else if (ch==’B’)
b_grade++;
else if (ch==’C’)
c_grade++;
else if (ch==’D’)
d_grade++;
else f_grade++;
7. Назвіть відомі Вам оператори циклу та їх синтаксис. Які з частин циклічних операторів можна опускати?
8. Яким буде результат виконання наступних операторів циклу:
a) int i;
for (i=0; i<5; i++)
cout << “\t”<<i;
cout<<”\n”;
б) int k=8;
do
cout<<”k=”<<k<<”\n”;
while(k++<5);
9. Поясніть різницю між дією операторів break та continue на прикладах двох фрагментів програми, наведених нижче:
1) for (int i=-10, int s=1; i<10; i++)
{s/=++i; if (i==0) break; cout<<”\n”<<s;}
2) for (int i=-10, int s=1; i<10; i++)
{s/=++i; if (i==0) continue; cout<<”\n”<<s;}
10. Для чого використовується оператор передачі керування goto?
Тема 5. Вказівники та операції над ними
5.1. Поняття вказівника
Кожна змінна у програмі - це об’єкт, який володіє ім’ям і значенням. Після визначення змінної з ініціалізацією всі звернення у програмі до неї за іменем замінюються компілятором на адресу іменованої області оперативної пам’яті, в якій зберігається значення змінної (Рис. 5.1). Програміст може визначити власні змінні для збереження адрес областей пам’яті. Такі змінні називають вказівниками.
int a=10;
Рис. 5.1.
Вказівник визначається наступним чином:
<тип> *< ідентифікатор> <ініціалі затор>;
Приклад 1. Визначення вказівників
int* pa=&a; // вказівник ра містить значення адреси змінної а
float *ptr (NULL); // Нульовий вказівник на об’єкт типу float
char*p; // Неініціалізований вказівник на об’єкт типу char
Значення адреси змінної одержується за допомогою унарної операції ”&”.
Для доступу до комірки пам’яті, виділеної під змінну через вказівник до останнього, слід застосувати унарну операцію розіменування ”*”.
Приклад 2. Непряма адресація через вказівник
int x=2; //змінна типу int
int *y =&x; // вказівник на елемент даних типу int
*y=1; // через вказівник до поля x вноситься значення 1,
//тобто x=1
p=new char(12);
В останньому операторі прикладу 2 неініціалізований вказівник р, описаний у прикладі 1, асоціюється з ділянкою у динамічній пам’яті під змінну типу char, до якої заноситься значення 12.