Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Перечень лабораторных работ на первый семестр



Н.М. Козьминых

 

Программирование на C#

Часть 2

 

 

Допущено редакционно-издательской

комиссией методического совета ГОУ

ВПО «ВятГУ» в качестве учебно-методического пособия для проведения лабораторных работ

для студентов направления подготовки

080500 «Бизнес информатика» и

230700 «Прикладная информатика»,

всех профилей подготовки

всех форм обучения

 

Киров 2013


 

Рекомендовано к изданию методическим советом

Факультета экономики и менеджмента ГОУ ВПО «ВятГУ»

 

Допущено редакционно-издательской комиссией методического совета ГОУ ВПО «ВятГУ» в качестве учебно-методического пособия для проведения лабораторных работ для студентов направления подготовки 080500 «Бизнес информатика» и 230700 «Прикладная информатика», всех профилей подготовки всех форм обучения

 

Рецензенты:

 

 

Козьминых, Н.М.

 

Программирование: учебно-методического пособия для проведения лабораторных работ для студентов направления подготовки 080500 «Бизнес-информатика», 230700 «Прикладная информатика» всех профилей подготовки, всех форм обучения / Н.М. Козьминых. – Киров: ПРИП ГОУ ВПО «ВятГУ», 2013.- 26 с.

 

В издании излагаются методические рекомендации к выполнению лабораторных работ по дисциплине «Программирование».

 

 

УДК 004(07)

К593

 

© ГОУ ВПО «ВятГУ», 2013

 

 


 

Оглавление

Перечень лабораторных работ на первый семестр. 4

Перечень рекомендуемой литературы.. 5

Лабораторная работа №7. Построение графика функции. 7

Теоретический материал работы.. 7

Результат работы.. 12

Лабораторная работа №8. Игра «Собери больше фигур». 14

Добавление новой формы к проекту. 14

Добавление класса к проекту. 15

Результат работы.. 15

Лабораторная работа №9. Работа с одномерными и двумерными массивами. 23

Лабораторная работа №10. Массивы и коллекции. 24

Лабораторная работа №11. Работа с коллекциями. 25

Лабораторная работа №12. Работа со строками. 27

 

 

Перечень лабораторных работ на первый семестр

Перечень лабораторных работ
№ п/п № Л.р. Наименование работы Количество часов № недели Дата Раздел из конспекта лекций
I семестр
Построение графика функции 10.02 - 16.02  
Игра «Собери больше фигур» 2 - 3 17.02 - 02.03  
Работа с одномерными и двумерными массивами 4 - 7 03.03 - 30.03  
Первая контрольная точка: аттестационная неделя
Массивы и коллекции 8 - 11 31.03 - 27.04  
Работа с коллекциями 12 - 15 28.04 - 25.05  
Вторая контрольная точка: аттестационная неделя
Работа со строками 16 - 17 26.05 - 08.06  
Защита работ    
Третья контрольная точка: экзамен
ИТОГО    

 

 


Перечень рекомендуемой литературы

а) Основная:

1. Акулов О.А. Информатика: базовый курс.- М.: Омега, 2004. – 552 с.

2. Бен-Ари М. Языки программирования. Практический сравнительный анализ: Пер.с англ. – М.: Мир, 2000. -366 с.

3. Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, 1989, - 360 с.

4. Дейтел Х.М., Дейтел П.Дж.. Как программировать на Си++. М.: ЗАО БИНОМ, 2000, 1024 с.

5. Завгородний В.И. Комплексная защита информации в компьютерных системах. – М.: ЛОГОС. - 2001. - 264 с.

6. Информатика. Базовый курс. Под ред. Симоновича С.В. – СПб.: Питер, 2005. 640 с.

7. Кнут Д. Искусство программирования для ЭВМ. т.3. Сортировка и поиск: Пер. с англ., - М.: Мир, 2001, 832 с.

8. Кормен Т., Лейзерон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: МЦНМО, 2000. 960 с.

