17099

Обчислювальний процес, що розгалужується, з різними логічними умовами: оператор if... else, умовна операція (?:), оператор switch, оператор break, оператор goto

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота № 11 Тема: Обчислювальний процес що розгалужується з різними логічними умовами: оператор if... else умовна операція : оператор switch оператор break оператор goto Ціль роботи: Вивчити реалізацію в мові ветвящихся обчислювальних процесів . Навчитися писат

Украинкский

2013-06-29

107 KB

2 чел.

Лабораторна робота № 11

Тема:  Обчислювальний процес, що розгалужується, з різними логічними умовами: оператор if... else, умовна операція (?:), оператор switch, оператор break, оператор goto

 Ціль роботи: Вивчити реалізацію в мові ветвящихся обчислювальних процесів . Навчитися писати програми, використовуючи оператори: розгалуження if...else, переключення switch у парі з оператором break, оператор переходу goto, тернарную умовну операцію (?:).

Обладнання:ПК

Теоретичні відомості

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

Оператор if…else(якщо…інакше)

Формат оператора if…elseприведено нижче:

if(<вираження>) <оператор 1>

[else <оператор2>]

Дії оператора залежать від значення вираження. Реалізація різних можливостей виконується такими способами. Якщо <вираження> у дужках не дорівнює  (“Істинно”), то буде виконаються <оператор1>. У противному випадку, якщо зазначене <вираження> дорівнює (“Ложно”), те буде виконуватися <оператор2> у блоці else, якщо він присутній.

У тілі оператора if може знаходитися один чи більш операторів. Якщо повинні виконуватися два чи більш оператори, їх необхідно укласти в операторные дужки: "{" і "}". <Вираження> являє собою запис логічної чи умови умов. Наприклад: 1) if(i<=j)...;  2) if(size= =a)...;  3) if(t>10 && v<3) ..;  4) if(a){…}else{…};5)if(!a){…}else{…}...

У першому випадку <вираження> щире, якщо значення перемінної i буде чи менше дорівнює значенню перемінної j; у другому випадку умова буде істинно, якщо значення перемінних size і a будуть рівні; у третім вираженні істина буде дотримуватися, коли перемінна t буде більше десяти “И” (&&) перемінна v буде менше трьох. У четвертому випадку перший блок буде виконуватися при а не рівному  , у противному випадку виконується блок після else. У п'ятому виконуються дії, зворотні, зазначені в четвертому варіанті. Замість перемінних можна використовувати вираження, що будуть безпосередньо обчислюватися, наприклад: if ( (i+2)/3 < 4*j )...виділення. Основні операції, що ставляться між порівнюваними величинами, що випливають :

= =  -  знак "дорівнює" (Не плутати з присвоюванням "="(!));

!  =  -  знак "не дорівнює";

<  -  знак "менше";

<=  -  знак " чименше дорівнює";

>  -  знак "більше";

>  =  - знак " чибільше дорівнює".

Основні  логічні операції, що ставляться між порівнюваними вираженнями (якщо їхній два як у прикладі 3 чи більш), що випливають :

! - операція "НЕ". Приклад: if ( !(num % 2) )... // істина -якщо num нечетно.

&& - операція "И". Приклад 3 (див. вище).

|| - операція "ЧИ". Приклад: if ( i+n*2<l || i%2=0)...

Детально логічні операції будуть розглянуті в наступній самостійній роботі. Нижче приведений фрагмент програми, що виконує наступні дії: запитує на введення три числа і видає в результаті порівняння найменше з них. Оператор if…elseдопускає можливість вкладеності при розгалуженні, що забезпечує гнучкість реалізації логіки і компактність запису операторів.

Приклад

...

printf("Увести три числа через пробіл: ");

scanf(" %d%d%d ", &a, &b, &c);

if (a<=b && a<=c) printf("\ n Найменше: %d", a);

else

if (b<=a && b<=c) printf("\ n Найменше: %d", b);

else printf("\ n Найменше: %d", c);

...

Умовна тернарная операція (?:)

Синтаксис даної операції наступний:

<вираження1> ?<вираження2> : <вираження3>;

Результат операції буде дорівнює <вираженню2> у тому випадку, якщо <вираження1> щире, у противному випадку результат буде дорівнює <вираженню3>. Нижче показаний приклад реалізації даної конструкції.

int result = (i<j) ? i : j ; // Перемінної result привласнюється найменше значення // (i чи j), якщо i < j те i, інакше.

Оператор варіанта switch

Оператор вибору варіанта switch заміняє трохи операторів if…else...Звичайно оператор switch використовується тоді, коли потрібно вибір і виконання тільки однієї послідовності операторів з декількох можливих, хоча можливості оператора switch не обмежуються цим випадком.

Синтаксис оператора switch:

switch (<вираження>)

{

case <константне_вираження_1>:

<оператор 1>

[case <константне_вираження_2>:

<оператор 2>]

...

[case <константне_вираження_n>

<оператор n>]

[default:

<оператор>]

}

Після обчислення вираження типу int у ( у заголовку оператора switch) результат порівнюється послідовно з константними_вираженнями, що коштують після зарезервованих слів case, що разом з константними_вираженнями є внутрішніми мітками оператора, Після константних_виражень обов'язково ставиться ознака мітки ":". Порівняння значення вираження починається із самого верхнього константного_вираження і далі, поки не буде встановлена їхній відповідність. Тоді виконуються оператори після відповідної мітки case, на яку передається керування. Для того щоб припинити послідовне виконання операторів і вийти з оператора switch, необхідно після групи операторів, що належать обраному case, поставити оператор break. Якщо break відсутній, то послідовно виконуються всі оператори, а мітки не враховуються.

Послідовність операторів, що коштують після слова default (умовчання), виконується тоді, коли значення вираження не збігається з жодним константним_вираженням. Приклад показує можливості оператора switch. Функція error_message виводить одне з трьох повідомлень у залежності від значення, коли помилки (параметр error_code).

Приклад

  void error_message(int error_code)

 { switch(error_code)

  { case 1: printf("\n повідомлення 1"); break;

  case 2: printf("\n повідомлення 2"); break;

  case 3: printf("\n повідомлення 3"); break;

  default : printf("\n невірний код помилки");

  }

 }

Приклад

/*    ЗАНЯТТЯ N 5

Виконав студент групи .........   Петров Ю.В.

Застосування операторів if, switch, тернарной операції (? :)

на прикладі простого калькулятора. Більш складні умови

для оператора switch приведені в тексті програми       */

#include <stdio.h>

#include <conio.h>

#include <math.h>

