Языки программирования - концепции и принципы

оператор должен использоваться для выбора


  

 В обычном программировании «провалы» использовать не стоит:

switch (е) {

     casevalue_1:

C

       statement_1 ;                             /* После оператора statemerrM */

   case value_2:

   statement_2;                             /* автоматический провал на  statement_2. */



break;

}

     Согласно рис. 6.1 switch - оператор должен использоваться для выбора одного из нескольких возможных путей. «Провал» вносит путаницу, потому что при достижении конца пути управление как бы возвращается обратно к началу де­рева выбора. Кроме того, с точки зрения семантики не должна иметь никако­го значения последовательность, в которой записаны варианты выбора (хотя в смысле эффективности порядок может быть важен). При сопровождении  программы нужно иметь возможность свободно изменять существующие ва­рианты выбора или вставлять новые варианты, не опасаясь внести ошибку. Такую программу, к тому же, трудно тестировать и отлаживать: если ошибка прослежена до оператора statement_2, трудно узнать, был оператор достигнут непосредственным выбором или в результате провала. Чем пользоваться «провалом», лучше общую часть (common_code) оформить как процедуру:

switch (e) {

     case value_1 :

C

     statement_1 ;

     common_code();

     break;

 case value_2:

common_code();

break;

}

Реализация

Самым простым способом является компиляция case-оператора как после­довательности проверок:

compute                             R1 ,ехрг                      Вычислить выражение

jump_eq                             R1,#value_1,L1

jump_eq                             R1,#value_2 ,L2

…                                                                          Другие значения

default_statement                                                  Команды, выполняемые по

                                                                              умолчанию

 jump                                  End_Case


Содержание раздела