СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Лекция. Ошибки в программном коде

Категория: Информатика

Нажмите, чтобы узнать подробности

Лекционный материал предназначен для использования в образовательном процессе преподавателями профессионального цикла по освоению темы «Ошибки в программном коде» на дисциплине "Основы алгоритмизации и программирования" для специальности» 09.02.07 Информационные системы и программирование.

Просмотр содержимого документа
«Лекция. Ошибки в программном коде»

Ошибки

Ошибки

Классификация ошибок Ошибки времени компиляции: синтаксические ошибки и ошибки, связанные с типами. Ошибки времени редактирования связей. Это ошибки, обнаруженные редактором связей при попытке объединить объектные файлы в выполнимый модуль.

Классификация ошибок

  • Ошибки времени компиляции: синтаксические ошибки и ошибки, связанные с типами.
  • Ошибки времени редактирования связей. Это ошибки, обнаруженные редактором связей при попытке объединить объектные файлы в выполнимый модуль.
Классификация ошибок Ошибки времени выполнения. Это ошибки, обнаруженные проверками в работающей программе: ошибки, обнаруженные компьютером; ошибки, обнаруженные библиотекой; ошибки, обнаруженные кодом пользователя. Логические ошибки. Это ошибки, найденные программистом в поисках причин неправильных результатов.

Классификация ошибок

  • Ошибки времени выполнения. Это ошибки, обнаруженные проверками в работающей программе: ошибки, обнаруженные компьютером; ошибки, обнаруженные библиотекой; ошибки, обнаруженные кодом пользователя.
  • Логические ошибки. Это ошибки, найденные программистом в поисках причин неправильных результатов.
Предполагается, что программа удовлетворяет следующим условиям: Должна вычислить желаемые результаты при всех допустимых входных данных. Должна выдавать осмысленные сообщения обо всех неправильных входных данные. Не обязана беспокоиться о некорректном поведении аппаратного обеспечения.

Предполагается, что программа удовлетворяет следующим условиям:

  • Должна вычислить желаемые результаты при всех допустимых входных данных.
  • Должна выдавать осмысленные сообщения обо всех неправильных входных данные.
  • Не обязана беспокоиться о некорректном поведении аппаратного обеспечения.
Не обязана беспокоиться о некорректном поведении системного программного обеспечения. Она может завершать работу после обнаружения ошибки.
  • Не обязана беспокоиться о некорректном поведении системного программного обеспечения.
  • Она может завершать работу после обнаружения ошибки.
Три подхода к разработке приемлемого ПО: Организовать ПО так, чтобы минимизировать количество ошибок. Исключить большинство сделанных ошибок в ходе отладки и тестирования. Убедиться, что оставшиеся ошибки не серьезны.

Три подхода к разработке приемлемого ПО:

  • Организовать ПО так, чтобы минимизировать количество ошибок.
  • Исключить большинство сделанных ошибок в ходе отладки и тестирования.
  • Убедиться, что оставшиеся ошибки не серьезны.
Источники ошибок Плохая спецификация. Неполные программы. Непредусмотренные аргументы. Непредусмотренные входные данные. Непредусмотренные состояния. Логические ошибки.

Источники ошибок

  • Плохая спецификация.
  • Неполные программы.
  • Непредусмотренные аргументы.
  • Непредусмотренные входные данные.
  • Непредусмотренные состояния.
  • Логические ошибки.
Ошибки времени компиляции int area(int length, int width); //вычисление площади треугольника

Ошибки времени компиляции

int area(int length, int width);

//вычисление площади треугольника