9. Крячков А.В. и др. Программирование на С и С++: Практикум: Учеб. Пособие для студ. Вузов / Под ред. В.К.Томшина. – М.: Радио и связь. – 344с.

10. Лорин Г. Сортировка и системы сортировки. - Издательство «Наука». 1983. – 384с.

11. Могилев А.В. Информатика: учебное пособие/ Могилев А.В., Пак Н.И., Хеннер Е.К. – М.: Academa, 1999.- 816с.

12. Подбельский В.В., Фомин С.С.. Программирование на языке Си. М.: ФиС, 1998, 600 с.

13. Подбельский В.В. Язык Си++: Учеб.пособие. -М.: Финансы и статистика, 1999. -560 с.

14. Романец Ю.В. Защита информации в компьютерных системах и сетях. – М.: Радио и связь. - 2001. – 376 с.

15. Савельев А.Я. Основы информатики: учебник. – М.: Издательство МГТУ им. Н.Э.Баумана, 2001. -328 с.

16. Сван Т. Программирование для Windows в Borland C++ / пер. с англ. В Тимофеева. – М.: БИНОМ, 1996. – 480 с.

17. Топп У., Форд У.. Структуры данных в Си++. М.: ЗАО БИНОМ, 1999, 816 с.

 

б) Дополнительная

18. У.Сэвитч. С++ в примерах. – М.: ЭКОМ. – 734с.

 

в) Методическая

19. Нестерова Л.А. Информатика и программирование. Конспект лекций. Часть 1 и 2. - Киров. – 2003.

20. Нестерова Л.А. Информатика и программирование. Методические указания к лабораторным работам. Часть 1. - Киров. - 2003.

 

г) ГОСТы

21. ЕСКД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. ГОСТ 19.701-90 (ИСО 5807-85).

22. СТП ВятГУ 101-2004.

23. СТП ВятГУ 102-2004.


Лабораторная работа №7. Построение графика функции

 

Цель работы: создать приложение с графическим интерфейсом для построения графика функции.

План работы: в течение одного занятия студент должен изучить материал текущей лабораторной работы и продемонстрировать свои навыки преподавателю. В результате чего студент получает две оценки: за приложение и за изученный материал.

Задание: создать приложение построения графика функции

, заданного в полярных координатах.

Требование к работе:

1. Предусмотреть кнопки «Нарисовать» и «Выход».

Требование к отчету:

1. Титульный лист: номер и название лабораторной работы.

2. Текст задания.

3. Форма в процессе проектирования и выполнения.

4. Структура приложения.

5. Таблица свойств объектов.

6. Список идентификаторов.

7. Программные коды.

 

Теоретический материал работы

Построение графика

Существует четыре способа задания функции:

· в явной форме у = F(x);

· в неявной форме F(x, y) = 0;

· параметрическая х = f1( t), y = f2( t);

· в полярных координатах ρ = ρ (φ ), φ 1, φ 2). Полярные координаты ρ и φ связаны с декартовой системой коорди­нат следующими соотношениями х = ρ Cosφ, y = ρ Sinφ .

Если функция задана явно у = F(x), то для построения можно воспользоваться циклом, в котором осуществляется вычисление значения функции для значений х, меняющихся с заданным шагом, и нанесение этих точек на график. В этом случае графическая зависимость будет представлять собой последовательность точек.

 

Рисование фигур

Для рисования объектов в Windows Forms приложениях язык С++ содержит очень богатый набор методов. Пространство имен Drawing содержит множество объектов, которые облегчают программисту работу с графикой. Специально для.NET платформы разработчики Microsoft разработали GDI+ библиотеку, значительно повысив возможности GDI (Graphic Device Interface). GDI+ включает возможности рисования простейших объектов (линии, эллипсы...), рисование различных объектов 2D графики, отображение файлов различных графических форматов (bmp, jpeg, gif, wmf, ico, tiff, ...) и многое другое.

