Головна

Лекція 3

  1. Лекція 1
  2. Лекція 1.
  3. Лекція 1.
  4. Лекція 1. Загальні уявлення про філософію і філософствування
  5. Лекція 1. Поняття і предмет МПрП.
  6. Лекція 10
  7. Лекція 10. Тема 6. Українська культура сер.15 - сер.16 ст.

Групу операторів розгалуження складають оператори if, switch. Форма оператора if має вигляд if (<вираз 1>) <оператор 1> else <оператор 2>. Зміст оператора: якщо вираз 1 істина, виконується оператор 1, інакше - оператор 2. Ключове слово else і наступний оператор 2 можуть бути відсутні. При виконанні такого оператора, якщо вираз 1 - хибність, ніякі операції не виконуються і відбувається перехід до наступного оператора програми.

Приклад. Написати програму для обчислення наступної функції у для значення будь-якого х: .

Текст програми:

#include <stdio.h>

#include<math.h>

main()

{ float x,y;

printf("Vvedit znachennja x:");

scanf("%f", &x);

if (x<0) y=pow(2,x);

else y=sinh(x)+cosh(x);

printf("\nDlja znachennja x=%f znachenna y=%f\n",x,y);

scanf("%u"); }

У ролі операторів 1 та 2 можуть виступати оператори if, і у цьому випадку кажуть про вкладені оператори. При застосуванні вкладених операторів if виникає проблема визначення відповідності слів else словам if у зв'язку з тим, що деякі оператори можуть не мати частини else. Для розв'язування цієї проблеми домовилися зв'язувати слово else з найближчим передуючим словом if, з яким ще не зв'язане інше слово else. Наприклад, наведена нижче програма друкує рядок "оператор 2".

#include <stdio.h>

main()

{

int i = 4, j = 6, k = 8;

if (i < k)

if (i > j) printf("оператор 1\n");

else printf("оператор 2\n");

}

Приклад. Написати програму для обчислення наступної функції z для значення будь-якого х:

#include <stdio.h>

#include<math.h>

main()

{ float x,y,z;

int d;

printf("Vvedit znachennja x:");

scanf("%f", &x);

y=25*sin(x);

d=(y<-1)||(y==2)||(y>=99);

if (d==1) printf("\nDlja znachennja x=%f znachenna y=%f FNV\n",x,y);

else

if (y<=0.95) z=acos(y)-0.2;

else z=sqrt(y*y+log10(y+1.8));

if (!d) printf("\nDlja znachennja x=%f znachenna y=%f znachenna z=%f\n",x,y,z);

scanf("%u");

}

Оператор множинного розгалуження має таку форму

switch (<вираз цілого типу>)

{

case <значення_1>: <послідовність операторів_1>

break;

case <значення_2> : <послідовність операторів_2>

break;

case <значення_n> : <послідовність операторів_ n>

break;

default : <послідовність операторів_ n+1>

}

Зміст оператора: якщо значення виразу цілого типу дорівнює деякому значенню i, то виконується відповідна послідовність операторів i; інакше виконується послідовність операторів n+1. Частина default може бути відсутньою, і тоді, якщо значення виразу, вказаного у дужках, не дорівнює жодному значенню i (i = 1, n), ніякі операції не виконуються, і відбувається перехід до наступного оператора програми.

Приклад. Написати програму для обчислення наступної функції z для значення будь-якого х:

#include <stdio.h>

#include<math.h>

main()

{

float x,y,z; int p;

printf("Vvedit znachennja x:");

scanf("%f", &x);

y=25*sin(x);

if (y<-1||y==2||y>=99) p=1;

else if (y<=0.95) p=2;

else p=3;

switch(p)

{

case 1: printf("\nDlja znachennja x=%f znachenna y=%f FNV\n",x,y); break; case 2: z=acos(y)-0.2;

printf("\nDlja znachennja x=%f znachenna y=%f znachenna z=%f\n",x,y,z);break; case 3: z=sqrt(y*y+log10(y+1.8));

printf("\nDlja znachennja x=%f znachenna y=%f znachenna z=%f\n",x,y,z); break;

}

scanf("%u");

}

#include <stdio.h>

main()

{

int a=32767;

printf("\nZnachennja a=%d. Znachenna a+1=%d\n",a,a+1);

scanf("%u");

}

#include <stdio.h>

main()

{ float weight, //Vaga

height; //Zrist

printf("Vvedit vashu vagu:");

scanf("%f", &weight);

printf("Vvedit Vash zrist:");

scanf("%f", &height);

printf("\n\tRiznitsa miz vashim zristom ta vashou vagou-%f\n\a",height-weight);

printf("Riznitsa miz vashim zristom ta vashou vagou-%f\n\n\a",height-weight);

int b;

b=52;

printf("\x52=%u ",b);

printf("\152=%u ",b);

scanf("%u");}

#include <stdio.h>

main()

