Современные технологии программирования (часть 2) ДО СИБГУТИ
|
|
engineerklub | Дата: Вторник, 29.08.2023, 15:54 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Современные технологии программирования (часть 2) ДО СИБГУТИ
Тип работы: Работа Лабораторная Сдано в учебном заведении: ДО СИБГУТИ
Описание: Лабораторная работа №1 Конвертор чисел из десятичной системы счисления в систему счисления с заданным основанием Цель: Сформировать практические навыки реализации классов на языке C#. Задание 1 1. Реализовать преобразователь действительных чисел со знаком из десятичной системы счисления в систему счисления с заданным основанием p, в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления p принадлежит диапазону значений от 2 до 16. 2. Протестировать каждый метод класса. Спецификация класса «Преобразователь чисел из десятичной системы счисления в систему счисления с заданным основанием p». ADT Conver_10_p Данные Преобразователь действительных чисел из десятичной системы счисления в систему счисления с заданным основанием (тип Conver_10_p). Основание системы счисления p - это целое число, со значением, принадлежащим диапазону от 2 до 16 и целое число c, определяющее точность представления результата, выраженную в количестве разрядов. Операции. Операции представлены в таблице 1. Таблица 1 - Операции Do(double n, int p, int c) Выполнить преобразование Вход: Десятичное действительное число n. Основание системы счисления p. Точность преобразования дроби, заданная числом разрядов дробной части результата c. Например: Do(-17.875,16,3) = “-А1.Е” . Процесс: Выполняет преобразование десятичного действительного числа n, в систему счисления с основанием р и точностью c. Например: Do (”-17.875”,16,3) = “-А1.Е”. Выход: Строка результата. Например: Do(”-17.875”) = “-А1.Е”. int_to_Char(int d) Преобразовать целое значение в цифру системы счисления с основанием р. Вход: d – значение типа int – целое, соответствующее цифре в системе счисления с основанием р. Предусловия: Нет. Процесс: Преобразует целое d в соответствующую ему цифру в системе счисления с основанием р, значение типа Char. Например: int_to_Char (14) = “E”. Выход: Значение типа char. Постусловия: Нет. int_to_P(int n, int p) Преобразовать целое в строку. Вход: n – целое число в системе счисления с основанием 10. p – основание системы счисления результата. Предусловия: Нет. Процесс: Преобразует целое n в строку, содержащую целое число в системе счисления с основанием p. Например: int_to_P(161, 16) = “A1” Выход: Строка. Постусловия: Нет. flt_to_P(double n, int p, int c) Преобразовать дробь в строку. Вход: n – дробь в системе счисления с основанием 10, p – основание системы счисления, c – точность представления дроби. Предусловия: Нет. Процесс: Преобразует дробь n в строку, содержащую дробь в системе счисления с основанием p с точностью с. Например: flt_to_P(0.9375, 2, 4) «1111» Выход: Строка. Постусловия: Нет. end Conver_10_p Рекомендации к выполнению. 1. Тип данных реализовать, используя статический класс. 2. Тип данных сохраните в отдельном файле Conver_10_p. Ниже представлена заготовка описания класса Conver_10_p. Вам необходимо написать код методов и протестировать методы. namespace Конвертор { class Conver_10_P { //Преобразовать целое в символ. public static char int_to_Char(int n) { } //Преобразовать десятичное целое в с.сч. с основанием р. public static string int_to_P(int n, int p) { } //Преобразовать десятичную дробь в с.сч. с основанием р. public static string flt_to_P(double n, int p, int c) { } //Преобразовать десятичное //действительное число в с.сч. с осн. р. public static string Do(double n, int p, int c) { } } } Содержание отчета 1. Задание. 2. Текст программы. 3. Тестовые наборы данных для тестирования класса. Контрольные вопросы 1. Что такое инкапсуляция? 2. Как синтаксически представлено поле в описании класса? 3. Как синтаксически представлен метод в описании класса? 4. Как синтаксически представлено простое свойство в описании класса? 5. Особенности описания методов класса? 6. Видимость идентификаторов в описании класса? 7. В чём особенности статических методов? 8. В чём особенности статических классов? Класс «Конвертер р_10» - преобразователь чисел из системы счисления с основанием р в десятичную систему счисления Цель: Сформировать практические навыки реализации классов на языке C#.
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Вторник, 29.08.2023, 15:54 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Задание 2 1. Реализовать преобразователь действительных (конвертер р_10) чисел из системы счисления с основанием р в десятичную систему счисления в соответствии с приведенной ниже спецификацией, используя класс. Основание системы счисления р принадлежит диапазону значений от 2 до 16. 2. Протестировать каждый метод класса. Спецификация класса «Конвертер р_10» - преобразователь действительных чисел со знаком из системы счисления с основанием р в десятичную систему счисления. ADT Conver_p_10 Данные Преобразователь действительных чисел из заданной системы счисления с основанием p в десятичную систему счисления (тип Conver_p_10). Основание системы счисления со значением, принадлежащим диапазону от 2 до 16. Операции Операции приведены в таблице 2. Таблица 2 - Операции dval(string P_num, int P) Выполнить преобразование Вход: P_num - строковое представление действительного числа в системе счисления с основанием р. Например: dval(“A5.E”, 16) Процесс: Выполняет преобразование действительного числа, представленного строкой в числовое представление. Например: dval(“A5.E”, 16) = -165.875. Выход: Вещественное число. Постусловия: Нет. char_To_num(char ch) Преобразовать символ в целое Вход: ch – значение типа char – символ, изображающий цифру системы счисления с основанием p. Предусловия: Нет. Процесс: Преобразует символ ch в значение целого типа. Например: PCharToInt(‘A’) = 10. Выход: Вещественное число. Постусловия: Нет. convert(string P_num, int P, double weight) Преобразовать строку в вещественное число. Вход: P_num – строка, изображающая цифры целой и дробной частей вещественного числа в системе счисления с основанием p без разделителя. weight – вес единицы старшего разряда целой части числа. Предусловия: Нет. Процесс: Преобразует строку P_num, содержащую цифры целой и дробной частей вещественного числа в системе счисления с основанием p без разделителя в вещественное число. Например: convert (“A5E1”, 16, 16) Выход: Вещественное число. Постусловия: Нет. end Conver_p_10 Рекомендации к выполнению. Описание класса может выглядеть следующим образом: namespace Конвертор { public class Conver_P_10 { //Преобразовать цифру в число. static double char_To_num(char ch) { } //Преобразовать строку в число private static double convert(string P_num, int P, double weight) { } //Преобразовать из с.сч. с основанием р //в с.сч. с основанием 10. public static double dval(string P_num, int P) { } } } 3. Тип данных реализовать, используя статический класс. 4. Сохраните класс в отдельном файле Conver_p_10. Содержание отчета 1. Задание. 2. Текст программы. 3. Тестовые наборы данных для тестирования класса. Контрольные вопросы 1. Что такое инкапсуляция? 2. Как синтаксически представлено поле в описании класса? 3. Как синтаксически представлен метод в описании класса? 4. Как синтаксически представлено простое свойство в описании класса? 5. Особенности описания методов класса? 6. Видимость идентификаторов в описании класса? 7. В чём особенности статических методов? 8. В чём особенности статических классов? 9. Как вызываются статические методы?
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Вторник, 29.08.2023, 15:55 | Сообщение # 3 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Тип работы: Работа Лабораторная Сдано в учебном заведении: ДО СИБГУТИ
Описание: Лабораторная работа №2. Редактор чисел в системе счисления с основанием р. Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного языка программирования C#. Задание 1 1. Разработать и реализовать класс Editor «Редактор действительных чисел представленных в системе счисления с основанием р», используя класс языка высокого уровня. Основание системы счисления р принимает значение из диапазона 2..16. Все команды редактора удобно пронумеровать, начиная с команды добавить 0 целыми числами от 0. При реализации интерфейса номера команд удобно хранить в свойстве Tag, которое имеется у визуальных компонентов. Атрибуты и операции класс представлены на рисунке 10.
Рисунок 10 - Атрибуты и операции класса 2. Ответственность класса Editor (редактор) – хранение, ввод и редактирование строкового представления числа, представленного в системе счисления с основанием p. Класс должен обеспечивать: добавление символов (AddDigit), соответствующих р-ичным цифрам (р от 2 до 16); добавления нуля (AddZero()); добавление разделителя целой и дробной частей (AddDelim()); забой символа - удаление символа, стоящего справа (BS); очистку - установку нулевого значения числа (Clear); чтение строкового представления р-ичного числа (Number). 3. Протестировать каждый метод класса. Рекомендации к выполнению Описание класса может выглядеть следующим образом: namespace Конвертор { class Editor { //Поле для хранения редактируемого числа. string number = ""; //Разделитель целой и дробной частей. const string delim = "."; //Ноль. const string zero = "0"; //Свойствое для чтения редактируемого числа. public string Number { get { } } //Добавить цифру. public string AddDigit(int n) { } //Точность представления результата. public int Acc(){ } //Добавить ноль. public string AddZero(){ } //Добавить разделитель. public string AddDelim(){ } //Удалить символ справа. public string Bs() { } //Очистить редактируемое число. public string Clear() { } //Выполнить команду редактирования. public string DoEdit(int j) { } } } Класс сохраните в файле Editor. В разделе описания констант опишите следующие константы: «разделитель целой и дробной частей» строкового типа; «строковое представление нуля» строкового типа. Содержание отчета 1. Задание. 2. Текст программы. 3. Тестовые наборы данных для тестирования класса. Контрольные вопросы 1. В чём состоит особенность раздела описания класса с уровнем доступа protected? 2. В чём состоит особенность раздела описания класса с уровнем доступа private? 3. В чём состоит особенность раздела описания класса с уровнем доступа public? 4. В чём состоит особенность инициализации полей ссылочного типа и констант в конструкторе? 5. Что такое this? 6. Как описываются поля в классах? 7. Какой операцией создаются объекты классов? 8. Как вызвать нестатический метод класса? Класс История. Цель: Сформировать практические навыки реализации классов средствами объектно-ориентированного программирования языка C#; использования библиотечного класса обобщённой коллекции List<> для обработки данных. Задание 2 1. Разработать и реализовать класс History «История», используя класс языка C#. Класс отвечает за документирование выполнения пользователем переводов чисел. Объекты класса хранят исходные числа, результаты преобразования и основания систем счисления исходного числа и результата. Атрибуты и операции класса представлены таблице 3. Таблица 3 - Атрибуты и операции класса «История» История Запись(i: integer): String; ДобавитьЗапись(a: String); Записей(): integer ОчиститьИсторию(); Обязанность: ввод, вывод, хранение данных введённых пользователем и полученных результатов.
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Вторник, 29.08.2023, 15:55 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| 2. Класс должен отвечать за ввод, вывод, хранение данных введённых пользователем и полученных результатов. Класс должен обеспечивать: • добавление записи (ДобавитьЗапись) - строки, содержащей введённое пользователем число, результат его преобразования и основания систем счисления исходной и той, в которую число преобразовано; • извлечение записи по её номеру в списке (Запись); • очистка списка (ОчиститьИсторию); • конструктор (Запись); • текущий размер списка в числе записей (Записей); 3. Протестировать каждый метод класса. Рекомендации к выполнению 1. Создайте консольное приложение, в которое добавьте класс History и сохраните его в файле History. 2. В этот же файл добавьте структуру (struct) Record с четырьмя полями для хранения исходного числа, результата и оснований их систем счисления. В структуру добавьте конструктор и метод ToString() для преобразования значения в формат строки. 3. Класс History, постройте на основе библиотечного класса коллекции List<Record> из пространства имён System.Collections.Generic. 4. В классе History опишите поле List<Record> L – список значений типа Record. Для поля опишите уровень доступа private. 5. Следующие операции класса опишите с уровнем доступа public: • добавить запись (AddRecord) - строку, содержащую введённое пользователем число, результат его преобразования и основания их систем счисления; • извлечь запись по её номеру из списка L; • очистить историю (Clear); • конструктор (History); • текущий размер списка в числе записей (Count); Описание структуры Record и класса History могут иметь следующий вид: public struct Record { int p1; int p2; string number1; string number2; public Record(int p1, int p2, string n1, string n2) { } public override string ToString() { } } public class History { List<Record> L; public Record this[int i] { } public void AddRecord(int p1, int p2, string n1, string n2) { } public void Clear() { } public int Count() { } public History() { } } Содержание отчета 1. Задание. 2. Текст программы. 3. Тестовые наборы данных для тестирования класса. Контрольные вопросы 1. В чём состоит особенность обобщённой коллекции List< >? 2. В чём состоит отличие типа struct от типа class? 3. Как создаются объекты типа struct? 4. В чём состоит особенность раздела описания класса с уровнем доступа private? 5. В чём состоит особенность раздела описания класса с уровнем доступа public? 6. В чём состоит особенность инициализации полей ссылочного типа и констант в конструкторе? 7. Что такое this?
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Вторник, 29.08.2023, 15:56 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Тип работы: Работа Лабораторная Сдано в учебном заведении: ДО СИБГУТИ
Описание: Лабораторная работа №3 Класс Управление для «Конвертора p1_р2». Цель: Сформировать практические навыки реализации классов на языке C#. Задание 1 1. Реализовать Управление для «Конвертера p1_р2». 2. Протестировать каждый метод класса. Спецификация класса Управление для «Конвертера p1_р2». ADT Control_ Данные Объект класса Control_ (Управление) отвечают за координацию действий между классом «Интерфейс» и классами «Редактор», «Конвертер p1_10», «Конвертер 10_p2», «История». Объект класса Control_ содержат поля: ed типа Editor, his типа История, и свойства: Pin типа int (основание системы счисления исходного числа), Pout типа int (основание системы счисления результата), St типа State (состояние конвертера). Он может находиться в одном из двух состояний: «Редактирование», «Преобразовано». Объекты этого типа изменяемы. Операции Операции представлены в таблице 4. Таблица 4 - Операции Control_ Конструктор Вход: Нет. Процесс: Создаёт объект Управление типа (тип Control_) и инициирует поля объекта начальными значениями. DoCommand Выполнить команду. Вход: n - целое значение, номер выполняемой команды. Предусловия: Нет. Процесс: В зависимости от значения n и состояния (St) передаёт сообщение объекту Редактор или Преобразователь и изменяет состояние. Возвращает строку результата: либо отредактированное число, либо результат преобразования. Выход: Строка. Постусловия: Нет. end Control_ Рекомендации к выполнению 1. Тип данных реализовать, используя класс. 2. Для записи и считывания полей «преобразователя» используйте свойства. 3. Тип данных реализуйте в отдельном файле Control_. Пример описания класса Управление приведён ниже. namespace Конвертор { class Control_ { //Основание системы сч. исходного числа. const int pin = 10; //Основание системы сч. результата. const int pout = 16; //Число разрядов в дробной части результата. const int accuracy = 10; public История his = new История(); public enum State {Редактирование, Преобразовано} //Свойство для чтения и записи состояние Конвертера. public State St { get; set; } //Конструктор. public Control_() { St = State.Редактирование; Pin = pin; Pout = pout; } //объект редактор public Editor ed = new Editor(); //Свойство для чтения и записи основание системы сч. р1. public int Pin { get; set; } //Свойство для чтения и записи основание системы сч. р2. public int Pout { get; set; } //Выполнить команду конвертера. public string DoCmnd(int j) { if (j == 19) { double r = Conver_P_10.dval(ed.Number, (Int16)Pin); string res = Conver_10_P.Do(r, (Int32)Pout,acc()); St = State.Преобразовано; his.ДобавитьЗапись(Pin, Pout, ed.Number, res); return res; } else { St = State.Редактирование; return ed.DoEdit(j); }
} //Точность представления результата. private int acc() { return (int)Math.Round(ed.Acc() * Math.Log(Pin) / Math.Log(Pout) + 0.5); } } } Содержание отчета 1. Задание. 2. Текст программы. 3. Тестовые наборы данных для тестирования класса. Контрольные вопросы 1. Что такое инкапсуляция? 2. Как синтаксически представлено поле в описании класса? 3. Как синтаксически представлен метод в описании класса? 4. Как синтаксически представлено простое свойство в описании класса? 5. Особенности описания методов класса? 6. Особенности описания и назначение конструктора класса? 7. Видимость идентификаторов в описании класса? 8. Особенности вызова методов применительно к объектам класса? Интерфейс приложения «Конвертор р1_р2». Цель: Сформировать практические навыки реализации графических интерфейсов пользователя (GUI) на основе библиотеки визуальных компонентов. Задание 2 1. Реализовать «Интерфейс» приложения «Конвертер р1_р2», используя библиотечный класс формы и визуальные компоненты. 2. Протестировать методы класса. Спецификация класса «Интерфейс». Интерфейс приложения представлен на рисунке 1. ADT TPanel_p_p Данные
СКАЧАТЬ
|
|
| |
engineerklub | Дата: Вторник, 29.08.2023, 15:57 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 28530
Статус: Offline
| Интерфейс» конвертера действительных чисел из системы счисления с основанием p1 в систему счисления с основанием p2 предназначен для: выбора оснований систем счисления p1, p2 из диапазона от 2..16; ввода и редактирования действительного числа со знаком в системе счисления с выбранным основанием p1; отображения результата – представления ввёдённого числа в системе счисления с основанием p2; отображения справки о приложении; отображения истории текущего сеанса работы пользователя с приложением. «Интерфейс» несёт на себе визуальные компоненты, реализующие выполнения команд преобразователя и объект «Управление» класса Control_. Операции. Операции представлены в таблице 5. Таблица 5 - Операции Наименование Пояснение trackBar1_Scroll Обработчик события Scroll для компонента trackBar1. Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события Scroll. e - это объект базового класса для классов, содержащих данные о событии. Предусловия: Пользователь перетаскивает бегунок компонента trackBar1. Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок. Постусловия: Обновления выполнены. Выход: Нет. numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1. Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged. Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1. Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 исходного числа. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок. Постусловия: Обновления выполнены. Выход: Нет. trackBar2_Scroll Обработчик события Scroll для компонента trackBar2. Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события Scroll. Предусловия: Пользователь перетаскивает бегунок компонента trackBar2. Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления p2 исходного числа. Устанавливает новое значение основания системы счисления. Постусловия: Обновления выполнены. Выход: Нет. numericUpDown2_ValueChanged Обработчик события ValueChanged для компонента numericUpDown2. Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged. Предусловия: Пользователь изменяет р2 с помощью компонента numericUpDown2. Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р2 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок. Постусловия: Обновления выполнены. Выход: Нет. numericUpDown1_ValueChanged Обработчик события ValueChanged для компонента numericUpDown1. Вход: object sender, EventArgs e. sender – указатель на объект, который явился инициатором события ValueChanged. Предусловия: Пользователь изменяет р1 с помощью компонента numericUpDown1. Процесс: Обновляет свойства визуальных компонентов формы, связанных с изменением основания системы счисления р1 результата. Устанавливает новое значение основания системы счисления. Обновляет состояние командных кнопок. Постусловия: Обновления выполнены. Выход: Нет. TPanelp_p_Load Обработчик события Load для компонента TPanelp_p. Вход: (object sender, EventArgs e). sender – указатель на объект, который явился инициатором события Load. Предусловия: Форма загружается в память. Процесс: Устанавливает начальные значения свойств визуальных компонентов формы после загрузки формы. Выход: Нет. Постусловия: Установка свойств выполнена. DoCmnd(int j) Выполнить команду. Вход: j значение целого типа – номер команды преобразователя. Предусловия: Пользователь нажал командную кнопку команды с номером j. Процесс: Передаёт сообщение объекту Управление и отображает возвращаемый им результат. Вызывается метод объекта Управление и передаётся номер набранной пользователем команды Конвертора. Выход: Нет. Постусловия: Обновляется состояние Интерфейса. button_Click Обработчик события Click для командных кнопок. Вход: object sender, EventArgs e. sender: object – указатель на объект, который явился инициатором события Click.
СКАЧАТЬ
|
|
| |