Главная страница

Рабочая тетрадь 7. Рабочая тетрадь 7


Скачать 1.01 Mb.
НазваниеРабочая тетрадь 7
Дата02.11.2022
Размер1.01 Mb.
Формат файлаdocx
Имя файлаРабочая тетрадь 7.docx
ТипДокументы
#768123

Рабочая тетрадь № 7

Слово «Алгоритм» произошло от algorithmi – латинского написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего математика из Хорезма (город в современном Узбекистане) Мухаммеда бен Мусу, жившего в 783-850 гг.

Как правило алгоритмы разрабатываются для конкретных исполнителей с их допустимыми действиями. Множество допустимых действий исполнителя определяет систему его команд (СКИ). В алгоритме должны содержаться только те действия, которые входят в систему команд для данного исполнителя.




Основными свойствами алгоритмов выступают:

1. Массовость - применимость алгоритма к различным наборам исходных данных.

2. Дискретность - процесс решения задачи по алгоритму разбит на отдельные действия.

3. Однозначность - правила и порядок выполнения действий алгоритма имеют единственное толкование.

4. Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются.

5. Результативность - по завершении выполнения алгоритма обязательно получается конечный результат.

6. Выполнимость - результата алгоритма достигается за конечное число шагов.

В литературе и на практике наиболее распространены формы описания алгоритмов представленные ниже:

  • словесная (текст на естественном языке);

  • программная (программы на языках программирования);

  • графическая (изображения из графических символов);

  • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке);



1. Теоретический материал

Структурная (блок-, граф-) схема алгоритма – графическое представление алгоритма в виде связанных между собой с помощью линий перехода блоков – графических символов. Каждый блок соответствует одному шагу алгоритма (либо подпрограмме). Внутри блока приводится описание определенного действия.

Ключевые графические обозначения, используемые при создании блок-схем приведены в таблице:





2. Пример

Задача:









Дан алгоритм в виде блок-схемы.

Найти А, В, С, D, если изначально:

А=10, В=10, C=4, D=0.




Решение:




Результат работы алгоритма определяется с помощью трассировочной таблицы (а, б, в, г):



Ответ:




10, 10, 10, 4

Задача:




Из ряда чисел 15, 16, 17, 18 выписать значения x, удовлетворяющие условию



Решение:




Используя трассировочную таблицу, получим:



Ответ:




17, 18

Задача:




Дана блок-схема. Какое значение будет иметь N на выходе, если S=1.1?



Решение:




Для определения емся трассировочной таблицей



Ответ:




2



Задача:




Дана блок-схема. Какое значение будет иметь z на выходе, если x=6?



Решение:




Для определения результата воспользуемся трассировочной таблицей



Ответ:




2,875




3. Задания

1.

Задача:









Дан алгоритм в виде блок-схемы.

Найти А, В, С, D, если изначально:

а) А=0, В=0, C=5, D=10;

б) А=0, В=5, C=0, D=10;

в) А=10, В=20, C=6, D=4;




Решение:






Ответ:







2.

Задача:




Дана блок-схема. Какое значение будет иметь N на выходе, если S=2.09?



Решение:






Ответ:









3.

Задача:









Дана блок-схема.

Какое значение будет иметь z на выходе, если

а) x = 2,

б) х = 4?




Решение:







Ответ:









1. Теоретический материал

Машина Тьюринга – это абстрактный исполнитель, состоящий из бесконечной ленты, разделенной на ячейки, и автомата (головки), которая управляется программой. При этом ячейки могут содержать один символ из заданного алфавита A={a0, a1,…, aN}. Подразумевается, что любой алфавит включает пробельный символ (заменяется знаком подчеркивания «_»). Данный абстрактный исполнитель управляется специальной таблицей, строки которой соответствуют символам алфавита A, а столбцы – определенным состояниям автомата Q ={q0,q1,…, qM}. Перед началом работы исполнитель находится в состоянии q1, а состояние q0 – это конечное, при котором машина Тьюринга останавливается.

