Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

while (getchar() != '\n')

continue; /* пропустить оставшуюся часть входной строки */

Этот цикл читает символы из входной последовательности вплоть до символа новой строки, генерируемого нажатием клавиши , включительно. Обратите внимание, что возвращаемое значение getchar() не присваивается переменной ch, поэтому программа просто читает символы и отбрасывает их. Так как последним отброшенным будет символ новой строки, то очередной подлежащий чтению символ будет первым символом следующей строки. Функция getchar() считывает его и присваивает переменной ch во внешнем цикле while.

Предположим, что пользователь начинает с нажатия , так что первым прочитанным оказывается символ новой строки. Следующий код учитывает эту возможность:

if (ch == ‘\n')

continue;

Множество меток

В операторе switch можно использовать множество меток case, как показано в листинге 7.12.

Управляющие операторы С: ветвление и переходы 281

Листинг 7.12. Программа vowels. с

Если ch содержит скажем букву i оператор switch переходит в место - фото 208

Если ch содержит, скажем, букву i, оператор switch переходит в место, помеченное как case 1i ' :. Поскольку с этой меткой не связан оператор break, управление переходит к следующему оператору, которым является i_ct++,*. Если значение ch равно I, управление переходит прямо на этот оператор. В сущности, обе метки ссылаются на один и тот же оператор.

Строго говоря, оператор break для case * U' не нужен, т.к. благодаря его отсутствию управление в программе перемещается на следующий оператор внутри switch, которым является break для случая default. Следовательно, break для case ' U' можно было убрать, тем самым сократив код. С другой стороны, если позже будут добавляться другие случаи, то наличие оператора break там, где он должен быть, позволит не забыть о необходимости его добавления.

Ниже показан пример выполнения программы:

Введите текст или # для завершения программы.

I see under the overseer.#

Количество гласных: А Е I О U

0 7 111

282 Глава 7

В рассматриваемом случае можно избежать множества меток за счет применения функции toupper() из семейства ctype.h (см. табл. 7.2), преобразовав перед провер кой условия все строчные буквы в прописные:

Либо при желании значение ch можно было бы оставить неизменным и использовать - фото 209

Либо при желании значение ch можно было бы оставить неизменным и использовать toupper (ch) в качестве условия проверки:

Сводка: выбор из множества вариантов с помощью оператора switch Ключевое слово

switch

Общий комментарий

Поток управления программы переходит к метке case, содержащей значение конструкции выражение. Затем программа выполняет все оставшиеся операторы, если только управление снова не будет перенаправлено посредством оператора break. Как выражение, так и метки case должны иметь целочисленные значения (включая тип char), а метки должны быть константами или выражениями, состоящими только из констант. Если ни одна из меток case не совпадает со значением выражения, управление передается оператору, помеченному как default, если таковой предусмотрен. В противном случае управление переходит к оператору, следующему за switch.

Форма

switch(toupper(ch)) switch (выражение)

{

case метка! : оператор1 || используйте break, чтобы пропустить все

// операторы до конца switch

case метка2 : оператор2 default : операторЗ

}

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

switch (choice)

{

case 1 :

Управляющие операторы С: ветвление и переходы 283

case 2 : printf("Великолепно!\n"); break;

case 3 : printf("Совершенно верно!\n" );

case 4 : printf("На все сто!\n"); break;

default : printf("Удачного дня.\n");

}

Если переменная choice имеет целое значение 1 или 2, выводится первое сообщение, если

3 — второе и третье сообщения. (Управление переходит на следующий оператор, поскольку

после case 3 не указан оператор break.) Если значение choice равно 4, то выводится третье сообщение. Другие значения приводят к выводу только последнего сообщения.

Операторы switch И if else

Когда должен применяться оператор switch, а когда конструкция if else? Часто выбор попросту отсутствует. Оператор switch нельзя использовать, если выбор основан на значении переменной или выражения с плавающей запятой. Точно гак же применять оператор switch затруднительно, если переменная должна входить в определенный диапазон. Написать следующий код просто:

if (integer < 1000 && integer > 2)

К сожалению, охват этого диапазона посредством оператора switch предполагает установку меток case для каждого целого числа в промежутке от 3 до 999. В то же время, когда есть возможность использовать switch, программа зачастую выполняется немного быстрее и имеет более компактный вид.

Оператор goto

Оператор goto, своего рода оплот ранних версий языков BASIC и FORTRAN, доступен и в С. Тем не менее, в отличие от BASIC и FORTRAN, язык С вполне может обойтись без этого оператора. Керниган и Ритчи отзываются об операторе goto как о потенциальном источнике ошибок и советуют применять его как можно реже или вообще не применять. Сначала мы объясним, как использовать goto, а затем покажем, что обычно в нем нет нужды.

Оператор goto состоит из двух частей — ключевое слово goto и имя метки. Именование меток производится по тому же соглашению, которое применяется для имен переменных,например:

goto part2;

Для корректной работы этого оператора в программе должен присутствовать другой оператор, снабженный меткой part2. Это делается путем помещения перед оператором имени метки с двоеточием:

part2: printf("Уточненный анализ:\n");

избегайте goto

В принципе в программе С никогда не возникает потребность в goto, но если ваш опыт программирования основан на языке FORTRAN или BASIC, где этот оператор обязателен, то вполне возможно, что использование goto вошло в привычку. Чтобы помочь вам избавиться от этой зависимости, мы рассмотрим несколько знакомых случаев применения goto и продемонстрируем подход к их решению, характерный для языка С.

284 глава 7

• Поддержка ситуации с оператором if, требующей выполнения более одного оператора:

if (size > 12) goto а; goto b;

a: cost = cost * 1.05; flag = 2;

b: bill = cost * flag;

В ранних версиях BASIC и FORTRAN к оператору if относился только один оператор, непосредственно следующий за условием. Не было никаких средств для реализации блоков или составных операторов. Ниже приведен эквивалент этой структуры на языке С. Стандартный для С подход с использованием составного оператора или блока существенно облегчает понимание программы: if (size > 12)

{

cost = cost * 1.05; flag = 2;

}

bill = cost * flag;

• Выбор из двух альтернатив:

if (ibex > 14) goto a; sheds = 2; goto b; a: sheds = 3; b: help = 2 * sheds;

Наличие в С структуры if else позволяет выразить выбор более ясно:

if (ibex > 14) sheds = 3; else

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x