Главная 1 четверть 2 четверть 3 четверть 4 четверть

11 А класс, углубленный уровень

ЕГЭ:   ФИПИ       Сдам ЕГЭ    Сайт К.Ю. Полякова

Дополнительный электронный учебник

Тренировочные варианты ЕГЭ от YANDEX

Видеоконсультация от разработчиков ГИА (ЕГЭ и ОГЭ)

 

Демонстрационная версия станции КЕГЭ (Программа для компьютерного формата сдачи ЕГЭ - ТРЕНАЖЕР)

 

ОЛИМПИАДЫ и КОНКУРСЫ   Участвуй и ПОБЕЖДАЙ!!!

 

10 марта - 10 апреля 2022 года

Урок цифры Квантовый мир: как устроен квантовый компьютер

 

22.03.2022, вторник

Основные понятия математической логики

ЕГЭ-15 Отрезки №№ 116, 200, 483

Самостоятельная работа №№ 112-119, 190-203, 283 - 286, 443 - 497

Домашнее задание

ЕГЭ-15 Уметь решать все задания по темам: "Множества", "Отрезки"

 

 

21.03.2022, понедельник

Основные понятия математической логики

ЕГЭ-15 Множества №№ 88, 93, 110

Самостоятельная работа №№ 88 - 104, 110, 111

Домашнее задание

ЕГЭ-15 Уметь решать все задания №№ 88 - 104, 110, 111

 

16, 17.03.2022, среда, четверг

Решение задач.

Подготовка к контрольной работе

ЕГЭ-16 

ЕГЭ-17 Файлы к заданиям

ЕГЭ-18 Файлы к заданиям

ЕГЭ-22

ЕГЭ-23 

ЕГЭ-24 Файлы к заданиям

ЕГЭ-25

 

14, 15.03.2022, понедельник, вторник

Динамическое программирование

ЕГЭ-23   Перебор вариантов, динамическое программирование

Задания

 

09, 10.03.2022, седа, четверг

Обработка целых чисел, делители числа

ЕГЭ-25

Домашнее задание

ЕГЭ-25 Уметь решать задачи на делители числа

 

02.03.2022, 03.03.2022, 05.03.2022, среда, четверг, суббота

Обработка последовательностей символов

ЕГЭ-24 Задания Файлы для обработки

 

28.02.2022, 01.03.2022, понедельник, вторник

Файлы

Учебник. Стр. 255 -259 (10 класс)

Файл – поименованная область данных на внешнем носителе.

С точки зрения программиста файлы бывают текстовые и двоичные (бинарные).

Рассмотрим работу с текстовыми файлами.

Для доступа к данным в файле, файл необходимо открыть. (Функция open).

Основные режимы работы с файлом:

"r– открыть для чтения

"w"- открыть для записи

"a" – открыть для добавления в файл

После завершения работы с данными файла, файл необходимо закрыть. (Метод close())

Для обращения к файлу создаётся файловый указатель (файловая переменная), которая позволяет указывать, к какому файлу обращаться.

Для чтения из файла используются методы:

read() – чтение всего файла в переменную, или указанного количества символов

readline() – построчное чтение из файла

readlines() – чтение содержимого файла с список строк

Имя файла – это строковая переменная.

Чтобы не указывать полный путь к файлу, файлы данных и файл программы должны находиться в одном каталоге.

Внимание!!!

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

 

Пример 1

В файле in.txt записан текст: "Привет, мир!"

Переписать текст в файл out.txt.

Создадим каталог task.

 

В каталоге task создаём файл in.txt, запишем в файле текст: "Привет, мир!" (без кавычек) и сохраним файл.

Программа

f = open("in.txt", "r")  #указателю f сопоставляем файл in.txt, открываем в режиме чтения

f1 = open("out.txt","w") #указателю f1 сопоставляем файл щге.txt, открываем в режиме записи

s = f.read()  # читаем весь файл в строковую переменную s

