Файл: Алгоритм и его свойства Простейшие программы Вычисления Ветвления Символьные строки Циклические алгоритмы Массивы (списки) Поиск в массиве Алгоритм и его свойства Что такое алгоритм.pptx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 248

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Алгоритм и его свойства

Простейшие программы

Вычисления

Ветвления

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

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

Массивы (списки)

Поиск в массиве

Алгоритм и его свойства

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

Свойства алгоритма

Введение в язык Python

Черепашья графика

TURTLE

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

Задания для рисования

Как организовать цикл (36 повторений)?

Координатное поле

Простейшие программы

Простейшая программа

Вывод на экран

Задания

Сложение чисел

Сумма: псевдокод

Переменные

Имена переменных

Типы переменных

Зачем нужен тип переменной?

Как записать значение в переменную?

Ввод с подсказкой

Изменение значений переменной

Вывод данных

Вывод данных через format

Сложение чисел: простое решение

Сложение чисел: полное решение

Задания

Задания

Вычисления

Арифметическое выражения

Деление

Остаток от деления

Операторы // и %

Сокращенная запись операций

Ввод двух значений в одной строке

Задания

Задания

Случайные числа

Случайные числа на компьютере

Линейный конгруэнтный генератор

Задачи

Задачи

Ветвления

Условный оператор

Условный оператор: неполная форма

Условный оператор

Знаки отношений

Вложенные условные операторы

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

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

Задачи (без функций min и max!)

Задачи

Задачи

Сложные условия

Сложные условия

Сложные условия

Задачи

Задачи

Задачи

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

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

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

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

Срезы

Срезы строк

Операции со строками

Операции со строками

Задачи

Задачи

Задачи

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

Что такое цикл?

Повторения в программе

Блок-схема цикла

Как организовать цикл?

Цикл с условием

Цикл с условием

Задачи

Задачи

Задачи

Алгоритм Евклида

Алгоритм Евклида

Задачи

Задачи

Обработка строк в цикле

Проверка символов

Задачи

Задачи

Цикл с переменной

Цикл с переменной

Цикл с переменной: другой шаг

Задачи

Задачи

Массивы (списки)

Что такое массив?

Что такое массив?

Массивы в Python: списки

Заполнение массива

Заполнение случайными числами

Вывод массива на экран

Задачи

Задачи

Перебор элементов

Что выведет программа?

Подсчёт нужных элементов

Перебор элементов

Как работает цикл?

Среднее арифметическое

Задачи

Задачи

Поиск в массиве

Поиск в массиве

Поиск в массиве

Поиск в массиве

Задачи

Задачи

Задачи

Максимальный элемент

Максимальный элемент

Задачи (без функции max)

Задачи

Конец фильма



пока ???:

если a > b:

a = a % b

иначе:

b = b % a

Какое условие?

?

a!=0 and b!=0:

Как вывести результат?

?

если a != 0:

вывести a

иначе:

вывести b

Задачи


«3»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида.

Пример:

Введите два числа:

21 14

НОД(21,14)=7

«4»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу:

a

64168

358853

6365133

17905514

549868978

b

82678

691042

11494962

23108855

298294835

НОД(a,b)

Задачи


«5»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.

Пример:

Введите два числа:

1998 2

НОД(1998,2)=2

Обычный алгоритм: 998

Модифицированный: 1

Обработка строк в цикле


Задача. Ввести строку и определить, сколько в ней цифр.

счётчик = 0

для каждого символа строки:

если символ – цифра:

счётчик += 1

s = input()

k = 0

for c in s:

if c.isdigit():

k += 1

for c in s:

для всех символов в строке

если c – это цифра

Проверка символов


if c.isalpha():

print("Буква")

if c.islower():

print("Строчная буква")

if c.isupper():

print("Заглавная буква")

if c.isdigit():

print("Цифра")

if c in ["а","б"]:

print("Это а или б")

Задачи


«3»: Ввести с клавиатуры число в двоичной системе счисления. Определить, сколько в его записи единиц и сколько нулей.

Пример:

Введите число:

1010100

Нулей: 4

Единиц: 3

«4»: Ввести с клавиатуры символьную строку. Если это правильная запись двоичного числа, вывести сообщение «Да», иначе вывести сообщение «Нет».

Пример:_Введите_число:_Введите_число:_1010100_abcd10_Да._Нет.__Задачи'>Пример:

Введите число: Введите число:

1010100 abcd10

Да. Нет.

Задачи


«5»: Ввести с клавиатуры символьную строку и составить новую строку, удалив из исходной все пробелы.

Пример:

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

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

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

Цикл с переменной


Задача. Вывести 10 раз слово «Привет!».

Можно ли сделать с циклом «пока»?

?



while :

print("Привет!")



i = 0

i < 10

i += 1

for :

print("Привет!")

i in range(10)

в диапазоне [0,10)

Цикл с переменной:

Не включая 10!

!

range(10)  0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Цикл с переменной


Задача. Вывести все степени двойки от 21 до 210.

Как сделать с циклом «пока»?

?



while :

print ( 2**k )



k = 1

k <= 10

k += 1

for :

print ( 2**k )

k in range(1,11)

в диапазоне [1,11)

Цикл с переменной:

Не включая 11!

!

range(1,11)  1, 2, 3, 4, 5, 6, 7, 8, 9, 10

возведение в степень

Цикл с переменной: другой шаг


100

81

64

49

36

25

16

9

4

1

Что получится?

?

1

9

25

49

81

for :

print ( k**2 )

k in range(1,11,2)

for :

print ( k**2 )

