bmstu_iu6_Cpp1 (823967), страница 13

Файл №823967 bmstu_iu6_Cpp1 (Методические пособия по C++ Г.С.Иванова 3 части) 13 страницаbmstu_iu6_Cpp1 (823967) страница 132021-07-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Дайте определение указателя. В чем его физический смысл?Ответ.2. Что такое ссылка и какое ее основное достоинство?Ответ.3. Поясните отличие ссылки от указателя.Ответ.4. Что такое адресная арифметика и основные правила ее выполнения?Ответ.5.

Назовите основные операции по выделению и освобождению динамической памяти.Ответ.6. Что такое массивы и для чего их используют? Как можно создать массивы?Ответ.7. Как в С++ определить символьную строку? Какие существуют способы определениястрок и чем они отличаются?Ответ.8. Какие стандартные функции определены для обработки строк и какую библиотеку дляэтого нужно подключить?Ответ.Оглавление819. Что такое структура в С++ и для каких целей она используется?Ответ.10. Что такое динамические структуры данных?Ответ.11.

Приведите пример описания элемента односвязного списка.Ответ.Оглавление824ФУНКЦИИ. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕДля улучшения эффективности программ в языках высокого уровня были разработаны средства модульного программирования, предусматривающие использование подпрограмм и модулей.Подпрограмма – это относительно самостоятельный фрагмент программы, соответствующим образом оформленный и снабженный именем.В зависимости от способов описания и вызова различают подпрограммы двух видов:процедуры и функции.Процедуры предназначены для выполнения некоторых действий, например, печатистроки, а функция – позволяют получить задаваемую скалярную величину, которую возвращает в качестве результата.Си и С++ декларированы как языки функционального программирования.

Поэтому вСи и С++ нет понятия процедуры, как средства языка. Однако существует возможность создания функций, которые не возвращают значения и реализуют действия, свойственныепроцедурам.4.1 Функции С++Каждая программа на С++ обязательно должна включать единственную главнуюфункцию с именем main. Кроме нее в программу может входить произвольное количествофункций, выполнение которых прямо или косвенно инициируется функцией main.Функции можно описывать в любом месте программы и даже в другом файле, нотолько не внутри другой функции.Различают объявление и описание функций.

Описание функции состоит из заголовка,при необходимости используемого в качестве прототипа, и собственно тела функции:<Тип результата или void> <Имя функции> ([<Список параметров>]){ [ < Объявление переменных и констант >]<Операторы>}Объявление функций предполагает включение в начало программы прототипов (заголовков) всех используемых функций, тогда описания функций может быть приведены влюбом порядке. Если прототипы функций в начале программы не помещать, то все функции должны быть описаны до своего вызова.Оглавление83Функция может получать данные двумя способами:а) неявно – с использованием видимых в других функциях переменных;б) явно – через параметры.Неявная передача:• приводит к большому количеству ошибок, вызванных возможной «порчей» глобальных данных подпрограммами;• жестко связывает подпрограмму и данные, существенно снижая степень универсальности подпрограмм.При отсутствии параметров список можно заменить служебным словом void илиопустить, например:int print(void); int print();Формальные и фактические параметры.

Формальными называют параметры,определенные в заголовке описания функции. При перечислении для каждого формального параметра помимо имени задают тип, например:float max(float a,char b){…}Фактическими называют параметры, задаваемые при вызове функции. В математикетакие параметры называют аргументами. В качестве аргументов можно использовать литералы, поименованные константы, переменные и выражения.Совокупность формальных параметров определяет сигнатуру функции.

