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


 

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

34281. Задачей медицинской генетики является выявление и профилактика наследственных заболеваний 60.16 KB
  При изучении генетики чаще всего используются такие методы: Генеалогический метод состоит в изучении родословных на основе менделевских законов наследования и пoмoгeт установить характер наследования признака доминантный или рецессивный. Этим методом выявлены вредные последствия близкородственных браков которые особенно проявляются при гомозиготности по одному и тому же неблагоприятному рецессивному аллелю. Близнецовый метод состоит в изучении различий между однояйцевыми близнецами. С помощью близнецового метода выявлена роль...
34282. Изменчивость 48.89 KB
  На основе изменчивости организмов появляется генетическое разнообразие форм которые в результате действия естественного отбора преобразуются в новые виды. Виды: Ненаследственная модификационная фенотипическая В результате изменение условий среды организм изменяется в пределах НОРМЫ РЕАКЦИИ это пределы рамки в которых возможно изменение признака у денного генотипа например норма реакции молочности у коров колеблется от 1000 до 2500 кг заданной генотипом. 2 Наследственная генотипическая а...
34283. Гипотезы происхождения эукариотических клеток 194 KB
  Согласно симбиотической гипотезе популярной в настоящее время корпускулярные органеллы эукариотической клетки имеющие собственный геном характеризуются независимым происхождением и ведут начало от прокариотических клетоксимбионтов. Первоначально объем информации и геномах клеткихозяина с одной стороны и симбионтов презумптивных митохондрий центриолей и хлоропластов с другой был повидимому сопоставим. В дальнейшем могла произойти утрата геномами симбионтов части генетических функций с перемещением блоков генов в геном...
34284. Медицинская экология. Предмет, содержание, задачи и методы. Появление нового типа заболеваний человека – экологически зависимых болезней 13.29 KB
  Появление нового типа заболеваний человека экологически зависимых болезней. Медицинская экология пытается установить причину заболеваний в непосредственной связи с окружающей средой при этом учитывается большое разнообразие экологических факторов нозологических форм заболеваний и генетических особенностей человека. Появился новый тип заболеваний человека который можно назвать экологически обусловленными заболеваниями или как их иногда называют экологически зависимыми экологически связанными заболеваниями. Хронических...
34285. Мута́ция 22.01 KB
  Изменение числа генов: гаплоидия кратное уменьшение числа хромосом у потомства полиплоидия геном представлен 2 наборами хромосом различают аллополиплоидов имеются наборы хромосом полученные при гибридизации от разных видов и аутополиплоидов происходит увеличение числа наборов хромосом собственного генома кратное n. анеуплоидия гетероплоидия изменение числа хромосом не кратное гаплоидному набору 2. Изменение числа хромосом: моносомия отсутствие в хромосомном наборе диплоидного организма одной хромосомы полисомия...
34286. Общая периодизация и характеристика основных этапов постэмбрионального онтогенеза 56 KB
  Влияние генетических факторов условий и образа жизни на процесс старения. Влияние факторов Ряд наблюдений легли в основу достаточно распространенной точки зрения о наследуемости продолжительности жизни и следовательно наличии генетического контроля или даже особой генетической программы старения. Вопервых максимальная продолжительность жизни ведет себя как видовой признак.Описаны наследственные болезни с ранним проявлением признаков старости и одновременно резким сокращением продолжительности жизни.
34287. Онтогене́з 31 KB
  Постэмбриональное развитие Постэмбриональное развитие бывает прямым и непрямым. Прямое развитие развитие при котором появившийся организм идентичен по строению взрослому организму но имеет меньшие размеры и не обладает половой зрелостью. Дальнейшее развитие связано с увеличением размеров и приобретением половой зрелости.
34289. Старение 16.82 KB
  Опыты показывали что вытяжка из семенников молодого организма повышала тонус у старого. источник толстая кишечник в нём гнилостные процессы азотистый обмен самого организма. биологические часы 1вилочковая железа прекращает работу при переходе организма в зрелый возраст 2нервная система гипоталамус симпатическая нервная система Долгожители старше 90 лет; долгожительство характеризует определенные этнические группы проживающие в основном в сельской местности. Биологический смысл старения заключается в том что оно делает...