Разработка и анализ консольной программы на языке C# для работы с двухмерными массивами
Анализ программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С#. Реализация основного класса программы. Суть произвольного заполнения массива числами. Сохранение в текстовый файл результатов сортировки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.11.2015 |
Размер файла | 301,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Межрегиональный открытый социальный институт
Кафедра экономики и информационной безопасности
Направление подготовки - 090900.62
Профиль «Комплексная защита объектов информатизации»
КУРСОВАЯ РАБОТА
по дисциплине «Технологии и методы программирования»
на тему: «Разработка и анализ консольной программы на языке «C#» для работы с двухмерными массивами»
Выполнил:
Е.Б. Калинкин
Научный руководитель:
А.Н.Савинов
Йошкар-Ола 2015
Содержание
Введение
1. Теоретический анализ
1.1 Постановка задачи
1.2 Описание алгоритма
2. Реализация основного класса программы
2.1 Задаем размерность массива
2.2 Произвольное заполнение массива числами от 0 до 10
2.3 Сохраняем в текстовый файл результаты сортировки
2.4 Инструкция по использованию программы
Заключение
Список литературы
Введение
Объектно-ориентированное, или объектное, программирование (ООП) -- парадигма программирования, в которой основными концепциями являются понятия объектов и классов. Данная концепция в настоящее время является ведущей в области программирования. Количество прикладных языков программирования, реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Данный подход реализован в таких языках программирования как С, C++, Object Pascal, Java, С# и другие.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. В настоящее время, С# является одним из наиболее динамично развивающихся языков программирования.
Целью данной курсовой работы является разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С# средствами Microsoft Visual Studio 2010.
Задачами данной курсовой работы являются:
- выделение классов, необходимых для решения задачи;
- выделение основного действия в задаче и построение алгоритма его реализации;
- определение математического аппарата, применение которого необходимо в задаче;
- программная реализация задачи средствами Visual C#.
Язык С# как средство обучения программированию обладает рядом несомненных достоинств. Он хорошо организован, строг, большинство его конструкций логичны и удобны. Развитые средства диагностики и редактирования кода делают процесс программирования приятным и эффективным.
Немаловажно, что С# является не учебным, а профессиональным языком, предназначенным для решения широкого спектра задач, и в первую очередь - в быстро развивающейся области создания распределенных приложений. Поэтому базовый курс программирования, построенный на основе языка С#, позволит студентам быстрее стать востребованными специалистами-профессионалами.
Целью исследования, проводимого в рамках настоящей курсовой работы, является разработка и реализация на языках высокого уровня алгоритмов решения задачи, представленной в задании курсовой работы.
Объектами исследования настоящей курсовой работы являются методы и технологии разработки программных продуктов.
Предметами исследования настоящей курсовой работы являются методы, алгоритмы и приёмы разработки программ обработки двумерных массивов. программирование массив текстовый файл
Информационной базой исследования является учебная литература по информатике и программированию, техническая документация по языку С# инструментальной среды MS Visual Studio 2010.
1. Теоретический анализ
1.1 Постановка задачи
Необходимо разработать консольную или графическую программу на языке C# или C++ в среде Visual Studio согласно варианту и описать её жизненный цикл. Основная задача программы для всех вариантов - работа с двумерными массивами данных (заполнение массива случайными значениями, поиск или обработка массива, сохранение массива в файл). В качестве данных для заполнения массива используйте числа от 0 до 10. Размер массива: 50 строк на 50 столбцов. Желательно обеспечить работу программы с массивами любого размера. Результаты работы программы выводить на экран и в отдельные файлы.
Требования: использование методов функционального или объектно-ориентированного программирования.
Вариант 13. Сортировать массив методом выбора.
1.2 Описание алгоритма
На первом шаге в массиве находится элемент с минимальным значением, затем он меняется местами с элементом, находящемся на нулевой позиции массива(если минимальный элемент и так находится на нулевой позиции, обмен, соответственно, не производится), и затем выбывает из процесса сортировки. В следующей итерации среди оставшихся чисел находится второй по минимальности элемент, и происходит обмен местами этого элемента с элементом на первой позиции массива и тоже выбывает. Затем ищется третий по минимальности элемент, меняется позициями с третьим элементом в массиве и выбывает из сортировки, и так далее. После всех итерации получится отсортированный от минимального к максимальному значению массив.
Пример программы сортировки выбором.
Программа:
int[] a = new int[10];
Random r = new Random();
for (int i = 0; i < 10; i++)
{
a[i] = r.Next(10);
}
int b;
for (int i = 0; i < 9; i++)
{
for (int j = i + 1; j < 10; j++)
{
if (a[j] > a[i])
{
b = a[i];
a[i] = a[j];
a[j] = b;
}
}
}
//вывод массива
for (int i = 0; i < 10; i++)
{
Console.WriteLine("a[{0}]={1}", i, a[i]);
}
Console.ReadKey();
2. Реализация основного класса программы
Основной класс программы обеспечивает её визуальное представление (на рисунке 2.1 показана основная форма с указанием компонентов, используемых далее в листингах), а также описывает все операции, выполняемые в ходе функционирования программы.
Рис. 2.1
При загрузке формы производится создание области отображения, установка доступности выполнения операций, а также настройка некоторых свойств, стандартных диалоговых окон:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace SortVyb
{
public partial class Form1 : Form
{
//объявляем переменные
int i, j, n, min;
int[,] mas;
//создаем правило заполнение датагридов (тип).
void Setsize(DataGridView dgw)
{
n = Convert.ToInt32(textBox1.Text); //считываем количество строк и столбцов из текстбокса
int columnCount = dgw.ColumnCount;
if (columnCount != 0)
dgw.Columns.Clear();
DataGridViewColumn col;
for (j = 0; j < n; j++)
{
col = new DataGridViewTextBoxColumn();
col.Width = 24;
dgw.Columns.Add(col);
}
for (i = 0; i < n; i++)
dgw.Rows.Add();
mas = new int[n, n];
}
public Form1()
{
InitializeComponent();
}
Рис.2.2 //кнопка создания ячеек в датагриде
2.1 Задаем размерность массива
private void button1_Click(object sender, EventArgs e)
{
try
{
Setsize(dataGridView2); //вызываем тип для 2 датагрида
Setsize(dataGridView1); //вызываем тип для 1 датагрида
}
catch
{
MessageBox.Show("Вы не ввели количество элементов");
}
}
Рис. 2.3 //кнопка рэндомного заполнения от 0 до 10
2.2 Произвольное заполнение массива числами от 0 до 10
private void button2_Click(object sender, EventArgs e)
{
{
Random r = new Random();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
dataGridView1.Rows[i].Cells[j].Value = r.Next(0, 10);
}
}
}
}
private void button6_Click(object sender, EventArgs e)
{
Application.Exit();
}
2.3 Сортировка массива методом выбора
Рис. 2.4 //обработка сортировки
private void button3_Click(object sender, EventArgs e)
{
try
{
//получаем значения из датагрид 1
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
mas[i, j] = Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
//собственно, сортируем =)
//находим меньшее значение и перекидываем его в начало столбца.
for (int j = 0; j < n; j++)
for (int i = 0; i < n; i++)
{
int imin = i;
for (int i1 = i + 1; i1 < n; i1++)
{
if (mas[i1, j] < mas[imin, j])
{
imin = i1;
}
}
min = mas[i, j];
mas[i, j] = mas[imin, j];
mas[imin, j] = min;
}
//выводим результат в датагрид 2 (сортировка по столбцам. по строкам: i и j местами поменять надо)
for (int i = 0; i < dataGridView1.ColumnCount; i++)
for (int j = 0; j < dataGridView1.RowCount; j++)
dataGridView2[j, i].Value = mas[i,j];
}
catch
{
MessageBox.Show("Вы не ввели данные для вычислений!");
}
}
//открываем файл
private void button4_Click(object sender, EventArgs e)
{
Stream myStream = null;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
StreamReader myReader = new StreamReader(myStream);
string[] str;
int num = 0;
try
{
string[] str1 = myReader.ReadToEnd().Split('\n');
num = str1.Count();
dataGridView1.RowCount = num;
for (int i = 0; i < num; i++)
{
str = str1[i].Split(' ');
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
dataGridView1.Rows[i].Cells[j].Value = str[j];
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
myReader.Close();
}
}
}
}
2.4 Сохраняем в текстовый файл результаты сортировки
Рис. 2.5 //сохраняем файл
private void button5_Click(object sender, EventArgs e)
{
Stream myStream;
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
StreamWriter myWritet = new StreamWriter(myStream);
try
{
for (int i = 0; i < dataGridView1.RowCount ; i++)
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
myWritet.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + " ");
}
myWritet.WriteLine();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
myWritet.Close();
}
myStream.Close();
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
2.5 Инструкция по использованию программы
В начальном состоянии (после запуска программы) необходимо ввести в поле значение размерности массива, в нашем случае это 50 .
Далее нажатием на кнопку «Автозаполнение 0-10» и произвольно заполняем все ячейки исходного массива числами от 0 до 10.
После автозаполнение необходимо нажать кнопку «Сортировка», в результатах сортировки отобразятся уже отсортированные числа от 0 до 10 методом выбора.
Далее нажатием на кнопку « Сохранить файл» выбираем или создаем новый текстовый файл для сохранения результатов нашей сортировки.
Также в данной программе предусмотрена возможность вывод массива из ранее сохраненных файлов ,путем нажатия на кнопку « Открыть файл» и выбором необходимого нам массива.
После выполнение всех необходимых нам операций закрываем программу нажатием кнопки «Выход»
Далее приведен пример сохраненной информации из текстого файла после сортировки массива.
Заключение
В данной курсовой работе удалось разработать программу с использованием компонентов среды визуального проектирования Visual C#.
Выполнение курсовой работы было разделено на два этапа:
- теоретический анализ поставленной задачи, включающий в себя постановку задачи, выделение основных классов, выделение основных действия и алгоритмов их реализации, определение математического аппарата, необходимого при решении задачи;
- программная реализация задачи средствами Visual C#, включающая в себя реализацию основных классов, реализацию основных действий, реализацию классов диалоговых форм, инструкцию по использовании программы.
Итогом курсовой работы можно считать закрепление знаний в области создания алгоритмов, навыков программирования на языке C# и создании приложений для операционных системы компании Microsoft, полученных в ходе курса «объектно-ориентированное программирование».
Список литературы
1. Курсовая работа по программированию на Visual C# - учебное издание - Кожемяченко В.И. - Новокузнецк - 2013г - 28 с.
2. Программирование в среде Visual C# часть 2: метод. указ. - /СибГИУ - сост. В.И. Кожемяченко, С.Ю. Красноперов - Новокузнецк - 2012г - 54 с.
Размещено на Allbest.ru
...Подобные документы
Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.
курсовая работа [1,0 M], добавлен 26.12.2013Создание программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С# средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Определение математического аппарата, применение его в задаче.
курсовая работа [500,4 K], добавлен 13.01.2015Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012Модификация и сравнения двух текстовых файлов. Программа, написанная на языке программирования Cи и работоспособна на IBM совместимых компьютерах. Псевдографический и графический интерфейсы. Анализ программы методом сортировки одномерного массива.
курсовая работа [116,2 K], добавлен 21.02.2008Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.
курсовая работа [821,5 K], добавлен 13.02.2012Анализ эффективности методов сортировки данных в языке Turbo Pascal. Разработка эскизного и технического проекта программы. Сортировка без и с использованием дополнительной памяти, за исключением небольшого стека (массива). Сортировка связанных списков.
курсовая работа [359,0 K], добавлен 23.05.2012Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.
курсовая работа [2,1 M], добавлен 21.04.2012Характеристика основных принципов объектно-ориентированного программирования. Этапы разработки программы на языке C++, реализующей игру "Морской бой". Выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.
курсовая работа [657,6 K], добавлен 17.06.2012Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.
курсовая работа [1,3 M], добавлен 02.12.2009Использование класса статических массивов структур и базы данных "ODER" при создании программы на языке С++. Основные формы выдачи результатов. Технические и программные средства. Тесты для проверки работоспособности алгоритма создания программы.
курсовая работа [1,1 M], добавлен 17.03.2015Особенности вывода на экран содержимого файла BAZA.txt. Анализ функций вывода информации о количестве каждой марки машин. Рассмотрение способов проектирования тестов программы методами черного ящика. Проблемы программирования на языке высокого уровня.
контрольная работа [1,6 M], добавлен 04.01.2015Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.
курсовая работа [639,0 K], добавлен 16.03.2012Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.
курсовая работа [616,4 K], добавлен 18.10.2010Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Разработка программы-интерпретатора, способной получать на входе текстовый файл (в формате ASCII или ANSI) с текстом программы и на выходе выводить на экран результаты вычислений, определяемых программистом. Выбор лексем, интерфейс и листинг программы.
курсовая работа [132,0 K], добавлен 12.03.2013Разработка обучающей программы на языке программирования Borland C++ Bilder 6.0 с использованием объектно-ориентированного подхода. Особенности алгоритмической и логической реализации выполняемых системой операций. Основные формы программы и ее функции.
курсовая работа [3,5 M], добавлен 12.03.2013Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011