ИНФОРМАЦИОННЫЕ СИСТЕМЫ. Массивы и списки. Тестирование и отладка программы
Оценка 5

ИНФОРМАЦИОННЫЕ СИСТЕМЫ. Массивы и списки. Тестирование и отладка программы

Оценка 5
Презентации учебные
pptx
информатика
8 кл—11 кл
25.04.2021
ИНФОРМАЦИОННЫЕ СИСТЕМЫ. Массивы и списки. Тестирование и отладка программы
Тестирование и отладка программы. Чем больше опыта имеет программист, тем меньше ошибок в коде он совершает. Но, хотите верьте, хотите нет, даже самый опытный программист всё же допускает ошибки. ... Тестирование - процесс проверки работоспособности программы путем ввода в неё различных, даже намеренно ошибочных данных, и последующей контрольной проверке выводимого результата. Если программа работает правильно с одними наборами исходных данных, и неправильно с другими, то это свидетельствует о наличии алгоритмической ошибки.
ИНФОРМАЦИОННЫЕ СИСТЕМЫ. Массивы и списки. Тестирование и отладка программы.pptx

ИНФОРМАЦИОННЫЕ системы. Массивы и списки

ИНФОРМАЦИОННЫЕ системы. Массивы и списки

ИНФОРМАЦИОННЫЕ системы. Массивы и списки. Тестирование и отладка программы.

Никитин М.Е., преподаватель профессиональных модулей высшей категории

ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ ГОРОДА МОСКВЫ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ГОРОДА МОСКВЫ «Политехнический колледж имени П.А. Овчинникова»

Массивы и списки © https://znanio

Массивы и списки © https://znanio

2

Массивы и списки

© https://znanio.ru/person/z98576333

Массивы и списки Массив ( индексный массив ) – набор однотипных компонентов (элементов), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по…

Массивы и списки Массив ( индексный массив ) – набор однотипных компонентов (элементов), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по…

3

Массивы и списки

Массив (индексный массив) – набор однотипных компонентов (элементов), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (индексам).

Размерность массива – количество индексов, необходимое для однозначного доступа к элементу массива.

© https://znanio.ru/person/z98576333

Массивы и списки Массив – структура с произвольным доступом

Массивы и списки Массив – структура с произвольным доступом

4

Массивы и списки

Массив – структура с произвольным доступом
А – начало массива
L – размер данных (элемента массива)
A[k] => A + L*k

© https://znanio.ru/person/z98576333

Массивы и списки Достоинства массивов: лёгкость вычисления адреса элемента по его индексу одинаковое время доступа ко всем элементам малый размер элементов: они состоят только из…

Массивы и списки Достоинства массивов: лёгкость вычисления адреса элемента по его индексу одинаковое время доступа ко всем элементам малый размер элементов: они состоят только из…

5

Массивы и списки

Достоинства массивов:
лёгкость вычисления адреса элемента по его индексу
одинаковое время доступа ко всем элементам
малый размер элементов: они состоят только из информационного поля
Недостатки массивов:
для статического массива — отсутствие динамики, невозможность удаления или добавления элемента без сдвига других
для динамического и/или гетерогенного массива — более низкое (по сравнению с обычным статическим) быстродействие и дополнительные накладные расходы на поддержку динамических свойств и/или гетерогенности.
при работе с массивом в стиле C (с указателями) и при отсутствии дополнительных средств контроля — угроза выхода за границы массива и повреждения данных

© https://znanio.ru/person/z98576333

Массивы и списки Динамические массивы – массивы с возможностью изменения размера 1

Массивы и списки Динамические массивы – массивы с возможностью изменения размера 1

6

Массивы и списки

Динамические массивы – массивы с возможностью изменения размера
1. Выделить память нового размера
2. Скопировать старые данные в новую область
3. Объявить новую память «старым» массивом
4. Освободить старую память
Гетерогенные массивы – массивы с возможностью хранения разнотипных данных (реализовано не во всех ЯП)

© https://znanio.ru/person/z98576333

Массивы и списки Список – структура с последовательным доступом © https://znanio

Массивы и списки Список – структура с последовательным доступом © https://znanio

7

Массивы и списки

Список – структура с последовательным доступом

© https://znanio.ru/person/z98576333

Массивы и списки Добавление элемента в середину списка © https://znanio

Массивы и списки Добавление элемента в середину списка © https://znanio

8

Массивы и списки

Добавление элемента в середину списка

© https://znanio.ru/person/z98576333

Массивы и списки Удаление элемента из середины списка © https://znanio

Массивы и списки Удаление элемента из середины списка © https://znanio

9

Массивы и списки

Удаление элемента из середины списка

© https://znanio.ru/person/z98576333

Массивы и списки Ассоциативный массив ( словарь ) — абстрактный тип данных, позволяющий хранить пары вида (ключ, значение) и поддерживающий операции insert, find, remove

Массивы и списки Ассоциативный массив ( словарь ) — абстрактный тип данных, позволяющий хранить пары вида (ключ, значение) и поддерживающий операции insert, find, remove

10

Массивы и списки

Ассоциативный массив (словарь) — абстрактный тип данных, позволяющий хранить пары вида (ключ, значение) и поддерживающий операции insert, find, remove
C++:
string name, phone;
map< string, string > book;
cin >> name >> phone;
book[ name ] = phone;

© https://znanio.ru/person/z98576333

Массивы и списки Возвращаясь к динамическим спискам…

