Завдання
Обчислити значення S. Сталу а прийняти рівною 2.1.
Програма:
#include < iostream.h >
#include < math.h >
using namespace std;
int main()
{
short int i;
float S,a;
a=2.1;
S=0;
for(i=1;i<=10;i++)
S+=i*i+a*a/i;
cout << "S=" << S << endl;
system ("pause");
return 0;
}
Результати обчислень: S=397.917;
3.7 Оператор циклу з передумовою while
Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова Синтаксис:
while (<логічний вираз>) оператор;
Цикл закінчується у наступних випадках:
Умовний вираз у заголовку приймає нульове значення.
У тілі циклу досягнуто місця, де розташований оператор break.
У тілі циклу виконаний оператор return.
У перших двох випадках керування передається оператору, розташованому безпосередньо за циклом, у третьому випадку активна на той момент функція завершує свою роботу, повертаючи якесь значення.
Знову ж таки досить часто помилкою програмістів, що працювали раніше на Паскалі, є використання замість оператора порівняння (==) оператора присвоювання (=). Наприклад, наступний фрагмент створить нескінчений цикл:
/* некоректне використання оператору циклу */
int main(void)
{
int j=5;
while(j=5) /* змінній j присвоїти значення 5 */
{ printf("%%d ",j);
j++; }
}
Компілятор Сі попередить про некоректне присвоювання в даному випадку, виправити яке особливих труднощів не складе.
Втім, часто такий цикл використовується для перевірки відповіді користувача на питання з програми ("так чи ні ?"):
/* фрагмент використання while */
printf ("Підтверджуєте ? Так чи ні ?(y/n);");
scanf("%%c",&ch);
while (ch!='y' && ch!='n')
{
printf(" Відповідайте так чи ні . . (y/n);");
scanf("%%c",&ch);
}
Тіло циклу почне виконуватися, якщо користувач введе будь-який символ, відмінний від у або n. Цикл виконується доти, доки користувач не введе або 'у' , або 'n'.
Приклад. Оператор while у функції підрахунку факторіалу:
long factorial(int number)
{
long total;
total=number;
while (--number)
total*=number;
return total;
}
3.8 Оператор циклу з післяумовою do … while
Оператор do…while використовується для організації циклічного виконання оператора або серії операторів, які називаються тілом циклу, до тих пір, поки умова не стане хибною
Синтаксис:
do
<оператор>;
while (<логічний_вираз>);
Ситуації, що призводять до виходу з циклу, аналогічні наведеним для циклу while із передумовою. Характерним є те, що тіло циклу виконається хоча б один раз. На відміну від Паскаля, в якому цикл з постумовою repeat operator until умова виконується, поки умова невірна, цикл do ... while навпаки припиняє виконання, коли умовний вираз обертається в нуль (стає невірним).
Приклад 1.
printf ("Підтверджуєте ? Так чи ні ?(y/n);");
do
scanf("%%c",&ch);
while (ch!='y' && ch!='n')
Приклад 2.
#include < stdio.h >
#include < conio.h >
void main()
{
int n,i;
float fact;
printf("Програма обчислення n!. ");
printf("Введiть число n: ");
scanf("%%d",&n);
i = 1;
fact = 1;
do {
fact *= i;
i++;
} while (i <= n);
printf("n!==%%g",fact);
}
Зауваження. В мові С оператори циклу з передумовою while та післяумовою do…while працюють, коли умова набуває логічного значення «істина» (true).
Завдання
Протабулювати задану функцію, де x змінюється на певному проміжку із заданим кроком .
Скласти дві програми: в першій використати оператор циклу з передумовою while, у другій – оператор циклу з після умовою do ... while.