Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C++

Г. Шилдт - Полный справочник по C++ (1109478), страница 17

Файл №1109478 Г. Шилдт - Полный справочник по C++ (Г. Шилдт - Полный справочник по C++) 17 страницаГ. Шилдт - Полный справочник по C++ (1109478) страница 172019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 17)

То, что в отсугствие оператора Ьгеа)е операторы саве выполняются один за другим, позволяет избежать ненужного лублирования операторов и повысить эффективность программы. Вложенные операторы 8)()(йсН Операторы веЗ.ссЬ могут быть вложены друг в друга. Даже если константы разделов саве внешнего и внугреннего операторов ви3.ссЬ совпадают, проблемы нс возникают. Например, приведенный ниже фрагмент программы является вполне приемлемым.

яиассн(х) ( саяе 1: яи)есЬ(у) ( саяе О: ргапсг("Деление на нуль. хл"')г Ьгеары саяе 1: ргосеяя(х,у); ) Ьгеа)сг саве 2: Глава 3. Операторы " 1 СпеРатоРы Цикла В языке С(С++, как и во всех других современных языках программирования. цсраторы цикла предназначены для выполнения повторяюшихся инструкций, пока действует определенное правило. Это условие может быть как задацо арапсс (в цикле хох), так и мс~(яться во время выполнешш цикла (в операторах Нвзе и до-нц11е).

Цикл аког В том или ином виде цикл кох сеть во всех процедурных языках программирования. Однако в языке С/С++ оп обеспечивает особенно высокую гибкость н ффектиггность. Общий вил оператора сох таков. сох (ииициализаци»; условие; прирагцеиие) ((икл кох имеет много вариантов. Однако наиболее общая форма этого оператора работает следующим образом.

Сначала выполняется ииициализаци» ()п)((а)(ха(1оп)— оператор присваивания, который задаст начальное значение счетчика цикла. Затем проверяется условие (соп()1(1оп), представляюшсс собой условное выражение. 11икл выполняется до тех пор, пока значение этого выражения остается истинным. Прираи(ение ()псгетепг) изменяет значение счетчика цикла при очередном его выполнении. Эти разлелы оператора отделяются друг от драв точкой с запятой. Как только условие цикла станет ложным, программа прекратит его выполнение и перейдет к лсдуюшему оператору. В следующем примере цикл всх выводи~ на экран числа от 1 до 100.

Згпс1пг)е <всг(во. )г> 1пе гвазп(чозг)) ( зпс х; Гоп(х=тг х <= 100; х++) ргзпе1( "Ъд ", х) геепгп 0; ) Сначала переменной х присваивается число 1, а затем она сравнивается с числом 100. Поскольку ес значение меньше 100, вызывается функция рхзпев(). Затем переменная х увеличивается на единицу, и условие цикла проверяется вновь. Как только се значение превысит число 100, выполнение цикла прекратится. В данном случае переменная х является счетчиком цикла, который изменяется и проверяется на каждой итерации. Рассмотрим пример цикла Есх, тело которого состоит из нескольких операторов. г бог(х=100г х != 65г х -= 5) ( 2 = х х; ртзпеб("Квадрат числа Ъд равен Ъь", х, а)г ) Возведение числа х в квадрат и вызов функции рх*'ласк() выполняются до тех пор, пока значение переменнои х пс станет равным б5. Обратите внимание па то, гго Часть!.

Основы языка С++( подмножество С в этом цикле счет зик уменьшается; сначала ему присваивается число 100, а затем на каждой итерации из него вычитается число 5 В цикле сок проверка условия выполняется перед каждой итерацией. Иными словами, если условие цикла с самого начала является ложным, его тело не будет выполнено ни разу. Рассмотрим пример. з з з з з х = 10; гог(у=10з у(=хз е+у) рг1псг("Ъо", у)з рг1пст("Ъс)", у)з /* Это елинственньвз вызов функции ргфпсс(), который выпоззняется в данном фрагменте "/ Этот цикл никогда не будет выполнен, поскольку значения переменных х и у при входе в цикл равны. Следовательно, условие цикла является ложным, и ни тело цикла, ни приращение счев(ика выполняться з(е будут, Таким образом, значение переменной у останется равным 1О, и именна оно будет выведено на экраз(.

Варианты цикла аког В предыдушсм разделе описан наиболее обший вид оператора сох. Однако он имеет несколько вариантов, повышающих его гибкость и эффективность. Наиболее распространенным является вариант, в котором используется оператор последовательно~о выполнения [" запятая" ), что позволяет применять несколько счетчиков цикла олновременно. (Напомззим, что оператор последовательного выполнения связывает между собой несколько операторов, вынужлая их выполняться друг за другом.

Подробности изложены в главе 2.) Например, переменные х и у являются счетчиками приведенного ниже цикла. Их инициализация выполняется в одном и том же разделе цикла. гог(х=О, у=Оз х+ус10з еех) ( у = дессЬаг()з у = у — '0'г /* Вычесть из переменной у йвп11-код нуля */ Как вилим, два оператора инициализации разделены запятой. При каждой итерации значение переменной х увеличивается на единицу, а переменная у вводится с клавиатуры.

Несмотря на это, переменная у должна иметь какое-то начальное значение, иначе перед первой итерацией цикла условие может оказаться ложным. Функция сопчекде(), приведенная ниже, демонстрирует олновременное примеззение нескольких счетчиков цикла. Она копирует одну строку в другую, перемешаясь от концов к середине. /* демонстрация одновременного использования нескольких счетчиков цикла */ В1пс1цг)е <вес)1о.)з> М1пс1цс(е <зсг1пд.)з> чо1с) сопчегде(с)заг *сагд, с)заг "вгс) 1пс ха1п(чо1г)) ( с)заг Сагдег [80] = "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ"; "проверка функции сопчегде()." сопчегде(сагдее, "Проверка функции сопчегде()."): Глава 3.

Операторы ртапст("Результат: Ъв'зп"„ сагдес) гесцгп 0; ) /* 3 д функция копирует одну строку В другую перонов(аясь от концов к середине. "/ чогзз солчегде(с)зат *сатд, с)заг *втс) ( зпо ргз.лгг ( "Ъв'зл, сагд); гог(а=о, б=вгггеп(вгс)з г<=зз зьв, 3--) ( сагд[з.] =- его[а]з сатд[б] = вгс[з]з ргалгг(вав'зл', сагд)з Программа выволит на экран следующие строки. ХХХХХХХХХХХХХХХХХХХХХХХХХХХХ ПХХХХХХХХХХХХХХХХХХХХХХХХХХХ прххххххххххххххххххххххххх.

ПроХХХХХХХХХХХХХХХХХХХХХХХ) . ПровХХХХХХХХХХХХХХХХХХХХХ ( ) . провехххххххххххххххххххе ( ) . Прове рХХХХХХХХХХХХХХХХХде ( ) . ПроверкХХХХХХХХХХХХХХХз де () . ПроверкаХХХХХХХХХХХХХегде ( ) . Проверка ХХХХХХХХХХХчегде () . Проверка фХХХХХХХХХпчегде() . Проверка фуХХУП(ХХхопчегде(). Проверка фунХХХХХсопчегде().

Проверка функХХХ сопчегде(). Проверка функцХи солчегде(). Проверка функции солчегде(). Результат: Проверка функции сопчегде() В функции сопчегде() для инлексации строки с обоих концов используются два счетчика цикла дог — переменные ь и з. При выполнении цикла счетчик г увеличивается, а счетчик 5 уменьшается. Выполнение цикла прекращается, когда значение счетчика г становится больше, чем значение счетчика з. В этот момент все символы строки уже скопированы. Условное выражение це обязательно связано с проверкой счетчика цикла.

В каче- стас условия цикла может использоваться любой допустимый оператор сравнения или логический оператор, Это позволяет задавать несколько условий цикла одновременно. Рассмотрим функцию, которая проверяет пароль пользователя. Для енола пароля пользователь может сделать три попытки. Выполнение цикла прекращается, если пользователь исчерпал все попытки или ввел правильный пароль.

чоЫ вада оп(чоЫ) ( с)заг нег[20]з зпс хз .аког(х--Оз х<3 аь всгсвзр(всг, "пароль"); ++х) ( Часть!. Основы языка С++: подмножество С ргьпет("Введи е парольз')з пеев(вег)з зь(х=.=з) гегпгпз /* Иначе пользователь получает доступ к системе ... *з' В этой функции используется стандартная функция вегсвзр(), сравнивающая две строки и возвращающая нуль, если онн совпадают.

Напомним, что каждый из трех разделов цикла дог может состоять нз любых допустимых выражений. Эти выражения могут быль никак нс связаны с предназначением разделов. Учитывая вышесказанное„рассмотрим следующий пример. азпс1ийе <вейтесь зде вцгпззв(зее ппи) зпе геайпилз(чозй); зле рговзре(чозй)з зпс иазп(чозй) зпс ез дог(рготре() з е=зеас(пои() з рголзре() ) вс)гппвз(е); геепгп Оз ) впе рготпре(чозй) ( ргзпеб('Введите число. "") гееигп Оз ) Впе геайппи(чозй) зпе ез всапб("Ъй", ае)з гесиз.п ез ) Впг вцгпии(зпг ппи) ( ргзпсй("Ъйзп", пои*пои) гееигп гши*попзз ) Обратите внимание на цикл дог в функции взаап(). Каждый из его разделов содержит вызов функции, в которой пользователю предлагается ввести с клавиатуры некое число.

Если введено число О, выполнение цикла прекращается, поскольку условное выражеззие становится ложным. В противном случае число возводи~ся в квадрат. Таким образом, данный цикл дог использует разделы инициализации и приращения крайне необычно, при этом и с синтаксической, и с семантической точки зрения цикл является абсолютно правильным. Глава 3. Операторы Другая интересная особенность цикла вот заключается в том, что его разделы можно пропускать. Каждый из его разделов являешься необязательным.

Например, цикл, приведенный ниже, выполняется до тех пор„пока пользователь не введет шсло згЗ: й тот(х-.о; х!=123; ) всапт("Ъо"„ ах); Обратите внимание на то, что раздел приращения счетчика в данном цикле тот отсутствует. Это значит, что при каждой итерации значение переменной х сравнивается с числом згэ, и никакие действия с ней больше нс выполняются. Однако, сели пользователь введет с клавиатуры число 1гз, условие цикла станет ложным, и программа прскратит сто выполнение. Счетчик можно инициализировать вне цикла вот. Этим способом пользуются, когда начальное значение счетчика является результатом сложных вычислений, как в следующем примере.

Вега(в); /* Считать строку в переменную в я/ 1В("в) х = втт1еп(в); /* Вычислить длину строки "/ е1ве х = 10; тот( ; х<10; ) ( ртьпст(мос)", х); ) Здесь раздел инициализации оставлен пустым, а переменная х инициализируется до входа в цикл, Бесконечный цикл Хотя в качестве бесконечного можно использоыть любой цикл, традиционно для этой цели применяется оператор вот. Поскольку все разделы оператора вот являются необязательными„его легко сделать бесконечным„не задав никакого условного выражения, (З Ест(," ; ) рттпей("Этот цикл выполняется бесконечно.1п"]; Если условное выражение не указано, опо считается истинным. Разумеется, в этом случае можно по-прежнему выполнять инициализацию и приращение счетчика, однако программисты на языке С++ в качестве бесконечного цикла чаще всего используют конструкцию тотО) ). На самом деле конструкция вот.() ) ) не гарантирует бесконечное выполнение цикла, поскольку его тело может содержать оператор Ьтеа)е, приводящий к немедленному выходу.

(Мы детально изучим этот оператор немного позднее.) В этом случае программа передаст управление следующему оператору, находящемуся за пределами тела цикла Вов, как показано ниже. с?1 = '10' Вот( ; ; ) си = оессиат(); /* Ввести символ */ тт(си=='А'] Ьтеайэ /" Выход ив цикла "/ ) рттпгй("Вы ввели букву А"); Этот цикл выполняется до тех пор, пока пользователь не введсг с клавиатуры букву А. Часть (. Основы языка С+т: подмножество С Пустой цикл аког Оператор может быть пустым. Зто значит, что тело цикла дог (как и любого другого цикла) может пе содержать ии одною оператора. Зтот факт можно использовать для повышения эффективности некоторых алгоритмов и задержки выполнения программы. Удаление пробелов из входною потока — одна из наиболее распространенных задач.

Например, система уп(ивлсния базой данных может допускать запрос 'показать всс счета, остаток на которых мспьшс 400". База данных распознает каждое слово отдельно, пе учитывая пробелы. Следователыю, опа распознает слово "покаить", но пе поймет слова " показать". Таким образом. пробелы в строке запроса необходимо ипюрировать. Зту задачу решает цикл век, который пропускает все пробелы, столп(ие перед словами в с~рокс век.

$ дог( ; *зсг == ' '; зсг++) Как видим, этот цикл не имеет тела — опо ему нс нужно. циклы часто используются лля задержки выпшшеиия программы. Ниже показано, как этого можно достичь, используя оператор доз. в гол(с=О; с<вомя ндхле/ с++) Цикл вЬ~!е Второй по значимости цикл в языке С/С++ — оператор м)здзе. Ои имеет следующий вид. мЬ11е (условие) олсраглор; Здесь оледол1ор может быть пустым, отдельным оператором или блоком операторов. Условие может задаваться любым выражением. Условие цикла считается истинным, если значение этого выражения пе равно пулю.

Характеристики

Тип файла
DJVU-файл
Размер
7,03 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее