Экзамен. Явно переволновавшийся студент спрашивает:
— А писло чесать?
Препод:
— Чешите, если поможет…
Структура экзамена
Перед теоретическими вопросами вам будет предоставлена 1 задача. После ознакомления вы будете приглашены по очереди на сдачу теории. Перед и после сдачи теории можно спокойно решать задачу. Как задача будет решена, присылайте на почту, крайний срок сдачи 19:15.
Задача
Требуется решить простую задачу на алгоритмизацию. Требуется посчитать количество нулей, единиц и двоек в троичном представлении числа.
Использовать готовые функции и строковые операции запрещено. В случае, если число не имеет хотя бы одного нуля или единицы или двойки, то требуется
вызвать ошибку (raise
).
def solution(x):
count_0 = 0
count_1 = 0
count_2 = 0
# do smth with x
return count_0, count_1, count_2
Вторая часть задачи основывается на описании данного алгоритма, раз запрограммировать смогли, то и описать алгоритм получится. Описывать придется с использованием PlantUML, для этого просмотрите документацию. Выберите наиболее подходящий вид диаграммы (это значит, что есть неподходящие виды диаграмм), опишите диаграмму кодом, затем отрисуйте и пришлите картинку. Блок вызова ошибки на диаграмме должен быть любого красного цвета.
Пример кода диаграммы:
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
Редактор можно найти в интернете, или тут.
Краткое описание задачи
- Решить задачу по поиску количества нулей, единиц и двоек в троичном представлении числа
x
. - Решение записать в функцию
solution
. - Внутри функции вызвать ошибку, если число
x
не имеет одного нуля или одной единицы или одной двойки в троичном представлении. - Изучить нотацию PlantUML.
- Выбрать подходящую диаграмму.
- Написать код диаграммы и сгенерировать картинку, блок вызова ошибки на диаграмме должен быть любого красного цвета.
- Создать
.md
отчет с всеми этапами и прислать на почту (картинку приложить отдельно, как и весь код).
Теория и вопросы
В каждом пункте указана тема, которую требуется раскрыть. А также вопросы, на которые нужно обязательно дать ответ.
- Алгоритмы. Что такое алгоритм? Из чего состоит алгоритм?
- Алгоритмы. Какие существуют команды и конструкции алгоритмов?
- Сложность алгоритма. Что такое сложность алгоритма и что значит асимптотическая сложность?
- Сложность алгоритма. Какие операции можно проводить со сложностью алгоритма?
- Способ обработки алгоритма. Как компьютер понимает код? Что позволяет это сделать и как?
- Оптимизация алгоритмов. Зачем нужна оптимизация?
- Оптимизация алгоритмов по времени. Какие есть способы оптимизации?
- Оптимизация алгоритмов по памяти. Какие есть способы оптимизации?
- Данные и структуры. Как можно представить данные? Какие есть структуры для хранения информации?
- Языки программирования. Что такое программирование? Из чего состоит язык программирования?
- Языки программирования. Зачем классифицировать языки программирования? Какие существуют способы классификации?
- Языки программирования. Что такое парадигма программирования? Какие существуют парадигмы?
- Объектно-ориентированное программирование. Что такое ООП? Зачем нужно ООП? Какие основные понятия существуют в ООП?
- Информационное моделирование. Что такое модель? Что позволяет сделать информационное моделирование? Какие виды моделирования существуют?
- Жизненный цикл программного обеспечения. Что это такое, из чего состоит и зачем нужная каждая часть?
- Методологии разработки. Что это такое, какие существуют и зачем нужны?
Удачи!