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

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

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

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

Добавлен: 10.01.2024

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

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

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

СОДЕРЖАНИЕ

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

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

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

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

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

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

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

Задачи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задачи

Задачи

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

Деление

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

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

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

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

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

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

Задачи

Задачи

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

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

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

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

Задачи

Задачи

Задачи

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

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

Задачи

Задачи

Задачи

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

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

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

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

Примеры

Примеры

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

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

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

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

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

Задачи

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

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

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

Примеры

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

Ещё пример

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

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

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

Задачи

Задачи

Задачи

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

Задачи

Задачи

Задачи

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

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

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

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

Виды ошибок

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

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

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

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

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

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

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

Задачи

Задачи

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

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

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

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

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

В стиле Python

Задачи

Задачи

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

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

Задачи

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

Задачи

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

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

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

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

Задачи

Задачи

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

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

Что неверно?

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

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

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

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

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

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

Задачи

Задачи

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

Задачи-2

Задачи-2

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

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

Задачи

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

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

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

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

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

Задачи

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

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

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

Задачи

Задачи

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

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

Задачи

Конец фильма

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




«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3.

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





Как поменять местами значения двух переменных a и b?


?


с = a
a = b
b = c


вспомогательная переменная


элементы массива:


с = A[i]
A[i] = A[k]
A[k] = c





Задача. Массив A содержит чётное количество элементов N. Нужно поменять местами пары соседних элементов: 0-й с 1-м, 2-й — с 3-м и т. д.


0


1


2


3


N-2


N-1


7


12


38


5





40


23


0


1


2


3


N-2


N-1


12


7


5


38





23


40





for i in range(N):
поменять местами A[i] и A[i+1]


Что плохо?


?


0


1


2


3


4


5


7


12


38


5


40


23


12


7


38


5


40


23


12


38


7


5


40


23


12


38


5


7


40


23


12


38


5


40


7


23


12


38


5


40


23


7


?


выход за границы массива





for i in range(0,N-1,2):
# переставляем A[i] и A[i+1]
с = A[i]
A[i] = A[i+1]
A[i+1] = c


A[0]A[1]
A[2]A[3]
...
A[N-2]A[N-1]


range(0,N-1,2):

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






0


1


2


N-3


N-2


N-1


7


12


5





38


40


23


0


1


2


N-3


N-2


N-1


23


40


38





5


12


7


Задача. Переставить элементы массива в обратном порядке (выполнить реверс).


A[0]A[N-1]
A[1]A[N-2]
A[i]A[N-1-i]
A[N-1]A[0]


0+N-1 = N-1
1+N-2 = N-1
i+??? = N-1
N-1+0 = N-1

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





for i in range(N):
поменять местами A[i] и A[N-1-i]


Что плохо?


?


0


1


2


3


7


12


40


23


23


12


40


7


23


40


12


7


23


12


40


7


7


12


40


23


i=0


i=1


i=2


i=3


Как исправить?


?


(N // 2):

Задачи





«A»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], поменять местами пары соседних элементов, не трогая первый и последний элементы.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 53 88 66 26 39 35 88 38 24 50
«B»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100] и выполнить циклический сдвиг влево: каждый элемент перемещается на место предыдущего, а первый – на место последнего.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 66 88 39 26 88 35 24 38 50 53

Задачи





«C»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], сделать реверс отдельно в первой и во второй половине массива.
Массив: 53 66 88 39 26 88 35 24 38 50
Результат: 26 39 88 66 53 50 38 24 35 88








Какие переменные нужны?


?


for i in range(N):
if A[i] > M:
M = A[i]
print( M )


Чего не хватает?


?



Какое начальное значение взять для M?


?


M – значение, которое заведомо меньше всех элементов массива или
M = A[0] (или любой другой элемент)


максимальный не меньше, чем A[0]





M = A[0]
for i in range(1,N):
if A[i] > M:
M = A[i]
print( M )


начинаем с A[1], так как A[0] мы уже посмотрели


Как найти минимальный?


?

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





M = A[0]
for x in A:
if x > M:
M = x
print( M )


перебрать все элементы в массиве A


for x in A:


Не нужно знать размер!


!


print( max(A) )


print( min(A) )





Задача. Найти в массиве максимальный элемент и его номер.


Какие переменные нужны?


?


M = A[0]; nMax = 0
for i in range(1,N):
if A[i] > M:
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )


nMax = 0


nMax = i


Можно ли убрать одну переменную?


?





M = A[0]; nMax = 0
for i in range(1,N):
if A[i]> M :
M = A[i]
nMax = i
print( "A[", nMax, "]=", M )


Если знаем nMax, то M=A[nMax]!


!


:


A[nMax]


)


A[nMax]

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





«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [50; 150] и находит в нём минимальный и максимальный элементы и их номера.
      «B»: Напишите программу, которая заполняет массив из 10 элементов в виде
      A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10]
      и и выводит количество элементов, имеющих максимальное значение.
      «C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 200] и находит в нём пару соседних элементов, сумма которых минимальна.

Задачи





      «D»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [–100; 100] и находит в каждой половине массива пару соседних элементов, сумма которых максимальна.

Конец фильма





ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru

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






иллюстрации художников издательства «Бином»
авторские материалы