Синтаксические ошибки int s1=area(7; int s2=area(7); Int s3=area(7); int s1=area(‘7);

Синтаксические ошибки

int s1=area(7;

int s2=area(7);

Int s3=area(7);

int s1=area(‘7);

Ошибки, связанные с типами int x0=arena(7); int x1=area(7); int x2=area(“seven”, 2)

Ошибки, связанные с типами

int x0=arena(7);

int x1=area(7);

int x2=area(“seven”, 2)

Не ошибки int x4=area(10, -7); int x5=area(10.7, 9.3); char x6=area(100, 9999);

Не ошибки

int x4=area(10, -7);

int x5=area(10.7, 9.3);

char x6=area(100, 9999);

Ошибки времени редактирования связей Каждая функция в программе должна быть объявлена с одним и тем же типом во всех отдельно компилируемых частях, в которых она используется. Каждая функция должна быть определена в программе один раз.

Ошибки времени редактирования связей

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

int area(int length, int width); int main() {  int x = area(2, 3); }

int area(int length, int width);

int main()

{

int x = area(2, 3);

}

double area(double x, double y) { /* … */ } int area(int x, int y, char unit) { /* … */ }

double area(double x, double y)

{

/* … */

}

int area(int x, int y, char unit)

{

/* … */

}

Ошибки времени выполнения программы int area(int length, int width) { {  int x=-1;  return length*width; }  int y=2;  int z=4; int framed_area(int x, int y) {  //…  int area1=area(x, y);  return area(x-2, y-2);  int area2=framed_area(1, z); }  int area3=framed_area(y, z); int main()  double ratio=double(area1)/area3; //преобразуем в тип double, чтобы выполнить деление с плавающей точкой }

Ошибки времени выполнения программы

int area(int length, int width)

{

{

int x=-1;

return length*width;

}

int y=2;

int z=4;

int framed_area(int x, int y)

{

//…

int area1=area(x, y);

return area(x-2, y-2);

int area2=framed_area(1, z);

}

int area3=framed_area(y, z);

int main()

double ratio=double(area1)/area3; //преобразуем в тип double, чтобы выполнить деление с плавающей точкой

}

Обработка ошибок в вызывающем коде 1. «Пользователь должен быть внимательным!»

Обработка ошибок в вызывающем коде

1. «Пользователь должен быть внимательным!»

Обработка ошибок в вызывающем коде

Обработка ошибок в вызывающем коде

Обработка ошибок в вызываемом коде

Обработка ошибок в вызываемом коде

Сообщения об ошибках

Сообщения об ошибках

Отладка Поиск и удаление ошибок (багов).

Отладка

Поиск и удаление ошибок (багов).

Отладка Компилируем программу. Редактируем связи. Выполняем программу и проверяем, делает ли она то, для чего предназначена. Цель: структурировать программу так, чтобы минимизировать вероятность ошибок и максимально увеличить вероятность их обнаружения.

Отладка

  • Компилируем программу.
  • Редактируем связи.
  • Выполняем программу и проверяем, делает ли она то, для чего предназначена.

Цель: структурировать программу так, чтобы минимизировать вероятность ошибок и максимально увеличить вероятность их обнаружения.

Практические советы по отладке Хорошо комментируйте свою программу (название, цель, автор, дата, номер версии, какие фрагменты кода могут вызвать сложности, основные идеи проекта, как организован код, какие сделаны предположения о вводных данных, чего в программе пока не хватает). Используйте осмысленные имена. Используйте последовательную схему кода.

Практические советы по отладке

  • Хорошо комментируйте свою программу (название, цель, автор, дата, номер версии, какие фрагменты кода могут вызвать сложности, основные идеи проекта, как организован код, какие сделаны предположения о вводных данных, чего в программе пока не хватает).
  • Используйте осмысленные имена.
  • Используйте последовательную схему кода.
Разбивайте программу на небольшие фрагменты, каждый из которых выражает определенные логически выделенные действия (размер функции не должен превышать страницу или две). Избегайте сложных выражений (пытайтесь избегать вложенных циклов, вложенных инструкций, сложных условия). Где только можно, используйте библиотечные функции, а не собственный код.
  • Разбивайте программу на небольшие фрагменты, каждый из которых выражает определенные логически выделенные действия (размер функции не должен превышать страницу или две).
  • Избегайте сложных выражений (пытайтесь избегать вложенных циклов, вложенных инструкций, сложных условия).
  • Где только можно, используйте библиотечные функции, а не собственный код.


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!