f1.write(s# записываем значение строковой переменной в файл out.txt

f.close() # закрываем файл in.txt

f1.close() # закрываем файл out.txt

Сохраняем программу и запускаем на выполнение.

Открываем в каталоге task файл out.txt, смотрим результат.

 

Пример 2

В файле in.txt записаны времена года в одной строке, разделённые пробелом.

Вывести в файл out.txt времена года по одному в строке.

f = open("in.txt", "r")

f1 = open("out.txt","w")

s = f.read().split() #чтение из файла в список с разделением через пробел

for x in s#вывод списка по одному элементу в строке

    f1.write(x + "\n")

f.close()

f1.close()

 

Пример 3

В файле in.txt записаны целые числа, разделённые пробелом.

Найти сумму чисел и записать результат в файл out.txt.

f = open("in.txt", "r")

f1 = open("out.txt","w")

s = f.read().split()

summa = 0

for x in s:

    summa += int(x)

f1.write("Сумма = " + str(summa)) # вывод результата, преобразованного в строку

f.close()

f1.close()

 

Пример 4

В файле in.txt записано 10 целых чисел по одному в строке.

Найти количество нечётных чисел и вывести в файл out.txt.

f = open("in.txt", "r")

f1 = open("out.txt","w")

k = 0

for i in range(10):

    x = f.readline() #чтение текущей строки

    if int(x) % 2 != 0:

        k += 1

f1.write(str(k))

f.close()

f1.close()

 

Пример 5

В файле in.txt записаны целые числа по одному в строке. Количество чисел неизвестно.

Найти сумму чисел, их количество и вывести в файл out.txt.

f = open("in.txt", "r")

f1 = open("out.txt","w")

summa = 0

k = 0

while True:

    s = f.readline()

    if not s:   #если нет строки

        break  #прервать цикл

    summa += int(s)

    k += 1

f1.write("Сумма = {} Количество чисел = {}".format(summa, k))

f.close()

f1.close()

 

Пример 6

В файле in.txt записаны целые числа по одному в строке. Количество чисел неизвестно.

Отсортировать числа по неубыванию и вывести в файл out.txt в одной строке.

f = open("in.txt", "r")

f1 = open("out.txt","w")

s = f.readlines()  # чтение данных в список строк

s = list(map(int,s)) # преобразование списка строк в список чисел

s = sorted(s)

for x in s:

    f1.write(str(x)+ " ")   #вывод отсортированных данных в файл одной строкой

f.close()

f1.close()

Практическая работа.

1. Отработка навыков работы с файлами

На примерах 1 -6

2. Самостоятельная работа.

Задачи

Самостоятельная работа

Во всех задачах входные данные хранятся в файле in.txt, выходные – в файле out.txt.

1.  6. Решить квадратное уравнение ax2 + bx + c = 0.

1.1. для одного уравнения (данные в одной строке)

1.2.для одного уравнения (данные находятся в разных строках)

1.3.для 10 уравнений (данные каждого уравнения находятся в разных строках, одного – в одной строке)

1.4.для любого количества уравнений

7.  7. В файле хранятся целые числа. Найти количество отрицательных и положительны чисел. Результат в выходном файле вывести каждый с новой строки.

8.  8. В файле хранятся строки. Найти самую длинную строку и вывести в файл количество символов в строке, номер строки и строку.

Домашнее задание

Отработать умение организовать в программе чтение данных из файла и записывать результат в файл

 

24.02.2022, четверг

Символьные строки

Функции и методы строк

Чем отличаются методы find(), rfind().

Что будет результатом методов find(), rfind(), если подстроки в строке не найдено?

Если вызвать метод find() с тремя параметрами s.find(s1, a, b), то поиск будет осуществляться в срезе s[a:b]

Метод count(). Возвращает количество вхождений подстроки в строку.

s = "abscnacat"

print(s.count("а"))

#возвращает 3

print(s.count("", 1))

#возвращает 9

Что будет результатом обработки строки?

print(s.count("g"))

Что будет результатом обработки строки?

print(("f"*20).count("fff")

Метод replace() заменяет все вхождения одной строки на другую. Формат: s.replace(old, new) — заменить в строке s все вхождения подстроки old на подстроку new.

s = "abscnacat"

s.replace("a","A")

print(s)

#результат: AbscnAcAt

Что будет результатом обработки строки?

s = "abscnAcatac"

s.replace("a","A", 2)

print(s)

Функция len() возвращает длину строки.

Функция chr() возвращает символ по коду.

Функция ord() возвращает номер символа в кодовой таблице символов.

Опишите результаты выполнения фрагмента программы:

print(len("343nrtfd"))

print(ord("A"))   #А – буква кириллицы

print(chr(1041))

Преобразование строка-число.

Задачи

1.      Вводится целое число. Найти количество цифр в числе. Число может быть как положительным, так и отрицательным.

2.      Вводится вещественное число. Найти количество цифр в числе. Число может быть как положительным, так и отрицательным.

3.      Вводится целое число. Является ли число палиндромом?

4.     Дано целое число. Сколько различных цифр в числе? (Дан текст. Сколько различных символов в тексте?)

Самостоятельная работа.

Задачи

5.      Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все буквы «б» на «а» (заглавные на заглавные, строчные на строчные).

 Пример:

Введите строку:

ааббААББссСС

Результат:

ббааББААссСС

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

 Пример:

Введите строку:

  Вася  пошел      гулять

Найдено слов: 3

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

8.      Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и инициалы.

Пример:

Введите фамилию, имя и отчество:

Иванов Петр Семёнович

П.С. Иванов

9. Ввести адрес файла и «разобрать» его на части, разделенные знаком '/'. Каждую часть вывести в отдельной строке.

 Пример:

Введите адрес файла:

C:/Фото/2013/Поход/vasya.jpg

C:

Фото

2013

Поход

vasya.jpg

10.  Напишите программу, которая заменяет во всей строке одну последовательность символов на другую.

Пример:

Введите строку:

(X > 0) and (Y < X) and (Z > Y) and (Z <> 5)

Что меняем: and

Чем заменить: &

Результат

(X > 0) & (Y < X) & (Z > Y) & (Z <> 5)

 

11. Дано десятичное целое положительное число. Найдите количество единиц и нулей в двоичной записи числа. (Для перевода десятичного числа в двоичное используйте функцию bin()).

 

12. Дано десятичное целое положительное число. Найдите количество различных цифр в шестнадцатеричной записи этого числа. Также выведите эти цифры в порядке возрастания. (Для перевода числа из десятичной записи в шестнадцатеричную используйте функцию hex())

 

Справочный материал по функциям и методам строк

Функция или метод

Назначение

S = "s\np\ta\nbbb"

Экранированные последовательности

S = r"C:\temp\new"

Неформатированные строки (подавляют экранирование)

S1 + S2

Конкатенация (сложение строк)

S1 * 3

Повторение строки

S[i]

Обращение по индексу

S[i:j:step]

Извлечение среза

len(S)

Длина строки

S.find(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или -1

S.rfind(str, [start],[end])

Поиск подстроки в строке. Возвращает номер последнего вхождения или -1

S.index(str, [start],[end])

Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError

S.rindex(str, [start],[end])

Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError

S.replace(шаблон, замена)

Замена шаблона

S.split(символ)

Разбиение строки по разделителю

S.isdigit()

Состоит ли строка из цифр

S.isalpha()

Состоит ли строка из букв

S.isalnum()

Состоит ли строка из цифр или букв

S.islower()

Состоит ли строка из символов в нижнем регистре

S.isupper()

Состоит ли строка из символов в верхнем регистре

S.isspace()

Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('\f'), "новая строка" ('\n'), "перевод каретки" ('\r'), "горизонтальная табуляция" ('\t') и "вертикальная табуляция" ('\v'))

S.istitle()

Начинаются ли слова в строке с заглавной буквы

S.upper()

Преобразование строки к верхнему регистру

S.lower()

Преобразование строки к нижнему регистру

S.startswith(str)

Начинается ли строка S с шаблона str

S.endswith(str)

Заканчивается ли строка S шаблоном str

S.join(список)

Сборка строки из списка с разделителем S

ord(символ)

Символ в его код ASCII

chr(число)

Код ASCII в символ

S.capitalize()

Переводит первый символ строки в верхний регистр, а все остальные в нижний

S.center(width, [fill])

Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)

S.count(str, [start],[end])

Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)

S.expandtabs([tabsize])

Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам

S.lstrip([chars])

Удаление пробельных символов в начале строки

S.rstrip([chars])

Удаление пробельных символов в конце строки

S.strip([chars])

Удаление пробельных символов в начале и в конце строки

S.partition(шаблон)

Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки

S.rpartition(sep)

Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку

S.swapcase()

Переводит символы нижнего регистра в верхний, а верхнего – в нижний

S.title()

Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний

S.zfill(width)

Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями

S.ljust(width, fillchar=" ")

Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar

S.rjust(width, fillchar=" ")

Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar

 

Домашнее задание. Повторить функции для работы с файлами.

 

 

 

21-22.02.2022, понедельник, вторник

