Главная страница
Навигация по странице:

  • 3.1 Схема алгоритма

  • Схема метода Function : Схема метода Matrix _ out

  • 3.2 Описание алгоритма программы

  • Результат работы программы

  • Отчёт по классам и матрицам. Отчёт_по_практике_Классы_и_матрицы. Отчет по лабораторной работе 2 Основы объектноориентированного программирования Студент Сковорода В. Н


    Скачать 205.8 Kb.
    НазваниеОтчет по лабораторной работе 2 Основы объектноориентированного программирования Студент Сковорода В. Н
    АнкорОтчёт по классам и матрицам
    Дата03.03.2023
    Размер205.8 Kb.
    Формат файлаdocx
    Имя файлаОтчёт_по_практике_Классы_и_матрицы.docx
    ТипОтчет
    #966081

    Министерство образования и науки Российской Федерации

    Федеральное государственное автономное образовательное учреждение

    высшего образования

    «Уральский федеральный университет имени первого Президента России Б.Н. Ельцина»

    Институт радиоэлектроники и информационных технологий - РТФ

    Школа бакалавриата

    ОТЧЕТ

    По лабораторной работе №2

    Основы объектно-ориентированного программирования

    Студент: Сковорода В. Н.

    Группа: РИ-300008

    Преподаватель: Саблина Н. Г.

    Екатеринбург

    2022

    Оглавление


    1. Введение

    2. Постановка задачи

    3. Метод решения

      1. Схема алгоритма

      2. Описание алгоритма программы

    1. Используемая литература

    2. Приложение



    1. Введение

    RAD (от англ. rapidapplicationdevelopment — быстрая разработка приложений) — концепция организации технологического процесса разработки программных продуктов, ориентированная на максимально быстрое получение результата в условиях сильных ограничений по срокам и бюджету и нечётко определённых требований к продукту. Эффект ускорения разработки достигается путём использования соответствующих технических средств и непрерывного, параллельного с ходом разработки, уточнения требований и оценки текущих результатов с привлечением заказчика. RAD создана в конце 1980-х как альтернатива более ранним каскадной и итеративной моделям. С конца XX века RAD получила широкое распространение.

    Тот же термин используется в отношении программных инструментов быстрого прототипирования и разработки ПО. Типичными качествами таких инструментов являются максимальная автоматизация рутинных операций и широкое использование визуального программирования.

    1. Постановка задачи

    Условие задачи: Найти минимальный элемент в матрице случайных действительных чисел А размерности N×M и вычесть его значение из элементов строки, где он находится.

    Исходными данными для этой задачи являются значения перемен-
    ной N и M – количество строк и столбцов в матрице соответственно, N и M - целые числа, вводится с консоли.

    Выходные данные – выведенная на экран матрица размера N на M в диалоговом окне, заполненная случайными числами, возможность по нажатию кнопки вычесть минимально число матрицы из строки где оно находится.

    1. Метод решения

    Матрица – Математический объект, записываемый в виде прямоугольной таблицы, в программировании, матрицу можно записывать в двумерный массив. Чтобы обратиться к любому элементу двумерного массива, нужно знать номер строки и столбца в котором находится нужный элемент.

    Для того чтобы перебрать все значения матрицы, нужно перебирать номера строк от 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, которая вычитает минимальное число из строки и отображает обновлённую матрицу в таблице.

      1. Результат работы программы

    Результатом программы является матрица, в которой найдено минимальное число( рисунок 4 ) и вычтено из строки в которой оно располагается ( рисунок 5 ).



    Рисунок 4

    Рисунок 5

    1. Создам минимальный класс new_Class содержащий в
      1.а) полях размерность массива N и M

    1.б) добавлю туда два конструктора (с параметрами и без)


    Рисунок 6 – минимальный класс с двумя конструкторами

    1.в) Создание объектов этого класса




    Рисунок 7 – создание объектов класса двумя разными способами

    1. а) Добавлю метод, который заполняет матрицу случайными числами make_matrix



    Рисунок 8 – функция

    Добавлю в класс метод вывода матрицы на экран Matrix_out.

    Рисунок 9 – функция вывода данных на экран

    б) Продемонстрирую создание объектов и вызов метода вывода на экран.


    Рисунок 10 – создание экземпляра класса и вызов функции вывода на экран


    Рисунок 11 – вывод данных в консоль новой функцией

    1. Сделаю поля данного класса скрытыми, чтобы к ним нельзя было обратиться на прямую. И попытаюсь обратится к ним напрямую.[2]


    Рисунок 11 – поля класса стали скрытыми



    Рисунок 12 – попытка обратиться к полям напрямую


    Рисунок 13 – получение ошибки.

    1. Добавлю get-тер – get_number и set-тер – set_number ( рисунок 15 ), и продемонстрирую вывозов этих функций из внешнего класса ( рисунки 16 и 17)


    Рисунок 14


    Рисунок 15


    Рисунок 16

    1. Динамическое создание – это создание объектов указанного класса во время работы программы. Продемонстрирую создание объектов класса new_Сlass динамически в массиве. [1]


    Рисунок 17

    1. Добавлю метод Function который будет производить вычисления для моего варианта задания, а именно – вычитания минимального числа из строки в которой он находится.


    Рисунок 20

    1. Используемая литература:

    1. Microsoft Corporation. Принципы проектирования и разработки программного обеспечения. Учеб. курс MCSD. М.: Изд.-торг. дом «Русская редакция», 2000.

    2. Windows Forms. Программирование на C# [Электронный ресурс]. — Режим доступа: http://csharpcoding.org/category/windows-forms/ (дата обращения: 15.03.2017).

    3. Агуров П. В. C#. Разработка компонентов в MC Visual studio 2005/2008 / Агуров П. В. – СПб.:БХВ-Петербург, 2008. – 479 с.

    4. Приложение.

    Скрипт 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;

    }

    }



    написать администратору сайта