int main(void)

 {  float a,b,rez;

    int s,p,h;

    char oper, flag=' ';

    clrscr();

    printf("\n Уведіть через пробіл два числа:  ");

    scanf(" %f %f ", &a, &b);

    printf(" Уведіть знак операції (+ - * /): ");

oper1: oper=getche();

    switch(oper)

{ case '+': rez=a+b; break;

  case '-': rez=a-b; break;

  case '*': rez=a*b; break;

  case '/': rez=a/b; break;

  default : printf("\n Повторите введення знака: ");

     goto oper1;

 }

    printf("\n Результат операції: %5.2f\n",rez);

oper2: printf("\n Уведіть цифру в інтервалі (-9...+9) :  ");

    scanf("%d",&s);     //Умови для оператора switch:

    if(s<0)             //якщо    s=0, те - a++, p++, h++

     { s=abs(s);        //якщо    s=1, те -      p++, h++

      flag='-';         //якщо    s=2, те -           h++

     }                  //якщо    s=3, те - a--

    else flag=' ';      //якщо    s=4, те -      p--

    if(s<=9)            //якщо    s=5, те -           h--

   //якщо s=6..7, те - a=1, p=1, h=1

    switch(s)           //якщо    s=8, те - a=0, p=0, h=0

      {case 0:                                 a++;

case 1:                                 p++;

case 2: printf("\tВы ввели %c%d",flag,s); h++; break;

case 3: printf("\tВы ввели %c%d",flag,s); a--; break;

case 4: printf("\tВы ввели %c%d",flag,s); p--; break;

case 5: printf("\tВы ввели %c%d",flag,s); h--; break;

case 6: case 7: printf("\tВы ввели %c%d",flag,s);

    a=1; p=1; h=1; break;

case 8: printf("\tВы ввели %c%d",flag,s);

    a=0; p=0; h=0; break;

default: printf("\tВы ввели %c%d \n\

на границі інтервалу",flag,s);

  goto oper2;

  }

else { printf("\tВы ввели число поза інтервалом (-9...+9)\n");

       goto oper2;

     }

printf("\n Результат switch: a=%5.2f p=%2d h=%2d\n",a,p,h);

getch();

if (p==0) {b=10; a=10;}

else      {b+=b/p; a+=a/p;}

printf("\n Результати обчислень: a=%5.2f b=%5.2f",a,b);

rez=(b<a)?b:a;

printf("\n Результат тернарной операції: res=%5.2f",rez);

getch();

return 0;

}

/*Уведіть через пробіл два числа:  54 32

 Уведіть знак операції (+ - * /): /

 Результат операції:  1.69

 Уведіть цифру в інтервалі (-9...+9) :  -9

     Ви ввели -9  на границі інтервалу

 Уведіть цифру в інтервалі (-9...+9) :  -6

     Ви ввели -6

 Результат switch: a= 1.00 p= 1 h= 1

 Результати обчислень: a= 2.00 b=64.00

 Результат тернарной операції: res= 2.00    */

Приклад програми на С++

Знайти суму ряду

  y = , де    a  x  b,    x = c.

Варіанти завдань приведені в таблиці 4.1.

Вар.

f1

f2

A

b

c

6

X4-cosx

tgx+2x

1

5

0,5

#include<iostream.h>

#include<stdio.h>

#include<math.h>

void main()

{int a,b;

double x,y,c;

printf("Enter a,b,c\n");

scanf("%d%d%lf",&a,&b,&c);

printf("|  x  |     y     |\n");

printf("-------------------\n");

x=a;

l1:

y=(pow(x,4)-cos(x))/(tan(x)+2*x);

printf("|%5.2lf|%11.8lf|\n",x,y);

if(x<b) {x=x+c;

goto l1;

}

}

Хід роботи

  1.  Відповідно до індивідуального завдання розробити програму з застосуванням операторів розгалуження, вибору варіанта, розриву, переходу (при складанні програми використовувати оператори if…else,switch,break,goto,операцію (?:) у двох-трьох варіантах).
  2.  Набрати програму й усунути помилки.
  3.  Вивчити роботу операторів, різні можливості їхнього застосування.
  4.  Одержати результати.
  5.  Оформити звіт і зробити Захист роботи по роботі, вивчивши контрольні питання по темі.

Вимоги до змісту звіту приведені в лабораторній  роботі№1.

Індивідуальне завдання 

Обчислити значення функції

y = f(x), де

                f1(z), якщо z < 0;

        x =   f2(z), якщо 0 z 8;     

                f3(z), якщо z > 8;

                     z = cos(с).

Значення функцій приведені в таблиці 5.1.

Таблиця 5.1 - індивідуальне завдання

Вар.

f(x)

f1(z)

f2(z)

f3(z)

c

1

x2+8x-6

z3-3z2

zln(z)

Ez-e-z

5,1

2

X3lnx2

e-z+3z

ln|z|

Cosz+z2

5,4

3

X1/4+sinx

2z-ln|z|

tgz-2z

Sin3z

4,1

4

X4+2sinx2

sinz+tgz

cos3z+3/z

Z2+lnz2

3,2

5

Cosx3

z2+2sinz

lnz+2z

Ez+1/z

4,7

6

Sinx+2lnx

2z+tgz

lnz4+2z

Cosz+2z

1,3

7

Sin4x2

sinz2-z3

2sinz2

1,6

8

Tgx-4x3

1/cos2z

z-ln|z|

Z3+sinz

1,5

9

Lnx-e2x

z2+ez

cos4z/z3

Tg(z+1/z)

2,7

10

2x-lnx

2cosz+1/z

z3-2ln|z|

Tg2z+z3

3,8

11

3x-sinx

3tg3z

1/cos4z

E2z+sinz

1,6

12

4x2+cosx

3z/sinz

z2+2sinz

2z-ln|z|

2,4

13

+cosx

z2+lnz2

ez+1/z

Z4-sinz

4,1

14

x1/3+2x

ln|cosz|

2z+ez

Tg2z

2,5

15

Sin4x+2x

z5/sin2z

e-2z+tgz

Cos4z+z1/3

3,2

16

Tg4x+1/x

z/sinz1/5

2ztg3z

Z+8

1,4

17

Ln(1/x)

zsin2z-8

lnsinz0,8

-2,5

2,3

18

e2x+4x

cos( /4)-z

1/(ez+1)

arctg(z+3)

4,1

19

Cosx4+x/2

sin(z+30 )

lncos(z/6)

e-tg(z-2)

3,2

20

2tgx+ex

z+cos( +z)

z3+z1/3

Z4-lnz

2,8

21

2lnx2

arccosz2

sinz+lncosz

Z3-sin( x)

1,7

22

Cos2x/3

z2+ln(z+4)

e(z-5)+sinz

2,2

23

1/tgx4

e-4z+2+z2

cos(z1/3+2)

Sin( +4z2)

5,6

24

e2x-x3

tg(z2+)

ln(sinz+5)

Z4+z2-cosz

3,4

25

Tgx-2lnx

arcsin(z+3)

z3-z2+cosz

Ln(z3+4z)

2,5

26

Cosx4+x/2

lnsinz0,8

cos( /4)-z

Z/sinz1/5

3,7

27

Ln(x+x2)

2ztg3z

sin( +4z2)

Z3+z1/3

2,6

28

Cosx4+2x

tg(z+1/z)

e2z+sinz

Cosz1/5

3,8

29

Sin4x+2x

z2+lnz2

cos3z+3/z

Cos( /4)-z

5,8

30

3ln(x2+5)

z4-lnz

sinz+tgz

Sinz+lncosz

3,5

Контрольні запитання

  1.  Який тип повинний мати вираження в операторах if і switch?
  2.  Чи можна використовувати оператор goto для передачі керування на else, мітку case…;default:?
  3.  За допомогою яких операторів можна достроково завершити виконання операторів if…else,switch?
  4.  Чи можна використовувати в якості вираження в операторі switch покажчик?
  5.  Чи можна використовувати в якості константного вираження в операторі switch константу?
  6.  Чи обов'язково використовувати оператор break в операторі switch? Яке його дія? Що відбувається при відсутності break?
  7.  Якому з вкладених операторів if відноситься else при наявності і відсутності операторних дужок  і  .
  8.  Які типи операндів припустимі в умовній операції (? :)?
  9.  Поясните роботу операторів у приведених прикладах.
  10.  Як оголосити і використовувати мітки в програмі?


 

А также другие работы, которые могут Вас заинтересовать

54005. My family and friends 33.5 KB
  So, you’re right, we’ll talk about our families and friends but I realized that it is a little bit difficult for you to guess the topic of our today’s lesson and I hope next ex. will help you…
54006. SPORT 55 KB
  The equipment you need is skis, boots and poles. Clothes are very important too because they protect you from cold weather. You need a ski-suit, a hat, goggles to protect your eyes, socks, mittens.
54007. На життєві йдучи видноколи, не розтратьте найкращих чуттів, будьте гідні рідної школи, будьте гідні своїх вчителів! 108.5 KB
  Будьте гідні рідної школи Будьте гідні своїх вчителів за творчістю випускників Чернівецької гімназії № 5: Ірини Вільде Ореста Масикевича Володимира Кобилянського Дмитра Загула Тараса Унгуряна Андрія Шкургана Олександра Маслюченка Єлєни Даскал Мета: ознайомити учнів з цікавими фактами життя і творчості майстрів художнього слова які навчались у Чернівецькій гімназії № 5; через художнє слово ввести учнів у чарівний світ поезії; навчити аналізувати поетичні твори; розвивати творчі та комунікативні здібності вміння логічно мислити;...
54008. «The Tsar Bell and the Kunstkammer». Путешествие в Москву и Санкт-Петербург 93 KB
  Write down your home task. Translate the texts «Lake Baikal» and «The Nile» at pages 22, 24 in your workbooks 1; А, В, C, D at page 49 in your textbooks. And please, read the words at page 44 in your textbooks.
54011. МИСТЕЦТВО. (ТЕЛЕБАЧЕННЯ. КІНО. МУЗИКА) 255 KB
  So, it’s better to see than to hear. And I quite side with you. Now let’s watch a short fragment and try to guess what we are going to discuss at today’s lesson. Look at the screen. Unfortunately the extract is in Russian but Russian is just one more foreign language, isn’t it?
54012. Theatre Lessons for children 62.5 KB
  Many of the skills learned in playing are social skills. Most games worth playing are highly social and have a problem that needs solving within them- an objective point in which each individual must become involved with others while attempting to reach a goal.
54013. Опис графічних операцій у мові програмування Паскаль 139.5 KB
  Мета: Ввести поняття про графічних операторів у Паскалі. Навчити учнів правильно складати програми по обробці графічних функцій й операцій.