- •Лабораторная работа № 1 Основы системы программирования Ruby
- •Порядок выполнения работы
- •Содержание отчета
- •Варианты заданий
- •5 . Случайный спуск по дереву
- •6. Пересечение множеств
- •7. Удаление повторяющихся чисел
- •8. Проверка транзитивности
- •Лабораторная работа № 2 Разделение ресурсов
- •Порядок выполнения работы
- •Содержание отчета
- •Методические указания
- •Варианты задач Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Лабораторная работа № 3 Каркасы программных систем
- •Порядок выполнения работы
- •Содержание отчета
- •Пример программы на fxruby
Лабораторная работа № 1 Основы системы программирования Ruby
Цель работы – получение навыков разработки на Ruby.
Порядок выполнения работы
Подготовить последовательный алгоритм решения задачи, приведенной в конце описания (вариант задания соответствует номеру бригады). Реализовать его на языке программирования Ruby и другом известном языке (Pascal, C++ и др.). Использовать файловый ввод/вывод необходимых данных.
Сравнить полученные программы по количеству строк исходного текста, количеству операторов, количеству циклов, условных операторов.
Требования к программному обеспечению
Язык сообщений программы должен быть русским. Использовать транслитерацию запрещается. Необходимо комментировать назначение всех атрибутов, констант и методов. Комментарии также должны быть русскоязычными. Для методов необходимо комментировать назначение входных параметров и возвращаемое значение.
Содержание отчета
1. Постановка задачи
2. Описание алгоритма решения задачи (схемы алгоритмов не обязательны)
3. Таблица с результатами сравнения 2-х реализаций
4. Выводы
5. Приложения
5.1. Результаты тестирования
5.2. Листинги программ
Варианты заданий
1. Отсутствующее число в массиве
Массив длины N в случайном порядке заполнен целыми числами из диапазона от 0 до N. Каждое число встречается в массиве не более одного раза. Найти отсутствующее число (дырку). Есть очень простой и оригинальный способ решения. Сложность алгоритма O(N), т.е. задача решается за один проход. Использование дополнительной памяти, пропорциональной длине массива, не допускается.
2. Черные квадраты
На дискретном (клетчатом) белом квадратном поле с длиной стороны N размещены несоприкасающиеся черные квадраты. Посчитать число квадратов.
3. Количество различных чисел
Массив длины N заполнен в случайном порядке числами из диапазона от 1 до k < N. Не используя других массивов, подсчитать количество различных чисел. Количество шагов порядка N + k.
4. Перестановка сегментов неодинаковой длины
Сегментом называется непрерывная последовательность элементов массива. Массив состоит из двух сегментов неодинаковой длины. Не используя дополнительную память, пропорциональную N, поменять сегменты местами.
5 . Случайный спуск по дереву
На вход подается описание бинарного дерева. На листьях этого дерева написаны целые числа. Идем от корня дерева, случайно поворачивая направо или налево (с вероятностями 0.5). Чему равно среднее значение числа на листе, в который мы в конечном счете придем? Ответ вывести с точностью до двух знаков после запятой.
Формат описания дерева следующий: tree ::= leaf | (tree tree); leaf ::= integer;
Например, (((3 5) 1) (9 4))
Результат: 4.50
6. Пересечение множеств
Вход — два множества натуральных чисел.
Выход — их пересечение (перечисление элементов через пробел в любом порядке без повторений) или слово empty если пересечение пусто.
Множества A={a1, a2, ... , an} и B={b1, b2 ... bk} Возможны повторения элементов, которые надо исключить.
ВХОД #1: 6 7 8 1 2 3 4 3 2 1 1 |
ВХОД #2: 1 2 3 4 4 5 5 6 6 |
ВЫХОД #1: 1 2 3 |
ВЫХОД #2: empty |