Факультатив по языку программирования C++
Весна 2019
Преподаватель Алексей Сальников
Как склонировать репозиторий
Поставить git https://git-scm.com/
- Для каждого участника на машине kodomo есть свой git репозиторий. Для его клонирования необходимо выполнить команду:
- login_on_kodomo - собственно актуальный login студента, path_to_clone - путь куда клонировать, все поддиректории должны существоваать.
git clone ssh://login_on_kodomo@kodomo.fbb.msu.ru/srv/databases/git_repos/login_on_kodomo path_to_clone
Задание 1 (простейшее тестовое)
Требуется написать программу, которая проверяет, как число типа double приводится к целому. В программе необходимо объявить несколько целочисленных переменных и несколько переменных, задающих числа с плавающей точкой. Переменные должны содержать в себе приведённые значения от чисел с плавающей точкой к знаковому целому.
Требуется подобрать числа так, чтобы по математическим правилам было округление вверх, вниз, и отдельно рассмотреть случай 0.5.
Для каждой пары чисел требуется напечатать с помощью функции "printf" значение числа с плавающей точкой и приведённое целочисленное значение, куда было произведено преобразование.
Задание 2
Написать программу, проверяющую little endian или big endian на той архитектуре, где запущена программа.
Задание 3 (Упаковка ДНК)
Требуется написать 2 функции: "Упаковщик" строки DNA/RNA в массив uint32_t и "Распаковщик" из массива uint32_t в строку типа char*.
Прототип функций следующий:
int dna_pack(const char *unpacked_str, uint32_t **packed_array_pointer); int dna_unpack(const uint32_t *packed_array, char **unpacked_str_pointer);
Функции должны выделять память под строки с результатом и сообщать об ошибках в виде кода ошибки в возвращаемом значении, в случае невозможности выделить память, либо встречи некорректного символа (например буквы n.) Во входной строке большие и маленькие буквы неразлечимы.
В процессе распаковки выдавать буквы в нижнем регистре.
Предполагается, что память будет освобождена тем, кто использует данные функции. Не допустимы утечки памяти. На утечки можно проверить с помощью программы "valgrind".
К функциям необходимо создать простейшую тестирующую их программу.
Задание 4 (программа выравнивания нуклеотидных последовательностей)
Пример для тестирования (годится и для предыдущего задания, если написать разбор fasta-формата).
Гугло табличка со сдачей заданий.
Список литературы
- Брайан Керниган, Деннис Ритчи. Язык программирования C. — Москва: Вильямс, 2015. — 304 с.
- А.В.Столяров. Операционная среда ОС UNIX для изучающих программирование. (Архитектура ЭВМ и СПО. Пособие для выполнения лабораторных работ в ОС UNIX. М.: МГТУГА, 2008)
- Курячий Г. В., Маслинский К. А. Операционная система Linux. — ALT Linux Москва, 2010. — С. 347.
- Скотт Чакон, Бен Штрауб Git для профессионального программиста – Питер, Санкт-Петербург, 2017, 496 стр.
- Бьерн Страуструп Дизайн и эволюция языка C++ – ДМК Пресс, Санкт-Петербург, 2006, 448 стр.
- Бьерн Страуструп: Язык программирования C++. Специальное издание - Бином, 2017, 1136 стр.
- Андрей Александреску Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования, Вильямс, 2015, 336 стр.
- Николаи М. Джосаттис Стандартная библиотека C++: справочное руководство - Вильямс, 2017, 1136 стр.
- Скотт Мейерс Эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14 - Вильямс, 2016
- Скотт Мейерс Эффективное использование STL - Питер, 2002 , 224 стр.
- А.В.Столяров. Введение в язык Си++. Издание четвёртое. М: МАКС Пресс, 2018, 136 стр.