Министерство образования и науки Российской Федерации Сибирский федеральный университет
МЕЖДИСЦИПЛИНАРНЫЙ КУРСОВОЙ ПРОЕКТ БАЗОВОГО УРОВНЯ Учебно-методическое пособие
Электронное издание
Красноярск СФУ 2016
УДК 378.091.313(07) ББК 74.480.281.25я73 М 430 Составители: Редькина Александра Васильевна Редькин Андрей Владимирович М 430 Междисциплинарный курсовой проект базового уровня. : учеб.-метод. пособие для курсового проектирования [Электронный ресурс] / сост. : А.В. Редькина, А.В. Редькин. – Электрон. дан. – Красноярск : Сиб. федер. ун-т, 2016. – Систем. требования : PC не ниже класса Pentium 1 ; 128 Mb RAM ; Windows 98/XP/7 ; Adobe Reader V8.0 и выше. – Загл. с экрана. Учебно-методическое пособие составлено в соответствии с рабочей программой курса «Междисциплинарный курсовой проект базового уровня» для студентов, обучающихся по направлению 09.03.01 "Информатика и вычислительная техника". Приводится порядок выполнения курсового проекта, структура пояснительной записки, тематика курсовых проектов. Предназначена для студентов направления 09.03.01 "Информатика и вычислительная техника". УДК 378.091.313(07) ББК 74.480.281.25я73 © Сибирский федеральный университет, 2016
Электронное учебное издание Подготовлено к публикации издательством Библиотечно-издательского комплекса Подписано в свет 28.10.2016. Заказ № 3151 Тиражируется на машиночитаемых носителях Библиотечно-издательский комплекс Сибирского федерального университета 660041, г. Красноярск, пр. Свободный, 82а Тел. (391) 206-26-67; http://bik.sfu-kras.ru E-mail:
[email protected]
2
Содержание Введение 1. Этапы выполнения курсового проекта 2. Структура пояснительной записки к курсовому проекту и требования к ее оформлению 3. Методические рекомендации по выполнению курсового проекта и примерные задания на курсовой проект Библиографический список
3
4 6 14 17 39
Введение Курсовое проектирование является одной из важнейших форм индивидуальной работы студентов. Целью курсового проектирования является систематизация, закрепление и углубление теоретических знаний студентов в алгоритмизации, создании программ различной степени сложности, а также формирование у них соответствующих умений и навыков работы в современных инструментальных средах, приобретение и развитие практических навыков самостоятельной работы. Курсовой проект состоит в алгоритмизации и разработке приложений на языке программирования С++, моделирующих процедуры работы с динамическими списками, с графическими объектами, моделирующих интеллектуальные игры. В процессе решения задачи необходимо разработать дружественный интерфейс, использующий меню, учитывающий права доступа различных групп пользователей. Междисциплинарный курсовой проект базового уровня – самостоятельная работа студента по проектированию и разработке программного обеспечения, требующая применения знаний, полученных в курсах «Основы программирования», «Информатика», «Алгоритмы и структуры данных». Студент получает первый опыт разработки сложных программ, что способствует формированию соответствующих навыков. Курсовой проект может служить базой для последующего выполнения студентом выпускной квалификационной работы. В процессе выполнения курсового проекта у студентов формируются навыки самостоятельной работы с научно-технической литературой, выполнения библиографического поиска и его использования при анализе возможных вариантов проектных решений; развитие навыков математической формулировки поставленной задачи и самостоятельного выбора методов ее решения; приобретение навыков проведения экспериментов, сбора данных и программирования на ПЭВМ основных алгоритмов обработки данных. Курсовой проект позволяет развивать творческое мышление студента. При выполнении междисциплинарного курсового проекта базового уровня студент должен овладеть основами постановки прикладных задач, их функционального анализа, провести декомпозицию прикладной задачи, овладеть основами проектирования прикладного программного обеспечения, его разработки, отладки и тестирования в инструментальных средах. Темы курсовых проектов предлагаются преподавателями, ежегодно уточняются и проходят обсуждение на кафедре. Студент может предложить свою тему курсового проекта, не вошедшую в перечень. При достаточной обоснованности такое предложение может быть принято преподавателем, а тема работы закреплена за студентом. Утверждение тем курсовых проектов происходит на заседании кафедры в начале учебного года. Курсовой проект выполняется студентом в течение семестра самостоятельно. Научный руководитель выдает студенту конкретное задание, проводит регулярные периодические консультации для студента по вопросам, связанным 4
с выполнением курсового проекта, контролирует в течение семестра ход его выполнения. Выбор среды программирования для выполнения задания осуществляется студентом по согласованию с научным руководителем. Результаты курсового проекта оформляются студентом согласно требованиям, указанным в данном учебно-методическом пособии и предъявляемым к курсовым проектам стандартом предприятия [1]. Курсовой проект защищается студентом с демонстрацией полученных результатов в соответствии с установленными деканатом и кафедрой порядком и сроками защиты. Курсовой проект должен быть завершен и представлен научному руководителю по графику, но не позднее, чем за 4 недели до окончания семестра. Задачи курсового проектирования: 1. Изучить теоретический материал по теме проекта и особенности применения на практике полученных теоретических знаний по дисциплинам «Основы программирования», «Информатика», «Алгоритмы и структуры данных». 2. Решить прикладную задачу из конкретной предметной области, создав программный продукт в одной из инструментальных сред. 3. Оформить результаты выполнения курсового проекта в виде пояснительной записки, в соответствии требованиями, предъявляемыми стандартом предприятия [1]. Вместе с пояснительной запиской студент предъявляет файл (файлы) исходного текста работающей программы на диске.
5
1. Этапы выполнения курсового проекта Основные этапы выполнения курсового проекта приведены в табл. 1. № 1
Задание Выбор темы курсового проекта. Разработка технического задания.
2
Поиск источников. Обработка и анализ материала.
3
Анализ предметной области
4
Декомпозиции задачи (нисходящее проектирование). Проектирование программного обеспечения.
5
Реализация созданного проекта в виде программного приложения.
6
Анализ полученных результатов решения задачи, выводы по курсовому проекту.
Таблица 1 Методические указания Выбор темы осуществляется совместно с научным руководителем (примеры заданий в приложении 1). При разработке технического задания конкретизируются цели, и задается последовательность этапов выполнения курсового проекта. Проводится поиск литературных и интернет источников по теме проекта, а также программных продуктов – аналогов, решающих прикладную задачу, аналогичную сформулированной в рамках курсового проекта. Дается сравнительная характеристика найденных источников, указываются достоинства и недостатки существующих программных продуктов. На основании анализа составляется эскизная схема алгоритма, отражающая предварительный порядок и список функций, которые будет реализованы в программном продукте. Выделяются основные понятия предметной области, на их основе определяются структуры данных программы. Устанавливается суть явлений, процессов и взаимосвязей переменных, характерных для предметной области. Уточняется проблема, список действий, составленный на этапе 2. Определяется также перечень действий, недопустимых для исследуемого объекта. Разбиение по функциональному назначению поставленной задачи на серию меньших более простых задач (на основе эскизной схемы). На основе декомпозиции проектируются модули, которые представляют собой функционально самостоятельные части программы, взаимодействующие друг с другом по определенным правилам. Реализация отдельных модулей. Композиция – сборка и увязка отдельных модулей в единую систему с её проверкой на реализуемость в целом, совместимость и согласованность параметров (восходящее проектирование). Дополнительно разрабатывается пользовательский интерфейс приложения. Приложение тестируется и исправляются обнаруженные ошибки. Сравниваются полученные результаты с постановкой задачи, определяются степень выполнения поставленных целей, формулируются выводы. Отмечаются возможные направления и пути дальнейшего развития и совершенствования разработанного программного продукта.
6
Окончание табл. 2 № 7
8
Задание Оформление пояснительной записки к курсовому проекту и созданного программного продукта. Защита курсового проекта.
Методические указания Пояснительная записка оформляется в соответствии с требованиями стандарта предприятия [1] и требованиями, приведенными в данном методическом пособии, и сдается студентом на кафедру в установленный срок. На защите в устной форме излагается цель, задачи, использованные методы анализа, моделирования, проектирования и программирования. Сообщаются полученные результаты. После устного сообщения студент демонстрирует сеанс работы с программным продуктом, его функциональные возможности.
Техническое задание (ТЗ) содержит основные технические требования, предъявляемые к разрабатываемому программному обеспечению. В ТЗ указываются назначение программы, ее основные технические характеристики, показатели качества, область ее применения, стадии разработки, сроки исполнения, состав программной документации и т.д., а также особые требования, обусловленные спецификой конкретного программного обеспечения. Правильно разработанное техническое задание позволяет студенту: • представить готовую программу; • выполнить поэтапно проверку готовой программы (приемочное тестирование – соответствие продукта функциональным требованиям, проведение испытаний); • уменьшить число ошибок, связанных с изменением требований в результате их неполноты или ошибочности; • понять суть задачи, показать преподавателю технический облик будущей программы, • спланировать выполнение работы и выполнять её по намеченному плану, отказаться от выполнения работ, не указанных в ТЗ; Со своей стороны, на основании ТЗ преподаватель может: • убедиться, что студент правильно понял задание; • требовать от студента соответствия программы всем условиям, оговоренным в ТЗ. Техническое задание пишется в свободной форме и может, например, содержать такие пункты: 1. Обзор. Здесь рассматривается назначение программы (на основе выбранной темы), требования к программе (на основе общих требований к выбранной тематике); ограничения, накладываемые на реализацию; выбираются платформа, язык программирования и т.п. 2. Модель программы. Описывается словесно пользовательский интерфейс программы, ее поведение. 3. Структура программы. Описываются основные модули программы, их интерфейсы и взаимодействие. 7
4. Форматы входных и выходных данных. Описываются форматы файлов, которые будут использованы в программе. 5. Тестирование. Для каждого разрабатываемого модуля программы должны быть приведены тесты, которые позволят проверить корректность работы этого модуля. 6. График выполнения курсового проекта. По пунктам расписан порядок выполнения работы, какие модули программы, в каком порядке будут реализованы и т.п. График выполнения курсового проекта № этапа Дата завершения (№ недели) Число баллов Оценка руководителя (по плану) (баллов фактически) планируемая фактическая 1 4 15 2 6 10 3 7 10 4 8 10 5 10 20 6 12 10 7 14 15 8 15 10 Основной смысл тестирования программы состоит в проверке того, насколько программный продукт в том виде, в котором он получился, соответствует требованиям, установленным в процессе разработки технического задания. Разработка плана тестирования состоит из следующих шагов: 1) определение последовательности действий, которые позволяют проверить как работу отдельных функций, так и их совокупности; 2) подготовка входных данных, для которых известны результаты тестирования; 3) определение места расположения тестовых данных. Разработка алгоритма процедуры тестирования состоит в разработке процедуры в соответствии с составленным выше планом тестирования. Эту процедуру можно представить блок-схемой с соответствующими комментариями. Оценка результатов тестирования – содержит сравнение выходных данных работы отдельных процедур с контрольными значениями, которые получены в результате выполнения процедуры тестирования. Одной из проблем при разработке программного обеспечения является переносимость на уровне исходного кода. Под переносимостью программного обеспечения на уровне исходного кода понимается возможность компиляции исходных кодов и сборки работоспособного исполняемого файла более чем на одной программной или аппаратной платформе. Например, переносимой можно считать программу, которая без модификации исходного кода компилируется и работает одновременно в операционных системах Windows и Linux, или Linux и FreeBSD, или FreeBSD и Symbian. 8
Переносимости на уровне исходных кодов можно добиться, например, такими средствами языка программирования как средства условной компиляции в языках C/C++ (#ifdef). Это самый трудоемкий способ достижения переносимости. Однако, если в программе не предусматривается создание развитого графического интерфейса, то этот способ может оказаться самым подходящим. Язык программирования C++ наиболее удобен, если выбран такой способ обеспечения переносимости. Переносимость можно также обеспечить путем разработки программы на основе какой-либо существующей кроссплатформенной библиотеки. В этом случае, вопросы переносимости уже решены разработчиками библиотеки, программа пользуется предлагаемым API и переносимость достигается автоматически. Использование кроссплатформенной библиотеки предпочтительно тогда, когда программа должна иметь развитый графический интерфейс пользователя. В качестве такой кроссплатформенной библиотеки рекомендуется воспользоваться библиотекой wxWidgets[4] или Qt[5]. Эти библиотеки хорошо документированы, имеют большое количество примеров разного уровня сложности и реализованы для многих языков программирования, в частности, для языков программирования C++, Python, Perl. Существуют и другие способы обеспечения переносимости программ, но они требуют дополнительных знаний и опыта, и будут рассмотрены в других курсах. В [6] даются советы, следование которым значительно облегчит отладку программного кода и его проверку преподавателем. Техническое задание пишется до написания программы. Это не значит, что пока не написано ТЗ, нельзя написать ни строчки программного кода. Конечно, придется экспериментировать, изучать возможности выбранных средств реализации, прежде чем сможете составить полноценное ТЗ. Важно, что программа должна быть написана на основе технического задания и в соответствии с ним, а не техническое задание по уже готовой программе, как это иногда бывает. Пояснительная записка является «вводным» документом. В ней должна быть информация о структуре работы. Что это за работа (подробно), с чего начать проверку (по вашему мнению), каким образом развернуть исходные коды и скомпилировать программу. Формально, за выполнение работы можно получить максимум 100 баллов. Оценке “отлично” соответствует 80 баллов и более. Оценке“ хорошо” соответствует 70-79 баллов. Оценке “удовлетворительно” соответствует 60-69 баллов. Баллы выставляются за каждый вовремя выполненный этап работы. Результаты выполнения каждого этапа демонстрируются преподавателю на консультациях. Позднее выполнение этапа влечет за собой снижение балла на 3 единицы в неделю. Небрежность в оформлении технического задания, документации, программного кода, влечет за собой снижение баллов на 10-30 %. За нестандартные решения (использование объектно-ориентированного языка программирования, системы контроля версий, кроссплатформенной биб9
лиотеки, добавление в программу поддержки работы по сети, и т.п.) будут начисляться дополнительные баллы. Количество зарабатываемых таким образом баллов оговаривается с преподавателем и назначается индивидуально. В ходе выполнения курсовой работы студент должен: – посещать консультации научного руководителя в соответствии с календарным планом; – регулярно отчитываться перед научным руководителем о выполнении соответствующих этапов работ; – изучить литературу и другие источники по теме, собрать и проанализировать необходимый материал; – обосновать выбранные структуры данных; – спроектировать и реализовать программный продукт, решающий прикладную задачу; – грамотно оформить пояснительную записку к курсовой работе. Руководитель курсовой работы должен: – определить тему курсовой работы; – обсудить содержание и структуру курсовой работы; – проверить полноту библиографического списка, наличие и доброкачественность первичных материалов; – проконтролировать календарный план выполнения работы и ее оформление; – проследить уровень владения и использования студентом научной терминологии, – проконтролировать качество разработки и реализации студентом программного продукта; – помочь студенту проанализировать полученные результаты и сформулировать выводы по курсовой работе. 2. Структура пояснительной записки к курсовой работе и требования к ее оформлению В состав пояснительной записки входят: – титульный лист; – реферат; – содержание; – введение; – основная часть; – заключение; – список использованных источников; – приложения. Реферат отражает краткое изложение курсового проекта и должен содержать общие сведения: наименование темы работы; количество страниц, иллю10
страций, таблиц, формул, приложений, использованных источников, количество листов графического материала; перечень ключевых слов: не более 15 слов или словосочетаний из текста. Текст реферата должен отражать цель, задачи, актуальность и новизну работы, а также выводы, рекомендации по практической реализации результатов работы в производстве, научных исследованиях, учебном процессе. Текст должен быть предельно кратким и информативным. Объем текста реферата – не более одной страницы. Введение составляет вступление к изложению сущности работы. Оно должно содержать оценку современного состояния в данной области науки и техники, а также содержать целевую установку выполняемой работы (1-1,5 страницы). Во введении раскрываются актуальность и значение темы, выполняется краткий аналитический обзор. Основная часть должна включать разделы, соответствующие выданному заданию. В разделах приводятся текстовые и иллюстрационные материалы, отражающие сведения о состоянии поставленных в задании вопросов, методах и методиках их решения, необходимые расчеты, описания, выводы и пр. Основной раздел работы должен содержать результаты решения конкретной прикладной задачи и отражать итоги промежуточных заданий на этапах 2-8 выполнения работы (табл.1). Основная часть пояснительной записки курсового проекта, связанного с разработкой программного обеспечения, включает в себя следующие подразделы: • подходы к решению поставленной задаче (на основе предметной области определяются и обосновываются структуры данных программы, устанавливается взаимосвязей переменных, характерных для предметной области, уточняется список действий, составленный на этапе 2, по которому строится эскизная схема алгоритма); • список идентификаторов (приводятся основные идентификаторы и их назначение); • обоснование выбора алгоритма для решения поставленной задачи из известных алгоритмов или создание оригинального алгоритма с описанием его правильности; • подробное описание алгоритма; • инструкция для пользователя, в которой описывается, как применять созданную программу; • описание тестирования программы; • заключение (результаты применения программы для решения поставленной задачи); • листинги разработанных программ, помещаемые обычно в приложения. 3.5.5 Графическая часть курсового проекта программного вида может содержать схемы примененных алгоритмов, структуры исходных и обработанных в программе данных, графические результаты работы программы и т.д.
11
Приводится обзор литературы и других источников, результат поиска аналогов с обязательными ссылками на найденные источники. Изучение источников по теме, как правило, предшествует сбору и анализу материала. Поиск литературы осуществляется студентом самостоятельно с помощью каталогов научной библиотеки, библиографических указателей и справочников, интернет. Анализ предметной области может иллюстрироваться рисунками, фотографиями, таблицами, схемами, диаграммами, графиками и т.д. Они должны не только иллюстрировать основные положения работы, но и служить наглядными доказательствами и обоснованиями для последующих заключений и выводов. При разработке модели предметной области описываются структуры данных, соответствующие понятиям предметной области, определяется состав их атрибутов и операций, раскрываются их связи между собой и алгоритмы их взаимодействия в процессе решения прикладной задачи. Результаты проектирования графически изображается в виде диаграмм, блок-схем. Излагаются пути решения проблем, методы решения и их сравнительную оценку. Описание реализации программного продукта включает пояснение особенностей основных функций и используемых алгоритмов. Описывается пользовательский интерфейс и последовательность работы с ним. Описание сеанса работы с программным продуктом целесообразно иллюстрировать копиями соответствующих окон пользователя. Таким образом, обязательными пунктами основного раздела должны быть: эскизная схема алгоритма, список идентификаторов и их назначение, список модулей и их назначение, описание особенностей основных алгоритмов и функций, словесное описание алгоритма, инструкции для пользователей. Заключение в курсовом проекте включает обсуждение полученных результатов, приводятся выводы по работе. Выводы должны полностью соответствовать цели работы и характеризовать ее результаты. Они являются концентрацией основных положений работы и поэтому не могут развивать идеи, не вытекающие полностью из ее материалов. В заключении дается оценка полноты решений поставленных задач, полученных результатов, преимуществ принятых решений и рекомендации по их использованию. В список использованной литературы и других источников включаются обязательно все используемые работы, ресурсы Интернет и др. Список используемых источников оформляется в соответствии с библиографическими требованиями. Приложение(я) включается в работу в случае необходимости. В приложениях приводятся листинги исходных текстов программ с основными комментариями, большие блок-схемы алгоритмов, таблицы экспериментальных данных, результатов работы программы и т.д., если они занимают слишком много места в основном разделе работы. Материал приложений должен способствовать более четкому изложению сути проекта, иллюстрировать отдельные положения и результаты курсовой работы.
12
Язык пояснительной записки курсовой работы должен быть четким, ясным, изложение – логичным и последовательным. Следует избегать громоздких предложений, повторений, канцеляризмов («на основании вышеизложенного…», «исходя из…» и т.д.). Не применяются сокращения, кроме общепринятых. Все грамматические, стилистические ошибки тщательно выверяются и исправляются. Графические материалы должны быть наглядными. Диаграммы и графики выполняются с соблюдением масштаба. Каждая таблица в тексте должна иметь общий заголовок, номер, четкое обозначение строк и столбцов. В тексте дается анализ таблицы, где не повторяются приводимые в таблице показатели, а даются заключения и обобщения из ее материалов. Подписи под диаграммами и графиками должны четко и полностью объяснять отраженные на них явления. Все страницы пояснительной записки скрепляются и оформляются в обложку. К пояснительной записке прикрепляется диск, или любой другой носитель с файлами программ, представляемых и описанных в курсовом проекте. Законченный курсовой проект должен быть сдан студентом в установленный срок на кафедру. Научный руководитель дает письменные замечания на представленную работу. По результатам защиты выставляется оценка за курсовой проект. Защита назначается за 4 недели до начала экзаменационной сессии (не позднее). 3. Методические рекомендации по выполнению курсового проекта и примерные задания на курсовой проект Типовые задания Общие требования Все программы, реализующие типовые задания, должны удовлетворять следующим требованиям: 1. Данные хранить в двоичных файлах. При обработке использовать динамические списки. Ввод и вывод данных осуществлять только через пользовательский интерфейс разрабатываемой системы. 2. Предусмотреть контроль правильности введенных данных. Например, при вводе даты, необходимо проконтролировать, что день – это целое число большее нуля и меньшее 29, 30, и т.д. 3. Предусмотреть поиск и сортировку данных по некоторым параметрам. 4. Предусмотреть интуитивно понятный интерфейс, использующий меню (графическое или текстовое) и разделение прав различных групп пользователей. Например, для задания 1-го варианта при заполнении данных о работнике должен предлагаться для выбора список подразделений предприятия, который был добавлен администратором и т.д. 5. Для организации меню использовать указатели на функции. 13
Варианты 1. Информационная система «Отдел кадров». Информация: работники – фамилия, имя, отчество, личный номер, дата рождения, образование, профессия, должность, номер подразделения, семейное положение, количество детей, название подразделения, руководитель. Операции: прием и увольнение работников, перевод работников из одного подразделения в другое, просмотр списка работников по какому-либо полю с каким-либо условием с коррекцией информации о работнике, вывод различных справок. Предусмотреть следующие группы пользователей: администратор, диспетчер, работник. 2. Информационная система «Автобусный парк». Информация: водители – фамилия, имя, отчество, личный номер, номер закрепленной машины; автобусы – номер автобуса, марка, номера водителей; маршруты – номер маршрута, номера автобусов, назначенных на данный маршрут. Операции: прием и увольнение водителя, назначение водителя на автобус, назначение и переназначение автобусов на маршруты, вывод различных справок. Предусмотреть следующие группы пользователей: администратор, диспетчер, водитель, пассажир. 3. Информационная система «Регистратура поликлиники». Информация: пациенты – фамилия, имя, отчество, дата рождения, домашний адрес, личный номер (шифр), лечащий врач; врачи – фамилия, имя, отчество, специальность, дата поступления на работу; карточки пациентов – шифр пациента, дата первичного приема, диагноз, дата выписки. Операции: запись пациента в поликлинику, удаление пациента, прием и увольнение врача, прием пациента врачом, различные справки (статистика). Предусмотреть следующие группы пользователей: администратор, регистратор, врач, пациент. 4. Информационная система «Хоккейный турнир». Информация: игроки – фамилия, имя, отчество, дата рождения, игровое амплуа, команда, количество забитых или пропущенных шайб; команды – название, город, тренер; матчи – дата проведения, команды, результат. Операции: прием игрока в команду и уход из команды, занесение данных об очередном матче, вывод турнирной таблицы с подсчетом очков и упорядочением команд, определение самого результативного игрока или самого надежного вратаря. Предусмотреть следующие группы пользователей: администратор, тренер, игрок. 5. Информационная система «Театр». Информация: актеры – фамилия, имя, отчество, дата рождения, список спектаклей, в которых занят актер, роли, исполняемые в данных спектаклях; спектакли – автор пьесы, название, постановщик, список действующих лиц и исполнителей; афиша – название спектакля, дата, время; билеты – дата, количество билетов разного типа (партер, ложи, балкон и др.). Операции: коррекция списка актеров и списка спектаклей; составление и коррекция афиши; продажа билетов на спектакли; справки (участие
14
актеров в различных постановках, информация по спектаклям и др.). Предусмотреть следующие группы пользователей: администратор, кассир, зритель. 6. Информационная система «Студенческое общежитие». Информация: студенты – фамилия, имя, отчество, дата рождения, номер студенческого билета, курс, группа, номер комнаты в общежитии; комнаты – номер, число мест, число свободных мест. Операции: заселение студента в общежитие, выписка из общежития, переселение из одной комнаты в другую, справки. Предусмотреть следующие группы пользователей: администратор, комендант, студент. 7. Информационная система «Морской транспорт». Информация: суда – номер судна, порт приписки, список грузов, размер свободного места в грузовых отсеках; груз – идентификатор, количество, пункт доставки; пункт доставки – название, список складов; склад – номер склада, количество свободного места. Операции – просмотр списка судов, перемещение грузов из судов в различных пунктах в склады, просмотр списка грузов для каждого склада и загрузку судов. Предусмотреть следующие группы пользователей: администратор, диспетчер, капитан. 8. Информационная система «Деканат». Информация: студенты – фамилия, имя, отчество, номер студенческого билета, группа, оценки по определенным дисциплинам; дисциплины – название, номер курса, признак зачета или экзамена. Операции – просмотр списка студентов по группам, просмотр списка дисциплин для определенного курса, назначение стипендий (обычных и повышенных), отчисление неуспевающих. Предусмотреть следующие группы пользователей: администратор, диспетчер деканата, студент. 9. Информационная система «Железнодорожный вокзал». Информация: рейсы – номер поезда, дата, время отправления, пункт отправления, пункт назначения, список вагонов, для каждого вагона; вагоны – тип, число мест, количество свободных мест, стоимость билета. Операции – продажа билетов на определенный рейс, сдача билетов в кассу на определенный рейс, справки. Предусмотреть следующие группы пользователей: администратор, кассир, пассажир. 10. Информационная система «Аэропорт». Информация: рейсы – номер, пункт отправления, пункт назначения, марка самолета, число мест, число свободных мест, список пассажиров; пассажиры – фамилия, имя, отчество, паспорт, рейс. Операции – продажа билетов на определенный рейс, возврат проданных билетов в кассу. Предусмотреть следующие группы пользователей: администратор, кассир, пассажир. 11. Информационная система «Торговое предприятие». Обслуживание поставок и заказов некоторой фирмы. Информация: сотрудники фирмы – фамилия, имя, отчество, личный номер, должность, стаж, номер сделки, заключенной работником; сделки (поставки товаров в фирму и заказы товаров други15
ми фирмами) – номер сделки, код клиента, код товара, количество товара; клиенты – код, название, юридический адрес клиента; товары – код, единица измерения, стоимость единицы. Операции – прием и увольнение работников, проведение сделок, статистика – общие доходы и расходы фирмы, получение информации о сделках, совершенных определенным сотрудником, информация о сделках с определенным клиентом. Предусмотреть следующие группы пользователей: администратор, диспетчер, работник. 12. Информационная система «Детали и изделия». Цех на предприятии (учет деталей и изделий). Информация: детали – код детали, название, номер склада, поставщик детали; изделия – код изделия, наименование, список деталей, входящих в изделие, номер склада; склад – номер, адрес; поставщик – код поставщика, адрес. Операции – коррекция информации, подбор деталей для изготовления какого-либо изделия (составление заказа на изготовление), операции с поставщиками (поставки новых деталей, прекращение поставок, изменение адреса и т.д.). Предусмотреть следующие группы пользователей: администратор, диспетчер, поставщик. 13. Информационная система «Предприятие». Информация: рабочий – фамилия, имя, отчество, список профессий (не более 4) с указанием разряда и даты получения данной профессии (особо выделена профессия, по которой рабочий работает в настоящее время). Операции: вывод справок – для рабочего указать все его профессии; для профессии вывести список тех, кто в данный момент выполняет данную работу, и список тех, кто ее может выполнять; коррекция данных – прием новых рабочих, получение рабочим новой профессии (если число профессий для данного рабочего стало больше 4, то самую старую профессию удалить из БД). Предусмотреть следующие группы пользователей: администратор, диспетчер, рабочий. 14. Информационная система «Библиотека». Информация: книги – название книги, автор, число страниц, цена, номер читательского билета и дата выдачи (если книга выдана); читатели – фамилия, имя, отчество, номер читательского билета, домашний адрес. Операции: выдача книг читателю, прием книг от читателя, поиск задолжников библиотеки, добавление и списывание книг фонда. Предусмотреть следующие группы пользователей: администратор, библиотекарь, читатель. 15. Информационная система «Склад». Информационная система склада позволяет учитывать поступление и уход товаров со склада, а также определять место хранения товаров на складе (нумерация стеллажей и полок). Предусмотреть следующие группы пользователей: администратор, кладовщик, работник. 16. Информационная система «Учет рабочего времени». Система учета рабочего времени позволяет руководителям выдавать задания и отсле 16
живать ход их выполнения, а исполнителям вести учет рабочего времени, затраченного на выполнение каждого задания. Предусмотреть следующие группы пользователей: администратор, диспетчер, рабочий. 17. Информационная система «Футбольные кассы». Система обеспечивает продажу билетов на футбол. Обзор: система продажи билетов позволяет покупать и сдавать билеты и абонементы на матчи, проходящие на одном стадионе с нумерованными местами через несколько одновременно работающих касс. Предусмотреть следующие группы пользователей: администратор, кассир, зритель. 18. Информационная система «Генеалогическое дерево». Система поддержки генеалогического дерева должна предоставлять следующие возможности: добавлять в дерево нового члена семьи (ребенка, супруга, предка), вносить изменения в узлы дерева (например, фиксировать смену фамилии или дату смерти), осуществлять поиск полезной информации по дереву (например, для указанного члена семьи находить его детей и наоборот). Предусмотреть следующие группы пользователей: администратор, пользователь. 19. Информационная система «Автобусное движение». Система поддержки планирования автобусного движения в районе, где имеется несколько автовокзалов, у каждого из которых есть ряд посадочных площадок. Между автовокзалами курсируют рейсовые автобусы, для каждого рейса фиксируется станция отправления и назначения, посадочная площадка, с которой происходит отправление, а также время посадки в автобус и время в пути. Система поддержки планирования автобусного движения должна обеспечивать возможность добавлять/удалять новые рейсы, вносить изменения в уже имеющиеся рейсы и выдавать полезную справочную информацию (например, для указанного автовокзала определять все рейсы, отправляющиеся с заданной посадочной площадки и т.д.). Предусмотреть следующие группы пользователей: администратор, диспетчер, пассажир. 20. Информационная система «Бакалейная лавка». Система обеспечивает поддержку заказ и учет товаров. В бакалейной лавке для каждого товара фиксируется место хранения (определенная полка), количество и поставщик этого товара. Система поддержки заказа и учета товаров должна обеспечивать возможность добавления/удаления нового товара, изменения информации об имеющемся товаре (например, при изменении количества товара и т.д.) и выдачи необходимой справочной информации (например, список товаров, количество которых необходимо пополнить). Предусмотреть следующие группы пользователей: администратор, менеджер, продавец. 21. Информационная система «Табло авиарейсов». На табло отражается следующая информация о рейсе: номер рейса, пункт вылета, время прилета по расписанию, ожидаемое время прилета, статус (отложен, вылетел, прилетел). 17
Система поддержки информационного табло должна обеспечивать добавление и удаление информации о рейсах, а также внесение изменений в состояние табло, если произошло некоторое событие (например, вылет рейса отложен на N минут, произошла посадка самолета указанного рейса и т.д.). Предусмотреть следующие группы пользователей: администратор, диспетчер, пассажир. Игры Общие требования Все программы, реализующие компьютерные логические игры, должны иметь следующие возможности: • начало игры на чистом поле (сброс предыдущей игры); • выбор противника (человек, компьютер, если применимо); • сохранение текущей ситуации в любой момент игрового процесса в файл, восстановление состояния игры из файла; • отмена ходов; • подсказка следующего хода; • контроль правильности ходов; • определение конца игры, отслеживание патовых ситуаций; • возможность задания произвольного размера поля (если применимо); • возможность визуального редактирования уровней (если применимо); • управление как с клавиатуры, так и мышью; • настройку клавиш управления; • использование горячих клавиш; • индикацию текущего счета (если применимо); • ведение списка чемпионов для каждого размера поля; • выбор уровня сложности игры (если применимо); • наличие инсталлятора (показ лицензии, выбор устанавливаемых компонентов, выбор пути установки и т.д.) Варианты 1. Моделирование игры "Кольца Рубика". Составить программу на языке программирования с++, реализующую игру "Кольца Рубика". Использовать графический режим работы монитора. На поле находятся два пересекающихся кольца, содержащие трехцветные шары, расположенные хаотично. Необходимо выстроить шары в соответствие с рис.1. Количество шаров одного (центрального) цвета 12, а остальных (внешних) 11. Перемещение шаров из одного кольца в другое происходит в точках их пересечения. Кольца могут вращаться по часовой стрелке и против часовой стрелки. Управление осуществляется с помощью манипулятора мыши. Предусмотреть ведение статистики и подсказки хода игроку. При каждом запуске игры должно быть новое расположение шаров.
18
Рис. 1. Игра "Кольца Рубика"
2. Моделирование игры "Два питона". Составить программу на языке программирования с++, реализующую игру "Два питона". Использовать графический режим работы монитора. На поле (примерно, как на рис.2) компьютер и игрок рисуют питонов. Проигрывает тот, кто первым пересечет границу поля или другого питона, или самого себя. Уровень интеллекта компьютера устанавливается пользователем, т.е. представляется возможность выбора перемещения питона компьютера как случайным образом, так и оптимальным. Предусмотреть ведение статистики.
Рис. 2. Игра "Два питона"
3. Моделирование игры "Китайские карточки". Составить программу на языке программирования с++, реализующую игру "Китайские карточки". Использовать графический режим работы монитора. На поле 10*20 позиций (примерно, как на рис.3) карточки с картинками. Карточки удаляются с поля парами только из внешних рядов с одинаковыми картинками. Картинки при удалении 19
Рис. 3. Игра "Китайские карточки"
соединяются ломаной линией, имеющей не более трех колен. Играющий стремится удалить как можно больше карточек. Карточки должны быть размещены так, чтобы был вариант полного удаления карточек. При каждом запуске игры должно быть новое расположение карточек. Предусмотреть ведение статистики. 4. Моделирование игры "Числовая головоломка". Составить программу на языке программирования с++, реализующую игру "Числовая головоломка".
Рис. 4. Игра "Числовая головоломка"
20
Использовать графический режим работы монитора. На поле 3*3 позиций (примерно, как на рис.4) справа расположены 9 карточек, разбитых на 4 сегмента, содержащих цифры. Пользователь перекладывает карточки на поле слева так, чтобы цифры на карточках в прилегающих друг к другу сегментах совпадали. Карточки должны быть размещены так, чтобы был вариант решения головоломки. Предусмотреть ведение статистики. 5. Моделирование игры "Геометрическая головоломка". Составить программу на языке программирования с++, реализующую игру "Геометрическая головоломка". Использовать графический режим работы монитора. На поле 15*15 позиций (примерно, как на рис.5) распложены прямоугольные блоки различных размеров. Один из блоков отмечен точками. Необходимо переместить этот блок на свободное место, отмеченное такими же точками. Перемещение блока возможно только на пустое место. Блоки должны быть размещены так, чтобы был вариант решения головоломки. Предусмотреть ведение статистики.
Рис. 5. Игра "Геометрическая головоломка"
6. Моделирование игры "Химическая головоломка". Составить программу на языке программирования с++, реализующую игру "Химическая головоломка". Использовать графический режим работы монитора. На поле 25*25 позиций (примерно, как на рис.6) распложены препятствия и атомы молекулы, представленной на картинке справа. Необходимо собрать молекулу на поле слева, при этом атомы могут перемещаться только по горизонтали и вертикали 21
и менять направление движения только в определенных местах. Атомы должны быть размещены так, чтобы был вариант решения головоломки. Предусмотреть ведение статистики. Каждый новый уровень должен быть сложнее предыдущего.
Рис. 6. Игра "Химическая головоломка"
7. Моделирование игры «Шахматные кони». На шахматном поле в произвольном порядке располагаются призы и две фигуры: конь, принадлежащий игроку, и конь, принадлежащий компьютеру. Игроку требуется собрать конем как можно больше призов. Уровень интеллекта компьютера устанавливается пользователем, т.е. предусмотреть возможность перемещения фигуры как случайным образом, так и оптимальным. Пользователю предоставляется возможность заменить свою шахматную фигуру, например, на ладью или слона. Если игрок попадает на позицию противника, то ему предоставляется два дополнительных хода. 8. Моделирование игры «Математический футбол». Цель – забить как можно больше голов. Поле – это прямоугольник, содержащий m×n клеток, с воротами на противоположных сторонах. Ворота – это область вне поля, при пересечении которой засчитывается гол. Граница поля – это стороны поля, кроме области ворот. Траектория – это след совершенных шагов. Угол клетки – пересечение линий, которыми разлиновано поле. Ход – это перемещение мяча из одного угла клетки поля в другой угол этой же клетки по горизонтали, вертикали или диагонали. Игроки выполняют ходы поочередно. Изначально обоим игрокам предоставляется по одному ходу. Игра начинается с центра поля. Если игрок пересекает траекторию мяча, то получает один дополнительный ход. Ес22
ли игрок встал в угол клетки, в которой побывали до него, то ему предоставляется возможность совершить дополнительный ход. После гола игра начинается с центра поля. Игра заканчивается, когда в центре поля нет места для хода. Дважды по одному пути никто не может пройти. 10. Моделирование игры «Крестики-нолики”. Игра ведется на квадратном поле фиксированного размера. Цель игры – построить непрерывную линию из пяти или более фишек (крестиков или ноликов) по горизонтали, вертикали или диагонали. Возможны два режима игры, когда выигрывает тот, кто первым построит линию, или кто больше наберет очков за определенное количество времени. Во втором случае количество построенных линий не ограничено, каждая фишка в линии приносит игроку одно очко. Для исключения возможности образования изолированных игр на одном поле и неоправданного увеличения размера поля следует установить максимально допустимое расстояние (не более пяти) от уже существующих фишек до новой, размещаемой игроком. 11. Моделирование игры «Точки». Игра ведется на квадратном поле фиксированного размера. Цель игры – заполнить максимальное количество клеток игрового поля своими фишками. Игроки выполняют ходы по очереди. Ход игрока заключается в произвольной установке линии на границе двух ячеек, причем, если какая-либо ячейка со всех сторон обрамлена линиями, то она отмечается фишкой данного игрока, а самому игроку предоставляется дополнительный ход, и т.д. Игра заканчивается, когда все игровое поле заполнено фишками. Выигрывает тот игрок, чьих фишек на момент окончания игры на поле больше. Уровень интеллекта компьютера устанавливается пользователем, т.е. предусмотреть возможность выполнения хода компьютером как случайным образом, так и оптимальным. 12. Моделирование игры «Шары». Цель игры – набрать максимальное количество очков. Суть игры состоит в следующем: на игровом поле отображаются круги разного цвета, игроку предлагается создать линию из кругов одинакового цвета, расположенных по горизонтали, по вертикали или диагонали. Созданная линия «сгорает», если количество элементов в ней больше трех. После этой процедуры пустые места на игровом поле заполняются новыми элементами. Линию можно создать путем перемещения кругов по горизонтали или по вертикали на соседние пустые клетки. Игра заканчивается, если нельзя создать ни одной линии. 13. Моделирование игры “Шадоки”. Шадокские ракеты терпят неудачу, так как им не хватает транзисторов в системах безопасности. Транзисторы нужного типа собирают с растений, произрастающих на огородах Гиби. Для этого необходимо отправиться на планету Гиби и привести нужные транзисторы. Гиби позволяют Шадокам забираться в свои огороды, но всякий раз, когда 23
растения дает букет транзисторов, они стремятся собрать урожай раньше шадока. 14. Моделирование игры “Шашки”. Необходимо реализовать подмножество правил классических шашек на доске 8x8. 15. Моделирование игры “Уголки”. Игра ведется на шашечном поле. Противники расставляют свои шашки симметрично в противоположных углах доски в виде прямоугольников 3x4. Ходы осуществляются поочередно. Шашки можно перемещать в любом направлении на соседнюю пустую клетку, шашки могут перепрыгивать через свои и чужие шашки. Перепрыгивать можно по вертикали, либо по горизонтали, если за шашкой есть пустая клетка. Прыжки могут быть многократными, при этом перепрыгивать шашка может как свои шашки, так и шашки противника. Длина прыжка не принудительна, то есть игрок может решить в любое время прекратить многократный ход. Выигрывает тот, кто быстрее выстроит свои шашки на позиции противника. Разное Варианты 1. Операции над полиномами. Определить тип данных Polynom – представление полиномов от одной переменной – x. Для представления можно, например, использовать списки. Полином в виде списка можно представить, как список коэффициентов или как список пар чисел – (коэффициент, степень). Например, полином 2+x^3 будет иметь представление [2, 0, 0, 1] в первом случае и [(2, 0), (1, 3)] – во втором. Во втором случае все операции будут реализовываться гораздо проще, если поддерживать инвариант представления, гарантирующий, что все пары упорядочены по возрастанию степеней. 2) Реализовать операции над полиномами: PolyAdd – сложение, PolySub – вычитание, PolyMul – умножение. 3) Реализовать функцию PolyEval (Polynom,num) – значение полинома в точке. Например, PolyEval (1+x^2, 2) = 1+2^2 = 5 4) Реализовать функцию преобразования полинома в строку PolyToStr. Например, для первого представления, PolyToStr ([1, -2, 0, 1]) = "12*x + x^3" 5) Реализовать функцию дифференцирования полинома DerivePoly. Например, для первого представления, DerivePoly ([1, -2, 2, 1]) = [-2, 4, 3] 6) Реализовать функцию преобразования строки в полином PolyFromStr. Например, для первого представления, PolyFromStr ("1 - 2*x + x^3 + 3*x") = [1, -5, 0, 1] 2. Операции над данными 1. Исходное представление данных: 24
– двоичная система счисления (СС), – восьмеричная СС, – шестнадцатеричная СС, – десятичная СС, – символьная информация. 2. Моделируемые операции: – перевод чисел из одной СС в другую – сложение чисел, – вычитание, – умножение, – деление, – кодирование данных, – декодирование данных, – шифровка информации, – дешифровка. 3. Решение определенных классов физических задач с графической интерпретацией. Расчет и демонстрация физических законов (движение тела по наклонной плоскости, движение тел навстречу друг другу с ускорением, интерференция, преломление светового луча в различных средах, разложение светового луча на цвета при проходе через призму). 4. Построение графиков функций одной переменной. Задания для команд (3 чел.) Варианты 1.
Правила игры в крестики-нолики Игра ведется на поле размером 100 ×100 клеток, победившим считается тот, кто поставит в ряд 5 крестиков или 5 ноликов. В случае если поле полностью заполнено, и никто не победил, результат считается ничейным. Каждая пара игроков проводит по 10 партий. В первой партии тот, кто будет играть крестиками (следовательно, сделает первый ход) определяется случайным образом, далее – по очереди. В случае, если после 10 партий общий счет ничейный, игра ведется до первой победы. Если после 20 партий счет попрежнему ничейный, это считается ничьей в партии.
Требования, предъявляемые к программе-игроку: 1. Игрок – это функция, написанная на языке С++. 2. В случае ошибочного хода (т.е. хода вне поля, либо хода на уже занятое поле) программе присуждается поражение. Если программа "падает”, ей присуждается поражение. 3. Для программы действуют следующие ограничения: – размер функции не более 1 Мб. 25
– на обдумывание хода не более 2 секунд. – программа может занимать не более 4-х мегабайт памяти. – программа может самообучаться и хранить внутренние данные в отдельном файле, который имеет то же имя, что и функция, с расширением .dat. Файл хранится в той же директории, что и функция. Размер этого файла не должен превышать 10 мегабайт. Файл хранится только в течение одной партии (т.е. в процессе 10 либо более игр с одним игроком), затем он удаляется. При нарушении любого из этих ограничений программе присуждается поражение. Управляющая функция (игровой движок) — центральный программный компонент компьютерных интерактивных приложений с графикой, обрабатываемой в реальном времени. Основную функциональность обычно обеспечивает игровой движок, включающий движок рендеринга («визуализатор»), физический движок, звук, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность. Часто на процессе разработки можно сэкономить за счёт повторного использования одного игрового движка для создания множества различных игр. Проще говоря, движком является набор систем, которые упрощают наиболее часто используемые функции игры. Движок состоит из подсистем, контролирующих определенные части игры. Большинство игр имеют следующие подсистемы: Графическая подсистема Подсистема ввода Звуковая подсистема Системное ядро Разрабатывают 3 человека: • Функцию крестиков • Функцию ноликов • Управляющая функция (игровой движок) 2. Правила игры в морской бой Игровое поле – квадрат 10×10 каждого игрока, на котором размещается флот кораблей. В игре рассчитана на двух участников, которые по очереди называют координаты на неизвестной им карте соперника. Если у соперника по этим координатам имеется корабль, то корабль или его часть «топится», а попавший получает право сделать ещё один ход. Цель игрока – первым поразить все корабли противника. Горизонтали обычно нумеруются сверху вниз, а вертикали помечаются буквами слева направо. При этом используются буквы русского алфавита от «а» до «к» (буквы «ё» и «й» обычно пропускаются), либо буквы латинского алфавита от «a» до «l» (пропускается буква «j»). Поскольку существуют различ-
26
ные варианты задания системы координат, то об этом лучше заранее договориться. На игровом поле размещаются: 1 корабль – ряд из 4 клеток («линкоры», или «четырёхпалубные») 2 корабля – ряд из 3 клеток («крейсеры», или «трёхпалубные») 3 корабля – ряд из 2 клеток («эсминцы», или «двухпалубные») 4 корабля – 1 клетка («подлодки», или «однопалубные») При размещении корабли не могут касаться друг друга углами. При попадании в корабль противника – на чужом поле ставится крестик. Попавший стреляет ещё раз. Каждая пара игроков проводит по 10 партий. В первой партии тот, кто сделает первый ход, определяется случайным образом, далее – по очереди. В случае если после 10 партий общий счет ничейный, игра ведется до первой победы. Если после 20 партий счет по-прежнему ничейный, это считается ничьей в партии. Требования, предъявляемые к программе-игроку: 1. Игрок – это функция, написанная на языке С++. 2. В случае ошибочного хода (т.е. хода вне поля, либо хода на уже занятое поле) программе присуждается поражение. Если программа "падает”, ей присуждается поражение. 3. Для программы действуют следующие ограничения: - размер функции не более 1 Мб. - на обдумывание хода не более 2 секунд. - программа может занимать не более 4-х мегабайт памяти. - программа может самообучаться и хранить внутренние данные в отдельном файле, который имеет то же имя, что и функция, с расширением .dat. Файл хранится в той же директории, что и функция. Размер этого файла не должен превышать 10 мегабайт. Файл хранится только в течение одной партии (т.е. в процессе 10 либо более игр с одним игроком), затем он удаляется. При нарушении любого из этих ограничений программе присуждается поражение. Управляющая функция (игровой движок) — центральный программный компонент компьютерных интерактивных приложений с графикой, обрабатываемой в реальном времени. Основную функциональность обычно обеспечивает игровой движок, включающий движок рендеринга («визуализатор»), физический движок, звук, систему скриптов, анимацию, искусственный интеллект, сетевой код, управление памятью и многопоточность. Часто на процессе разработки можно сэкономить за счёт повторного использования одного игрового движка для создания множества различных игр. Проще говоря, движком является набор систем, которые упрощают наиболее часто используемые функции игры. Движок состоит из подсистем, кон-
27
тролирующих определенные части игры. Большинство игр имеют следующие подсистемы: Графическая подсистема Подсистема ввода Звуковая подсистема Системное ядро Разрабатывают 3 человека: • Функцию хода первого игрока • Функцию хода второго игрока • Управляющая функция (игровой движок)
28
Библиографический список 1. СТО 4.2-07-2014. Система менеджмента качества. Общие требования к построению, изложению и оформлению документов учебной деятельности. – Красноярск, 2014. 2. Программирование 1 ч. / А. В. Редькина, М. А. Русаков, К. В. Пушкарев // электронный образовательный курс. — URL: http:// /e.sfukras.ru/mod/forum/view.php?f=1391; Ч. 2. – URL: http://ms.sfukras.ru/view.php?id=118. 3. Программирование 2 ч. / А. В. Редькина, М. А. Русаков, К. В. Пушкарев // электронный образовательный курс.– URL: http:// e.sfukras.ru/course/view.php?id=1147 4. Теория алгоритмов и структуры данных / И.В. Матковский, А. В. Редькина – URL: https://e.sfu-kras.ru/course/view.php?id=1373. 5. wxWidgets : Cross-Platform GUI Library / wxWidgets community.– Режим доступа: http://wxwidgets.org, вход свободный (2016-08-29). 6. QT : Cross-Platform Application Framework / Nokia Corporation.– Режим доступа: http://trolltech.com/products, вход свободный (2016-08-29). 7. Вогел, Джефф. Шесть советов по написанию более понятного программного кода / Д. Вогел.– Режим доступа: http://www.ibm.com/developerworks/ru/library/l-clear-code/index.html, вход свободный (2016-08-29). 8. Tigris.org : Open Source Software Engineering Tools // CollabNet, Inc.– Режим доступа: http://subversion.tigris.org, вход свободный (2016-08-29). 9. Коллинз-Сассман, Бен. Управление версиями в Subversion : Для Subversion 1.4 / Б. Коллинз-Сассман, Б. Фитцпатрик, М. Пилато.– Режимдоступа: http://svnbook.red-bean.com/index.ru.html, вход свободный (2016-08-29). 10. Подбельский В.В. Язык Си++ [Текст] : учеб. пособие для вузов / В. В. Подбельский. – 5-е изд. – М.: Финансы и статистика, 2006. – 559 с. – ISBN 5279-02204-7. 11. Дейтел Х.М. Как программировать на С++[Текст] / Х.М. Дейтел, П.Дж. Дейтел Пер. с англ. – 5-е.изд. – М.: Бином, 2008. – 1454 с 12. Керниган Б. В. Язык программирования Си: Керниган Б. В., Ритчи Д. М. Пер. с англ. – 3-е изд. – СПб.: Невский Диалект, 2001. – 352 с.
29