Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лекция 2. Функции и многофайловые программы в Си

Лекция 2. Функции и многофайловые программы в Си (Электронные лекции)

PDF-файл Лекция 2. Функции и многофайловые программы в Си (Электронные лекции) Программирование и алгоритмизация (62586): Лекции - 1 семестрЛекция 2. Функции и многофайловые программы в Си (Электронные лекции) - PDF (62586) - СтудИзба2020-08-21СтудИзба

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

Файл "Лекция 2. Функции и многофайловые программы в Си" внутри архива находится в папке "Лекции". PDF-файл из архива "Электронные лекции", который расположен в категории "". Всё это находится в предмете "программирование и алгоритмизация" из 1 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .

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

Текст из PDF

Лекция 2. Функции и многофайловые программы в Си2.1. Общие сведения о подпрограммах и функцияхФункции являются частным случаем подпрограмм. Подпрограмма - автономно оформленный алгоритм, который может быть использован другим алгоритмом.Подпрограммы (или аналогичные им конструкции) имеются вовсех алгоритмических языках. Их использование позволяет избежатьповторного программирования одинаковых (с точностью до обозначений и констант) частей алгоритма, увеличивает наглядность программ(за счет укрупнения операторов), упрощает разделение труда междунесколькими программистами, делает возможным создание библиотектиповых алгоритмов, упрощает отладку программ.

Использованиеподпрограмм естественно при разработке алгоритмов методом нисходящего проектирования: задача порождает подзадачи, которыеудобно оформить как подпрограммы.Главным вопросом, который следует решить при проектированииподпрограмм, является вопрос о способе передачи данных междуподпрограммой и программой. В любом алгоритмическом языке существует два основных способа передачи данных: через список параметров подпрограммы и через глобальные переменные (общие области, внешние имена). Первый способ дает возможность подстановки, т.

е. передачи в подпрограмму при каждом обращении к ней новогопараметра. В список параметров подпрограммы включаются переменные, значения которых должны быть переданы из программы в подпрограмму и из подпрограммы в программу (т.е. "исходные" и "выходные"1 переменные для подпрограммы).Во всех алгоритмических языках при использовании подпрограмм выделяются два момента: описание подпрограмм и обращениек ним (вызов). Под описанием подпрограммы понимается оформлениеее алгоритма особым образом, так чтобы любая программа (или подпрограмма) могла его активизировать и выполнить над своими данны1Кавычки присутствуют потому, что в вводу и выводу эти термины здесь отношения не имеютми.

Под обращением к подпрограмме понимается активизация подпрограммы; программа передает управление подпрограмме и пересылаетей данные, подпрограмма выполняет свой алгоритм и возвращаетуправление программе. При описании подпрограммы в списке параметров записываются формальные параметры, которые используются только в подпрограмме и при обращении к ней заменяются на фактические параметры, т.

е. на соответствующие данные программы2.Фактические параметры должны соответствовать формальнымпо количеству, порядку перечисления и типу.Существует два способа замены формальных параметров нафактические:"по ссылке" (call-by-reference) и "по значению" (call-byvalue). Передача параметра "по ссылке" означает передачу в подпрограмму адреса фактического параметра. При этом любое изменениеформального параметра внутри подпрограммы есть изменение соответствующего фактического параметра. Поэтому константы и выражения нельзя передавать "по ссылке" - они могут измениться.

Передачапараметров "по значению" означает пересылку значения фактическогопараметра в ячейку, соответствующую формальному параметру, приобращении к подпрограмме. Это обеспечивает сохранность величиныфактического параметра. Изменение формального параметра внутриподпрограммы никак не отражается на фактическом. "По значению"нельзя передавать переменные-результаты подпрограммы; их следуетпередавать "по ссылке". Если фактическое значение может быть константой или выражением, то следует использовать замену "по значению".Заметим, что при передаче "по ссылке", как правило, экономитсяпамять, так как формальные параметры не копируют фактические; поэтому массивы обычно передаются "по ссылке".

При передаче "позначению" обычно экономится время работы подпрограммы (за счетотсутствия переадресации при обращении к формальным параметрам).2Здесь имеется некоторая аналогия с формулой. Вместо обозначений, участвующих в формуле можно подставить другие обозначения, числа или выражения.2В большинстве алгоритмических языков имеется два вида подпрограмм: подпрограммы общего назначения (они часто называютсяпроцедурами) и функции.

