Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Алтайский государственный технический университет им. И.И. Ползунова»
Факультет информационных технологий
Кафедра информатики, вычислительной техники и информационной безопасности
Расчетное задание защищено с оценкой ____________ Преподаватель ____________ Тушев А.Н.
(подпись)
“____”___________ 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 комментариев