Лекция 12. Подпрограммы (часть1) (Воробьева И.А. «Информатика. Язык Питон» (2016))
Описание файла
Файл "Лекция 12. Подпрограммы (часть1)" внутри архива находится в папке "Воробьева И.А. «Информатика. Язык Питон» (2016)". PDF-файл из архива "Воробьева И.А. «Информатика. Язык Питон» (2016)", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
1Воробьева И.А. «Информатика. Язык Питон»Подпрограммы. Взаимодействие подпрограммПрограммирование с использованием подпрограмм. Типы подпрограмм.Формальные и фактические параметры. Способы передачи параметров.Параметры по умолчанию, списки параметров. Области видимостипеременных. Разработка сложных программ, содержащих подпрограммы.Использование имени подпрограммы в качестве параметра.8. ПОДПРОГРАММЫ. ВЗАИМОДЕЙСТВИЕ ПОДПРОГРАММ8.1.
Вспомогательные алгоритмы: общего типа и функцииВ материале прошлой лекции мы рассматривали все этапынисходящего проектирования, кроме следующего: подзадачи автономны - кодируются как подпрограммы, преимущественно использующие локальные (внутренние) переменные.Для реализации этого этапа в языках программированияиспользуются подпрограммы двух видов: общего типа (процедуры) ифункции.Процедуры и функции аналогичны программам в миниатюре иимеют общее название – подпрограммы (это часть программы,описывающая некоторый алгоритм, который можно многократноиспользовать, обращаясь к нему из различных точек программы).Использование подпрограмм: сокращает исходный текст программного кода; сокращает объем исполняемого кода; повышает надёжность программы за счет:− уменьшения строк, в которых возможно допустить ошибку;− повышения читабельности кода, ясной логики программы;− сокрытия видимости переменных путем их локализации;2Воробьева И.А.
«Информатика. Язык Питон» увеличивает гибкость и функциональность кода, так как позволяетсоздавать и использовать так называемые библиотеки – сборникподпрограмм или объектов для решения близких по тематике задач; является необходимым условием многомодульной организациипрограммных продуктов, без которых не возможна современнаятехнология программирования.Существуют встроенные подпрограммы - они являются частьюязыка, хранятся в библиотеках языка и подключаются при запуске кодапо умолчанию, не требуя специальных действий.
Это написанныеразработчикамиязыкаподпрограммыдлянаиболеечастовостребованных операций. Вам такие операции уже хорошо знакомы,например, принудительное преобразование типов переменных илиоперации ввода с консоли и вывода на консоль переменных.Встроенныеподпрограммывызываютсяпоименибезпредварительного описания. Например, функции – int, float, str илиinput, print.Для того чтобы использовать наиболее распространенные, но неподключаемые по умолчанию библиотечные подпрограммы, какправило, не требуется никаких специальных действий, кромеподключения библиотеки.
В Python вы уже сталкивались с этим в своихработах 1 , когда подключали математическую библиотеку (math) ибиблиотеку системных операций (sys), например:import math # содержит расширенные математические функцииimport cmath # содержит расширенные математические функциидля комплексных переменныхimport sys # обеспечивает доступ к системным переменным ифункциямПодпрограммы таких библиотек не являются встроенными в «вашупрограмму» по умолчанию, поэтому и требуют отдельного подключения,но всегда поставляются вместе с установщиком среды разработкипрограмм. Таким образом, снимается излишняя нагрузка на объем1В Python приходится писать имя модуля перед функцией из этого модуля для доступа к ней; в других языках, например C, Pascal, этого не требуются.3Воробьева И.А.
«Информатика. Язык Питон»программного кода, ведь библиотек очень много и далеко не всегдатребуется хотя бы половина имеющихся. Поэтому программист самподключает те библиотеки, в которых нуждается.Программисту, при решении своих специфических задач, не хватаеттех функций, которые предоставляют имеющиеся библиотеки. В этомслучае программист разрабатывает собственные подпрограммы, а еслитакие подпрограммы объединены по смыслу, например операции надматрицами или реализация ряда математических методов сортировки,то и объединяет их в собственные библиотеки (модули). Рассмотрим,каким образом реализовать собственные подпрограммы.Напомним, что программа при структурном подходе состоит из двухосновных разделов: раздел описаний и раздел операторов.
При этомраздел описаний объединяет пять смысловых подразделов, которыемогут чередоваться и повторяться, соблюдая одно основополагающееправило – никакое «имя» не может быть использовано до того, как онобудет описано (впервые определено).РАЗДЕЛ ОПИСАНИЙ:Как видим, в основной программеописание подпрограмм располагаются в1. раздел подключаемых модулей (биб- разделе описаний.лиотек)Подпрограмма оформляется подобно2. раздел константосновной программе, т.е.
вновь состоит из3. раздел типов4. раздел переменных заголовка, раздела описаний, раздела5. разделподпро- операторов. При этом в подпрограммеграмм.раздел описаний может состоять из всех пятиподразделов,включаясобственныеРАЗДЕЛлокальныеподпрограммы.ПодобноеОПЕРАТОРОВидентичное описание по принципу матрешки(действий).влияет на так называемую областьвидимости имен: констант, типов, переменных, подпрограмм.4Воробьева И.А. «Информатика.
Язык Питон»Все имена, представленные в разделе описаний основнойпрограммы (головного модуля), называются глобальными. Онидействуют как в разделе операторов основной программы, так и влюбой подпрограмме. Имена, представленные в разделе описанийподпрограммы, называют локальными. Они действуют только в рамкахподпрограммы и недоступны операторам основной программы.Глобальные и локальные имена размещаются в разных областяхоперативной памяти (ОП) и существуют только на время работысоответствующего программного блока.После вызова подпрограммы из основной программывыполнение основной программы приостанавливается, и управлениепередается в подпрограмму, после завершения подпрограммыуправление возвращается в основную программу.Позже рассмотрим понятие области видимости переменных имеханизм взаимодействия программ и подпрограмм подробнее.У подпрограммы, как и у любой переменной, есть два статуса: описание (то, что позволяет нам понять, что она делает, как к нейобращаться, какие данные ей могут потребоваться, что мыожидаем в качестве результата); ОДИН РАЗ использование (когда мы много раз вызываем одну и ту жеподпрограмму по имени, применяя к ней различные входныеданные, допустимого типа); – это похоже на то, как вы запускалимного раз свою программу, решающую какую-то задачу в массиве,для различных массивов в функциональных тестах.
СКОЛЬКОУГОДНО РАЗСейчас нас должно беспокоить два вопроса:1. Каким образом подпрограмма общается с внешним миром, какмы сообщаем ей входные данные, как получаем результат?2. Чем же отличаются подпрограммы общего типа от функций?5Воробьева И.А. «Информатика. Язык Питон»Ответ на первый вопрос очень простой:С помощью имени, данного при описании и списка параметров,перечисленных через запятую. Часть параметров списка можетпередавать входные данные, а часть – результат работы.Ответ на второй вопрос:Ключевое отличие в том, что имя подпрограммы-функциивоспринимается, как переменная какого-то типа данных и один изрезультатов ее работы может быть передан через имя, а не черезпараметры в списке.!Отсюда возникает важное отличие функции от подпрограммыобщего типа.
Раз функция может возвращать значение, значит, ееможно использовать в выражениях, допустимых для возвращаемогорезультата.Мы это свойство использовали, не задумываясь, в первой желабораторной работе.Запись вида:возможна только потому, чтоивозвращающие результат вещественного типа.–была– это функции,Описание подпрограмм в общем виде (процедура)def ИМЯ ПОДПРОГРАММЫ (<список формальных параметров>):< раздел описаний>< раздел операторов>Замечание. Любой раздел, указанный в <угловых скобках>, можетотсутствовать в описании подпрограммы.6Воробьева И.А.
«Информатика. Язык Питон»Примеры:def F_1(a):b=abs(a)####______print(‘а= ’, a, ‘модуль a= ’, b)def F_2( ):b=’’####______b= input(‘Как вас зовут? ’)print( b, ‘ – какое странное имя…’)def F_3(S ):print(‘Куб S равен ’, S**3)def F_4( ):pass # специальный оператор для обозначения пустого блока командОформление функций. Оператор ReturnФункция - это подпрограмма, результат выполнения которой связан свозвращаемым значением определенного типа.Формальноdef ИМЯ ФУНКЦИИ (<список формальных параметров>):< раздел описаний>< раздел операторов>result <значение> # механизм возврата значения функции7Воробьева И.А.
«Информатика. Язык Питон»Примерdef Max(X, Y):if X > Y:return 'X больше.'elif X == Y:return 'Числа равны.'else:return 'Y больше.'print(Max(2, 3))print(Max(2, 2))print(Max(2.1, 2))Вывод:'Y больше.''Числа равны.''X больше.'Что плохо в этом примере с точки зрения структурного подхода?Несколько выходов из функции.
По хорошему, надо писать так:def Max(X, Y):Z=’’if X > Y:Z='X больше.'elif X == Y:Z='Числа равны.'else:Z='Y больше.'return ZЗамечание. В небольших по объему функциях с простой логикой,первый подход может оказаться предпочтительным, но в сложныхзадачах структурный подход дает преимущество в ясности кода,вспомним, что он зародился именно вследствие усложнения программных проектов.8Воробьева И.А.
«Информатика. Язык Питон».Вызов подпрограммИМЯ (фактические параметры)Вызов процедуры осуществляют только в качестве самостоятельнойинструкции программы, а вызов функции можно делать, каксамостоятельную инструкцию, так и непосредственно внутри выраженияили в правой части оператора присваивания подобно тому, какиспользуются стандартные функции, например. Такжефункцию можно использовать в качестве параметра другойподпрограммы. Использование функции подчиняются правилусогласования типов, аналогично обычным переменным языка.Пусть ,– переменные типа float, тогда верно:;Пусть , – переменные типа boolean и функция F() возвращаетрезультат логического типа, тогда верно:.9Воробьева И.А.