.Net позволяет рисовать линии, прямоугольники и другие фигуры в координатной системе. Кроме того, можно выбирать различные координатные системы, но по умолчанию начало координат находится в верхнем левом углу, где ось Х направлена вправо, а ось У вниз. Единицей измерения является пиксель (pixel).

 
 

 

 


Для рисования графических элементов используется класса Graphics. Для класса Graphics существуют следующие методы рисования:

DrawArc Рисует дугу, которая является частью эллипса, заданного парой координат, шириной и высотой.
DrawBezier Рисует сплайны Безье, которые заданы точками структуры Point.
DrawBeziers Рисует сплайны Безье, которые соединяют массив структур Point.
DrawClosedCurve Рисует замкнутые кардинальные сплайны, точки которых определены как массив структур Point.
DrawCurve Рисует кардинальные сплайны (это кривая, которая плавно проходит через набор точек), точки которых определены как массив структур Point.
DrawEllipse Формирует эллипс, определенный ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты.
DrawImage Рисует заданный объект Image в заданном месте, используя исходный размер.
DrawLine Проводит линию, соединяющую две точки, определенные парами координат.
DrawLines Формирует набор сегментов линии, которые соединяют массив структур Point.
DrawPie Рисует сектор, определенный эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
DrawPolygon Рисует многоугольник, определяемый массивом структур Point.
DrawRectangle Рисует прямоугольник, который определен парой координат, шириной и высотой.
DrawRectangles Рисует набор прямоугольников, определяемых структурой Rectangle.
DrawString Создает текстовую строку в заданном месте с указанными объектами Brush и Font.
FillClosedCurve Закрашивает замкнутые кардинальные сплайны, точки которых определены как массив структур Point.
FillEllipse Закрашивает эллипс, определенный ограничивающим прямоугольником, заданным с помощью пары координат, ширины и высоты.
FillPie Закрашивает сектор, определенный эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями
FillPolygon Закрашивает многоугольник, определяемый массивом структур Point.
FillRectangle Закрашивает прямоугольник, который определен парой координат, шириной и высотой.
FillRectangles Закрашивает набор прямоугольников, определяемых структурой Rectangle.

 

В качестве инструмента рисования используется перо (Pen), которое имеет следующие свойства: цвет (например, Color:: Blue – голубой цвет), толщина, стиль (System:: Drawing:: Drawing2D:: DashStyle).

Стиль:

DashStyle:: Dash Прерывистая линия
DashStyle:: DashDot Линия – точка
DashStyle:: DashDotDot Линия – точка – точка
DashStyle:: DashDot Линия точками
DashStyle:: Solid Сплошная линия

Замкнутые фигуры можно закрашивать: однородным цветом (SolidBrush), штриховкой (HatchBrush), текстурой (TextureBrush), линейным градиентом (LinearGradientBrush) и траекторный градиент (PathGradientBrush).

 

Примеры

Анимированная надпись

На рисунке 1.1 представлена форма в процессе проектирования, на рисунке 1.2 – форма в процессе выполнения.

 

Рисунок 1.1 - Форма в процессе проектирования

 

Рисунок 1.2 - Форма в процессе выполнения

 

В листинге 1.1 представлены программные коды файла Form1.cs.

 

Листинг 1.1 - Программные коды файла Form1.cs

public partial class Form1: Form {

public Form1() {

InitializeComponent();

}

Graphics graphText;

static bool x = false;

void doAnimate() {

String str = " Рисунок";

graphText = pctText.CreateGraphics();

graphText.Clear(this.BackColor);

if (x) {

graphText.DrawString(str,

new Font(" Arial", 30.0f, FontStyle.Bold),

new SolidBrush(btnForeColor.ForeColor), new PointF());

x = false;

}

else x = true;

}

private void timer_Tick(object sender, EventArgs e) { doAnimate(); }

private void btnForeColor_Click(object sender, EventArgs e) {

colorDialog.Color = btnForeColor.ForeColor;

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnForeColor.ForeColor = colorDialog.Color;

doAnimate();

}

}

