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

246071-Либерти-Освой-самостоятельно-С-за-21-день (Освой С++ самостоятельно за 1 день. Книга), страница 13

PDF-файл 246071-Либерти-Освой-самостоятельно-С-за-21-день (Освой С++ самостоятельно за 1 день. Книга), страница 13 Объектно-ориентированное программирование (ООП) (112562): Книга - 2 семестр246071-Либерти-Освой-самостоятельно-С-за-21-день (Освой С++ самостоятельно за 1 день. Книга) - PDF, страница 13 (112562) - СтудИзба2021-10-05СтудИзба

Описание файла

PDF-файл из архива "Освой С++ самостоятельно за 1 день. Книга", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 13 страницы из PDF

В языке C++ можно поместить одну и ту жепеременнуюпообестороныоператораприсваивания,итогдапредыдущийблоксведетсялишькодномувыражению:myAge=myAge+2;В алгебре это выражение рассматривалось бы как бессмысленное, но в языке C++ оночитается следующим образом: добавить два к значению переменной myAge и присвоитьрезультатпеременнойmyAge.Существуетещеболеепростойвариантпредыдущейзаписи,хотяеготруднеечитать:myAge+=2;Этот оператор присваивания с суммой (+=) добавляет r-значение к l-значению, а затемсновазаписываетрезультатвl-значение.ЕслибыдоначалавыполнениявыраженияпеременнаяmyAgeимелазначение4,топослееевыполнениязначениепеременнойmyAgeсталобыравным6.Помимо оператора присваивания с суммой существуют также оператор присваивания свычитанием(-=),делением(/=),умножением(*=)иделениемпомодулю(%=).ИнкрементдекрементОчень часто в программах к переменным добавляется (или вычитается) единица.

В языкеC++увеличениезначенияна1называетсяинкрементом,ауменьшениена1—декрементом.Дляэтихдействийпредусмотреныспециальныеоператоры.Операторинкремента(++)увеличиваетзначениепеременнойна1,аоператордекремента(-)уменьшаетегона1.Так,еслиувасестьпеременнаяСивыхотитеприраститьеенаединицу,используйтеследующеевыражение:C++;//УвеличениезначенияСнаединицуЭтожевыражениеможнобылобызаписатьследующимобразом:С=С+1;что,всвоюочередь,равносильновыражению.С+=1;ПрефиксипостфиксКак оператор инкремента, так и оператор декремента работает в двух вариантах:префиксном и постфиксном. Префиксный вариант записывается перед именем переменной(++myAge),апостфиксный—посленего(myAge++).В простом выражении вариант использования не имеет большого значения, но в сложномпри выполнении приращения одной переменной с последующим присваиванием результатадругой переменной это весьма существенно.

Префиксный оператор вычисляется доприсваивания,апостфиксный—после.Семантика префиксного оператора следующая: инкрементируем значение, а затемсчитываем его. Семантика постфиксного оператора иная: считываем значение, а затемдекрементируеморигинал.Напервыйвзглядэтоможетвыглядетьнесколькозапутанным,нопримерылегкопроясняютмеханизм действия этих операторов. Если x — целочисленная переменная, значение которойравно5,и,знаяэто,вызаписалиintа=++x;тотемсамымвелеликомпиляторуинкрементироватьпеременнуюx(сделавееравной6),азатем присвоить это значение переменной а. Следовательно, значение переменной а теперьравно6изначениепеременнойxтожеравно6.Еслиже,послеэтоговызаписалиintb=x++;тотемсамымвелеликомпиляторуприсвоитьпеременнойbтекущеезначениепеременнойx(6), а затем вернуться назад к переменной x и инкрементировать ее.

