Основы программирования
..pdfМинистерство науки и высшего образования РФ ФГБОУ ВО «Томский государственный университет систем управления и радиоэлектроники»
Кафедра безопасности информационных систем (БИС)
С.С. Харченко
ОСНОВЫ ПРОГРАММИРОВАНИЯ
Учебно-методическое пособие по курсовой работе
для студентов специальностей и направлений
10.03.01– «Информационная безопасность»,
10.05.02– «Информационная безопасность телекоммуникационных систем»,
10.05.03 – «Информационная безопасность автоматизированных систем»,
10.05.04 – «Информационно-аналитические системы безопасности»
В-Спектр Томск, 2019
УДК 004.42 ББК 32.973
X 22
Х 22 Харченко С.С. Основы программирования: учебно-методическое пособие по курсовой работе. – Томск: В-Спектр, 2019. – 48 с.
ISBN 978-5-91191-429-5
Учебно-методическое пособие по курсовой работе содержит теоретические сведения и методические указания, необходимые для выполнения курсовой работы по дисциплине «Основы программирования», и предназначено для студентов 2-го курса, обучающихся по специальностям: 10.05.03 «Информационная безопасность автоматизированных систем», 10.03.01 «Информационная безопасность», 10.05.02 «Информационная безопасность телекоммуникационных систем», 10.05.04 «Информационно-аналитические системы безопасности». Охарактеризованы требования к курсовой работе, описана структура, методика выполнения и защиты курсовой работы. В начале данного пособия, приводится глава с заданием для выполнения курсовой работы по данной дисциплине, далее в главах рассмотренно поэтапное выполнение курсовой работы на примере.
УДК 004.42 ББК 32.973
ISBN 978-5-91191-429-5
© Каф. безопасности информационных систем ТУСУР, 2019 © С.С. Харченко, 2019
|
СОДЕРЖАНИЕ |
|
Предисловие ............................................................................................................ |
4 |
|
Глава 1. Задание на курсовую работу ................................................................... |
5 |
|
Глава 2. Проектирование разрабатываемого приложения .................................. |
6 |
|
Глава 3. Разработка приложения на языке программирования C# .................. |
11 |
|
Глава 4. |
Использование sqlite в разработке приложений на языке |
|
программирования C# .......................................................................................... |
27 |
|
Глава 5. |
Тестирование приложения .................................................................... |
32 |
Глава 6. |
Варианты заданий на курсовую работу ............................................... |
37 |
Литература............................................................................................................. |
45 |
|
Приложение А. Форма задания на курсовую работу. ....................................... |
46 |
3
ПРЕДИСЛОВИЕ
Цель дисциплины «Основы программирования» – научить студентов строить алгоритмы и реализовывать их на компьютере в виде программ. Решать различные задачи по обработке информации и моделированию, применяемые при разработке программных и программно-аппаратных компонентов защищенных автоматизированных систем.
Таким образом, согласно ФГОС процесс изучения дисциплины «Основы программирования» направлен на формирование следующих компетенций:
ОПК-3 способностью применять языки, системы и инструментальные средства программирования в профессиональной деятельности;
ОПК-4 способностью понимать значение информации в развитии современного общества, применять информационные технологии для поиска и обработки информации;
В результате изучения дисциплины обучающийся должен:
–знать язык программирования высокого уровня.
–уметь проектировать и кодировать алгоритмы с соблюдением требований к качественному стилю программирования; реализовывать основные структуры данных и базовые алгоритмы средствами языков программирования.
–владеть навыками разработки, документирования, тестирования и отладки программного обеспечения в соответствии с современными технологиями и методами программирования; навыками разработки программной документации; навыками программирования с использованием эффективных реализаций структур данных и алгоритмов.
Указанные задачи частично могут быть решены с помощью данного учебного пособия.
4
Глава 1
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ
Выполнение курсовой работы по дисциплине «Основы программирования» требует решения одной из перечисленных в разделе 6 задач и, как результат, создания программы на языке программирования C# и написания пояснительной записки к работе. Использование другого языка программирование и выбор произвольной темы допускается только после согласования с преподавателем. Порядок и объем работ, а также требования к содержанию представлены ниже.
На первом занятии необходимо согласовать тему курсовой работы и стек используемых технологий с преподавателем, после чего оформить задание на курсовую работу, пример задания на курсовую работу представлен в приложении А. Пояснительная записка должна содержать следующие разделы:
–титульный лист;
–реферат на русском и английском языках;
–задание на работу;
–содержание;
–обзор;
–проектирование;
–тестирование;
–отладка(опционально);
–заключение;
–список использованных источников;
–приложение А – обязательное(исходные коды программы); Содержательная часть разделов пояснительной записки рассматрива-
ется в разделах 2–5 данного пособия. Основные требования предъявляемые к разрабатываемому программному обеспечению:
–десктопное приложение;
–наличие механизма авторизации и регистрации пользователя;
–взаимодействие с базой данных;
–наличие раздела помощи с краткой инструкцией пользователя; Особых требований к количеству таблиц базы данных не предъявля-
ется. Перед тем как приступить к выполнению курсовой работы необходимо в полном объеме ознакомиться с данным пособием. В ходе выполнения курсовой работы рекомендуется ознакомится со списком литературы, который прилагается к данному пособию. Пояснительная записка должна быть оформлена в соответствии ОС ТУСУР 01–2013 или ГОСТ 7.32–2017.
5
Глава 2
ПРОЕКТИРОВАНИЕ РАЗРАБАТЫВАЕМОГО ПРИЛОЖЕНИЯ
Проектирование разрабатываемого программного обеспечения один из самых главных этапов разработки, на этом этапе необходимо определиться с технологиями и алгоритмами, которые будут использованы. Проектирование программного обеспечения регламентируется ГОСТ Р 51904-2002 «Программное обеспечение встроенных систем. Общие требования к разработке и документированию». В рамках курсовой работы этап проектирование должен содержать следующие разделы:
–обоснование выбранных технологий;
–описание алгоритма;
–определение временной сложности алгоритма;
–блок-схема основного алгоритма;
–проектирование структуры программы;
–база данных.
Обоснование выбранных технологий
В разделе «Обоснование выбранных технологий» необходимо изучить разнообразные средства разработки, языки программирования и фреймворки, которые позволяют разрабатывать полноценные десктопные и/или мобильные приложения. Провести их сравнительных анализ, для этого выбрать наиболее значимые для Вас критерии и построить сравнительную таблицу рассматриваемых средств. После чего сделать выводы о наиболее подходящих для вас технологий. Пример сравнения языков программирования представлен на табл. 1.
|
|
|
Т а б л и ц а 1 |
|
|
Сравнение языков программирования |
|||
|
Парадигма |
Типизация |
Управление памятью |
|
С++ |
ООП, Императив |
Статическая, сильная |
Руководство |
|
С# |
ООП, Императив |
Статическая, явная |
Автоматическое |
|
Java |
ООП, Императив |
Статическая, сильная |
Автоматическое |
|
Python |
ООП, Императив |
Динамическая, сильная |
Автоматическое |
|
Описание алгоритма
В разделе «Описание алгоритма» необходимо дать словесное описание алгоритма по шагам и представить его в виде блок-схемы. Например, перед нами стоит задача: «Написать программу, которая приглашает ввести последовательно дробных чисел и вычисляет их среднее арифметическое», тогда алгоритм решения на естественном языке можно представить в следующем виде:
Алгоритм А:
А1. I ←1;
6
А2. Ввод a;
А3. S ← S + a; А4. I ← I +1;
А5. Если I ≤ 5, то возврат к А2, иначе возврат к А6;
А6. S ← S/5;
А7. Вывод S;
Блок-схема алгоритма А представлена на рис. 1.
Рис. 1. Блок-схема алгоритма А
Алгоритмы необходимо составить для всех подзадач, которые предстоит решить в ходе выполнения курсовой работы. При составлении блок-схем алгоритмов необходимо руководствоваться – ГОСТ 19.701–90 «Единая система программной документации (ЕСПД). Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения».
Определение временной сложности алгоритма
Под временной сложностью алгоритма T стоит понимать некоторую функцию времени работы алгоритма от объема входных данных [1]. Обозначается как O (произносится как «о большое»). Существует несколько видов функций временной сложности, они представлены ниже в порядке возрастания времени выполнения алгоритма:
1.C
2.log(log(N))
3.log(N)
4.N^C, 0<C<1
5.N
6.N*log(N)
7
7.N^C, C>1
8.C^N, C>1
9.N!
где С – некоторая константа, cсуществуют и другие более сложные виды функций временной сложности. Также стоить отметить, что существуют и другие нотации временной сложности кроме O, в рамках данной работы они рассматриваться не будут. О показывает временную сложность алгоритма при наихудшем стечении обстоятельств.
Например, перед нами стоит задача сортировки массива из N чисел, тогда N – это и есть объем входных данных. Как вам уже известно существует некоторое количество алгоритмов способных решить эту задачу, все они обладают разной временной сложностью. Временная сложность алгоритмов сортировки представлена в табл. 2.
|
Т а б л и ц а 2 |
Временная сложность алгоритмов сортировки |
|
Алгоритм |
Временная сложность |
Быстрая сортировка |
O(N^2) |
Сортировка слиянием |
O(N*log(N)) |
Пирамидальная сортировка |
O(N*log(N)) |
Пузырьковая сортировка |
O(N^2) |
Сортировка вставками |
O(N^2) |
Сортировка выбором |
O(N^2) |
Блочная сортировка |
O(N^2) |
Рассмотрим нахождение вида функции временной сложности на примере сортировки пузырьком. Алгоритм сортировки пузырьком использует вложенные циклы. Во внутреннем поочередно сравниваются элементы, если они стоят в неправильном порядке, то выполняется перестановка элементов местами. Внешний цикл выполняется до тех пор, пока в массиве найдется хоть одна пара неотсортированных элементов. Трудоемкость функции перестановки местами элементов в массиве не зависит от объема входных данных (N), следовательно, ее можно принять равной 1(т.е., постоянная). В результате выполнения внутреннего цикла, наибольший элемент смещается в конец массива неупорядоченной части, поэтому через N таких вызовов массив в любом случае окажется отсортирован. Если же массив отсортирован, то внутренний цикл будет выполнен лишь один раз. Математически это представляется следующим образом:
|
N N 1 |
|
N |
|
O(N2 ) , |
|
T O |
|
1 |
O |
N |
||
|
|
|
|
|
|
|
i 1 j 1 |
|
i 1 |
|
|
где T – временная сложность алгоритма.
8
Проектирование структуры программы
В этом разделе необходимо построить две диаграммы – диаграмму прецедентов и диаграмму классов. Диаграмма прецедентов определяет функциональные требования к системе и описывает типичные взаимодействия между пользователями системы и самой системой, а также описывает процесс ее функционирования.
Для построения диаграммы прецедентов, используется язык графического описания моделей – UML [2]. Для построения диаграммы прецедентов используются следующие термины UML – сценарий, актор, прецедент, include, граница системы. Примеры простой диаграммы прецедентов представлены на рис. 2, 3.
Система
Прецедент
Актор |
|
Прецедент |
|
|
|
Актор
Рис. 2. Общий вид диаграммы прецедентов
Часы
Поменять
батарею
|
|
Задать |
|
Часовщик |
|||
|
время |
Посмотреть
время
Пользователь Рис. 3. Пример диаграммы прецедентов для ручных часов
9
Для построения диаграммы классов также описывается при помощи языка UML и демонстрирует общую структуру иерархии классов системы, их атрибутов методов и интерфейсов. В нотации UML существует 6 основных типов взаимодействия классов, каждый со своим графическим обозначением
(рис. 4)
Рис. 4. Обозначение типов взаимодействия классов в языке UML
Для задания видимости членов класса также используются специальные графические обозначения: «+» – public доступ, «-» – private доступ, «#» – protected доступ (рис. 5).
Рис. 5. UML диаграмма взаимодействия классов
База данных
В разделе «Базы данных» необходимо построить структуру базы данных, описать основные сущности на концептуальном уровне использую ER-модель (модель объект–отношение) [3]. Определить какие таблицы вам необходимы и выделить первичные и внешние ключи планируемой базы данных. Пример простой ER-диаграммы представлен на рис. 6.
Рис. 6. ER-диаграмма
10