Алгоритмы обработки матриц

Задача 1

Найти сумму элементов матрицы 4х5.

#Сумма элементов матрицы

a = []

n =4

m = 5

for i in range(n):

    row = input("a["+str(i)+"]>").split()

    row = list(map(int,row))

    a.append(row)

  

print()

 

for row in a:

    for x in row:

        print(x, end = " ")

    print()

 

print()

#нахождение суммы перебором элементов матрицы по значениям

s = 0

for row in a:

    for x in row:

        s += x

print("Сумма =", s)

# или так

 

#нахождение суммы перебором строк  матрицы

s = 0

for row in a:

    s += sum(row)

print(s)

 

Задача 2

Найти сумму элементов каждой строки матрицы.

# сумма элементов каждой строки матрицы

a = []

n =4

m = 5

for i in range(n):

    row = input("a["+str(i)+"]>").split()

    row = list(map(int,row))

    a.append(row)

print()

for row in a:

    for x in row:

        print(x, end = " ")

    print()

print()

 

#1  способ, суммы строк

for i in range(n):

    s = 0

    for j in range(m):

        s += a[i][j]

    print("Cумма {} строки = {}".format(i,s))

print()

 

#2 способ, суммы строк

for i in range(n):

    print("Cумма {} строки = {}".format(i,sum(a[i])))

 

Задача 3

Поменять местами две строки матрицы. Номера строк для обмена запрашиваются и вводятся с клавиатуры.

# перестановка строк

a = []

n = 6

m =9

 

for i in range(n):

    row = input("a["+str(i)+"]>").split()

    row = list(map(int,row))

    a.append(row)

print()

for row in a:

    for x in row:

        print(x, end = " ")

    print()

print()

#запрос номеров строк для перестановки

s1 = int(input("1-я строка"))

s2 = int(input("2-я строка"))

#обмен строк местами

a[s1],a[s2] = a[s2],a[s1]

#вывод изменённой матрицы

for row in a:

    for x in row:

        print(x, end = " ")

    print()

Самостоятельная работа

Задачи

Дана матрица. (Размер матрицы можно брать произвольным)

4. Переставить местами два любых столбца.

5. Найти максимальный элемент матрицы. Вывести значение максимального и его координаты (номер строки и столбца). Если максимальных элементов несколько, то выбирать можно любой.

6. Найти сумму элементов каждого столбца.

7. Найти максимальный элемент каждой строки.

8. Найти минимальный элемент каждого столбца.

9. Найти сумму элементов той строки, в которой находится минимальный элемент.

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

11. Переставить местами те строки матрицы, в которых находятся первый максимальный и последний минимальный элементы.

12. Найти строку с наибольшей суммой.

13. Найти столбец с наименьшей суммой.

14. Найти сумму той строки, в которой наибольшее количество чётных элементов.

15. Найти минимальный элемент той строки, в которой находится первый нулевой элемент матрицы при просмотре матрицы по строкам.

16. Найти количество нечётных элементов каждой строки.

17. Найти максимальный элемент матрицы среди элементов, которые в каждой строке являются последними.

18. Отсортировать каждую строку массива по возрастанию.

19. Отсортировать нечётные строки по возрастанию, чётные – по убыванию.

20. Вывести номера строк, в которых находятся нулевые элементы. Отсортировать эти строки по убыванию.

 

17.02.2022, четверг

Матрицы (Двумерные массивы)

Матрица – это двумерный массив (прямоугольная таблица из строк и столбцов).

Матрица – это массив массивов.

Двумерный массив – это массив, каждый элемент которого характеризуется двумя индексами: индексом строки и индексом столбца, на пересечении которых находится элемент массива.

Т.к. в Python массив  - это список, то двумерный массив – это список, каждый элемент которого является также списком.

Пример матрицы.

1 2 1 3

3 6 2 7

9 5 4 6

В данном случае – это матрица размером 3 х 4. Три строки, 4 столбца. Пусть это будет матрица a.

Обращение к элементам матрицы

а[2][3] – элемент на пересечении строки с индексом 2 и столбца с индексом 3. Первым всегда записывается индекс строки, затем индекс столбца. В данном примере – этот элемент равен 6.

a[1] – это строка [3 6 2 7]

Для работы с матрицами научимся объявлять, вводить и выводить её.

Объявление, ввод, вывод матрицы

Пример 1

Создадим матрицу 4х5.

#ввод матрицы

a = [[1,2,3,4,7],

       [2,3,4,5, 8],

       [3,4,5,6, 5],

       [4,5,6,7, 4]]

# или так

a = [[1,2,3,4,7], [2,3,4,5, 8], [3,4,5,6, 5],[4,5,6,7, 4]]

# вывод матрицы

print(a)

#результат

[[1, 2, 3, 4, 7], [2, 3, 4, 5, 8], [3, 4, 5, 6, 5], [4, 5, 6, 7, 4]]

# вывод матрицы

print(*a)

# результат

[1, 2, 3, 4, 7] [2, 3, 4, 5, 8] [3, 4, 5, 6, 5] [4, 5, 6, 7, 4]

# вывод матрицы перебором элементов по индексам

for i in range(4):

    for j in range(5):

        print(a[i][j], end = " ")

    print()

#результат

1 2 3 4 7

2 3 4 5 8

3 4 5 6 5

4 5 6 7 4

# вывод матрицы перебором элементов по значениям

for row in a:

    for x in row:

        print(x, end = " ")

    print()

#результат

1 2 3 4 7

2 3 4 5 8

3 4 5 6 5

4 5 6 7 4

Пример 2

Создать матрицу размером 6 x 7 и заполнить её случайными однозначными положительными числами.

#объявление и ввод матрицы

from random import *

n = 6

m = 7

a= [[0]*m for i in range(n)] #создание нулевой матрицы

for i in range(n): # заполнение матрицы случайными числами

    for j in range(m):

        a[i][j] = randint(0,9)

#вывод матрицы перебором элементов по  индексам

for i in range(n):

    for j in range(m):

        print(a[i][j], end = " ")

    print()

 

print()

#вывод матрицы перебором элементов по значениям

for row in a:

    for x in row:

        print(x, end = " ")

    print()

Пример 3

Ввод элементов матрицы по одному в строке

n = 4

m = 3

a = []

for i in range(n):

    a.append([0]*m)

for i in range(n):

    for j in range(m):

        a[i][j]=int(input())

print()

#код для вывода матрицы напишите самостоятельно

 

Пример 4

Ввод элементов матрицы построчно

a = []

n =3

m = 4

for i in range(n):

    row = input().split()

    for i in range(len(row)):

        row[i] = int(row[i])

    a.append(row)

 

print()

# запишите код вывода матрицы по индексам самостоятельно

 

# или так

a = []

n =3

m = 4

for i in range(n):
        row = input().split()
        row = list(map(int,row))
        a.append(row)
print()

# запиши код для вывода матрицы по значениям элементов

Отработать способы ввода и вывода матрицы.

Задание

Доработать программу ввода матрицы:

1.      При вводе матрицы по одному элементу в строке, должна быть подсказка, например:

Вводим матрицу по одному элементу в строке:

a[0][0]>

a[0][1]>

2.      При вводе матрицы построчно, должна появляться подсказка:

Вводим матрицу построчно:

a[0]>

a[1]>

Домашнее задание

Отработать ввод, вывод матрицы

 

14-15-16.02.2022, понедельник, вторник, соеда

Массивы

Список - это набор элементов, каждый из которых имеет свой номер.

Нумерация элементов начинается с 0.

В списке могут храниться данные разных типов.

Элементы списка заключаются в квадратные скобки и разделяются запятой.

Примеры списков

1. Список целых чисел

a = [3, 5, 1, 43, 12, 6]

2. Cписок вещественных чисел

b = [4.54, 1.4, 9.0, 23.2]

3. Список данных разных типов

с = [1, 45, 5.3, "огонь", True, "весна"]

Список характеризуется типом данных list

В Python отсутствует такая структура как массив.

Для обработки массивов используют списки.

Массив - упорядоченный набор однотипных данных, объединённых общим именем.

Упорядоченных - значит пронумерованных.

Номер элемента массива называется индексом.

Массив, каждый элемент характеризуется общим именем и одним индексом, называют линейным или одномерным.

При обращении к элементу массива указывают имя массива и в квадратных скобках индекс. Например, a[3]; a[i]

Способы ввода и вывода массива

1. Перечисление элементов массива

a = [1, 4, 5, 3, 6, 7]

print(a)     вывод массива в формате списка [1, 4, 5, 3, 6, 7]

print(*a)   вывод элементов массива в одной строке через пробел   1 4 5 3 6 7

for x in a:        # вывод массива способом перебора его элементов переменной x
        print(x, end = " ")    # 1 4 5 3 6 7

print()

for i in range(6):
         print(a[i], end = " ")   # 1 4 5 3 6 7

2. Складыванием нескольких списков

a = [1, 3, 5, 7] + [2, 4, 6]

print(*a)  Результат: 1 3 5 7 2 4 6

3. Повторение одного и того же списка несколько раз

a = [1, 4, 9]*3

print(*a)  Результат: 1 4 9 1 4 9 1 4 9

4. Использование генератора списков

a = [i for i in range(15)]

print(*a) Результат: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

5. Использование генератора случайных чисел

from random import *
a = [randint(10, 99) for i in range(15)]
print(*a)

6. Ввод элементов массива по одному (способ 1)

n = 10
a = [0]*n
for i in range(n):
            a[i] = int(input())
print(*a)

7. Ввод элементов массива по одному (способ 2)

n = 10
a = [int(input()) for i in range(n)]
print(*a)

8. Ввод элементов массива в одной строке через пробел

a = input().split() формирование строки
a = [int(x) for x in a] 
преобразование строки в целочисленный массив генератором
print(*a)

 

или

a = input().split() формирование строки
a = 
list(map(int, a)) преобразование строки в целочисленный массив с использованием функции map
print(*a)

 

или

 

a = list(map(int, input().split()))

print(*a)

 

9. Добавление и удаление элементов в массив

9.1 Добавление

#сформируем массив из 10 однозначных чисел
a = input().split()
a = list(map(int,a))
print(*a)
#добавим в массив число 
23
a.append(
23)
print(*a)

9.2 Вставка элемента массива в нужную позицию

#сформируем массив из 10 однозначных чисел
a = input().split()
a = list(map(int,a))
print(*a)
#вставим на место элемента с индексом 2 число 
23
a.
insert(2, 23)
print(*a)

9.3 Удаление элемента по индексу

#сформируем массив из 10 однозначных чисел
a = input().split()
a = list(map(int,a))
print(*a)
#удалим элемент с индексом 3
a.
pop(3)
print(*a)

9.4 Удаление элемента по значению

#сформируем массив из 10 однозначных чисел
a = input().split()
a = list(map(int,a))
print(*a)
#удалим первый элемент, значение которого равно 1. Если такого элемента в массиве нет, то возвращается исключение (сообщение об ошибке)
Как обойти ошибку?
a.
remove(1)
print(*a)

Практическая работа.

Отработка навыков ввода и вывода одномерного массива.

Задачи.

Дан массив целых чисел.

1. Найти сумму элементов массива.

2. Найти произведение элементов массива.

3. Найти количество элементов массива больших, чем первый элемент.

4. Найти количество чётных и количество нечётных элементов массива, а также количество нулевых элементов.

5. Найти количество элементов массива, кратных своим индексам и вывести индексы таких элементов.

6. Найти количество и сумму элементов массива, кратных 3, но не оканчивающихся на 6.

7. Найти количество соседних пар элементов массива, разность между которыми равна 1 по модулю.

8. Вывести индексы тех элементов массива, которые меньше своих индексов.

8. Вывести индексы элементов массива, если индекс меньше на 1 по модулю, чем сам элемент массива.

9. Найти сумму элементов массива, которые оканчиваются на 7 или 5.

10. Найти количество элементов массива, являющихся двузначными числами.

11. Найти количество трёхзначных элементов массива, являющихся перевёртышами.

12. Уменьшить каждый элемент массива на целую часть среднего арифметического первого и последнего элемента массива.

13. В массиве хранится температура каждого из 31 дня января. Известно, что температура в январе менялась от -24 до +2 градусов. Найти  количество дней, в которые была оттепель и среднюю температуру этих дней с точностью до сотых. (Оттепель: температура выше 0)  Температуру каждого дня сгенерировать случайными числами.

14. Найти первый элемент массива, который равен или вывести сообщение, что такого элемента в массиве нет (вывести NO)

15. Добавить элемент в массив, если такого элемента нет в массиве.

16. Удалить третий и седьмой элемент массива.

17. Удалить первый элемент массива с заданным значением.

18. Удалить все элементы массива с заданным значением.

19. Вставить элемент массива в нужную позицию.

20. Найти количество элементов массива восьмеричная запись которых оканчивается на чётную цифру.

