Лабораторная работа № 1. Итерационные методы
Теоретические сведения
Терминатор
Этим блоком обозначается начало и конец алгоритма. В контексте языка программирования, код между этими блоками может размещаться в процедуре, функции или методе класса.
Комментарий
Поясняет назначение или особенность реализации блока. Может содержать имя процедуры или функции реализация которой изображена блок-схемой.
sum = 0 # Начальное значение суммыВыполнение операции
Блок-операция содержит последовательность инструкций. В одном блоке может размещаться несколько инструкций.
a = x
b = y
a = x % y # % - остаток от деленияВвод, вывод данных
В начале блока помечается предназначен ли он для ввода или вывода данных. Подразумевается ввод данных с клавиатуры и вывод на экран компьютера.
st = input("Введите строку: ")
N = int(input("Введите число: "))
# или float() для вещественного числа
print(cif)Ветвление
Используется как непосредственно для ветвления, так и для изображения циклов с предусловием и постусловием. Отличить эти два применения можно по количеству стрелок, входящих в блок. Если в блок входит одна стрелка - показано ветвление, если две стрелки - цикл. Из блока всегда выходит минимум две стрелки, обозначающие альтернативные ветви алгоритма. Выходные стрелки обязательно подписываются, обозначая по какой ветви следует двигаться.
Условный оператор:
if a > b:
a = a - b
else:
a = a + bЦикл с предусловием:
while N != 0:
N = N // 2;Начало и конец цикла
Блоки означают цикл с известным количеством повторений. В открывающем блоке циклу даётся имя, обозначается имя переменной цикла, начальное и конечное значение и шаг изменения переменной цикла. В закрывающем блоке записывается имя цикла.
for i in range(0, 11):
print(i)Второй параметр функции range() указывает на значение до которого будет создаваться последовательность целых чисел.
Соединитель
Вставляется на месте разрыва алгоритма. Всегда используется в паре. Обозначение внутри блока помогает отследить связь между элементами блок-схемы.
Задания для самостоятельной работы
Пример 1. Произведение чисел
Найдите произведение целых чисел от 1 до n и выведите его на экран.
Составьте код решения из предложенных строк, перетаскивая их из левой панели в правую.
Пример 2. Объём прямоугольный параллелепипед
Опишите функцию с именем volume вычисляющую объём прямоугольного параллелепипеда по длине \(a\), ширине \(b\) и высоте \(c\).
\[ V=a\cdot b \cdot c \]
Рассчитайте объём прямоугольный параллелепипед 3 х 5 х 7 и выведите ответ на экран.
Составьте код решения из предложенных строк, перетаскивая их из левой панели в правую.
Не все из предложенных строк кода должны быть использованы в решении задачи.
Для выполнения следующих заданий откройте среду разработки IDLE. Запишите код решения для каждой задачи и сохраните его на рабочем диске.
Задание 1. Цифры числа (sam01.py)
Выведите на экран все цифры числа N. Реализуйте алгоритм решения задачи по приведённой блок-схеме.
input(), которая возвращает введённое значение в форме строки. Это значение нужно преобразовать в подходящий числовой тип.
while) или с параметром (for)?
: в Python начинается блок инструкций - он обозначается отступом. Все инструкции, входящие в блок, должны иметь одинаковый отступ. Скорее всего, среда разработки добавит отсуп после : самостоятельно.
mod - остаток от деления, div - целочисленное деление. Самостоятельно найдите, как данные операторы записываются в Python.
print().
# прочерки в коде замените на подходящий код
N = int(___)
while ____:
cif = N __ 10
print(___)
N = _____Задание 2. Поиск делителей числа (sam02.py)
Выведите на экран все делители числа N кроме единицы и самого числа N. Реализуйте алгоритм решения задачи по приведённой блок схеме.
for.
i, понадобится функция range().
if. Какая форма ветвления будет исполльзоваться - полная или сокращённая?
Задание 3. Простые числа (sam03.py)
Напишите функцию isPrime() с помощью которой можно определить, является ли число простым или составным. Реализуйте алгоритм решения задачи по приведённой блок схеме.
Используйте следующий шаблон кода:
# функция принимает один параметр с именем num
def isPrime(num):
# тело функции согласно блок-схеме
# проверка работы функции (не редактируйте это код)
res = isPrime(54) # сохраняем результат работы функции в переменной res
print(res)
print(isPrime(17))return.
Задание 4. НОД и НОК (sam04.py)
Реализуйте алгоритм Евклида для нахождения НОД двух целых чисел. Посчитайте НОК введённых чисел. Реализуйте алгоритм решения по приведённой блок-схеме.
Задание 5 (sam05.py)
Решите задачу вашего варианта.
Найти сумму чётных цифр числа. Число вводится с клавиатуры.
Число: <{362}> ++enter++
8Найти произведение чётных цифр числа. Число вводится с клавиатуры.
Число: <{362}> ++enter++
12Найти сумму нечётных цифр числа. Число вводится с клавиатуры.
Число: <{12347}> ++enter++
11Найти произведение нечётных цифр числа. Число вводится с клавиатуры.
Число: <{2347}> ++enter++
21Найти сумму чётных делителей числа. Не учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
12Найти сумму нечётных делителей числа. Учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
16Найти произведение чётных делителей числа. Не учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
48Найти сумму чётных цифр числа. Число вводится с клавиатуры.
Число: <{362}> ++enter++
8Найти произведение чётных цифр числа. Число вводится с клавиатуры.
Число: <{362}> ++enter++
12Найти сумму нечётных цифр числа. Число вводится с клавиатуры.
Число: <{12347}> ++enter++
11Найти произведение нечётных цифр числа. Число вводится с клавиатуры.
Число: <{2347}> ++enter++
21Найти сумму чётных делителей числа. Не учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
12Найти сумму нечётных делителей числа. Учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
16Найти произведение чётных делителей числа. Не учитывайте 1 и само число. Число вводится с клавиатуры.
Число: <{12}> ++enter++
48Задание 6 (sam06.py)
Решите задачу вашего варианта.
Найти натуральное число от \(n\) до \(k\), которое имеет наибольшее количество делителей.
Введите n <{10}> ++enter++
Введите k <{1000}> ++enter++
Ответ: 840Найти все натуральные совершенные числа, меньшие \(n\). Число совершенно, если оно равно сумме всех своих делителей, за исключением самого числа.
Введите n: <{1500}> ++enter++
6
28
496Дано натуральное число \(n\). Выяснить, имеются ли среди чисел \(n, n+1, ... , 2n\) числа близнецы, т.е. простые числа, разность между которыми равна 2.
Введите n: <{40}> ++enter++
41 43
59 61
71 73Дано натуральное число \(n\). Получить все числа, взаимнопростые с \(n\) и меньше его.
Введите n: <{55}> ++enter++
1
5
7
11
13
17Дано натуральное число \(n\). Получить все его простые делители.
Введите n: <{654}> ++enter++
1
2
3
109Сократить дробь \(\frac{a}{b}\) (\(a\), \(b\) - натуральные числа).
Введите числитель a: <{64}> ++enter++
Введите знаменатель b: <{184}> ++enter++
Ответ: 8 / 23Посчитать сумму цифр всех целых чисел от 1 до \(n\).
Введите n: <{149}> ++enter++
Ответ: 1275Найти натуральное число от \(n\) до \(k\), которое имеет наибольшее количество делителей.
Введите n <{10}> ++enter++
Введите k <{1000}> ++enter++
Ответ: 840Найти все натуральные совершенные числа, меньшие \(n\). Число совершенно, если оно равно сумме всех своих делителей, за исключением самого числа.
Введите n: <{1500}> ++enter++
6
28
496Дано натуральное число \(n\). Выяснить, имеются ли среди чисел \(n, n+1, ... , 2n\) числа близнецы, т.е. простые числа, разность между которыми равна 2.
Введите n: <{40}> ++enter++
41 43
59 61
71 73Дано натуральное число \(n\). Получить все числа, взаимнопростые с \(n\) и меньше его.
Введите n: <{55}> ++enter++
1
5
7
11
13
17Дано натуральное число \(n\). Получить все его простые делители.
Введите n: <{654}> ++enter++
1
2
3
109Сократить дробь \(\frac{a}{b}\) (\(a\), \(b\) - натуральные числа).
Введите числитель a: <{64}> ++enter++
Введите знаменатель b: <{184}> ++enter++
Ответ: 8 / 23Посчитать сумму цифр всех целых чисел от 1 до \(n\).
Введите n: <{149}> ++enter++
Ответ: 1275