k in range(10,0,-1)

шаг

10,9,8,7,6,5,4,3,2,1

1,3,5,7,9

a = 1

for k in range( 3): a += 1

a = 4

a = 1

for k in range( 3,1): a += 1

a = 1

a = 1

for k in range( 1,3,-1): a += 1

a = 1

a = 1



for k in range( 3,0,-1): a += 1

a = 4

Задачи


«3»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Найдите все такие числа.

«4»: Вводится натуральное число N. Программа должна найти факториал (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например, 5! = 1 · 2 · 3 · 4 · 5 = 120.

Пример:

Введите число:

5

5!=120.

Задачи


«5»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные числа Армстронга.

Массивы (списки)

Что такое массив?


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

Надо:

Как ввести 10000 переменных?

?
  • выделять память
  • записывать данные в нужную ячейку
  • читать данные из ячейки

Что такое массив?


5

10

15

20

25

0

1

2

3

4

A

массив

2

15

НОМЕР элемента массива

(ИНДЕКС)

A[0]

A[1]

A[2]

A[3]

A[4]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 15

Массив = таблица!

!

Массивы в Python: списки


A = [1, 3, 4, 23, 5]

Что будет?

?

A = [1, 3] + [4, 23] + [5]

[1, 3, 4, 23, 5]

A = [0]*10

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Создание массива из N элементов:

N = 10

A = [0]*N

Заполнение массива


N = 10 # размер массива

A = [0]*N # выделить память

for i in range(N):

A[i] = i

В краткой форме:

N = 10 # размер массива

A = [ i for i in range(N) ]

Целыми числами (начиная с 0!):

i

i

Как заполнить, начиная с 1?

?

Как заполнить квадратами чисел?

?

Заполнение случайными числами


from random import randint

N = 10 # размер массива

A = [0]*N # выделить память

for i in range(N):

A[i] = randint(20,100)

В краткой форме:

from random import randint

N = 10

A = [ randint(20,100)

for i in range(N) ]

из библиотеки (модуля) random

взять функцию randint

Вывод массива на экран


Как список:

print ( A )

[1, 2, 3, 4, 5]

В строчку через пробел:

for i in range(N):

print ( A[i], end = " " )

1 2 3 4 5

или так:

for x in A:

print ( x, end = " " )

1 2 3 4 5

пробел после вывода очередного числа

или так:

print ( *A )

разбить список на элементы

print (1, 2, 3, 4, 5)

Задачи


«3»: Ввести два натуральных числа a и b (a < b) и заполнить массив из 10 элементов случайными числами в диапазоне от a до b.

Пример:

Введите границы диапазона:

5 10

10 9 10 6 8 5 9 6 10 9

«4»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов случайными числами в диапазоне между a и b (a может быть больше b).

Пример:

Введите границы диапазона:

10 5

10 9 10 6 8 5 9 6 10 9

Задачи


«5»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов: первая половина массива заполняется случайными числами в диапазоне между
a и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.

Пример:

Введите границы диапазона:

10 5

5 8 7 10 6 25 64 49 100 36

Создание массива:

N = 10

A = [0]*N

for i in range(N):

A[i] = int( input() )

или кратко:

A = [int(input()) 

for i in range(N)]

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

Ввод всех чисел в одной строке:

data = input() # "1 2 3 4 5"

s = data.split() # ["1","2","3","4","5"]

A = [ int(x) for x in s ]

# [1,2,3,4,5]

int(x)

или так:

A = [int(x) for x in input().split()]

Создание массива:

Обработка:

N = 5

A = [0]*N

# обработать A[0]

# обработать A[1]

# обработать A[2]

# обработать A[3]

# обработать A[4]

1) если N велико (1000, 1000000)?

2) при изменении N программа не должна меняться!

?

Обработка с переменной:

i = 0

# обработать A[i]

i += 1

# обработать A[i]

i += 1

# обработать A[i]

i += 1

# обработать A[i]

i += 1

# обработать A[i]

i += 1

Обработка в цикле:

i = 0

while i < N:

# обработать A[i]

i += 1

Цикл с переменной:

for i in range(N):

# обработать A[i]

Перебор элементов


Общая схема (можно изменять A[i]):

for i in range(N):

... # сделать что-то с A[i]

Если не нужно изменять A[i]:

for x in A:

... # сделать что-то с x

for i in range(N):

A[i] += 1

x = A[0], A[1], ..., A[N-1]

for x in A:

print ( x )

Что выведет программа?


A = [2, 3, 1, 4, 6, 5]

print( A[3] )

print( A[0]+2*A[5] )

A[1] = A[0] + A[5]

print( 3*A[1]+A[4] )

# 4

# 12

# 7

# 27

A[2] = A[1]*A[4]

print( 2*A[1]+A[2] )

# 18

# 24

for k in range(6):

A[k] += 2

print( 2*A[3]+3*A[4] )

# 36

# [4,5,3,6,8,7]

Подсчёт нужных элементов


Задача. В массиве записаны данные о росте баскетболистов. Сколько из них имеет рост больше 180 см, но меньше 190 см?

count = 0

for x in A:

if 180 < x and x < 190:

count += 1

Как решать?

?

Перебор элементов


summa = 0

for x in A:

if x % 2 == 0:

summa += x

print ( summa )

B = [x for x in A

if x % 2 == 0]

print ( sum(B) )

или так:

Задача. Найти сумму чётных элементов массива.

Как определить, что элемент чётный?

?

сумма массива B

Как работает цикл?


summa = 0

for x in A:

if x % 2 == 0:

summa += x

4

3

6

8

1