Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C лекції / 3.Оператори мови С.docx
Скачиваний:
32
Добавлен:
05.03.2016
Размер:
46.33 Кб
Скачать

Завдання

 Обчислити значення 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 (<логічний вираз>) оператор;

  

Цикл закінчується у наступних випадках:

  1. Умовний вираз у заголовку приймає нульове значення.

  2. У тілі циклу досягнуто місця, де розташований оператор break.

  3. У тілі циклу виконаний оператор 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.