diff --git a/TEMA9/test.md b/TEMA9/test.md index 51382d9..1a44bd5 100644 --- a/TEMA9/test.md +++ b/TEMA9/test.md @@ -1,88 +1,31 @@ -## ИКЗ ПО теме 8 +## Модуль 3 Добровольска Елизавета, А-02-23 -Вариант 4 +Вариант 10 ## Задание -Разработайте функцию по заданию и на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных -для проверки работы функции, вызов функции и отображение полученных результатов. -Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами: -амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции). -Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка. +M3_10 +1) Создайте модуль М1, содержащий две функции: -## Решение +- функция 1: аргументы - два кортежа с целочисленными элементами, не обязательно одинаковой длины; в функции должен быть составлены два списка: SPS1 с элементами из двух входных кортежей, причем элементы SPS1 должны быть упорядочены по возрастанию величины, а также список SPS2 с элементами, равными 1 или 2, причем значение 1 берется в том случае, если соответствующий элемент в SPS1 взят из первого кортежа, а значение 2 - если из второго; -Код модуля для генерации сигнала: -```py -def generate_pulsed_signal(amplitude, pulse_duration, period, num_samples, filename): - signal_data = [] +- функция 2: аргумент - числовой список; по этому списку в функции должны быть вычислены среднее, наименьшее и наибольшее значения, медиана и оценка стандартного отклонения, - for i in range(num_samples): - # Определяем находится ли текущий отсчет в фазе импульсаа - if (i % period) < pulse_duration: - signal_data.append(amplitude) - else: - signal_data.append(0) # Фаза паузы +2) Создайте еще один модуль М2, в котором должны выполняться операции: - # Запись сигнала в файлик - with open(filename, 'w') as f: - for sample in signal_data: - f.write(f"{sample}\n") +- запрашивается и вводится имя бинарного файла с данными; проверяется наличие файла и при отсутствии - повторение запроса; - return signal_data -``` +- из указанного файла считываются два кортежа: KRT1 и KRT2. -Основной модуль: +- применяется функция 1 к этим двум кортежам и отображаются полученные списки; -```py -from signal_generator import generate_pulsed_signal +- применяется функция 2 к списку SPS1 и отображаются результаты расчета; -print("Генерация импульсного сигнала") +- в текстовый файл с именем Res22.txt записываются результаты расчета по функции 1 так, чтобы в каждой строке был один элемент из SPS1 и один элемент из SPS2, разделенные пробелом. +3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика полученный из функции 1 список SPS1. -signal_amplitude = 10.0 -signal_pulse_duration = 5 -signal_period = 15 -signal_num_samples = 100 -output_file_name = "pulsed_signal.txt" +4) Подготовьте бинарный файл с двумя кортежами, содержащими, соответственно, 40 и 50 случайных целочисленных элементов из диапазона значений от 20 до 45. Проверьте работу программы с этими данными. -print(f"\nПараметры сигнала:") -print(f" Амплитуда: {signal_amplitude}") -print(f" Продолжительность импульса: {signal_pulse_duration} отсчетов") -print(f" Период (импульс+пауза): {signal_period} отсчетов") -print(f" Общее число отсчетов: {signal_num_samples}") -print(f" Файл для записи: {output_file_name}") -generated_signal = generate_pulsed_signal( - signal_amplitude, - signal_pulse_duration, - signal_period, - signal_num_samples, - output_file_name -) - -print(f"\nСигнал успешно сгенерирован и записан в файл '{output_file_name}'.") -print("\nПервые 20 отсчетов сгенерированного сигнала (возвращенный список):") -print(generated_signal[:20]) -print("\n(Полный список доступен в переменной 'generated_signal' и в файле).") - -``` - -Вывод в консоли: - -Генерация импульсного сигнала - -Параметры сигнала: - Амплитуда: 10.0 - Продолжительность импульса: 5 отсчетов - Период (импульс+пауза): 15 отсчетов - Общее число отсчетов: 100 - Файл для записи: pulsed_signal.txt - -Сигнал успешно сгенерирован и записан в файл 'pulsed_signal.txt'. - -Первые 20 отсчетов сгенерированного сигнала (возвращенный список): -[10.0, 10.0, 10.0, 10.0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0, 10.0, 10.0, 10.0, 10.0] - -(Полный список доступен в переменной 'generated_signal' и в файле).