Логический тип данных Boolean
До этого момента мы с вами были знакомы с двумя видами переменных и выражений: арифметическими (их значение – число) и строковыми (их значение – текстовая строка). Теперь мы с вами познакомились с логическими выражениями. Существуют и широко применяются в программировании также и логические переменные. Это переменные, которые, как и логические выражения, могут принимать только одно из двух значений: True или False. Раз есть переменная, должен быть и тип. Объявляются логические переменные так: Dim a, b As Boolean Тип данных Boolean (булевский тип) назван так по имени прадедушки логической алгебры, которого звали Буль. Теперь вы можете писать так: a = True или If b Then … Зачем это нужно и какая выгода от таких «скучных» переменных, выяснится позже, когда вы будете программировать реальные проекты, например – «Будильник-секундомер» (13.5). Задание 18. «Замысловатая принцесса». Определите без компьютера, кто нравится принцессе, по фрагменту из ее программы: If Tsvet = "Черный" And (Rost < 180 Or Rost > 184) Then MsgBox("OK ") Else MsgBox("BYE") Задание 19. Усложним нашу задачу про ПОПАЛ – НЕ ПОПАЛ: Целей для нашего выстрела две. Одна находится в диапазоне дальности 28-30, другая – в диапазоне 65-70. Человек вводит в компьютер число – дальность выстрела. Если снаряд попал в цель, то есть число находится в интервале от 28 до 30 или от 65 до 70, то нужно выдать сообщение ПОПАЛ. Если снаряд упал на расстоянии ближе 10 к любой из целей, то нужно выдать сообщение БЛИЗКО. Кроме этого предусмотрите варианты ПЕРЕЛЕТ, НЕДОЛЕТ, МЕЖДУ ЦЕЛЯМИ и НЕ БЕЙ ПО СВОИМ. Нарисуйте схему выстрела (Рис. 7.3). Горизонтальная линия – земля. Два синих прямоугольника в заданном месте и заданных размеров – это цели. Черный квадратик слева – пушка. Вся картина должна появляться на форме до ввода дальности выстрела, после ввода должен появляться красный. кружочек – место попадания снаряда. Перед рисованием вам придется выбрать масштаб: скажем, 1 к 10. Это значит, что, например, первая цель будет прямоугольником, занимающим пространство на расстоянии от 280 до 300 пикселей от пушки. Рис. 7.3 Задание 20. Это задание трудное и необязательное, и поэтому очень полезное. Оно является добавлением к Задание 31 о треугольнике и предназначено для тех, кто чувствует себя уверенно в программировании и геометрии: В компьютер вводятся длины трех отрезков. Если из этих отрезков можно построить треугольник, постройте его. Или ответьте, что нельзя. Подсказка: Придется находить координаты вершин треугольника, а для этого надо, возможно, искать высоту треугольника при помощи формулы Герона или же теоремы Пифагора с решением уравнений. Кроме этого рекомендую занести в три дополнительные отдельные переменные размеры самого длинного отрезка и двух других отрезков. 7.6. Оператор вариантаSelect Case Суть оператора. У авторов языков программирования есть похвальное стремление сделать язык попроще, попонятнее. Они с ужасом взирают на многочисленные «иначе если» и логические операции и стараются, где можно, от них избавиться. Возьмем, например, такую задачу: Компьютер спрашивает школьника, какую он получил отметку по физике, и реагирует на нее подходящим текстом. Вот программа без нововведений, использующая If: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Otmetka As Integer = InputBox("Какую отметку ты получил по физике?") If Otmetka = 1 Or Otmetka = 2 Then MsgBox("Кошмар!") ElseIf Otmetka = 3 Then MsgBox("Неважно") ElseIf Otmetka = 4 Then MsgBox("Неплохо") ElseIf Otmetka = 5 Then MsgBox("Молодец!") Else MsgBox("Таких отметок не бывает") End If End Sub Здесь может вызвать раздражение слишком часто встречающееся имя Otmetka, а также то, что и в такой простой задаче не обошлось без логических операций. Хорошо бы программу можно было писать попроще, например, так (по-русски): Выбери вариант отметки Вариант 1, 2 говори "Кошмар!" Вариант 3 говори "Неважно" Вариант 4 говори "Неплохо" Вариант 5 говори "Молодец!" Вариант остальное говори "Таких отметок не бывает" Конец выбора И такой оператор варианта был придуман и назван Select Case, что и означает в переводе ВЫБЕРИ ВАРИАНТ. Теперь я просто-напросто переписываю русский вариант программы по-английски: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim Otmetka As Integer = InputBox("Какую отметку ты получил по физике?") Select Case Otmetka Case 1, 2 MsgBox("Кошмар!") Case 3 MsgBox("Неважно") Case 4 MsgBox("Неплохо") Case 5 MsgBox("Молодец!") Case Else MsgBox("Таких отметок не бывает") End Select End Sub Логика работы Select Case абсолютно такая же, как и у многострочного If. В процессе исполнения оператора компьютер сравнивает значение переменной Otmetka по очереди со всеми значениями, перечисленными в вариантах, сверху вниз. Наткнувшись на совпадающее значение, он выполняет операторы, стоящие в этом варианте. На этом исполнение оператора Select Case завершается. Если же совпадающего значения так и не нашлось, то выполняются операторы, стоящие в варианте Case Else (в нашей программе он полезен на тот случай, если ученик – угрюмый мечтатель и вводит число 6). Возможности оператора. Оператор Select Case предоставляет более широкие возможности, чем рассмотренные в только что приведенном примере. Проиллюстрируем их: Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim a, k As Double a = 3 Select Case a * a + 1 Case 8, 4 * a - 3, 26 k = 0 Debug.WriteLine(k) Debug.WriteLine(a) Case 7, 9 To 12 k = 1 Debug.WriteLine(k) Case Is < 0, 2, 4, 2.57 To 1.8 + a, 44, 68, Is > 100 + a k = 3 End Select End Sub Эта программа напечатает 1. Здесь мы видим несколько новых для нас элементов: · После слов Select Case стоит не переменная, а выражение, поэтому с перечисленными в вариантах значениями будет сравниваться число 10, полученное как 3*3+1. · В качестве значений вариантов тоже могут стоять выражения, как, например, у нас – 4*a-3. · Значений вариантов довольно много, все они перечислены через запятые. · Здесь у нас в верхних двух вариантах не по одному, а по нескольку выполняющихся операторов. · Конструкция 9 To12. Она обозначает то же, что и 9 <= a*a+1 <= 12, и служит в нашем случае для сокращения записи. · Конструкция Is< 0. Она обозначает то же, что и a*a+1 < 0. Слово Is, таким образом, служит заменителем выражения a*a+1 и используется для сокращения. Итак, Select Case не только сравнивает значения на равенство, но и проверяет неравенства. · Здесь отсутствует вариант Case Else. Это значит, что если бы в нашей программе оператор Select Case не выбрал ни один из своих вариантов, то, не найдя также Case Else, он завершил бы свою работу, так ничего и не сделав. Недостаток оператора. Чем платим за удобство Select Case по сравнению с If? Что может If такого, чего не может Select Case? Самое главное – условия в If могут быть совершенно произвольны, а в Select Case мы привязаны к a*a+1. Синтаксис оператора Select Case: Select Case проверяемое выражение [Case значение, значение…… [операторы операторы ……………...]] [Case значение, значение…… [операторы операторы ……………...]] …………………….………………. [Case Else [операторы операторы ……………...]] End Select
Здесь значение – это: - выражение - выражение To выражение - Isзнак сравнения выражение
Выражения могут быть не только числовые, но и строковые. Пример: Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim a As String = "Дом" Select Case a + a Case "Домик" Debug.WriteLine(44) Case "ДомДом" Debug.WriteLine(99) End Select End Sub Здесь будет напечатано 99. Задание 21. Ученик вводит с клавиатуры букву русского алфавита. Компьютер должен сказать, какой звук обозначает это буква – гласный, согласный звонкий, согласный глухой или какой-нибудь другой (можно и НЕ ЗНАЮ). Подсказка: Буква – это строка из одного символа. Задание 22. Необязательное. Если у вас есть микрофон и вы умеете записывать свой голос в файл, то попробуйте усовершенствовать изученные нами диалоги с компьютером. Пусть компьютер подает вам реплики голосом. Для этого вам заранее придется записать на диск все реплики компьютера в виде звуковых файлов и при помощи операторов Select Case выбирать между ними в зависимости от реплик человека с клавиатуры. Последний маленький шажок – сделать так, чтобы компьютер правильно реагировал на ваши реплики, подаваемые не с клавиатуры, а с микрофона. Но наука пока не в силах сделать этот маленький шажок. Улучшаем калькулятор Наш калькулятор пока не предохранен от попыток выполнения арифметических действий над текстом вместо чисел и от деления на ноль. Предохраним его от этого, а также научимся ставить пароль на проект.
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (863)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |