Онлайн
библиотека книг
Книги онлайн » Разная литература » Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Шрифт:

-
+

Закладка:

Сделать
1 ... 141 142 143 144 145 146 147 148 149 ... 192
Перейти на страницу:
целые.

Ввести из текстового поля радиус окружности. Вычислить длину окружности и площадь круга. Результаты с пояснениями печатать с 5 знаками после десятичной точки с помощью оператора Print.

Строковые переменные

Строковые переменные очень важны. Без них, например, невозможен разговор с компьютером. Да и вообще, значительная часть информации, с которой работает компьютер, текстовая (то есть строковая).

Создайте двухкнопочный проект с такой программой:

Dim a As Integer

Dim b As String

_____________

Private Sub Command1_Click()

   a = 98

   Debug.Print a

End Sub

_____________

Private Sub Command2_Click()

   b = "Привет всем!"

   Debug.Print b

End Sub

Сравним две процедуры.

Объявление Dim a As Integer говорит о том, что переменная а обязана иметь числовое значение, и поэтому в первой процедуре оператор а=98 записывает в ячейку а число 98.

Объявление Dim b As String говорит о том, что переменная b обязана иметь строковое (текстовое) значение, то есть ее значением будет не число, а произвольная цепочка символов, например, Привет всем! или рпН2Н(*fD6:u. Поэтому во второй процедуре оператор b ="Привет всем!" записывает в ячейку b строку Привет всем!. Оператор Debug.Print b, поскольку он обязан всегда выводить на экран содержимое ячейки Ь, выведет на экран текст Привет всем!

Обратите внимание, что в программе текст должен браться в двойные кавычки, а в памяти он хранится без кавычек и на экран выводится без кавычек.

Информация в ячейке памяти под строковую переменную может в процессе выполнения программы меняться точно так же, как и в ячейке для числовой переменной. Например, при выполнении фрагмента

а="Минуточку!": Debug.Print а: а="3дравствуйте!": а="До свидания!":

Debug.Print а

в ячейке а будут по очереди появляться строки

Минуточку! Здравствуйте! До свидания!

а на экран будут выведены строки:

Минуточку!

До свидания!

Еще пример:

а="Цикл": Debug.Print а: а=а+а: Debug.Print а+а+а +"Конец цикла"

Поскольку знак + по отношению к строкам есть знак соединения, то а+а будет равняться "ЦиклЦикл" и это же — новое значение а. Поэтому здесь на экран будут выведены строки:

Цикл

ЦиклЦиклЦиклЦиклЦиклЦиклКонец цикла

Выражения а+а и а+а+а +"Конец цикла" в последнем примере являются ни чем иным, как строковыми выражениями, по той простой причине, что в них производятся действия, результатом которых является строка.

Строковую переменную можно задавать не только оператором присваивания, но и функцией InputBox. При вводе ставить кавычки тоже не надо. Пример:

Dim a As String

Private Sub Command1_Click()

   a = InputBox("Введите какое-нибудь слово")

   Debug.Print "Вы ввели слово"; а

End Sub

Обратите внимание на пробел перед второй кавычкой в операторе Debug.Print.

Он нужен для того, чтобы слова при выводе не сливались.

Прежде, чем идти дальше, нужно, конечно, разобраться с хитросплетениями запятых, точек с запятыми, кавычек и пробелов в операторе Print:

Как выводить информацию оператором Print

Будем пробовать, вы тоже пробуйте:

Ага, значит, оператор распечатывает список элементов, разделенных точками с запятой или запятыми. Причем, если перед элементом стоит точка с запятой, он печатается почти вплотную к предыдущему, а если запятая, то подальше, выравниваясь по столбцам. Проверим фрагмент из трех операторов:

Еще:

Что такое элемент? Мы видели, что это может быть число. А еще что? Выражение. Проверим:

В последнем операторе — два элемента.

До сих пор мы печатали только числовые переменные и выражения. Но элемент может быть и строкой:

Как видите, строку мы обязаны брать в двойные кавычки.

Как видите, если между строками стоит точка с запятой, они печатается вплотную друг к другу. Числа же в этом случае все-таки разделяются пробелами.

Как все же отодвинуть собаку от кошки на пару пробелов? Очень просто — поставьте эти два пробела внутри "собачьих" кавычек перед буквой С:

А можно внутри "кошачьих" после буквы а.

Visual Basic не обращает внимания, что написано внутри кавычек, и ничего там не вычисляет. Он просто копирует это на экран, включая пробелы, цифры, знаки арифметических действий и любую ерунду:

Элемент может быть строковой переменной или выражением:

Итак, элемент оператора Print может быть числом, числовой переменной и числовым выражением, а также строкой, строковой переменной и строковым выражением. Есть и другие типы, о них мы пока не говорим.

Вообще, в будущем, объясняя какой-нибудь новый оператор, я часто буду для простоты ограничиваться коротенькими примерами его записи, например, Print 66 или Print "Кошка". Вы должны знать, что почти везде на месте числа может стоять числовая переменная или арифметическое выражение, а на месте строки — строковая переменная или строковое выражение. И вообще, вместо константы данного типа может стоять переменная или выражение этого типа.

Обычно в операторе Print используют вперемешку строковые и числовые данные. Пусть вес поросенка хранится в памяти, в переменной Ves. Тогда распечатать его можно таким оператором:

Здесь вы видите три элемента, разделенные точками с запятой.

Пусть название месяца года хранится в памяти, в переменной Mes. Пусть вы хотите напечатать, что именно этот месяц у вас отпускной. Распечатать это можно таким оператором:

Обратили внимание на пробелы внутри кавычек? Если бы их не было, было вот что:

Мы привыкли, что каждый следующий оператор Print печатает с новой строки. Если в конце оператора Print поставить запятую или точку с запятой, то следующий оператор Print будет продолжать печатать в той же строке, а если не поставить — то начнет со следующей. Проверим фрагмент из четырех операторов:

Проверьте этот пример, запустив его один раз, затем еще раз. Объясните увиденное.

Все, что здесь было сказано, относится и к оператору Debug.Print.

То, что печатать, указывается в самом операторе Print, а вот как печатать и с какого места, зависит

1 ... 141 142 143 144 145 146 147 148 149 ... 192
Перейти на страницу: