Заяви

Заяви

Заява може бути однією з таких:

  • Складене твердження
  • Контрольна відомість
  • Вираз
  • Вбудована заява
  • Визначення константи
  • Визначення змінної

Інструкції визначають потік керування під час виконання програми мовою користувача. За відсутності конкретних операторів керування оператори виконуються послідовно в порядку появи у файлі ULP.

Складене твердження

Складений оператор, також відомий як блок, — це список (можливо порожній) операторів, укладених у відповідні дужки ({ }). Синтаксично блок можна вважати одним оператором, але він також контролює область ідентифікаторів. Ідентифікатор, оголошений у блоці, має область, що починається в точці оголошення та закінчується закриваючою дужкою.

Складені оператори можуть бути вкладені будь-якої глибини.

Вираз

Оператор виразу — це будь-який вираз, після якого стоїть крапка з комою.

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

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

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

Керуючі оператори використовуються для управління потоком програми.

Оператори ітерації є

 do ... while
for
while

Вибір заяв є

 if ... else
switch

Оператори переходу є

 break
continue
return

перерва

Оператор break має загальний синтаксис

 break ;

і негайно завершує найближчий оператор do…while, for, switch або while. Це також стосується членів циклу типів об’єктів.

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

продовжувати

Оператор continue має загальний синтаксис

 continue ;

і негайно передає керування тестовій умові найближчого охоплюючого оператора do…while, while або for, або виразу приросту найближчого охоплюючого оператора for.

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

робити…поки

Інструкція do…while має загальний синтаксис

 do statement while ( condition );

і виконує оператор, доки вираз умови не стане нульовим. Умова перевіряється після першого виконання оператора, що означає, що оператор завжди виконується принаймні один раз.

Якщо в операторі немає розриву або повернення, оператор повинен впливати на значення умови, або сама умова має змінитися під час оцінки, щоб уникнути нескінченного циклу.

приклад

 string s = "Trust no one!" ;
int i = - 1 ;
do {
   ++ i ;
   } while ( s [ i ]);

для

Оператор for має загальний синтаксис

 for ([ init ]; [ test ]; [ inc ]) statement

і виконує такі дії:

  1. Якщо присутній вираз ініціалізації init, він виконується.
  2. Якщо тестовий вираз присутній, він виконується. Якщо результат відмінний від нуля (або якщо тестового виразу взагалі немає), оператор виконується.
  3. Якщо присутній вираз inc, він виконується.
  4. Нарешті керування повертається до кроку 2.

Якщо в операторі немає розриву чи повернення, вираз inc (або оператор) має впливати на значення тестового виразу, або сам test має змінюватися під час оцінювання, щоб уникнути нескінченного циклу.

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

приклад

 string s = "Trust no one!" ;
int sum = 0 ;
for ( int i = 0 ; s [ i ]; ++ i ) sum += s [ i ]; // sums up the characters in s

якщо…інше

Оператор if…else має загальний синтаксис

 if ( expression ) t_statement [ else f_statement ]

Умовний вираз обчислюється, і якщо його значення відмінне від нуля, виконується t_statement. В іншому випадку f_statement виконується, якщо є пункт else.

Речення else завжди зіставляється з останнім зустрічаним if без else. Якщо це не те, що ви хочете, вам потрібно використовувати дужки, щоб згрупувати твердження, як у

 if ( a == 1 ) {
   if ( b == 1 ) printf ( "a == 1 and b == 1
" );
   }
else printf ( "a != 1
" );

повернення

Функція з типом повернення, відмінним від void, повинна містити принаймні один оператор повернення із синтаксисом

 return expression ;

де вираз має обчислюватися до типу, сумісного з типом, що повертається функцією. Значення виразу — це значення, яке повертає функція.

Якщо функція має тип void, оператор return без виразу може бути використаний для повернення з виклику функції.

перемикач

Оператор switch має загальний синтаксис

 switch ( sw_exp ) {
  case case_exp : case_statement ...
  [ default : def_statement ]
  }

і дозволяє передавати керування одному з кількох операторів, позначених регістром, залежно від значення sw_exp (яке має бути інтегрального типу).

Будь-який case_statement може бути позначений однією або кількома мітками case. Case_exp кожної мітки case має обчислюватися як постійне ціле число, яке є унікальним у операторі switch, що містить його.

Також може бути щонайбільше одна мітка за замовчуванням.

Після оцінки sw_exp , case_exp перевіряється на відповідність. Якщо збіг знайдено, керування переходить до case_statement із відповідною міткою case. Якщо збігів не знайдено та є мітка за замовчуванням, керування передається до def_statement. Інакше жоден із операторів у перемикачі не виконується.

На виконання програми не впливає регістр і мітки за замовчуванням . Керування просто переходить через мітки до наступного оператора.

Щоб зупинити виконання в кінці групи операторів для конкретного випадку, використовуйте оператор break.

приклад

 string s = "Hello World" ;
int vowels = 0 , others = 0 ;
for ( int i = 0 ; s [ i ]; ++ i )
    switch ( toupper ( s [ i ])) {
      case 'A' :
      case 'E' :
      case 'I' :
      case 'O' :
      case 'U' : ++ vowels ;
                break ;
      default : ++ others ;
      } printf ( "There are %d vowels in '%s'
" , vowels , s );

поки

Оператор while має загальний синтаксис

 while ( condition ) statement

і виконує оператор до тих пір, поки вираз умови не дорівнює нулю.

Умова перевіряється перед першим можливим виконанням оператора, що означає, що оператор може ніколи не виконуватися, якщо умова спочатку дорівнює нулю.

Якщо в операторі немає розриву або повернення, оператор повинен впливати на значення умови, або сама умова має змінитися під час оцінки, щоб уникнути нескінченного циклу.

приклад

 string s = "Trust no one!" ;
int i = 0 ;
while ( s [ i ])
      ++ i ;

Орігінал сторінки: Statements