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

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

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

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

Добавлен: 10.01.2024

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

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

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

СОДЕРЖАНИЕ

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

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

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

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

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

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

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

Задачи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Задачи

Задачи

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

Деление

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

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

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

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

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

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

Задачи

Задачи

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

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

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

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

Задачи

Задачи

Задачи

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

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

Задачи

Задачи

Задачи

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

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

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

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

Примеры

Примеры

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

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

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

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

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

Задачи

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

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

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

Примеры

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

Ещё пример

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

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

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

Задачи

Задачи

Задачи

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

Задачи

Задачи

Задачи

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

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

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

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

Виды ошибок

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

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

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

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

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

Задачи

Задачи

Задачи

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

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

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

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

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

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

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

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

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

Задачи

Задачи

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

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

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

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

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

В стиле Python

Задачи

Задачи

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

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

Задачи

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

Задачи

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

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

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

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

Задачи

Задачи

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

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

Что неверно?

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

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

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

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

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

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

Задачи

Задачи

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

Задачи-2

Задачи-2

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

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

Задачи

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

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

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

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

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

Задачи

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

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

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

Задачи

Задачи

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

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

Задачи

Конец фильма

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

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


c = 5
while c > 0:
print("Привет")
c -= 1





счётчик = 5
пока счётчик > ???
print("Привет")
счётчик = счётчик ???


Идея: запоминать, сколько шагов осталось.


0


- 1


счётчик -= 1


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


?

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





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


while условие:
...


тело цикла


Если условие никогда не станет ложно?


?


while True:
...


бесконечный цикл (зацикливание)

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





a = 4; b = 6
while a < b: a += 1


2 раза
a = 6


a = 4; b = 6
while a < b: a += b


1 раз
a = 10


a = 4; b = 6
while a > b: a += 1


0 раз
a = 4


a = 4; b = 6
while a < b: b = a - b


1 раз
b = -2


a = 4; b = 6
while a < b: a -= 1


зацикливание

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





Задача. Вычислить сумму цифр введённого числа.
123  1 + 2 + 3 = 6


Выделить последнюю цифру числа в переменной N:


d = N % 10


Отбросить последнюю цифру числа в переменной N:


N = N // 10


123  3


123  12


Добавить к переменной sum значение переменной d:


sum = sum + d


sum = 6  6 + 4 = 10
d = 4


sum += d

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





выделяем последнюю цифру числа (%)
увеличиваем сумму на значение цифры (sum+=d)
отсекаем последнюю цифру числа (//)


N


d


sum


123


0


12


3


3


1


2


5


0


1


6


начальные значения

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





начало


конец


нет


да


N != 0?


sum= 0


d = N % 10
sum += d
N = N // 10



обнулить сумму


ввод N


выполнять "пока N != 0"


вывод sum

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





N = int(input("Введите целое число"))
sum = 0
print("Сумма цифр числа", N, " равна", sum)


while N != 0:
d = N % 10
sum += d
N = N // 10


; N1= N


N1,


Что плохо?


?

Задачи





«A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько же раз какое-нибудь сообщение.
Пример:__Сколько_раз_повторить_3__Привет!__Привет!__Привет!__«B»'>Пример:
Сколько раз повторить? 3
Привет!
Привет!
Привет!
«B»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1.
Пример:
Введите число? 311
Единиц: 2


Задачи





«C»: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую цифру в его десятичной записи.
Пример:
Введите число: 311
Наибольшая цифра: 3
«D»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом.
Пример:
Введите число: 553 Введите число: 535
Ответ: да. Ответ: нет.

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





Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел.


Евклид
(365-300 до. н. э.)


НОД(a,b)= НОД(a-b, b)
= НОД(a, b-a)


Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД.


НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)


НОД (1998, 2) = НОД (1996, 2) = … = 2


Пример:


много шагов при большой разнице чисел:


= НОД (7, 7) = 7

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





a = b?


да


нет


a > b?


да


a=a-b


нет


b=b-a


начало


конец

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





while a != b:
if a > b:
a = a - b
else:
b = b - a


Где будет НОД? Как его вывести?


?


Как вывести НОД в формате НОД(14,21) = 7?


?


А без дополнительных переменных?


?


a -= b


b -= a


как заменить?

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





НОД(a,b)= НОД(a % b, b)
= НОД(a, b % a)


Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю. Тогда большее — это НОД.



НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7


Пример:

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





while a != 0 and b != 0:
if a > b:
a = a % b
else:
b = b % a


Где будет НОД? Как его вывести?


?


if a != 0:
print(a)
else:
print(b)


print( ??? )


a+b

В стиле Python





while b!=0:   a, b = b, a % b print(a)


Почему работает?


?


заменить a на b и b на (a % b)


a


b


21


14


14


7


7


0


a


b


14


21


21


14


14


7


7


0


a > b!


!





С++:


while (a!=0 && b!=0)
{
if (a > b)
a = a % b;
else
b = b % a;
}


Паскаль:


while (a<>0) and
(b<>0) do
if a>b then
a:= a mod b
else
b:= b mod a;


Задачи





«A»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида.
Пример:
Введите два числа:
21 14
НОД(21,14)=7


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


a


64168


358853


6365133


17905514


549868978


b


82678


691042


11494962


23108855


298294835


НОД(a,b)

Задачи





«C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.
Пример:
Введите два числа:
1998 2
НОД(1998,2)=2
Обычный алгоритм: 998
Модифицированный: 1

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





Задача. На вход программы поступает поток данных — последовательность целых чисел, которая заканчивается нулём. Требуется найти сумму элементов этой последовательности.


while x!=0:
# добавить x к сумме
# x = следующее число


Откуда возьмётся x в первый раз?


?

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





Sum = 0
x = int(input()) # первое число
while x!=0:
Sum += x
x = int(input()) # ввести следующее
print("Сумма ", Sum)


Как найти количество чисел?


?


Как найти сумму положительных?


?

Задачи





«A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.
«C»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.