Презентация по теме "Запись вспомогательных алгоритмов на языке Python. Процедуры" (9 класс)"
Cкачать презентацию: Презентация по теме "Запись вспомогательных алгоритмов на языке Python. Процедуры" (9 класс)"
Презентация по слайдам:
Слайд #1
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ PYTHON
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
учитель: Сойникова Екатерина Дмитриевна.
МКОУ «Новоспасская СОШ» Золотухинского района Курской области

Слайд #2
Ключевые слова
подпрограмма
процедура
функция
рекурсивная функция

Слайд #3
Подпрограммы
Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм.
В Python различают два вида подпрограмм
Процедура
Функция
Подпрограмма

Слайд #4
Процедуры
Процедура – это подпрограмма, выполняющая некоторые действия; она может иметь произвольное количество заданных параметров.
Описание процедуры имеет вид:
def <имя процедуры> ():
<операторы>

Слайд #5
Процедуры Python
Процедура начинается со служебного слова def (от англ. define – определитель). После этого записывается имя процедуры, скобки и двоеточие.
Операторы, которые входят в тело процедуры записываются отступом. Так мы показываем, какие команды входят в процедуру.
Для того, чтобы процедура заработала, ее необходимо вызвать по имени; причем таких вызовов может быть сколько угодно.
Процедура должна быть определена к моменту ее вызова, т.е., должна быть выполнена команда def, которая создает объект-процедуру в памяти. Если процедура вызывается из основной программы, то нужно поместить определение процедуры раньше точки ее вызова.

Слайд #6
Процедуры Python
def digit():
print(1111111)
print(‘Четыре строки из семи единиц’)
digit()
digit()
digit()
digit()
Пример. Предположим, что требуется вывести четыре строки, каждая из которых состоит из семи единиц. Для этого создадим процедуру, которая выполнит вывод одной строки из семи единиц, и вызовем ее четыре раза.

Слайд #7
Процедуры Python
print(‘1’ * n)
Предположим, что требуется вывести четыре строки, состоящие из семи, восьми, девяти и десяти единиц соответственно.
Для этого создадим процедуру с параметром, определяющим длину строки.
Чтобы вывести единицу n раз, воспользуемся командой:
Чтобы использовать эту команду в процедуре, укажем в скобках переменную (параметр), значение которой и будет определять длину строки.
def digit(n):
print(‘1’ * n)

Слайд #8
Процедуры Python
Чтобы вывести строку требуемой длины, нужно вызвать процедуру, указав в скобках значение параметра n, т.е., количество символов ‘1’:
def digit(n):
print(‘1’ * n)
digit(7) #выводит 7 единиц: 1111111
digit(8) #выводит 8 единиц: 11111111
digit(9) #выводит 9 единиц: 111111111
digit(10) #выводит 10 единиц: 1111111111

Слайд #9
Процедуры Python
Процедура может зависеть от нескольких параметров. Давайте немного улучшим процедуру digit(d,n): сделаем так, чтобы можно было изменять не только длину строки, но и цифры, из которых она строится. Для этого введем процедуру еще один параметр, который назовем d:
def digit(d,n):
print(d * n)

Слайд #10
Процедуры Python
def digit(d,n):
print(d * n)
x = (input(‘Введите цифру: ’))
y = (input(‘Введите длину строки: ’))
digit(x, y)
Обозначим переменных, значения которых мы вводим с клавиатуры, не обязательно должно совпадать с обозначением параметров процедуры. Мы могли назвать их любыми другими именами, например:

Слайд #11
Процедуры Python
Переменные d и n – это локальные переменные; они определены и используются только внутри процедуры digit(). Обращаться к ним все этой процедуры нельзя. Как только работа процедуры будет закончена, все ее локальные переменные удалятся из памяти.
В тех случаях, когда значение переменной, полученное в подпрограмме, должно быть использовано в основной программе, эту переменную следует объявить как глобальную.

Слайд #12
Процедуры Python
Пример. Хорошо известный алгоритм Евклида для нахождения наибольшего общего делителя (НОД) двух чисел в виде процедуры можно описать так:
Модифицированный алгоритм Евклида для натуральных чисел: заменять бóльшее из двух заданных чисел на остаток от деления бóльшего на меньшее, пока этот остаток не станет равен нулю. Тогда второе число и есть их НОД.
def nod (a,b):
global x
while a!=b:
if a > b:
a = a – b
else:
b = b - a
x = a

Слайд #13
Процедуры Python
Протестируйте программу на последовательности из шести чисел: 16, 32, 40, 64, 80 и 128.
Задача поиска НОД для последовательности натуральных чисел, количества членов которой k вводится с клавиатуры, может быть решена с помощью следующей программы:
Подпрограмма
k = int(input(‘k=’))
x = int(input())
for i in range (1,k):
y = int(input())
nod(x,y)
print(‘НОД=’,x)
Основная программа
def nod (a,b):
global x
while a!=b:
if a > b:
a = a – b
else:
b = b - a
x = a

Слайд #14
Примеры основной программы
m = [16, 32, 40, 64, 80, 128]
x = m[0]
for i in range (1, 6):
y = m[i]
nod(x,y)
print (‘НОД=‘,x)
Измените программу так, чтобы с ее помощью можно было найти:
а) наибольший общий делитель для следующих пяти чисел: 12, 24, 30, 48 и 51;
б) наибольший общий делитель произвольных десяти целых двузначных чисел.
С помощью массива

