Добавлен: 12.01.2024
Просмотров: 350
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
§ 59. Процедуры
17810110010 Результат зависит от n! !
k = k // 2 Параметры – данные, изменяющие работу процедуры. локальная переменнаяdef printSred( a, b ): print ( (a + b)/2 )Несколько параметров:
b
x
y
zw5101732230152052 Глобальные: Локальные: процедура не зависит от глобальных переменных легко перенести в другую программу печатает только сумму любых выражений
Пример:Введите натуральное число:2013MMXIII § 60. Функции
1234После переворота: 4321.
Зачем нужны процедуры?
print ( "Ошибка программы" ) много раз!def Error(): print( "Ошибка программы" )n = int ( input() )if n < 0: Error() вызов процедурыПроцедура:define определитьЧто такое процедура?
Процедура – вспомогательный алгоритм, который выполняет некоторые действия. текст (расшифровка) процедуры записывается до её вызова в основной программе в программе может быть много процедур чтобы процедура заработала, нужно вызвать её по имени из основной программы или из другой процедурыПроцедура с параметрами
Задача. Вывести на экран запись целого числа (0..255) в 8-битном двоичном коде. много раз!Алгоритм:178101100102 Как вывести первую цифру? ?7 6 5 4 3 2 1 01 0 1 1 0 0 1 02 разрядыn:=n // 128n % 128 Как вывести вторую цифру? ?n1 // 64Процедура с параметрами
Задача. Вывести на экран запись целого числа (0..255) в 8-битном двоичном коде. Решение:k = 128while k > 0: print ( n // k, end = "" ) n = n % k k = k // 2| n | k | вывод |
| 178 | 128 | 1 |
| 50 | 64 | 0 |
| 50 | 32 | 1 |
| 18 | 16 | 1 |
| 2 | 8 | 0 |
| 2 | 4 | 0 |
| 2 | 2 | 1 |
| 0 | 1 | 0 |
| 0 | 0 |
Процедура с параметрами
printBin ( 99 ) значение параметра (аргумент)def printBin( n ): k = 128 while k > 0: print ( n // k, end = "" ) n = n % k;k = k // 2 Параметры – данные, изменяющие работу процедуры. локальная переменнаяdef printSred( a, b ): print ( (a + b)/2 )Несколько параметров:
Локальные и глобальные переменные
a = 5def qq(): a = 1 print ( a )qq()print ( a ) глобальная переменная локальная переменная 1 5a = 5def qq(): print ( a )qq() 5a = 5def qq(): global a a = 1qq()print ( a ) 1global a работаем с глобальной переменнойНеправильная процедура
x = 5; y = 10def xSum(): print ( x+y )xSum() Что плохо? ?def xSum(): print ( x+y ) процедура связана с глобальными переменными, нельзя перенести в другую программу печатает только сумму x и y, нельзя напечатать сумму других переменных или сумму x*y и 3x Как исправить? ? передавать данные через параметрыПравильная процедура
x = 5; y = 10Sum2( x, y )z=17; w=3Sum2( z, w )Sum2( z+x, y*w )def Sum2(a, b): print ( a+b )a| 5 |
| 10 |
| 17 |
| 3 |
Задачи
«A»: Напишите процедуру, которая принимает параметр – натуральное число N – и выводит на экран линию из N символов '–'. Пример:Введите N:10----------«B»: Напишите процедуру, которая выводит на экран в столбик все цифры переданного ей числа, начиная с первой.Пример:Введите натуральное число:12341234Задачи
«C»: Напишите процедуру, которая выводит на экран запись переданного ей числа в римской системе счисления.Пример:Введите натуральное число:2013MMXIII § 60. Функции
Что такое функция?
Функция – это вспомогательный алгоритм, который возвращает значение-результат (число, символ или объект другого типа).s = input()n = int( s )x = randint( 10, 20 )Что такое функция?
def lastDigit( n ): d = n % 10 return dЗадача. Написать функцию, которая вычисляет младшую цифру числа (разряд единиц). lastDigit число последняя цифра 1234 4return d передача результата результат работы функции – значение d# вызов функцииk = lastDigit( 1234 )print( k )Сумма цифр числа
def sumDigits( n ): sum = 0 while n!= 0: sum += n % 10 n = n // 10 return sumreturn sum передача результатаЗадача. Написать функцию, которая вычисляет сумму цифр числа. # основная программаsumDigits(12345)# сразу вывод на экранprint ( sumDigits(12345) ) Что плохо? ?# сохранить в переменнойn = sumDigits(12345)Использование функций
x = 2*sumDigits( n+5 )z = sumDigits( k ) + sumDigits( m )if sumDigits( n ) % 2 == 0: print ( "Сумма цифр чётная" ) print ( "Она равна", sumDigits( n ) ) Функция, возвращающая целое число, может использоваться везде, где и целая величина! !Одна функция вызывает другую:def middle ( a, b, c ): mi = min ( a, b, c ) ma = max ( a, b, c ) return a + b + c - mi - ma вызываются min и max Что вычисляет? ?Задачи
«A»: Напишите функцию, которая находит наибольший общий делитель двух натуральных чисел. Пример:Введите два натуральных числа:7006652 112307574НОД(7006652,112307574) = 1234.«B»: Напишите функцию, которая определяет сумму цифр переданного ей числа. Пример:Введите натуральное число:123Сумма цифр числа 123 равна 6.Задачи
«C»: Напишите функцию, которая «переворачивает» число, то есть возвращает число, в котором цифры стоят в обратном порядке. Пример:Введите натуральное число:1234После переворота: 4321.
Как вернуть несколько значений?
def divmod ( x, y ): d = x // y m = x % y return d, md – частное,m – остатокa, b = divmod ( 7, 3 )print ( a, b ) # 2 1q = divmod ( 7, 3 )print ( q ) # (2, 1)(2, 1) кортеж – набор элементовq[0]q[1]Задачи
«A»: Напишите функцию, которая переставляет три переданные ей числа в порядке возрастания. Пример:Введите три натуральных числа:10 15 55 10 15«B»: Напишите функцию, которая сокращает дробь вида M/N. Пример:Введите числитель и знаменатель дроби:25 15После сокращения: 5/3Задачи
«C»: Напишите функцию, которая вычисляет наибольший общий делитель и наименьшее общее кратное двух натуральных чисел. Пример:Введите два натуральных числа:10 15НОД(10,15)=5НОК(10,15)=30Логические функции
def even(n): if n % 2 == 0: return True else: return False Логическая функция – это функция, возвращающая логическое значение (True/False).def even(n): return (n % 2 == 0)k = int( input() )if even( k ): print( "Число", k, "чётное." )else: print( "Число", k, "нечётное." )Логические функции
Задача. Найти все простые числа в диапазоне от 2 до 1000. for i in range(2,1001): if i - простое : print ( i ) i - простоеisPrime(i) функция, возвращающая логическое значение (True/False)Функция: простое число или нет?
Какой алгоритм? ?def isPrime ( n ): k = 2 while k*k <= n and n % k != 0: k += 1 return (k*k > n)return (k*k > n)if k*k > n: return Trueelse: return FalseЛогические функции: использование
n = int ( input() )while isPrime(n): print ( n, "– простое число" ) n = int ( input() ) Функция, возвращающая логическое значение, может использоваться везде, где и логическая величина! !Задачи
«A»: Напишите логическую функцию, которая определяет, является ли переданное ей число совершенным, то есть, равно ли оно сумме своих делителей, меньших его самого.
Пример:
Введите натуральное число:
28
Число 28 совершенное.
Пример:
Введите натуральное число:
29
Число 29 не совершенное.