Ответы к задачам
1.
Private Sub Квадрат_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Квадрат.Click
Результат.Text = Val(Число1.Text) * Val(Число1.Text)
End Sub
2.
Private Sub Сброс_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Сброс.Click
Число1.Text = "" : Число2.Text = "" : Результат.Text = ""
End Sub
3.
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Кл_вычитания.Click
Результат.Text = Val(Число1.Text) - Val(Число2.Text)
Кл_вычитания.Top = 30
Кл_вычитания.Left = 100
Кл_вычитания.Width = 300
Кл_вычитания.Text = "Я устала вычитать"
End Sub
Private Sub Сброс_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Сброс.Click
Число1.Text = "" : Число2.Text = "" : Результат.Text = ""
Кл_вычитания.Top = 80
Кл_вычитания.Left = 240
Кл_вычитания.Width = 32
Кл_вычитания.Text = "-"
End Sub
4.
Private Sub Каньон_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Каньон.Click
Плеер.FileName = "D:\WINNT\Media\canyon.mid"
Label3.Text = "Впечатляет, очень таинственно."
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = Плеер.CurrentPosition() 'Сколько прошло
TextBox3.Text = Плеер.Duration - Плеер.CurrentPosition() 'Сколько осталось
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Плеер.CurrentPosition = TextBox4.Text 'Задание текущей позиции
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = Плеер.Duration 'Определение продолжительности клипа
End Sub
Private Sub Медленнее_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Медленнее.Click
Плеер.Rate = 0.5
End Sub
Private Sub Тихо_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Тихо.Click
Плеер.Volume = -1000
End Sub
Private Sub Громко_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Громко.Click
Плеер.Volume = -10
End Sub
5.
Private Sub Кл_сложения_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Кл_сложения.Click
Результат.Text = Val(Число1.Text) + Val(Число2.Text)
Плеер.FileName = "D:\WINNT\Media\chimes.wav"
End Sub
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Кл_вычитания.Click
Результат.Text = Val(Число1.Text) - Val(Число2.Text)
Плеер.FileName = "D:\WINNT\Media\notify.wav"
End Sub
6.
0
7.
Будет напечатано число 211.
8.
- 1001
- -100
- 15
-10
9.
82
10.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Moscow, Vasyuki As Integer
Moscow = 9000000
Vasyuki = 1000
WriteLine(Vasyuki + Moscow)
End Sub
11.
'Задача вычисления средней скорости
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Скорость1, Скорость2 As Double 'Скорости автомобиля на первом и втором участках пути
Dim Время1, Время2 As Double 'Время прохождения первого и второго участков
Dim Путь1, Путь2 As Double 'Длина первого и второго участков
Dim Средняя_скорость As Double 'Средняя скорость автомобиля
'Задание исходных данных
Скорость1 = 80 : Время1 = 3
Скорость2 = 90 : Время2 = 2
'Вычисление результата
Путь1 = Скорость1 * Время1
Путь2 = Скорость2 * Время2
Средняя_скорость = (Путь1 + Путь2) / (Время1 + Время2)
'Отображение результата
Debug.WriteLine(Format(Средняя_скорость, "0.000"))
End Sub
12.
'Задача: В самом углу прямоугольного двора стоит прямоугольный дом.
'Подсчитать площадь дома, свободную площадь двора и длину забора.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Объявляем переменные величины
Dim Длина_двора, Ширина_двора, Площадь_двора As Integer
Dim Длина_дома, Ширина_дома, Площадь_дома As Integer
Dim Периметр_двора, Полпериметра_дома As Integer
Dim Свободная_площадь_двора, Длина_забора As Integer
'Ввод исходных данных
Длина_двора = InputBox("Введите длину двора")
Ширина_двора = InputBox("Введите ширину двора")
Длина_дома = InputBox("Введите длину дома")
Ширина_дома = InputBox("Введите ширину дома")
'Вычисление результатов
Площадь_двора = Длина_двора * Ширина_двора
Площадь_дома = Длина_дома * Ширина_дома
Периметр_двора = 2 * (Длина_двора + Ширина_двора)
Полпериметра_дома = Длина_дома + Ширина_дома
Свободная_площадь_двора = Площадь_двора - Площадь_дома
Длина_забора = Периметр_двора - Полпериметра_дома
'Отображение результатов
TextBox1.Text = "Площадь дома равна " & Площадь_дома
TextBox2.Text = "Свободная площадь двора = " & Свободная_площадь_двора
Label1.Text = "Длина забора = " & Длина_забора
End Sub
13.
'Задача вычисления длины окружности и площади круга
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim R As Double = 10 'Радиус окружности
Dim L, S As Double 'Длина окружности и Площадь круга
'Вычисление результатов
L = 2 * Math.PI * R
S = Math.PI * R ^ 2
'Отображение результатов с 5 знаками после запятой
MsgBox("Длина окружности = " & Format(L, "0.00000"))
MsgBox("Площадь круга = " & Format(S, "0.00000"))
End Sub
14.
ЦиклЦикл
ЦиклЦиклЦиклЦиклЦиклЦиклЦиклЦиклКонец цикла
15.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Объявляем переменные величины
Dim nazvanie1, nazvanie2 As String 'Названия планет
Dim r1, r2 As Double 'Радиусы орбит
Dim v1, v2 As Double 'Скорости планет по орбите
Dim t1, t2 As Double 'Продолжительность года первой и второй планет
'Задание исходных данных
nazvanie1 = InputBox("Введите название первой планеты")
nazvanie2 = InputBox("Введите название второй планеты")
r1 = InputBox(" Введите радиус орбиты первой планеты (в миллионах километров)")
r2 = InputBox("Введите радиус орбиты второй планеты (в миллионах километров)")
v1 = InputBox("Введите скорость первой планеты (в миллионах километров в сутки)")
v2 = InputBox("Введите скорость второй планеты (в миллионах километров в сутки)")
'Вычисление результатов
t1 = 2 * Math.PI * r1 / v1 'длина орбиты равна два пи * радиус,
t2 = 2 * Math.PI * r2 / v2 'а год = время 1 оборота = длина орбиты / скорость
'Отображение результатов в трех вариантах:
TextBox1.Text = "Продолжительность года на планете " & nazvanie1 & " - " & Format(t1, "0") _
& " суток, а на планете " & nazvanie2 & " - " + Format(t2, "0") & " суток"
Label1.Text = "Продолжительность года на планете " & nazvanie1 & " - " & Format(t1, "0") _
& " суток, а на планете " & nazvanie2 & " - " + Format(t2, "0") & " суток"
MsgBox("Продолжительность года на планете " & nazvanie1 & " - " & Format(t1, "0") _
& " суток, а на планете " & nazvanie2 & " - " + Format(t2, "0") & " суток")
End Sub
17.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Граф As Graphics = Me.CreateGraphics
'Стебель:
Граф.DrawArc(Pens.Black, -50, 100, 300, 600, 270, 90)
'Земля:
Граф.FillRectangle(Brushes.Aquamarine, 100, 400, 300, 30)
Граф.DrawRectangle(Pens.Black, 100, 400, 300, 30)
'Шесть лепестков:
Граф.FillPie(Brushes.Chocolate, 0, 0, 300, 200, 0, 40)
Граф.FillPie(Brushes.Blue, 0, 0, 300, 200, 50, 60)
Граф.FillPie(Brushes.Red, 0, 0, 300, 200, 120, 50)
Граф.FillPie(Brushes.Green, 0, 0, 300, 200, 180, 40)
Граф.FillPie(Brushes.Brown, 0, 0, 300, 200, 230, 60)
Граф.FillPie(Brushes.Violet, 0, 0, 300, 200, 300, 50)
'Серединка:
Граф.FillEllipse(Brushes.Yellow, 100, 67, 100, 67)
Граф.DrawEllipse(Pens.Black, 100, 67, 100, 67)
End Sub
18.
'Задача: В самом углу прямоугольного двора стоит прямоугольный дом.
'Подсчитать площадь дома, свободную площадь двора и длину забора. Начертить чертеж.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Объявляем переменные величины
Dim Граф As Graphics = Me.CreateGraphics
Dim Длина_двора, Ширина_двора, Площадь_двора As Integer
Dim Длина_дома, Ширина_дома, Площадь_дома As Integer
Dim Периметр_двора, Полпериметра_дома As Integer
Dim Свободная_площадь_двора, Длина_забора As Integer
'Ввод исходных данных
Длина_двора = InputBox("Введите длину двора")
Ширина_двора = InputBox("Введите ширину двора")
Длина_дома = InputBox("Введите длину дома")
Ширина_дома = InputBox("Введите ширину дома")
'Рисуем сначала двор, затем забор, а уж потом - дом
Граф.FillRectangle(Brushes.Aquamarine, 20, 80, Длина_двора, Ширина_двора) 'двор
Граф.DrawRectangle(Pens.Black, 20, 80, Длина_двора, Ширина_двора) 'забор
Граф.FillRectangle(Brushes.Brown, 20, 80, Длина_дома, Ширина_дома) 'дом
'Вычисление результатов
Площадь_двора = Длина_двора * Ширина_двора
Площадь_дома = Длина_дома * Ширина_дома
Периметр_двора = 2 * (Длина_двора + Ширина_двора)
Полпериметра_дома = Длина_дома + Ширина_дома
Свободная_площадь_двора = Площадь_двора - Площадь_дома
Длина_забора = Периметр_двора - Полпериметра_дома
'Отображение результатов
Граф.DrawString("Площадь дома равна " & Площадь_дома, Me.Font, Brushes.Black, 100, 10)
Граф.DrawString("Свободная площадь двора = " & Свободная_площадь_двора, _
Me.Font, Brushes.Black, 100, 30)
Граф.DrawString("Длина забора = " & Длина_забора, Me.Font, Brushes.Black, 100, 50)
End Sub
19.
Dim Граф As Graphics
'Радиус и высота цилиндра - тип Single, так как этого требуют графические методы:
Dim r, h As Single
'Длина окружности и площадь основания, объем цилиндра, площадь боковой поверхности и полная площадь:
Dim L, Sосн, V, Sбок, Sполн As Double
'Удобно порождать графический объект при загрузке формы:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Граф = Me.CreateGraphics
End Sub
'Вычисляем и печатаем результаты:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
r = TextBox1.Text
h = TextBox2.Text
L = 2 * Math.PI * r
Sосн = Math.PI * r ^ 2
V = Sосн * h
Граф.DrawString("Объем цилиндра = " & Format(V, "0.000"), Me.Font, Brushes.Black, 250, 20)
Sбок = L * h
Sполн = Sбок + 2 * Sосн
Граф.DrawString("Полная площадь поверхности цилиндра = " & Format(Sполн, "0.000"), _
Me.Font, Brushes.Black, 250, 40)
End Sub
'Рисуем цилиндр:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
r = TextBox1.Text
h = TextBox2.Text
Граф.DrawEllipse(Pens.Black, 200, 100, 2 * r, r) 'Верхнее основание
Граф.DrawEllipse(Pens.Black, 200, 100 + h, 2 * r, r) 'Нижнее основание
Граф.DrawLine(Pens.Black, 200, 100 + r / 2, 200, 100 + r / 2 + h) 'Левый отрезок
Граф.DrawLine(Pens.Black, 200 + 2 * r, 100 + r / 2, 200 + 2 * r, 100 + r / 2 + h) 'Правый отрезок
End Sub
'Стираем с формы:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Граф.Clear(Color.White)
End Sub
20.
8
29
6
21.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a, b As Double
a = InputBox("Введите первое число")
b = InputBox("Введите второе число")
If a > b Then Debug.WriteLine(a + b) Else Debug.WriteLine(a * b)
Debug.WriteLine("ЗАДАЧА РЕШЕНА")
End Sub
22.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a, b, c As Double
a = InputBox("Введите первый отрезок")
b = InputBox("Введите второй отрезок")
c = InputBox("Введите третий отрезок")
If a >= b + c Then Debug.WriteLine("Слишком велик") Else Debug.WriteLine("Достаточно мал")
End Sub
23.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim N As Integer, Число_голов As Integer, Число_глаз As Integer
N = InputBox("Введите возраст дракона")
If N < 100 Then Число_голов = 3 * N Else Число_голов = 300 + 2 * (N - 100)
Debug.WriteLine(Число_голов)
Число_глаз = 2 * Число_голов
Debug.WriteLine(Число_глаз)
End Sub
24.
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
If Button6.Top < 100 Then Button6.Top = Button6.Top + 20
End Sub
25.
Dim Граф As Graphics
Dim Ширина_окна, Высота_окна As Single
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Граф = Me.CreateGraphics
End Sub
'Рисуем окно:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Ширина_окна = 200
Высота_окна = 300
Граф.FillRectangle(Brushes.Black, 100, 50, Ширина_окна, Высота_окна)
Граф.DrawRectangle(Pens.White, 100, 50, Ширина_окна, Высота_окна)
Граф.DrawLine(Pens.White, 100 + Ширина_окна / 2, 50, 100 + Ширина_окна / 2, 50 + Высота_окна)
End Sub
'Зажигаем звезду:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Граф.DrawEllipse(Pens.White, 100 + Ширина_окна * Rnd(), 50 + Высота_окна * Rnd(), 3, 3)
End Sub
26.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Randomize()
'Без учета Button1.Width кнопка у правого края формы часто будет видна не полностью:
Button1.Left = (Me.Width - Button1.Width) * Rnd()
'Без учета Button1.Height кнопка у нижнего края формы часто будет видна не полностью:
Button1.Top = (Me.Height - Button1.Height - 30) * Rnd()
End Sub
27.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Догадка As Byte
Randomize()
Dim Загаданное_число As Byte = Fix(2 * Rnd())
Догадка = InputBox("Угадай - 0 или 1?")
If Догадка = Загаданное_число Then TextBox1.Text = "Угадал" Else TextBox1.Text = "Не угадал"
End Sub
28.
12653
29.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Имя As String
Имя = InputBox("Как вас зовут?")
If Имя = "Коля" Then
MsgBox("Привет!")
ElseIf Имя = "Вася" Then
Me.BackColor = Color.Green
MsgBox("Здорово!")
ElseIf Имя = "John" Then
MsgBox("Hi!")
Else
MsgBox("Здравствуйте!")
End If
End Sub
30.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim imya, Вопрос As String
Dim vozrast As Integer
imya = InputBox("Здравствуй, я компьютер, а тебя как зовут?")
vozrast = InputBox("Очень приятно, " & imya & ". Сколько тебе лет?")
MsgBox("Ого! Целых " & vozrast & " лет! Ты уже совсем взрослый!")
If vozrast > 17 Then
' Обратите внимание, что InputBox можно применять и без оператора присваивания:
InputBox("В каком институте ты учишься?")
MsgBox("Хороший институт")
Else
InputBox("В какой школе ты учишься?")
MsgBox("Неплохая школа")
End If
MsgBox("До следующей встречи!")
End Sub
31.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, b, c As Double
a = InputBox("Введите первый отрезок")
b = InputBox("Введите второй отрезок")
c = InputBox("Введите третий отрезок")
If a >= b + c Then : MsgBox("Нельзя")
ElseIf b >= a + c Then : MsgBox("Нельзя")
ElseIf c >= a + b Then : MsgBox("Нельзя")
Else : MsgBox("Можно")
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim a, b, c As Double
a = InputBox("Введите первый отрезок")
b = InputBox("Введите второй отрезок")
c = InputBox("Введите третий отрезок")
If a >= b + c Or b >= a + c Or c >= a + b Then MsgBox("Нельзя") Else MsgBox("Можно")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a, b, c As Double
a = InputBox("Введите первый отрезок")
b = InputBox("Введите второй отрезок")
c = InputBox("Введите третий отрезок")
If a < b + c And b < a + c And c < a + b Then MsgBox("Можно") Else MsgBox("Нельзя")
End Sub
32.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As String 'Приветствие человека
Dim b As String 'Ответ компьютера
a = InputBox("Компьютер Вас слушает")
If a = "Привет" Or a = "Здравствуйте" Or a = "Салют" Then
b = a
ElseIf a = "Добрый день" Or a = "Приветик" Then
b = "Салют"
ElseIf a = "Здравия желаю" Then
b = "Вольно"
Else
b = "Я вас не понимаю"
End If
MsgBox(b)
End Sub
33.
Замысловатой принцессе нравятся черноглазые, кроме тех, чей рост находится в пределах от 180 до 184.
34.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Граф As Graphics = Me.CreateGraphics
Граф.DrawLine(Pens.Black, 0, 100, 1000, 100) 'Земля
Граф.FillRectangle(Brushes.Black, 0, 90, 10, 10) 'Пушка
Граф.FillRectangle(Brushes.Blue, 280, 90, 20, 10) 'Первая цель
Граф.FillRectangle(Brushes.Blue, 650, 90, 50, 10) 'Вторая цель
Dim a As Single = InputBox("Введите дальность выстрела")
Граф.FillEllipse(Brushes.Red, 10 * a, 95, 10, 10) 'Попадание
If (a > 28 And a < 30) Or (a > 65 And a < 70) Then
MsgBox("ПОПАЛ")
ElseIf (a > 18 And a < 40) Or (a > 55 And a < 80) Then
MsgBox("БЛИЗКО")
ElseIf a > 80 Then
MsgBox("ПЕРЕЛЕТ")
ElseIf a > 30 And a < 65 Then
MsgBox("МЕЖДУ ЦЕЛЯМИ")
ElseIf a < 0 Then
MsgBox("НЕ БЕЙ ПО СВОИМ")
Else
MsgBox("НЕДОЛЕТ")
End If
End Sub
35.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Граф As Graphics = Me.CreateGraphics
'Три отрезка (a, b, c), они же в другом порядке (bol, drug1, drug2),
'площадь, высота, полупериметр треугольника (S, h, p), координаты трех вершин тр-ка:
Dim a, b, c, bol, drug1, drug2, S, h, p, x1, y1, x2, y2, x3, y3 As Single
a = InputBox("Введите первый отрезок")
b = InputBox("Введите второй отрезок")
c = InputBox("Введите третий отрезок")
'Находим самый большой отрезок bol и присваиваем значения drug1 и drug2:
If a >= b And a >= c Then
bol = a : drug1 = b : drug2 = c
ElseIf b >= a And b >= c Then
bol = b : drug1 = a : drug2 = c
ElseIf c >= a And c >= b Then
bol = c : drug1 = a : drug2 = b
End If
If bol < drug1 + drug2 Then
p = (a + b + c) / 2
S = Math.Sqrt(p * (p - a) * (p - b) * (p - c)) 'формула Герона
h = 2 * S / bol
'Пусть самая длинная сторона тр-ка будет горизонтальна, а третья вершина ниже ее.
'Выбираем произвольно первую вершину треугольника:
y1 = 100
x1 = 100
'Самая длинная сторона тянется от нее строго направо ко второй вершине:
y2 = y1
x2 = x1 + bol
'Третья вершина будет лежать ниже нее на высоту h:
y3 = y1 + h
'и правее первой вершины (применяем теорему Пифагора):
x3 = x1 + Math.Sqrt(drug1 ^ 2 - h ^ 2)
'Рисуем треугольник:
Граф.DrawLine(Pens.Black, x1, y1, x2, y2)
Граф.DrawLine(Pens.Black, x2, y2, x3, y3)
Граф.DrawLine(Pens.Black, x3, y3, x1, y1)
Else
MsgBox("Треугольник невозможен")
End If
End Sub
36.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Буква As String = InputBox("Введите строчную букву русского алфавита")
Select Case Буква
Case "а", "и", "о", "у", "ы", "э"
MsgBox("гласный")
Case "б", "з", "в", "г", "д", "ж", "й", "л", "м", "н", "р"
MsgBox("согласный звонкий")
Case "п", "с", "ф", "к", "т", "ш", "х", "ц", "ч", "щ"
MsgBox("согласный глухой")
Case "е", "ё", "ю", "я", "ъ", "ь"
MsgBox("какой-нибудь другой, не знаю")
Case Else
MsgBox(" Это не строчная буква русского алфавита")
End Select
End Sub
38.
Считаем зайцев
10 зайцев
10 зайцев
11 зайцев
13 зайцев
16 зайцев
20 зайцев
25 зайцев
. . . . .
39.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
m: PictureBox1.Left = PictureBox1.Left - 1 'Налево
GoTo m
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
m: PictureBox1.Top = PictureBox1.Top + 1 'Вниз
GoTo m
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
m: PictureBox1.Top = PictureBox1.Top - 1 'Вверх
GoTo m
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
m: PictureBox1.Left = PictureBox1.Left + 1 'Направо
PictureBox1.Top = PictureBox1.Top + 1 'и вниз - получается наискосок
GoTo m
End Sub
40 В.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Печатаем 1 2 3 4 . . . 100:
Dim a As Integer = 1
m1: Debug.Write(a & " ")
a = a + 1
If a <= 100 Then GoTo m1
'Печатаем 99 98 97 96 . . . 1:
a = 99
m2: Debug.Write(a & " ")
a = a - 1
If a >= 1 Then GoTo m2
End Sub
41.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim x, y, z As Double
x = 2700
m1: y = x / 4 + 20
z = 2 * y + 0.23
If y * z < 1 / x Then GoTo m2
Debug.WriteLine(Format(x, "0.000000") & " " & Format(y, "0.000000") & " " & Format(z, "0.000000"))
x = x / 3
GoTo m1
m2:
End Sub
Если вам непонятно, почему применена такая странная логика программы, то отложите понимание до того момента, когда закончите изучение циклов.
42.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As Double
x = 50 'Начальная точка движения
m: PictureBox1.Left = x 'Изображение встает на место, указанное гориз. координатой
x = x + 0.0001 'Компьютер увеличивает в уме горизонтальную координату
If x <= 300 Then GoTo m 'Движемся до точки 300
End Sub
43.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim x, y As Single
x = 50 : y = 100 'Начальная точка движения
Label1.Text = "Двигаюсь вправо"
Label1.Refresh()
PictureBox1.Top = y ' Изображение встает на место, указанное вертик. координатой
m: PictureBox1.Left = x 'Изображение встает на место, указанное гориз. координатой
x = x + 0.0001 'Компьютер увеличивает в уме горизонтальную координату
If x <= 500 Then GoTo m 'Движемся до точки 500 по горизонтали
Label1.Text = "Двигаюсь вниз"
Label1.Refresh()
m1: PictureBox1.Top = y 'Изображение встает на место, указанное вертик координатой
y = y + 0.0001 'Компьютер увеличивает в уме вертикальную координату
If y <= 400 Then GoTo m1 'Движемся до точки 400 по вертикали
End Sub
44.
Dim f, s As Integer
f = 0
Do
s = 1000 - f
Debug.Write(f & " " & s & " ")
f = f + 1
Loop While f <= 1000
2 вариант отличается лишь одним оператором:
Loop Until f > 1000
45.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim x, y As Single
x = 50 : y = 100 'Начальная точка движения
Label1.Text = "Двигаюсь вправо"
Label1.Refresh()
PictureBox1.Top = y 'Изображение встает на место, указанное вертик. координатой
Do While x <= 500 'Движемся до точки 500 по горизонтали
PictureBox1.Left = x 'Изображение встает на место, указанное гориз. координатой
x = x + 0.0001 'Компьютер увеличивает в уме горизонтальную координату
Loop
Label1.Text = "Двигаюсь вниз"
Label1.Refresh()
Do Until y > 400 'Движемся до точки 400 по вертикали
PictureBox1.Top = y 'Изображение встает на место, указанное вертик координатой
y = y + 0.0001 'Компьютер увеличивает в уме вертикальную координату
Loop
End Sub
46.
Dim Slovo As String
Dim Номер As Integer = 1
Do
Slovo = InputBox("Введите слово")
Debug.WriteLine(Номер & " " & Slovo & "!")
If Len(Slovo) > 10 Then Debug.WriteLine("Тяжелая жизнь.")
Номер = Номер + 1
Loop Until Slovo = "Хватит"
Debug.WriteLine("Хватит так хватит")
47.
'Вычислительная часть отдельно:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim v, t, h, s As Double
v = 20 : t = 0 : h = 100 : s = 0
Do
s = v * t
h = 100 - 9.81 * t ^ 2 / 2
Debug.WriteLine(Format(t, "0.0") & " " & Format(s, "0.000") & " " & Format(h, "0.000"))
t = t + 0.2
Loop Until h < 0
End Sub
'Вычислительная и графическая части вместе:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim v, t, h, s As Double
Dim x, y As Single 'Координаты камня на форме
Dim Граф As Graphics = Me.CreateGraphics
v = 20 : t = 0 : h = 100 : s = 0
Граф.DrawLine(Pens.Black, 10, 110, 200, 110) ' Земля расположена на 110 ниже края формы
'Верх башни расположен на 10 ниже края формы, низ - на 110:
Граф.FillRectangle(Brushes.Green, 10, 10, 20, 100)
MsgBox("Башня построена")
Do
s = v * t
h = 100 - 9.81 * t ^ 2 / 2
Debug.WriteLine(Format(t, "0.0") & " " & Format(s, "0.000") & " " & Format(h, "0.000"))
x = s + 20 ' Бросаем камень из точки, на 20 правее края формы
y = 110 - h
'В начальный момент времени h = 100 и получается,
‘что мы бросаем камень из точки, на 10 ниже края формы
'Когда камень прилетит на землю, h = 0 и получается,
‘что камень прилетает в точку, на 110 ниже края формы
Граф.DrawEllipse(Pens.Black, x, y, 5, 5) 'Рисуем очередной кружок
t = t + 0.2
Loop Until h < 0
End Sub
48.
Dim Slovo As String
Do
Slovo = InputBox("Введите слово")
If Slovo = "Хватит" Then Exit Do
Debug.WriteLine(Slovo & "!")
Loop
Debug.WriteLine("Хватит так хватит")
49.
Dim i As Integer
Debug.Write("Прямой счет ")
For i = -5 To 5
Debug.Write(i & " ")
Next
Debug.Write("Обратный счет ")
For i = 5 To -5 Step -1
Debug.Write(i & " ")
Next
Debug.Write("Конец счета")
50.
Dim i, Размер_круга As Single
For i = 1 To 20
Размер_круга = 80 * Rnd()
Граф.DrawEllipse(Pens.Black, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), _
Размер_круга, Размер_круга / 2)
Next i
51.
Dim i, Размер As Single
For i = 1 To 5
Размер = 200 * Rnd()
Граф.DrawEllipse(Pens.Red, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), Размер, Размер)
Граф.DrawEllipse(Pens.Yellow, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), Размер, Размер)
Граф.DrawEllipse(Pens.Blue, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), Размер, Размер)
Граф.DrawEllipse(Pens.Green, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), Размер, Размер)
Граф.DrawEllipse(Pens.White, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), Размер, Размер)
Next i
52.
Dim i As Integer
For i = 1 To 10000 'Большое число - чтобы долго рисовалось. Сам процесс приятен.
'Каждый луч прожектора - отрезок от центральной точки формы с координатами
'Me.Width / 2 по горизонтали и Me.Height / 2 по вертикали до случайной с координатами Me.Width * Rnd() .
'по горизонтали и Me.Height * Rnd() по вертикали. Для совместимости с типом параметров
'метода пришлось при помощи CSng преобразовывать два параметра к типу Single.
Граф.DrawLine(Pens.White, CSng(Me.Width / 2), CSng(Me.Height / 2), Me.Width * Rnd(), Me.Height * Rnd())
Граф.DrawLine(Pens.Yellow, CSng(Me.Width / 2), CSng(Me.Height / 2), Me.Width * Rnd(), Me.Height * Rnd())
Граф.DrawLine(Pens.Blue, CSng(Me.Width / 2), CSng(Me.Height / 2), Me.Width * Rnd(), Me.Height * Rnd())
Граф.DrawLine(Pens.Red, CSng(Me.Width / 2), CSng(Me.Height / 2), Me.Width * Rnd(), Me.Height * Rnd())
Граф.DrawLine(Pens.Green, CSng(Me.Width / 2), CSng(Me.Height / 2), Me.Width * Rnd(), Me.Height * Rnd())
Next i
53.
For i = 1 To 300
'Левая треть стога имеет горизонтальные координаты от 0 до 200,
'значит случайная точка внутри этой части - (200 * Rnd)
'Правая треть стога имеет горизонтальные координаты от 400 до 600,
'значит случайная точка внутри этой части - (400 + 200 * Rnd)
'Что касается вертикальных координат, то все они случайны от 0 до 600.
Граф.DrawLine(Pens.Yellow, 200 * Rnd(), 600 * Rnd(), 400 + 200 * Rnd(), 600 * Rnd())
Граф.DrawLine(Pens.Green, 200 * Rnd(), 600 * Rnd(), 400 + 200 * Rnd(), 600 * Rnd())
Граф.DrawLine(Pens.Wheat, 200 * Rnd(), 600 * Rnd(), 400 + 200 * Rnd(), 600 * Rnd())
Next
54А.
x = x + 5
54Б.
x = 0
Do Until x > Me.Width - 30
Граф.DrawEllipse(Pens.Black, x, 100, 20, 20)
x = x + 5
Loop
54В.
Граф.DrawEllipse(Pens.Black, x, 100, 40, 40)
55.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Граф As Graphics = Me.CreateGraphics
Dim x, y As Integer
'Первая очередь:
x = 0 : y = 0 'Встаем в левый верхний угол
Do Until x > Me.Width ' Пока не дойдем до правого края формы
Граф.FillEllipse(Brushes.White, x, y, 4, 4)
x = x + 15 : y = y + 10
Loop
'Вторая очередь:
x = 0 : y = Me.Height – 30 'Встаем в левый нижний угол
Do Until x > Me.Width 'Пока не дойдем до правого края формы
Граф.FillEllipse(Brushes.White, x, y, 4, 4)
x = x + 15 : y = y - 10
Loop
End Sub
56.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x, y, D As Integer
Dim Граф As Graphics = Me.CreateGraphics
x = 0 : y = 0 : D = 0
Do Until x > 400
Граф.DrawEllipse(Pens.Black, x, y, D, D)
x = x + 5
y = y + 2
D = D + 1
Loop
End Sub
57.
Отличается от «круглого трубопровода» единственным словом:
Граф.DrawRectangle(Pens.Black, x, y, D, D)
58А.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Граф As Graphics = Me.CreateGraphics
Dim y As Integer
y = 0 'Разлиновывать начинаем с верхнего края формы
Do Until y > Me.Height 'Разлиновываем до нижнего края формы
'Линию проводим горизонтально от левого до правого края формы:
Граф.DrawLine(Pens.Black, 0, y, Me.Width, y)
y = y + 20 'Расстояние между линиями = 20
Loop
End Sub
58Б.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Граф As Graphics = Me.CreateGraphics
Dim x, y As Integer
'Разлиновываем горизонтальными линиями:
y = 0 'Разлиновывать начинаем с верхнего края формы
Do Until y > Me.Height 'Разлиновываем до нижнего края формы
' Линию проводим горизонтально от левого до правого края формы:
Граф.DrawLine(Pens.Black, 0, y, Me.Width, y)
y = y + 10 'Расстояние между линиями = 10
Loop
'Разлиновываем вертикальными линиями:
x = 0 'Разлиновывать начинаем с левого края формы
Do Until x > Me.Width 'Разлиновываем до правого края формы
'Линию проводим вертикально от верхнего до нижнего края формы:
Граф.DrawLine(Pens.Black, x, 0, x, Me.Height)
x = x + 10 'Расстояние между линиями =10
Loop
End Sub
58В.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim Граф As Graphics = Me.CreateGraphics
Dim x, y As Integer
'Разлиновываем горизонтальными линиями:
y = 0 'Разлиновывать начинаем с верхнего края формы
Do Until y > Me.Height 'Разлиновываем до нижнего края формы
'Линию проводим горизонтально от левого до правого края формы:
Граф.DrawLine(Pens.Black, 0, y, Me.Width, y)
y = y + 20 'Расстояние между линиями = 20
Loop
'Разлиновываем косыми линиями:
x = 0 'Разлиновывать начинаем с левого края формы
Do Until x > Me.Width + 300 'Разлиновываем до правого края формы с запасом в 300 пикселов
' Линию проводим наискосок от верхнего до нижнего края формы:
Граф.DrawLine(Pens.Black, x, 0, x - 200, Me.Height)
x = x + 10 'Расстояние между линиями =10
Loop
End Sub
59.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Граф As Graphics = Me.CreateGraphics
Dim x, Высота_столбца, i, Число_городов, Число_жителей As Integer
Dim Название As String
Число_городов = InputBox("Введите число городов на диаграмме")
x = 20 'Отступ столбца от левого края формы
For i = 1 To Число_городов
Название = InputBox("Введите название города")
Число_жителей = InputBox("Введите число жителей в тысячах")
Высота_столбца = Число_жителей / 100
'Масштаб 100 нужен для того, чтобы столбцы умещались по высоте на форме
'Рисуем столбец (50 - его отступ от верхнего края формы, 60 - ширина):
Граф.FillRectangle(Brushes.Black, x, 50, 60, Высота_столбца)
'Пишем над столбцом название города:
Граф.DrawString(Название, Me.Font, Brushes.Black, x, 30)
'Пишем под столбцом число жителей:
Граф.DrawString(Число_жителей * 1000, Me.Font, Brushes.Black, x, Высота_столбца + 60)
x = x + 70 'Шаг от столбца к столбцу
Next
End Sub
60А.
Компьютер спросит размеры только одного зала и три раза напечатает его площадь и объем:
Площадь пола = 300 Объем зала = 1200
Площадь пола = 300 Объем зала = 1200
Площадь пола = 300 Объем зала = 1200
60Б.
Компьютер напечатает результаты только для последнего зала:
Площадь пола = 50 Объем зала = 150
61.
А. Компьютер напечатает результат, на 10 превышающий правильный
Б. Компьютер напечатает результат, в 2 раза превышающий правильный
В. Компьютер напечатал бы 200 нарастающих значений счетчика
Г. Компьютер напечатает 1, если последнее число положительное, и 0 – если неположительное
Д. Компьютер запросит только одно число и напечатает 200, если оно положительное, и 0 – если неположительное
62.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim N, a, i, c_полож, c_отриц, c_больше_10 As Integer
c_полож = 0 'Обнуляем счетчик положительных чисел
c_отриц = 0 'Обнуляем счетчик отрицательных чисел
c_больше_10 = 0 'Обнуляем счетчик чисел, превышающих 10
N = InputBox("Сколько всего чисел?")
For i = 1 To N
a = InputBox("Введите очередное число")
If a > 0 Then c_полож = c_полож + 1
If a < 0 Then c_отриц = c_отриц + 1
If a > 10 Then c_больше_10 = c_больше_10 + 1
Next i
Debug.WriteLine("Из них положительных - " & c_полож & ", отрицательных - " & c_отриц _
& ", чисел, превышающих десятку - " & c_больше_10)
End Sub
Здесь операторы Select Case и многострочный If плохо подошли бы, так как случаи невзаимоисключающие.
63.
Dim a, b, c As Integer
c = 0 'Обнуляем счетчик пар
Do
a = InputBox("Введите первое число пары")
b = InputBox("Введите второе число пары")
If a = 0 And b = 0 Then Exit Do
If a + b = 12 Then c = c + 1
Loop
Debug.WriteLine(c)
64.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, Счетчик_лев, Счетчик_верх, Счетчик_низ As Integer
Dim x, y, Ширина_формы, Высота_формы As Single
Ширина_формы = Me.Width
Высота_формы = Me.Height
' Рисуем для наглядности вертикальную линию, делящую форму пополам:
Граф.DrawLine(Pens.White, Ширина_формы / 2, 0, Ширина_формы / 2, Высота_формы)
'Рисуем для наглядности квадрат 100 на 100 в левом верхнем углу:
Граф.DrawRectangle(Pens.White, 0, 0, 100, 100)
'Рисуем квадрат 100 на 100 в левом нижнем углу (28 - учет высоты заголовка формы):
Граф.DrawRectangle(Pens.White, 0, Высота_формы - 100 - 28, 100, 100)
Счетчик_лев = 0 : Счетчик_верх = 0 : Счетчик_низ = 0
Randomize()
For i = 1 To 100
x = Me.Width * Rnd()
y = Me.Height * Rnd() - 28
Граф.FillEllipse(Brushes.White, x, y, 3, 3) 'Рисуем звезду
If x < Ширина_формы / 2 Then Счетчик_лев = Счетчик_лев + 1
If x < 100 And y < 100 Then Счетчик_верх = Счетчик_верх + 1
If x < 100 And y > Высота_формы - 128 Then Счетчик_низ = Счетчик_низ + 1
Next
'Печатаем результаты:
Debug.WriteLine(Счетчик_лев)
Debug.WriteLine(Счетчик_верх)
Debug.WriteLine(Счетчик_низ)
'Определяем, где звезд больше:
If Счетчик_верх > Счетчик_низ Then
Debug.WriteLine("Сверху звезд больше")
ElseIf Счетчик_верх < Счетчик_низ Then
Debug.WriteLine("Снизу звезд больше")
Else
Debug.WriteLine("Одинаково")
End If
End Sub
65.
А. 18
Б. 10
В. 5 и 8
Г. 3
Д. 10
Е. 3
Ж. 5
66.
Dim Dlina, Shirina, S As Double
Dim i As Integer
S = 0 'Обнуляем сумматор площади пола
For i = 1 To 40
Dlina = InputBox("Введите длину")
Shirina = InputBox("Введите ширину")
S = S + Dlina * Shirina 'Наращиваем сумматор площади пола
Next
Debug.WriteLine("Общая площадь пола= " & S)
67.
Dim i, N, Балл, s As Integer
Dim Средний_балл As Double
N = InputBox("Сколько учеников в классе?")
s = 0 'Обнуляем сумматор баллов
For i = 1 To N
Балл = InputBox("Введите оценку по физике")
s = s + Балл 'Наращиваем сумматор баллов
Next i
Средний_балл = s / N
MsgBox("Средний балл по физике = " & Format(Средний_балл, "0.000"))
68.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim i, N, Число, proizv As Integer
N = InputBox("Сколько сомножителей?")
proizv = 1 'Cумматор обнуляем, а накопитель произведения приравниваем 1. Почему?
For i = 1 To N
Число = InputBox("Введите очередной сомножитель")
proizv = proizv * Число 'Наращиваем произведение
Next i
MsgBox("Произведение равно " & proizv)
End Sub
69А.
For k = 3 To 8
For l = 0 To 7
Debug.WriteLine(k & l) 'Печатаем очередное сочетание
Next l
Next k
69Б.
i = 0 'Обнуляем счетчик
For k = 1 To 3
For l = 1 To 3
For m = 1 To 3
For n = 1 To 3
Debug.WriteLine(k & l & m & n) 'Печатаем очередное сочетание
i = i + 1
Next n
Next m
Next l
Next k
Debug.WriteLine(i) 'Печатаем количество сочетаний
69В.
i = 0 'Обнуляем счетчик
For k = 1 To 3
For l = 1 To 3
For m = 1 To 3
For n = 1 To 3
If k <= l And l <= m And m <= n Then
i = i + 1
Debug.WriteLine(k & l & m & n) 'Печатаем очередное сочетание
End If
Next n
Next m
Next l
Next k
Debug.WriteLine(i) 'Печатаем количество сочетаний
70.
Размер = 30 'Размер окружности
Шаг = 16 'Шаг между окружностями
y = 10
Do Until y > 400
x = 20
Do Until x > 500
Граф.DrawEllipse(Pens.Black, x, y, Размер, Размер)
x = x + Шаг
Loop
y = y + Шаг
Loop
70А.
Вместо строки
Граф.DrawEllipse(Pens.Black, x, y, Размер, Размер)
пишем строку
If Not (x > 400 And y < 100) Then Граф.DrawEllipse(Pens.Black, x, y, Размер, Размер)
которую можно вольно перевести так:
ЕСЛИ НЕПРАВДА, что (это верхний правый угол), ТО рисуй кружок
70Б.
Вместо строки
If Not (x > 400 And y < 100) Then Граф.DrawEllipse(Pens.Black, x, y, Размер, Размер)
пишем строку
If Not (x > 400 And y < 100) And Not (x > 200 And x < 300 And y > 150 And y < 250) Then _
Граф.DrawEllipse(Pens.Black, x, y, Размер, Размер)
которую можно вольно перевести так:
ЕСЛИ НЕПРАВДА, что (это верхний правый угол) И НЕПРАВДА, что (это квадрат в центре), ТО рисуй кружок
71.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim i, j, x, y, Размер, Зазор As Integer
Размер = 40 'Размер клетки
Зазор = 5 'Зазор между клетками
y = 20 'Отступ от верхнего края формы
For i = 1 To 8 'Пробегаем 8 рядов по вертикали сверху вниз, i - номер ряда
x = 20 'Отступ от левого края формы
For j = 1 To 8 'Пробегаем 8 клеток по горизонтали слева направо, j - номер клетки в ряду
'ЕСЛИ сумма номеров столбца и ряда четная, то заливка квадрата желтая, ИНАЧЕ красная:
If (i + j) Mod 2 = 0 Then
Граф.FillRectangle(Brushes.Yellow, x, y, Размер, Размер)
Else
Граф.FillRectangle(Brushes.Red, x, y, Размер, Размер)
End If
Граф.DrawRectangle(Pens.Black, x, y, Размер, Размер) 'Черное обрамление квадрата
x = x + Размер + Зазор
Next
y = y + Размер + Зазор
Next
End Sub
72.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim a, b, proizv, x, y As Integer
Граф.DrawString("Таблица умножения", Me.Font, Brushes.Black, 300, 10)
y = 30
For a = 1 To 10
x = 10
For b = 1 To 10
proizv = a * b
Граф.DrawRectangle(Pens.Black, x, y, 60, 15)
Граф.DrawString(a & "*" & b & "=" & proizv, Me.Font, Brushes.Black, x, y)
x = x + 70
Next
y = y + 20
Next
End Sub
73А.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim max, chislo, i As Integer
For i = 1 To 10
chislo = InputBox("Введите число")
If i = 1 Then
max = chislo
ElseIf chislo > max Then
max = chislo
End If
Next i
Debug.WriteLine(max)
End Sub
73Б.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim max, chislo, i As Integer
max = -100000
For i = 1 To 10
chislo = InputBox("Введите число")
If chislo > max Then max = chislo
Next i
Debug.WriteLine(max)
End Sub
74.
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim min, chislo, i, N, Номер_мин_числа As Integer
N = InputBox("Сколько чисел?")
min = InputBox("Введите число")
Номер_мин_числа = 1
For i = 2 To N
chislo = InputBox("Введите число")
If chislo < min Then
min = chislo
Номер_мин_числа = i
End If
Next i
Debug.WriteLine(min)
Debug.WriteLine(Номер_мин_числа)
End Sub
75.
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim i, N As Integer
Dim Результат, Min, Max As Double
N = InputBox("Сколько бегунов?")
Min = 5000 'Заведомо невозможный сверхмедленный бег
Max = 0 'Заведомо невозможный сверхбыстрый бег
For i = 1 To N
Результат = InputBox("Введите результат в секундах")
If Результат < Min Then Min = Результат
If Результат > Max Then Max = Результат
Next i
If Max - Min > 0.4 Then MsgBox("Правда") Else MsgBox("Неправда")
End Sub
76.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, x, y, Самый_правый_х, Самый_правый_у As Integer
Самый_правый_х = -100000 'Заведомо "невозможно левая" координата
For i = 1 To 4
x = 400 * Rnd()
y = 300 * Rnd()
Граф.FillEllipse(Brushes.White, x, y, 3, 3)
If x > Самый_правый_х Then
Самый_правый_х = x
Самый_правый_у = y
End If
Next i
Debug.WriteLine(Самый_правый_х & " " & Самый_правый_у)
End Sub
77.
Я, король Франции, спрашиваю вас - кто вы такие? Вот ты - кто такой?
Я - Атос
А ты, толстяк, кто такой?
А я Портос! Я правильно говорю, Арамис?
Это так же верно, как то, что я - Арамис!
Он не врет, ваше величество! Я Портос, а он Арамис.
А ты что отмалчиваешься, усатый?
А я все думаю, ваше величество - куда девались подвески королевы?
Анна! Иди-ка сюда!!!
78.
Private Sub Крестик(ByVal x As Single, ByVal y As Single, ByVal Размер As Single)
'Крестик - это 2 пересекающихся отрезка
Граф.DrawLine(Pens.Black, x + Размер / 2, y, x + Размер / 2, y + Размер)
Граф.DrawLine(Pens.Black, x, y + Размер / 2, x + Размер, y + Размер / 2)
End Sub
Private Sub Треугольник(ByVal x As Single, ByVal y As Single, ByVal Размер As Single)
'Треугольник - это 3 отрезка с общими концами
'x и y - координаты левого нижнего угла треугольника
Граф.DrawLine(Pens.Black, x, y, x + Размер, y)
Граф.DrawLine(Pens.Black, x, y, x + Размер / 2, y - Размер)
Граф.DrawLine(Pens.Black, x + Размер, y, x + Размер / 2, y - Размер)
End Sub
80.
Function Длина(ByVal Slovo1 As String, ByVal Slovo2 As String) As Integer
If Len(Slovo1) < Len(Slovo2) Then Return Len(Slovo1) Else Return Len(Slovo2)
End Function
81.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Круги на воде:
Dim П As Rectangle
Dim i As Integer
П.X = 100 : П.Y = 100 : П.Width = 10 : П.Height = 10
For i = 1 To 10
Гр.DrawEllipse(Pens.Black, П)
П.Inflate(10, 10)
Next
End Sub
82.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Компакт-диск:
Dim П As Rectangle
П.X = 400 : П.Y = 300 : П.Width = 100 : П.Height = 100
Do Until П.Width > 500
Гр.DrawEllipse(Pens.Gold, П)
П.Inflate(3, 3)
Loop
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Летающая тарелка:
Dim П As Rectangle
П.X = 400 : П.Y = 300 : П.Width = 100 : П.Height = 50
Do Until П.Width > 500
Гр.DrawEllipse(Pens.Gold, П)
П.Inflate(4, 2)
Loop
End Sub
83.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Башня:
Dim П As RectangleF
П.X = 200 : П.Y = 400 : П.Width = 100 : П.Height = 50
' Рисуем снизу вверх, постепенно сужая, пока толщина башни не сойдет на нет:
Do Until П.Width < 0
Гр.DrawEllipse(Pens.Black, П)
П.Inflate(-1, -0.5) 'Сужаем
П.Y = П.Y - 5
Loop
End Sub
84.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Label1.CreateGraphics 'Рисовать будем на метке
Dim Перо As New Pen(Color.Blue, 5) 'Перо для координатных осей
Перо.EndCap = Drawing.Drawing2D.LineCap.ArrowAnchor 'Стрелка к перу
Dim Шрифт As New Font("Times", 28, FontStyle.Bold Or FontStyle.Italic)
Dim x, y, Xo, Yo, Xмет, Yмет, dx As Single
Xo = 30 'Начало координат лежит по горизонтали чуть правее левого края метки
Yo = Label1.Height / 2 ' Начало координат лежит по высоте посредине метки
Гр.DrawLine(Перо, 10, Yo, Label1.Width - 10, Yo) 'Рисуем горизонтальную ось абсцисс
Гр.DrawLine(Перо, Xo, Label1.Height - 10, Xo, 10) 'Рисуем вертикальную ось ординат
Гр.DrawString("x", Шрифт, Brushes.Red, Label1.Width - 40, Yo) 'Пишем букву x
Гр.DrawString("y", Шрифт, Brushes.Red, Xo - 30, 0) 'Пишем букву y
Гр.DrawString("График функции", Шрифт, Brushes.Red, Xo + 30, 0) 'Пишем заголовок
Гр.DrawString("sin x / x", Шрифт, Brushes.Red, Xo + 120, 40) 'Пишем заголовок
'Рисуем в цикле множество точек графика:
dx = 0.01 'Шаг по x маленький, чтобы точки графика лежали плотнее
For x = 0 To 3000 * dx Step dx
y = (Math.Sin(x)) / x 'Вычисляем "настоящий" y
Xмет = Xo + 10 * x 'Вычисляем горизонтальную координату точки на графике
Yмет = Yo - 100 * y 'Вычисляем вертикальную координату точки на графике
Гр.FillEllipse(Brushes.Black, Xмет, Yмет, 3, 3) 'Рисуем точку графика
Next
End Sub
Пояснения: Здесь числа 5, 28, 30, 10, 40, 120 в первых 13 строках процедуры подобраны на опыте исходя из соображений наилучшего внешнего вида чертежа. Число 3000 получилось как 30 / 0.01. Если бы мы наносили на чертеж точки с координатами x и y, то ввиду малости чисел x и y все эти точки находились бы в левом верхнем углу чертежа. Пришлось вычислять реальные координаты точек на чертеже: Xмет и Yмет:
Xмет = Xo + 10 * x 'Вычисляем горизонтальную координату точки на графике
Здесь начало координат сместилось вправо на Xo и ось абсцисс растянулась в 10 раз. Число 10 подобрано на опыте исходя из соображений наилучшего внешнего вида чертежа.
Yмет = Yo - 100 * y ' Вычисляем вертикальную координату точки на графике
Здесь начало координат сместилось вниз на Yo и ось ординат растянулась в 100 раз. Число 100 подобрано на опыте исходя из соображений наилучшего внешнего вида чертежа. Обратите внимание на минус перед 100 * y. Он нужен потому, что на математических чертежах ось Y направлена вверх, а в компьютере вниз.
Обратите внимание, что при делении на x = 0 в первой итерации VB# не выдал сообщение об ошибке, так как тип чисел – Single.
В дальнейшем мы познакомимся со специальными методами для преобразования осей координат.
85.
'На форме Form1 ближе к краю размещены два маленьких объекта-"кнопки" PictureBox1 и PictureBox2
'с уже загруженными в них картинками, а также большой объект - "рамка" PictureBox3.
Dim Продолг_формы, Продолг_картинки As Single
'ЧТО ДОЛЖНО ПРОИЗОЙТИ ПРИ ЩЕЛЧКЕ МЫШКОЙ ПО "КНОПКЕ" PictureBox1:
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles PictureBox1.Click
'Это чтобы большая "рамка" PictureBox3 приняла форму и размеры картины:
PictureBox3.SizeMode = PictureBoxSizeMode.AutoSize
PictureBox3.Image = PictureBox1.Image 'Копируем картинку с "кнопки" в большую "рамку"
'А это чтобы картинка изменяла размеры вслед за "рамкой" PictureBox3:
PictureBox3.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox1.BorderStyle = BorderStyle.Fixed3D 'А это чтобы мы видели, какую картинку уже смотрели
Продолг_формы = Me.Width / Me.Height 'Это продолговатость формы по горизонтали
'Это продолговатость по горизонтали "рамки" PictureBox3, принявшей картинку:
Продолг_картинки = PictureBox3.Width / PictureBox3.Height
If Продолг_картинки > Продолг_формы Then 'ЕСЛИ картинка продолговатей, чем форма, ТО ...
PictureBox3.Width = 0.9 * Me.Width 'картинка, конечно, должна быть чуть поуже формы (на 1/10)
PictureBox3.Left = 0.05 * Me.Width 'а это для симметричности по горизонтали (на 1/20 от краев)
PictureBox3.Height = PictureBox3.Width / Продолг_картинки 'Чтобы не исказились пропорции картинки
PictureBox3.Top = (Me.Height - PictureBox3.Height) / 2 'А это для симметричности по вертикали
Else 'ИНАЧЕ ...
PictureBox3.Height = 0.9 * Me.Height 'Картинка, конечно, должна быть чуть покороче формы (на 1/10)
PictureBox3.Top = 0.05 * Me.Height 'А это для симметричности по вертикали (на 1/20 от краев)
PictureBox3.Width = PictureBox3.Height * Продолг_картинки 'Чтобы не исказились пропорции картинки
PictureBox3.Left = (Me.Width - PictureBox3.Width) / 2 'А это для симметричности по горизонтали
End If
End Sub
'ЧТО ДОЛЖНО ПРОИЗОЙТИ ПРИ ЩЕЛЧКЕ МЫШКОЙ ПО "КНОПКЕ" PictureBox2:
Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles PictureBox2.Click
PictureBox3.SizeMode = PictureBoxSizeMode.AutoSize
PictureBox3.Image = PictureBox2.Image
PictureBox3.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox2.BorderStyle = BorderStyle.Fixed3D
Продолг_формы = Me.Width / Me.Height
Продолг_картинки = PictureBox3.Width / PictureBox3.Height
If Продолг_картинки > Продолг_формы Then
PictureBox3.Width = 0.9 * Me.Width
PictureBox3.Left = 0.05 * Me.Width
PictureBox3.Height = PictureBox3.Width / Продолг_картинки
PictureBox3.Top = (Me.Height - PictureBox3.Height) / 2
Else
PictureBox3.Height = 0.9 * Me.Height
PictureBox3.Top = 0.05 * Me.Height
PictureBox3.Width = PictureBox3.Height * Продолг_картинки
PictureBox3.Left = (Me.Width - PictureBox3.Width) / 2
End If
End Sub
86.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Me.CreateGraphics
Dim i As Integer
For i = 1 To 100
Dim Кисть As New SolidBrush(Color.FromArgb(255 * Rnd(), 255 * Rnd(), 255 * Rnd(), 255 * Rnd()))
Гр.FillEllipse(Кисть, 800 * Rnd(), 600 * Rnd(), 800 * Rnd(), 600 * Rnd())
Next
End Sub
87.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Толщина, Непрозрачность As Single
Dim i As Integer
Dim Перо As Pen
Dim Гр As Graphics = PictureBox1.CreateGraphics
Dim Картинка As New Bitmap("Силуэт.JPG")
'Создаем прямоугольник по размерам картинки:
Dim П As New Rectangle(0, 0, Картинка.Width, Картинка.Height)
Гр.DrawImage(Картинка, П) 'Рисуем фотографию
П.Inflate(-150, -150) 'Начнем с самого маленького эллипса
Толщина = 8 ' Это толщина пера, которым рисуются эллипсы
For i = 0 To 40 'Нарисовано будет 40 эллипсов
П.Inflate(Толщина, Толщина) 'Следующий эллипс больше предыдущего
Непрозрачность = 20 * i 'Наращиваем непрозрачность
'Непрозрачность не должна превышать 255:
If Непрозрачность > 255 Then Непрозрачность = 255
Перо = New Pen(Color.FromArgb(Непрозрачность, 255, 255, 255), Толщина)
Гр.DrawEllipse(Перо, П)
Next
End Sub
88.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Номер_цвета, Насыщенность As Integer
Номер_цвета = InputBox _
("Введите число 1, 2 или 3. Если фиксированный цвет красный, то 1, если зеле-ный - 2, синий - 3")
Насыщенность = InputBox("Введите насыщенность фиксированного цвета - число от 0 до 255")
Рисуем_срез(Номер_цвета, Насыщенность)
End Sub
Private Sub Рисуем_срез( ByVal Выбор_цвета As Integer, ByVal Насыщенность As Integer)
Dim Размер As Single = 1 'Это длина стороны квадратика
Dim i, j As Integer
Dim x, y As Single
Dim Гр As Graphics = Me.CreateGraphics
Dim Кисть As New SolidBrush(Color.White)
For j = 0 To 255 'Внешний цикл - рисует строки квадратиков сверху вниз
y = j * Размер 'Вертикальная координата строки квадратиков
For i = 0 To 255 'Внутренний цикл - рисует квадратики в строке слева направо
x = i * Размер 'Горизонтальная координата квадратика
Select Case Выбор_цвета
Case 1 : Кисть.Color = Color.FromArgb(Насыщенность, i, j)
Case 2 : Кисть.Color = Color.FromArgb(i, Насыщенность, j)
Case 3 : Кисть.Color = Color.FromArgb(i, j, Насыщенность)
End Select
Гр.FillRectangle(Кисть, x, y, x + Размер, y + Размер) 'Рисуем квадратик
Next i
Next j
End Sub
89.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Me.CreateGraphics
Dim Фото As New Bitmap("Spacescape.JPG")
Dim Фото1 As New Bitmap(Фото, 500, 400)
Dim Цвет_точки As Color
Dim x, y, Красный, Зеленый, Синий As Integer
Гр.DrawImage(Фото1, 0, 0)
x = InputBox("Введите горизонтальную координату точки")
y = InputBox("Введите вертикальную координату точки")
Гр.DrawEllipse(New Pen(Color.Yellow, 3), x - 5, y - 5, 10, 10) 'Рисуем маленькую окружность
Цвет_точки = Фото1.GetPixel(x, y) 'Определяем цвет заданной точки
Красный = Цвет_точки.R 'Количество красного
Зеленый = Цвет_точки.G 'Количество зеленого
Синий = Цвет_точки.B 'Количество синего
'Определяем, какого цвета больше:
If Красный > Зеленый And Красный > Синий Then
Debug.WriteLine("Красного больше")
ElseIf Зеленый > Красный And Зеленый > Синий Then
Debug.WriteLine("Зеленого больше")
ElseIf Синий > Красный And Синий > Зеленый Then
Debug.WriteLine("Синего больше")
Else
Debug.WriteLine(" Два самых ярких или все три цвета одинаково интенсивны")
End If
End Sub
90.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Me.CreateGraphics
Dim Монетка As New Bitmap("DIME.WMF")
Гр.TranslateTransform(Me.Width / 2, Me.Height / 2) 'Смещаем начало координат в центр формы
Do
'Рисуем монетку так, чтобы ее центр был поближе к началу координат:
Гр.DrawImage(Монетка, -190, -188) 'Числа 190 и 188 подобраны на опыте
Гр.RotateTransform(2) 'Вращаем систему координат вокруг ее начала на 2 градуса
Loop
End Sub
91.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Дата_со_временем As DateTime
Dim Только_дата As String
Дата_со_временем = DateAdd("ww", 52, Now)
Только_дата = Дата_со_временем.ToLongDateString
Debug.WriteLine(Только_дата)
End Sub
92.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Дата_рождения As DateTime
Дата_рождения = InputBox("Введите дату своего рождения")
Debug.WriteLine(DateDiff("s", Дата_рождения, Now))
End Sub
93.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim Дата_рождения, День_рождения_в_этом_году, День_рождения_в_следующем_году As DateTime
Dim Сколько_мне_лет, Сколько_дней_осталось As Integer
'Переменная Сколько_мне_лет не совсем точно соответствует общепринятому смыслу.
'Это разность между текущим годом и годом рождения.
Дата_рождения = InputBox("Введите дату своего рождения")
Сколько_мне_лет = DateDiff("yyyy", Дата_рождения, Today)
День_рождения_в_этом_году = DateAdd("yyyy", Сколько_мне_лет, Дата_рождения)
День_рождения_в_следующем_году = DateAdd("yyyy", Сколько_мне_лет + 1, Дата_рождения)
If День_рождения_в_этом_году >= Today Then 'Если день рождения в этом году сегодня или позже
Сколько_дней_осталось = DateDiff("y", Today, День_рождения_в_этом_году)
Else
Сколько_дней_осталось = DateDiff("y", Today, День_рождения_в_следующем_году)
End If
Debug.WriteLine(Сколько_дней_осталось)
End Sub
94.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'Эта процедура отлавливает лишние високосные года (не кратные 4) между 1920 и 2940 годами.
Dim Текущая_дата, Дата_через_год As DateTime
Текущая_дата = #1/1/1920#
Dim Число_дней_в_году, Год As Integer
Do Until Текущая_дата > #1/1/2940#
Дата_через_год = DateAdd("yyyy", 1, Текущая_дата)
Число_дней_в_году = DateDiff("y", Текущая_дата, Дата_через_год)
Год = DatePart("yyyy", Текущая_дата)
If (Число_дней_в_году = 366) And Not (Год Mod 4 = 0) Then
Debug.WriteLine("Лишний високосный год - " & Год)
Debug.WriteLine("Число дней в году - " & Число_дней_в_году)
End If
Текущая_дата = Дата_через_год
Loop
End Sub
95.
Dim k As Long = 100
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Debug.WriteLine(k)
k = k + 1
If k > 110 Then Timer1.Enabled = False
End Sub
98.
Dim x As Integer = 100 'Координаты вагона
Dim y As Integer = 150
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Граф As Graphics = Me.CreateGraphics
Dim Черное_перо As Pen = New Pen(Color.Black, 5)
Dim Перо_цвета_фона As Pen = New Pen(Me.BackColor, 5)
Dim i As Integer
Граф.DrawEllipse(Черное_перо, x, y, 20, 20) 'Рисуем заднее колесо
Граф.DrawEllipse(Черное_перо, x + 100, y, 20, 20) 'Рисуем переднее колесо
Граф.DrawRectangle(Черное_перо, x, y - 20, 120, 20) 'Рисуем прямоугольник
For i = 1 To 5000000 : Next 'Пустой цикл для задания паузы
Граф.DrawEllipse(Перо_цвета_фона, x, y, 20, 20) 'Стираем заднее колесо
Граф.DrawEllipse(Перо_цвета_фона, x + 100, y, 20, 20) 'Стираем переднее колесо
Граф.DrawRectangle(Перо_цвета_фона, x, y - 20, 120, 20) 'Стираем прямоугольник
x = x + 1 'Перемещаемся немного направо
End Sub
99.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Left = PictureBox1.Left - 1
PictureBox2.Left = PictureBox2.Left - 1
End Sub
100.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Left = Button1.Left + 1
Button2.Left = Button2.Left - 1
Button3.Top = Button3.Top - 1
Button4.Top = Button4.Top + 1
Button5.Left = Button5.Left + 1
Button5.Top = Button5.Top - 1
End Sub
101.
Dim Шаг As Integer = 2
Dim x As Integer = 0
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Button1.Left = x
x = x + Шаг
If x > Width - Button1.Width Then Шаг = -2 ' Если объект улетел за правый край формы, то лететь обратно
If x < 0 Then Шаг = 2 'Если объект улетел за левый край формы, то лететь обратно
End Sub
Я написал Width - Button1.Width, а не Width, чтобы объект не скрывался за правым краем формы.
102.
Dim x, y As Integer 'Координаты шарика
'dx - шаг шаpика по гоpизонтали, то есть pасстояние по гоpизонтали между двумя последовательными
'положениями шарика при движении. dy - аналогично по веpтикали
Dim dx As Integer = 4
Dim dy As Integer = 6 '4 и 6 - напpавление движения - впpаво вниз
Dim Размер_шарика As Integer
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles MyBase.Paint
Dim Граф As Graphics = Me.CreateGraphics
Граф.DrawRectangle(Pens.Black, 20, 20, 600, 300) 'Рисуем биллиардный стол
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Размер_шарика = PictureBox1.Height
x = PictureBox1.Left : y = PictureBox1.Top 'Начальные координаты шарика
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
x = x + dx : y = y + dy 'Двигаем шарик "в уме"
PictureBox1.Left = x : PictureBox1.Top = y 'Двигаем шарик на форме
If x < 20 Or x > 620 - Размер_шарика Then dx = -dx 'Удаpившись о левый или пpавый боpт,
' шаpик меняет гоpизонтальную составляющую скоpости на пpотивоположную
If y < 20 Or y > 320 - Размер_шарика Then dy = -dy 'Удаpившись о веpхний или нижний боpт,
'шаpик меняет веpтикальную составляющую скоpости на пpотивоположную
'Если шаpик в левом веpхнем углу или в левом нижнем
'или в пpавом веpхнем или в пpавом нижнем, то останавливай шаpик:
If (x < 40 And y < 40) Or (x < 40 And y > 300 - Размер_шарика) Or (x > 600 - Размер_шарика And y < 40) _
Or (x > 600 - Размер_шарика And y > 300 - Размер_шарика) Then Timer1.Enabled = False
End Sub
103.
Dim D As Single = 400 'Диаметр циферблата
Dim t As Integer = 0 'Время в секундах
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles MyBase.Paint
Dim Граф As Graphics = Me.CreateGraphics
Граф.DrawEllipse(Pens.Black, 0, 0, D, D) 'Рисуем циферблат
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Граф As Graphics = Me.CreateGraphics
Dim Кисть_цвета_фона As New SolidBrush(Me.BackColor)
Граф.FillPie(Кисть_цвета_фона, 4, 4, D - 8, D - 8, 6 * t, 1) 'Стираем предыдущую стрелку
t = t + 1
Граф.FillPie(Brushes.Black, 4, 4, D - 8, D - 8, 6 * t, 1) 'Рисуем следующую стрелку
End Sub
4 – это на сколько радиус стрелки меньше радиуса циферблата. Я запрограммировал только секундную стрелку. Интервал таймера установил в 1000, то есть в 1 секунду. 6 – это результат деления 360 градусов на 60 секунд, за которые стрелка эти градусы обегает.
104.
Dim v, t, h, s As Double 'Смотри пояснения к задаче 47
Dim x, y As Single
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Граф As Graphics = Me.CreateGraphics
v = 20 : t = 0 : h = 100 : s = 0
Граф.DrawLine(Pens.Black, 10, 110, 200, 110)
Граф.FillRectangle(Brushes.Green, 10, 10, 20, 100)
MsgBox("Башня построена")
Timer1.Enabled = True 'Бросаем камень
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
s = v * t
h = 100 - 9.81 * t ^ 2 / 2
x = s + 20 'Кооpдинаты камня в полете
y = 110 - h
PictureBox1.Left = x
PictureBox1.Top = y
t = t + 0.03
If h < 0 Then Timer1.Enabled = False 'Если камень упал, время останавливается
End Sub
108.
Dim Кадр1_левый As New Bitmap("Кадр1.png") 'Три исходных кадра, глядящие влево
Dim Кадр2_левый As New Bitmap("Кадр2.png")
Dim Кадр3_левый As New Bitmap("Кадр3.png")
Dim Кадр1_правый, Кадр2_правый, Кадр3_правый As Bitmap 'Три исходных кадра, глядящие вправо
Dim Кадр1, Кадр2, Кадр3 As Bitmap 'Три рабочих кадра для PictureBox
Dim N As Integer = 0
Dim dx As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackgroundImage = Image.FromFile("Пирамиды.jpg")
Кадр1_левый.MakeTransparent(Color.White)
Кадр2_левый.MakeTransparent(Color.White)
Кадр3_левый.MakeTransparent(Color.White)
Кадр1_правый = New Bitmap(Кадр1_левый) 'Получаем три правых кадра из левых ...
Кадр2_правый = New Bitmap(Кадр2_левый)
Кадр3_правый = New Bitmap(Кадр3_левый)
Кадр1_правый.RotateFlip(RotateFlipType.RotateNoneFlipX) ' и зеркально отражаем их направо
Кадр2_правый.RotateFlip(RotateFlipType.RotateNoneFlipX)
Кадр3_правый.RotateFlip(RotateFlipType.RotateNoneFlipX)
PictureBox1.BorderStyle = BorderStyle.None
PictureBox1.BackColor = Color.Transparent
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
PictureBox1.Image = Кадр1_левый 'Ставим человечка в исходное положение
Timer1.Enabled = False 'Пусть стоит на месте
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Select Case N
Case 0 : PictureBox1.Image = Кадр1
Case 1 : PictureBox1.Image = Кадр2
Case 2 : PictureBox1.Image = Кадр3
Case 3 : PictureBox1.Image = Кадр2
End Select
N = (N + 1) Mod 4
PictureBox1.Left = PictureBox1.Left + dx
End Sub
'Кнопка движения направо:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dx = 10
Кадр1 = Кадр1_правый 'Все рабочие кадры будут правыми
Кадр2 = Кадр2_правый
Кадр3 = Кадр3_правый
Timer1.Enabled = True 'Надо идти
End Sub
'Кнопка движения налево:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dx = -10
Кадр1 = Кадр1_левый 'Все рабочие кадры будут левыми
Кадр2 = Кадр2_левый
Кадр3 = Кадр3_левый
Timer1.Enabled = True 'Надо идти
End Sub
'Кнопка остановки:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If dx = 10 Then PictureBox1.Image = Кадр1_правый Else PictureBox1.Image = Кадр1_левый
Timer1.Enabled = False
N = 0
End Sub
110.
Dim Сообщение As String = "Мышь не находится над кнопкой"
Private Sub Button2_MouseEnter( ByVal sender As Object, ByVal e As EventArgs) Handles Button2.MouseEnter
Сообщение = "Мышь - над кнопкой"
End Sub
Private Sub Button2_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.MouseLeave
Сообщение = "Мышь не находится над кнопкой"
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseMove
TextBox1.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = Сообщение
End Sub
111.
Dim Толщина As Integer = 5
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseMove
Dim Граф As Graphics = Me.CreateGraphics
'След остается лишь при нажатой левой клавише:
If e.Button = MouseButtons.Left Then Граф.FillEllipse(Brushes.Black, e.X, e.Y, Толщина, Толщина)
End Sub
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseDown
'При одинарном щелчке правой клавишей толщина возрастает на 1:
If e.Button = MouseButtons.Right And e.Clicks = 1 Then Толщина = Толщина + 1
'При двойном щелчке правой клавишей толщина убывает на 1 (а не на 2):
If e.Button = MouseButtons.Right And e.Clicks = 2 Then Толщина = Толщина - 2
If Толщина < 2 Then Толщина = 2 'Не даем толщине стать меньше 2
End Sub
Пояснение: Во время двойного щелчка событие MouseDown наступает два раза. В первый раз значение e.Clicks еще равно 1, поэтому толщина вопреки нашему желанию не убывает, а вырастает на 1. Через мгновение событие MouseDown выполняется второй раз и значение e.Clicks уже равно 2. Тут нам нужно не зевать и уменьшать толщину на 2, чтобы нейтрализовать ее возрастание.
112.
Dim dx, dy As Integer
Dim Шаг As Integer = 1
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Left = PictureBox1.Left + dx 'Двигаем PictureBox
PictureBox1.Top = PictureBox1.Top + dy
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
Select Case e.KeyCode
Case Keys.Left : dx = -Шаг : dy = 0
Case Keys.Right : dx = Шаг : dy = 0
Case Keys.Up : dx = 0 : dy = -Шаг
Case Keys.Down : dx = 0 : dy = Шаг
End Select
End Sub
113.
Dim Огонь As Char
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles MyBase.KeyPress
Огонь = Char.ToUpper(e.KeyChar) 'Превращаем строчную букву в заглавную
Me.Refresh() 'Перерисовываем поверхность формы
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
Dim Гр As Graphics = Me.CreateGraphics
Гр.DrawRectangle(Pens.Black, 20, 20, 100, 300) 'Прямоугольник
Select Case Огонь
Case "R"
Гр.FillEllipse(Brushes.Red, 30, 30, 80, 80) 'Красная_лампа загорается
Гр.FillEllipse(Brushes.Black, 30, 130, 80, 80) 'Желтая_лампа гаснет
Гр.FillEllipse(Brushes.Black, 30, 230, 80, 80) 'Зеленая_лампа гаснет
Case "Y"
Гр.FillEllipse(Brushes.Black, 30, 30, 80, 80) 'Красная_лампа гаснет
Гр.FillEllipse(Brushes.Yellow, 30, 130, 80, 80) 'Желтая_лампа загорается
Гр.FillEllipse(Brushes.Black, 30, 230, 80, 80) 'Зеленая_лампа гаснет
Case "G"
Гр.FillEllipse(Brushes.Black, 30, 30, 80, 80) 'Красная_лампа гаснет
Гр.FillEllipse(Brushes.Black, 30, 130, 80, 80) 'Желтая_лампа гаснет
Гр.FillEllipse(Brushes.Green, 30, 230, 80, 80) 'Зеленая_лампа загорается
Case Else
MsgBox("Наберите символы R, Y или G")
End Select
End Sub
114.
В режиме проектирования поместим на форму два PictureBox. Назовем их Самолет и Снаряд.
Dim Клавиша_нажата As Boolean = False 'Поначалу клавиш не нажимали
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Самолет.Left = Самолет.Left - 1 'Движем самолет
If Not Клавиша_нажата Then Exit Sub 'Если клавиша не нажата, ничего дальше делать не надо
Снаряд.Top = Снаряд.Top - 3 'Движем снаряд
'Условие попадания: Если координаты самолета и снаряда достаточно близки
'как по горизонтали, так и по вертикали:
If Math.Abs(Снаряд.Top - Самолет.Top) < 20 And Math.Abs(Снаряд.Left - Самолет.Left) < 40 Then
Timer1.Enabled = False
MsgBox("Попадание!")
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
Клавиша_нажата = True
End Sub
115-1.
Добавляем в процедуру Form1_Load оператор Машина.Visible = False, а в процедуру Кнопка_начинай_сначала_Click – оператор Машина.Visible = True.
115-2.
В процедуре Timer1_Tick меняем строку:
Машина.Left = x - Машина.Width / 2 : Машина.Top = y - Машина.Height / 2
В процедуре Ставим_машину_на_старт меняем строку:
x = X_старта + Размер_старта / 2 : y = Y_старта + Размер_финиша / 2
115-3.
Private Sub Form1_MouseDown( ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseDown
Секундомер_запущен = True
Dim Xмыши As Short = e.X 'Координаты щелчка мыши на форме
Dim Yмыши As Short = e.Y
Dim dx As Short = Xмыши - x 'На сколько щелчок мыши правее машины
Dim dy As Short = Yмыши - y 'На сколько щелчок мыши ниже машины
Dim Где As типРуль 'Где (в каком направлении) мы щелкнули мышкой по отношению к машине
'Определяем это направление:
If dx > Math.Abs(dy) Then Где = типРуль.вправо
If dx < -Math.Abs(dy) Then Где = типРуль.влево
If dy > Math.Abs(dx) Then Где = типРуль.вниз
If dy < -Math.Abs(dx) Then Где = типРуль.вверх
'Определяем, что делать при щелчке по левой клавише мыши:
If e.Button = MouseButtons.Left Then
If Где = Руль Then Газ = True Else Руль = Где
End If
'Определяем, что делать при щелчке по правой клавише мыши:
If e.Button = MouseButtons.Right Then Тормоз = True
End Sub
Пояснения: Придадим точное, математическое значение словам «Мышка щелкнула справа от машины» или, скажем, «сверху от машины». Проведем через машину две воображаемые взаимно перпендикулярные прямые, обе под 45 градусов к осям координат. Эти прямые делят плоскость формы на 4 части. Пусть эти части как раз и соответствуют по смыслу определяемым направлениям. Если мы мышкой щелкнули по форме в пределах той из 4 частей, что глядит на восток, будем считать, что «мышка щелкнула справа от машины». И так далее.
Оператор
If Где = Руль Then Газ = True Else Руль = Где
можно перевести так:
«Если мышкой щелкнули в том направлении, куда ориентирована машина, то газуй, иначе поворачивай машину в направлении щелчка».
Недостаток приведенной процедуры в том, что после того, как машина врезалась в ограждение и финиш, она продолжает слушаться щелчков мыши. С этим можно бороться, введя дополнительное состояние машины, например, переменную «Машина_неподвижна» булевского типа.
116.
1) a(i) = a(i-1) + 4
2) a(i) = 2 * a(i-1)
3) a(i) = 2 * a(i-1) - 1
117.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Число_дней As Integer = 7
Dim t() As Integer = {0, 8, 14, 19, 22, 25, 28, 26}
Dim i, k, s, Min, Nomer As Integer
'Определим среднюю температуру:
s = 0
For i = 1 To Число_дней : s = s + t(i) : Next
Debug.WriteLine(s / Число_дней)
'Определим количество теплых дней:
k = 0
For i = 1 To Число_дней
If t(i) > 20 Then k = k + 1
Next
Debug.WriteLine(k)
'Определим, каким по порядку идет самый жаркий день:
Min = t(1)
Nomer = 1
For i = 2 To Число_дней
If t(i) > Min Then Min = t(i) : Nomer = i
Next
Debug.WriteLine(Nomer)
End Sub
Вот что напечатает программа:
20,2857142857143
4
6
118.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fib(200) As Decimal
Dim i As Integer
fib(1) = 1 : fib(2) = 1
For i = 3 To 139
fib(i) = fib(i - 2) + fib(i - 1)
Debug.WriteLine(i & " " & fib(i))
Next
End Sub
Последнее, 139-е распечатанное число Фибоначчи равно
50095301248058391139327916261
Следующее, 140-е, уже не умещается в тип Decimal.
119.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim t(,) As Integer = {{99, 99, 99, 99, 99}, {99, -8, -14, -19, -18}, {99, 25, 28, 26, 20}, {99, 11, 18, 20, 25}}
Dim i, j, Min, Max As Integer
Min = t(1, 1) : Max = t(1, 1)
For i = 1 To 3
For j = 1 To 4
If t(i, j) > Max Then Max = t(i, j)
If t(i, j) < Min Then Min = t(i, j)
Next j
Next i
Debug.Write(Max - Min)
End Sub
Эта программа напечатает число 47.
120.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a() As Integer = {5, 4, 2, 4, 3, 5, 5, 3, 4, 3} 'Оценки одного класса
Dim b() As Integer = {3, 4, 3, 4, 3, 5, 4, 4, 3, 4, 4, 4, 4, 3, 4, 4} 'Оценки другого класса
If Разница(a) < Разница(b) Then Debug.WriteLine("Первый класс учится ровнее") _
Else Debug.WriteLine("Второй класс учится ровнее")
End Sub
Function Минимум(ByVal c() As Integer) As Integer
Dim i As Integer
Минимум = c(0)
For i = 1 To c.Length - 1
If c(i) < Минимум Then Минимум = c(i)
Next
End Function
Function Максимум(ByVal c() As Integer) As Integer
Dim i As Integer
Максимум = c(0)
For i = 1 To c.Length - 1
If c(i) > Максимум Then Максимум = c(i)
Next
End Function
Function Разница(ByVal c() As Integer) As Integer
Разница = Максимум(c) - Минимум(c)
End Function
121.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Для отладки приняли, что в году 4 дня
Dim A() As Integer = {25, 22, 18, 20} 'Показания термометра на станции A
Dim B() As Integer = {4, 5, 4, 4} 'Показания термометра на станции B
Исправление(-2, A)
Исправление(3, B)
Dim i As Integer
For i = 0 To 3 'Распечатываем исправленные значения температур
Debug.WriteLine(A(i) & " " & B(i))
Next
End Sub
Sub Исправление( ByVal Поправка As Integer, ByVal c() As Integer)
Dim i As Integer
For i = 0 To 3
c(i) = c(i) + Поправка
Next
End Sub
Примечание: Обратите внимание на то, что я смог объявить параметр c как ByVal вместо ByRef. И это несмотря на то, что процедура должна исправлять исходный массив. Это стало возможным потому, что массивы ByVal не защищает.
122.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine(fib(30))
End Sub
Private Function fib(ByVal N As Integer) As Decimal
If N = 1 Or N = 2 Then fib = 1 Else fib = fib(N - 2) + fib(N - 1) 'Изумительная лаконичность!
End Function
'За изумительную лаконичность расплачиваемся удручающе низким быстродействием.
'Когда N переваливает за пару десятков, результата приходится долго ждать.
'Ничего подобного не было при вычислении чисел Фибоначчи простым циклом.
'Почему так? А попробуйте подсчитать, сколько раз компьютеру приходится
'обращаться к функции fib. Миллионы и миллиарды раз. Для неверующих – F11.
123.
Sub puziryok_3(ByVal mass1() As String, ByVal mass2() As Integer, ByVal mass3() As Integer, ByVal N As Integer)
Dim i, c, m As Integer
Dim s As String 'Транзитный элемент для строкового массива
For m = N To 1 Step -1
For i = 0 To m - 1
If mass3(i) > mass3(i + 1) Then
s = mass1(i) : mass1(i) = mass1(i + 1) : mass1(i + 1) = s 'Обмен в 1 массиве
c = mass2(i) : mass2(i) = mass2(i + 1) : mass2(i + 1) = c 'Обмен во 2 массиве
c = mass3(i) : mass3(i) = mass3(i + 1) : mass3(i + 1) = c 'Обмен в 3 массиве
End If
Next i
Next m
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Фамилия() As String = {"Иванов", "Петров", "Сидоров", "Николаев"}
Dim Рост() As Integer = {173, 182, 169, 175}
Dim Вес() As Integer = {71, 93, 62, 70}
Dim N As Integer = Вес.Length - 1 'Это размер таблицы без 1
puziryok_3(Фамилия, Рост, Вес, N) 'Сортируем массивы
'Распечатываем отсортированную таблицу:
Dim i As Integer
For i = 0 To N
Debug.WriteLine(Фамилия(i) & " " & Рост(i) & " " & Вес(i))
Next
End Sub
Пояснение: Мы выбрали метод пузырька, но теперь обмен элементами идет не в одном массиве, а в трех.
126.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Объект As Control
Dim Флажок As CheckBox
Dim Коллекция_флажков As New Collection
'Заполняем флажками с формы коллекцию флажков:
For Each Объект In Controls
If TypeName(Объект) = "CheckBox" Then Коллекция_флажков.Add(Объект)
Next
'Распечатываем выбранные блюда:
For Each Флажок In Коллекция_флажков
If Флажок.Checked Then Debug.WriteLine(Флажок.Text)
Next
End Sub
Пояснения: Если бы на форме присутствовали только флажки и не было бы кнопки и метки, можно было бы не создавать коллекцию флажков, а обойтись коллекцией Controls.
127.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Радиокнопка As RadioButton
For Each Радиокнопка In GroupBox1.Controls
If Радиокнопка.Checked Then Debug.WriteLine(Радиокнопка.Text) : Exit For
Next
For Each Радиокнопка In GroupBox2.Controls
If Радиокнопка.Checked Then Debug.WriteLine(Радиокнопка.Text) : Exit For
Next
End Sub
128.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = HScrollBar1.Minimum
Label2.Text = HScrollBar1.Maximum
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Label3.Text = HScrollBar1.Value
End Sub
129.
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles ComboBox1.SelectedIndexChanged
ComboBox2.Text = ComboBox2.Items(ComboBox1.SelectedIndex)
End Sub
130.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Блюдо As Object
For Each Блюдо In CheckedListBox1.CheckedItems
Debug.WriteLine(Блюдо)
Next
End Sub
Обратите внимание, что поскольку я «не очень уверен», что Блюдо имеет тип String, я для безопасности объявил его типом Object.
131.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox("Осталось ждать " & DateDiff("d", Today, DateTimePicker1.Value) & " дн.")
End Sub
132.
Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles NumericUpDown1.ValueChanged
Вычисляем_сколько_заплатили()
End Sub
Private Sub NumericUpDown2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles NumericUpDown2.ValueChanged
Вычисляем_сколько_заплатили()
End Sub
Sub Вычисляем_сколько_заплатили()
lbl_Сколько_заплатили.Text = NumericUpDown1.Value * NumericUpDown2.Value
End Sub
Здесь именем lbl_Сколько_заплатили я назвал метку.
133.
Я
134.
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Шифруем слово из 6 букв
Dim s As String = "Корова"
Debug.WriteLine(Mid(s, 1, 2) + "быр" + Mid(s, 3, 2) + "быр" + Mid(s, 5, 2) + "быр") '1 вариант
Debug.WriteLine(s.Insert(6, "быр").Insert(4, "быр").Insert(2, "быр")) '2 вариант
' Здесь мы сначала вставляем последнее быр. Получившаяся строка имеет тип String,
'поэтому можно после нее ставить точку и снова писать Insert. И так далее.
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Шифруем произвольное слово
Dim s As String = "Консенсус"
Dim Результат As String = "" 'Результат пока пустой
Dim i As Integer
For i = 0 To s.Length \ 2 - 1 'Len(s) \ 2 - это число полных пар букв в слове
'Наращиваем Результат на очередную пару букв и "быр":
Результат = Результат + s.Substring(2 * i, 2) + "быр"
Next
'Наращиваем Результат на последнюю нечетную букву, если она есть:
If Len(s) Mod 2 = 1 Then Результат = Результат + Strings.Right(s, 1)
Debug.WriteLine(Результат)
End Sub
135.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim s, s1 As String 'Исходная и результирующая строки
Dim Старый_символ, Новый_символ As Char
s = "Взирая на солнце, прищурь глаза свои, и ты смело разглядишь в нем пятна."
s1 = "" 'Результирующую строку строим с нуля
Dim i As Integer
For i = 0 To Len(s) - 1 'Просматриваем исходную строку слева направо
Старый_символ = s.Chars(i) 'Выделяем очередной символ в исходной строке
Новый_символ = ChrW(AscW(Старый_символ) + 1)
s1 = s1 & Новый_символ ' Наращиваем результирующую строку на очередной символ
Next
Debug. WriteLine (s1) 'Печатаем результат
End Sub
136.
'Для хранения информации об одном жителе организуем структуру:
Structure типЖитель
Dim ФИО As String
Dim Дата_рождения As DateTime
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Житель(5000) As типЖитель 'Массив структур в памяти для считанных из файла данных
'СЧИТЫВАЕМ ИНФОРМАЦИЮ ИЗ ФАЙЛА:
Dim Чтение As New System.IO.StreamReader("E:\VB\Список_жителей.txt")
Dim i As Integer = 1 'Счетчик жителей
'Считываем все строки файла в массив структур, пропустив двух уехавших:
Do While Чтение.Peek() <> -1
Житель(i).ФИО = Чтение.ReadLine
Житель(i).Дата_рождения = Чтение.ReadLine
If Житель(i).ФИО = "Янзаев Федор Карпович" _
Or Житель(i).ФИО = "Кропоткин Владлен Фотиевич" Then i = i - 1
i = i + 1
Loop
Чтение.Close() 'Закрываем файл
'ОБРАБАТЫВАЕМ ИНФОРМАЦИЮ В ОПЕРАТИВНОЙ ПАМЯТИ:
Dim Число_жителей_в_городе As Integer = i - 1
For i = 1 To Число_жителей_в_городе
If Житель(i).ФИО = "Страшный Гектор Васильевич" _
Then Житель(i).ФИО = "Благодатный Гектор Васильевич"
If Недавний_именинник(Житель(i)) Then Debug.WriteLine(Житель(i).ФИО)
Next
'ЗАПОЛНЯЕМ ФАЙЛ ОБРАБОТАННОЙ ИНФОРМАЦИЕЙ:
Dim Запись As New System.IO.StreamWriter("E:\VB\Список_жителей.txt")
For i = 1 To Число_жителей_в_городе
Запись.WriteLine(Житель(i).ФИО)
Запись.WriteLine(Житель(i).Дата_рождения)
Next
Запись.Close() 'Закрываем файл
End Sub
Function Недавний_именинник( ByVal Человек As типЖитель) As Boolean
Dim Разница_в_днях = Today.DayOfYear - Человек.Дата_рождения.DayOfYear
If (Разница_в_днях >= 0 And Разница_в_днях <= 7) Or Разница_в_днях <= (7 - 365) _
Then Return True Else Return False
End Function
Пояснения: Янзаев и Кропоткин тоже, конечно, считываются из файла и попадают в массив, но из-за того, что счетчик жителей при этом уменьшается на 1, следующий житель попадает в массив на их место и затирает их.
Функция Недавний_именинник принимает структуру Житель, как параметр, и определяет, правда ли, что день рождения жителя был на этой неделе. Разница_в_днях – переменная, показывающая, сколько дней прошло от дня рождения жителя до сегодняшнего дня. Фрагмент Разница_в_днях <= (7 - 365) нужен для учета ситуации, когда программа запускается в первую неделю января.
137.
Structure типЖитель
Dim ФИО As String
Dim Дата_рождения As DateTime
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Житель(5000) As типЖитель
Dim Чтение As New System.IO.StreamReader("E:\VB\Список_жителей.txt")
Dim i As Integer = 1
Do While Чтение.Peek() <> -1
Житель(i).ФИО = Чтение.ReadLine
Житель(i).Дата_рождения = Чтение.ReadLine
ListBox1.Items.Add(Житель(i).ФИО)
i = i + 1
Loop
Чтение.Close()
End Sub
138.
Dim SecretNumber As Decimal 'Загаданное компьютером число
Dim A As Decimal 'Число - попытка человека
Dim Сообщение As String
Dim Количество_попыток As Integer = 0
' ПРИ ЗАПУСКЕ ПРОЕКТА ВЫБИРАЕМ НОВУЮ ИЛИ СТАРУЮ ИГРУ:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Выбор = MsgBox("Продолжим старую игру?", MsgBoxStyle.YesNo)
If Выбор = MsgBoxResult.Yes Then Загружаем_сохраненную_игру() Else Настраиваем_новую_игру()
End Sub
Private Sub Настраиваем_новую_игру()
Randomize()
SecretNumber = Math.Round(1000000000 * Rnd()) 'Компьютер загадывает число
txtNumber.Text = 0 'Текстовое поле для ввода человеком числа
lblMessage.Text = "Попыток не было" 'Метка для вывода компьютером сообщений
'Метка для вывода количества попыток:
lblNumberTry.Text = "Количество попыток = " & Количество_попыток
Dim Запись As New System.IO.StreamWriter("E:\VB\История.txt") 'Открыть файл для записи
Запись.WriteLine(SecretNumber) 'Запись в файл загаданного числа
Запись.Close()
End Sub
'ЧТО ДЕЛАТЬ ПРИ ОЧЕРЕДНОЙ ПОПЫТКЕ ОТГАДАТЬ ЧИСЛО:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
A = CDec(txtNumber.Text) 'Преобразуем содержимое текстового поля в целое число
If A > SecretNumber Then 'В этом операторе If вся несложная логика игры
Сообщение = "Много"
ElseIf A < SecretNumber Then
Сообщение = "Мало"
Else
Сообщение = "Вы угадали"
End If
Количество_попыток = Количество_попыток + 1
lblNumberTry.Text = "Количество попыток = " & Количество_попыток
lblMessage.Text = Сообщение
'Запись в файл данных очередной попытки:
Dim Дозапись As New System.IO.StreamWriter("E:\VB\История.txt", True) 'Открыть файл для дозаписи
Дозапись.WriteLine(Количество_попыток)
Дозапись.WriteLine(A)
Дозапись.WriteLine(Сообщение)
Дозапись.Close()
End Sub
Private Sub Загружаем_сохраненную_игру()
Dim Чтение As New System.IO.StreamReader("E:\VB\История.txt") 'Открыть файл для чтения
SecretNumber = Чтение.ReadLine 'Чтение из файла загаданного числа
Debug.WriteLine("И С Т О Р И Я И Г Р Ы")
'Чтение из файла и печать данных очередной попытки:
Do While Чтение.Peek() <> -1
Количество_попыток = Чтение.ReadLine
A = Чтение.ReadLine
Сообщение = Чтение.ReadLine
Debug.WriteLine(Количество_попыток & " " & A & " " & Сообщение)
Loop
Чтение.Close() 'Закрываем файл
'Восстанавливаем содержимое текстового поля и меток на форме:
txtNumber.Text = A
lblMessage.Text = Сообщение
lblNumberTry.Text = "Количество попыток = " & Количество_попыток
End Sub
Пояснения: На форме размещены: текстовое поле txtNumber, в которое играющий вводит очередное число, метка lblNumberTry, в которой отображается количество попыток играющего, метка lblMessage для сообщений «Много», «Мало» и др. и кнопка Button1, которую играющий нажимает после ввода очередного числа в текстовое поле. В файле записывается вся история игры, сколько бы раз играющий не сохранялся. При выборе новой игры содержимое файла стирается.
139.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackgroundImage = Image.FromFile("Пирамиды.jpg")
PictureBox1.BorderStyle = BorderStyle.None
PictureBox1.BackColor = Color.Transparent
Кадры.TransparentColor = Color.White
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static N As Integer
Select Case N
Case 0 : PictureBox1.Image = Кадры.Images(1)
Case 1 : PictureBox1.Image = Кадры.Images(2)
Case 2 : PictureBox1.Image = Кадры.Images(3)
Case 3 : PictureBox1.Image = Кадры.Images(2)
End Select
N = (N + 1) Mod 4
PictureBox1.Left = PictureBox1.Left - 10
End Sub
Пояснения: Элемент управления ImageList мы назвали Кадры.
140.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Реши_задачу(TreeView1)
End Sub
Sub Реши_задачу(ByVal Вершина As Object)
If Вершина.GetNodeCount(False) = 2 Then Вершина.BackColor = Color.Yellow
Dim Дочь As TreeNode
For Each Дочь In Вершина.Nodes
Реши_задачу(Дочь)
Next
End Sub
141.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Реши_задачу(TreeView1)
End Sub
Sub Реши_задачу(ByVal Вершина As Object)
Dim K As Integer = 0 'Счетчик детей, имя которых начинается на Л
Dim Дочь As TreeNode
For Each Дочь In Вершина.Nodes
If Дочь.Text.StartsWith("Л") Then K = K + 1
Реши_задачу(Дочь)
Next
If K = 2 Then Вершина.ForeColor = Color.Blue
End Sub
142.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Реши_задачу(TreeView1)
End Sub
Sub Реши_задачу(ByVal Вершина As Object)
Dim Дочь As TreeNode
For Each Дочь In Вершина.Nodes
Реши_задачу(Дочь)
Next
If Вершина.GetNodeCount(False) = 0 Then
Вершина.Nodes.Add(Вершина.Text & "1")
Вершина.Nodes.Add(Вершина.Text & "2")
End If
End Sub
Если вы поменяете местами операторы For и If, это приведет к безграничному разрастанию дерева. Почему?
143.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Реши_задачу(TreeView1)
End Sub
Sub Реши_задачу(ByVal Вершина As Object)
Dim Дочь As TreeNode
For Each Дочь In Вершина.Nodes
If Дочь.Text.StartsWith("Ф") Then Пометь(Дочь) Else Реши_задачу(Дочь)
Next
End Sub
Sub Пометь(ByVal Вершина As TreeNode)
Вершина.BackColor = Color.LightGreen
Dim Дочь As TreeNode
For Each Дочь In Вершина.Nodes
Пометь(Дочь)
Next
End Sub
145.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim Запись As DataRow
For Each Запись In DataSet11.Книги.Rows
Запись("Kol_str") = Запись("Kol_str") + 2
Next
End Sub
146.
50
100
Специально для http://all-ebooks.com
[†] Программа на машинном языке представлена по-другому.