
- •Лабораторна робота № 1 Множення матриць
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 2 Обробка двовимірного масиву
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 3 Створення ієрархії об’єктів
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 4 Застосування індексатора
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 5 Делегати і події
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 6 Структурний тип даних
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 7 Перелічувальний тип даних
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Лабораторна робота № 8 Обробка файлу даних
- •1. Постановка задачі
- •2. Поради до написання програми
- •Постановка задачі.
- •4. Контрольні запитання
- •Література Основна
|
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ |
|
Дніпропетровський національний університет залізничного транспорту імені академіка В. Лазаряна |
||
|
Кафедра «Автоматика, телемеханіка та зв’язок» |
|
Комп’ютерні технології та програмування Методичні вказівки до виконання лабораторних робіт у 2‑му семестрі 1‑го курсу |
||
Укладачі: |
В. В. Безруков Р. В. Рибалка Л. С. Тимошенко |
|
Дніпропетровськ – 2012 |
ЗМІСТ
Лабораторна робота № 1 Множення матриць 3
Лабораторна робота № 2 Обробка двовимірного масиву 5
Лабораторна робота № 3 Створення ієрархії об’єктів 9
Лабораторна робота № 4 Застосування індексатора 12
Лабораторна робота № 5 Делегати і події 14
Лабораторна робота № 6 Структурний тип даних 16
Лабораторна робота № 7 Перелічувальний тип даних 17
Лабораторна робота № 8 Обробка файлу даних 19
Література 23
Лабораторна робота № 1 Множення матриць
Мета роботи: навчитись створювати, заповнювати числами, виконувати математичні операції з двовимірними масивами і виводити їх на екран.
1. Постановка задачі
Знайомство з
двовимірними масивами значно розширює
область програмування задач. Це, зокрема,
задачі на операції з матрицями. Однією
з них є задача множення матриць.
Результатом множення матриці
на матрицю
буде матриця
.
Правило множення матриць таке: елементи
результуючої матриці обчислюються за
формулою
,
де
–
номер рядка матриць
і
;
–
номер стовпця матриці
і
.
2. Поради до написання програми
Вікно програми показане на рис. 1.1. Вікно має три компонента NumericUpDown для завдання розміру матриць, три поля текстових редакторів для виведення матриць на екран і дві кнопки для очищення кожного полів для матриць і з метою ручного або автоматичного оновлення цих матриць, а також кнопку з надписом «Обчислити» і кнопку з надписом «Вихід». Якщо при незмінному розмірі матриці поле для матриці (або ) заповнене числами то ці числа новими не замінюються при натисненні кнопки «Обчислити».
Рис. 1.1. Вікно програми «Множення матриць»
Величини m, k, n об’явимо полями класу Form1: int m, k, n; Виведення початкових (за замовченням) значень величин m, k, n виконає метод-конструктор форми:
public Form1()
{
InitializeComponent();
numericUpDown1.Value = 7;
numericUpDown2.Value = 8;
numericUpDown3.Value = 7;
}
Основний керуючий метод-процедура цієї програми button1_Click викликає метод введення даних InpSizeMatrix і створює (резервує пам’ять) масиви , , . Якщо якесь з полів для матриць або порожне, то відповідне поле методом FillTabA або FillTabВ заповнюється цілими випадковими числами. Методи FillMatrixAFromTab і FillMatrixBFromTab заповнюють матриці і числами з таблиць, розміщених у відповідних полях редагування. Метод Dobutok виконує множення матриць, отримуючи добуток у вигляді матриці , яка методом OutResult виводиться на екран.
Керуючий метод процедура btnCalcClick має такий текст:
private void button1_Click(object sender, EventArgs e)
{
//визначення розміру матриць
InpSizeMatrix(out m, out k, out n);
//замовлення пам’яті для масивів
int[,] A = new int[m,k];
int[,] B = new int[k,n];
int[,] C = new int[m,n];
//заповнення таблиць А і В цілими випадковими числами
if (textBox1.Text == "") FillTabA(m, k);
if (textBox2.Text == "") FillTabB(k, n);
//Заповнення матриць А і В з таблиць А і В
FillMatrixAFromTab(m, k, A);
//OutMatrixA(m, k, A);
FillMatrixBFromTab(k, n, B);
//множення матриць
Dobutok(m,k,n,A,B,C);
//виведення результатуючої матриці С
OutResult(m,n,C);
//активізація редактора чисел
numericUpDown1.Focus();
}
Нижче приведені тексти усіх виконуючих методів, які викликаються є основним керуючим методом програми:
private void FillTabA(int m, int k)
{
textBox1.Clear();
string st;
Random rnd = new Random();
for (int i = 0; i < m; i++)
{
st = "";
for (int j = 0; j < k; j++)
st = st + Convert.ToString(rnd.Next(10)+ " ");
textBox1.AppendText(string.Format("{0}\n", st));
}
}
private void FillTabB(int k, int n)
{
textBox2.Clear();
string st;
Random rnd = new Random();
for (int i = 0; i < k; i++)
{
st = "";
for (int j = 0; j < n; j++)
st = st + Convert.ToString(rnd.Next(10)+ " ");
textBox2.AppendText(string.Format("{0}\n", st));
}
}
private void InpSizeMatrix(out int m, out int k, out int n)
{
m = Convert.ToInt32(numericUpDown1.Value);
k = Convert.ToInt32(numericUpDown2.Value);
n = Convert.ToInt32(numericUpDown3.Value);
}
private void FillMatrixAFromTab(int m, int k, int[,] A)
{
string st;
for (int i = 0; i < m; i++)
{
st = textBox1.Lines[i];
string[] words = st.Split(' ');
for (int j = 0; j < k; j++ )
A[i, j] = Convert.ToInt32(words[j]);
}
}
private void FillMatrixBFromTab(int k, int n, int[,] B)
{
string st;
for (int i = 0; i < k; i++)
{
st = textBox2.Lines[i];
string[] words = st.Split(' ');
for (int j = 0; j < n; j++)
B[i, j] = Convert.ToInt32(words[j]);
}
}
private void Dobutok(int m, int k, int n, int[,] A, int[,] B, int[,] C)
{
int S;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
S = 0;
for (int q = 0; q < k; q++)
S = S+A[i,q]*B[q,j];
C[i,j] = S;
}
}
private void OutResult(int m, int n, int[,] C)
{
textBox3.Clear();
string st;
for (int i = 0; i < m; i++)
{
st = "";
for (int j = 0; j < n; j++)
st = st + Convert.ToString(C[i, j] + " ");
textBox3.AppendText(string.Format("{0}\n", st));
}
}
private void buttonClearA_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox3.Clear();
}
private void buttonBClearB_Click(object sender, EventArgs e)
{
textBox2.Clear();
textBox3.Clear();
}
3. Зміст звіту