{ float weight, //Vaga

height; //Zrist

printf("Vvedit vashu vagu:");

scanf("%f", &weight);

printf("Vvedit Vash zrist:");

scanf("%f", &height);

printf("\n\tRiznitsa miz vashim zristom ta vashou vagou-%f\n\a",height-weight);

printf("Riznitsa miz vashim zristom ta vashou vagou-%f\n\n\a",height-weight);

int b;

b=52;

printf("\x52=%u ",b);

printf("\152=%u ",b);

scanf("%u");

}

Лекція 3

Цикли

Цикл являє собою сполучення умови і групи дій, які треба виконувати, доки виконується умова. Група дій утворює тіло циклу. Якщо умова перевіряється перед можливим виконанням тіла, цикл називають циклом з передумовою. В тому разі коли умова перевіряється після виконання операторів тіла, кажуть про цикл з післяумовою.

У мові C++ визначений один цикл з післяумовою - do while. Форма запису цього циклу має такий вигляд do <оператор> while(<вираз>);. Виконання оператора повторюється доки вираз є істина. При нормальній роботі програми вихід з циклу відбувається у трьох випадках:

1) вираз прийняв значення хибність;

2) у тілі циклу (оператор може бути складовий) виконався оператор break;

3) у тілі циклу виконався оператор return.

У другому випадку відбувається перехід до оператора, прямуючого після поданого оператора циклу. У третьому випадку відбувається вихід з підпрограми, що містить поданий цикл.

Оператор do while часто застосовують для перевірки відповідей користувача на питання програми, як показано у наступному прикладі.

do {

printf("\n Відповідайте так чи ні (т/н):");

scanf("%c", &ch);

}

while (ch != 'т' && ch != 'н');

Цикл з передумовою while має форму запису: while (<вираз>)<оператор>. Оператор виконується доки вираз - істина. Умови виходу з циклу співпадають з умовами для циклу do while.

Найбільш загальною формою циклу з передумовою є цикл for. Форма запису цього циклу має вигляд

for (<вираз 1>;< вираз 2>; <вираз 3>) <оператор>

Усі вирази необов'язкові і можуть бути відсутні. Звичайно перший вираз застосовують для ініціалізації параметрів циклу, другий - для перевірки умови виходу з циклу, третій - для зміни параметрів циклу.

Логіка роботи оператора for така.

1. Якщо вираз 1 присутній, він обчислюється.

2. Якщо вираз 2 присутній він обчислюється, і при отриманні значення "хибність" відбувається вихід з циклу.

3. Виконується тіло циклу (оператор).

4. Якщо вираз 3 присутній, він обчислюється.

5. Перехід до кроку 2.

Виконання оператора continue у будь-якому місці тіла циклу призводить до переходу до кроку 4. Оператори break та return призводять до виходу з циклу, як і у інших типах циклу.

Цикл for можна завжди звести до циклу while. А саме, запис

for (< вираз 1>; <вираз 2>; <вираз 3>) <оператор>

еквівалентний за означенням запису

<вираз 1>;

while (<вираз 2>)

{ <оператор> <вираз3>;}

Цикл вигляду for (; ;) ; являє собою нескінчений цикл.

Розглянемо як приклади застосування циклів на наступних задачах

Скласти програму для обчислення наступної суми

#include <stdio.h>

main()

{

int i,n,m,d,d1,d2,d3;

float suma;

do

{

printf("Vvedit n ta m: ");

scanf("%d%d",&n,&m);

d1=m<-8&&n<-8;

d2=m>-8&&n>-8&&m<13&&n<13;

d3=m>13&&n>13;

d=(n<=m)&&d1||d2||d3;

if (d) break;

printf(" PPV ");

}

while (d==0);

printf("n=%d\n",n);

printf("m iz %d\n",m);

printf(" d iz %d\n",d);

suma=0.0;

for (i=n; i<=m; i++)

suma=suma+float(i+5)/float((i+8)*(i-13));

printf(" suma iz %6.2f\n",suma);

printf("\n suma-%f\n\a",suma);

printf("suma-%6.2f\n\n\a",suma);

scanf("%f",suma);

}

Скласти програму для обчислення суми степного ряду з точністю ε використавши наступну рекурентну формулу

#include <stdio.h>

#include <math.h>

main()

{

int n,d;

float suma,u1,u2,eps,x;

do

{

printf("Vvedit x: ");

scanf("%f",&x);

d=fabs(x)<1;

if (d) break;

printf(" PPV!\n ");

}

while (!d);

do

{

printf("Vvedit eps: ");

scanf("%f",&eps);

d=eps>0&&eps<0.5;

if (d) break;

printf(" PPV!\n ");

}

while (!d);

n=1;

u1=x*x*x;

suma=u1;

do {

u2=u1*x*x/(2*n)/(2*n-1);

suma=suma+u2;

d=n>2&&fabs(u2-u1)<eps;

if (d) break;

n=n+1;

u1=u2; }

while (!d);

printf("dlja x= %6.2f dlja eps= %0.8f n=%d suma=%12.8f\n",x,eps,n,suma);

/* printf("\n suma-%f\n\a",suma);

printf("suma-%6.2f\n\n\a",suma); */

scanf("%f",suma);

}

 



Оператори розгалуження | Перетворення типів
© 2016-2022  um.co.ua - учбові матеріали та реферати