private void btnRun_Click(object sender, EventArgs e) { timer.Start(); }

private void btnStop_Click(object sender, EventArgs e) { timer.Stop(); }

}

Результат работы

Далее представлен пример приложения.

 

На рисунке 1.3 представлена форма в процессе проектирования, на рисунке 1.4 – форма в процессе выполнения.

Рисунок 1.3 - Форма в процессе проектирования

 

 

Рисунок 1.4 - Форма в процессе выполнения

В листинге 1.2 представлены программные коды файла Form1.cs.

 

Листинг 1.2 - Программные коды файла Form1.cs

public partial class Form1: Form {

public Form1() { InitializeComponent(); }

 

static int a = 40;

// Функция вычисления значений координат

private void func(float f, int b, out float x, out float y) {

x = (float)((a * Math.Pow(Math.Cos(f), 2) - b * Math.Pow(Math.Sin(f), 2)) * Math.Cos(f));

y = (float)((a * Math.Pow(Math.Cos(f), 2) - b * Math.Pow(Math.Sin(f), 2)) * Math.Sin(f));

}

private void btnExit_Click(object sender, EventArgs e) {

Close();

}

private void scrb_Scroll(object sender, ScrollEventArgs e) {

lblb.Text=String.Concat(" b = ", (scrb.Value).ToString());

}

private void btnDraw_Click(object sender, EventArgs e) {

int b=scrb.Value;

float h = 0.05f, k_max = 0, tt, x1, y1, x2, y2;

// Определение масштаба

for(float f=0; f< =2*Math.PI; f=f+h) {

func(f, b, out x2, out y2);

if(f == 0) k_max=(x2> y2)? x2: y2;

else {

tt=(x2> y2)? x2: y2;

k_max=(tt> k_max)? tt: k_max;

}

}

int pict_size=(pctDraw.Width< pctDraw.Height)? pctDraw.Width: pctDraw.Height;

pict_size/=2;

// Подготовка к рисованию

Graphics g = pctDraw.CreateGraphics();

g.Clear(Color.White);

g.ScaleTransform(pict_size/(float)k_max, pict_size/(float)k_max);

g.TranslateTransform(pctDraw.Width/2, pctDraw.Height/2, System.Drawing.Drawing2D.MatrixOrder.Append);

Pen p = new Pen(Color.Black);

// Оси координат

g.DrawLine(p, -pctDraw.Width/2, 0, pctDraw.Width/2, 0);

g.DrawLine(p, 0, -pctDraw.Height/2, 0, pctDraw.Height/2);

// Рисование графика функции

p.Color=Color.Green;

func(0, b, out x1, out y1);

float xmax=0, ymax=0;

for(float f=h; f< =2*Math.PI+h; f=f+h) {

func(f, b, out x2, out y2);

g.DrawLine(p, x1, y1, x2, y2);

x1 = x2;

y1 = y2;

xmax=(x1> xmax)? x1: xmax;

ymax=(y1> ymax)? y1: ymax;

}

// Подпись осей координат

g.DrawString( (xmax).ToString(), new System.Drawing.Font(" Arial", 8), new SolidBrush(Color.Black), xmax, 0);

g.DrawString( (ymax).ToString(), new System.Drawing.Font(" Arial", 8), new SolidBrush(Color.Black), 0, -ymax);

}

}


Добавление класса к проекту

 

Для того, чтобы добавить класс к проекту необходимо:

1. в меню выбрать «Проект», затем «Добавить класс…»

2. в поле «Имя: » ввести имя класса (рисунок 3.2)

 

Рисунок 3.2 – Добавление класса в проект

Результат работы

Далее представлен пример.

На рисунке 3.3 представлена главная форма в процессе проектирования, на рисунке 3.4 – меню главной формы во время проектирования, на рисунке 3.5 - форма настроек во время проектирования, на рисунке 3.6 - приложение во время выполнения, на рисунке 3.7 – настройки во время выполнения.

Рисунок 3.3 – Главная форма во время проектирования

