#prepsGroup:read,write,delete,revert,admin Known:read,write All:read = Факультатив по языку программирования C++ = == Весна 2019 == == Преподаватель Алексей Сальников == === Как склонировать репозиторий === 1. Поставить git https://git-scm.com/ 2. Для каждого участника на машине kodomo есть свой git репозиторий. Для его клонирования необходимо выполнить команду: || git clone ssh://login_on_kodomo@kodomo.fbb.msu.ru/srv/databases/git_repos/login_on_kodomo path_to_clone || login_on_kodomo - собственно актуальный login студента, 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 (программа выравнивания нуклеотидных последовательностей) === {{{#!wiki message В процессе подготовки }}} [[http://kodomo.fbb.msu.ru/~sas/example/example.fasta|Пример]] для тестирования (годится и для предыдущего задания, если написать разбор fasta-формата). ---- [[https://docs.google.com/spreadsheets/d/1zmqFFRrwQaontXyM19rCqn1vQJ1XBW40Kd8dPrqp9zk|Гугло табличка со сдачей заданий]]. ---- == Список литературы == * Брайан Керниган, Деннис Ритчи. Язык программирования 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 стр.