Сommit
						12c6ba727b
					
				@ -0,0 +1,3 @@
 | 
				
			||||
__pycache__
 | 
				
			||||
.*
 | 
				
			||||
!.gitignore
 | 
				
			||||
@ -0,0 +1,123 @@
 | 
				
			||||
# Программное обеспечение автоматизированных систем: лабораторные работы
 | 
				
			||||
 | 
				
			||||
[Репозиторий с методическими указаниями и заданиями.](http://uit.mpei.ru/git/main/python)
 | 
				
			||||
 | 
				
			||||
## Работа с Git
 | 
				
			||||
 | 
				
			||||
**Работы проверяются только после того, как закоммичены по правилам ниже.**
 | 
				
			||||
 | 
				
			||||
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'
 | 
				
			||||
    ```
 | 
				
			||||
 | 
				
			||||
    Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку:
 | 
				
			||||
 | 
				
			||||
    
 | 
				
			||||
 | 
				
			||||
Заголовки пунктов должны отражать их суть в нескольких словах,
 | 
				
			||||
то есть просто скопировать текст пункта в заголовок не подойдет.
 | 
				
			||||
Вы должны сами придумать осмысленные заголовки, прочитав пункт задания.
 | 
				
			||||
 | 
				
			||||
В отчет копируется код, введенный в оболочку (строки, начинающиеся с `>>>`),
 | 
				
			||||
и вывод соответствующих команд (`'C:\\Users...` в примере).
 | 
				
			||||
 | 
				
			||||
Если в пункте задания требуется сделать вывод или объяснить что-то,
 | 
				
			||||
к коду и выводу добавляется письменный ответ или пояснение.
 | 
				
			||||
 | 
				
			||||
### Оформление решений
 | 
				
			||||
 | 
				
			||||
Решение всех заданий оформляется по образцу:
 | 
				
			||||
 | 
				
			||||
    # Общее контрольное задание по теме 2
 | 
				
			||||
 | 
				
			||||
    Иванов Иван, А-01-25
 | 
				
			||||
 | 
				
			||||
    ## Задание
 | 
				
			||||
 | 
				
			||||
    Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной.
 | 
				
			||||
 | 
				
			||||
    ## Решение
 | 
				
			||||
 | 
				
			||||
    ```py
 | 
				
			||||
    >>> name = 'Иван'
 | 
				
			||||
    >>> type(name)
 | 
				
			||||
    'str'
 | 
				
			||||
    ```
 | 
				
			||||
 | 
				
			||||
Для темы 1 вместо «Задания» — «Вопрос», вместо «Решения» — «Ответ».
 | 
				
			||||
 | 
				
			||||
Для тем 8 и 9 раздела «Решение» не нужно,
 | 
				
			||||
вместо этого решение размещается в отдельных файлах `*.py`.
 | 
				
			||||
@ -0,0 +1,6 @@
 | 
				
			||||
# Тема 0: образец оформления материалов
 | 
				
			||||
 | 
				
			||||
* `README.md` — этот документ, в своих темах создавать не нужно;
 | 
				
			||||
* [`report.md`](report.md) — отчет;
 | 
				
			||||
* [`task.md`](task.md) — общее контрольное задание;
 | 
				
			||||
* [`test.md`](test.md) — индивидуальное контрольное задание.
 | 
				
			||||
| 
		 После Ширина: | Высота: | Размер: 15 KiB  | 
@ -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'
 | 
				
			||||
```
 | 
				
			||||
 | 
				
			||||
Нажал *Файл / Открыть*, диалог оказался сразу нацелен на установленную папку:
 | 
				
			||||
 | 
				
			||||

 | 
				
			||||
@ -0,0 +1,15 @@
 | 
				
			||||
# Общее контрольное задание по теме 0
 | 
				
			||||
 | 
				
			||||
Иванов Иван, А-01-25
 | 
				
			||||
 | 
				
			||||
## Задание
 | 
				
			||||
 | 
				
			||||
Создать переменную `name`, содержащую ваше имя. Определить тип этой переменной.
 | 
				
			||||
 | 
				
			||||
## Решение
 | 
				
			||||
 | 
				
			||||
```py
 | 
				
			||||
>>> name = 'Иван'
 | 
				
			||||
>>> type(name)
 | 
				
			||||
'str'
 | 
				
			||||
```
 | 
				
			||||
@ -0,0 +1,24 @@
 | 
				
			||||
# Индивидуальное контрольное задание по теме 0
 | 
				
			||||
 | 
				
			||||
Иванов Иван, А-01-25
 | 
				
			||||
 | 
				
			||||
## Задание
 | 
				
			||||
 | 
				
			||||
Создать переменную `name`, содержащую ваше имя,
 | 
				
			||||
и `surname`, содержащую вашу фамилию.
 | 
				
			||||
Как из них можно создать переменную, содержащую ваше полное имя?
 | 
				
			||||
 | 
				
			||||
## Решение
 | 
				
			||||
 | 
				
			||||
```py
 | 
				
			||||
>>> name = 'Иван'
 | 
				
			||||
>>> surname = 'Иванов'
 | 
				
			||||
```
 | 
				
			||||
 | 
				
			||||
Создать требуемую переменную `full_name` можно так:
 | 
				
			||||
 | 
				
			||||
```py
 | 
				
			||||
>>> full_name = name + ' ' + surname
 | 
				
			||||
>>> full_name
 | 
				
			||||
'Иван Иванов'
 | 
				
			||||
```
 | 
				
			||||
@ -0,0 +1,2 @@
 | 
				
			||||
name = input("Как Вас зовут? ")
 | 
				
			||||
print("Привет,", name)
 | 
				
			||||
@ -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()
 | 
				
			||||
@ -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)
 | 
				
			||||
@ -0,0 +1,2 @@
 | 
				
			||||
perm1=input('Mod1:Введите значение = ')
 | 
				
			||||
print('Mod1:Значение perm1=',perm1)
 | 
				
			||||
@ -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)
 | 
				
			||||
    
 | 
				
			||||
					Загрузка…
					
					
				
		Ссылка в новой задаче