21. Найти количество пар элементов массива, сумма которых является нечётным числом.

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

23. Список задач

Домашнее задание

Уметь решать все задачи из списка классных задач и Задачи типа С5

 

07-08-09.02.2022, понедельник, вторник, среда

Рекурсия

Определение рекурсии.

Рекурсия - способ определения множества объектов через само это множество.

Пример 1. 1 - натуральное число, если n - натуральное число, то n + 1 - тоже натуральное число.

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

Для написания рекурсивной функции необходимо:

 1. Выяснить условие остановки вызова функции.

2. Рекуррентное соотношение (как очередное получить через предыдущие).

Пример 2. Написать рекурсивную функцию для вычисления факториала числа n. n - натуральное число

1. Условия остановки вызова функции: n == 0. Возврат значения: 1

2. Рекуррентное соотношение. (n - 1)! * n  (n! = 1*2*3* ... * (n - 1) * n)

рекурсивная процедура

def fact(n):
        if n == 1:
            return 1
        else:
            return n*fact(n - 1)
#основная программа
n = int(input())
print(fact(n))

 

Пример 3.

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

F(1) = 1                            Условие выхода из рекурсии

F(n) = F(n–1) * (n + 1)при n > 1  Рекуррентная формула

Чему равно значение функции F(5)? В ответе запишите только целое число.

Выполнить трассировкой алгоритма и написать рекурсивную процедуру.   

#рекурсивная процедура

def f(n):
        if n == 1:
                return 1
        else:
                return f(n - 1)*(n + 1)
#основная программа
n = int(input())
print(f(n))

 

Пример 4.

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

F(0) = 1, F(1) = 1

F(n) = F(n–1) + 2*F(n-2), при n > 1

Чему равно значение функции F(6)? В ответе запишите только целое число.

Выполнить трассировкой алгоритма и написать рекурсивную процедуру.

#рекурсивная процедура

def f(n):
        if n == 0 or n == 1:
                    return 1
        else:
                    return f(n - 1) + 2*f(n - 2)
#основная программа
n = int(input())
print(f(n))

 

Практическая работа. Разработка программ с рекурсивными алгоритмами

ЕГЭ-16 Разбор заданий №№ 1, 15, 29, 64, 65, 67, 73

Домашнее задание

Написать программы с использованием рекурсивной процедуры

ЕГЭ-16по выбору

 

 

31.01.2022-03.02.2022, понедельник - четверг

Практикум. Анализ программы с циклами и условными операторами

ЕГЭ-22 Отладка программ с циклами и условными операторами

ЕГЭ-17: №№ 1-149 Перебор последовательности чисел. Проверка делимости

Домашнее задание

ЕГЭ-22    ЕГЭ-17: №№ 1-149   Уметь решать все задания

 

26/27.01.2021, среда, четверг

Практикум. Циклические алгоритмы

ЕГЭ-6 Исполнение циклических алгоритмов

Домашнее задание

ЕГЭ-6. Уметь решать все задания

 

24/25.01.2022, понедельник, вторник

Повторение. Язык программирования Python

Программирование циклических вычислительных процессов

Задачи

  1. Вывести на экран числа 1,3,5,7,…31

  2. Вывести на экран числа 2,4,6,8,…32

  3. Вывести на экран числа 40, 39, 38, … 1

  4. Вывести на экран числа 100, 90, 80, … 10

  5. Найти сумму чисел от 1 до 30

  6. Найти произведение чисел от 1 до 33

  7. Найти сумму модулей чисел от -5 до 5

  8. Получить кубы чисел второго десятка натуральных чисел, результаты вывести в одной строке через знак подчёркивания.

  9. Получить таблицу значений функции y = 5x2 - x3 +3 на отрезке [-5; 3] c шагом 0.5.

  10. Вычислить сумму чисел x1 + x2 + x3 + ... + xn

  11. Составить таблицу перевода байтов в биты на отрезке [1;20]. Формат вывода: 1 байт = 8 бит

  12. Получить таблицу умножения на заданное число и вывести ее в перевёрнутой форме. Формат первой строки для таблицы на 6:  10 * 6 = 60

  13. Дано натуральное число не превышающее 9. Вывести первые 10 степеней данного числа. Формат вывода для числа 3: 3 ** 1 = 3

  14. Получить последовательность первых десяти чётных положительных чисел, начиная с некоторого числа n. Значение может быть как чётным, так и нечётным.

  15. Найти сумму чётных чисел на отрезке [a,b]. Значения а и могут быть как чётными, так и нечётными.

  16. Выводить на экран случайные числа [0,10] до тех пор, пока не будет получено 5

  17. Выводить на экран случайные числа [0,10] до тех пор, пока их сумма не превысит 50

  18. Выводить на экран случайные числа [0,10] до тех пор, пока их сумма не превысит 50 или их количество не превысит 10

  19. Выводить на экран случайные числа [0,10] до тех пор, пока количество нулей не превысит 3 или количество всех — 30

  20. Выводить случайные числа, пока сумма четных не окажется равной сумме нечетных или количество не превысит 15

  21. Сформировать 25 случайных трёхзначных чисел. Сколько из данных чисел являются такими, что их цифры являются числами Пифагора?

  22. Сфрмировать 10 случайных трёхзначных чисел  получить из каждого числа двузначное вычёркиванием средней цифры. Формат вывода: Трёхзначное число 925 Двузначное число 95.

  23. Дано целое число N и набор из N ненулевых целых чисел. Найти сумму и количество чисел, не кратных 5.

  24. Дано целое число N и набор из N ненулевых целых чисел. Сравнить количество отрицательных и положительных чисел.

  25. Даны целые числа K, N и набор из N целых чисел. Если в наборе присутствует число, меньшее K, то вывести True; в противном случае вывести False. 

  26. Дан набор ненулевых целых чисел, признак его завершения — число 0. Вывести количество чисел в наборе. 

  27.  Дан набор ненулевых целых чисел. признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0. 

  28.  Дано целое число K и набор ненулевых целых чисел, признак его завершения — число 0. Вывести количество чисел в наборе, меньших K. 

  29.  Дано целое число K и набор ненулевых целых чисел, признак его завершения — число 0. Вывести номер первого числа в наборе, большего K. Если таких чисел в наборе нет, то вывести 0. 

  30.  Дано целое число K и набор ненулевых целых чисел, признак его завершения — число 0. Вывести номер последнего числа в наборе, меньшего K. Если таких чисел в наборе нет, то вывести 0. 

  31.  Дано целое число K и набор ненулевых целых чисел, признак его завершения — число 0. Вывести номер первого числа в наборе, меньшего K. Если таких чисел в наборе нет, то вывести 0.

  32. Вывести все палиндромы трёхзначных чисел и их количество.

  33. Вывести все двузначные числа, у которых цифра десятков не больше цифры единиц.

  34. С клавиатуры вводится целых трёхзначных чисел. Найти количество чисел, которые оканчиваются на 3, но перед этой цифрой нет цифры 7.

  35.  С клавиатуры вводится целых трёхзначных чисел. Найти количество чисел у которых нет повторяющихся цифр.

  36.  С клавиатуры вводится целых трёхзначных чисел. Найти количество чисел у которых цифры от старшей к младшей возрастают.

  37. С клавиатуры вводится целых трёхзначных чисел. Найти количество чисел у которых цифры от старшей к младшей не возрастают.

  38. С клавиатуры вводится целых трёхзначных чисел. Найти количество чисел у которых ровно 2 одинаковые цифры.

  39. Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые меньше своего левого соседа, и количество K таких чисел. 

  40. Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые больше своего правого соседа, и количество K таких чисел. 

  41. Дано целое число N и набор из N вещественных чисел. Проверить, образует ли данный набор возрастающую последовательность. Если образует, то вывести True, если нет — вывести False. 

  42. Дано целое число N и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность. 

  43. Дано целое число N и набор из N целых чисел, содержащий  ровно два нуля. Вывести сумму чисел из данного набора, расположенных между нулями (если нули идут подряд, то вывести 0). 

  44. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между последними двумя нулями (если последние нули идут подряд, то вывести 0).

  45. Дано целое число N и набор из N целых чисел, содержащий по крайней мере два нуля. Вывести сумму чисел из данного набора, расположенных между первыми двумя нулями (если первые нули идут подряд, то вывести 0).

  46. Проверить, является ли число а степенью числа b.

  47. Перевести число из системы счисления с основанием q в систему счисления с основанием 10.  a) q = 2..9; б) q = 2..16

  48. 100 абитуриентов сдавали по три экзамена. Максимальный балл за каждый экзамен - 10 баллов. Найти максимальное и минимальное количество баллов, которые получили абитуриенты за три экзамена.

