- •§0.1. Базовые знания
- •§0.2. Где достать интерпретатор языка Питон?
- •§0.3. Установка интерпретатора языка Питон в unix
- •§0.3.1. Установка/обновление Питона из грт-пакета
- •§0.3.2. Установка Питона из исходного кода
- •§0.4. Установка Питона в ос Windows
- •§0.5. Запуск программ, написанных на Питоне
- •§0.6. Среда разработки
- •§1.1. Алгоритмы и программы
- •§1.2. Языки программирования и уровни абстракции
- •Глава 1. Базовые понятия
- •§1.3. Формальные и естественные языки
- •§1.4. Интерпретаторы и компиляторы
- •§1.5. Первая программа
- •§1.6. Что такое отладка?
- •§1.6.1. Синтаксические ошибки (syntax errors)
- •§1.6.2. Ошибки выполнения (runtime errors)
- •§1.6.3. Семантические ошибки (semantic errors)
- •§1.6.4. Процесс отладки
- •Глава 2. Переменные, операции и выражения
- •§2.1. Значения и типы
- •§2.2. Преобразование типов
- •§2.3. Переменные
- •§2.4. Имена переменных и ключевые слова
- •§2.5. Выражения
- •§2.6. Выполнение выражений
- •§2.7. Операторы и операнды
- •§2.8. Порядок операций
- •§2.9. Простейшие операции над строками
- •§2.10. Композиция
- •Глава 3. Функции §3.1. Подпрограммы
- •§3.2. Вызовы функций
- •§3.3. Справочная система
- •§3.4. Импорт модулей и математические функции
- •§3.5. Композиция
- •§3.6. Создание функций
- •§3.7. Параметры и аргументы
- •§3.8. Локальные переменные
- •§3.9. Поток выполнения
- •§3.10. Стековые диаграммы
- •§3.11. Функции, возвращающие результат
- •Глава 4. Компьютерная графика
- •Глава 5. Логические выражения, условия и рекурсия §5.1. Комментарии в программах
- •§5.2. Простые логические выражения и логический тип данных
- •§5.3. Логические операторы
- •§5.4. Выполнение по условию и «пустота»
- •§5.5. Ввод данных с клавиатуры
- •§5.6. Альтернативные ветки программы (Chained conditionals)
- •§5.7. Пустые блоки
- •§5.8. Вложенные условные операторы (Nested conditionals)
- •§5.9. Рекурсия
- •§5.10. Стековые диаграммы рекурсивных вызовов
- •§5.11. Максимальная глубина рекурсии
- •§5.12. Числа Фибоначчи
- •Глава 6. Циклы
- •§6.1. Оператор цикла while
- •§6.2. Счетчики
- •§6.3. Бесконечные циклы
- •§6.4. Альтернативная ветка цикла while
- •§6.5. Табулирование функций
- •§6.6. Специальные и экранируемые символы
- •§6.7. Числа Фибоначчи и оператор цикла while
- •§6.8. Вложенные операторы цикла и двумерные таблицы
- •§6.9. Классификация операторов цикла
- •§6.10. Управляющие структуры
- •Глава 7. Строки
- •§7.1. Оператор индексирования
- •§7.2. Длина строки и отрицательные индексы
- •§7.3. Перебор и цикл for
- •§7.4. Срезы строк
- •§7.5. Сравнение строк
- •§7.6. Строки нельзя изменить
- •§7.7. Функция find
- •§7.8. Циклы и счётчики
- •§7.9. Модуль string
- •§7.10. Классификация символов
- •§10.2. Операции над словарями
- •§10.3. Методы словарей
- •§10.4. Использование псевдонимов и копирование
- •§10.5. Разряженные матрицы
- •§10.6. Подсказки
- •§10.7. Тип «длинное целое число»
- •§10.8. Подсчет букв
§1.6. Что такое отладка?
Программирование - довольно сложный процесс, и вполне естественно, когда программист допускает ошибку. Так повелось, что программные ошибки называют «багами» (от англ. bug - жучок). В русскоязычной литературе это слово вы не встретите, но в сленге программистов оно используется достаточно часто наряду со словом «глюк». Процесс поиска и устранения ошибок в англоязычной литературе принято обозначать термином debugging, мы же будем называть его отладкой.
Существует три типа ошибок, которые могут возникнуть в программах: синтаксические ошибки (syntax errors), ошибки выполнения (runtime errors) и семантические ошибки (semantic errors). Чтобы находить и исправлять их быстрее, имеет смысл научиться их различать.
§1.6.1. Синтаксические ошибки (syntax errors)
Любой интерпретатор сможет выполнить программу только в том случае, если программа синтаксически правильна. Соответственно компилятор тоже не сможет преобразовать программу в машинные инструкции, если программа содержит синтаксические ошибки. Когда транслятор находит ошибку (т.е. доходит до инструкции, которую не может понять), он прерывает свою работу и выводит сообщение об ошибке.
Для большинства читающих синтаксические ошибки не представляют особой проблемы. Например, часто встречаются стихотворения без знаков препинания, но мы без труда можем их прочесть, хотя это часто порождает неоднозначность их интерпретации. Но
20
Ревизия: 170
Базовые понятия
трансляторы (и интерпретатор Питона не исключение) очень придирчивы к синтаксическим ошибкам.
Даже если в вашей программе Питон найдет хотя бы незначительную опечатку, он тут же выведет сообщение о том, где он на нее наткнулся, и завершит работу. Такую программу он не сможет выполнить и поэтому отвергнет. В первые недели вашей практики разработки программ вы, скорее всего, проведете довольно много времени, разыскивая синтаксические ошибки. По мере накопления опыта вы будет допускать их все реже, а находить - все быстрее.
§1.6.2. Ошибки выполнения (runtime errors)
Второй тип ошибок обычно возникает во время выполнения программы (их принято называть исключительными ситуациями или, коротко - исключениями, по-английски exceptions). Такие ошибки имеют другую причину. Если в программе возникает исключение, то это означает, что по ходу выполнения произошло что-то непредвиденное: например, программе было передано некорректное значение, или программа попыталась разделить какое-то значение на ноль, что недопустимо с точки зрения дискретной математики. Если операционная система присылает запрос на немедленное завершение программы, то также возникает исключение. Но в простых программах это достаточно редкое явление, поэтому, возможно, с ними вы столкнетесь не сразу.
§1.6.3. Семантические ошибки (semantic errors)
Третий тип ошибок - семантические ошибки. Первым признаком наличия в вашей программе семантической ошибки является то, что она выполняется успешно, т.е. без исключительных ситуаций, но делает не то, что вы от нее ожидаете.
В таких случаях проблема заключается в том, что семантика написанной программы отличается от того, что вы имели в виду. Поиск таких ошибок - задача нетривиальная, т.к. приходится просматривать результаты работу программы и разбираться, что программа делает на самом деле.
