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

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

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

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

В качестве возврата можно задавать какконстантныезначения,такицелыевыражения,например:return5;return(x>5);return(MyFunction());Всеприведенныевышевыраженияявляютсяправомочнымиустановкамивозвратафункций,если исходить из того, что функция MyFunction() сама возвращает некоторое значение. Второевыражение,return(x>5),будетвозвращатьfalse,еслиxнебольше5,илиtrue,еслиxбольше5.Таким образом, если в возврате задается логическое выражение, то возвращаются не значенияпеременнойx,алогическиезначенияfalseилиtrue(ложьилиистина).После того как в функции встретится ключевое слово return, будет выполнено выражение,стоящее за этим ключевым словом, и его результат будет возвращен в основную программу поместувызовафункции.Послевыполненияоператораreturnпрограмманемедленнопереходиткстроке,следующейпослевызовафункции,илюбыевыражения,стоящиевтелефункциипослеключевогословаreturn,невыполняются.Однакофункцияможетсодержатьнесколькооператоровreturn.Этаидеяиллюстрируетсявлистинге5.6.Листинг5.6.Использованиенесколькихоператоровreturn1://Листинг5.6.Использованиенескольких2://операторовreturnвтелеФункции3:4:#include<iostream.h>5:6:intDoubler(intAmountToDouble);7:6:intmain()9:{10:11:intresult=0:12:intinput;13:14:cout<<"Enterаnumberbetween0and10,000todouble:":15:cin>>input;16:17:cout<<"\nBeforedoubleriscalled...";18:cout<<"\ninput:"<<input<<Mdoubled:"<<result<<"\n";19:20:result=Doubler(input);21:22:cout<<"\nBackfromDoubler...\n";23:cout<<"\ninput:"<<input<<"doubled:"<<result<<"\n";24:25:26:return0;27:}28:29:int0oubler(intoriginal)30:{31:if(original<=10000)32:returnoriginal*2;33:else34:return-1;35:cout<<"Voucan'tgethere!\n";36:}Результат:Enteranumberbetween0and10,000todouble:9000Beforedoubleriscalled...input:9000doubled:0Backfromdoubler...input:9000doubled:18000Enteranumberbetween0and10.000todouble:11000Beforedoubleriscalled...input:11000doubled:0Backfromdoubler...input:11000doubled:-1Анализ: В строках 14 и 15 программа предлагает пользователю ввести число и coхраняетего в переменной input.

В строке 18 отображается только что введенное число вместе созначениемлокальнойпеременнойresult.Встроке20вызываетсяфункцияDoubler()ивведенноезначениепередаетсяейкакпараметр.Результатвыполненияфункцииприсваиваетсялокальнойпеременнойresult,ивстроке23сновавыводятсязначениятехжепеременных.В строке 31, относящейся к функции Doubler(), значение переданного параметрасравниваетсясчислом10000.Еслиокажется,чтоононепревышает10000,функциявозвращаетудвоенное значение исходного числа.

Если оно больше 10 000, функция возвращает число -1 вкачествесообщенияобошибке.Выражение в строке 35 никогда не будет достигнуто, потому что при любом значениипереданногопараметра(большем10000илинет)возвратизфункциибудетосуществленлибовстроке32,либовстроке34,новлюбомслучаедостроки35.Хорошийкомпиляторсгенерируетпредупреждение,чтоэтовыражениенеможетбытьвыполнено,ихорошийпрограммистдолженпринятьсоответствующиемеры!ВопросыиответыВ чем состоит разница между объявлениями int main() и void main() и какое из них лучшеиспользовать? Ведь оба варианта работают одинаково хорошо, поэтому стоит ли применятьпервыйвариантintmain(){return0;}?Обаобъявлениябудутработатьсбольшинствомкомпиляторов,нотольковариантintmain()является ANSI-совместимым, следовательно, только объявление int main() гарантирует работупрограммы.По существу, отличие состоит в следующем.

При использовании объявления int функцияmain()возвращает значение для операционной системы. После завершения работы вашейпрограммыэтозначениемогутперехватить,например,программыпакетнойобработки.И хотя вы вряд ли будете использовать возвращаемое значение, стандарт ANSI требует егоприсутствия.Значенияпараметров,используемыепоумолчаниюДля каждого параметра, объявляемого в прототипе и определении функции, должно бытьпередано соответствующее значение в вызове функции.

Передаваемое значение должно иметьобъявленныйтип.Следовательно,еслинекотораяфункцияобъявленакакlongmyFunction(int);то она действительно должна принимать целочисленное значение. Если тип объявленногопараметранесовпадетстипомпередаваемогоаргумента,компиляторсообщитобошибке.Из этого правила существует одно исключение, которое вступает в силу, если в прототипефункциидляпараметраобъявляетсястандартноезначение.Этозначение,котороеиспользуетсявтомслучае,еслипривызовефункциидляэтогопараметранеустановленоникакогозначения.Несколькоизменимпредыдущееобъявление:longmyFunction(intx=50);Этот прототип нужно понимать следующим образом.