Массивы и списки Возвращаясь к динамическим спискам…

11

Массивы и списки

Возвращаясь к динамическим спискам… Каким образом должен возрастать размер буфера?
Начальные условия:
Изначальный размер – 1 байт
Буфер растёт по 1 байту до тех пор, пока не достигнет размера 1 МиБ.
Каков суммарный объём памяти был задействован?
1 + 2 + 3 + … + 1,048,575 + 1,048,576 = 549,756,338,176 байт = 512 ГБайт

© https://znanio.ru/person/z98576333

Массивы и списки Экспоненциальный рост:

Массивы и списки Экспоненциальный рост:

12

Массивы и списки

Экспоненциальный рост:
Коэф. = 1.5
1 + 2 + 3 + 5 + 8 + 12 + 18 + 27 + … + 466608 + 699912 + 1049868 = 3 149 587 байт = 3 Мбайт
Коэф. = 2
1 + 2 + 4 + 8 + 16 + 32 + … + 262144 + 524288 + 1048576 = 2 097 151 байт = 2 МБайт

© https://znanio.ru/person/z98576333

Массивы и списки Проблема линейного роста – в большом количестве выделяемой памяти

Массивы и списки Проблема линейного роста – в большом количестве выделяемой памяти

13

Массивы и списки

Проблема линейного роста – в большом количестве выделяемой памяти
Общая проблема роста – кусочно разбросанные остающиеся области памяти

© https://znanio.ru/person/z98576333

Массивы и списки 99 маленьких багов в коде, 99 маленьких багов в коде,

Массивы и списки 99 маленьких багов в коде, 99 маленьких багов в коде,

14

Массивы и списки



99 маленьких багов в коде,
99 маленьких багов в коде,
Один нашли, пофиксили,
127 маленьких багов в коде…

© https://znanio.ru/person/z98576333

Тестирование и отладка программы или

Тестирование и отладка программы или

15


Тестирование и отладка программы

или

Базовые принципы работы начинающих пре-альфа-программистов

© https://znanio.ru/person/z98576333

Тестирование и отладка программ © https://znanio

Тестирование и отладка программ © https://znanio

16

Тестирование и отладка программ

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

17

Тестирование и отладка программ

Аксиома 1

Тестирование проводится для того, чтобы найти ошибки, а не показать работоспособность программы

Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы
Тестирование может доказать, что дефекты в программном обеспечении существуют, но если дефектов не найдено, это не дает гарантии, что их нет.

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

18

Тестирование и отладка программ

Аксиома 2
Наилучшее решение проблемы надежности – не допускать ошибок в программе
Роль тестирования – определить местонахождение немногочисленных ошибок, оставшихся в хорошо спроектированной программе.
Попытки с помощью тестирования достичь надежности плохо спроектированной программы безнадежны.

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

19

Тестирование и отладка программ

Аксиома 3
Совершенное тестирование невозможно
Сколько входных данных нужно перебрать для программы (x, y, z – integer)
z = x + y
чтобы быть уверенным, что она работает правильно?

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

20

Тестирование и отладка программ

Хорошая привычка
Тестирование программы должен производить не автор
Простейшие тесты на начальном этапе – автор, далее – человек, не знакомый с задачей
У автора глаза «зашорены»

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

21

Тестирование и отладка программ

Хорошая привычка

Подготовка исходных данных и результатов ДО запуска программы

Эффект «подгонки» результатов

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

22

Тестирование и отладка программ

Хорошая привычка

Подготовка тестов для правильных и для неправильных данных

Программа должна работать всегда!
Сообщения ОС об ошибках программы – недопустимы

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

23

Тестирование и отладка программ

Хорошая привычка

Не изменять программу для облегчения тестирования

А вдруг уберёте ошибку?

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

24

Тестирование и отладка программ

Хорошая привычка

Заблаговременное тестирование

1 тестирование (в конце) – 50 ошибок
20 тестирований (в процессе) – по 2 ошибки

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

25

Тестирование и отладка программ

Хорошая привычка

Регрессионное тестирование

Накопление ошибок
При доработке программы возможен «возврат ошибок»

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

26

Тестирование и отладка программ

Хорошая привычка
Парадокс пестицида
Если один и тот же тестовый модуль многократно применять к той же системе, он в конечном счете перестанет находить ошибки.
Тестовый модуль должен постоянно и систематически корректироваться, а новые тесты должны охватывать все составляющие программного обеспечения

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

27

Тестирование и отладка программ

Хорошая привычка

Случайное тестирование

Много случайных данных иногда позволяют найти ошибки, которые не охватываются «логичными» тестами

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

28

Тестирование и отладка программ

Как это на практике?
Тестирование «один из группы»
Положительные, отрицательные, нулевые, различные пары…
Тестирование граничных условий
2я лр – какое последнее слагаемое?
Массивы
все, ни одного, разные
выход за границы массива
Циклы
Ни разу, один раз, максимум, промежуточное количество
Тестирование ветвей кода
Черный и белый ящик (+серый ящик)
Тестирование особых случаев («13й этаж»)
Случайное тестирование
Регрессионное тестирование

© https://znanio.ru/person/z98576333

Тестирование и отладка программ

Тестирование и отладка программ

29

Тестирование и отладка программ

Ситуации «за гранью добра и зла»

-- этот код работает! (SQL)
IF 1 = 0
BEGIN
SET FMTONLY OFF
END

Но это уже совсем другая история…

© https://znanio.ru/person/z98576333

Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
25.04.2021