русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Операции увеличения и уменьшения


Дата добавления: 2015-01-16; просмотров: 506; Нарушение авторских прав


В языке "C" предусмотрены две необычные операции дляувеличения и уменьшения значений переменных. Операция увели-чения ++ добавляет 1 к своему операнду, а операция уменьше-ния -- вычитает 1. Мы часто использовали операцию ++ дляувеличения переменных, как, например, в IF(C == '\N') ++I; Необычный аспект заключается в том, что ++ и -- можноиспользовать либо как префиксные операции (перед переменной,как в ++N), либо как постфиксные (после переменной: N++).Эффект в обоих случаях состоит в увеличении N. Но выражение++N увеличивает переменную N до использования ее значения, вто время как N++ увеличивает переменную N после того, как еезначение было использовано. Это означает, что в контексте,где используется значение переменной, а не только эффектувеличения, использование ++N и N++ приводит к разным ре-зультатам. Если N = 5, то х = N++; устанавливает х равным 5, а х = ++N; полагает х равным 6. В обоих случаях N становится равным 6.Операции увеличения и уменьшения можно применять только кпеременным; выражения типа х=(I+J)++ являются незаконными. В случаях, где нужен только эффект увеличения, а самозначение не используется, как, например, в IF ( C == '\N' ) NL++; выбор префиксной или постфиксной операции является деломвкуса. но встречаются ситуации, где нужно использовать имен-но ту или другую операцию. Рассмотрим, например, функциюSQUEEZE(S,C), которая удаляет символ 'с' из строки S, каждыйраз, как он встречается. SQUEEZE(S,C) /* DELETE ALL C FROM S */CHAR S[];INT C;{ INT I, J; FOR ( I = J = 0; S[I] != '\0'; I++) IF ( S[I] != C ) S[J++] = S[I]; S[J] = '\0';} Каждый раз, как встечается символ, отличный от 'с', он копи-руется в текущую позицию J, и только после этого J увеличи-вается на 1, чтобы быть готовым для поступления следующегосимвола. Это в точности эквивалентно записи IF ( S[I] != C ) { S[J] = S[I]; J++; } Другой пример подобной конструкции дает функция GETLINE,которую мы запрограммировали в главе 1, где можно заменить IF ( C == '\N' ) { S[I] = C; ++I;} более компактной записью IF ( C == '\N' ) S[I++] = C; В качестве третьего примера рассмотрим функциюSTRCAT(S,T), которая приписывает строку т в конец строки S,образуя конкатенацию строк S и т. При этом предполагается,что в S достаточно места для хранения полученной комбинации. STRCAT(S,T) /* CONCATENATE T TO END OF S */ CHAR S[], T[]; /* S MUST BE BIG ENOUGH */ { INT I, J; I = J = 0; WHILE (S[I] != '\0') / *FIND END OF S */ I++; WHILE((S[I++] = T[J++]) != '\0') /*COPY T*/ ; } Tак как из T в S копируется каждый символ, то для подготовкик следующему прохождению цикла постфиксная операция ++ при-меняется к обеим переменным I и J. Упражнение 2-3 --------------- Напишите другой вариант функции SQUEEZE(S1,S2), которыйудаляет из строки S1 каждый символ, совпадающий с каким-либосимволом строки S2. Упражнение 2-4 --------------- Напишите программу для функции ANY(S1,S2), которая нахо-дит место первого появления в строке S1 какого-либо символаиз строки S2 и, если строка S1 не содержит символов строкиS2, возвращает значение -1.


<== предыдущая лекция | следующая лекция ==>
Преобразование типов | Побитовые логические операции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.359 сек.