Функция myFunction возвращаетзначениетипаlongипринимаетпараметртипаint.Ноеслипривызовеэтойфункцииаргументпредоставлен не будет, используйте вместо него число 50. А поскольку в прототипах функцийимена параметров не обязательны, то последний вариант объявления можно переписать подругому:longmyFunction(int=50);Определениефункциинеизменяетсяприобъявлениизначенияпараметра,задаваемогопоумолчанию.Поэтомузаголовокопределенияэтойфункциибудетвыглядетьпо-прежнему:longmyFunction(intx)Если при вызове этой функции аргумент не устанавливается, то компилятор присвоитпеременнойxзначение50.Имяпараметра,длякотороговпрототипеустанавливаетсязначениепо умолчанию, может не совпадать с именем параметра, указываемого в заголовке функции:значение,заданноепоумолчанию,присваиваетсяпопозиции,анепоимени.Установкузначенийпоумолчаниюможноназначитьлюбымиливсемпараметрамфункции.Ноодноограничениевсежедействует:есликакой-топараметрнеимеетстандартногозначения,то ни один из предыдущих по отношению к нему параметров также не может иметьстандартногозначения.Предположим,прототипфункцииимеетвидlongmyFunction(intParam1,intParam2,intParam3);тогдапараметруParam2можноназначитьстандартноезначениетольковтомслучае,еслиназначено стандартное значение и параметру Param3.

Параметру Param1 можно назначитьстандартноезначениетольковтомслучае,еслиназначеныстандартныезначениякакпараметруParam2,такипараметруParam3.Использованиезначений,задаваемыхпараметрамфункцийпоумолчанию,показановлистинге5.7.Листинг 5.7. Использование значений, заданных по умолчанию для параметровфункций1://Листинг5.7.Использованиестандартных2://значенийпараметров3:4:#include<iostream.h>5:6:intVolumeCube(intlength,intwidth=25,intheight=1);7:8:intmain()9:{10:intlength=100;11:intwidth=50;12:intheight=2;13:intvolume;14:15:volume=VolumeCube(length,width,height);16:cout<<"Firstvolumeequals:"<<volume<<"\n";17:18:volume=VolumeCube(length,width);19:cout<<"Secondtimevolumeequals:"<<volume<<"\n";20:21:volume=VolumeCube(length);22:cout<<"Thirdtimevolumeequals:"<<volume<<"\n";23:return0;24:}25:26:VolumeCube(intlength,intwidth,intheight)27:{28:29:return(length*width*height);30:}Результат:Firstvolumeequals:10000Secondtimevolumeequals:5000Thirdtimevolumeequals:2500Анализ: В прототипе функции VolumeCube() B строке 6 объявляется, что функцияпринимает три параметра, причем последние два имеют значения, устанавливаемые поумолчанию.Эта функция вычисляет объем параллелепипеда на основании переданных размеров.

Еслизначение ширины не передано, то ширина устанавливается равной 25, а высота — 1. Еслизначение ширины передано, а значение высоты нет, то по умолчанию устанавливается толькозначение высоты. Но нельзя передать в функцию значение высоты без передачи значенияширины.Встроках10—12инициализируютсяпеременные,предназначенныедляхраненияразмеровпараллелепипедаподлине,ширинеивысоте.ЭтизначенияпередаютсяфункцииVolumeCube()встроке15.Послевычисленияобъемапараллелепипедарезультатвыводитсявстроке16.Встроке18функцияVolumeCube()вызываетсяснова,нобезпередачизначениядлявысоты.Вэтомслучаедлявычисленияобъемапараллелепипедаиспользуетсязначениевысоты,заданноепоумолчанию,иполученныйрезультатвыводитсявстроке19.ПритретьемвызовефункцииVolumeCube()(строка21)непередаетсянизначениеширины,ни значение высоты.

Поэтому вместо них используются значения, заданные по умолчанию, иполученныйрезультатвыводитсявстроке22.Рекомендуется:Помните, что параметры функции действуют внутри нее, подобнолокальнымпеременным.Не рекомендуется:Не устанавливайте значение по умолчанию для первого параметра,если для второго параметра используемого по умолчанию значения не предусмотрено. Незабывайте, что аргументы, переданные в функцию как значения, не могут повлиять напеременные, используемые при вызове функции. Не забывайте, что изменения, внесенные вглобальную переменную в одной функции, изменяют значение этой переменной для всехфункций.ПерегрузкафункцийВ языке C++ предусмотрена возможность создания нескольких функций с одинаковымименем.

Это называется перегрузкой функций. Перегруженные функции должны отличатьсядруг от друга списками параметров: либо типом одного или нескольких параметров, либоразличным количеством параметров, либо и тем и другим одновременно. Рассмотримследующийпример:intmyFunction(int,int);intmyFunction(long,long);intmyFunction(long);ФункцияmyFunction()перегруженастремяразнымиспискамипараметров.Перваяивтораяверсииотличаютсятипамипараметров,атретья—ихколичеством.Типы возвращаемых значений перегруженных функций могут быть одинаковыми илиразными.

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

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

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

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