Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Подсчет символов





 

Следующая программа подсчитывает число символов; она

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

 

MAIN() /* COUNT CHARACTERS IN INPUT */

{

LONG NC;

 

NC = 0;

WHILE (GETCHAR()!= EOF)

++NC;

PRINTF("%1D\N", NC);

}

 

Оператор

 

++NC;

 

демонстрирует новую операцию, ++, которая означает увеличе-

ние на единицу. Вы могли бы написать NC = NC + 1, но ++NC

более кратко и зачастую более эффективно. Имеется соответст-

вующая операция -- уменьшение на единицу. Операции ++ и --

могут быть либо префиксными (++NC), либо постфиксными

(NC++); эти две формы, как будет показано в главе 2, имеют в

выражениях различные значения, но как ++NC, так и NC++ уве-

личивают NC. Пока мы будем придерживаться префиксных опера-

ций.

 

Программа подсчета символов накапливает их количество в

переменной типа LONG, а не INT. На PDP-11 максимальное зна-

чение равно 32767, и если описать счетчик как INT, то он

будет переполняться даже при сравнительно малом файле ввода;

на языке "C" для HONEYWELL и IBM типы LONG и INT являются

синонимами и имеют значительно больший размер. Спецификация

преобразования %1D указывает PRINTF, что соответствующий

аргумент является целым типа LONG.

Чтобы справиться с еще большими числами, вы можете ис-

пользовать тип DOUBLE / FLOAT двойной длины/. мы также ис-

пользуем оператор FOR вместо WHILE с тем, чтобы проиллюстри-

ровать другой способ записи цикла.

 

MAIN() /* COUNT CHARACTERS IN INPUT */

{

DOUBLE NC;

 

FOR (NC = 0; GETCHAR()!= EOF; ++NC)

;

PRINTF("%.0F\N", NC);

}

 

Функция PRINTF использует спецификацию %F как для FLOAT

, так и для DOUBLE; спецификация %.0F подавляет печать не-

существующей дробной части.

Тело оператора цикла FOR здесь пусто, так как вся рабо-

та выполняется в проверочной и реинициализационной частях.

Но грамматические правила языка "C" требуют, чтобы оператор

FOR имел тело. Изолированная точка с запятой, соответствую-

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

этому требованию. Мы выделили ее на отдельную строку, чтобы

сделать ее более заметной.

Прежде чем мы распростимся с программой подсчета симво-

лов, отметим, что если файл ввода не содержит никаких симво-

лов, то условие в WHILE или FOR не выполнится при самом пер-

вом обращении к GETCHAR, и, следовательно, программа вы-

даст нуль, т.е. Правильный ответ. это важное замечание. од-

ним из приятных свойств операторов WHILE и FOR является то,

что они проверяют условие в начале цикла, т.е. До выполнения

тела. Если делать ничего не надо, то ничего не будет сдела-

но, даже если это означает, что тело цикла никогда не будет

выполняться. программы должны действовать разумно, когда они

обращаются с файлами типа "никаких символов". Операторы

WHILE и FOR помогают обеспечить правильное поведение прог-

рамм при граничных значениях проверяемых условий.

 

 

Date: 2015-09-17; view: 347; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию