ГЛАВНАЯ >> ИНТЕРНЕТ и ПО >> ПРОГРАММИРОВАНИЕ: Visual Basic 2010 - это просто. "Угадай-ка"
НАЗВАНИЕ СТАТЬИ: Visual Basic 2010 - это просто. "Угадай-ка"
АВТОРСТВО: Алексей Набережный
ДАТА НАПИСАНИЯ: Июнь 2010 года
ДАТА ПЕЧАТНОЙ ПУБЛИКАЦИИ: Август 2010 года ( ISSN 0235-3520 )
ДАТА ПОСЛЕДНЕЙ РЕДАКЦИИ: Июнь 2010
| |
Спросите толкового программиста с чего он начинал. В списке ответов будут Basic, Pascal, C, но вряд ли вы услышите что-то приставкой Visual и вот почему. В процессе так называемого визуального программирования большую часть кода создает компьютерная программа. Пользователю остается водить мышкой по экрану и вписывать значения в отведенные окошки. В таком режиме очень сложно научиться программировать «от и до». На ум приходит сравнение с кулинарной темой. С одной стороны, можно сделать итальянскую лазанью, используя шаблонный полуфабрикат, но с другой - такой подход малопригоден в учебных целях у будущих поваров.
Однако начинать программировать можно и на Visual Basic, главное не отвлекаться на графический интерфейс и создавать первые программы в виде консольных приложений. Учебников и самоучителей на тему программирования в консоли вы не найдете, так постараемся научиться азам на страницах этого сайта. Причем, в понятном формате.
Для старта скачаем последнюю редакцию Visual Studio 2010 (бесплатная версия Express доступна по адресу www.microsoft.com/express/downloads/ ) и установим на пользовательский ПК. Начнем знакомство с классическими алгоритмическими конструкциями на примере игры «Угадай-ка». Пусть компьютер загадывает число от 0 до 100, а мы попытаемся его угадать за 7 попыток. Домашний ПК будет нам помогать фразами «перелет» и «недолет».
Скачаем Visual Studio 2010 Express
Итак, Пуск – Программы - Microsoft Visual Studio 2010 Express - Microsoft Visual Studio 2010 Express. В открывшемся окошке идем в Файл – Создать Проект, в списке выбираем строку «Консольное приложение». Задаем имя проекта (по умолчанию, оно ConsoleApplication1). И даже тут мы видим четыре «бесплатных» строчки будущей программы:
Module Module1
Sub Main()
End Sub
End Module
Теперь в главную процедуру (между второй и третьей строчками) вставляем код нашей игры – чуть ниже мы его разберем по кусочкам.
10: Dim i, n, p As Integer
20: Randomize()
30: n = Math.Round(Rnd() * 100)
40: Console.WriteLine("Сейчас я загадаю целое число от 0 до 100,")
50: Console.WriteLine("а ты попытаешься его угадать за 7 попыток.")
60: For i = 1 To 7
70: Console.WriteLine("--------------------------------------")
80: Console.Write("Это твоя " + Str(i) + "-я попытка. Вводи число: ")
90: p = Console.ReadLine
100: If p = n Then
110: Console.WriteLine("МОЛОДЕЦ! ТЫ УГАДАЛ!")
120: Exit For
130: ElseIf p > n Then
140: Console.WriteLine("Перелет")
150: Else
160: Console.WriteLine("Недолет")
170: End If
180: Next i
190: If i = 8 Then
200: Console.WriteLine("--------------------------------------")
210: Console.WriteLine("УВЫ, ТЫ ПРОИГРАЛ! Я ЗАГАДАЛ ЧИСЛО " + Str(n) + ".")
220: End If
230: Console.ReadKey()
В этом месте неискушенный новичок покрутит пальцем у виска, а бывалый программист искренне улыбнется. Цифры слева – это классика. Строки кода на языке Basic нумеровались с 1964 года, когда в первом руководстве по языку программирования Beginner's All Purpose Symbolic Instruction Code (BASIC) были представлены три команды:
10 LET X=(7+8)/3
20 PRINT X
30 END
Сейчас это больше атавизм, ведь в прошлом веке наличие строковой нумерации обусловливалось определенными целями. Мы будем использовать нумерацию, чтобы было удобнее разбирать код по кирпичикам.
Строка 10. С помощью оператора DIM объявляется имя и тип одной или нескольких переменных. В нашем случае мы объявили три целочисленных переменных: i – будем использовать в цикле, n – загаданное число, p – наши варианты загаданного числа.
Строки 20 и 30 мы объясним в обратном порядке. Функция RND() возвращает случайное вещественное число (типа Single) в диапазоне от 0 до 1. Мы умножили случайное число на 100, чтобы расширить диапазон – от 0 до 100. А вот функция Math.Round() по сути лишняя в нашей программе, но пусть будет. Она округляет получившееся число до целого значения. Однако переменная n объявлена, как целочисленная, а значит, при выполнение программы дробная часть загаданного числа обрезалась бы автоматически. Чуть не забыли, функция Randomize() инициализирует подлинную генерацию случайных чисел, иначе «задуманное» число всегда будет одним и тем же.
Строки 40 и 50 обеспечивают вывод приветственных фраз на экран в консольном режиме.
Строки с 60 по 180 ключевые в нашем коде – это циклическая конструкция. Команды с 70 по 170 – называются телом цикла. Нашему циклу суждено повторится 7 раз – те самые 7 попыток отгадать задуманное число. С каждым проходом (итерацией) цикла значение счетчика i будет увеличиваться с 1 до 7 в строке 180. Заметим, что значение переменной i будет играть важную роль в строке 190, но об этом чуть позже.
Обратите внимание на уже знакомый оператор в строке 80. Здесь выводимая строка формируется динамически, в зависимости от значения переменной i. А функция Str(i) превращает числовую переменную в обычную строку, чтобы вы увидели информативную фразу «Это твоя 1-я попытка. Вводи число: ».
Пользователь вводит значение в переменную p в 90-й строке. Если здесь ввести не число, а какой либо другой символ, получится ошибка. В дальнейшем мы научимся обрабатывать подобные варианты событий, а пока не будем столь дотошными.
Конструкция с 100 по 170 строку называется ветвлением. В зависимости от выполнения того или иного условия, выполняются те или иные команды. Допустим вы – угадали и введенное P равняется задуманному N, тогда компьютер выполнит операторы из 110 и 120 строки. Кстати, Exit For нужен, чтобы в случае победы завершить выполнение запущенного цикла 60-180 и передать управление оператору в строке 190.
Строка 140 будет задействована в работе алгоритма, если введенное P окажется больше задуманного N. А строка 160 исполнится, если введенное P окажется меньше задуманного N. Правда все просто?
Наша первая программа на Visual Studio 2010
Конструкция с ветвлением в строках с 190 по 220 сработает, если на выходе с цикла значение счетчика i будет равно 8. Поясним, если бы вы угадали задуманное число на последней 7-й попытке, то значение i равнялось бы 7. А если оно равно 8, то значит цикл завершился сам собой, «счастливый» оператор Exit For из строки 120 не выполнялся.
Ну и последний оператор из строки 230 ожидает ввода в консоль любого одного(!) символа. Если бы не он, то написанное консольное приложение отработало бы без ошибок и сразу же закрылось. Кстати, попробуйте вместо Console.ReadKey() написать оператор GoTo 30. Запустите отладку приложения клавишей F5. Что получилось в итоге? Если недопоняли, встаньте курсором на GoTo и нажмите кнопку F1 – помощь вам в помощь.
А в следующий раз мы запрограммируем еще более интересную консольную игру - "Камень, ножницы, бумага".
>> НАВЕРХ СТРАНИЦЫ <<
|