
- •Качественные характеристики программ
- •Процедурная абстракция, абстракция данных и классы ее операций.
- •Модель памяти Win32.Выделение памяти в стеке.
- •Выделение динамической памяти. Указатели.
- •Тестирование по
- •Алгоритм внутренней сортировки. Алгоритм пирамиды(Метод Уильямса-Флойда)
- •I индекс для прохода по массиву
- •Алгоритм внутренней сортировки. Сортировка Шелла.
- •Алгоритм внутренней сортировки. Обменная поразрядная сортировка
Качественные характеристики программ
1.Удобство чтения
2.Гибкость-настраиваемость функций системы по требованиям различных пользователей.
3.Мобильность программных систем-независимость от технической базы и ОС, установленной на компе.+ переносимость.
4.Параметры учета человеческого фактора(дружественный интерфейс,наличие контекстно-обучающей программы, документации)
5.Надежность ПО- определяется бесперебойностью и устойчивостью работы и возможности анализа возникающих ошибок.
6.Модифицируемость ПО-возможность добавления новых функций в программу.
7.Коммуникативность программных систем(максимальная интеграция с другими системными продуктами).
Количественные характеристики программ. Порядок сложности алгоритма
1.Пространственная эффективность –Характеризуется объемом памяти, требуемой на выполнение алгоритма. Если две программы выполняют одни и те же задачи с точки зрения пространственной эффективности, то более эффективной будет та программа ,которая требует меньше памяти.
2.Временная эффективность программы- определяется временем выполнения программы.
Для оценки этого времени используется показатель, называемый О-сложностью или порядком сложности алгоритма.
Порядок сложности алгоритма, это функция доминирующая над точным выражением временной сложности.
Функция f(n) где n –кол-во обработанных данных имеет порядок сложности О(g(n)), если имеется константа k и счетчик n0 такие, что f(n)<= k* g(n) при n>= n0
Правила определения О-сложности:
1.При определении О-сложности постоянные множители не учитываются.
О(k*f(n)= O(f(n))
2. О-сложность произведений двух функций равна произведению их О-сложностей.
O(f(n)* g(n))=0(f(n))*0(g(n))
3. О-сложность суммы 2-х функций равна доминанте О-сложностей этих функций.
O(f(n)+ g(n))=доминанте0(f(n)) or 0(g(n))
Пр.О(n5+n2)=O(n5)
Виды О-сложности:
О(1)-время выполнения алгоритма не зависит от объема входных данных
О(n)(Линейная)в зависимости от количества элементов время будет расти линейно. Например оператор цикла for while
O(n2)полиномиальная(квадратичная)сложность.ПР.:вложенный цикл for ()
{for()…
}
O(n3)кубическая-двойная вложенность
О(log n)-логарифмическая, присуща алгоритмам в которых проблема разделена на множество мелких и они решены по отдельности.
О(nlog n)- логарифмическая-соответствует алгоритмам в которых проблема разделена на множество мелких, которые решены по отдельности и результаты решений объединяются
Чем меньше порядок О-сложности, тем меньше время выполнения.
Для сокращения порядка О-сложности требуется попытаться уменьшить глубину вложенности, уменьшить количество операндов в циклах с большой глубиной вложенности.
Для большинства алгоритмов уже определены значения О-сложностей притом для каждого алгоритма определенны 3 значения О-сложностей(в среднем, в худшем, и в лучшем случаях)