Рисунок 3.4 – Меню главной формы во время проектирования

 

Рисунок 3.5 – Форма настроек во время проектирования

 

Рисунок 3.6 – Приложение во время выполнения

Рисунок 3.7 – Настройки во время выполнения

 

В листинге 3.1 представлены программные коды файла DrawFigure.sc, в листинге 3.2 – FormSettings.sc, в листинге 3.3 - Form1.cs.

 

Листинг 3.1 - Программные коды файла DrawFigure.cs

class DrawFigure {

public static Pen penTriangle = new Pen(Color.Navy, 2), penEllipse = new Pen(Color.Red, 2);

public static SolidBrush brushTriangle = new SolidBrush(Color.Lime), brushEllipse = new SolidBrush(Color.Yellow);

 

public static void doDrawEmpty(Graphics graph, Color clr, int koef, int y, int x) {

Rectangle rect = new Rectangle(new Point(1 + x, 1 + y), new Size(koef * 10 - 1, koef * 10 - 1));

graph.FillRectangle(new SolidBrush(clr), rect);

}

 

public static void doDrawTriangle(Graphics graph, Pen pen, Brush brush, int koef, int y, int x) {

Point[] points =

{

new Point(koef*5 + x, koef*2 + y),

new Point(koef*8 + x, koef*8 + y),

new Point(koef*2 + x, koef*8 + y)

};

doDrawEmpty(graph, Color.White, koef, y, x);

graph.FillPolygon(brush, points);

graph.DrawPolygon(pen, points);

}

 

public static void doDrawEllipse(Graphics graph, Pen pen, Brush brush, int koef, int y, int x) {

Rectangle rect = new Rectangle(new Point(koef*2 + x, koef*3 + y), new Size(koef*6, koef*4));

doDrawEmpty(graph, Color.White, koef, y, x);

graph.FillEllipse(brush, rect);

graph.DrawEllipse(pen, rect);

}

}

Листинг 3.2 - Программные коды файла FormSettings.cs

public partial class FormSettings: Form {

public FormSettings() {

InitializeComponent();

}

 

Graphics graph;

 

private void btnOk_Click(object sender, EventArgs e) {

DialogResult = DialogResult.OK;

Close();

}

 

private void btnTrianglePen_Click(object sender, EventArgs e) {

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnTrianglePen.BackColor = colorDialog.Color;

DrawFigure.penTriangle.Color = colorDialog.Color;

FormSettings_Paint(this, null);

}

}

 

private void btnTriangleBrush_Click(object sender, EventArgs e) {

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnTriangleBrush.BackColor = colorDialog.Color;

DrawFigure.brushTriangle.Color = colorDialog.Color;

FormSettings_Paint(this, null);

}

}

 

private void btnEllipsePen_Click(object sender, EventArgs e) {

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnEllipsePen.BackColor = colorDialog.Color;

DrawFigure.penEllipse.Color = colorDialog.Color;

FormSettings_Paint(this, null);

}

}

 

private void btnEllipseBrush_Click(object sender, EventArgs e) {

if (colorDialog.ShowDialog() == DialogResult.OK) {

btnEllipseBrush.BackColor = colorDialog.Color;

DrawFigure.brushEllipse.Color = colorDialog.Color;

FormSettings_Paint(this, null);

}

}

 

private void FormSettings_Shown(object sender, EventArgs e) {

btnTrianglePen.BackColor = DrawFigure.penTriangle.Color;

btnTriangleBrush.BackColor = DrawFigure.brushTriangle.Color;

btnEllipsePen.BackColor = DrawFigure.penEllipse.Color;

btnEllipseBrush.BackColor = DrawFigure.brushEllipse.Color;

}

 

private void FormSettings_Load(object sender, EventArgs e) {

graph = this.CreateGraphics();

}

 

