Файл: 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов.ppt

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

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

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

Добавлен: 10.01.2024

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

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

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

СОДЕРЖАНИЕ

Что такое программирование?

Направления в программировании

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

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

Переход на новую строку

Системы программирования

Системы программирования

Задачи

Пример задачи

Зачем нужны переменные?

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

Работа с переменными

Работа с переменными

Ввод с клавиатуры

Ввод с клавиатуры

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

Ввод вещественных чисел

Программа сложения чисел

Вывод данных с текстом

Вывод данных с текстом (f-строки)

Программа сложения чисел

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

Задачи

Задачи

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

Деление

Частное и остаток

Частное и остаток

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

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

Форматный вывод

Форматный вывод

Задачи

Задачи

Форматный вывод

Форматный вывод

Научный формат чисел

Математические функции

Задачи

Задачи

Задачи

Датчик случайных чисел

Датчик случайных чисел

Задачи

Задачи

Задачи

Выбор наибольшего из двух чисел

Вариант 1. Программа

Выбор наибольшего из двух чисел-2

Вариант 2. Программа

Примеры

Примеры

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

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

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

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

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

Задачи

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

Плохое решение

Хорошее решение (операция «И»)

Примеры

Сложные условия: «ИЛИ»

Ещё пример

Сложные условия: «НЕ»

Простые и сложные условия

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

Задачи

Задачи

Задачи

Логические переменные

Задачи

Задачи

Задачи

Экспертная система

Дерево решений

Программирование экспертной системы

Заглавные и строчные буквы

Виды ошибок

Пример отладки программы

Тестирование

Отладочная печать

Отладочная печать

Отладка программы

Задачи

Задачи

Задачи

Зачем нужен цикл?

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

Ещё один вариант

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

Сколько раз выполняется цикл?

Сумма цифр числа

Сумма цифр числа

Сумма цифр числа

Сумма цифр числа

Задачи

Задачи

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

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

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

Модифицированный алгоритм Евклида

Модифицированный алгоритм

В стиле Python

Задачи

Задачи

Обработка потока данных

Обработка потока данных

Задачи

Задачи на циклы (дополнительные)

Задачи

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

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

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

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

Задачи

Задачи

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

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

Что неверно?

Перебор элементов массива

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

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

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

Ввод с клавиатуры

Ввод с клавиатуры (Python)

Задачи

Задачи

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

Задачи-2

Задачи-2

Сумма элементов массива

Сумма элементов массива (Python)

Задачи

Подсчёт элементов по условию

Подсчёт элементов по условию (Python)

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

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

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

Задачи

Перестановка элементов массива

Реверс массива

Реверс массива

Задачи

Задачи

Поиск максимального элемента (Python)

Задачи (без min и max)

Задачи

Конец фильма

Источники иллюстраций



Задачи на циклы (дополнительные)





«A»: Напишите программу, которая предлагает ввести число-пароль и не переходит к выполнению основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений».
«B»: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка.
«C»: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.

Задачи





«D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.

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





Задача. Вывести на экран степени числа 2 от 20 до 210.


k = 0
N = 1
while k <= 10 :
print(N)
N = N*2
k = k + 1


Работа с k в трёх местах!


!


k = 0


k <= 10


k = k + 1


Идея: собрать всё вместе.


N = 1
for k in range(11):
print(N)
N = N*2


k in range(11)


сделать 11 раз


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


с нуля!


не включая 11!


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





for k in range(11):
print(k)


Что выведет?


?


0
1
2

10


Начать на с 0, а с 1:


for k in range( 1 ,11):
print(k)


1


for k in [0,1,2,3,4,5,6,7,8,9,10]:
print(k)


for k in [1,2,3,4,5,6,7,8,9,10]:
print(k)


начальное значение

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





Задача. Найти сумму чисел от 1 до 1000.


S = 0
for i in range(1,1001):
S += i


Задача. Вывести квадраты чисел от 10 до 1 по убыванию.


for k in range(10,0,–1):
print(k*k)


шаг


не включая 0


for k in [10,9,8,7,6,5,4,3,2,1]:
print(k*k)

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





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


S = 0
for i in range(2,1001):
if i % 2 == 0:
S += i


Что плохо?


?


S = 0
for i in range(2,1001, 2 ):
S += i


2


шаг





С:


int S, i;
S = 0;
for (i=1; i<=1000; i++)
S += i;


Паскаль:


S:= 0;
for i=1 to 1000 do
S:= S + i;


шаг только 1 или –1 (downto)


i=i+1;


S=S+i;

Задачи





«A»: Напишите программу, которая находит количество четырёхзначных чисел, которые делятся на 7.
«B»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа.
«C»: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например,
5! = 1 • 2 • 3 • 4 • 5 = 120.

Задачи





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




§ 21. Массивы




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





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


Надо:


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


?


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





5


10


15


20


25


0


1


2


3


4


A


массив


2


15


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


A[0]


A[1]


A[2]


A[3]


A[4]


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


Нумерация с нуля!


!


Индекс элемента — это значение, которое указывает на конкретный элемент массива.





23


12


7


43


51


0


1


2


3


4


i = 1
A[2] = A[i] + 2*A[i-1] + A[2*i+1]
print( A[2]+A[4] )


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


?


A[2] = A[1] + 2*A[0] + A[3]
print( A[2]+A[4] )


101


152


A[2]


ИНДЕКС элемента массива: 2


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


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





A = [11, 22, 35, 41, 53]


11


22


35


41


53


A = [11, 22] + [35, 41] + [53]


11


11


11


11


11


A = [11]*5

Что неверно?





A = [1, 2, 3, 4, 5]
x = 1
print( A[x-8] )
A[x+4] = A[x-1] + A[2*x]


print( A[-7] )
A[5] = A[0] + A[2]


Что плохо?


?


Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.

Перебор элементов массива





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


N = 10
A = [0]*N # память уже выделена


for i in range(N):
# здесь работаем с A[i]

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





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


...


В развёрнутом виде


A[0] = 0
A[1] = 1
A[2] = 2
...
A[N-1] = N-1


0


1


2


N-1


Что произойдёт?


?


[0, 2, 3, …, N-1]


В стиле Python:


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


i


i


X = N





N





3


2


1


A[0] = N
A[1] = N-1
A[2] = N-2
...
A[N-1] = 1


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


X = X - 1


Как меняется X?


?


X = N, N-1, …, 2, 1


начальное значение


уменьшение на 1





N





3


2


1


A[i] = X


Как связаны i и X?


?


i


X


0


N


1


N-1


2


N-2


...


...


N-1


1



–1


+1


Сумма i и X не меняется!


!


i + X = N


X = N - i


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


В стиле Python:


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

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





for i in range(N):
print( A[i] )


Как вывести в строчку?


?


или так:


в столбик


Весь массив сразу:


print( A )


[1,2,3,4,5]


По одному элементу:


for x in A:
print( x )


для всех элементов в массиве A


for x in A:
print( x, end=" " )


пробел между элементами