Домашнее задание

По выбору. По одной задаче из каждого раздела

 

19/20.01.2022, среда, четверг

Повторение. Язык программирования Python

Практическая работа

Задачи. Решение оформить через def

Задача 2. С клавиатуры вводится n целых чисел.

Найти сумму  чётных и произведение нечётных чисел. Число 0 отнести к чётным числам.

Задача 3. С клавиатуры вводится n целых чисел по одному.

Найти количество отрицательных, положительных и равных нулю чисел.

Задача 4.  Выполнить табулирование функции y = 3x2 - 2x +1 на [- 5; 5] с шагом 0.5.

Задача 5. Получить таблицу умножения на заданное число. При выводе результата использовать форматный вывод.

Задача 6. Вычислить n! (n! = 1*2* ... *n).

Задача 7. Найти количество цифр натурального числа.

Задача 8. Найти количество чётных, нечётных и равных нулю цифр натурального числа.

Задача 9. Найти НОД двух целых чисел по алгоритму Евклида.

Задача 10. Вычислить 1 + 1/2 + 1/4 + ... + 1/2n

Задача 11. На вход программы поступает последовательность натуральных чисел по одному.

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

Если последовательность не возрастает, то вывести "NO"

Задача 12. Напишите программу, которая в последовательности натуральных чисел определяет максимальное число, оканчивающееся на 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 3. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – максимальное число, оканчивающееся на 3. 
Задача 13. Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 6 и оканчивающихся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество чисел, кратных 6 и оканчивающихся на 4.
Задача 14Напишите программу, которая в последовательности целых чисел определяет количество двузначных чисел, кратных 8. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество двузначных чисел, кратных 8.
Задача 15. Напишите программу, которая в последовательности целых чисел определяет количество чисел, кратных 5 или 9. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести одно число: количество чисел, кратных 5 или 9.
Пример работы программы:
Задача 16. Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, оканчивающееся на 4. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, оканчивающееся на 4. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести одно число – минимальное число, оканчивающееся на 4. Пример работы программы:

 

5. Программирование циклических вычислительных процессов

Цикл for

Функция range(n1[[,n2],h])

Пример 1.

 for x in range(5):

            print(x, end = " ")

Результат:  0 1 2 3 4

 

Пример 2.

 for x in range(1, 5):

            print(x, end = " ")

Результат:  1 2 3 4

 

Пример 3.

 for x in range(0, 5, 2):

            print(x, end = " ")

Результат:  0 2 4

 

Пример 4.

 for x in range(5, 0, -1):

            print(x, end = " ")

Результат:  5 4 3 2 1

Пример 5.

Найти сумму чётных чисел первой сотни.

 

s = 0

for x in range(2, 101,2):

            s += x

print(s)

 

Пример 6.

Вывести квадраты натуральных чисел второго десятка в обратном порядке.

 

for x in range(20,10,-1):

        print(x**2, end = " ")

 

4. Программирование циклических вычислительных процессов

Цикл while

while <логическое выражение>:

            <тело цикла>

 

Цикл while c постусловием

while True:

            <тело цикла>

            if <логическое выражение>:

                        break

Практическая работа.

Задача 1

Найти квадраты натуральных чисел второго десятка.

Результат вывести в одной строке.

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

for x in range(11,21):

        print(x**2, end = " ")

 

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

x = 11

while x <= 20:

        print(x  **  2, end = " ")

        x += 1

 

цикл с постусловием

x = 11

while True:

        print(x ** 2, end = " ")

        x += 1

        if x == 21: break

 

Примечание.

print("{:2d} ^ 2 = {:3d}".format(x, x ** 2))  #форматный вывод, квадраты чисел выводятся по одному в строке с пояснением, например: 11 ^ 2 = 121

 

Домашнее задание

Уметь решать все задачи

 

18.01.2022, вторник

Зачёт. Программирование линейных и разветвляющихся алгоритмов

Домашнее задание

Повторить программирование циклических алгоритмов

 

17.01.2022, понедельник

Повторение. Программирование базовых алгоритмов на языке программирования Python