private void FormSettings_Paint(object sender, PaintEventArgs e) {

DrawFigure.doDrawTriangle(graph, DrawFigure.penTriangle, DrawFigure.brushTriangle, 50 / 10, 20, 20);

DrawFigure.doDrawEllipse(graph, DrawFigure.penEllipse, DrawFigure.brushEllipse, 50 / 10, 70, 20);

}

}

Листинг 3.3 - Программные коды файла Form1.cs

public partial class Form1: Form {

public Form1() {

InitializeComponent();

}

 

Graphics graphField, graphUser, graphPC;

static int countTriangle = 2, countEllipse = 3;

static int countTriangleUser = 0, countEllipseUser = 0;

static int countTrianglePC = 0, countEllipsePC = 0;

static int sizeField = 6, koef = 40;

int[, ] arrGame = new int[sizeField, sizeField];

static int valEmpty = 0, valTriangle = 1, valEllipse = 2;

static int valGuessEmpty = 10, valGuessTriangle = 11, valGuessEllipse = 12;

static int countItems = 0, countGuess = 0;

 

// 1

private void Form1_Load(object sender, EventArgs e) {

this.Width = btnShow.Left + btnShow.Width + 25;

 

graphField = pctField.CreateGraphics();

graphUser = pctUser.CreateGraphics();

graphPC = pctPC.CreateGraphics();

 

grid.Rows.Clear();

grid.RowCount = sizeField;

grid.ColumnCount = sizeField;

}

 

//6

private void pctField_Paint(object sender, PaintEventArgs e) {

 

graphField.Clear(Color.WhiteSmoke);

for (int i = 0; i < sizeField + 1; i++) {

graphField.DrawLine(new Pen(Color.Black), 0, i * koef, pctField.Width, i * koef);

graphField.DrawLine(new Pen(Color.Black), i * koef, pctField.Width, i * koef, 0);

}

 

for (int i = 0; i < sizeField; i++)

for (int j = 0; j < sizeField; j++) {

if (arrGame[i, j] == valGuessEmpty)

DrawFigure.doDrawEmpty(graphField, Color.White, koef / 10, i * koef, j * koef);

else if (arrGame[i, j] == valGuessTriangle)

DrawFigure.doDrawTriangle(graphField, DrawFigure.penTriangle, DrawFigure.brushTriangle, koef / 10, i * koef, j * koef);

else if (arrGame[i, j] == valGuessEllipse)

DrawFigure.doDrawEllipse(graphField, DrawFigure.penEllipse, DrawFigure.brushEllipse, koef / 10, i * koef, j * koef);

}

}

 

//2

private void btnStart_Click(object sender, EventArgs e) {

countItems = 0;

countGuess = 0;

countTriangleUser = 0; countEllipseUser = 0;

countTrianglePC = 0; countEllipsePC = 0;

 

for (int i = 0; i < sizeField; i++)

for (int j = 0; j < sizeField; j++)

arrGame[i, j] = 0;

 

Random random = new Random();

 

int iNum, jNum;

// треугольники

for (int numPlace = 0; numPlace < countTriangle; ) {

iNum = random.Next(0, sizeField);

jNum = random.Next(0, sizeField);

if (arrGame[iNum, jNum] == valEmpty) {

arrGame[iNum, jNum] = valTriangle;

numPlace++;

}

}

 

// эллипсы

for (int numPlace = 0; numPlace < countEllipse; ) {

iNum = random.Next(0, sizeField);

jNum = random.Next(0, sizeField);

if (arrGame[iNum, jNum] == valEmpty) {

arrGame[iNum, jNum] = valEllipse;

numPlace++;

}

}

doShowGrid();

doShowCount();

 

pctField_Paint(this, null);

pctUser_Paint(this, null);

pctPC_Paint(this, null);

 

}

 

//3

void doShowCount() {

lblTriangleUser.Text = countTriangleUser.ToString();

lblEllipseUser.Text = countEllipseUser.ToString();

lblTrianglePC.Text = countTrianglePC.ToString();

lblEllipsePC.Text = countEllipsePC.ToString();

}

 

//4

void doShowGrid() {

for (int i = 0; i < sizeField; i++) {

grid.Columns[i].Name = (i + 1).ToString();

grid.Columns[i].Width = 30;

for(int j = 0; j < sizeField; j++)

grid.Rows[i].Cells[j].Value = (arrGame[i, j]).ToString();

 

}

}

 

//5

private void pctField_MouseUp(object sender, MouseEventArgs e) {

if (isGameOver() || timer.Enabled == true)

return;

 

int i = e.Y / koef;

int j = e.X / koef;

 

if (arrGame[i, j] > = 10)

return;

 

if (arrGame[i, j] < 10) {

 

if (arrGame[i, j] == valTriangle)

countTriangleUser++;

else if (arrGame[i, j] == valEllipse)

countEllipseUser++;

 

arrGame[i, j] += 10;

countItems++;

}

if (arrGame[i, j] > valGuessEmpty) {

countGuess++;

}

 

doShowGrid();

doShowCount();

 

pctField_Paint(this, null);

 

timer.Start();

}

 

//8

private void timer_Tick(object sender, EventArgs e) {

if (isGameOver())

return;

 

Random random = new Random();

int iNum, jNum;

 

while (true) {

iNum = random.Next(0, sizeField);

jNum = random.Next(0, sizeField);

if (arrGame[iNum, jNum] < valGuessEmpty) {

arrGame[iNum, jNum] += 10;

countItems++;

 

if (arrGame[iNum, jNum] > valGuessEmpty) {

countGuess++;

 

if (arrGame[iNum, jNum] == valGuessTriangle)

countTrianglePC++;

else if (arrGame[iNum, jNum] == valGuessEllipse)

countEllipsePC++;

}

 

doShowGrid();

doShowCount();

 

pctField_Paint(this, null);

timer.Stop();

break;

}

}

isGameOver();

}

 

//7

private bool isGameOver() {

if (countGuess == countTriangle + countEllipse ||

countItems == sizeField * sizeField) {

timer.Stop();

 

if (countTriangleUser + countEllipseUser > countTrianglePC + countEllipsePC)

MessageBox.Show(" Вы выйграли со счетом " + (countTriangleUser + countEllipseUser).ToString() +

": " + (countTrianglePC + countEllipsePC).ToString(), " Итог игры" );

else if (countTriangleUser + countEllipseUser < countTrianglePC + countEllipsePC)

MessageBox.Show(" Вы проиграли со счетом " + (countTriangleUser + countEllipseUser).ToString() +

": " + (countTrianglePC + countEllipsePC).ToString(), " Итог игры" );

else

MessageBox.Show(" Ничья " + (countTriangleUser + countEllipseUser).ToString() +

": " + (countTrianglePC + countEllipsePC).ToString(), " Итог игры" );

 

return true;

}

else

return false;

}

 

private void btnShow_Click(object sender, EventArgs e) {

if(btnShow.Text.CompareTo(" -> " ) == 0){

this.Width = grid.Left + grid.Width + 25;

btnShow.Text = " < -";

}

else{

this.Width = btnShow.Left + btnShow.Width + 25;

btnShow.Text = " -> ";

}

}

 

private void mnuSettings_Click(object sender, EventArgs e) {

FormSettings frmSet = new FormSettings();

if (frmSet.ShowDialog() == DialogResult.OK)

pctField_Paint(this, null);

}

 

//5

private void pctUser_Paint(object sender, PaintEventArgs e) {

DrawFigure.doDrawTriangle(graphUser, DrawFigure.penTriangle, DrawFigure.brushTriangle, 30 / 10, 0, 0);

DrawFigure.doDrawEllipse(graphUser, DrawFigure.penEllipse, DrawFigure.brushEllipse, 30 / 10, 30, 0);

}

 

//6

private void pctPC_Paint(object sender, PaintEventArgs e) {

DrawFigure.doDrawTriangle(graphPC, DrawFigure.penTriangle, DrawFigure.brushTriangle, 30 / 10, 0, 0);

DrawFigure.doDrawEllipse(graphPC, DrawFigure.penEllipse, DrawFigure.brushEllipse, 30 / 10, 30, 0);

}

 

private void mnuExit_Click(object sender, EventArgs e) {

Close();

}

}