Сигнатурафункции зависит от количества параметров, их типа и порядка размещения в спецификации формальных параметров.При задании аргументов следует помнить, что формальные и фактические параметры, относящиеся к одной функции, должны совпадать: по количеству параметров, по ихтипу и по порядку следования, например:int k,l,n=6; float d=567.5,m=90.45void fun(int a,float c,float b){….}fun(n,d,m);fun(4,8.7,0.1);// описание функции fun// правильный вызов, аргументы – переменные или константы// правильный вызов, аргументы – литералыfun(n%4-3,8.7,0.1); // правильный вызов, один из аргументов – выражениеfun(4,8.7);// ошибка в количестве параметровfun(4.67, 5,7);// ошибка в типах параметровfun(3,m,d);//не обнаруживаемая компилятором ошибка в порядке следования// аргументовОглавление84Оператор возврата значения функции.

Если описывается подпрограмма-функция,которая возвращает в вызывающую программу формируемое значение, то в теле функцииобязательно наличие оператора возврата return, передающего это значение, например:int max(int a,int b){if (a>b) return aelsereturn b}Вызов функции может выглядеть, например, так: k=max(i,j); .В соответствии со стандартом, если функция возвращающая значение, не используетоператора return, то в вызывающую программу возвращается случайное значение (называемое мусором).При необходимости функция может содержать несколько операторов возврата return, как в примере выше.

Встретив любой из них, функция возвращает значение иуправление в вызывающую программу.Если функция не объявлена со спецификацией void, то ее можно использовать в качестве операнда в любом выражении, например:K=max(a,b)/max(c,e); .Пример 4.1. Разработать подпрограмму, определяющую максимальное из двух вещественных чисел.#include <locale.h>#include <stdio.h>#include <conio.h>// прототип функцииfloat max(float a,float b);int main(int argc, char* argv[]){setlocale(0,"russian");printf("Результат = %f\n",max(4.6,5.8));puts("Нажмите любую клавишу для завершения...");_getch();return 0;}Оглавление85float max(float a,float b) // описание функции{return (a>b)?a:b;}Если описывается подпрограмма-процедура, то она, либо не должна возвращать результатов, либо должна возвращать их через параметры (см.

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

Например:а) возврат значения с использованием параметров-указателей:описание функции: void prog(int a,int *b){*b=a;}вызов функции:prog(c,&d);б) возврат значения с использованием параметров-ссылок:описание функции: void prog(int a, int &b){b=a;}вызов функции:prog(c,d);Если наоборот надо запретить изменение параметра, переданного адресом, то егообъявляют с описателем const, например:int prog2(const int *a) {…}Оглавление864.1.1 Классы памяти переменныхВ С++ переменные могут быть объявлены как вне, так и внутри функций.

При этомкаждой переменной присваивается класс памяти.Класс памяти определяет:• часть памяти программы, в которой размещается переменная (сегмент данныхили сегмент стека);• область действия, т.е. доступность переменной из функций;• время жизни переменной, т.е. как долго она хранится в памяти.Различают пять классов памяти:1. Внешние переменные (описатель extern). Размещение – глобальная памятьпрограммы (сегмент данных), область действия – все файлы все функции программы, в которой она определена, время жизни – с момента вызова программы и до возврата управления операционной системы.По умолчанию, если переменная описана вне функции, то она – внешняя, т.е. внешние переменные вне функций, можно объявлять без описателя extern, например:int a;// внешняя переменная (по умолчанию)int main(){extern int a;…}// внешняя переменная}// внешняя переменнаяabc(){extern int a;…В примере все три объявления относятся к одной и той же переменной, которая объявлена трижды.2.

Автоматические переменные (описатель auto). Размещение – локальная память(сегмент стека программы), область действия – внутри функции или оператора, где онаопределена, время жизни – с момента вызова функции и до момента возврата управления.Если функция, содержащая автоматические переменные, вызывает другую функцию,то вызванная функция имеет доступ к автоматическим переменным вызвавшей ее функции, но не наоборот.Исключением является случай, когда автоматическая переменная вызываемой подпрограммы имеет то же имя, что и внешняя переменная или автоматическая переменнаявызывающей подпрограммы. Если такое происходит, то автоматическая переменная вызываемой подпрограммы «перекрывает» доступ к другим переменным с тем же именем.

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

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

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

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