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

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

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

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

Сравните прототип сопределением функции, представленным в строке 25. Обратите внима​ние, что их имена, типывозвращаемыхзначенийитипыпараметровполностьюсов​падают.Еслибыонибылиразличны,то компилятор показал бы сообщение об ошиб​ке. Единственное обязательное различие междунимисостоитвтом,чтопрототипфункцииоканчиваетсяточкойсзапятойинеимееттела.Обратитетакжевниманиенато,чтоименапараметроввпрототипе—lengthиwidth—несовпадают с именами параметров в определении: yardLength и yardWidth.

Как упоминалосьвыше,именавпрототипенеиспользуются;онипростослужатопи​сательнойинформациейдляпрограммиста. Соответствие имен параметров прототипа именам параметров в определениифункциисчитаетсяхорошимстилемпрограммиро​вания;ноэтонеобязательноетребование.Аргументыпередаютсявфункциювпорядкеобъявленияиопределенияпарамет​ров,нобезучетакакогобытонибылосовпаденияимен.ЕсливфункциюArea()первымпередатьаргументwidthOfYard,азаним—аргументlengthOfYard,тоэтафунк​цияиспользуетзначениеwidthOfYardдля параметра yardLength, а значение lengthOfYard — для параметра yardWidth.

Тело функциивсегда заключается в фигурные скобки, даже если оно состоит только из одной строки, как внашемпримере.ОпределениефункцииОпределение функции состоит из заголовка функции и ее тела. Заголовок подобенпрототипу функции за исключением того, что параметры в данном случае именованные и вконцезаголовкаотсутствуетточкасзапятой.Рис.5.3.ЗаголовокителофункцииТело функции представляет собой набор выражений, заключенных в фигурные скобки.Заголовокителофункциипоказанынарис.5.3.Синтаксиспрототипафункции:тип_возвратаимя_функции([тип[имя_параметра]...]);{выражения;}Прототип функции сообщает компилятору тип возвращаемого значения, имя функции исписок параметров.

Наличие параметров не обязательно, но если они все-таки имеются, впрототипе должны быть объявлены их типы. Имена параметров перечислять необязательно.Строка прототипа всегда оканчивается точкой с запятой (;). Определение функции должносоответствовать своему прототипу по типу возвращаемого значения и списку параметров. Онодолжно содержать имена всех параметров, а тело определения функции должно заключаться вфигурныескобки.Всевыражениявнутрителафункциидолжныоканчиватьсяточкойсзапятой,кромезаголовкафункции.Которыйоканчиваетсязакрывающейкруглойскобкой.Еслифункциявозвращаетзначение,онадолжнасодержатьвыражениесоператоромreturn.Этовыражениеможетнаходитьсявлюбойчастиопределенияфункции,нообычнооканчиваетего.Длякаждойфункциизадаетсятипвозвращаемогозначения.Еслионявнонеопределен.поумолчанию устанавливается тип возврата lnt.

Старайтесь всегда указывать тип возвращаемогозначения в явном виде. Если функция не возвращает никакого значения, то в качестве типавозвращаемогозначенияиспользуйтеvoid.Примерыпрототиповфункций:longFindArea(longlength,longwidth);//возвращаетзначениетипаlong,имеетдвапараметраvoid PrintMessage(int messageNumber); // возвращает значение типа void, имеет одинпараметрintGetChoice();//возвращаетзначениетипаint,неимеетпараметровBadFunction();//возвращаетзначениетипаint,неимеетпараметровПримерыопределенийфункций:longFindArea(longl,iongw){return1*w;}voidPrintMessage(intwhichMsg){if(whichMsg==0)cout<<"Hello.\n";if(whichMsg==1)cout<<"Goodbye.\n";if(whlchMsg>1)cout<<"I'mconfused.\n";}ВыполнениефункцийПривызовефункцииеевыполнениеначинаетсясвыражения,котороестоитпер​вымпослеоткрывающей фигурной скобки ({).

В теле функции можно реализовать ветвление, используяусловный оператор if (и некоторые другие операторы, которые рассматриваются на занятии 7).Функции могут также вызывать другие функции и даже самих себя (о рекурсии речь пойдетнижевэтойглаве).ЛокальныепеременныеВфункцииможнонетолькопередаватьзначенияпеременных,ноиобъявлятьпе​ременныевнутрителафункции.Этореализуетсяспомощьюлокальныхпеременных,которыеназываютсятак потому, что существуют только внутри самой функции. Ко​гда выполнение программывозвращаетсяизфункциикосновномукоду,локальныепеременныеудаляютсяизпамяти.Локальные переменные определяются подобно любым другим переменным.

