Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Алтайский государственный технический университет им. И.И. Ползунова»
Факультет информационных технологий
Кафедра информатики, вычислительной техники и информационной безопасности
Расчетное задание защищено с оценкой ____________ Преподаватель ____________ Тушев А.Н.
(подпись)
“____”___________ 2015 г.
(дата)
Примеры решений задач на языке C# в среде Visual Studio
тема проекта (работы)
Расчетное задание.
по дисциплине «Современные технологии программирования»
наименование дисциплины
РЗ 09.03.01.22.000 О
обозначение документа
Студентка группы ИВТ – 22
Анна Дмитриевна Ускова
и.о., фамилия
Руководитель ![]()
проекта (работы) к.т.н., доцент Александр Николаевич Тушев
должность, ученое звание и.о., фамилия
БАРНАУЛ 2015
ЗАДАНИЕ НА РАСЧЕТНУЮ РАБОТУ
По дисциплине Современные технологии программирования ![]()
Выдано студентке группы ИВТ-22 Усковой Анне Дмитриевне
![]()
Тема: Примеры решений задач на языке C# в среде Visual Studio ![]()
![]()
| Этап разработки | Срок выполнения |
| 1. Получение заданий | 1 — 2 недели семестра |
| 2. Описание предметной области | 2 — 4 недели семестра |
| 3. Создание программ | 5 — 11 недели семестра |
| 4. Тестирование программ | 12 — 13 недели семестра |
Оформление и сдача работы на проверку 14 — 15 -я недели семестра
Срок представления работы к защите 16 — 17 -я недели семестра
Руководитель работы Тушев Александр Николаевич
фамилия, имя, отчество
Подпись руководителя Подпись студента
__________________ _________________
Дата выдачи задания « 10 » февраля 2015 г.
Содержание
Введение………………………………………………………………...…………4
1 Описание предметной области………………………………………………....5
2 Обработка статических и динамических изображений .…………………......6
3 Алгоритмы обработки матриц…………………………………………………7
4 Алгоритмы обработки слов или текста………………………………………..8
5 Комбинаторика и динамическое программирование…………………………9
6 Переборные алгоритмы…………………………… ………………………… 10
Заключение……………………………………………………………………….11
Список использованных источников…………………………………………...12
Приложение А……………………………………………………………………13
Введение
Цель курсовой работы – Решение задач на языке C# в среде Visual Studio.
Задачи курсовой работы:
Реализовать 5 задач по темам:
1. Обработка статических и динамических изображений.
2. Алгоритмы обработки матриц.
3. Алгоритмы обработки слов или текста.
4. Комбинаторика и динамическое программирование.
5. Переборные алгоритмы.
1 Описание предметной области
C# (произносится «си шарп») — бъектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов).
Для создания графических интерфейсов с помощью платформы .NET применяются разные технологии - Window Forms, WPF, приложения для магазина Windows Store (для ОС Windows 8/8.1/10). Однако наиболее простой и удобной платформой до сих пор остается Window Forms или формы. Для создания графического проекта нам потребуется среда разработки Visual Studio.
2 Обработка статических и динамических изображений
Задача. Движение окружности.
Окружность движется с постоянной скоростью от левого нижнего угла к правому верхнему. Когда она исчезнет, достигнув верхнего края, появляется новая окружность.
Тесты программы:
Внешний вид до нажатия кнопки «Start»

Рисунок 2.1
Задали радиус и нажали кнопку «Start»

Рисунок 2.2
3 Алгоритмы обработки матриц
Задача.

Тесты программы:

Рисунок 3.1

Рисунок 3.2
4 Алгоритмы обработки слов или текста.
Задача.


Дан текст из слов, разделенных одним пробелом. Найти слова, оканчивающиеся на ------онок или -енок и заменить их множественным числом по правилам или приведенным исключениям.
Тесты программы:

Рисунок 4.1

Рисунок 4.2
5 Комбинаторика и динамическое программирование.
Задача

Тесты программы:
Внешний вид до нажатия кнопки «подобрать» представлен на рисунке 5.1

Рисунок 5.1
Внешний вид после нажатия кнопки «подобрать» представлен на рисунке 5.2

Рисунок 5.2
Требуемая расстановка знаков невозможна:

Рисунок 5.3
6 Переборные алгоритмы.
Задача

Задача решается простым тройным циклом:
for(x=1;x<=30;x++)
for(y=1;y<=30;y++)
for(k=1;k<=30;k++)
Тесты программы:
Внешний вид до нажатия кнопки «найти решения» представлен на рисунке 6.1

Рисунок 6.1
Результат работы программы представлен на рисунке 6.2

