Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual Basic. Самоучитель для начинающих.2001.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
7.67 Mб
Скачать

Глава 3.Строки, файлы, обработка ошибок

В этой главе я собрал совершенно необходимые, но разнокалиберные вещи, которые по тематике не подходили к другим главам.

3.1.Строки

Со строковым типом String мы познакомились в 0.7. Какие интересные задачи связаны с работой со строками? Шифровка-дешифровка информации. Поиск в длинном тексте (например, в словаре или в инструкции по игре) нужного слова, которое просто так, глазами, искать очень долго. Автоматическое исправление орфографических ошибок в диктанте по русскому языку. И так далее.

Для решения этих задач мы должны уметь "влезать внутрь строк", то есть анализировать и преобразовывать строки. Visual Basic предоставляет для этого богатый набор функций. Вот некоторые из них:

Функция

Результат

Пояснение

"Мото" + "роллер"

Мотороллер

Операция + над строками просто соединяет строки в одну. Visual Basic может ее спутать со сложением чисел

"Мото" & "рол" & "лер"

Мотороллер

Операция & тоже соединяет строки в одну. Ее рекомендуется всегда применять вместо +, так как со сложением ее не спутаешь

Len ("Чук и Гек")

9

Длина строки, включая пробелы

Mid ("Астроном" , 3, 4)

трон

Часть строки длиной 4, начиная с 3-го символа

Mid ("Чук и Гек", 5, 1)

и

5-й символ в строке

При помощи функции Mid вы можете добраться до каждой буквы в тексте. Следующий фрагмент распечатывает в столбик слово "Телепортация":

s = "Телепортация"

For i = 1 To Len(s)

Debug.Print Mid(s, i, 1) 'Это i-я буква в строке

Next

Следующая функция позволяет искать в тексте нужное слово:

InStr ("Астроном", "трон")

3

Позиция (номер символа), начиная с которой строка "трон" находится в строке "Астроном"

InStr ("Астроном", "Трон")

0

Строка "Трон" не найдена в строке "Астроном"

Left ("Победа", 2)

По

2 левых символа в строке

Right ("Победа", 3)

еда

3 правых символа в строке

Ucase ("астРОнОм")

АСТРОНОМ

Все символы строки переводятся в верхний регистр

Lcase ("астРОнОм")

астроном

Все символы строки переводятся в нижний регистр

В 1.5 (Калькулятор) жизнь заставила нас познакомиться с функцией Val, которая преобразует строку в число, а в 0.10 (Переменные) - с функцией Str, которая преобразует число в строку. Напомним их вам:

Val ("20 груш и 8 яблок")

20

Функция читает строку слева направо, пока не натолкнется на символы, никакого отношения к числам не имеющие

Val (" - 1 0груш")

-10

На пробелы при этом внимание не обращается

3 * Val ( "2" & "0" )

60

Выражение "2" & "0" равняется строке "20", ну а Val ( "20" ) равняется числу 20

Str (5 * 5)

25

Число 25 преобразуется в строку "25". Хотя, надо сказать, что Visual Basic при работе с данными во многих случаях сам, без всякого вмешательства, услужливо преобразовывает данные к удобному с его точки зрения типу.

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

Функция

Результат

Пояснение

"Ж" & LTrim(" Бутевни матлны ") & "Ж"

ЖБутевни матлны Ж

Функция LTrim отсекает ведущие слева пробелы

"Ж" & RTrim(" Бутевни матлны ") & "Ж"

Ж Бутевни матлныЖ

Функция RTrim отсекает волочащиеся справа пробелы

"Ж" & Trim (" Бутевни матлны ") & "Ж"

ЖБутевни матлныЖ

Функция Trim отсекает пробелы и слева и справа

Таблица ASCII

Символы, используемые в работе с компьютерами, сведены в так называемую таблицу ASCII. У каждого из них есть порядковый номер в этой таблице. Его нам сообщает функция Asc. Функция же Chr наоборот - по номеру сообщает символ:

Функция

Результат

Пояснение

Asc ("Ы")

219

Буква Ы стоит в таблице ASCII под 219 номером

Chr (219)

Ы

Под 219 номером в таблице ASCII стоит буква Ы

Всего в таблице ASCII 256 символов, пронумерованных от 0 до 255. Вот фрагмент, распечатывающий эти символы, начиная с 32-го:

For i = 32 To 255

Debug.Print Chr(i);

Next

Вот результат работы фрагмента:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕї

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя

Задание 124: Определите без компьютера, что напечатает оператор Debug.Print Chr(Asc("Ю") + 1) ?

Задание 125: "Детская шифровка". Среди детей встречается игра, заключающаяся в зашифровке своей речи “для секретности” за счет вставки в произносимые слова какого-нибудь звукосочетания, например, “быр”. Тогда вместо слова “корова” будет произнесено “кобырробырвабыр”. Составьте программу, которая распечатывает любую строку из 6 букв, после каждой второй буквы вставляя “быр”. Если получилось, то решите эту задачу для строки произвольной длины.

Задание 126: Давайте поставим задачу шифрования текста более серьезно. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку. Способов шифровки вы можете придумать сколько угодно. Попробуйте такой – заменять каждый символ текста символом, следующим по порядку в алфавите (в таблице ASCII). Тогда слово кот превратится в слово лпу. Составьте, пожалуйста, и программу дешифровки. Когда вы познакомитесь с файлами, вы сможете уже зашифровывать и дешифровывать не отдельные строки, а целые тексты. В том числе и ваши программы.

Один из возможных путей программирования таких задач: Начните с того, что объявите массив, состоящий из строк длины 1, то есть, по сути, массив символов. Вот как это сделать: Dim s(20) As String * 1. Заполните массив символами исходной строки. Теперь вам будет удобней с ними работать. Придумайте, что делать с буквой "я". В ответе же эта задача решена другим, более коротким способом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]