Главная » Просмотр файлов » 246071-Либерти-Освой-самостоятельно-С-за-21-день

246071-Либерти-Освой-самостоятельно-С-за-21-день (852741), страница 29

Файл №852741 246071-Либерти-Освой-самостоятельно-С-за-21-день (Освой С++ самостоятельно за 1 день. Книга) 29 страница246071-Либерти-Освой-самостоятельно-С-за-21-день (852741) страница 292021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Нельзябыло назвать приятным и сам процесс их разработки. В таких программах циклы состояли изметки,последовательностикомандиоператорабезусловногоперехода.В C++ меткой называют идентификатор, за которым следует двоеточие (:). Метка всегдаустанавливается перед оператором, на который необходимо будет передать управление. Дляпереходананужнуюметкуиспользуетсяоператорgoto,закоторымследуетимяметки.Примериспользованияоператораgotoприведенвлистинге7.1.Листинг7.1.Организацияцикласпомощьюоператораgoto1://Листинг7.1.2://Организацияцикласпомощьюgoto3:4:#include<iostream.h>5:6:intmain()7:{8:intcounter=0;//инициализациясчетчика9:loop:counter++;//началоцикла10:cout.<<"counter:"<<counter<<"\n";11:if(counter<5)//проверказначения12:gotoloop;//возвращениекначалу13:14:cout<<"Complete.Counter:"<<counter<<".\n";15:return0;16:}Результат:counter:1counter:2countor:3counter:4counter:5Complete.Counter:5.Анализ:Встроке8переменнаяcounterинициализируетсянулевымзначением.Меткаloop:в строке 9 показывает начало цикла.

На каждой итерации значение counter yвeличивaeтcя наединицуивыводитсянаэкран.Встроке11выполняетсяпроверказначенияпеременнойcounter.Еслиономеньшепяти,значитусловиевыполняетсяиуправлениепередаетсяоператоруgoto,врезультате чего осуществляется переход на строку 9. Итеративный процесс выполняется до техпор, пока значение переменной counter не достигнет пяти. После этого программа выходит запределыциклаинаэкранвыводитсяокончательныйрезультат.ПочемуследуетизбегатьоператораgotoСовременемнелестныевысказываниявадресоператораgotoучастились,впрочем,вполнезаслуженно.Спомощьюоператораgotoможноосуществлятьпереходвлюбуюточкупрограммы—впередилиназад.Такоебеспорядочноеиспользованиеэтогооператорапривелокпоявлениюзапутанных и абсолютно непригодных для восприятия программ, получивших жаргонноеназвание"спагетти".Поэтомупоследниедвадцатьлетпреподавателипрограммированиявовсеммиретвердилистудентамоднуитужефразу:"Никогданеиспользуйтеоператорgoto".Насменуоператоруgotoпришликонструкцииснесколькоболеесложнойструктурой,ноис более широкими возможностями: for, while и do...while.

Несмотря на то что после полногоискоренения оператора goto структура программ значительно прояснилась, негативныевысказывания в его адрес следует признать преувеличенными. Как любой инструментпрограммирования, при правильном использовании оператор goto может оказаться достаточнополезным.ВсилуэтогокомитетANS1принялрешениеоставитьэтотоператорвязыке.Правда,вместе с этим родилась шутка: "Дети! Использование этого оператора в домашних условияхнебезопасно!"ОрганизацияцикловспомощьюоператораwhileВ циклах, организованных с помощью оператора while, выполнение последовательностиопераций продолжается до тех пор, пока условие продолжения цикла истинно. В примерепрограммывлистинге7.1значениепеременнойcounterувеличивалосьдотехпор,поканесталоравнымпяти.Листинг7.2демонстрируеттотжеалгоритм,реализованныйспомощьюоператораwhile.Листинг7.2.Организацияцикласпомощьюоператораwhile1://Листинг7.2.2://Организацияцикласпомощьюоператораwhile3:4:#include<iostream.h>5:6:intmain()7:{8:intcounter=0;//присвоениеначальногозначения9:10:while(counter<5)//проверкаусловияпродолженияцикла11:{12:counter++;//телоцикла13:cout<<"counter:"<<counter<<"\;n";14:}15:16:cout<<"Complete.Counter:"<<counter<<".\n";17:return0;18:}Результат:counter:1counter:2counter:3counter:4counter:5Complete.Counter:5.Анализ: Эта несложная программа показывает пример организации цикла с помощьюоператора while.

В начале каждой итерации проверяется условие, и, если оно выполняется,управление передается на первый оператор цикла. В нашем примере условию продолженияциклаудовлетворяютвсезначенияпеременнойcounter,меньшиепяти(строка10).Еслиусловиевыполняется, запускается следующая итерация цикла. В строке 12 значение счетчикаувеличивается на единицу, а в строке 13 выводится на экран.

