ПОНЯТНО О Visual Basic NET (том 3)

       

Ответы к задачам


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
    [†] Программа на машинном языке представлена по-другому.

    Содержание раздела