SlideShare a Scribd company logo
Бублик Володимир Васильович Програмування - 2 Лекція 4. Базові поняття програмування. Оператори    Лекції для студентів 2 курсу
Прості оператори   Тотожній Операторний вираз Блок Оператори керування
Тотожній  ( null statement )  Ніяк не позначається, зовсім не виконується. Тотожній оператор розміщуємо там, де на вимогу синтаксису повинен знаходитися оператор, але нічого робити не треба. Приклади  1. int k=0; while (++k>0)   /* тотожній оператор */ ; cout<<k<<endl; // -2 147 483 648 2.  while (*t++ = *s++)   /* тотожній оператор */  ;
Операторний вираз  ( expression statement )  Вираз обчислюється, а результат ігнорується, якщо тільки він не запам’ятовується внаслідок стороннього ефекту, наприклад, завдяки  lvalue. Приклади double  x = 0; double  a = 1.0; x  = x+a; x  +=   a; x++; x; cout<<”Hallo, world!”<<endl;
Оператори керування Оператор виходу з блоку  break   служить для виходу з блоку (припинення циклу) Оператор продовження (циклу)  continue   забезпечує перехід на наступну ітерацію циклу; поза циклом не вживається Оператор виклику функції   f(e1, e2, …, en); Оператор виходу з функції  return  expression;
Складені оператори Розгалуження Перемикач Цикл
Розгалуження  може бути скороченим і повним. Скорочене розгалуження:   if  (x>y) { z = y; y = x; x = z; } Розгалуження
Повне розгалуження:   if  (n % 2 = =  0)   // ( ! n%2) { n /= 2; x *= x;   //n = n/2; x = x*x; } else { n--; y  *= x;  //n = n-1; y = y*x; } Розгалуження
Перемикач  ( switch ) дає компактний спосіб запису вкладених розгалужень switch (selector) {  case  integral-value1 : statement;  break ;  case  integral-value2 : statement;  break ;  case  integral-value3 : statement;  break ;  case  integral-value4 : statement;  break ;  (...)  default : statement;  }   Перемикач
Перемикач   week day; int d; cout<<&quot;Give your day: &quot;; cin>>d; day = (week)d; switch  (day) { case  mo nday: cout<<”Monday”<<endl; break ; case  tuesday: cout<<”Tuesday”<<endl; break ; case  wednesday: cout<<”Wednesday”<<endl; break ; case  friday: cout<<”Friday”<<endl; break ; case  saturday: cout<<”Saturday”<<endl; break ; case  sunday: cout<<”Sunday”<<endl; break ; default  : cout<<”Mistaken day:” <<day<<endl; }
Альтернатива за замовчуванням  default  найчастіше служить для виявлення помилкових значень у даних У попередньому прикладі це значення, відмінні від номерів дня тижня Якщо  default  не було, програма не помітила б некоректного значення Перемикач
int aCounter=0, bCounter=0; char c; for (int i=1; i<5; ++i) {  // Для чого потрібен  break  ? cin>>c; switch (c) { case  'a': ++aCounter; case  'b':  //  bCounter  is in fact a+b Counter  ++bCounter; } } //  Скільки літер  a  і  b? cout<<aCounter<<' '<<bCounter<<endl; Приклад. Перемикач   без  break
int  aCounter=0, bCounter=0; char  c; for  ( int  i=1; i<5; ++i) { // Відсутність груба  break  помилка cin>>c; switch (c) { case  'a': ++aCounter;   break; case  'b': ++bCounter;   break; } } //  Скільки літер  a  і  b? cout<<aCounter<<' '<<bCounter<<endl; Виправлений приклад перемикача
Цикл з лічильником  ( for statement )  for ( ініціалізація параметру циклу ; умова продовження циклу ; вираз для обчислення нового значення параметру ) оператор ; int   n ; double   x , y  =1 ; … // взяти значення x, n // Визначення лічильника прямо в циклі for  ( int  i=0; i<n; i++) //можна  i +=1; y*=x; …  //   віддати значення  y Зауваження for  ( ; ; )   ?
Цикл з передумовою (while statement)  while  ( умова продовження циклу ) оператор ; int   n ; double  x , y  =1 ; … // взяти значення x, n int  i=0;  // ініціалізація параметру циклу ; while   (i<n) { y*=x;   i +=1;  //  обчислення нового значення параметру } …  //   віддати значення  y
Цикл з передумовою.  Швидка степінь int   n ; double  x , y  =1 ; … // взяти значення x, n int  k = n;  while  ( k >0) if  ( k  % 2)   { k --; y *= x;} else   { k /=2; x*=x;} …  //   віддати значення  y
Цикл з передумовою . Приклад з інваріантами int n; double x, y  =1 ; … // взяти значення x, n int i=0;  // y == 1  &&  i =0 =>  y == x**i   while   (i<n) { y*=x ; i +=1;  //  y == x**i }  // y == x**i && i == n =>  y == x**n …  //   віддати значення  y
Цикл з передумовою.  Швидка степінь int   n ; double  x , y  =1 ; … // взяти значення x, n int k = n;  while ( k >0) if ( k  % 2)   { k --; y *= x;} else   { k /=2; x*=x;} …  //   віддати значення  y
Цикл з передумовою. Ще один приклад інваріантів int   n ; double  x , y  =1 ; … // взяти значення x, n int  k = n; //  z == y*x**k => z == x**n while  ( k >0) if  ( k  % 2)   { k --; y *= x;}  //  y*x**k == (y*x)*x**(k-1) ==x**n else   { k /=2; x*=x;}  //  y*x**k == y*x**(k/2)**2 ==x**n …  //   віддати значення  y //  k == 0 => x**n == y*x**k == y
Цикл з постумовою  (do-while loop)  do   оператор while  ( умова продовження циклу ); do { t=s; s=(s+x/s)*0.5; } while  ((fabs(s-t)/s)>eps);
Нескінчений цикл   int  n; char ch; while  ( true ) { cout<<&quot;Give your n:&quot;; cin>>n; cout<<&quot;Fibonacci &quot;<<‘(‘<<n<<“)=“   <<Fibonacci(n)<<&quot;\n&quot;; cout<<&quot;Repeat (y/n)?&quot;; cin>>ch; if  (ch=='n')  break ; }
Вправи   Виразити цикл з лічильником через цикл з передумовою Виразити цикл з передумовою через цикл з постумовою Виразити цикл з постумовою  через цикл з передумовою Усунути  break  з нескінченого циклу
Налагодження програм   Макрос суджень  assert Блок випробувань  try
Макрос суджень  assert Використовується для виявлення  помилок програмування Необхідно включити  <cassert> #include  <cassert> В робочій версії програми відмикається командою #define   NDEBUG #ifdef   NDEBUG #define  assert (exp)  ((void)0)
Судження ( assertion)   #include  < cassert > int  mod( int  m,  int  n) { int  q=0, r=m; assert ((m==n*q+r) && (r>=0)); while  (r>=n) { q++; r-=n; assert ((m==n*q+r) && (r>=0)); } assert ((m==n*q+r) && (r>=0) && (r<n)); return  r; }
Блок випробувань  try Блок випробувань  try Використовує оператор спричинення  throw оператор захвату  catch Використовується для виявлення  помилкового використання програми Не відмикається ніколи
Блок випробувань   int n; try { cout<<&quot;Give your n:&quot;; cin>>n; if  (n<0)  throw n ;  cout<<&quot;Fibonacci= &quot;<<Fibonacci(n)<<&quot;\n&quot;; } catch  ( int  n) { cout<<&quot;You gave negative &quot;<<n<<endl; }

More Related Content

PPT
08 Functions
PDF
Coding for Future in Lutsk. JavaScript. Part 6
PPT
JavaScript. Lectures. part 1. basis
PPT
06 Pointers To Class Members
PPT
09 Static Polymorphism
PPT
02 Copying Objects
PDF
Coding for Future in Lutsk. JavaScript. Part 5
PPTX
08 Functions
Coding for Future in Lutsk. JavaScript. Part 6
JavaScript. Lectures. part 1. basis
06 Pointers To Class Members
09 Static Polymorphism
02 Copying Objects
Coding for Future in Lutsk. JavaScript. Part 5

What's hot (20)

PPT
05 Operations And Utilities
PDF
Coding for Future in Lutsk. JavaScript. Part 3
PPTX
cpp-2013 #19 Concurrency
PPTX
передача параметрів в функції
PPT
07 Containers
PPTX
cpp-2013 #20 Best practices
PPT
01 Incapsulation
PDF
Урок 54 8 клас
PPTX
Asynchronous programming in .NET (UA)
PDF
Coding for Future in Lutsk. JavaScript. Part 9
PDF
Coding for Future in Lutsk. JavaScript. Part 8
PPT
Programuvanna na movi_pascal
PDF
практ заняття 17 нев інт
PDF
Функції в C++
PPT
08 Templates
PDF
"Unit testing in AngularJS" Виктор Зозуляк
PPT
03 Constants And Variables
PPTX
IT Talks The c++'s simplest smart pointers in depth
PDF
Вказівники в мові C++
05 Operations And Utilities
Coding for Future in Lutsk. JavaScript. Part 3
cpp-2013 #19 Concurrency
передача параметрів в функції
07 Containers
cpp-2013 #20 Best practices
01 Incapsulation
Урок 54 8 клас
Asynchronous programming in .NET (UA)
Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 8
Programuvanna na movi_pascal
практ заняття 17 нев інт
Функції в C++
08 Templates
"Unit testing in AngularJS" Виктор Зозуляк
03 Constants And Variables
IT Talks The c++'s simplest smart pointers in depth
Вказівники в мові C++
Ad

Viewers also liked (8)

PDF
Summer Sounds 2008
PDF
BCS Championship
PDF
Instrukcia
PPS
Jacek Yerka
PDF
Texas and Texas A&M
PPS
Tips That Bring You a Beautiful Life
PPS
Duygular
PPS
Feliz dia
Summer Sounds 2008
BCS Championship
Instrukcia
Jacek Yerka
Texas and Texas A&M
Tips That Bring You a Beautiful Life
Duygular
Feliz dia
Ad

Similar to 04 Operators (19)

PPT
06 Data Structures
PPT
02 Arithmetic Data Types
PDF
"How I don't need a state management library in React app", Tetiana Melnyk
PDF
Lecture 13 Local Optimization on Mobile Devices
PPT
General Functors ...
PPT
General Functors
PDF
Знайомство з програмуванням на мові C++
PPTX
базовI структури алгоритму урок 4
PPTX
tsql
PPT
11 Iterated Containers
PPTX
Lecture 06 for distance courses "Fundamentals of Informatics"
PPTX
Основи мови Ci
PPT
Основи програмування .Паскаль ч.1
PPT
програмування на мові паскаль
DOC
Konspekt uroku
DOC
Konspekt uroku
PPT
PPT
PDF
практичне заняття 2
06 Data Structures
02 Arithmetic Data Types
"How I don't need a state management library in React app", Tetiana Melnyk
Lecture 13 Local Optimization on Mobile Devices
General Functors ...
General Functors
Знайомство з програмуванням на мові C++
базовI структури алгоритму урок 4
tsql
11 Iterated Containers
Lecture 06 for distance courses "Fundamentals of Informatics"
Основи мови Ci
Основи програмування .Паскаль ч.1
програмування на мові паскаль
Konspekt uroku
Konspekt uroku
практичне заняття 2

More from olegapster (7)

PPT
10 Polymorphism
PPT
09 Object And Class Hierarchy
PPT
04 Object Hierarchy
PPT
03 Right Of Access
PPT
07 Localisation
PPT
05 Arrays
PPT
01 Paradigms
10 Polymorphism
09 Object And Class Hierarchy
04 Object Hierarchy
03 Right Of Access
07 Localisation
05 Arrays
01 Paradigms

04 Operators

  • 1. Бублик Володимир Васильович Програмування - 2 Лекція 4. Базові поняття програмування. Оператори Лекції для студентів 2 курсу
  • 2. Прості оператори Тотожній Операторний вираз Блок Оператори керування
  • 3. Тотожній ( null statement ) Ніяк не позначається, зовсім не виконується. Тотожній оператор розміщуємо там, де на вимогу синтаксису повинен знаходитися оператор, але нічого робити не треба. Приклади 1. int k=0; while (++k>0) /* тотожній оператор */ ; cout<<k<<endl; // -2 147 483 648 2. while (*t++ = *s++) /* тотожній оператор */ ;
  • 4. Операторний вираз ( expression statement ) Вираз обчислюється, а результат ігнорується, якщо тільки він не запам’ятовується внаслідок стороннього ефекту, наприклад, завдяки lvalue. Приклади double x = 0; double a = 1.0; x = x+a; x += a; x++; x; cout<<”Hallo, world!”<<endl;
  • 5. Оператори керування Оператор виходу з блоку break служить для виходу з блоку (припинення циклу) Оператор продовження (циклу) continue забезпечує перехід на наступну ітерацію циклу; поза циклом не вживається Оператор виклику функції f(e1, e2, …, en); Оператор виходу з функції return expression;
  • 7. Розгалуження може бути скороченим і повним. Скорочене розгалуження: if (x>y) { z = y; y = x; x = z; } Розгалуження
  • 8. Повне розгалуження: if (n % 2 = = 0) // ( ! n%2) { n /= 2; x *= x; //n = n/2; x = x*x; } else { n--; y *= x; //n = n-1; y = y*x; } Розгалуження
  • 9. Перемикач ( switch ) дає компактний спосіб запису вкладених розгалужень switch (selector) { case integral-value1 : statement; break ; case integral-value2 : statement; break ; case integral-value3 : statement; break ; case integral-value4 : statement; break ; (...) default : statement; } Перемикач
  • 10. Перемикач week day; int d; cout<<&quot;Give your day: &quot;; cin>>d; day = (week)d; switch (day) { case mo nday: cout<<”Monday”<<endl; break ; case tuesday: cout<<”Tuesday”<<endl; break ; case wednesday: cout<<”Wednesday”<<endl; break ; case friday: cout<<”Friday”<<endl; break ; case saturday: cout<<”Saturday”<<endl; break ; case sunday: cout<<”Sunday”<<endl; break ; default : cout<<”Mistaken day:” <<day<<endl; }
  • 11. Альтернатива за замовчуванням default найчастіше служить для виявлення помилкових значень у даних У попередньому прикладі це значення, відмінні від номерів дня тижня Якщо default не було, програма не помітила б некоректного значення Перемикач
  • 12. int aCounter=0, bCounter=0; char c; for (int i=1; i<5; ++i) { // Для чого потрібен break ? cin>>c; switch (c) { case 'a': ++aCounter; case 'b': // bCounter is in fact a+b Counter ++bCounter; } } // Скільки літер a і b? cout<<aCounter<<' '<<bCounter<<endl; Приклад. Перемикач без break
  • 13. int aCounter=0, bCounter=0; char c; for ( int i=1; i<5; ++i) { // Відсутність груба break помилка cin>>c; switch (c) { case 'a': ++aCounter; break; case 'b': ++bCounter; break; } } // Скільки літер a і b? cout<<aCounter<<' '<<bCounter<<endl; Виправлений приклад перемикача
  • 14. Цикл з лічильником ( for statement ) for ( ініціалізація параметру циклу ; умова продовження циклу ; вираз для обчислення нового значення параметру ) оператор ; int n ; double x , y =1 ; … // взяти значення x, n // Визначення лічильника прямо в циклі for ( int i=0; i<n; i++) //можна i +=1; y*=x; … // віддати значення y Зауваження for ( ; ; ) ?
  • 15. Цикл з передумовою (while statement) while ( умова продовження циклу ) оператор ; int n ; double x , y =1 ; … // взяти значення x, n int i=0; // ініціалізація параметру циклу ; while (i<n) { y*=x; i +=1; // обчислення нового значення параметру } … // віддати значення y
  • 16. Цикл з передумовою. Швидка степінь int n ; double x , y =1 ; … // взяти значення x, n int k = n; while ( k >0) if ( k % 2) { k --; y *= x;} else { k /=2; x*=x;} … // віддати значення y
  • 17. Цикл з передумовою . Приклад з інваріантами int n; double x, y =1 ; … // взяти значення x, n int i=0; // y == 1 && i =0 => y == x**i while (i<n) { y*=x ; i +=1; // y == x**i } // y == x**i && i == n => y == x**n … // віддати значення y
  • 18. Цикл з передумовою. Швидка степінь int n ; double x , y =1 ; … // взяти значення x, n int k = n; while ( k >0) if ( k % 2) { k --; y *= x;} else { k /=2; x*=x;} … // віддати значення y
  • 19. Цикл з передумовою. Ще один приклад інваріантів int n ; double x , y =1 ; … // взяти значення x, n int k = n; // z == y*x**k => z == x**n while ( k >0) if ( k % 2) { k --; y *= x;} // y*x**k == (y*x)*x**(k-1) ==x**n else { k /=2; x*=x;} // y*x**k == y*x**(k/2)**2 ==x**n … // віддати значення y // k == 0 => x**n == y*x**k == y
  • 20. Цикл з постумовою (do-while loop) do оператор while ( умова продовження циклу ); do { t=s; s=(s+x/s)*0.5; } while ((fabs(s-t)/s)>eps);
  • 21. Нескінчений цикл int n; char ch; while ( true ) { cout<<&quot;Give your n:&quot;; cin>>n; cout<<&quot;Fibonacci &quot;<<‘(‘<<n<<“)=“ <<Fibonacci(n)<<&quot;\n&quot;; cout<<&quot;Repeat (y/n)?&quot;; cin>>ch; if (ch=='n') break ; }
  • 22. Вправи Виразити цикл з лічильником через цикл з передумовою Виразити цикл з передумовою через цикл з постумовою Виразити цикл з постумовою через цикл з передумовою Усунути break з нескінченого циклу
  • 23. Налагодження програм Макрос суджень assert Блок випробувань try
  • 24. Макрос суджень assert Використовується для виявлення помилок програмування Необхідно включити <cassert> #include <cassert> В робочій версії програми відмикається командою #define NDEBUG #ifdef NDEBUG #define assert (exp) ((void)0)
  • 25. Судження ( assertion) #include < cassert > int mod( int m, int n) { int q=0, r=m; assert ((m==n*q+r) && (r>=0)); while (r>=n) { q++; r-=n; assert ((m==n*q+r) && (r>=0)); } assert ((m==n*q+r) && (r>=0) && (r<n)); return r; }
  • 26. Блок випробувань try Блок випробувань try Використовує оператор спричинення throw оператор захвату catch Використовується для виявлення помилкового використання програми Не відмикається ніколи
  • 27. Блок випробувань int n; try { cout<<&quot;Give your n:&quot;; cin>>n; if (n<0) throw n ; cout<<&quot;Fibonacci= &quot;<<Fibonacci(n)<<&quot;\n&quot;; } catch ( int n) { cout<<&quot;You gave negative &quot;<<n<<endl; }