Программирование на языке высокого уровня

Слайд 2

Задача погони

Волк гонится за зайцем, который бежит по прямой с постоянной скоростью.

Задача погони Волк гонится за зайцем, который бежит по прямой с постоянной
Волк тоже бежит с постоянной скоростью и всегда по направлению к зайцу. В некоторый момент времени угол между направлениями их движения составляет 900, а расстояние между ними составляет L0. Через какое время волк настигнет зайца, при условии, что его скорость больше?

// исходные данные: скорости uz и uv,
// положение волка yv, шаг времени dt
double gamma = Math.PI / 2;
double xz = 0, xv = 0, t = 0, L;
for (;; t = t + dt)
{
// вывод координат
...
xz = xz + dt * uz;
gamma = Math.Atan2(yv, xz - xv);
xv = xv + dt * uv * Math.Cos(gamma);
yv = yv - dt * uv * Math.Sin(gamma);
if (xv > xz)
break;
}
// вывод окончательных результатов
...

// вывод координат
L = Math.Sqrt(yv*yv + (xz-xv)*(xz-xv));
textBox1.Text = textBox1.Text +
String.Format("Волк({0:0}; {1:0})\t Заяц({2:0}; 0)\t L={3:0.0}\t угол={4:0.0}\r\n",
xv, yv, xz, L, 180*gamma/Math.PI);

// вывод окончательных результатов
textBox1.Text = textBox1.Text +
String.Format("\r\nL = {0:0.###}, t = {1:0.###}", L, t);

Слайд 3

Искусственный нейрон

Одного искусственного нейрона достаточно, чтобы…
…реализовать логическую функцию (AND, OR, NOT)
…моделировать, например,

Искусственный нейрон Одного искусственного нейрона достаточно, чтобы… …реализовать логическую функцию (AND, OR,
поведение таракана, который в случае опасности прячется в тёмное укрытие
...обыграть человека в «Орёл/решку»!

public partial class Form1 : Form
{
int[] x, w;
int N = 8, win, loss, guess;
Random r = new Random();
private void button1_Click(object sender, EventArgs e)
{
int sum = 0;
for (int i = 0; i < N; i++)
sum += x[i] * w[i];
guess = (sum == 0)? r.Next(2): ((sum < 0)? 0: 1);
label2.Text = "Вы загадали " + guess + "?";
}
private void button_YES_Click(object sender, EventArgs e)
{
win++;
// обучение нейрона
...
}
private void button_NO_Click(object sender, EventArgs e)
{
loss++;
guess = (guess == 0) ? 1 : 0;
// обучение нейрона
...
}
}

// обучение нейрона
int sign = 2 * guess - 1;
for (int i = 0; i < N; i++)
w[i] += sign * x[i];
for (int i = 0; i > N-1; i++)
x[i] = x[i + 1];
x[N - 1] = sign;

Слайд 4

DataGridView

// ввод данных
double[,] A, B, C;
A = new double[K,

DataGridView // ввод данных double[,] A, B, C; A = new double[K,
L];
B = new double[M, N];
C = new double[K, N];
for (int i = 0; i < K; i++)
for (int j = 0; j < L; j++)
A[i, j] = Convert.ToDouble(dataGridView1[j, i].Value);
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
B[i, j] = Convert.ToDouble(dataGridView2[j, i].Value);
// расчёт
for (int i = 0; i < K; i++)
for (int j = 0; j < N; j++)
{
double sum = 0;
for (int z = 0; z < L; z++)
sum = sum + A[i, z] * B[z, j];
C[i,j] = sum;
}
// вывод данных
for (int i = 0; i < K; i++)
for (int j = 0; j < N; j++)
dataGridView3[j, i].Value = C[i, j];

dataGridView1.RowCount = K;
dataGridView1.ColumnCount = L;
dataGridView2.RowCount = M;
dataGridView2.ColumnCount = N;
dataGridView3.RowCount = K;
dataGridView3.ColumnCount = N;

Слайд 5

Баланс роста и веса

Для таблицы значений роста (см) и веса (кг) пациентов

Баланс роста и веса Для таблицы значений роста (см) и веса (кг)
вычислить функцию «вес – (рост – 100)» и выделить те значения этой функции, которые по модулю превышают 20.

public partial class Form1 : Form
{
int N = 0;
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
N = (int)numericUpDown1.Value;
dataGridView1.RowCount = N;
for (int i = 0; i < N; i++)
{
dataGridView1[0, i].Value = i+1;
dataGridView1[0, i].ReadOnly = true;
dataGridView1[0, i].Style.BackColor = Color.LightGray;
dataGridView1[3, i].ReadOnly = true;
dataGridView1[3, i].Style.BackColor = Color.LightGray;
}
}
private void button1_Click(object sender, EventArgs e)
{
...
}
}

private void button1_Click(object sender, EventArgs e)
{
// ввод данных
double[] rost, ves, F;
rost = new double[N];
ves = new double[N];
F = new double[N];
for (int i = 0; i < N; i++)
{
rost[i] = Convert.ToDouble(dataGridView1[1, i].Value);
ves[i] = Convert.ToDouble(dataGridView1[2, i].Value);
}
// расчёт
for (int i = 0; i < N; i++)
F[i] = ves[i] - (rost[i] - 100);
// вывод данных
for (int i = 0; i < N; i++)
{
dataGridView1[3, i].Value = F[i];
if (Math.Abs(F[i]) > 20)
dataGridView1[3, i].Style.ForeColor = Color.Red;
}
}

Имя файла: Программирование-на-языке-высокого-уровня.pptx
Количество просмотров: 134
Количество скачиваний: 0