Ввод данных. Функция input().

    * Для ввода данных можно использовать присваивание.

    * Функция input() всегда вводит строку.

    input() ввод данных. Формат: <переменная> = input(<строка>)

    Примеры.

    1. >>>a = input("Введите значение a >") ввод строки

        >>>a   

        вывод введённой строки

    2. >>>b = input()   ввод строки

        >>>b*3   

        вывод сообщения об ошибке. Почему?

    3. >>>b = input()   ввод строки

       >>> b = int(input())  преобразование строки в число

        >>>b*3      

        вывод произведения введённого значения на 3

    4. >>>a, b = input().split() ввод значений двух строк через пробел

        >>>a

        вывод значения строки а

        >>>b

       вывод значения строки b

    5. >>>a, b = input().split() ввод значений двух строк через пробел

        >>>a =int(a); b = int(b)  преобразование введённых значений строк к целым числам

        >>>a*b

        вывод произведения чисел

    6. >>>a, b = map(int, input().split()) ввод значений двух целочисленных переменных через пробел

        >>>a*b

        вывод произведения значений и b

Практическая работа

Задачи. Решение всех задач оформить как функцию пользователя

Пример. Вычислить сумму двух чисел и разность найденной суммы с числом 13.

def summa(a1, b1, c1 = 13):

        s1 = a1 + b1

        r = s1 - c1

        return s1, r

a, b = map(int, input().split())

r1, r2 = summa(a, b)

print(r1, r2)

 

1. Даны переменные ab, cЗначение а заметить значением c, значение b заменить значением a, значение заменить значением b.

2. Даны координаты двух точек плоскости. Найти расстояние межу точками.

3. Даны три стороны треугольника. Найти периметр и площадь треугольника.

4. Дано два трёхзначных числа. Найти сумму цифр старших разрядов и произведение цифр младших разрядов.

6. Дано трёхзначное число.

a) Найти цифры числа. Вывести цифры с пояснениями. Например: число 349. Результат: s = 3 d = 4 e = 9)

б) Поменять местами крайние цифры.

в) Получить перевёртыш числа.

г) Получить новое число, соединив результаты квадратов цифр исходного числа.

    (Например. Дано: 465. Результат: 163625)

д) Удалить среднюю цифру числа.

7. Получить случайное четырёхзначное число. В первой строке вывести полученное число.

а) Найти сумму цифр числа.

б) Переставить местами первую и последнюю пары цифр числа. Например, для числа 3645 результатом будет 4536.

в) Поменять местами первую и последнюю цифры числа, средние оставить без изменений. Например, для числа 3547 результатом будет 7543.

г) Получить перевёртыш числа. Для числа 2941 результатом будет число 1492

8. Вычислите значение функции F(x,y) = -3y3 + sin(2x/6) с точностью до 2 знаков после запятой. x, y - вещественные числа.

9. Дано два целых трёхзначных числа. Поменять местами соответственные последние цифры чисел. Например, для чисел 456 и 304 результатом будут числа 454 и 306.

10. Дан квадрат со стороной a. Найти радиус равновеликого ему круга. (Равновеликие фигуры имеют одинаковые площади)

11. Дано трехзначное число из отрезка [-555; -333]. Найти сумму цифр числа.

В трёхзначном числе :

12найти сумму квадратов цифр числа;

13найти сумму цифр десятков и единиц, а также куб цифры сотен;

14получить шестизначное число, повторив каждую цифру исходного числа дважды; (Дано: 345. Результат: 334455)

15. поменять местами цифры сотен и единиц;

16. вычеркнуть из числа цифру десятков; (Дано: 386. Результат: 36)

17. вычеркнуть из числа цифру сотен; (Дано: 123. Результат: 23)

18. вычеркнуть из числа цифру единиц; (Дано: 835. Результат: 83)

19В четырёхзначном числе вычеркнуть цифры сотен и единиц. (Дано: 4863. Результат: 46)

 Ветвления

Полная форма ветвления

if <логич. выражение>:

            <значение если истина>

else:

            <значение если ложь>

 

Неполная форма

if <логич. выражение>:

            <значение если истина>

 

Каскадное ветвление

if <логич. выражение 1>:

    <значение если истинно логич. выражение 1>

elif  <логич. выражение 2>:

    <значение если истинно логич. выражение 2>

    . . .

elif  <логич. выражение n>:

    <значение если истинно логич. выражение n>

else:

    <значение если не выполнилось ни одно из логических выражений 1 .. n>

 

Другие форматы

Задача. Получить квадрат числа, если оно чётное, иначе - получить куб числа.

 

a = int(input())

пример 1

print(a**2) if a % 2 == 0 else print(a**3)

 

пример 2

if a % 2 == 0: print(a**2)

else: print(a**3)

 

Знаки отношений: >, <, >=, <=, ==, !=

Логические операции: not, and, or

Задачи.

1. Дано три целых числа. Сколько из них являются чётными числами?

2. Даны два целых числа. Одно число вводится с клавиатуры, другое - случайное. Сравнить числа.

3. Найти большее из трёх различных чисел.

4. В трёхзначном числе поменять местами цифры десятков и сотен, если цифра десятков - чётное число, в противном случае поменять местами цифры сотен и единиц.

5. Дано четырёхзначное число. Найти количество нечётных цифр в нём.

6. Разработать программы для решения уравнений: a) ax + b =0; б) ax2 + bx + c = 0, a<>0.

7. Дано два различных целых числа. Большее из них увеличить на 1, меньшее - уменьшить на 1.

8. Дано число. Принадлежит ли оно [a;b]?

9. По номеру дня недели вывести название дня. Если такого дня не обнаружено, вывести NO.

10. По названию месяца вывести название времени года.

11. В строке через пробел вводятся координаты точки плоскости.

      Вывести сообщение о расположении точки относительно прямой y = 3x -3: выше, ниже, на прямой.

12.Даны 3 вещественных числа. Существует ли треугольник со сторонами a, b, c?

13Дано двузначное натуральное число. Верно ли, что квадрат суммы его цифр больше самого числа? Вывести YES или NO.

14. Даны координаты центов и радиусы двух окружностей. Пересекаются ли они? Пересекающимися будем называть окружности, имеющие хотя бы одну общую точку.

15. Дано трёхзначное натуральное число. Верно ли, что удалив цифру десятков, можно получить число, делящееся на 3?

16. Дана дата в виде: день, месяц. Вывести дату следующего дня. Считать, что год не високосный.

Задачи

№№ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 24, 25, 26, 27, 28, 29, 30

                        31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43

Домашнее задание

Уметь решать все задачи с описанием функцией def

 

 

12, 13.01.2022, среда, четверг

Выполнение алгоритма для исполнителя

Практическая работа. 

