Загрузка данных
**Задание 4. Разработать программную среду для создания и отладки модулей на языке Ассемблера.**
**Порядок отладки:**
Запустить программу и ввести простую инструкцию например MOV AX, 5. Проверить что регистр AX получил значение 5. Затем ввести ADD AX, 3 и я что AX стал 8. Проверить неизвестную команду — программа должна вывести сообщение об ошибке а не упасть.
**Фрагменты кода:**
```python
def execute(instruction, registers):
parts = instruction.strip().upper().split()
cmd = parts[0]
if cmd == "MOV":
reg, val = parts[1].strip(","), parts[2]
registers[reg] = int(val)
elif cmd == "ADD":
reg, val = parts[1].strip(","), parts[2]
registers[reg] += int(val)
```
**Полный код:**
```python
def execute(instruction, registers):
try:
parts = instruction.strip().upper().split()
cmd = parts[0]
if cmd == "MOV":
reg, val = parts[1].strip(","), parts[2]
registers[reg] = int(val)
elif cmd == "ADD":
reg, val = parts[1].strip(","), parts[2]
registers[reg] = registers.get(reg, 0) + int(val)
elif cmd == "SUB":
reg, val = parts[1].strip(","), parts[2]
registers[reg] = registers.get(reg, 0) - int(val)
elif cmd == "MUL":
reg, val = parts[1].strip(","), parts[2]
registers[reg] = registers.get(reg, 0) * int(val)
elif cmd == "PRINT":
reg = parts[1]
print(f" {reg} = {registers.get(reg, 0)}")
else:
print(f" Неизвестная команда: {cmd}")
except Exception as e:
print(f" Ошибка: {e}")
def show_registers(registers):
if not registers:
print(" Регистры пусты")
else:
for reg, val in registers.items():
print(f" {reg} = {val}")
print("=== Симулятор Ассемблера ===")
print("Команды: MOV, ADD, SUB, MUL, PRINT")
print("Пример: MOV AX, 5 | ADD AX, 3 | PRINT AX")
print("Введите 'REGS' для просмотра регистров, 'END' для выхода\n")
registers = {}
while True:
line = input(">> ").strip()
if line.upper() == "END":
print("Выход из симулятора.")
break
elif line.upper() == "REGS":
show_registers(registers)
elif line == "":
continue
else:
execute(line, registers)
```
**Скриншоты:** *(вставить самостоятельно)*
---
**Задание 5. Разработать программу для оценки показателей успеваемости студентов образовательных организаций.**
**Порядок отладки:**
Запустить и добавить 3-4 студентов с разными оценками. Проверить что средний балл считается правильно вручную. Убедиться что при вводе оценки вне диапазона 1-5 программа просит ввести снова. Проверить вывод списка отсортированного по баллу.
**Фрагменты кода:**
```python
def add_student(students):
name = input("Имя студента: ")
grades = []
n = int(input("Количество оценок: "))
for i in range(n):
while True:
g = int(input(f" Оценка {i+1}: "))
if 1 <= g <= 5:
grades.append(g)
break
print(" Оценка должна быть от 1 до 5")
avg = sum(grades) / len(grades)
students.append({"name": name, "grades": grades, "avg": avg})
```
**Полный код:**
```python
def add_student(students):
name = input("Имя студента: ")
grades = []
n = int(input("Количество оценок: "))
for i in range(n):
while True:
try:
g = int(input(f" Оценка {i+1}: "))
if 1 <= g <= 5:
grades.append(g)
break
else:
print(" Введите от 1 до 5")
except ValueError:
print(" Введите число")
avg = round(sum(grades) / len(grades), 2)
students.append({"name": name, "grades": grades, "avg": avg})
print(f" Средний балл: {avg}")
def show_students(students):
if not students:
print("Список пуст")
return
sorted_list = sorted(students, key=lambda x: x["avg"], reverse=True)
print(f"\n{'№':<4} {'Имя':<20} {'Оценки':<20} {'Средний балл'}")
print("-" * 55)
for i, s in enumerate(sorted_list, 1):
grades_str = ", ".join(map(str, s["grades"]))
print(f"{i:<4} {s['name']:<20} {grades_str:<20} {s['avg']}")
def stats(students):
if not students:
print("Нет данных")
return
avgs = [s["avg"] for s in students]
best = max(students, key=lambda x: x["avg"])
worst = min(students, key=lambda x: x["avg"])
print(f"\nВсего студентов: {len(students)}")
print(f"Средний балл группы: {round(sum(avgs)/len(avgs), 2)}")
print(f"Лучший студент: {best['name']} ({best['avg']})")
print(f"Худший студент: {worst['name']} ({worst['avg']})")
print("=== Успеваемость студентов ===")
students = []
while True:
print("\n1. Добавить студента")
print("2. Показать список")
print("3. Статистика")
print("4. Выход")
choice = input("Выбор: ").strip()
if choice == "1":
add_student(students)
elif choice == "2":
show_students(students)
elif choice == "3":
stats(students)
elif choice == "4":
print("Выход.")
break
else:
print("Неверный выбор")
```
**Скриншоты:** *(вставить самостоятельно)*