Шрифт:
Закладка:
В целом программа иллюстрирует идею вложенных циклов, когда один, внутренний, цикл вложен внутрь другого, внешнего. У нас тело внешнего цикла выполняется 10 раз, а тело внутреннего — 100 раз, так как на каждое выполнение внешнего цикла он выполняется 10 раз.
Задание 57: Распечатать все возможные сочетания из двух цифр — первая цифра может быть любой от 3 до 8, вторая — любой от 0 до 7. Например, 36, 44, 80.
Распечатать все возможные сочетания из четырех цифр, каждая из которых может принимать значения 1,2,3. Например, 2123, 3312, 1111.
Подсчитать количество таких сочетаний.
Подсчитать из них количество неубывающих сочетаний, то есть таких, где каждая следующая цифра не меньше предыдущей — 1123, 1223, 2222 и т. п., но не 3322. Распечатать все такие сочетания.
Поиск максимального из чисел
Задача программисту: Найти максимальное из вводимых в компьютер чисел. Задача рыбаку: Принести домой самую большую из выловленных рыб.
Решение рыбака: Рыбак приготовил для самой большой рыбы пустое ведро. Первую пойманную рыбу рыбак не глядя бросает в это ведро. Каждую следующую рыбу он сравнивает с той, что в ведре. Если она больше, то он бросает ее в ведро, а ту, что была там раньше, выпускает в реку.
Решение программиста: Программист приготовил для самого большого числа ячейку и придумал ей название, скажем, max. Первое число программист не глядя вводит в эту ячейку. Каждое следующее число (назовем его chislo) он сравнивает с шах. Если оно больше, то он присваивает переменной шах значение этого числа.
Напишем программу для определения максимального из 10 вводимых чисел:
Private Sub Command1_Click()
Max = InputBox("Введите число") 'первую рыбу — в ведро
For i =2 То 10 'ловим остальных рыб:
chislo = InputBox("Введите число") 'поймали очередную рыбу
If chislo > Max Then Max = chislo 'и если она больше той, что в ведре, бросаем ее в ведро
Next i
Debug.Print Max 'несем самую большую рыбу домой
End Sub
Задание 58: Найти из N чисел минимальное. Каким по порядку было введено минимальное число? Указание: для номера минимального числа тоже нужно отвести специальную ячейку.
Задание 59: У вас есть данные о росте ваших одноклассников. Правда ли, что рост самого высокого отличается от роста самого низкого больше, чем на 40 см.?
ГРАФИКА
Графикой у компьютерщиков принято называть все то, что связано с рисунками и изображениями.
Прежде чем рисовать, познакомимся с некоторыми новыми понятиями.
Объекты. Их свойства, их события, их методы
То, что у каждого объекта есть свойства, мы уже усвоили. Так, у формы Form1 есть свойство BackColor (цвет фона), а у метки Label8 есть свойство Caption (надпись). У кнопки Command2 тоже есть свойство Caption, но оно у ней свое. Принадлежность свойства указывается через точку — Label8.Caption, Command2.Caption, Text1.Width.
Что вы можете делать со свойствами объектов? Вы можете их устанавливать и менять вручную в режиме проектирования. Вы можете запрограммировать их автоматическое изменение в режиме работы.
Что касается событий, я как-то не акцентировал, кому они принадлежат. Создавалось впечатление, что они, вроде, сами по себе, не относятся ни к какому объекту. Нет же. Посмотрите на процедуры, написанные нами ранее. Кроме процедуры Command1_Click, мы встретились с такими процедурами, как Form_Load и Form_Terminate. Вы видите, что в заголовке процедуры справа от знака подчеркивания мы указываем событие, а слева — объект, к которому это событие относится. Таким образом, события принадлежат объектам и принадлежность события указывается через знак подчеркивания в заголовке процедуры.
Событий в Visual Basic огромное количество и многие из них мы изучим. Чтобы посмотреть, какие события могут случиться с таким-то объектом, нужно запустить так называемый Object Browser ("перелистыватель объектов" — его найдете в меню View) — >
В окне Object Browser в левом списке вы кроме всего прочего найдете названия всех элементов управления, находящихся в данный момент в Toolbox. Щелкните по интересующему вас объекту (я щелкнул по CommandButton) — в правом списке вы увидите свойства, события и так называемые методы данного объекта.
Свойства помечены значком в виде руки, что-то нажимающей на каком-то пульте (вы можете видеть на картинке свойство Caption). События помечены значком в виде зигзага молнии, методы помечены непонятным значком, по-моему это летящий кирпич. Щелкните по интересующему вас элементу правого списка (я щелкнул по событию Click) — в нижней части окна Object Browser появится краткое описание этого элемента.
Кстати, в Object Browser вы найдете много свойств, которых нет в знакомом вам окне свойств, потому что существуют свойства, которые нельзя задавать в режиме проектирования.
Что вы можете делать с событиями? Вы можете программировать в соответствующих процедурах реакцию компьютера на них, а в режиме работы вы можете многие из них вызывать мышкой или с клавиатуры.
Кроме свойств и событий у объектов есть так называемые методы. Метод — это кое-что из того, что умеет делать данный объект.
Для знакомства с методами Visual Basic выберем метод SetFocus. Чтобы его понять, сначала нужно узнать, что такое фокус. Создайте проект с двумя кнопками и двумя текстовыми полями. Запустите его. Щелкните по одной кнопке, по другой, по одному полю, по другому. Ничего, конечно, не происходит, но если последний раз вы щелкнули по кнопке, то она имеет несколько другой, чем раньше, "нажатый" вид. А если последний раз вы щелкнули по текстовому полю, то именно в нем мигает курсор. Таким образом, можно сказать, что из множества объектов на форме один какой-то выделяется, то есть находится в фокусе. Этим объектом оказывается как раз тот объект, которым вы пользовались последним. Говорят, что объект обладает фокусом.
У объектов, способных иметь фокус, имеется два события: GotFocus, которое возникает в момент приобретения объектом фокуса, и LostFocus, которое возникает в момент потери фокуса.
Запишите в окно кода такие процедуры:
Private Sub Text1_GotFocus()
Debug.Print "Text1 получил фокус"
End Sub
Private Sub Text2_GotFocus()
Debug.Print "Text2 получил фокус"
End Sub
Private Sub Text1_LostFocus()
Debug.Print