Рисунок 6.2
Заключение
В результате проделанной работы удалось выполнить все поставленные задачи, получив при этом готовые приложения. Приложения имеют интуитивно понятный интерфейс, удобный в использовании с персонального компьютера. Приложения имеют русскоязычные интерфейсы.
Преимущества приложений – простой, понятный для пользователя интерфейс, высокое быстродействие, простота редактирования.
Недостатки – приложения не кроссплатформенные и не могут быть запущены на других операционных системах, кроме Windows.
Список использованных источников
1. Джейсон, Прайс; Майк, Гандэрлой Visual C# .NET. Полное руководство; КОРОНА принт, 2004. - 960 c.
2. Нейгел, К. C# 2005 для профессионалов; Вильямс, 2006. - 763 c.
3. Рихтер, Джефри CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#; Питер, 2007. - 656 c.
4. Гуриков С. Р. Введение в программирование на языке Visual C#; Форум, Инфра-М, 2013. - 448 c.
5. Мартин Р. С., Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#; Символ-Плюс, 2011. - 768 c.
Приложение А
Программный код, реализующий работу программ:
1. «Движениеокружности»
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 Lesson_Animation
{
public partial class Form1 : Form//разделяемый класс (производ:базов)
{
int flag = 0;
double x0, y0, x, y;
int rad = 50; // переменная для храрения радиуса рисуемых кругов
public Form1()
{
InitializeComponent();
x0 = this.panel1.Width;
y0 = this.panel1.Height;
this.panel1.CreateGraphics().Clear(Color.DodgerBlue);
x = 0;
y = y0 ;
}
//опишем функцию, которая будет рисовать круг по координатм его центра
void DrawCircle(double x_, double y_)
{
float xc, yc;
xc = (float)x_ - rad;//Определение операций приведения или преобразования типов
yc = (float) y_ - rad;
this.panel1.CreateGraphics().DrawEllipse(new System.Drawing.Pen(Color.Black), xc, yc, rad*2, rad*2);
}
private void button1_Click(object sender, EventArgs e)
{
flag = 1;
if (this.textBox1.Text.Equals(""))
{
rad = 50;
textBox1.Text = "50";
}
else rad = int.Parse(this.textBox1.Text);
timer1.Enabled = true; //включим в работу наш таймер
}
private void timer1_Tick(object sender, EventArgs e)
{
if ( flag == 1)
{
this.panel1.CreateGraphics().Clear(Color.DodgerBlue);
DrawCircle(x, y);
x = x + x0*0.005;
y = y - y0*0.005;
if (y < 0) y = y0;
if (x > x0) x = 0;
} }
private void button2_Click(object sender, EventArgs e)
{
flag = 0;
timer1.Enabled = false; // таймер
}
private void Form1_Load(object sender, EventArgs e)
{
} }}
2. Алгоритмы обработки матриц
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.Windows.Forms;
namespace razd1
{
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int[,] points = new int[17, 17];
Random r=new Random();
for (int i = 0; i < 17; i++)
{
for (int j = i+1; j < 17; j++)
points[i, j] = r.Next(0, 3);
}
for (int i = 0; i < 17; i++)
{
for (int j = i + 1; j < 17; j++)
points[j, i] = points[i, j];
}
for (int i = 0; i < 17; i++)
{
for (int j = 0; j < 17; j++)
richTextBox1.Text += " "+points[i, j];
richTextBox1.Text += "\n";
}
int chemp = 0;
int samoe_dno = 0;
int samoe_dno_points=0;
for (int i = 0; i < 17; i++)
samoe_dno_points += points[0, i];
for (int i = 0; i < 17; i++)
{
int points_cur = 0;
for (int j = 0; j < 17; j++)
{
points_cur += points[i, j];
}
if (points_cur < samoe_dno_points)
{
samoe_dno = i;
samoe_dno_points = points_cur;
}
if (points_cur > chemp)
{
chemp = points_cur;
}
label4.Text = chemp.ToString();
label5.Text = samoe_dno.ToString()+"(набрала "+samoe_dno_points.ToString()+" очков)";
}
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}}}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace razd1
{static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); }}}
3. Алгоритмы обработки слов или текста
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.Windows.Forms;
namespace razd2
{public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
}
public string[][] reg = new string[][]{
new string[]{"ребенок","дети"},
new string[]{"бесенок","бесенята"},
new string[]{"опенок","опята"},
new string[]{"звонок","звонки"},
new string[]{"позвонок","позвонки"},
new string[]{"подонок","подонки"},
new string[]{"колонок","колонки"},
new string[]{"жаворонок","жаворонки"},
new string[]{"бочонок","бочонки"}
};
private string gen(string word)
{
if (word.Contains("онок") || word.Contains("енок"))
{
for (int i = 0; i < reg.Length; i++)
{
if(word.Contains(reg[i][0]))
return reg[i][1]; }
string new_w = word.Remove(word.IndexOf("нок") - 1);
char c=new_w.ToCharArray()[new_w.Length-1];
char[] ship={'ч','ш','щ','ж',};
for(int i=0;i<ship.Length;i++)
if (c == ship[i])
{
new_w += "ата";
return new_w; }
new_w += "ята";
return new_w;
}
return word;
}
private void button1_Click(object sender, EventArgs e)
{
char[] sepors={' '};
string[] splits = richTextBox1.Text.Split(sepors);
richTextBox1.Text = "";
for (int i = 0; i < splits.Length; i++)
{
richTextBox1.Text += gen(splits[i]) + " "; } }
private void Form1_Load(object sender, EventArgs e)
{ } }}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace razd2
{static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
} }}
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.Windows.Forms;
namespace razdel4
{ public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int evalve(String s)
{
int result = int.Parse(s.Substring(0,1));
for (int i = 1; i < s.Length ; i += 2)
if (s.ToCharArray()[i ] == '+')
result += int.Parse(s.Substring(i+1, 1));
else result -= int.Parse(s.Substring(i+1, 1));
return result;
}
private void button1_Click(object sender, EventArgs e)
{
bool flag = false;
char[] array = new char[] { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
int m = int.Parse(textBox1.Text);
for (int i = 0; i < 256; i++)
{
String s = Convert.ToString(i, 2);
int l=s.Length;
for (int k = 0; k < 8 - l; k++)
s = "0" + s;
s=s.Replace('0', '-').Replace('1', '+');
String evalv = "";
for (int j = 0; j < 9; j++)
{
if (j == 8)
evalv += array[j];
else
{
evalv += array[j];
evalv += s.ToCharArray()[j]; }
}
// evalv = evalv.Substring(0, evalv.Length - 1);
if (evalve(evalv) == m)
{
label1.Text = evalv + " = ";
flag = true; } }
if (flag == false)
MessageBox.Show("не найдено !"); } }}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace razdel4
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
} }}
5.Переборные алгоритмы.
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.Windows.Forms;
namespace razdel5
{ public partial class Form1 : Form
{public Form1()
{InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for(int x=1;x<=30;x++)
for(int y=1;y<=30;y++)
for (int k = 1; k <= 30; k++)
{
if ((x * x) + (y * y) == (k * k))
{
richTextBox1.Text += "x=" + x + ";y=" + y + ";k=" + k + ";\n"; }} }
private void Form1_Load(object sender, EventArgs e)
{}}}
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace razdel5
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Похожие материалы
... нужно выбрать в меню Справка, а для ознакомления с информацией о приложении выбрать О программе Заключение В ходе выполнения курсовой работы были рассмотрены и проанализированы основные методы генерирования псевдослучайных чисел: линейный конгруэнтный метод, метод Фибоначчи с запаздываниями, алгоритм Блюма, Блюма и Шуба, Вихрь Мерсенна. Для реализации в курсовой работе были выбраны: метод, ...
... :CreatePen, объект пера можно инициализировать при его создании, передавая конструктору СPеn соответствующие параметры. Информация о конструкторах СРеn и ExtCreatePen - в следующих разделах справочной системы: Visual C++ Documentation, Reference, Microsoft Foundation Class Library and Templates, Microsoft Foundation Class Library, Class Library Reference, СРеп. Кисть можно инициализировать так, ...
... на другой, очевидно, основано на операциях сложения и умножения полиномов. Поэтому для выполнения этого задания есть смысл воспользоваться процедурами сложения и умножения, описанных в пунктах 1.5 и 1.6. Глава 2. Реализация синтаксического анализатора полиномов в среде Visual Studio 2005 на языке C# Программа "Синтаксический анализатор" была написана на языке C# в среде Visual Studio 2005 ...
... # будет тесно интегрирован с языком XML[1]. 2.2 Паскаль Паскаль [PASCAL - акроним с французского - Program Applique a la Selection et la Compilation Automatique de la Litterature] - Процедурно-ориентированный язык программирования высокого уровня, разработанный в конце 1960-х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского ...
... Заказчика ПО; 6. Правовые аспекты. 5.2 Технико-экономическое обоснование разработки ПО Данный программный продукт предназначен для помощи в работе лицам, ответственным за проведение маркетинговых исследований, начиная от создания анкеты и заканчивая обработкой полученных данных. Целью внедрения данного продукта является снижение издержек при проведении маркетинговых исследований– ...










0 комментариев