---
# System prepended metadata

title: Вопросы к зачету по предмету "Введение в программирование с использованием языка Python"

---

# Вопросы к зачету по предмету "Введение в программирование с использованием языка Python"

1. Введение в git
    - Как работать с системой контроля версий
    - Основные команды
    - Текст коммитов
    - Выдача прав на проект
    - *Решение конфликтов
    - *Бранчинг
2. Введение в Python
    - Установка
    - Запуск программы из консоли
    - Базовые элементы синтаксиса
        - Переменные
        - Циклы
        - Ветвления
    - Основные структуры
        - list
        - dict
        - tuple
    - Настройка зависимостей
        - Установка библиотек с `pip`
        - *Настройка виртуального окружения
    - Работа с jupyter notebook
3. Построение кода
    - Функциональный подход
        - Область видимости переменных: `global`
        - Передача переменных в функцию
        - Значение по умолчанию
        - Синтаксис функции
        - *`*args/**kwargs`
    - Классовый подход
        - Что такое класс
        - Синтаксис класса
        - Основной метод класса `__init__`
        - *Магические методы
        - *Статичные методы класса
        - Метод класса типа `method(self, ...):`
        - Разбиение функционала
        - Насследование
4. Построение проекта
    - Документация кода
        - docstring
        - shebang comments `# comment`
    - Документация проекта
        - UML диаграммы
        - `README.md`
        - `requirements.txt`
    - Разбиение кода на модули
        - Один класс -- одна ответственность
        - Распределение кода по директориям
        - *MVC
    - Распределение ролей в проекте

Список может дополняться, но это не факт. Отмеченные звездочкой вопросы не являются обязательными, но показывают, что вы хоть что-то усвоили больше нужного.

В качестве задачи возможно получить что-то на подобии:
-  Как реализовать определенный проект, какие классы понадобяться, UML-диаграмма
-  Описать документацию к чему-либо
-  Моделирование физического процесса

### План действий

```graphviz
digraph hierarchy {

    nodesep=1.0 // increases the separation between nodes

    node [color=Blue,fontname=Courier,shape=box] //All nodes will this shape and colour
    edge [color=Blue, style=bold] //All the lines look like this

    I1 [shape=box,color=blue,label="Студент"];
    I2 [shape=box,color=blue,label="Работа в\nсеместре\n0.45"];
    I6 [shape=box,color=blue,label="Посещение\n0.1"];
    I3 [shape=box,color=blue,label="Проект\n0.5"];
    I4 [shape=box,color=blue,label="Доп. зачет\n-1..+1"];
    I5 [shape=box,color=blue,label="Зачет"];
    

    I1->{I2 I3 I6}
    I2->I5 [color=darkgreen,style=dashed]
    I3->I5 [color=darkgreen,style=dashed]
    I2->I4 [color=red,style=dashed]
    I3->I4 [color=red,style=dashed]
    I4->I5 [color=darkgreen,style=dashed]
    I6->I5
    {rank=same; I2 I3 I6}
}
```