Лабораторная работа №9. Работа с одномерными и двумерными массивами

 

Цель работы: создать приложение с графическим интерфейсом для работы с одномерными и двумерными массивами.

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

Задание: Создать приложение для работы с массивами в соответствии с заданным вариантом.

Требование к приложению:

· Предусмотреть возможность работы приложения с двумерными и одномерными массивами;

· Предусмотреть возможность сохранения и открытия одномерных и двумерных массивов;

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

Требование к отчету:

1. Титульный лист: номер и название лабораторной работы.

2. Текст задания.

3. Форма в процессе проектирования и выполнения.

4. Структура приложения.

5. Таблица свойств объектов.

6. Список идентификаторов.

7. Блок-схема алгоритма.

8. Программные коды.

 

 


Н.М. Козьминых

 

Программирование на C#

Часть 2

 

 

Допущено редакционно-издательской

комиссией методического совета ГОУ

ВПО «ВятГУ» в качестве учебно-методического пособия для проведения лабораторных работ

для студентов направления подготовки

080500 «Бизнес информатика» и

230700 «Прикладная информатика»,

всех профилей подготовки

всех форм обучения

 

Киров 2013


 

Рекомендовано к изданию методическим советом

Факультета экономики и менеджмента ГОУ ВПО «ВятГУ»

 

