Это репозиторий с моими (и не только моими) домашними работами и семинарскими упражнениями по этому курсу, который в 2024 году читался во втором семестре на ФАЛТ (ПИШ РПИ) МФТИ.
Изучаемая архитектура: x86-64 (также AMD64/Intel64/EM64T)
С помощью CMake здесь настроена возможность компиляции домашних работ и некоторых семинарских упражнений.
Однако для компиляции необходимо установить некоторые библиотеки, а именно FLTK и Boost (unit_test_framework).
Используя MSYS2, это можно сделать следующим образом:
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-boost
pacman -S mingw-w64-x86_64-fltk-
Логические элементы (схемы): Программа на
C++, которая будет моделировать работу и рисовать на экране одну из следующих логических схем, а также обеспечит ввод входных и вывод выходных сигналов (консоль, файл или GUI) и перерисовку схемы при изменении входных сигналов:- 4-х разрядный декодер (в данном случае был реализован n-разрядный декодер, причем с "красивым" оформлением, использующем графическую библиотеку FLTK, на основе кода преподавателя А. В. Мишковича);
- 4-х разрядная схема сдвига;
- 4-х разрядный компаратор;
- 4-х разрядный полный сумматор;
- 4-х разрядный регистр на основе D-триггеров.
-
Реализация некоторых алгоритмов на машине Тьюринга: Машины Тьюринга, которые реализуют:
- сложение двух неотрицательных чисел, данных в двоичной системе счисления.
- умножение двух неотрицательных чисел, записанных на ленте в виде последовательности единиц, а именно: 0 → 0,1 → 01,2 → 011,3 → 0111,4 → 01111, ... Назовём эту запись единичной записью числа (числа записаны на ленте подряд).
-
Реализация некоторых алгоритмов на машине Маркова: Алгоритмы Маркова, которые реализуют:
- сложение двух неотрицательных чисел, данных в двоичной системе счисления.
- удвоение числа заданного в виде единичной записи.
- удвоение числа заданного в двоичной системе счисления.
-
Реализация некоторых алгоритмов на конечном автомате: Конечные автоматы, которые получают на вход двоичную запись натурального числа, начиная с младшего разряда, и выводят двоичную запись числа (все реализации сделаны на основе классов в Python, в будущем планируется создание полноценного графического редактора для удобства выполнения этого задания):
-
Свойство текста: Текст начинается заглавной латинской буквой и оканчивается заглавной латинской буквой.
-
Правило 1: Заменить каждую латинскую букву символом
*. -
Правило 2: Удалить из текста все повторные вхождения его первого символа.
-
Семинарские упражнения разного рода (часто описываются названием папки).
-
Экзаменационное задание: (пример того, что могут спросить на экзамене): Проверить, является ли число
unsigned int Nстепенью двойки.
Качественное выполнение заданий в этом курсе (в том числе домашних) от человека, который сдал зачет лектору на ОТЛ.