В каждой клетке таблицы, соответствующей некоторому символу ai и некоторому состоянию qj, находится команда, состоящая из трех частей:

  1. символ алфавита;

  2. направление перемещения головки: влево, вправо или остаться на месте;

  3. новое состояние автомата

Внешний вид интерпретатора представлен на рисунке:



Тренажер и инструкцию к программе для изучения универсального исполнителя «Машина Тьюринга» можно найти по ссылке (также лежит на сетевом диске «.\Сетевой диск\Информатика_2020\Рабочая тетрадь 7»)

http://kpolyakov.spb.ru/prog/turing.htm




2. Пример

1.

Задача:




Написать программу на машине Тьюринга, прибавляющую число 2 к введенному числу.

Решение:






2.

Задача:




Удалить из слова его второй символ, если такой есть. Алфавит: A={a, b}.

Решение:




Необходимо запомнить первый символ, стереть его на ленте, перейти направо и вместо второго символа записать первый.






3. Задания

1.

Задача:




Написать на машине Тьюринга программу, прибавляющую 5 к введенному числу.

Решение:







2.

Задача:




Если P – непустое слово, то за его первым символом вставить символ a. Алфавит: A={a, b, c}.

Решение:







3.

Задача:




Вставить в слово P символ a за первым символом c, если такое есть. Алфавит: A={a, b, c}.

Решение:










Тест 7

0.

Алгоритм это:




а) аналог, образ какого-либо объекта, процесса или явления, сохраняющий его существенные черты

б) пошаговое описание последовательности действий, которые необходимо, выполнить для решения задачи

в) описание существенных для поставленной задачи свойств и закономерностей поведения объектов, обеспечивающее её решение

г) программа, предназначенная для создания и обработки графической информации;

Ответ:







0.

Свойство алгоритма, которое обеспечивает решение целого класса задач одного типа:




а) понятность; б) определенность;

в) дискретность; г) массовость.

Ответ:







0.

Как называется конструкция блок-схемы, изображенная на рисунке?






а) вызов вспомогательного алгоритма 

б) начало-конец алгоритма

в) выполнение операций

г) ввод/вывод данных

Ответ:







0.

На рисунке представлена часть блок-схемы. Как она называется?






а) альтернатива;

б) композиция;

в) цикл с предусловием;

г) итерация?


Ответ:







0.

Определите значения переменной «x» после выполнения фрагмента алгоритма.






Ответ:







0.

Определите значение переменной «b» после выполнения фрагмента алгоритма.






Ответ:







0.

В машине Тьюринга предписание S для лентопротяжного механизма означает




а) переместить ленту вправо;

б) переместить ленту влево;

в) остановить машину

г) занести в ячейку символ

Ответ:







0.

Конечный автомат – это автомат с ….




а) конечным числом выходов

б) конечным числом состояний

в) конечным числом входов

г) конечным числом функций

Ответ:







0.

Пусть дана машина Тьюринга с внешним алфавитом ∑ = {a,b, _} и состояниями Q = {q0, q1, q2}. Программа приведена в таблице:



В какое слово программа преобразует слово abb, если головка находится над первой буквой?




а) aab б) abbb в) abba г) aabb

Ответ:







0.

Машина Тьюринга задана программой, записанной в виде таблицы:



Определите, в какое слово машина Тьюринга преобразует слово «111», если головка находится над первой (слева направо) единицей?




а) 111 б) 0

в) 001 г) машина не останавливается

Ответ:







Реализация задач на языке программирования Python

При написании коль сколько-нибудь сложных программ необходимо код программы разбивать на отдельные части. Самым мелкой частью являются функции, которые программируются автономно от всей программы, но которые связаны с помощью входных параметров, и возвращаемым результатом.




1. Теоретический материал

Сначала рассмотрим определение и использование функции в языке Python. Как мы уже отмечали, функции могут иметь параметры и возвращать значения. При этом операторы тела функции будут активированы в момент вызова функции из другой части кода. Вот пример функции:

