Турбо С: руководство пользователя. Часть 1

Турбо С: руководство пользователя. Часть 1 - Стр. 63

Печать PDF
Индекс материала
Турбо С: руководство пользователя. Часть 1
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Стр. 57
Стр. 58
Стр. 59
Стр. 60
Стр. 61
Стр. 62
Стр. 63
Стр. 64
Стр. 65
Стр. 66
Стр. 67
Стр. 68
Стр. 69
Все страницы
                                                                                
          Если вы уберете оператор break после вызова do_file_menu, то          
     при вводе символа F будет вызываться do_file_menu,  а затем будет          
     вызвана функция run_program.                                               
                                                                                
          Однако  иногда  вам  нужно  сделать  именно  так. Рассмотрим          
                                                                                
     следующий пример:                                                          
                                                                                
          typedef enum( sun, mon, tues, wed, thur, fri, sat, ) days;            
                                                                                
          main()                                                                
          {                                                                     
              days today;                                                       
                                                                                
              ...                                                               
              swith (today) {                                                   
                                                                                
                  case mon  :                                                   
                  case tues :                                                   
                  case wed  :                                                   
                  case thur :                                                   
                  case fri  : puts("Иди работать!");break;                      
                  case sat  : printf("Убери во дворе и ");                      
                  case sun  : puts("Расслабься!");                              
          }                                                                     
                                                                                
          В этом операторе switch для значений от mon до fri  выполня-          
     ется одна и та же функции put,  после которой оператор break ука-          

                         - 519,520 -
                                                                                
                                                                                
     зывает на выход из switch. Однако, если today равно sat, выполня-          
     ется соответствующая   функция  printf,  а затем выполняется puts          
     ("Расслабься!"); если же today равно sun, выполняется только пос-          
     ледняя функция puts.                                                       
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Команды передачи управления                                      
     ----------------------------------------------------------------           
                                                                                
          Это дополнительные  команды, предназначенные для использова-          
     ния в управляющих операторах или для моделирования других  управ-          
     ляющих структур.  Оператор return позволяет вам досрочно выйти из          
     функции. Операторы break и continue предназначены для использова-          
     ния в цикле и позволяют пропустить последующие операторы програм-          
     мы. Условный  оператор (?:) позволят сжать определенные выражения          
     типа if..else в одну строку.                                               
                                                                                
          Один совет: подумайте дважды перед использованием каждой ко-          
     манды передачи управления (за исключением,  конечно, return). Ис-          
     пользуйте их в тех случаях,  когда они представляют наилучшее ре-          
     шение, но  помните,  что чаще всего вы  можете  решить  возникшую          
     перед вами   проблему проблему без их помощи.  Особенно избегайте          
     оператора goto:  операторы return,  break или continue  наверняка          
     заменят его вам.                                                           
                                                                                
                                                                                
                                                                                
                                                                                

                         - 521,522 -
                                                                                
               Оператор return                                                  
     -----------------------------------------------------------------          
                                                                                
          Существует  два  основных   способа  использования оператора          
     return.                                                                    
                                                                                
          Во-первыx, в том случае,  когда функция возвращает значение,          
     и вам   необходимо использовать его в зависимости от того,  какое          
     значение возвращается в вызыващую программу, например:                     
                                                                                
                   int  imax(int a, int b);                                     
                   {                                                            
                     if (a > b) return(a);                                      
                     else       return(b);                                      
                   }                                                            
                                                                                
          Здесь функция использует  оператор  return  для  возвращения          

     максимального из двуx переданныx ей значений.                              
                                                                                
          Второй способ использования оператора return  состоит в воз-          
     можности выxода  из функции  в некоторой точке до  ее завершения.          
     Например,  функция может определить условие, по которому произво-          
                                                                                
     дится прерывание. Вместо того, чтобы помещать все основные опера-          
     торы функции внутрь оператора if,  для  выхода можно использовать          
     оператор return.  Если функция имеет тип VOID (т.е. не возвращаю-          
     щает никакого значения),  можно написать return без возвращаемого          
     значения.                                                                  
                                                                                
          Рассмотрим модификацию программы imin, предложенную ранее:            
                                                                                
                   int imin(int list[], int size))                              
                   {                                                            
                     int i, minindx, min;                                       
                                                                                
                     if (size <= 0) return(-1);                                 
                     ...                                                        
                   }                                                            
                                                                                
           В этом примере,  если параметр size меньше либо равен нулю,          
     то массив list пуст, в связи с чем оператор return вызывает выход          
     из функции.                                                                
                                                                                
           Заметим, что в случае ошибки возвращается значение -1. Т.к.          
     -1  никогда не может быть индексом  массива, вызывающая программа          

                         - 523,524 -
                                                                                
                                                                                
     регистрирует факт возникновения ошибки.                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Оператор break                                                   
     -----------------------------------------------------------------          
                                                                                
          Иногда бывает  необходимо выйти из цикла  до его завершения.          
     Рассмотрим следующую программу:                                            
                                                                                
                                                                                
              #define LIMIT 100                                                 
              #define MAX  10                                                   
              main()                                                            
              {                                                                 
                int i,j,k,score;                                                
                int scores[LIMIT][MAX];                                         
                                                                                
                for (i = 0; i < LIMIT; i++) {                                   
                        j = 0;                                                  
                        while (j < MAX-1) {                                     
                         printf("Введите следующее значение #%d: ",j);          
                                scanf("%d", score);                             
                                if (score < 0)                                  
                                       break;                                   
                                scores[i][++j] = score;                         

                         - 525,526 -
                                                                                
                        }                                                       
                        scores[i][0] = j;                                       
                }                                                               
              }                                                                 
                                                                                
          Рассмотрим оператор if (score < 0) break;. Он указывает, что          
     если пользователь введет отрицательное значение score, цикл while          
     прерывается. Переменная  j  используется  и  в  качестве  индекса          
     scores и в качестве счетчика общего количества элементов в каждой          
     строке; это значение записывается в первом элементе строки.                
                                                                                
          Вспомните, пожалуйста,  использование оператора break в опе-          
     раторе switch, представленное ранее. Там break указывает програм-          
     ме выйти из оператора switch; здесь он указывает программе  выйти          
     из цикла   и  продолжить работу.  Кроме оператора switch оператор          
     break может быть использован во всех трех циклах (for, while и do          
     ... while),   однако его нельзя использовать в конструкции if ...          
     else или в теле главной процедуры main для выхода из нее.                  
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
               Оператор continue