ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.09.2024
Просмотров: 21
Скачиваний: 0
Лекція 10. Основні оператори мови Сі++
План:
-
Базові конструкції структурного програмування
-
Оператор «виразу»
-
Складені оператори
-
Оператори вибору
-
Оператори циклів
-
Оператори переходу
-
Приклади вирішення завдань з використанням основних операторів Сі++
Базові конструкції структурного програмування
У теорії програмування доведено, що програму для вирішення завдання будь-якої складності можна скласти лише з трьох структур: лінійною, такою, що розгалужується і циклічною. Ці структури називаються базовими конструкціями структурного програмування.
Лінійною називається конструкція, що є послідовним з'єднанням два або більш за операторів.
Галуження – задає виконання одне з двох операторів, залежно від виконання якого або умови.
Цикл – задає багатократне виконання оператора.
Лінійна |
Галуження |
Цикл |
|
|
|
Метою використання базових конструкцій є здобуття програми простої структури. Таку програму легко читати, відлагоджувати і при необхідності вносити до неї зміни. Структурне програмування також називають програмуванням без goto, оскільки часте використання операторів переходу утрудняє розуміння логіки роботи програми. Але інколи зустрічаються ситуації, в яких вживання операторів переходу, навпаки, спрощує структуру програми.
Оператори управління роботою програми називають конструкціями програми, що управляють. До них відносять:
-
складені оператори;
-
оператори вибору;
-
оператори циклів;
-
оператори переходу.
Оператор «виразу»
Будь-який вираз, що закінчується крапкою з комою, розглядається як оператор, виконання якого полягає в обчисленні цього виразу. Частним випадком виразу є порожній оператор ;.
Приклади:
i++;
a+=2;
x=a+b;
Складені оператори
До складених операторів відносять власне складені операторів і блоки. У обох випадках це послідовність операторів, ув'язнений у фігурні дужки. Блок відрізняється від складеного оператора наявністю визначень в телі блоку. Наприклад:
{
n++; це складений оператор
summa+=n;
}
{
int n=0;
n++; це блок
summa+=n;
}
Оператори вибору
Оператори вибору - це умовний оператор і перемикач.
1. Умовний оператор має повну і скорочену форму.
If (вираз-умова ) оператор; //скорочена форма
В якості виразу-умови можуть використовувати арифметичний вираз, відношення і логічний вираз. Якщо значення виразу-умови відмінне від нуля (тобто істинно), то виконується оператор. Наприклад:
if (x<y&&x<z) min=x;
if (вираз-умова) оператор1; //повна форма
else оператор2;
Якщо значення виразу-умови відмінне від нуля, то виконується оператор1, при нульовому значенні виразу-умови виконується оператор2.Наприклад:
if (d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<<x1<<“x2=”<<x2;
}
else cout<<“\nРішення немає”;
2.Перемикач визначає множинний вибір.
switch (вираз)
{
case константа1 : оператор1 ;
case константа2 : оператор2 ;
. . . . . . . . . . .
[default: оператори;]
}
При виконанні оператора switch, обчислюється вираження, записане після switch, воно має бути цілочисельним. Набутого значення послідовно порівнюється з константами, які записані слідом за case. При першому ж збігу виконуються оператори помічені даною міткою. Якщо виконані оператори не містять оператора переходу, то далі виконуються оператори всіх наступних варіантів, поки не з'явиться оператор переходу або не закінчиться перемикач. Якщо значення вираження, записаного після switch не збіглося ні з однією константою, то виконуються оператори, які слідують за міткою default. Мітка default може бути відсутньою.
Приклад:
#include <iostream.h>
void main()
{
int i;
cout<<"\nEnter the number";
cin>>i;
switch(i)
{
case 1:cout<<"\nthe number is one";
case 2:cout<<"\n2*2="<<i*i;
case 3: cout<<"\n3*3="<<i*i;break;
case 4: cout<<"\n"<<i<<" is very beautiful!";
default:cout<<"\nThe end of work";
}
}
Результати роботи програми:
-
При введенні 1 буде виведено:
The number is one
2*2=1
3*3=1
-
При введенні 2 буде виведено:
2*2=4
3*3=4
-
При введенні 3 буде виведено:
3*3=9
-
При введенні 4 буде виведено:
4 is very beautiful!
-
При введенні всіх останніх чисел буде виведено:
The end of work
Оператори циклів
Розрізняють:
-
ітераційні цикли;
-
арифметичні цикли.
Група дій, що повторюються в циклі, називається його тілом. Однократне виконання циклу називається його кроком.
У ітераційних циклах відома умова виконання циклу.
-
Цикл з передумовою:
while (вираз-умова)
оператор;
Як <вираз-умова> найчастіше використовується відношення або логічне вираження. Якщо воно достеменне, тобто не рівне 0, то тіло циклу виконується до тих пір, поки вираз-умова не стане помилковою.
Приклад
while (а!=0)
{
cin>>a;
s+=a;
}
-
Цикл з після умовою:
do
оператор
while (вираз-умова);
Тіло циклу виконується до тих пір, поки вираз-умова достеменна.
Приклад:
do
{
cin>>a;
s+=a;
}
while(а!=0);
-
Цикл з параметром:
for (вираз _1; вираз-умова; вираз _3)
оператор;
вираз_1 і вираз_3 можуть складатися з декількох виразів, розділених комами. Вираз_1 - задає початкові умови для циклу (ініціалізація). Вираз-умова> визначає умову виконання циклу, якщо воно не дорівнює 0, цикл виконується, а потім обчислюється значення выразу_3. Вираз_3 - задає зміну параметра циклу або інших змінних (корекція). Цикл продовжується до тих пір, поки вираз-умова не дорівнюватиме 0. Будь-який вираз може бути відсутнім, але що розділяють їх « ; » мають бути обов'язково.
Приклади використання циклу з параметром.
-
Зменшення параметра:
for ( n=10; n>0; n--)
{ оператор};
-
Зміна кроку коректування:
for ( n=2; n>60; n+=13)
{ оператор };
-
Можливість перевіряти умову відмінне від умови, яка накладається на число ітерацій:
for ( num=1;num*num*num<216; num++)
{ оператор };
-
Корекція може здійснюватися не лише за допомогою складання або віднімання:
for ( d=100.0; d<150.0;d*=1.1)
{ <тіло циклу>};
for (x=1;y<=75;y=5*(x++)+10)
{ оператор };
-
Можна використовувати декілька виразів, що ініціалізували або коректували:
for (x=1, y=0; x<10;x++;y+=x);
Оператори переходу
Оператори переходу виконують безумовну передачу управління.
-
break - оператор переривання циклу.
{
< оператори>
if (<вираз_условие>) break;
<оператори>
}
Т. е. оператора break доцільно використовувати, коли умову продовження ітерацій треба перевіряти в середині циклу.
Приклад:
// шукає суму чисел що вводяться з клавіатури до тих пір, поки не буде введено 100 чисел або 0
for(s=0, i=1; i<100;i++)
{
cin>>x;
if( x==0) break; // якщо ввели 0, то підсумовування закінчується
s+=x;
}
-
continue - перехід до наступної ітерації циклу. Він використовується, коли тіло циклу містить галуження.
Приклад:
//шукає кількість і суму позитивних чисел
for( k=0,s=0,x=1;x!=0;)
{
cin>>x;
if (x<=0) continue;
k++;s+=x;
}
-
Оператор goto
Оператор goto має формат: goto мітка;
У телі тієї ж функції має бути присутньою конструкція: метка:оператор;
Мітка – це звичайний ідентифікатор, зоною видимості якого є функція. Оператор goto передає управління операторові, що стоїть після мітки. Використання оператора goto виправдане, якщо необхідно виконати перехід з декількох вкладених циклів або перемикачів вниз по тексту програми або перейти в одне місце функції після виконання різних дій.
Вживання goto порушує принципи структурне і модульне програмування, по яких всі блоки, з яких складається програма, повинні мати лише один вхід і лише один вихід.
Не можна передавати управління всередину операторів if, switch і циклів. Не можна переходити всередину блоків, що містять ініціалізацію, на операторів, які стоять після ініціалізації. Приклад:
int до;
goto m;
. . .
{
int a=3,b=4;
k=a+b;
m: int c=k+1;
. . .
}
В даному прикладі при переході на мітку m не виконуватиметься ініціалізація змінних а, b і до.
-
Оператор return – оператор повернення з функції. Він завжди завершує виконання функції і передає управління в точку її виклику. Вигляд оператора:
return [вираження];
Приклади вирішення завдань з використанням основних операторів Си++
«Початкуючі програмісти, особливо студенти, часто пишуть програми так: отримавши завдання, тут же сідають за комп'ютер і починають кодувати ті фрагменти алгоритму, які їм удається придумати відразу. Змінним дають перші імена типа х, що попалися, і в. Коли комп'ютер зависає, робиться перерва, після якої все написане стирається, і все повторюється заново. Періодично висловлюються сумніву в правильності роботи компілятора, комп'ютера і операційної системи. Коли програма доходить до стадії виконання, в неї вводяться довільні значення, після чого екран стає об'єктом пильного здивованого вивчення. «Працює» така програма зазвичай лише в дбайливих руках господаря на одному наборі даних, а внесення до неї змін може привести автора до втрати віри в себе і ненависті до процесу програмування.