Допущено редакционно-издательской комиссией методического совета ГОУ ВПО «ВятГУ» в качестве учебно-методического пособия для проведения лабораторных работ для студентов направления подготовки 080500 «Бизнес информатика» и 230700 «Прикладная информатика», всех профилей подготовки всех форм обучения

 

Рецензенты:

 

 

Козьминых, Н.М.

 

Программирование: учебно-методического пособия для проведения лабораторных работ для студентов направления подготовки 080500 «Бизнес-информатика», 230700 «Прикладная информатика» всех профилей подготовки, всех форм обучения / Н.М. Козьминых. – Киров: ПРИП ГОУ ВПО «ВятГУ», 2013.- 26 с.

 

В издании излагаются методические рекомендации к выполнению лабораторных работ по дисциплине «Программирование».

 

 

УДК 004(07)

К593

 

© ГОУ ВПО «ВятГУ», 2013

 

 


 

Оглавление

Перечень лабораторных работ на первый семестр. 4

Перечень рекомендуемой литературы.. 5

Лабораторная работа №7. Построение графика функции. 7

Теоретический материал работы.. 7

Результат работы.. 12

Лабораторная работа №8. Игра «Собери больше фигур». 14

Добавление новой формы к проекту. 14

Добавление класса к проекту. 15

Результат работы.. 15

Лабораторная работа №9. Работа с одномерными и двумерными массивами. 23

Лабораторная работа №10. Массивы и коллекции. 24

Лабораторная работа №11. Работа с коллекциями. 25

Лабораторная работа №12. Работа со строками. 27

 

 

Перечень лабораторных работ на первый семестр

Перечень лабораторных работ
№ п/п № Л.р. Наименование работы Количество часов № недели Дата Раздел из конспекта лекций
I семестр
Построение графика функции 10.02 - 16.02  
Игра «Собери больше фигур» 2 - 3 17.02 - 02.03  
Работа с одномерными и двумерными массивами 4 - 7 03.03 - 30.03  
Первая контрольная точка: аттестационная неделя
Массивы и коллекции 8 - 11 31.03 - 27.04  
Работа с коллекциями 12 - 15 28.04 - 25.05  
Вторая контрольная точка: аттестационная неделя
Работа со строками 16 - 17 26.05 - 08.06  
Защита работ    
Третья контрольная точка: экзамен
ИТОГО    

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 542; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.354 с.)
Главная | Случайная страница | Обратная связь