Программирование (Python)

Слайд 2

Программирование (Python) § 23. Отладка программ

Программирование (Python)

§ 23. Отладка программ

Слайд 3

Виды ошибок Синтаксические ошибки – нарушение правил записи операторов языка программирования.

Виды ошибок

Синтаксические ошибки – нарушение правил записи операторов языка программирования.

Обнаруживаются транслятором.

Логические

ошибки – неверно составленный алгоритм.

Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы.

Отладка – поиск и исправление ошибок в программе.

Слайд 4

Пример отладки программы from math import sqrt print("Введите a, b, c:

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

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 – преобразовать в вещественное число

Слайд 5

Тестирование Тест 1. a = 1, b = 2, c =

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

Тест 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

Ожидание:

Найден вариант, когда программа работает неверно. Ошибка воспроизводится!

Возможные причины:
неверный ввод данных
неверное вычисление дискриминанта
неверное вычисление корней
неверный вывод результатов

Слайд 6

Отладочная печать a = float(input()) b = float(input()) c = float(input())

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

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)

Идея: выводить все промежуточные результаты.

Слайд 7

Отладочная печать Введите a, b, c: 1 -5 6 1.0 -5.0

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

Введите a, b, c:
1
-5
6
1.0 -5.0 6.0
D= 21.0

Результат:

D= 21.0

Идея:

выводить все промежуточные результаты.
Слайд 8

Отладка программы Тест 1. a = 1, b = 2, c

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

Тест 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=32.0 x2=16.0

x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a

(2*a)

(2*a)

Слайд 9

Задачи «A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:

Задачи

«A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:
N =

input(int("N = "))
d0 = N % 10
d1 = N % 100
d2 = N // 100
d0 + d2 = s
print(s)
Выполните отладку программы:
исправьте синтаксические ошибки
определите ситуации, когда она работает неверно
исправьте логические ошибки.
Слайд 10

Задачи «B»: Доработайте программу из п. А так, чтобы она правильно

Задачи

«B»: Доработайте программу из п. А так, чтобы она правильно работала

с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.