Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с1# (Восстановлен).doc
Скачиваний:
247
Добавлен:
07.02.2015
Размер:
3.82 Mб
Скачать

2.10 Лабораторная работа №10

Тема: Построение графика и таблицы

значений функции y=f(x)

Цель занятия: Изучить структуру программ , основные операторы VB.NET для построения графиков , отличительные признаки языка VB и VB.NET. Получить навыки работ по построению графиков функций в виде Window проекта

1. построение словесных алгоритмов

2. Построение алгоритмов в виде блок-схем

3. Разработка программы в форме Window проекта

Условие задачи

Построить график функции y=sin(x) и таблицу значений Y,X в элементе Listbox

ВыходToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВыходToolStripMenuItem.Click

End

End Sub

Private Sub НазадToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles НазадToolStripMenuItem.Click

Me.Hide()

Form1.Show()

End Sub

Private Sub ПостроитьГрафикToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ПостроитьГрафикToolStripMenuItem.Click

Dim g As Graphics = CreateGraphics()

Dim dy, dx, a, b, intx, inty, dpl As Integer

Dim x, y As Double

Dim mashtab As Long

a = InputBox(«Введите левую границу», «Ввод границ»)

b = InputBox(«Введите правую границу», «Ввод границ»)

g.DrawString(a, Font.Clone, Brushes.Black, 22, 145)

g.DrawString(b, Font.Clone, Brushes.Black, 355, 145)

dx = 200

dy = 150

mashtab = 300 / (b - a)

dpl = -(b + a) * Int(mashtab / 2)

g.FillRectangle(Brushes.White, 50, 50, 300, 200)

g.DrawRectangle(Pens.Blue, 50, 50, 300, 200)

“оси координат

g.DrawLine(Pens.Black, dx + dpl, 50, dx + dpl, 250)

g.DrawLine(Pens.Black, 50, 150, 350, 150)

For x = a To b Step 1 / Int(300 / (b - a))

If x <> 0 Then

y = Math.Sin(x)

ListBox1.Items.Add(«x=» + Str(Format(x, «0.##»)) + « « + «y=» + Str(Format(y, «0.##»)))

End If

If (Int(-mashtab * y) + dy >= 50) And (Int(-mashtab * y) + dy <= 250) Then

“ setpixel(Int(mashtab * x) + dx + dpl, Int(-mashtab * y) + dy, clred)

intx = Int(mashtab * x) + dx + dpl

inty = Int(-mashtab * y) + dy

g.FillEllipse(Brushes.Red, intx, inty, 2, 2)

End If

If Int(-mashtab * y) + dy = 50 Then

g.DrawString(Str(Int(y)), Font.Clone, Brushes.Black, 190, 38)

End If

If Int(-mashtab * y) + dy = 250 Then

g.DrawString(Str(Int(y)), Font.Clone, Brushes.Black, 190, 255)

End If

Next

End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

End Class

C# Вычисление площади фигур методом Монте-Карло

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Monte_Karlo

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

private void menuItem4_Click(object sender, EventArgs e)

{

Close();

}

private void menuItem2_Click(object sender, EventArgs e)

{

Refresh();

Graphics g = this.CreateGraphics();

//рисуем ось x

g.DrawLine(new Pen(Color.Black,1),0,Height/2,Width, Height/2);

//рисуем ось у

g.DrawLine(new Pen(Color.Black,1), Width/2,0,Width/2, Height);

//выводим деления по оси х

for (int i = -250; i <= 250; i=i+50)

{

g.DrawLine(new Pen(Color.Black, 1), Width / 2 + i, Height / 2 - 3, Width / 2 + i, Height / 2 + 3);

//выводим значения по оси х

g.DrawString(Convert.ToString(i),new Font("Times New Roman",10), new SolidBrush(Color.Black),Width/2+i-10, Height/2+5);

}

//выводим деления по оси y

for (int i = -250; i <= 250; i = i + 50)

{

g.DrawLine(new Pen(Color.Black,1), Width/2-3, Height/2-i, Width/2+3, Height/2-i);

//выводим значения по оси y

g.DrawString(Convert.ToString(i), new Font("Times New Roman",10), new SolidBrush(Color.Black), Width/2-20, Height/2-i);

}

//рисуем окружности

g.DrawEllipse(new Pen(Color.Black), Width/2-200, Height/2-200,400, 400);

g.DrawEllipse(new Pen(Color.Black), Width/2+20, Height/2-80, 60, 60);

}

private void menuItem3_Click(object sender, EventArgs e)

{

//ввод число точек

int kolic = Convert.ToInt32(textBox1.Text);

int i,i0 = 0,i1 = 0;

int[] x1=new int[1000];

int[] y1 = new int[1000];

int[] x0=new int[1000];

int[] y0=new int[1000];

Random rnd=new Random();

//метод Монте-Карло

for (i = 1; i <= kolic; i++)

{

//выбор координат точек случайным образом

int t1 = rnd.Next(-220, 221);

int t2 = rnd.Next(-220, 221);

{

//условие попадания в фигуру

if ((t1 * t1 + t2 * t2 < 40000) & ((t1 - 50) * (t1 - 50) + (t2 + 50) * (t2 + 50) > 900))

{

//количество попавших точек

i1++;

//запоминаем их координаты

x1[i1] = t1;

y1[i1] = t2;

}

else

{

//количество непопавших точек

i0++;

//запоминаем их координаты

x0[i0] = t1;

y0[i0] = t2;

}

}

}

Graphics g = this.CreateGraphics();

g.DrawLine(new Pen(Color.Green, 1), Width / 2 - 220, Height / 2 - 220, Width / 2 + 220, Height / 2 - 220);

g.DrawLine(new Pen(Color.Green, 1), Width / 2 + 220, Height / 2 - 220, Width / 2 + 220, Height / 2 + 220);

g.DrawLine(new Pen(Color.Green, 1), Width / 2 + 220, Height / 2 + 220, Width / 2 - 220, Height / 2 + 220);

g.DrawLine(new Pen(Color.Green, 1), Width / 2 - 220, Height / 2 + 220, Width / 2 - 220, Height / 2 - 220);

//рисуем точки, не попавшие в фигуру

for (i = 1; i <= i0; i++)

{

g.DrawEllipse(new Pen(Color.Black), Width / 2 + x0[i] + 1, Height / 2 + y0[i] - 1, 2, 2);

}

//рисуем точки, попавшие в фигуру

for (i = 1; i <= i1; i++)

{

g.DrawEllipse(new Pen(Color.Red), Width / 2 + x1[i] + 1, Height / 2 + y1[i] - 1, 2, 2);

}

//количество попавших точек

int popav = i1;

//вывод количества попавших точек

textBox2.Text = Convert.ToString(popav);

//вычисляем площадь

float s = popav * 440 * 440 / kolic;

////вывод площади

textBox3.Text = Convert.ToString(s);

}

private void Form2_Load(object sender, EventArgs e)

{

}

}

}

100