Пара​метры,переданныефункции,гожесчитаютсялокальнымипеременными,иихможноиспользоватькакопределенные внутри тела функции. В листинге 5.2 представлен пример использованияпараметровфункцииипеременных,локальноопределенныхвнутрифункции.Листинг5.2.Использованиелокальныхпеременныхuпараметровфункции1:#include<iostream.h>2:3:floatConvert(float);4:intmain()5:{6:floatTempFer;7:floatTempCel;8:9:cout<<"PleaseenterthetemperatureinFahrenheit:";10:cin>>TempFer;11:TempCel=Convert(TempFer);12:cout<<"\nHere'sthetemperatureinCelsius:";13:cout<<TempCel<<endl;14:return0;15:}16:17:floatConvert(floatTempFer)18:{19:floatTempCel;20:TempCel=((TempFer-32)*5)/9;21:returnTempCel;22:}Результат:PleaseenterthetemperatureinFahrenheit:212Here'sthetemperatureinCelsius:100PleaseenterthetemperatureinFahrenheit:32Here'sthetemperatureinCelsius:0PleaseenterthetemperatureinFahrenheit:85Here'sthetemperatureinCelsius:25.4444Анализ: В строках 6 и 7 объявляются две переменные типа float: одна (TempFer) дляхранениязначениятемпературывградусахпоФаренгейту,адругая(TempCel)—вградусахпоЦельсию.

В строке 9 пользователю предлагается ввести температуру по Фаренгейту, и этозначениезатемпередаетсяфункцииConvert().ПослевызовафункцииConvert()программапродолжаетвыполнениеспервоговыражениявтелеэтойфункции,представленногострокой19,гдеобъявляетсялокальнаяпеременная,такженазванная TempCel. Обратите внимание, что эта локальная переменная — не та же самаяпеременная TempCel, которая объявлена в строке 7.

Эта переменная существует только внутрифункции Convert(). Значение, переданное в качестве параметра TempFer, также является лишьпереданнойизфункцииmain()локальнойкопиейодноименнойпеременной.В функции Convert() можно было бы задать параметр FerTemp и локальную переменнуюCelTemp, что не повлияло бы на работу программы. Чтобы убедиться в этом, можете ввестиновыеименаиперекомпилироватьпрограмму.Локальной переменной TempCel присваивается значение, которое получается в результатевыполнения следующих действий: вычитания числа 32 из параметра TempFer, умножения этойразности на число 5 с последующим делением на число 9. Результат вычислений затемвозвращается в качестве значения возврата функции, и в строке 11 оно присваиваетсяпеременнойTempCelфункцииmain().Встроке13этозначениевыводитсянаэкран.В нашем примере программа запускалась трижды.

В первый раз вводится значение 212,чтобы убедиться в том, что точка кипения воды по Фаренгейту (212) сгенерирует правильныйответ в градусах Цельсия (100). При втором испытании вводится значение точки замерзанияводы.Втретийраз—случайноечисло,выбранноедляполучениядробногорезультата.В качестве примера попробуйте запустить программу снова с другими именамипеременных,какпоказанониже.Долженполучитьсятотжерезультат.Каждая переменная характеризуется своей областью видимости, определяющей времяжизни и доступность переменной в программе.

Переменные, объявленные внутри некоторогоблока программы, имеют область видимости, ограниченную этим блоком. К ним можнополучить доступ только в пределах этого блока, и после того, как выполнение программывыйдет за пределы, все его локальные переменные автоматически удаляются из памяти.Глобальныежепеременныеимеютглобальнуюобластьвидимостиидоступныизлюбойточкипрограммы.Обычно область видимости переменных очевидна по месту их объявления, но некоторыеисключения все же существуют. Подробнее об этом вы узнаете при рассмотрении циклов взанятии7.1:#include<iostream.h>2:3:floatConvert(float);4:intmain()5:{6:floatTempFer;7:floatTempCel;8:9:cout<<"PleaseenterthetemperatureinFahrenheit:";10:cin>>TempFer;11:TempCel=Convert(TempFer);12:cout<<"\nHere'sthetemperatureinCelsius:";13:cout<<TempCel<<endl;14:return0;15:}16:17:floatConvert(floatFer)18:{19;floatCel;20;Cel=((Fer-32)*5)/9;21:returnCel;22:}Обычно с использованием переменных в функциях не возникает больших проблем, еслиответственноподходитькприсвоениюимениследитьзатем,чтобывпределаходнойфункциинеиспользовалисьодноименныепеременные.ГлобальныепеременныеПеременные, определенные вне тела какой-либо функции, имеют глобальную областьвидимостиидоступныизлюбойфункциивпрограмме,включаяmain().Локальные переменные, имена которых совпадают с именами глобальных переменных, неизменяют значений последних.

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

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

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

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