commit 437460afc109226381ba043bd9de6a51bef7e67f Author: Дмитрий Козлюк Date: Sun Aug 31 18:59:10 2025 +0300 doc: регламент работы, образец оформления diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b7bb2a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__ +.* +!.gitignore diff --git a/README.md b/README.md new file mode 100644 index 0000000..88792ff --- /dev/null +++ b/README.md @@ -0,0 +1,133 @@ +# Программное обеспечение автоматизированных систем: лабораторные работы + +[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python) + +## Работа с Git + +**Работы проверяются только после того, как закоммичены по правилам ниже.** + +[Лабораторная работа про Git второго семестра][gitlab] +поможет вспомнить, как работать с Git. + +[gitlab]: http://uit.mpei.ru/git/main/cs/src/branch/main/labs/lab02 + +1. В начале семестра + создать на сервере копию этого репозитория («форкнуть» его), нажав *Fork*. + Получится репозиторий-форк `http://uit.mpei.ru/git/IvanovII/python-labs`, + где `IvanovII` — ваше имя пользователя. + +1. В начале каждого занятия: + + Клонировать свой форк на рабочий стол + (`IvanovII` заменить на свое имя пользователя): + + ```sh + git clone http://uit.mpei.ru/git/IvanovII/python-labs.git + ``` + + Перебазировать свой форк на исходный репозиторий ("апстрим"): + + ```sh + # Первую команду нужно запускать только один раз, + # иначе будет ошибка "error: remote upstream already exists". + git remote add upstream http://uit.mpei.ru/git/main/python-labs.git + git fetch upstream + git stash push + git rebase upstream/main + git stash pop + ``` + + Перебазировать нужно, чтобы подтянуть из исходного репозитория обновления. + +1. После того, как отчет написан, закоммитить его как `TEMAn/report.md`. + + **Здесь и далее «закоммитить» для краткости означает: + сделать коммит и запушить его на сервер.** + + Здесь и далее `TEMAn` означают каталоги конкретных тем: + `TEMA1`, `TEMA2` и т. д. + Можно также коммитить по частям в процессе работы. + Если для отчета нужны рисунки, то их закоммитить в `TEMAn`, + назвав `figure0.png`, `figure1.png` и т. д. + +1. Решение общего контрольного задания (ОКЗ) закоммитить как `TEMAn/task.md`. + Исключения: + + * Тема 1 не содержит общего контрольного задания — ничего не делать. + * Тема 8 требует нескольких файлов — закоммитить их в каталог `TEMA8/task`. + +1. Решение индивидуального контрольного задания (ИКЗ) по темам 2, 4, 5, 7, 8 + или решение теста по модуля после тем 3, 6, 9 + закоммитить как `TEMAn/test.md`. + Исключения: + + * Тема 1 вместо ИКЗ содержит контрольный вопрос — + закоммитить также в `TEMA1/test.md`. + * Тема 8 и тест по модулю 3 (после темы 9) требуют нескольких файлов — + закоммитить в каталог `TEMAn/test`. + +## Оформление материалов + +Тексты оформляются в формате [Markdown](https://commonmark.org/help/). +Для этого текст со специальной разметкой пишется в файле с расширением `*.md`, +а в web-интерфейсе будет отображаться оформленным, подобно этому. + +Образец оформления материалов по каждой теме: [`TEMA0`](TEMA0). + +### Оформление отчетов + +Отчет `TEMAn/report.md` оформляется в формате Markdown по следующему образцу: + + # Отчет по теме 1 + + Иванов Иван, А-01-25 + + ## 1 Изучение среды IDLE + + ## 1.1 Настройка текущего каталога + + ``` + >>> import os + >>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1") + >>> os.getcwd() + 'C:\\Users\\u111-19\\Desktop\\python\\TEMA1' + ``` + + Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку: + + ![Скриншот диалога открытия файла](figure0.png) + +Заголовки пунктов должны отражать их суть в нескольких словах, +то есть просто скопировать текст пункта в заголовок не подойдет. +Вы должны сами придумать осмысленные заголовки, прочитав пункт задания. + +В отчет копируется код, введенный в оболочку (строки, начинающиеся с `>>>`), +и вывод соответствующих команд (`'C:\\Users...` в примере). + +Если в пункте задания требуется сделать вывод или объяснить что-то, +к коду и выводу добавляется письменный ответ или пояснение. + +### Оформление решений + +Решение всех заданий оформляется по образцу: + + # Общее контрольное задание по теме 2 + + Иванов Иван, А-01-25 + + ## Задание + + Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной. + + ## Решение + + ```py + >>> name = 'Иван' + >>> type(name) + 'str' + ``` + +Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ». + +Для тем 8 и 9 раздела «Решение» не нужно, +вместо этого решение размещается в отдельных файлах `*.py`. diff --git a/TEMA0/README.md b/TEMA0/README.md new file mode 100644 index 0000000..e9de7f2 --- /dev/null +++ b/TEMA0/README.md @@ -0,0 +1,6 @@ +# Тема 0: образец оформления материалов + +* `README.md` — этот документ, в своих темах создавать не нужно; +* [`report.md`](report.md) — отчет; +* [`task.md`](task.md) — общее контрольное задание; +* [`test.md`](test.md) — индивидуальное контрольное задание. diff --git a/TEMA0/figure0.png b/TEMA0/figure0.png new file mode 100644 index 0000000..dee2425 Binary files /dev/null and b/TEMA0/figure0.png differ diff --git a/TEMA0/report.md b/TEMA0/report.md new file mode 100644 index 0000000..0e93e93 --- /dev/null +++ b/TEMA0/report.md @@ -0,0 +1,18 @@ +# Отчет по теме 0 + +Иванов Иван, А-01-25 + +## 1 Изучение среды IDLE + +## 1.1 Настройка текущего каталога + +``` +>>> import os +>>> os.chdir(r"C:\users\u111-19\Desktop\python\TEMA1") +>>> os.getcwd() +'C:\\Users\\u111-19\\Desktop\\python\\TEMA1' +``` + +Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку: + +![Скриншот диалога открытия файла](figure0.png) diff --git a/TEMA0/task.md b/TEMA0/task.md new file mode 100644 index 0000000..05657aa --- /dev/null +++ b/TEMA0/task.md @@ -0,0 +1,15 @@ +# Общее контрольное задание по теме 0 + +Иванов Иван, А-01-25 + +## Задание + +Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной. + +## Решение + +```py +>>> name = 'Иван' +>>> type(name) +'str' +``` diff --git a/TEMA0/test.md b/TEMA0/test.md new file mode 100644 index 0000000..5d231d9 --- /dev/null +++ b/TEMA0/test.md @@ -0,0 +1,24 @@ +# Индивидуальное контрольное задание по теме 0 + +Иванов Иван, А-01-25 + +## Задание + +Создать переменную `name`, содержащую ваше имя, +и `surname`, содержащую вашу фамилию. +Как из них можно создать переменную, содержащую ваше полное имя? + +## Решение + +```py +>>> name = 'Иван' +>>> surname = 'Иванов' +``` + +Создать требуемую переменную `full_name` можно так: + +```py +>>> full_name = name + ' ' + surname +>>> full_name +'Иван Иванов' +``` diff --git a/TEMA1/prb1.py b/TEMA1/prb1.py new file mode 100644 index 0000000..587b019 --- /dev/null +++ b/TEMA1/prb1.py @@ -0,0 +1,2 @@ +name = input("Как Вас зовут? ") +print("Привет,", name) diff --git a/TEMA1/tdemo_chaos.py b/TEMA1/tdemo_chaos.py new file mode 100644 index 0000000..6a45d0d --- /dev/null +++ b/TEMA1/tdemo_chaos.py @@ -0,0 +1,59 @@ +# File: tdemo_chaos.py +# Author: Gregor Lingl +# Date: 2009-06-24 + +# A demonstration of chaos + +from turtle import * + +N = 80 + +def f(x): + return 3.9*x*(1-x) + +def g(x): + return 3.9*(x-x**2) + +def h(x): + return 3.9*x-3.9*x*x + +def jumpto(x, y): + penup(); goto(x,y) + +def line(x1, y1, x2, y2): + jumpto(x1, y1) + pendown() + goto(x2, y2) + +def coosys(): + line(-1, 0, N+1, 0) + line(0, -0.1, 0, 1.1) + +def plot(fun, start, color): + pencolor(color) + x = start + jumpto(0, x) + pendown() + dot(5) + for i in range(N): + x=fun(x) + goto(i+1,x) + dot(5) + +def main(): + reset() + setworldcoordinates(-1.0,-0.1, N+1, 1.1) + speed(0) + hideturtle() + coosys() + plot(f, 0.35, "blue") + plot(g, 0.35, "green") + plot(h, 0.35, "red") + # Now zoom in: + for s in range(100): + setworldcoordinates(0.5*s,-0.1, N+1, 1.1) + return "Done!" + +if __name__ == "__main__": + main() + mainloop() diff --git a/TEMA2/.gitkeep b/TEMA2/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA3/.gitkeep b/TEMA3/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA4/.gitkeep b/TEMA4/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA5/.gitkeep b/TEMA5/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/.gitkeep b/TEMA6/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA7/.gitkeep b/TEMA7/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/TEMA8/Mod0.py b/TEMA8/Mod0.py new file mode 100644 index 0000000..6337fc3 --- /dev/null +++ b/TEMA8/Mod0.py @@ -0,0 +1,9 @@ +#Модуль Mod0 +import Mod1 +print('perm1=',Mod1.perm1) +from Mod2 import alpha as al +tt=al() +print('tt=',tt) +from Mod2 import beta +qq=beta(float(tt)) +print('qq=',qq) diff --git a/TEMA8/Mod1.py b/TEMA8/Mod1.py new file mode 100644 index 0000000..cf05b61 --- /dev/null +++ b/TEMA8/Mod1.py @@ -0,0 +1,2 @@ +perm1=input('Mod1:Введите значение = ') +print('Mod1:Значение perm1=',perm1) diff --git a/TEMA8/Mod2.py b/TEMA8/Mod2.py new file mode 100644 index 0000000..88c5b37 --- /dev/null +++ b/TEMA8/Mod2.py @@ -0,0 +1,11 @@ +def alpha(): + print('****ALPHA****') + t=input('Значение t=') + return t + +def beta(q): + print('****BETA****') + import math + expi=q*math.pi + return math.exp(expi) + diff --git a/TEMA9/.gitkeep b/TEMA9/.gitkeep new file mode 100644 index 0000000..e69de29