Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_лекция_Основы_языка_С.doc
Скачиваний:
19
Добавлен:
05.06.2015
Размер:
395.78 Кб
Скачать

Оператор break

Оператор breakприменяется в двух случаях.

Во-первых, в операторе switchс его помощью прерывается выполнение последовательностиcase(см. раздел "Оператор выбора — switch" ранее в этой главе). В этом случае операторbreakне передает управление за пределы блока.

Во-вторых, оператор breakиспользуется для немедленного прекращения выполнения цикла без проверки его условия, в этом случае операторbreakпередает управление оператору, следующему после оператора цикла.

Когда внутри цикла встречается оператор break, выполнение цикла безусловно (т.е. без проверки каких-либо условий.) прекращается и управление передается оператору, следующему за ним. Например, программа

#include <stdio.h>

int main(void)

{

int t;

for(t=0; t<100; t++)

{

printf("%d ", t);

if(t==10) break;

}

return 0;

}

выводит на экран числа от 0 до 10. После этого выполнение цикла прекращается оператором break, условиеt < 100при этом игнорируется.

Оператор breakчасто используется в циклах, в которых некоторое событие должно вызвать немедленное прекращение выполнения цикла. В следующем примере нажатие клавиши прекращает выполнение функцииlook_up():

void look_up(char *name)

{

do {

/* поиск имени 'name' */

if(kbhit()) break;

} while(!found);

/* process match */

}

Библиотечная функция kbhit()возвращает 0, если клавиша не нажата (то есть, буфер клавиатуры пуст), в противном случае она возвращает ненулевое значение. В стандарте С функцияkbhit()не определена, однако практически она поставляется почти с каждым компилятором (возможно, под несколько другим именем).

Оператор breakвызываетвыход только из внутреннего цикла. Например, программа

for(t=0; t<100; ++t)

{

count = 1;

for(;;)

{

printf("%d ", count);

count++;

if(count==10) break;

}

}

100 раз выводит на экран числа от 1 до 9. Оператор breakпередает управление внешнему циклуfor.

Если оператор break присутствует внутри оператора switch, который вложен в какие-либо циклы, то break относится только к switch, выход из цикла не происходит.

Функция exit()

С помощью вызова стандартной библиотечной функции exit()можно прекратить работу программы. Эта функция вызывает немедленное прекращение работы всей программы и передает управление операционной системе.

Общая форма функции exit()следующая:

Void exit (int код_возврата);

Значение переменной код_возвратапередается вызвавшему программу процессу, обычно в качестве этого процесса выступает операционная система. Нулевое значение кода возврата обычно используется для указания нормального завершения работы программы. Другие значения указывают на характер ошибки. В качестве кода возврата можно использовать макросыEXIT_SUCCESSиEXIT_FAILURE(выход успешный и выход с ошибкой). Функцияexit()объявлена в заголовочном файле<stdlib.h>.

В следующем примере в новой версии ранее рассмотренной функции menu()вызовexit() используется для выхода из программы и возврата в операционную систему:

void menu(void)

{

char ch;

printf("1. Проверка правописания\n");

printf("2. Коррекция ошибок\n");

printf("3. Вывод ошибок\n");

printf("4. Выход\n");

printf(" Введите Ваш выбор: ");

do {

ch = getchar(); /* чтение клавиши */

switch(ch) {

case '1':

check_spelling();

break;

case '2':

correct_errors();

break;

case '3':

display_errors();

break;

case '4':

exit(0); /* Возврат в ОС */

}

} while(ch!='1' && ch!='2' && ch!='3');

}

Задача. Написать программу, которая вычисляет частное и остаток от деления двух введенных

целых чисел. Программа должна работать в цикле, то есть запрашивать значения делимого и

делителя, выводить результат, снова запрашивать данные и т.д. Если оба числа равны нулю,

надо выйти из цикла и завершить работу программы. Предусмотреть сообщение об ошибке в

том случае, если второе число равно нулю, а первое — нет. Особенность этой задачи состоит в том, что при входе в цикл мы не можем определить,

надо ли будет выполнить до конца очередной шаг. Необходимая информация поступает лишь

при вводе данных с клавиатуры. Поэтому здесь используется бесконечный цикл

while(1){...} (напомним, что в языке Си единица считается истинным условием). Выйти

из такого цикла можно только с помощью специального оператора break.

В то же время, если второе число равно нулю, то оставшуюся часть цикла не надо выпол-

нять. Для этого служит оператор continue.

#include <stdio.h>

#include <conio.h>

main()

{

int A, B;

while ( 1 ) // бесконечный цикл, выход только по break!

{

printf ( "\nВведите делимое и делитель:" );

scanf ( "%d%d", &A, &B );

if ( A == 0 && B == 0 ) break; // выход из цикла

if ( B == 0 ) {

printf ( "Деление на ноль" );

continue; // досрочный переход к новому шагу цикла

}

printf ( "Частное %d остаток %d", A/B, A%B )

}

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]