Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 13 Структуры. Перетаскивание элемента на форме

Цель работы.

Изучить формирование программ с использованием структур. Научиться создавать формы с использованием перетаскивания элементов формы.

План занятия.

Изучить теоретические сведения формирования программы на С#.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Краткие теоретические сведения.

Структуры.

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

Пример

Надо создать полный набор арифметики для комплексного числа.

1. Свойства re, и im – действительная и мнимая части комплексного числа

2. Методы:

а) переопределенные операции + - *

б) метод получения модуля

в) метод получения строки ввода на печать

Шаблон структуры:

struct complex

{

public double re=0, im=0;

Конструктор полный

переопр. +

переопр. –

переопр. *

модуль

строка вывода

}

Конструктор полный

public complex (double re, double im)

{tris.re = re; this.im=im;} // Это переменные, объявленные свойствами в структуре.

// переопр. + (для – тоже самое, с заменой + на –)

public static complex operator + (complex a, complex b)

{

complex z;

z.re=a.re+b.re;

z.im=a.im+b.im;

return z;

}

переопр. *

public static complex operator * (complex a, complex b)

{

complex z;

z.re=a.re*b.re-a.im*b.im;

z.im= a.re*b.im+a.im*b.re;

return z;

}

Модуль

public double CMod (complex a)

{double Z;

Z=a.re*a.re-a.im*a.im;

return z;

}

Строка вывода

Для этого надо переопределить метод ToString( ) преобразования этого типа сomplex в string

public override string ToString( )

{

return(string.Format(“{0}+i{1}”,this.re,this.im);

}

Пример программы:

complex a; // конструктор по умолчанию

complex b = new complex(1,4);

a.re=5; a.im=6;

complex y; y = a+b;

console.Writeline(“y={0}”+y); // будет выведено y=6+i10

Порядок выполнения работы.

Создайте форму:

// ПЕРЕТАСКИВАНИЕ ЭЛЕМЕНТА

Воспроизведите код программы.

//FORM

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button1_Click(object sender, EventArgs e)

{

double x, y; string st;

x = Convert.ToDouble(textBox1.Text);

y = Math.Sin(x);

st = String.Format("{0,4:0.##}",y);

textBox2.Text = st;

}

private void Form1_Load_1(object sender, System.EventArgs e)

{

// Create the ToolTip and associate with the Form container.

ToolTip toolTip2 = new ToolTip();

// Set up the delays for the ToolTip.

toolTip2.AutoPopDelay = 5000;

toolTip2.InitialDelay = 100;

toolTip2.ReshowDelay = 50;

toolTip2.BackColor = Color.Azure;

// Force the ToolTip text to be displayed whether or not the form is active.

toolTip2.ShowAlways = true;

// Set up the ToolTip text for the Button and Checkbox.

toolTip2.SetToolTip(this.button1, " ");

toolTip2.ToolTipTitle = "4444444";

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

Point p = pictureBox1.Location; // позиция левого верхнего угла pictureBox1

Point p1 = this.Location; // позиция левого верхнего угла формы

// e.X и e.Y погиция курсора в pictureBox1

int XX, YY;

XX = e.X + p.X + p1.X; YY = e.Y + p.Y + p1.Y;

Bitmap bmp=new Bitmap(1,1);

using (Graphics g = Graphics.FromImage(bmp))

{ g.CopyFromScreen(XX, YY, 0, 0,new Size(1,1)); }

Color color = bmp.GetPixel(0,0);

string SS;

SS=Convert.ToString(color);

toolTip1.ToolTipTitle = SS;

toolTip1.SetToolTip(this.pictureBox1, " ");

}

bool MouseState = false;

Point PrevMousePos;

private void pictureBox2_MouseDown(object sender, MouseEventArgs e)

{

PrevMousePos = new Point(e.X, e.Y);

if (e.Button == MouseButtons.Left) { this.MouseState = true; }

}

private void pictureBox2_MouseUp_1(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left) { this.MouseState = false; }

}

private void pictureBox2_MouseMove_1(object sender, MouseEventArgs e)

{

if (this.MouseState)

{

int dx = e.X - PrevMousePos.X;

int dy = e.Y - PrevMousePos.Y;

pictureBox2.Location = new Point(pictureBox2.Location.X + dx, pictureBox2.Location.Y + dy);

}

}}}

Индивидуальное задание.

Всю арифметику для комплексных чисел. Вычислите выражение над комплексными числами a и b:

Все исходные данные и результат введите через форму.

Содержание отчета.

Представить отлаженные программы по индивидуальному заданию.

Литература.

Павловская Т.А. С#, Программирование на языке высокого уровня. – М., СПб: Питер, 2010, с.212-215

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]