Как только значение счетчикадостигаетпяти,телоцикла(строки11—14)пропускаетсяиуправлениепередаетсявстроку15.СложныеконструкциисоператоромwhileСложность логического выражения, являющегося условием в операторе while, неограничена. Это позволяет использовать в конструкции while любые логические выраженияC++. При построении выражений допускается использование логических операций: &&(логическоеИ),11(логическоеИЛИ),атакже!(логическоеотрицание).Влистинге7.3показанпримериспользованияболеесложныхусловийвконструкцияхсоператоромwhile.Листинг7.3.Сложныеусловиявконструкцияхwhile1://Листинг7.3.2://Сложныеусловиявконструкцияхwhile3:4:include<iostream.h>5:6:intmain()7:{8:unsignedshortsmall;9:unsignedlonglarge;10:constunsignedshortMAXSMALL=65535;11:12:cout<<"Enterasmallnumber:";13:cin>>small;14:cout<<"Enteralargenumber:";15:cin>>large;16:17:cout<<"small:"<<small<<"...";18:19://накаждойитерациипроверяютсятриусловия20:while(small<large&&large>0&&small<MAXSMALL)21:{22:if(small%5000==0)//послекаждых5000строквыводитсяточка23:cout<<".";24:25:small++;26:27:large-=2;28:}39:30:cout<<"\nSmall:"<<small<<"Large:"<<large<<endl;31:return0;32:}Результат:Enterаsmallnumber:2Enterаlargenumber:100000small:2Small:33335Large:33334Анализ: Программа представляет собой простую логическую игру.

Вначале предлагаетсяввести два числа — small и large. После этого меньшее значение увеличивается на единицу, абольшееуменьшаетсянадвадотехпор,покаонине"встретятся".Цельигры:угадатьчисло,накоторомзначения"встретятся".В строках 12—15 осуществляется ввод значений. В строке 20 проверяется три условияпродолженияцикла.1.Значениепеременнойsmallнепревышаетзначенияlarge.2.Значениепеременнойlargeнеотрицательноеинеравнонулю.3.ЗначениепеременнойsmallнепревышаетзначенияконстантыMAXSMALL.Далее,встроке23,вычисляетсяостатокотделениячислаsmallна5000,причемзначениепеременной small не изменяется. Если small делится на 5000 без остатка, результатомвыполнения этой операции будет 0. В этом случае для визуального представления процессавычислений на экран выводится точка. Затем в строке 26 значение переменной smallувеличиваетсяна1,австроке28значениеlargeуменьшаетсяна2.Цикл завершается, если хотя бы одно из условий перестает выполняться. После этогоуправлениепередаетсявстроку29,следующуюзателомцикла.ОператорыbreakиcontinueЧасто бывает необходимо перейти на следующую итерацию цикла еще до завершениявыполнениявсехоператоровтелацикла.Дляэтогоиспользуетсяоператорcontinue.Кроме того, в ряде случаев требуется выйти за пределы цикла, даже если условияпродолженияциклавыполняются.Вэтомслучаеиспользуетсяоператорbreak.Пример использования этих операторов приведен в листинге 7.4.

Это несколькоусложненныйвариантужезнакомойигры.Вэтомслучае,кромеменьшегоибольшегозначений,предлагаетсяввестишагицелевоезначение.Какивпредыдущемпримере,накаждойитерациициклазначениепеременнойsmallувеличиваетсянаединицу.Значениеlargeуменьшаетсянадва,если меньшее число не кратно значению переменной шага (skip). Игра заканчивается, когдазначение переменой small становится больше, чем значение large. Если значение переменнойlargeсовпадаетсцелевымзначением(target),выводитсясообщениеииграпрерывается.Цельигрысостоитвтом,чтобыугадатьчисло,вкоторое"попадет"значениеtarget.Листинг7.4.Использованиеbreakиcontinue1://Листинг7.4.2://Примериспользованияоператоровbreakиcontinue3:4:#include<iostream.h>5:6:intmain()7:{8:unsignedshortsmall;9:unsignedlonglarge;10:unsignedlongskip;11:unsignedlongtarget;12:constunsignedshortMAXSMALL=65535;13:14:cout<<"Enterasmailnumber:";15:cin>>small;16:cout<<"Enteralargenumber:";17:cin>>large;18:cout<<"Enteraskipnumber:";19:cin>>skip;20:cout<<"Enteratargetnumber;";21:cin>>target;22:23:cout<<"\n"24:25://установкаусловийпродолженияцикла26:while(small<large&&large>0&&small<MAXSMALL)27:28:{29:30:small++;31:32:if(small%skip==0)//уменьшитьзначениеlarge?33:{34:cout<<"skippingon:"<<small<<endl;35:continue;36:}37:38:if(large==target)//проверкапопаданиявцель39:{40:cout<<"Targetreached!";41:break;42:}43:44:large-=2;45:}//конеццикла46:47:cout<<"\nSmall:"<<small<<"Large:"<<large<<endl;48:return0;49:}Результат:Enterasmallnumber:2Enteralargenumber:20Enteraskipnumber:4Enteratargetnumber:6skippingon4skippingon8Small:10Large:8Анализ: Как видим, игра закончилась поражением пользователя, поскольку меньшеезначениепревысилобольшее,ацельтакинебыладостигнута.В строке проверяются условия продолжения цикла.

Если значение переменной smallменьшезначенияlarge,атакжееслиlargeбольшенуляиsmallнепревышаетзначениеконстантыSMALLINT,управлениепередаетсяпервомуоператорутелацикла.В строке 32 вычисляется остаток от деления значения переменной small на значение skip.Еслизначениеsmallкратноskip,операторcontinueзапускаетследующуюитерациюцикла(срока26). В результате такого перехода пропускается проверка целевого значения и операцияуменьшениязначенияпеременнойlarge.Сравнениезначенийtargetиlargeвыполняетсявстроке38.Еслиэтизначенияравны,игразаканчивается победой пользователя.

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

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

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

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