Функции следует использовать, если подпрограмма имеет одно выходное значение; классическими примерамифункций во всех алгоритмических языках являются стандартные математические функции: синус, косинус, абсолютная величина и т. д.Имя функции является не только именем ее алгоритма, но и именемрезультата; это имя можно использовать в выражениях (как sin, cos,abs, и т.

д.) Говорят, что функция через свое имя возвращает единственный (или основной) результат.Си, пожалуй, является исторически первым языком программирования, где отсутствуют подпрограммы общего назначения (естьтолько функции). Конечно, существуют специальные приемы, которыепозволяют на базе функции Си получить конструкцию, аналогичнуюпроцедуре.2.2. Функции СИКак всегда при изучении подпрограмм, рассмотрим два вопроса:описание функций Си и обращение к ним.2.2.1. Описание функцииОбщий вид описания функций:Тип Имя_Функции(Список_Формальных_Параметров){ Описания данныхОператорыreturn(выражение, возвращаемое функцией)}Конструкция Тип Имя_Функции(Список_Формальных_Параметров)называется заголовком, остальная часть - блоком функции.

Для того,чтобы запрограммировать вызов функции, достаточно знать заголовок.В заголовке тип - тип возвращаемого значения; если он отсутствует, то по умолчанию принимается int. В операторе return указывается выражение, значение которого присваивается имени функции;этот основной или единственный результат функции. В качестве типа3может использоваться слово void3; в этом случае значение через имяфункции не возвращается, т. е. имеем аналог подпрограммы общегоназначения; тогда, естественно, return не нужен.Имя_Функции имеет два смысла:1) имя алгоритма; более строго, имя функции - это особый указатель (указатель на функцию), его значение - адрес точки входав функцию;2) возвращаемое значение (имя функции можно использовать ввыражениях).Заметим, что использование имени функции внутри ее блокарассматривается как обращение функции к ней самой (рекурсивноеобращение). После имени функции обязательно должны идти скобкисо списком параметров (если этот список не пустой).

Использоватьимя функции в выражениях как имя простой переменной нельзя. Еслиэто необходимо по смыслу задачи, например, для накапливания результата, то следует завести промежуточную переменную и использовать ее вместо имени функции, а затем ее значение присвоить именифункции с помощью оператора return (см. пример 2 п.2.2.4).Если имя функции main, то это главная функция, она первой получает управление после запуска программы; main обязательно присутствует в программе, и только один раз.

В настоящем пособии рассматриваем main без параметров, хотя Си позволяет разрабатыватьпрограммы с параметрами.Списокформальныхпараметров.имеетвид:тип1 параметр1, тип2 параметр2,..., типN параметрNВ список формальных параметров во всех алгоритмических языках включаются переменные, которые передаются из главной (илидругой вызывающей) функции в вызываемую функцию и из вызываемой функции в вызывающую.

Иначе говоря, формальные параметры— это “вход” и “выход” функции. У формальных параметров-массивовпри описании можно не указывать число значений первого индекса.3Void (англ.) -пустой, свободный, незанятый; в Си это ключевоеслово используется в двух значениях: либо отсутствующее значение,либо любой тип.4Если список формальных параметров отсутствует или вместонего стоит слово void, то нет передачи значений в функцию.Замена формальных параметров на фактические в Си происходит только “по значению”, поэтому у переменных-результатов функции в список формальных параметров следует включать адрес(вспомните функцию scanf –п. 1.3.3). Имя массива является адресомначала массива, поэтому массивы в Си передаются только "по ссылке", передачу массивов “по значению” осуществить невозможно.2.2.2. Обращение к функцииСуществует два способа обращения к функции:1) как к процедуре общего назначения, т.

е. можно для вызовафункции использовать операторИмя_Функции(Список_Фактических_Параметров)2) как к функции, т. е. можно указатель функцииИмя_Функции(Список_Фактических_Параметров) - использовать ввыражениях.Для функции типа void допустим только первый способ.Заметим еще раз, что фактические параметры должны соответствовать формальным по количеству, порядку перечисления итипу.2.2.3. Место описания функции в программеФункция не может быть описана внутри другой функции.

Функция(как всё в программе) должна быть описана до использования; еслиэто не так, то до использования необходимо поместить прототип(шаблон) функции. Самый простой и лучший вариант шаблона: заголовок функции, в котором могут отсутствовать имена формальных параметров (но присутствуют их типы).

Формальное отличие шаблона отзаголовка функции состоит в присутствии точки с запятой после скобки, закрывающей список формальных параметров. Наличие шаблонапозволяет компилятору контролировать соответствие типа возвращаемого функцией значения и соответствие количества и типов формальных и фактических параметров.5Общеупотребительная практика состоит в соблюдении следующих правил:1) надо ставить шаблоны в начало программного файла;2) удобно записывать часто употребляемые шаблоны в заголовочный файл, подключаемый к программе директивойinclude препроцессора (см.

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