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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Наиболее запутанная часть программы касается идентификации слов. Прежде всего, необходимо дать определение, что понимается под словом. Давайте выберем относительно простой подход и определим слово как последовательность символов, которая не содержит пробельных символов (символов пробела, табуляции и новой строки). В этом смысле “glymxck” и “r2d2” являются словами. Слово начинается, когда программа впервые встречает символ, отличный от пробельного, и заканчивается, когда появляется следующий пробельный символ. Ниже показано простейшее проверочное выражение, которое обеспечивает обнаружение символов, отличных от пробельных:

с ! = ' ' && с ! = ‘\n' && с ! = '\t' /* истинно, если с - не пробельный символ */

Наиболее прямолинейное проверочное выражение, обеспечивающее выявление пробельных символов, имеет следующий вид:

с != ' ' || с == ‘\n' || с == '\t' /* истинно, если с - пробельный символ */

Однако проще применить функцию isspace() из ctype.hr которая возвращает значение true, если переданный ей аргумент представляет собой пробельный символ. Таким образом, функция isspace (с) возвращает истинное значение, если с — пробельный символ, и ! isspace (с) будет истинным, если с таковым не является.

Чтобы отслеживать, входит ли символ в слово, при считывании первого символа слова можно устанавливать в 1 некоторый флаг (назовем его inword). В этой точке можно также инкрементировать счетчик слов. Затем до тех пор, пока значение inword остается равным 1 (или истинным), последующие непробельные символы не помечают начало слова. При появлении следующего пробельного символа флаг понадобится сбросить в 0 (или ложь), после чего программа будет готова к поиску следующего слова. Представим все сказанное в виде псевдокода:

если с не является пробельным символом и inword ложно установить inword в истину и посчитать слово

if с является пробельным символом и inword истинно установить флаг inword в ложь

При таком подходе inword устанавливается в 1 (истина) в начале каждого слова и в 0 (ложь) в конце каждого слова. Слова подсчитываются только в момент, когда значение inword меняется с 0 на 1. Если вам доступен тип _Bool, можете включить заголовочный файл stdbool.h и использовать ключевое слово bool для типа флага inword, а также true и false для его значений. В противном случае применяйте тип int и значения 1 и 0.

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

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

if (inword) вместо

if (inword == true)

и

if ( ! inword) вместо

if (inword == false)

Причина в том, что выражение inword == true получает значение true, если inword равно true, и false, если inword равно false, поэтому в качестве условия проверки можно применять просто inword. Аналогично, ! inword имеет то же значение, что и выражение inword == false (не истинно — false, а не ложно — true).

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

В листинге 7.7 описанные идеи (идентификация строк, неполных строк и слов) реализованы на языке С.

270 глава 7

Ниже показан результат выполнения этой программы:

Введите текст для анализа (| для завершения) :

Reason is а

powerful servant but

an inadequate master.

I

символов = 55, слов = 9, строк = 3, неполных строк = О

Для трансляции псевдокода в код С используются логические операции. Например

если с не является пробельным символом и inword ложно преобразуется в следующий код:

if (!is space (с) && !inword)

Еще раз обратите внимание, что ! inword эквивалентно выражению inword == false. Полное проверочное выражение определенно более читабельно, чем индивидуальная проверка для каждого пробельного символа:

if (с != ' ' && с != ‘\n' && с != '\t' && ! inword)

Обе эти формы означают: “если с не является пробельным символом, и если мы не находимся внутри слова”. Если оба условия удовлетворены, вы должны быть в начале нового слова, и n words инкрементируется. Если вы находитесь посредине слова, то первое условие выполняется, но inword будег равно true, и n words не инкрементируется. Когда достигается следующий пробельный символ, inword снова устанавливается в false. Проверьте, правильно ли работает программа в ситуации, когда между словами находится несколько пробелов. В главе 8 будет показано, как модифицировать программу, чтобы она могла подсчитывать слова в файле.

Условная операция ?:

В языке С предлагается сокращенный способ представления одной из форм оператора if else — уемвнпе выражение, для которого применяется условная операция ? :. Эта операция состоит из двух частей и работает с тремя операндами. Вспомните, что операции с одним операндом называются унарными, а с двумя операндами — бинарными. Следуя данной традиции, операции с тремя операндами называют тернарными, и условная операция является в С единственной в такой категории. Вот пример, выдающий абсолютное значение числа:

х = (у < 0) ? -у: у;

Все, что находится между знаком = и точкой с запятой, представляет собой условное выражение. Смысл этого оператора можно выразить так: “если у меньше нуля, то х = -у, иначе х = у”. С помощью оператора if else это можно выразить следующим образом:

if (У < 0) х = -у;

else

х = у;

Ниже показана общая форма условного выражения:

выражение! ? выражение2 : выражениеЗ

Если выражение1 имеет истинное (ненулевое) значение, то все условное выражение принимает то же значение, что и выражение2. Если выражение! имеег ложное (нулевое) значение, то все условное выражение получает то же значение, что и выражениеЗ.

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

Условное выражение можно использовать в ситуации, когда переменной необходимо присвоить одно из двух возможных значений. Типичным примером может служить установка переменной в большее из двух значений:

max = (а > b) ? а: b;

Здесь переменной max присваивается значение а, если оно большеb, и b в противном случае.

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

Давайте для примера рассмотрим программу в листинге 7.8. Эта программа вычисляет, сколько банок краски необходимо для того, чтобы покрасить заданное количество квадратных футов поверхности. Основной алгоритм прост: нужно разделить общее число квадратных футов на количество квадратных футов, которые можно покрасить содержимым одной банки. Тем не менее, предположим, что ответом будет 1,7 банки. В магазине можно купить только полные, а не частично заполненные банки, поэтому придется приобрести две банки. Следовательно, программа должна округлять ответ до следующего целого числа. Для обработки такой ситуации применяется условная операция, и она также используется при выводе слова “банка” или “банки”.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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