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.  Як оголосити і використовувати мітки в програмі?


 

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

85255. Поняття «конкурентоспроможність товарів» та її складові 23.28 KB
  Імідж товару Управління конкурентоспроможністю продукції Заходи щодо підтримання та підвищення конкурентоспроможності товарів. Позитивний імідж є важливим фактором успішної діяльності в різних сферах підприємництва і найчастіше досягається високою якістю продукції сталістю фінансового стану фірми...
85257. Имущественное право в Древнем Риме 127 KB
  Изложенный материал позволяет получить систематизированное знание о вещном праве и праве собственности в Древнем Риме, их основных институтах, раскрывает их взаимосвязь с современным российским гражданским правом, способствовует формированию у студентов творческого профессионального юридического...
85258. Обязательственное право в Древнем Риме 149.5 KB
  В данной теме дается систематизированное знание об обязательственном праве и его основных институтах в Древнем Риме, раскрывается её взаимосвязь с современным российским гражданским правом. Полученные знания будут способствовать формированию правовой культуры, креативного юридического мышления...
85259. ОСНОВЫ РИМСКОГО ПУБЛИЧНОГО ПРАВА 99 KB
  В процессе рассмотрения темы дается систематизированное знание об особенностях государственного права в Древнем Риме на различных этапах его истории раскрываются основные государственно-правовые институты показывается его взаимосвязь с римским частным правом. Возникновение государства в Древнем Риме.
85260. Текущий ремонт асинхронных двигателей на ООО КЭВРЗ 442.5 KB
  Описать требования, предъявляемые к техническому обслуживанию асинхронных двигателей; - описать технологический процесс ремонта асинхронных двигателей; - произвести подборку приспособлений и инструментов для ремонта асинхронных двигателей; - описать мероприятия по технике безопасности при ремонте; - сделать расчет стоимости выполненной работы;
85261. ОПРЕДЕЛЕНИЕ СТОИМОСТИ РАБОТ ПО ПОДТВЕРЖДЕНИЮ СООТВЕТСТВИЯ В ЗАКОНОДАТЕЛЬНО РЕГУЛИРУЕМОЙ СФЕРЕ 23.13 KB
  Стоимость работ по подтверждению соответствия конкретного вида продукции, систем качества, систем управления качеством, систем управления окружающей средой, персоналом устанавливается назначенным органом по оценке соответствия согласно с этими Правилами и утверждается их руководством.
85262. УПРАВЛЕНИЕ КАЧЕСТВОМ ПРОДУКЦИИ И УСЛУГ 43.67 KB
  Создание и внедрение системы качества Создание и внедрение системы менеджмента качества в организации предусматривает следующие шаги: признание высшим руководством организации качества как жизненно важного элемента его деятельности; осознание того что разработка системы качества является...
85263. КОНТРОЛЬ РАБОТ (АУДИТ) ПО УПРАВЛЕНИЮ КАЧЕСТВОМ ПРОДУКЦИИ И УСЛУГ 41.29 KB
  Аудит - систематический независимый и задокументированный процесс получения доказательств аудита и объективного их оценивания с целью определения ступени исполнения критерия аудита. Доказательства аудита протоколы изложенные факты или другая информация что является существенной для критериев аудита и может быть проверена.