Отчёт по классам и матрицам. Отчёт_по_практике_Классы_и_матрицы. Отчет по лабораторной работе 2 Основы объектноориентированного программирования Студент Сковорода В. Н
Скачать 205.8 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «Уральский федеральный университет имени первого Президента России Б.Н. Ельцина» Институт радиоэлектроники и информационных технологий - РТФ Школа бакалавриата ОТЧЕТ По лабораторной работе №2 Основы объектно-ориентированного программирования Студент: Сковорода В. Н. Группа: РИ-300008 Преподаватель: Саблина Н. Г. Екатеринбург 2022 ОглавлениеВведение Постановка задачи Метод решения Схема алгоритма Описание алгоритма программы Используемая литература Приложение Введение RAD (от англ. rapidapplicationdevelopment — быстрая разработка приложений) — концепция организации технологического процесса разработки программных продуктов, ориентированная на максимально быстрое получение результата в условиях сильных ограничений по срокам и бюджету и нечётко определённых требований к продукту. Эффект ускорения разработки достигается путём использования соответствующих технических средств и непрерывного, параллельного с ходом разработки, уточнения требований и оценки текущих результатов с привлечением заказчика. RAD создана в конце 1980-х как альтернатива более ранним каскадной и итеративной моделям. С конца XX века RAD получила широкое распространение. Тот же термин используется в отношении программных инструментов быстрого прототипирования и разработки ПО. Типичными качествами таких инструментов являются максимальная автоматизация рутинных операций и широкое использование визуального программирования. Постановка задачи Условие задачи: Найти минимальный элемент в матрице случайных действительных чисел А размерности N×M и вычесть его значение из элементов строки, где он находится. Исходными данными для этой задачи являются значения перемен- ной N и M – количество строк и столбцов в матрице соответственно, N и M - целые числа, вводится с консоли. Выходные данные – выведенная на экран матрица размера N на M в диалоговом окне, заполненная случайными числами, возможность по нажатию кнопки вычесть минимально число матрицы из строки где оно находится. Метод решения Матрица – Математический объект, записываемый в виде прямоугольной таблицы, в программировании, матрицу можно записывать в двумерный массив. Чтобы обратиться к любому элементу двумерного массива, нужно знать номер строки и столбца в котором находится нужный элемент. Для того чтобы перебрать все значения матрицы, нужно перебирать номера строк от 1 до N, на каждой из итераций перебирать номера столбцов от 1 до M. Для того чтобы найти минимальное значение в матрице, нужно создать переменную, в которую изначально сохранить максимальное возможное число в массиве, назовём её min_value. Перебирая все значения матрицы нужно сравнивать каждый её элемент с новой переменной, если оно больше, то нужно сохранить в min_value данное число. После того как минимальное число найдено, нужно запомнить строку в котором оно находится, по нажатию кнопки, перебирать все значения выбранной строки массива, и вычитать из элементов число находящееся в переменной min_value. 3.1 Схема алгоритма: Рисунок 1 Рисунок 2 Схема метода Function: Схема метода Matrix_out: Рисунок 3 3.2 Описание алгоритма программы: Вводимое с консоли числа считывал из двух компонент textbox [3], для перевода строки в челое число, использовал метод int.tryParse(). Матрицу выводил в компоненте dataGridView – в виде таблицы. При нажатии кнопки «Создать матрицу» считываются значения N, M создаётся матрица необходимого размера и заполняется случайными значениями. После создания матрицы минимальное число в таблице выделяется зелёным светом. Заполнял матрицу случайными числами от 1 до 100 с помощью встроенного метода new Random().Next(1, 100) [1]; При нажатии кнопки «Произвести вычисления» вызывается функция Function, которая вычитает минимальное число из строки и отображает обновлённую матрицу в таблице. Результат работы программы Результатом программы является матрица, в которой найдено минимальное число( рисунок 4 ) и вычтено из строки в которой оно располагается ( рисунок 5 ). Рисунок 4 Рисунок 5 Создам минимальный класс new_Class содержащий в 1.а) полях размерность массива N и M 1.б) добавлю туда два конструктора (с параметрами и без) Рисунок 6 – минимальный класс с двумя конструкторами 1.в) Создание объектов этого класса Рисунок 7 – создание объектов класса двумя разными способами а) Добавлю метод, который заполняет матрицу случайными числами make_matrix Рисунок 8 – функция Добавлю в класс метод вывода матрицы на экран Matrix_out. Рисунок 9 – функция вывода данных на экран б) Продемонстрирую создание объектов и вызов метода вывода на экран. Рисунок 10 – создание экземпляра класса и вызов функции вывода на экран Рисунок 11 – вывод данных в консоль новой функцией Сделаю поля данного класса скрытыми, чтобы к ним нельзя было обратиться на прямую. И попытаюсь обратится к ним напрямую.[2] Рисунок 11 – поля класса стали скрытыми Рисунок 12 – попытка обратиться к полям напрямую Рисунок 13 – получение ошибки. Добавлю get-тер – get_number и set-тер – set_number ( рисунок 15 ), и продемонстрирую вывозов этих функций из внешнего класса ( рисунки 16 и 17) Рисунок 14 Рисунок 15 Рисунок 16 Динамическое создание – это создание объектов указанного класса во время работы программы. Продемонстрирую создание объектов класса new_Сlass динамически в массиве. [1] Рисунок 17 Добавлю метод Function который будет производить вычисления для моего варианта задания, а именно – вычитания минимального числа из строки в которой он находится. Рисунок 20 Используемая литература: Microsoft Corporation. Принципы проектирования и разработки программного обеспечения. Учеб. курс MCSD. М.: Изд.-торг. дом «Русская редакция», 2000. Windows Forms. Программирование на C# [Электронный ресурс]. — Режим доступа: http://csharpcoding.org/category/windows-forms/ (дата обращения: 15.03.2017). Агуров П. В. C#. Разработка компонентов в MC Visual studio 2005/2008 / Агуров П. В. – СПб.:БХВ-Петербург, 2008. – 479 с. Приложение. Скрипт Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { private int N = 0; private int M = 0; private int[,] matrix; private int min_value = 100; private int main_row; private int main_col; new_Class cl; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { bool success = int.TryParse(textBox1.Text, out N); if (!success) N = 0; } private void label2_Click(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { bool success = int.TryParse(textBox2.Text, out M); if (!success) M = 0; } private void button1_Click(object sender, EventArgs e) { matrix = new int[N, M]; min_value = 100; Random rnd = new Random(); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { matrix[i, j] = rnd.Next(1, 100); if (matrix[i, j] < min_value){ min_value = matrix[i, j]; main_row = i; main_col = j; } } } cl = new new_Class(N, M); cl.Matrix_out(matrix, dataGridView1); dataGridView1.Rows[main_row].Cells[main_col].Style.BackColor = Color.Green; } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void button2_Click(object sender, EventArgs e) { cl.Function(main_row, min_value, dataGridView1); min_value = 0; } private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e) { } } public class new_Class { private int N, M; public new_Class() {} public new_Class(int n, int m) { N = n; M = m; } public void Matrix_out(int[,] matrix, DataGridView dataGridView1){ DataTable table = new DataTable(); if (M == 0 || N == 0) return; for (int i = 0; i < M; i++) { table.Columns.Add(i.ToString(), typeof(int)); } for (int i = 0; i < N; i++) { string[] row = new string[M]; for (int j = 0; j < M; j++) { row[j] = matrix[i, j].ToString(); } Console.WriteLine(i); Console.WriteLine(M); table.Rows.Add(row); } dataGridView1.DataSource = table; } public void Function(int main_row, int min_value, DataGridView dataGridView1){ for (int i = 0; i < M; i++) { int s = int.Parse(dataGridView1.Rows[main_row].Cells[i].Value.ToString()); dataGridView1.Rows[main_row].Cells[i].Value = s - min_value; } } } } Form1.Designer.cs: namespace WindowsFormsApp1 { partial class Form1 { /// /// Обязательная переменная конструктора. /// private System.ComponentModel.IContainer components = null; /// /// Освободить все используемые ресурсы. /// /// истинно, если управляемый ресурс должен быть удален; иначе ложно. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Код, автоматически созданный конструктором форм Windows /// /// Требуемый метод для поддержки конструктора — не изменяйте /// содержимое этого метода с помощью редактора кода. /// private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.textBox2 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.button2 = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(240, 13); this.textBox1.Name = "textBox1"; this.textBox1.RightToLeft = System.Windows.Forms.RightToLeft.No; this.textBox1.Size = new System.Drawing.Size(83, 20); this.textBox1.TabIndex = 0; this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // // label1 // this.label1.AutoSize = true; this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.label1.Location = new System.Drawing.Point(37, 13); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(197, 17); this.label1.TabIndex = 1; this.label1.Text = "Введите количество строк - "; this.label1.Click += new System.EventHandler(this.label1_Click); // // label2 // this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.label2.Location = new System.Drawing.Point(348, 12); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(221, 17); this.label2.TabIndex = 3; this.label2.Text = "Введите количество столбцов - "; this.label2.Click += new System.EventHandler(this.label2_Click); // // textBox2 // this.textBox2.Location = new System.Drawing.Point(575, 12); this.textBox2.Name = "textBox2"; this.textBox2.Size = new System.Drawing.Size(83, 20); this.textBox2.TabIndex = 2; this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged); // // button1 // this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.button1.Location = new System.Drawing.Point(259, 49); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(141, 23); this.button1.TabIndex = 4; this.button1.Text = "Создать матрицу"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // dataGridView1 // this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView1.ColumnHeadersVisible = false; this.dataGridView1.EnableHeadersVisualStyles = false; this.dataGridView1.Location = new System.Drawing.Point(12, 88); this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.RowHeadersVisible = false; this.dataGridView1.RowTemplate.ReadOnly = true; this.dataGridView1.Size = new System.Drawing.Size(651, 248); this.dataGridView1.TabIndex = 5; this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick_1); // // button2 // this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); this.button2.Location = new System.Drawing.Point(240, 349); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(186, 23); this.button2.TabIndex = 6; this.button2.Text = "Произвести вычисления"; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.button2_Click); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(675, 384); this.Controls.Add(this.button2); this.Controls.Add(this.dataGridView1); this.Controls.Add(this.button1); this.Controls.Add(this.label2); this.Controls.Add(this.textBox2); this.Controls.Add(this.label1); this.Controls.Add(this.textBox1); this.Name = "Form1"; this.Text = "Работа с матрицами"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.Button button1; private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.Button button2; } } |