Слайд #15
Напишем программу
а) наибольший общий делитель для следующих пяти чисел: 12, 24, 30, 48 и 51;
def nod (a,b):
global x
while a!=b:
if a> b:
a = a-b
else:
b = b-a
x = a
m = [12, 24, 30, 48, 51]
x = m[0]
for i in range (1, 5):
y = m[i]
nod(x,y)
print ('НОД=',x)

Слайд #16
Напишем программу
б) наибольший общий делитель произвольных десяти целых двузначных чисел.
def nod (a,b):
global x
while a!=b:
if a> b:
a = a-b
else:
b = b-a
x = a
N=10
A=[0]*N
from random import randint
for i in range (N):
A[i]=randint(0,99)
for i in range(N):
print('A = [',i,'] = ',A[i])
x = A[0]
for i in range (1, 10):
y = A[i]
nod(x,y)
print ('НОД=',x)

Слайд #17
Рассмотрим программу, которая выводит все простые
множители произвольного натурального числа a > 1
(если число простое, то выводится оно само)
Процедуры Python
Подпрограмма
a = int(input(‘a = ‘))
while a > 1:
ppd(a)
a = a / d
Основная программа
def ppd (n):
global d
d = 2
while n % d > 0:
d = d + 1
print(d)
Протестируйте программу на числах 121, 135 и 847. В результате ее выполнения вы должны получить соответствующие наборы чисел, записанных в столбик: 11, 11; 3, 3, 3, 7, 11, 11.

Слайд #18
Разработанная блок-схема на основе данного алгоритма
Процедуры Python
Начало
n
d := 1
Конец
d
да
n mod d > 0
нет
d := d+1
Здесь n – натуральное число, большее 1. Его первый простой
делитель d находится перебором всех возможных делителей, начиная с 2 – наименьшего простого числа. Если само n окажется простым числом, то d будет присвоено значение n
Алгоритм нахождения первого простого делителя

Слайд #19
Процедуры Python
Вспомогательный алгоритм при решении задачи разложения натурального числа на простые множители
Начало
n
Конец
да
n mod d > 0
нет
ppd (a, p)
a := a/p
Вспомогательный алгоритм нахождения первого простого делителя для некоторого числа мы назвали ppd. Его формальными параметрами являются переменные n, d; фактическими – a, p.

Слайд #20
Схема вызова вспомогательного алгоритма
Основной алгоритм
…
Имя вспомогательного
алгоритма (список
фактических параметров)
Вспомогательный алгоритм
Формальные аргументы
Формальные аргументы
…

Слайд #21
Функции
Функция – подпрограмма, имеющая единственный результат, записываемый в ячейку памяти.
Функция начинается со служебного слова def. После этого записывается имя функции, скобки и двоеточие. Операторы, которые входят в тело функции, записывается с отступом. После оператора return записывается результат, который возвращает функции.
В языке Python есть встроенная функция max, вычисляющая максимальное значение.
В отличие от процедуры, функция не только выполняет какие-то команды, но возвращает результат в виде числа, символьной строки или др.
Описание функции имеет вид:
def <имя функции> ():
<операторы>
return <результат>

Слайд #22
Функции
В языке Python есть встроенная функция max, вычисляющая максимальное значение.
def max(a, b):
if a > b:
m = a
else:
m = b
return m
Результат функции можно сразу вывести на экран:
print (max(6,8))
Также мы можем присвоить результат работы функции любой глобальной переменной:
x = max(6,8)
Одна функция может вызвать другую.

Слайд #23
Функции
Запишем программу нахождения максимального из четырех целых чисел, использующую функцию поиска максимального из двух чисел.
def max(a, b):
if a > b:
m = a
else:
m = b
return m
a, b, c, d = map(int,input().split())
f = max(max(a, b),max(c, d))
print(‘f = ’,f)
Измените программу так, чтобы с ее помощью можно было найти:
а) максимальное из чисел a, b, c;
б) максимальное из чисел b, c, d;
в) минимальное из четырех чисел;
г) разность максимального и минимального из четырех чисел.
a, b, c, d = map(int,input().split()) – ввод строковых величин, разделенных пробелом

Слайд #24
Напишем программу
Измените программу так, чтобы с ее помощью можно было найти:
а) максимальное из чисел a, b, c
def max(a, b):
if a > b:
m = a
else:
m = b
return m
a, b, c = map(int,input().split())
f = max(max(a, b),c)
print('f = ',f)
б) максимальное из чисел b, c, d;
def max(a, b):
if a > b:
m = a
else:
m = b
return m
b, c, d = map(int,input().split())
f = max(max(b,c),d)
print('f = ',f)

Слайд #25
Напишем программу
в) минимальное из четырех чисел;
def min(a, b):
if a < b:
m = a
else:
m = b
return m
a, b, c, d = map(int,input().split())
f = min(min(a,b),min(c,d))
print('f = ',f)

Слайд #26
Напишем программу
г) разность максимального и минимального из четырех чисел.
def max(a, b):
if a > b:
m = a
else:
m = b
return m
def min(a, b):
if a < b:
m = a
else:
m = b
return m
a, b, c, d = map(int,input().split())
f = max(max(a, b),max(c, d))- min(min(a,b),min(c,d))
print('f = ',f)

Слайд #27
Напишем программу
Доп. главы к учебнику, параграф 2.1, вопросы и задания № 1 – 7 к параграфу, № 87 РТ (часть 2)

Слайд #28
Опорный конспект
Запись вспомогательных алгоритмов в языках программирования осуществляется с помощью подпрограмм.
Подпрограмма, имеющая произвольное количество входных и выходных данных.
Подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.
Процедура
Функция
Подпрограмма
