Лекция 12. Подпрограммы (часть1) (1152914)
Текст из файла
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Воробьева И.А.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.