Skip to content

Проект-шаблон для выполнения первого практического задания по курсу МП2

Notifications You must be signed in to change notification settings

SoldatovDaniil/Lab1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Методы программирования 2: Множества на основе битовых полей

Build Status

Используемые инструменты

  • Система контроля версий Git. Рекомендуется использовать один из следующих клиентов на выбор студента: git-scm, GitHub Desktop.
  • Библиотека автоматического тестирования Google Test Framework. Не требует установки, идет вместе с шаблонным проектом.
  • Среда разработки Microsoft Visual Studio (> 2008).
  • Утилита CMake для сборки исходных кодов. Наличие данной утилиты опционально. Она может быть использована для генерации решения для среды разработки, отличной от Microsoft Visual Studio.

Общая структура проекта

Структура проекта:

  • gtest - библиотека Google Test.
  • include - директория для размещения заголовочных файлов.
  • samples - директория для размещения демо-приложений.
  • sln - директория с файлами решений и проектов для VS 2008 и VS2010, вложенные директории vc9 и vc10 соответственно.
  • src - директория с исходными кодами.
  • test - директория с тестами и основным приложением, инициализирующим запуск тестов.
  • .gitignore - перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.
  • README.md - информация о проекте, которую вы сейчас читаете.
  • CMakeLists.txt - корневой файл для сборки проекта с помощью CMake. Может быть использован для генерации проекта в среде разработки, отличной от Microsoft Visual Studio.
  • .travis.yml - конфигурационный файл для системы автоматического тестирования Travis-CI. Тесты, входящие в состав шаблонного проекта, регулярно проверяются на удаленной инфраструктуре.

В решении содержатся следующие модули:

  • Модуль tbitfield (./include/tbitfield.h, ./src/tbitfield.cpp), содержащий реализацию класса битового поля. Предполагается, что в ходе выполнения работы реализуются методы класса (в файле ./src/tbitfield.cpp), при этом заголовочный файл (./include/tbitfield.h) с объявлениями должен оставаться неизменным.
  • Модуль tset (./include/tset.h, ./src/tset.cpp), содержащий реализацию класса множества. При выполнении работы так же, как и в случае класса битового поля, разрабатывается только реализация методов класса.
  • Тесты для классов битовое поле и множество (./test/test_tbitfield.cpp, test_tset.cpp).
  • Пример использования класса битового поля и множества для решения задачи "Решето Эратосфена" (./samples/sample_prime_numbers.cpp).

Цели и задачи

Цель данной работы -- разработка структуры данных для хранения множеств с использованием битовых полей, а также освоение таких инструментов разработки программного обеспечения, как система контроля версий Git и фрэймворк для разработки тестов Google Test Framework.

Предполагается, что перед выполнением работы студент получает данный шаблон проекта, содержащий интерфесы классов битового поля и множества, набор тестов для каждого из указанных классов, пример использования класса битового поля и множества для решения задачи "Решето Эратосфена".

Выполнение работы предполагает решение следующих задач:

  1. Реализация заданного интерфейса класса битового поля TBitField.
  2. Реализация заданного интерфейса класса множества TSet.
  3. Обеспечение работоспособности тестов.

Инструкция по выполнению работы

Общие инструкции по работе с Git

В данном разделе описана типичная последовательность действий, которую необходимо выполнить перед тем, как начать работать с проектом. Далее для определенности используется репозиторий mp2-lab1-bitfield.

  1. Создать аккаунт на github.com, если такой отсутствует. Для определенности обозначим аккаунт github-account.

  2. Сделать fork репозитория https://github.com/UNN-VMK-Software/mp2-lab1-bitfield (в терминологии Git upstream-репозиторий) к себе в личный профиль с названием github-account. В результате будет создана копия репозитория с названием https://github.com/github-account/mp2-lab1-bitfield (origin-репозиторий).

  3. Клонировать origin репозиторий к себе на локальный компьютер, воспользовавшись следующей командой:

$ git clone https://github.com/github-account/mp2-lab1-bitfield
  1. Перейти в директорию mp2-lab1-bitfield:
$ cd ./mp2-lab1-bitfield
  1. Настроить имя пользователя, из под которого будут выполняться все операции с репозиторием Git:
$ git config --local user.name "github-account"

Чтобы обеспечить возможность удаленной проверки работы (включая автоматический запуск и проверку корректности тестов), необходимо создать Pull Request в upstream-репозиторий:

  1. Открыть в браузере https://github.com/github-account/mp2-lab1-bitfield.
  2. Нажать кнопку Pull Request в строке над исходными кодами, содержащей информацию о последних коммитах.

При работе с файлами в ветке необходимо управлять изменениями. Далее приведен перечень основных команд в предположении, что текущей рабочей веткой является master.

  1. Получить список текущих изменений:
$ git status
  1. Пометить файл как добавленный в текущую ветку репозитория (файл будет добавлен после выполнения команды commit):
$ git add [<file_name>]
# <file_name> - название файла для добавления в commit
  если вместо имени указан символ *, то будут добавлены все новые файлы, 
  расширение которых не указано в .gitignore
  1. Добавить изменения в текущую ветку локального репозитория:
$ git commit [-m "<message_to_commit>"] [-a]
# [-a] - автоматически добавляет изменения для существующих на сервере файлов
  без выполнения команды git add
# [--amend] - перезаписывает последний коммит (используется, если не забыты
  изменения)
  1. Разместить изменения, которые были добавлены в локальный репозиторий с помощью команды push:
$ git push origin/master
  1. Удалить файлы или директории (!без опции -f для файлов, состояния которых совпадают с состоянием на сервере):
$ git rm [-f] [--cached]
# [-f] - принудительное удаление (файла с измененным состоянием)
# [--cached] - удаление файлов на сервере, но не в локальной директории
  1. Переименовать файлы (или 3 команды: mv, git rm, git add):
$ git mv <file_from> <file_to>

About

Проект-шаблон для выполнения первого практического задания по курсу МП2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.9%
  • CMake 0.1%