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


 

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

54406. Модель випускника Запорізького педагогічного коледжу, майбутнього вчителя іноземної мови 57 KB
  викладач вищої категоріївикладачметодист голова циклової комісії викладачів іноземних мов Запорізького педагогічного коледжу Модель випускника Запорізького педагогічного коледжу майбутнього вчителя іноземної мови Відомо що сучасна педагогічна освіта передбачає підготовку викладача іноземної мови як правило у трьох типах вищих навчальних закладів: на відповідних факультетах педагогічних лінгвістичних...
54407. Урок в умовах модернізації шкільної освіти 49 KB
  Триєдине завдання уроку Освітня: озброїти учнів системою знань умінь і навичок. сформувати продовжити формування закріпити такі спільні навчальні вміння та навички на матеріалі цього уроку . для вирішення завдання розвитку у школярів самостійності мислення і в навчальній діяльності забезпечити в ході уроку . забезпечити в ході уроку розвиток мовлення учнів; збагачувати й ускладнювати словниковий склад і смислові функції мови учнів під час вирішення освітніх завдань.
54408. Модернізм як художньо-естетична система 225 KB
  МЕТА УРОКУ: активізувати і закріпити знання учнів набуті в попередні роки про літературні течії і напрямки у курсі української та зарубіжної літератури; з’ясувати причини появи філософські засади основні ознаки та етапи розвитку модернізму у мистецтві та літературі зарубіжній та українській; розкрити особливості основних напрямів і течій раннього модернізму; розвивати практичні навички аналізу символістських поезій та зразків імпресіонізму в українській та зарубіжній літературі; вміння спів ставляти різні напрями в літературі та...
54409. Modische Kleidung 217.5 KB
  Kinder! Das Thema der heutigen Stunde ist „Modische Kleidung“. Wisst ihr solhe Redensart „Kleider machen Leute“? Das ist ein deutsches Sprichwort. Meiner Meinung nach hat diese Redensart einen gleichen Sinn in allen Sprachen. Kinder, wie versteht ihr „Kleider machen Leute“? Beantwortet bitte lakonisch, schnell und deutlich.
54410. Материки Південної півкулі Австралія, Південна Америка і Антарктида 73.5 KB
  Мета: Дати учням установку на вивчення нової теми, познайомити з структурною моделлю модуля, з самостійною роботою по вивченню нового матеріалу,сприяти розвитку комунікативної компетентності. Дати учням загальну уяву про природу материків Південної півкулі: Австралія, Південна Америка, Антарктида.
54411. Підсумкова контрольна робота з математики тестового характеру 168 KB
  Мета оцінювання: Встановити відповідність рівня навчальних досягнень учнів 1 класу з математики за навчальний рік Програмовим вимогам.
54412. Основні закономірності спадковості та мінливості 274 KB
  Менделя виступаючи в ролі біографа. Але промова Менделя пролунала для сучасників як промова інопланетного прибульця. Лише в 1900 році знову відкрили закони Менделя. Менделя через 35 років після їі появи на світ та відкрив самого г.
54413. Лікарські рослини у житті людини. Збирання і заготівля лікарських рослин 79.5 KB
  Мета: розширити знання учнів про лікарські рослини їх значення в житті людини формувати в учнів вміння і навички збору лікарських рослин їх зберігання. Обладнання: таблиці; гербарні екземпляри різних лікарських рослин дидактичний матеріал книги: Травы дарующие здоровье лікарські трави. Основні терміни і поняття: лікарські рослини фармакологія хімікофармацевтична промисловість.
54414. ВИКОРИСТАННЯ МУЛЬТИМЕДІЙНИХ ЗАСОБІВ НАВЧАННЯ НА УРОКАХ ФІЗИКИ 946 KB
  Мета: –навчити використанню операторів циклу при опрацюванні результатів лабораторної роботи Визначення модуля пружності гуми; –розвити навики роботи у середовищі Turbo Pscl; –виробляти вміння узагальнювати вивчений матеріал; –виховувати в учнів уважність та відповідальність при виконанні завдань. Організаційний момент Викреслення мети основних завдань уроку ознайомлення з обладнанням необхідним для проведення лабораторної роботи та опрацювання результатів вимірювань. Виконання лабораторної роботи. Для виконання лабораторної...