# определение функции

def func(a, b):

c = a * b

return c

# основная часть программы

n = 5

m = 6

k = func(n, m)

print(k)

При создании функции в Python не нужно определять ни тип входных параметров, ни тип результата функции. Однако при определении функции можно указать значение аргументов по умолчанию:

# определение функции

def func(a, b = 3):

c = a * b

return c

# основная часть программы

n = 5

k = func(n)

print(k)

Функции можно вызывать из других функций, в частности рекурсивно, то есть из самой функции. Приведем пример рекурсии для вычисления факториала:

def fact(n):

ifn<= 1:

return 1

else:

return n * fact(n - 1)

 

N = int(input("Введите N > "))

NF = fact(N)

print("N! = " + NF)

С помощью конструкции кортежей можно возвращать более одного значения функции. Рассмотрим пример функции, которая возвращает одновременно минимальное и максимальное значения.

def MinMax(P):

if len(P) < 1:

return (0, 0)

Min = P[0]

Max = P[0]

for x in P:

if x < Min:

Min = x

if x > Max:

Max = x

return (Min, Max)

 

P = [-1, 10, 2, 3, -2, 5, 6]

Min, Max = MinMax(P)

print("Min = " + Min.__str__() + ", Max = " + Max.__str__())




2. Пример

Задача:




При написании программ существует возможность вызова одной функции из другой. Приведем пример реализации этой возможности. Основная ветка программы должна содержать одну инструкцию – вызов функции test(). В функции test() требуется запросить ввод целого числа. Если введенное число положительное, необходимо вызвать функцию positive(), тело которой содержит команду вывода в консоль слова "Positive". В противном случае требуется вызвать функцию negative(), которая выводит в консоль слово "Negative".

Решение (код программы):




def positive():

print("Positive")

def negative():

print("Negative")

def test(x):

if x > 0:

positive()

else:

negative()

test(-5)

Задача:




Напишите программу, в которой вызывается функция, в качестве аргументов принимающая две строки и возвращающая в программу результат их конкатенации (слияния). Выведите результат на экран.

Решение (код программы):




def sum(a, b):

return a + b

print(sum("asd", "dsa"))

Задача:




В зависимости от выбора пользователя вычислить площадь круга, прямоугольника или треугольника. Для вычисления площади каждой фигуры должна быть написана отдельная функция.

Решение (код программы):




import math

def circle(r):

return math.pi * r**2

def rectangle(a, b):

return a*b

def triangle(a, b, c):

p = (a+b+c)/2

return math.sqrt(p * (p-a) * (p-b) * (p-c))

choice = input("Круг(к), прямоугольник(п) или треугольник(т): ")

if choice == 'к':

rad = float(input("Радиус: "))

print("Площадь круга: %.2f" % circle(rad))

elif choice == 'п':

l = float(input("Длина: "))

w = float(input("Ширина: "))

print("Площадь прямоугольника: %.2f" % rectangle(l,w))

elif choice == 'т':\

AB = float(input("Первая сторона: "))

BC = float(input("Вторая сторона: "))

CA = float(input("Третья сторона: "))

print("Площадь треугольника: %.2f" % triangle(AB,BC,CA))



3. Задания

1.

Задача:




Напишите функцию, которая на вход принимает два целых числа (делимое и делитель) и возвращает целую часть от деления и остаток.

Решение (код программы):







2.

Задача:




Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения: −1, если X < 0; 0, если X = 0; 1, если X > 0.

Решение (код программы):







3.

Задача:




Напишите проверку на то, является ли строка палиндромом. Палиндром — это слово или фраза, которые одинаково читаются слева направо и справа налево.

Решение (код программы):







4.

Задача:




Сделайте так, чтобы число секунд отображалось в видедни:часы:минуты:секунды.

Решение (код программы):







5.

Задача:




Напишите функцию, которая вычисляет любое число Фибоначчи с помощью рекурсии.



Решение (код программы):








написать администратору сайта