В этом случае значениепеременной b равно 6, но значение переменной x уже равно 7. В листинге 4.4продемонстрированоиспользованиеобоихтиповоператоровинкрементаидекремента.Листинг4.4.Примерыиспользованияпрефиксныхипостфиксныхоператоров1://Листинг4.4.Демонстрируетиспользование2://префиксныхипостфиксныхоператоров3://инкрементаидекремента4:#include<iostream.h>5:intmain()6:{7:intmyAge=39;//инициализируемдвецелочисленныепеременные8:intyourAge=39;9:cout<<"Iam:"<<myAge<<"yearsold.\n";10:cout<<"Youare:"<<yourAge<<"yearsold\n";11:myAge++;//постфиксныйинкремент12:++yourAge;//префиксныйинкремент13:cout<<"Oneyearpasses...\n";14:cout<<"Iam:"<<myAge<<"yearsold.\n";15:cout<<"Youare:"<<yourAge<<"yearsold\n";16:cout<<"Anotheryearpasses\n";17:cout<<"Iam:"<<myAge++<<"yearsold.\n";18:cout<<"Youare:"<<++yourAge<<"yearsold\n";19:cout<<"Let'sprintitagain.\n";20:cout<<"Iam:"<<myAge<<"yearsold.\n";21:cout<<"Youare:"<<yourAge<<"yearsold\n";22:return0;23:}Результат:Iam39yearsoldYouare39yearsoldOneyearpassesIam40yearsoldYouare40yearsoldAnotheryearpassesIam40yearsoldYouare41yearsoldLet'sprintitagainIam41yearsoldYouare41yearsoldАнализ: В строках 7 и 8 объявляются две целочисленные переменные и каждая из нихинициализируетсязначением39.Значенияэтихпеременныхвыводятсявстроках9и10.В строке 11 инкрементируется переменная myAge с помощью постфиксного оператораинкремента, а в строке 12 инкрементируется переменная yourAge с помощью префиксногооператораинкремента.Результатыэтихоперацийвыводятсявстроках14и15;каквидите,ониидентичны(обоимучастникамнашегоэкспериментапо40лет).В строке 17 инкрементируется переменная myAge (также с помощью постфиксногооператораинкремента),являясьприэтомчастьювыражениявыводанаэкран.Посколькуздесьиспользуетсяпостфикснаяформаоператора,тоинкрементвыполняетсяпослеоперациивывода,поэтомусновабыловыведенозначение40.Затем(длясравненияспостфикснымвариантом)встроке 18 инкрементируется переменная yourAge с использованием префиксного оператораинкремента.

Эта операция выполняется перед выводом на экран, поэтому отображаемоезначениеравночислу41.Наконец,встроках20и21этижезначениявыводятсяснова.Посколькуприращениябольшене выполнялись, значение переменной myAge сейчас равно 41, как и значение переменнойyourAge(всеправильно:старееммывсесодинаковойскоростью!).ПриоритетыоператоровКакоедействие—сложениеилиумножение—выполняетсяпервымвсложномвыражении,напримервтаком,какэто:X=5+3*8;Если первым выполняется сложение, то ответ равен 8 * 8, или 64. Если же первымвыполняетсяумножение,тоответравен5+24,или29.Каждый оператор имеет значение приоритета (полный список этих значений приведен вприложенииА).Умножениеимеетболеевысокийприоритет,чемсложение,поэтомузначениеэтого"спорного"выраженияравно29.Еслидваматематическихоператораимеютодинитотжеприоритет,тоонивыполняютсявпорядкеследованияслеванаправо.Значит,ввыраженииX=5+3+8*9+6*4;сначалавычисляетсяумножение,причемслеванаправо:8*9=72и6*4=24.Теперьтожевыражениевыглядитпроще:x=5+3+72+24;Затемвыполняемсложение,тожеслеванаправо:5+3=8;8+72=80;80+24=104.Однакобудьтеосторожны—невсеоператорыпридерживаютсяэтогопорядкавыполнения.Например,операторы присваивания вычисляются справа налево! Но что же делать, если установленныйпорядокприоритетовнеотвечаетвашимнамерениям?Рассмотримвыражение:TotalSeconds=NumMinutesToThink+NumMinutesToType*60Предположим, что в этом выражении вы не хотите умножать значение переменнойNumMinutesToType на число 60, а затем складывать результат со значением переменнойNumMinutesToThink.

Вам нужно сначала сложить значения двух переменных, чтобы получитьобщее число минут, а затем умножить это число на 60, получив тем самым общее количествосекунд.В этом случае для изменения порядка выполнения действий, предписанного приоритетомоператоров, нужно использовать круглые скобки. Элементы, заключенные в круглые скобки,имеют более высокий приоритет, чем любые другие математические операторы.

Поэтому дляреализациивашихнамеренийприведенноевышевыражениенужнопредставитьвтакомвиде:TotalSeconds=(NumMinutesToThink+NumMinutesToType)*60ВложениекруглыхскобокПри создании сложных выражений может возникнуть необходимость вложить круглыескобки друг в друга. Например, вам нужно вычислить общее число секунд, затем общее числовключенныхврассмотрениелюдей,аужпотомперемножитьэтичисла:TotalPersonSeconds=(((NumMinutesToThink+NumMinutesToType)*60)*(PeopleInTheOffice+PeopleOnVacation))Это сложное выражение читается изнутри. Сначала значение переменнойNumMinutesToThink складывается со значением переменной NumMinutesToType, поскольку онизаключены во внутренние круглые скобки.

Затем полученная сумма умножается на 60. Послеэтого значение переменной PeopleInTheOffice прибавляется к значению переменнойPeopleOnVacation. Наконец, вычисленное общее количество людей умножается на общее числосекунд.Этотпримерзатрагиваетблизкуюинеменееважнуютему.Приведенноевышевыражениелегко вычисляется компьютером, но нельзя сказать, что человеку его так же легко читать,пониматьимодифицировать.Воткакможнопереписатьэтовыражениеспомощьювременныхцелочисленныхпеременных:TotalMinutes = NumMinutesToThink + NumMinutesToType; TotalSeconds = TotalMinutes * 60;TotalPeople = PeopleInTheOffice + PeopleOnVacation; TotalPersonSeconds = TotalPeople *TotalSeconds;Для записи этого варианта требуется больше времени и много временных переменных, ноон гораздо легче для понимания.

Осталось лишь добавить комментарии, разъясняющиеназначение этого программного кода, и заменить число 60 символьной константой. И тогдаможносчитатьэтотпрограммныйфрагментпрактическиидеальнымдлячтенияидальнейшейэксплуатации.Рекомендуется:Помните, что выражения оперируют значениями. Используйтепрефиксный оператор (++переменная) для инкремента или декремента переменной перед ееиспользованием в выражении.

Используйте постфиксный оператор (переменная++) дляинкремента или декремента переменной после ее использования в выражении. Используйтекруглые скобки для изменения порядка выполнения операторов, обусловленного ихприоритетами.He рекомендуется:Не используйте слишком много вложенных круглых скобок, посколькутакиевыражениястановятсятруднымидляпонимания.ЧтотакоеИСТИННОВ предыдущих версиях языка C++ результаты логических выражений представлялисьцелочисленнымизначениями,новновомстандартеANSIвведенновыйтип—bool,имеющийтолькодвавозможныхзначения:trueилиfalse.Любоевыражениеможетбытьрассмотреносточкизренияегоистинностиилиложности.Математическиевыражения,возвращающиенуль,можноиспользоватьдляприсвоениязначенияfalseлогическойпеременной,алюбойдругойрезультатбудетозначатьtrue.Примечание:Многиекомпиляторыираньшебылисориентированынатипbool,которыйвнутренне представлялся с помощью типа long int и поэтому имел размер, равный четырембайтам.НынеANSI-совместимыекомпиляторычастообеспечиваютоднобайтовыйтипbool.ОператорыотношенийТакие операторы используются для выяснения равенства или неравенства двух значений.Выражения сравнения всегда возвращают значения true (истина) или false (ложь).

Операторыотношенияпредставленывтабл.4.1.Примечание:В новом стандарте ANSI предусмотрен новый тип bool, и все операторыотношенийтеперьвозвращаютзначениетипаbool—trueиfalse.ВпредыдущихверсияхязыкаC++этиоператорывозвращали0вкачествеfalseилилюбоененулевоезначение(обычно1)вкачествеtrue.ЕслиоднацелочисленнаяпеременнаяmyAgeсодержитзначение39,адругаяцелочисленнаяпеременнаяyourAge—значение40,то,используяоператорравенства(==),можноузнать,равнылиэтипеременные:myAge == yourAge; // совпадает ли значение переменной myAge со значением переменнойyourAge?Это выражение возвращает 0, или false (ложь), поскольку сравниваемые переменные неравны.ВыражениеmyAge > yourAge; // значение переменной myAge больше значения переменной yourAge?такжевозвратит0(илиfalse).Предупреждение:МногиеначинающиепрограммироватьнаязыкеC++путаютоператорприсваивания (=) с оператором равенства (==). Случайное использование не того оператораможетпривестиктакойошибке,которуютруднообнаружить.Всего в языке C++ используется шесть операторов отношений: равно (==), меньше (<),больше(>),меньшеилиравно(<=),большеилиравно(>=)инеравно(!=).Втабл.4.1нетолькоперечисленывсеоператорыотношений,ноиприведеныпримерыихиспользования.Рекомендуется:Помните,чтооператорыотношенийtrueилиfalse.Heрекомендуется:Непутайтеоператорприсваивания(=)соператоромравенства(==).Это одна из самых распространенных ошибок программирования на языке C++ — будьтеначеку!Таблица4.1.ОператорыотношенийОператорifОбычно программа выполняется по порядку, строка за строкой.

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