Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования

..pdf
Скачиваний:
8
Добавлен:
05.02.2023
Размер:
2.02 Mб
Скачать

Министерство науки и высшего образования РФ ФГБОУ ВО «Томский государственный университет систем управления и радиоэлектроники»

Кафедра безопасности информационных систем (БИС)

С.С. Харченко

ОСНОВЫ ПРОГРАММИРОВАНИЯ

Учебно-методическое пособие по курсовой работе

для студентов специальностей и направлений

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