Программирование ( Python ) § 17 . Введение § 18 . Линейные программы § 19 . Ветвления § 20 . Программирование циклических алгоритмов § 21 . Массивы § 22 . Алгоритмы обработки массивов
Слайд 2
Программирование ( Python )
Слайд 3
Что такое программирование? Программирование — это создание программ для компьютеров. Этим занимаются программисты . Чем занимаются программисты: анализ задачи (выделение исходных данных, связей между ними, этапов решения задачи) системные аналитики написание документации технические писатели разработка алгоритмов алгоритмисты написание и отладка программ кодировщики тестирование программ тестировщики
Слайд 4
Направления в программировании системный программист операционные системы, утилиты, драйверы прикладной программист прикладные программы, в т.ч. для мобильных устройств веб-программист веб-сайты программист баз данных системы управления базами данных
Слайд 5
Простейшая программа # Это пустая программа Что делает эта программа ? ? комментарии после # не обрабатываются # coding: utf-8 # Это пустая программа кодировка utf-8 по умолчанию) """ Это тоже комментарий """
Слайд 6
Вывод на экран print ( " Привет! " ) оператор вывода Оператор — это команда языка программирования. print ( " Привет " , Вася ! ) Что плохо? ? print ( " Привет , Вася !" ) вся строка в кавычках
Слайд 7
Переход на новую строку print ( " Привет , Вася !" ) print ( " Привет , Петя !" ) Результат: Нужно в одной строке: Привет , Вася ! Привет , Петя ! Привет , Вася ! Привет , Петя ! Решение: print ( " Привет , Вася !", end="" ) print ( " Привет , Петя !" ) переход на новую строку автоматически end= "" после вывода данных ничего не выводить
Слайд 8
Системы программирования Системы программирования — это средства для создания новых программ. Транслятор — это программа, которая переводит тексты программ, написанных программистом, в машинные коды (команды процессора). компилятор — переводит всю программу в машинные коды, строит исполняемый файл ( .exe ) интерпретатор — сам выполняет программу по частям ( по одному оператору). program Hello ; begin write( ' Привет! ' ) end. 1010010100 privet.exe Python – интерпретатор! !
Слайд 9
Системы программирования Отладчик — это программа для поиска ошибок в других программах. пошаговый режим — выполнение программы по шагам (по одному оператору) просмотр значений переменных во время выполнения программы точки останова – операторы в программе, перед выполнением которых нужно остановиться. Среда программирования ( IDE ) : редактор текста программ транслятор отладчик
Слайд 10
Задачи « B »: Вывести на экран текст «лесенкой» Вася пошел гулять « C »: Вывести на экран рисунок из букв Ж ЖЖЖ ЖЖЖЖЖ ЖЖЖЖЖЖЖ HH HH ZZZZZ
Слайд 11
Программирование ( Python ) § 18 . Линейные программы
Слайд 12
Пример задачи Задача . Ввести два числа и вычислить их сумму. Компьютер не может исполнить псевдокод! ! # ввести два числа # вычислить их сумму # вывести сумму на экран Выполнится? ? Псевдокод – алгоритм на русском языке с элементами языка программирования.
Слайд 13
# ввести два числа # вычислить их сумму # вывести сумму на экран Зачем нужны переменные? Где запомнить? Переменная — это величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы. a b c ячейки памяти
Слайд 14
Имена переменных Идентификатор — это имя программы или переменной. a b c МОЖНО использовать латинские буквы ( A-Z , a-z) цифры знак подчеркивания _ Какие имена правильные? AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B заглавные и строчные буквы различаются Имя не может начинаться с цифры! !
Слайд 15
Работа с переменными Присваивание (запись значения) a = 5 = оператор присваивания a = 5 a = 18 Что будет храниться в a ? ? Вывод на экран print ( a ) В чём разница? ? с = 14 print (c) с = 14 print ( " с " ) 14 c a ← 5
Слайд 16
Работа с переменными Изменение значения i = i + 1 увеличить на 1 a = 4 b = 7 a = a + 1 b = b + 1 a = a + b b = b + a a = a + 2 b = b + a a b 4 7 5 8 13 21 1 5 36 i ← i + 1 Python : a , b = 4 , 7 a + = 1 b + = 1 a + = b b + = a a + = 2 b + = a
Слайд 17
Ввод с клавиатуры Цель – изменить исходные данные, не меняя программу. a = input () Программа ждет, пока пользователь введет значение и нажмет Enter . Введенное значение записывается в переменную a . ! 5
Слайд 18
Ввод с клавиатуры a = input () ввести строку с клавиатуры и связать с переменной a b = input () с = a + b print ( c ) Протокол: 21 33 2133 Почему? ? Результат функции input – строка символов! ! a = int ( input () ) b = int ( input () ) преобразовать в целое число
Слайд 19
Ввод с подсказкой a = input ( "Введите число: " ) подсказка Введите число: Qu-Qu Что не так? ? a = int ( input ( "Введите число: " ) ) преобразовать в целое число Что будет? ? ValueError: invalid literal for int() with base 10: 'Qu-Qu' Введите число: 26
Слайд 20
Ввод вещественных чисел print ( "Введите число:" ) x = float ( input ()) или так: x = float ( input ( "Введите число: " ) ) float float
Слайд 21
Программа сложения чисел ожидание: реальность: Введите два числа: 5 7 5+7=12 5 7 12 Как улучшить диалог? ? a = int ( input () ) b = int ( input () ) c = a + b print ( c ) Что плохо? ?
Слайд 22
Вывод данных с текстом 5+7=12 значение a значение с значение b текст print (a, "+" , b, "=" , c ) print (a , "+" , b , "=" , c, sep="" ) ожидание: реальность: 5+7=12 5 + 7 = 12 это пробелы не заказывали! sep= "" separator пустой
Слайд 23
Программа сложения чисел p rint ( "Введите два числа: " ) a = int ( input () ) b = int ( input () ) c = a + b print ( a, "+" , b, "=" , c, sep= "" ) Как переделать для 3-х чисел? ?
Слайд 24
Ввод двух чисел в одной строке a, b = map ( int , input (). split () ) input () ввести строку с клавиатуры 21 33 input (). split () 21 33 разделить строку на части по пробелам map ( int , input (). split () ) 21 33 целые применить эту операцию к каждой части a, b = map ( int , input (). split () )
Слайд 25
Задачи « A »: Ввести три числа, найти их сумму. Пример: Введите три числа: 4 5 7 4+5+7=16 « B »: Ввести три числа, найти их сумму и произведение. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140
Слайд 26
Задачи « C »: Ввести три числа, найти их сумму, произведение и среднее арифметическое. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140 (4+5+7) / 3 =5.33 3333
Слайд 27
Арифметические выражения Линейная запись (в одну строку): a = (c + b - 1 ) / 2 * d Операции : + – * – умножение / – деление ** – возведение в степень ( x 2 x**2 )
Слайд 28
Порядок выполнения операций a = (c + b ** 5 * 3 - 1 ) / 2 * d Приоритет ( старшинство ): скобки возведение в степень ** умножение и деление сложение и вычитание 1 2 3 4 5 6 a = (c + b * * 5 * 3 - 1 ) \ / 2 * d \ перенос на следующую строку a = (c + b * * 5 * 3 - 1 ) / 2 * d перенос внутри скобок разрешён
Слайд 29
Деление Классическое деление: a = 9 ; b = 6 x = 3 / 4 # = 0 .75 x = a / b # = 1.5 x = -3 / 4 # = - 0 .75 x = - a / b # = - 1.5 a = 9 ; b = 6 x = 3 / / 4 # = 0 x = a // b # = 1 x = -3 / / 4 # = -1 x = - a // b # = -2 Целочисленное деление ( округление «вниз»! ) :
Слайд 30
Частное и остаток // – деление нацело (остаток отбрасывается) % – остаток от деления t = 17 5 m = t // 6 0 # 2 s = t % 6 0 # 5 5 175 сек = 2 мин 55 сек Как получить 2 и 55? ?
Слайд 31
Частное и остаток n = 123 d = n // 10 # 1 2 k = n % 10 # 3 Что получится? ? При делении на 10 нацело отбрасывается последняя цифра числа. Остаток от деления на 10 – это последняя цифра числа.
Слайд 32
Операторы // и % a = 1234 d = a % 10 ; print ( d ) a = a // 10 # 123 d = a % 10 ; print ( d ) a = a // 10 # 12 d = a % 10 ; print ( d ) a = a // 10 # 1 d = a % 10 ; print ( d ) a = a // 10 # 0 4 3 2 1
Слайд 33
Сокращенная запись операций a += b # a = a + b a -= b # a = a - b a *= b # a = a * b a /= b # a = a / b a //= b # a = a // b a %= b # a = a % b a += 1 увеличение на 1
Слайд 34
Форматный вывод a = 1 ; b = 2 ; c = 3 print ( a, b, c ) 1 2 3 print ( "{}{}{}" . format (a,b,c)) 123 print ( "{}{:3}{:5}" . format (a,b,c)) 1 2 3 3 5 количество знаков на вывод числа Сколько знаков для вывода a ? ? форматная строка тут нужно что-то вывести
Слайд 35
Форматный вывод a = 1 ; b = 2 print ( "{}+{}={}" . format (a,b,c)) 1+2=3
Слайд 36
Задачи « A »: Ввести число, обозначающее количество секунд. Вывести то же самое время в минутах и секундах. Пример : Введите число секунд: 175 2 мин. 55 с. « B »: Ввести число, обозначающее количество секунд. Вывести то же самое время в часах, минутах и секундах. Пример : Введите число секунд: 8325 2 ч. 18 мин. 45 с
Слайд 37
Задачи «С»: Занятия в школе начинаются в 8-30. Урок длится 45 минут, перерывы между уроками – 10 минут. Ввести номер урока и вывести время его окончания. Пример : Введите номер урока: 6 13- 5 0
Слайд 38
print ( "x={ :10.3 f}" . format (x)) Форматный вывод x= 12.345678 print ( "x={}" . format (x)) x=12 . 3 4567 8 12 . 3 46 3 10 всего на число в дробной части print ( "x={ : 8 . 2f}" . format (x)) 12 . 3 4
Слайд 39
Форматный вывод 12 . 3 4 12 . 3 print ( "x={ : 2 . 2f}" . format (x)) print ( "x={ :0.1 f}" . format (x)) минимально возможное 12 . 3 4 print ( "x={ :. 2f}" . format (x))
Слайд 40
Научный формат чисел x= 123456789 print ( "x={ : e}" . format (x)) 1 . 23 4568 e+008 1,23 4568 10 8 x= 0.0000 123456789 print ( "x={ : e}" . format (x)) 1 . 23 4568 e-005 1,23 4568 10 –5
Слайд 41
Операции с вещественными числами x= 1 . 6 print ( int ( x )) int – целая часть числа 1 x= -1. 2 print ( round ( x )) - 1 round – ближайшее целое число
Слайд 42
Математические функции import math # квадратный корень print ( math. sqrt ( 25 ) ) r = 50 # радиус окружности print ( 2 *math. pi *r ) print ( math. pi *r** 2 ) загрузить модуль math = подключить математические функции Что считаем? ? число
Слайд 43
Операции с вещественными числами Большинство вещественных чисел хранятся в памяти компьютера с ошибкой! ! 1 /3 = 0,33333… бесконечно много знаков x = 1 / 2 y = 1 / 3 z = 5 / 6 # 5/6=1/2+1/3 print ( x +y-z) -1.110223e-016
Слайд 44
Задачи « A »: Ввести число, обозначающее размер одной фотографии в Мбайтах. Определить, сколько фотографий поместится на флэш-карту объёмом 2 Гбайта. Пример : Размер фотографии в Мбайтах: 6.3 Поместится фотографий: 325.
Слайд 45
Задачи « B »: Оцифровка звука выполняется в режиме стерео с частотой дискретизации 44,1 кГц и глубиной кодирования 24 бита. Ввести время записи в минутах и определить, сколько Мбайт нужно выделить для хранения полученного файла (округлить результат в большую сторону). Пример : Введите время записи в минутах: 10 Размер файла 152 Мбайт
Слайд 46
Задачи «С»: Разведчики-математики для того, чтобы опознать своих, используют числовые пароли. Услышав число-пароль, разведчик должен возвести его в квадрат и сказать в ответ первую цифры дробной части полученного числа. Напишите программу, которая по полученному паролю (вещественному числу) вычисляет число-ответ. Пример : Введите пароль: 1.92 Ответ: 6 потому что 1,92 2 = 3, 6 864…, первая цифра дробной части – 6
Слайд 47
Случайные и псевдослучайные числа Случайные явления встретил слона – не встретил слона жеребьёвка на соревнованиях лотерея случайная скорость (направление выстрела ) в игре … Случайные числа — это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие.
Слайд 48
Случайные и псевдослучайные числа Компьютер неслучаен! ! Псевдослучайные числа — похожи на случайные, но строятся по формуле. X n+1 = ( a*X n +b) % c # от 0 до c-1 следующее предыдущее X n+1 = ( X n + 3 ) % 10 # от 0 до 9 X = 0 зерно 3 6 9 2 5 8 0 зацикливание 8 1 4 7
Слайд 49
Датчик случайных чисел Целые числа на отрезке: from random import randint K = ra ndint ( 1 , 6 ) # отрезок [1,6] L = ra ndint ( 1 , 6 ) # это уже другое число! англ. integer – целый random – случайный подключить функцию randint из модуля random Не нужно имя модуля! ! K = random.ra ndint ( 1 , 6 )
Слайд 50
Датчик случайных чисел Вещественные числа: from random import random, uniform x = ra ndom () # полуинтервал [ 0 , 1) y = 7 * ra ndom () # полуинтервал [ 0 ,7 ) z = 7 * ra ndom ()+ 5 # полуинтервал [5,12 ) from random import uniform x = uniform (1.5, 2.8) # [1,5; 2,8] y = uniform (5.25, 12.75) # [5,25; 12,75] Вещественные числа на отрезке [a, b] :
Слайд 51
Задачи « A »: В игре «Русское лото» из мешка случайным образом выбираются бочонки, на каждом из которых написано число от 1 до 90. Напишите программу, которая выводит наугад первые 5 выигрышных номеров. « B »: + Доработайте программу «Русское лото» так, чтобы все 5 значений гарантированно были бы разными (используйте разные диапазоны).
Слайд 52
Задачи «С»: + Игральный кубик бросается три раза (выпадает три случайных значения). Из этих чисел составляется целое число, программа должна найти его квадрат. Пример : Выпало очков: 1 2 3 Число 123 Его квадрат 15129
Слайд 53
Задачи « D »: + Получить случайное трёхзначное число и вывести в столбик его отдельные цифры. Пример : Получено число 123 сотни: 1 десятки: 2 единицы: 3
Слайд 54
Программирование ( Python ) § 19 . Ветвления
Слайд 55
Выбор наибольшего из двух чисел Задача: изменить порядок действий в зависимости от выполнения некоторого условия. M = a a > b? M = b да нет вывод M полная форма ветвления Если a = b? ? if a > b: M = a else : M = b отступы
Слайд 56
Вариант 1. Программа print ( "Введите два целых числа" ) a = int ( input ()) b = int ( input ()) if a > b : else : print ( "Наибольшее число" , M) M = a M = b полная форма условного оператора M = max (a, b) Решение в стиле Python: M = a if a > b else b
Слайд 57
Выбор наибольшего из двух чисел-2 неполная форма ветвления начало M = a ввод a,b M = b конец да нет b > a? вывод M
Слайд 58
Вариант 2. Программа print ( "Введите два целых числа" ) a = int ( input ()) b = int ( input ()) M = a if b > a : print ( "Наибольшее число" , M) M = b неполная форма условного оператора
Слайд 59
Примеры if a < b : M = a if b < a: M = b Что плохо ? ? Когда работает неверно ? ? Поиск минимального :
Слайд 60
Примеры if a < b : c = a a = b b = c Что делает эта программа ? ? В чём отличие? ? if a < b : c = a a = b b = c 4 6 ? 4 6 4 a b 3 2 1 c a , b = b, a Решение в стиле Python:
Слайд 61
В других языках программирования if a < b then begin c:= a ; a:= b; b:= c; end; Паскаль : С : if ( a < b ) { c = a ; a = b; b = c; }
Слайд 62
Знаки отношений > < > = < = = = != больше, меньше больше или равно меньше или равно равно не равно
Слайд 63
Вложенные условные операторы if a > b: print ( " Андрей старше " ) else : if a == b: print ( " Одного возраста " ) else : print ( " Борис старше " ) вложенный условный оператор Зачем нужен ? ? Задача : в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше? Сколько вариантов ? ?
Слайд 64
Каскадное ветвление if a > b: print ( " Андрей старше " ) elif a == b: print ( " Одного возраста " ) else : print ( " Борис старше " ) elif = else if !
Слайд 65
Каскадное ветвление cost = 1500 if cost < 1000 : print ( " Скидок нет ." ) elif cost < 2000 : print ( " Скидка 2%." ) elif cost < 5000 : print ( " Скидка 5%." ) else : print ( "Скидка 10%. " ) Что выведет ? ? первое сработавшее условие Скидка 2%.
Слайд 66
Задачи (без функций min и max !) « A »: Ввести два целых числа, найти наибольшее и наименьшее из них. Пример : Введите два целых числа: 1 5 Наибольшее число 5 Наименьшее число 1 « B »: Ввести четыре целых числа, найти наибольшее из них. Пример : Введите четыре целых числа: 1 5 4 3 Наибольшее число 5
Слайд 67
Задачи « C »: Ввести последовательно возраст Антона, Бориса и Виктора. Определить, кто из них старше. Пример : Возраст Антона: 15 Возраст Бориса: 17 Возраст Виктора: 16 Ответ: Борис старше всех. Пример : Возраст Антона: 17 Возраст Бориса: 17 Возраст Виктора: 16 Ответ: Антон и Борис старше Виктора.
Слайд 68
Сложные условия Задача . Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ "подходит" или "не подходит" ) . Особенность : надо проверить, выполняются ли два условия одновременно: возраст 25 возраст 40 Можно ли решить известными методами ? ?
Слайд 69
Плохое решение print ( "Введите ваш возраст" ) x = int ( input ()) if x >= 25 : if x <= 40 : print ( "Подходит!" ) else : print ( "Не подходит." ) else : print ( "Не подходит." ) вложенный условный оператор
Слайд 70
Хорошее решение (операция « И ») if : print ( "подходит" ) else : print ( "не подходит " ) and v >= 25 and v <= 40 сложное условие «И»: одновременное выполнение всех условий! Задача : набор сотрудников в возрасте 25-40 лет (включительно).
Слайд 71
Примеры Задача . Вывести " Да " , если число в переменной a – двузначное. if 10 <= a and a <= 99 : print ( "Да" ) Задача . Вывести " Да " , если число в переменной a – двузначное и делится на 7. if 10 <= a and a <= 99 and (a % 7 )== 0 : print ( "Да" )
Слайд 72
Сложные условия: « ИЛИ » Задача . Самолёт летает по понедельникам и четвергам. Ввести номер дня недели и определить, летает ли в этот день самолёт. Особенность : надо проверить, выполняется ли одно из двух условий: день = 1 день = 4 if d = = 1 or d == 4 : print ( "Летает" ) else : print ( "Не летает " ) сложное условие d == 1 or d = = 4 or « ИЛИ »: выполнение хотя бы одного из двух условий!
Слайд 73
Ещё пример Задача . Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ "подходит" или "не подходит" ) . Использовать « ИЛИ ». if : print ( "не подходит" ) else : print ( "подходит " ) v < 25 or v > 40
Слайд 74
Сложные условия : « НЕ » if not (a < b): print ( " C тарт!" ) not «НЕ»: если выполняется обратное условие if a >= b: print ( " C тарт!" ) Как без «НЕ» ? ?
Слайд 75
Простые и сложные условия Простые условия (отношения) < <= > >= = = != Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: and – одновременное выполнение условий x >= 25 and x <= 40 or – выполнение хотя бы одного из условий x <= 25 or x >= 40 not – отрицание, обратное условие not ( x > 25 ) ??? равно не равно x <= 25
Слайд 76
Порядок выполнения операций выражения в скобках <, <=, >, >=, =, != not and or 1 if not a > 2 or c != 5 and b < a: ... 4 2 3 5 6
Слайд 77
Сложные условия Истинно или ложно при a = 2; b = 3; c = 4 not (a > b) a < b and b < c a > c or b > c a < b and b > c a > c and b > d not (a >= b) or c = d a >= b or not (c < b) a > c or b > c or b > a Да Да Нет Да Да Нет Нет Да
Слайд 78
Задачи « A »: Напишите программу, которая получает три числа - рост трёх спортсменов, и выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту. Пример : Введите рост трёх спортсменов: 165 170 172 По росту. Пример : Введите рост трёх спортсменов: 175 170 172 Не по росту!
Слайд 79
Задачи « B »: Напишите программу, которая получает номер месяца и выводит соответствующее ему время года или сообщение об ошибке. Пример : Введите номер месяца: 5 Весна. Пример : Введите номер месяца: 15 Неверный номер месяца.
Слайд 80
Задачи « C »: Напишите программу, которая получает возраст человека (целое число, не превышающее 120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет». Пример : Введите возраст: 18 Вам 18 лет. Пример : Введите возраст: 21 Вам 21 год. Пример : Введите возраст: 2 2 Вам 22 года.
Слайд 81
Логические переменные b = True b = False type(b) только два возможных значения Пример: freeDay = (d = = 6 or d= = 7 ) ... if not freeDay: print ( "Рабочий день." ) else : print ( "Выходной!" ) логическая (булевская) переменная Джордж Буль
Слайд 82
Задачи « A »: Напишите программу, которая получает с клавиатуры целое число и записывает в логическую переменную значение «да» ( True ), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?». Пример : Введите число: 165 Ответ: да. Пример : Введите число: 1651 Ответ: нет.
Слайд 83
Задачи « B »: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?». Пример : Введите число: 165 Ответ: нет. Пример : Введите число: 656 Ответ: да.
Слайд 84
Задачи «С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» ( True ), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?» Пример : Введите число: 161 Ответ: нет. Пример : Введите число: 555 Ответ: да.
Слайд 85
Экспертная система Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта при принятии решений в сложной ситуации. База знаний = факты + правила вывода : если у животного есть перья, то это птица ; если животное кормит детенышей молоком, то это — млекопитающее ; если животное — млекопитающее и ест мясо, то это — хищник. Диалог : Это животное кормит детей молоком? Нет Это животное имеет перья? Да Это птица .
Слайд 86
Дерево решений хищник ? птица да да нет нет млекопитающее Кормит детей молоком? Имеет перья? Ест мясо? ? да нет
Слайд 87
Программирование экспертной системы Ответы пользователя: да и нет – символьные строки. ans = input ( "Кормит детей молоком? " ) if ans = = "да" : ... # вариант 1 else : ... # вариант 2 # вариант 1 print ( "Млекопитающее." ) ans = input ( "Ест мясо? " ) if ans = = "да" : print ( "Хищник." ) else : print ( "Не знаю." )
Слайд 88
Заглавные и строчные буквы if ans = = "да" : ... не сработает на " Да " Как исправить ? ? if ans = = "да" or ans = = "Да" : ... if ans. lower () = = "да" : ... Ещё лучше: преобразовать все заглавные в строчные if ans. upper () = = "ДА" : ...
Слайд 89
Программирование ( Python ) § 23 . Отладка программ
Слайд 90
Виды ошибок Синтаксические ошибки – нарушение правил записи операторов языка программирования. Обнаруживаются транслятором. Логические ошибки – неверно составленный алгоритм. Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы. Отладка – поиск и исправление ошибок в программе.
Слайд 91
Пример отладки программы from math import sqrt print ( "Введите a, b, c: " ) a = float ( input ()) b = float ( input ()) c = float ( input ()) D = b*b - 4 *a*a x1 = (-b+ sqrt (D))/ 2 *a x2 = (-b- sqrt (D))/ 2 *a print ( " x1=" , x1, " x2=" , x2 , sep= "" ) Программа решения квадратного уравнения float – преобразовать в вещественное число
Слайд 92
Тестирование Тест 1 . a = 1, b = 2, c = 1. x1=-1.0 x2=-1.0 x1=-1.0 x2=-1.0 Реальность: Тест 2 . a = 1, b = – 5 , c = 6 . x1=3.0 x2=2.0 x1=4.791 x2=0.209 Ожидание: Найден вариант, когда программа работает неверно. Ошибка воспроизводится ! Возможные причины : неверный ввод данных неверное вычисление дискриминанта неверное вычисление корней неверный вывод результатов
Слайд 93
Отладочная печать a = float ( input ()) b = float ( input ()) c = float ( input ()) print ( a, b, c ) D = b*b - 4 *a*a print ( " D=" , D ) ... print ( a, b, c ) print ( " D=" , D ) Идея : выводить все промежуточные результаты.
Слайд 94
Отладочная печать Введите a, b, c: 1 -5 6 1.0 -5.0 6.0 D= 21.0 Результат: D= 21.0 D = b*b - 4 *a* с ; с Идея : выводить все промежуточные результаты. Одна ошибка найдена! !
Слайд 95
Отладка программы Тест 1 . a = 1, b = 2, c = 1. x1=-1.0 x2=-1.0 x1=-1.0 x2=-1.0 Реальность: Тест 2 . a = 1, b = – 5 , c = 6 . x1=3.0 x2=2.0 Ожидание: x1=3.0 x2=2.0 Тест 3 . a = 8 , b = – 6 , c = 1 . x1= 0 . 5 x2= 0 . 25 x1=3 2 .0 x2= 16 .0 Программа работает верно? ? x1 = (-b+ sqrt (D))/ 2 *a x2 = (-b- sqrt (D))/ 2 *a ( 2 *a ) ( 2 *a ) Что неверно? ?
Слайд 96
Задачи « A »: Загрузите программу , которая должна вычислять сумму цифр трёхзначного числа: N = input ( int ( "N = " )) d0 = N % 10 d1 = N % 100 d2 = N // 100 d0 + d2 = s print (s) Выполните отладку программы: исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки.
Слайд 97
Задачи « B »: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.
Слайд 98
Задачи «С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел: a = input ( "a = " ) b = int ( "b = " ) c = input ( "c = " ) if a > b: M = a else M = b if c > b M = b else : M = c input (M) Выполните отладку программы: исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки.
Слайд 99
Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г. Санкт-Петербург kpolyakov@mail.ru ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь eremin@pspu.ac.ru
Слайд 100
Источники иллюстраций иллюстрации художников издательства «Бином» авторские материалы