ЕГЭ-12  Задания  №№ 275 - 294

Домашнее задание

Задания по выбору, не менее 6

 

10,11.01.2022, понедельник, вторник

Нормальные алгорифмы Маркова (НАМ)

НАМ не связан ни с какими аппаратными ресурсами - чистый алгоритм.

НАМ преобразует в некотором алфавите одну цепочку символов в другую при помощи системы подстановок.

Формат подстановки:   слово-образец ® слово-замена

Слово-образец и слово-замена могут быть пустыми.

Команда остановки алгоритма: .

Просмотр подстановок в алгоритме всегда начинается с первой подстановки.

Задачи.

1. Дана строка из 1 и 2. Удалить все 2.

2. В строке из цифр 3, 4, 5, 6 удалить первую цифру. В числе нет повторяющихся цифр.

3. Правило жи, ши. Исправить ошибки в словах.

4. Строку abbcabbca преобразовать в строку adddabba. Не использовать замену всей строки целиком на новую.

5. В унарной системе счисления проверить, делится ли число на 3.

6. В унарной системе счисления проверить, делится ли число на 2 и на 3.

7. В унарной системе счисления проверить, делится ли число на 5.

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

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

10. В строке 101010101010 заменить 0 на 1, а 1 на 0.

11. Целое число n записано на ленте в унарной системе счисления (как последовательность из n меток). Напишите программу для машины Поста, которая вычисляет функцию F(n) = 1, n - чётное, F(n) = 0, n - нечётное и таким образом доказывает разрешимость этой задачи.

12. Единицы вперед. Например: 1001 > 1100

13. 10101 > 00111 для любого количества 0 и 1, идущих в любом порядке.

14. Увеличить число в унарной системе счисления на 1

15. Уменьшить число в унарной системе счисления на 1

16. Дано слово. Каждую согласную заменить на следующую за ней гласную. Затем получить из слова число, образованное порядковым номером гласной, если все гласные выписать подряд и пронумеровать, начиная с 0.

17. Строку aaa преобразовать в строку abbaabbaabba. Количество символов в исходной строке не ограничено.

18. В строке aaaaaaabbbbbbccccccccddddddddeeeeeeeeffffffff поставить запятую после одинаковой группы символов. В конце строки запятой нет.

29. Дано число в троичной системе счисления, в котором цифры записаны через пробел. Удалить все пробелы.

20*. Увеличить число в десятеричной системе счисления на 1

Домашнее задание.

§31, стр. 13-16. Уметь решать все задачи

 

20-21.12.2021, понедельник, вторник

Универсальные исполнители. Машина Поста

Практическая работа. Построение машины Тьюринга.

Задачи.

Смотреть видеоматериал

Практическая работа

Задачи

1. Каретка над любой пустой ячейкой слева.

На ленте метки через одну ячейку. Стереть все метки.

2. Каретка над любой пустой ячейкой слева.

На ленте непрерывная строка меток. Стереть все метки.

3. Каретка над любой пустой ячейкой справа.

Увеличить число на 1. Количество меток - количество единиц в числе.

4. Каретка над любой пустой ячейкой справа.

Уменьшить число на 2. Количество меток - количество единиц в числе.

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

6. На ленте расставлены метки, между которыми могут быть пропуски длиной в одну ячейку. Заполнить все пропуски метками. Каретка стоит над самой левой меткой.

7. Каретка над любой пустой ячейкой слева.

Найти сумму двух чисел. Число - это непрерывное количество меток на ленте. Числа разделены одним пробелом.

8. Каретка над любой пустой ячейкой слева.

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

9. Умножить число на 2.

10. Сложить три числа

Домашнее задание

Уметь решать все задачи

 

16.12.2021, четверг

Сайтостроение. Защита проектов

 

14, 15.12.2021, вторник, среда

Универсальные исполнители. Машина Тьюринга

Тренажёры универсальных исполнителей СКАЧАТЬ

Практическая работа. Построение машины Тьюринга.

Задачи.

Автомат обозревает первую слева цифру числа или первый слева символ строки.

1. Дана строка из 0, 1. Заменить все 0 на 1 и наоборот.

2. Дана строка из 0, 1. Удалить незначащие нули.

3. Дана строка из 0, 1. Преобразовать число в нечётное.

4. Дана строка из 0, 1. Преобразовать число в чётное.

5. Дана строка из символов a,b,c,d. Удалить первый и последний символ строки.

6. Дана строка из символов a,b,c,d. Удалить три последних и первый символ строки.

7. Дано двоичное число. Увеличить число на 1.

8. Дано троичное число. Увеличить число на 1.

9. Зацикливание. Дана последовательность из 0 и 1. Построить непрерывную замену 0 на 1 и наоборот.

10. Увеличить десятеричное число на 1.

Домашнее задание.

Задачи.

Автомат обозревает первую справа цифру числа или первый справа символ строки.

1. Дана строка из 0, 1. Заменить все 0 на 1 и наоборот.

2. Дана строка из 0, 1. Удалить незначащие нули.

3. Дана строка из 0, 1. Преобразовать число в нечётное.

4. Дана строка из 0, 1. Преобразовать число в чётное.

5. Дана строка из символов a,b,c,d. Удалить первый и последний символ строки.

6. Дана строка из символов a,b,c,d. Удалить три последних и первый символ строки.

7. Дано двоичное число. Увеличить число на 1.

8. Дано троичное число. Увеличить число на 1.

9. Зацикливание. Дана последовательность из 0 и 1. Построить непрерывную замену 0 на 1 и наоборот.

10. Увеличить десятеричное число на 1.

 

13.12.2021, понедельник

Тестирование по теме: "Сайтостроение", 15 минут. Приступить к тестированию

Уточнение понятия алгоритма

Презентация Смотреть

Что такое алгоритм?

Как доказать существование алгоритма?

Что понимают под задачей неразрешимости?

Почему ранее данное определение алгоритма нельзя использовать для строгих доказательств?

Какой объект на вход получает алгоритм?

Как обрабатываются входные объекты в алгоритме?

Когда считается, что алгоритм завершен?

Приведите пример, когда алгоритм не заканчивается?

Как понимать, что  алгоритм - это программа для конкретного исполнителя?

Какие алгоритмы называют эквивалентными?

Что такое универсальный исполнитель?

Назовите элементы модели универсального исполнителя.

Как связан универсальный исполнитель с проблемой строгого определения алгоритма?

Какое определение алгоритма считают строгим и почему?

Домашнее задание

§31. Вопросы 1-6 на стр. 16