Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб раб 7

.pdf
Скачиваний:
6
Добавлен:
16.03.2016
Размер:
553.07 Кб
Скачать

20

Dim strA As String Dim strВ As String Dim strС As String strA = ”Строковая ” strB = ”переменная”

strC = strA & strB ‘ Результат: “Строковая переменная”

2.2. Строковые функции

Имена строковых функций могут содержать на конце знак $. Функция без знака $ возвращает значение типа Variant, а функция со знаком $ – String. Аргументы функций, взятые в квадратные скобки, являются необязательными.

Asc() – функция позволяет вернуть числовой код для переданного символа. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию.

Chr() – возвращает символ по его числовому коду.

InStr() и InStrRev() – функция, которая позволяет обнаружить в теле строковой переменной подстроку и вернуть номер позиции первого или последнего соответственно вхождения подстроки в исходную строку. Если последовательность не обнаружена, то возвращается 0. Синтаксис:

InStr ([позиция,] strA, подстрока [, параметр]) InStrRev (strA, подстрока [, позиция] [, параметр]), где

позиция – числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки. Если позиция имеет значение Null, возникает ошибка. Указание аргумента позиция является обязательным, если указан аргумент параметр;

strA – строковое выражение, в котором выполняется поиск; подстрока – искомое строковое выражение; параметр – указывает способ сравнения строк. Аргумент пара-

метр может быть опущен или иметь значение 0 – для двоичного сравнение, 1 – посимвольное сравнение без учета регистра или 2 – для выполнения сравнения на основании сведений, содержащихся в базе данных.

21

Left(), Right(), Mid() – возможность взять указанное количество символов из указанной строки слева, справа соответственно.

Функция Left() возвращает значение типа Variant (String), содержащее указанное число первых символов строки. Синтаксис:

Left (strA, количество), где

strA – строковое выражение, из которого извлекаются символы. Если strA имеет значение Null, то возвращается значение Null;

количество –выражение, указывающее количество возвращаемых символов. Если 0, возвращается пустая строка (""). Если значение параметра больше либо равняется числу символов в строке strA, то возвращается вся строка.

Функция Right() возвращает значение типа Variant (String) – указанное число последних символов строки. Синтаксис:

Right (strA, количество),

где strA – строковое выражение, из которого извлекаются символы. Если strA имеет значение Null, возвращается значение Null;

количество – числовое выражение, указывающее число возвращаемых символов. Если 0, возвращается пустая строка (""). Если превышает число символов в строке strA, возвращается вся строка.

Функция Mid() возвращает значение типа Variant (String) – подстроку указанной длины.

Mid (strA, номер, [количество]),

где strA – строковое выражение, из которого извлекаются символы. Если strA имеет значение Null, возвращается значение Null;

номер – позиция символа в строке strA, с которого начинается нужная подстрока. Если номер больше числа символов в строке strA, функция Mid() возвращает пустую строку ("");

количество – число возвращаемых символов. Если этот аргумент опущен или превышает число символов, расположенных справа от позиции номер, то возвращаются все символы от позиции номер до конца строки.

Len() – возвращает значение типа Long, содержащее число символов в строке или число байт, необходимое для хранения перемен-

ной. Синтаксис:

Len (strA),

где strA – любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение Null.

22

LCase() и UCase() возвращает значение типа Variant (String), содержащее строку, преобразованную к верхнему или к нижнему регистру соответственно. Синтаксис:

LCase (strA)

UCase (strA),

где strA – строка, представляет любое допустимое строковое выражение. Если строка имеет значение Null, возвращается значение

Null.

LTrim(), RTrim(), Trim() – возвращают значение типа Variant (String), содержащее копию строки, из которой удалены пробелы, находившиеся в начале строки (LTrim()), в конце строки (RTrim()) или в начале и конце строки (Trim()). Синтаксис:

LTrim (strA)

RTrim (strA)

Trim (strA),

где strA – представляет любое допустимое строковое выражение.

Replace() – функция, заменяющая в строке одну последовательность символов на другую.

Replace (strA, подстрока, новое значение [, позиция, число замен, параметр]),

где strA – строковое выражение, в котором выполняется замена подстрока – заменяемая подстрока; новое значение – новая подстрока;

позиция – начальная позиция поиска подстроки, по умолчанию просмотр начинается с первого символа строки;

число замен – если параметр равен 1, то ищется первое вхождение подстроки в строку, по умолчанию – заменяются все подстроки;

параметр – способ сравнения подстрок, может быть опущен или иметь значение 0 – для двоичного сравнение, 1 – посимвольное сравнение без учета регистра или 2 – для выполнения сравнения на основании сведений.

Space() возвращает значение типа Variant (String), содержащее указанное число пробелов.

Space(число),

где число – указывает нужное количество пробелов в строке. Функцию Space() удобно использовать для форматирования и очистки данных в строках фиксированной длины.

StrReverse() – возвращает строку, разместив ее символы в обратном порядке. Синтаксис:

23

StrReverse (strA).

String() возвращает значение типа Variant (String), повторяющуюся строку указанной длины:

String (число, символ), где число – длина возвращаемой строки;

символ – код символа или строковое выражение, первый символ которого используется при создании возвращаемой строки.

Split() – возвращает строковый массив (нумерация индексов с нуля), содержащий заданное число подстрок. Эта функция может вернуть как все подмножество строк, так и любое требуемое количество строк. Синтаксис:

Split (strA [, разделитель [, количество [, параметр]]]), где strA – исходная строка;

разделитель – символ, разделяющий элементы строки, по умол-

чанию используется пробел; количество – число элементов в массиве. Если аргумент равен -

1, то размерность массива не ограничена; параметр – задает способ сравнения строк, может быть опущен

или иметь значение 0 (двоичного сравнение), 1 (посимвольное сравнение без учета регистра) или 2 (сравнение на основании сведений, содержащихся в базе данных).

Join() возвращает строку, созданную путем объединения нескольких подстрок, содержащихся в передаваемом пользователем

массиве строк. В качестве разделителя может задаваться любой символ, по умолчанию используется пробел. Синтаксис:

Join (массив [, разделитель]).

2.3. Примеры решения задач

Пример №1. Выбрать из заданной строки все слова, заканчивающиеся на звонкую согласную букву.

Sub SelectWords()

Dim ar() As String, j As Integer, w As String, s As String s = InputBox("введите строку")

ar = Split(s) ' заполняем массив словами из строки For j = LBound(ar) To UBound(ar)

If Right(ar(j), 1) Like "[бвгджзлмнр]" = True Then w = w & ar(j) & Space(1)

End If

24

Next j

MsgBox "Слова, оканчивающиеся на звонкую согласную букву: " & w End Sub

С помощью функции InputBox вводится исходная строка и помещается в переменную s. Функция Split разбивает исходную строку s на отдельные слова, которые являются элементами массива ar. Функции LBound и UBound используются для определения размерности массива. В цикле функция Right извлекает один последний символ и сравнивает его с согласными буквами из шаблона. В случае удачи найденное слово добавляется в переменную w, в которой слова разделяются пробелом с помощью функции Space. Процедура MsgBox выводин на экран искомую строку из переменной w.

Пример №2. Расположить слова строки в порядке убывания их длин.

Sub SortWords()

Dim ar() As String, j As Byte, k As Byte, d As String, s As String s = InputBox("введите строку")

ar = Split(s) ' заполняем массив словами из строки For k = 0 To UBound(ar) - 1

For j = 0 To UBound(ar) - 1

If Len(ar(j)) < Len(ar(j + 1)) Then d = ar(j)

ar(j) = ar(j + 1) ar(j + 1) = d

End If Next j

Next k

s = Join(ar)

MsgBox "Отсортированная строка: " & s End Sub

Функция Split возвращает строковый массив ar, элементами которого являются слова исходной строки s, разделённые пробелами. Цикл j сравнивает соседние элементы массива ar и последовательно меняет местами, помещая в начало элементы с большим количеством символов. Функция Join возвращает строку из переданного строкового массива ar, где в качестве разделителя по умолчанию используется пробел.

Пример №3. Заменить в исходной строке все буквы žа¤ на žзвёздочки¤.

25

Sub ChangeStr()

Dim s1 As String, i As Byte, s As String s = InputBox("введите строку")

For i = 1 To Len(s)

s1 = Mid(s, i, 1)

If s1 Like "[Аа]" Then s = Replace(s, s1, "*") Next i

MsgBox "Изменённая строка: " & s End Sub

Цикл с параметром i просматривает в исходной строке s символы, начиная от первого до значения, равного длине строки s. Функция Mid шаг за шагом извлекает из s по одному символу, который сравнивается с шаблоном функции Like. Если находится символ из шаблона, происходит его замена на žзвёздочку¤.

Пример №4. Подсчитать сколько раз заданное слово встречается в строке.

Sub SearchNum()

Dim ar() As String, num As Byte, i As Byte, w As String, s As String s = InputBox("введите строку")

w = InputBox("введите слово") ar = Split(s)

For i = LBound(ar) To UBound(ar)

If Trim(LCase(ar(i))) = Trim(LCase(w)) Then num = num + 1 Next i

MsgBox "слово " & w & " встречается в строке " & num & " раз(а)." End Sub

Функция Split разбивает строку s на отдельные слова, которые являются элементами массива ar. Его размерность определяют функции LBound и UBound. Функция LCase преобразовывает исходную строку к нижнему регистру и сравнивает со словом w, которое также преобразуется функцией LCase. Функция Trim возвращает строку, из которой удалены пробелы в начале и в конце. Если условие выполняется, то переменная num увеличивается на единицу. Цикл с параметром i повторяется до крайней правой границы строкового массива.

3. Задание для выполнения лабораторной работы

26 Решить задачу с использованием строковых функций в соответ-

ствии с вариантом. Номер варианта равен номеру логина.

Варианты заданий

Дано произвольное предложение:

1.Выделить все слова, которые начинаются и заканчиваются согласной буквой.

2.Найти самое короткое слово.

3.Расположить слова строки в порядке возрастания их длин.

4.Выбрать слова, которые начинаются и заканчиваются одним

итем же символом.

5.Выбрать слова, которые начинаются звонкой согласной, а заканчиваются глухой согласной.

6.Выбрать все буквы, которые встречаются в тексте только по одному разу.

7.Выяснить, имеются ли в строке числа, и выделить их.

8.Разбить на две подстроки: в первую все слова на гласную, во вторую – на согласную букву.

9.Вставить по дополнительному пробелу перед словами строки, которые начинаются с гласной.

10.Выбрать слова, в которых имеются звонкие согласные.

11.Разбить на две подстроки: в первую отнести слова, начинающиеся с гласной, во вторую – на согласную.

12.Выбрать все слова, в которых гласных больше чем соглас-

ных.

13.Все гласные буквы слов строки переписать заглавными бук-

вами.

14.Удалить из строки слова, содержащие шипящие буквы.

15.Определить использованные в строке знаки препинания.

16.Найти и выделить все слова в строке с удвоенной буквой.

17.Для каждой гласной буквы подсчитать, сколько раз она встречается в строке.

18.Поменять местами самое длинное и самое короткое слова в строке.

19.Выделить все слова в строке, заканчивающиеся на žая¤.

20.Выделить все слова в строке с четным количеством букв.

21.Имеются ли в строке слова, которые читаются одинаково, что слева направо, так и справа налево.

27

22.Удалить первые два символа строки и добавить ‘*’ в конец строки.

23.Удалить в словах строки все буквы ‘с’.

24.Дано предложение из 3-х слов. Сформировать новое предложение, расположив слова в обратном порядке.

25.Дана строка из 4-х слов. Заменить все буквы ‘к’ на ‘н’ и ‘с’

на ‘з’. Примечание.

Гласные буквы – а, е, ё, и, о, у, ы, э, ю, я; согласные – все остальные, кроме й, ь, ъ; звонкие согласные – б, в, г, д, ж, з, л, м, н, р; глухие согласные – к, п, с, т, ф, х, ц, ч, ш, щ; шипящие буквы – ч, ш, щ.

4.Требования к содержанию и оформлению отчета

Отчет должен содержать:

1.Лист с кодом процедуры согласно Приложениям А–В.

2.Рабочий лист с исходными и выходными данными согласно Приложениям А–В.

3.Ответы на вопросы письменно в рабочей тетради: ответвопрос.

5.Контрольные вопросы

1.Дайте понятие строкового типа данных.

2.Укажите, как осуществляется описание строк переменной

длины.

3.Укажите, как осуществляется описание строк фиксированной

длины.

4.Назовите строковые функции, возвращающие значения типа

Variant.

5.Назовите строковые функции, возвращающие значения строкового типа.

6.Назовите строковые функции, возвращающие значения числового типа.

7.Назовите строковые функции, работающие с массивами дан-

ных.

8.Какой вид имеет оператор ветвления в полной форме, строчный синтаксис?

28

9.Какой вид имеет оператор ветвления в краткой форме, блочный синтаксис?

10.Какой вид имеет оператор цикла с параметром?

11.Какой вид имеет оператор цикла с предусловием?

12.Какой вид имеет оператор цикла с постусловием?

13.Назовите способы и средства ввода данных в процедуру.

14.Какие виды процедур Вы знаете?

15.Назовите структуру общей процедуры.

16.Назовите структуру функции пользователя.

17.Какой вид имеет выбора (варианта)?

18.Какие типы данных знаете?

19.Назовите функции для работы с типами данных.

20.Назовите логические операции.

Список рекомендуемой литературы

1.Степанов, А.Н. Информатика. Базовый курс: учеб. пособие для студентов вузов / А.Н. Степанов. – СПб.: Питер, 2010. – 720 с.

2.Информатика. Базовый курс: учеб. пособие для студентов втузов/ под ред. С.В. Симоновича. – СПб.: Питер, 2012. -640 с.

3.Таганов, Л.С. Информатика [Текст]: учеб. пособие / Л.С. Таганов, А.Г. Пимонов; Кузбас. гос. техн. ун-т. – Кемерово, 2010. – 330 с. – Режим доступа: http://cis.kuzstu.ru/umk/?action=3&spec_id=0.

4.Информатика и информационные технологии: учебное пособие для студентов вузов, обучающихся по направлению žЭкономика¤

идр. специальностям / под ред. Ю.Д. Романовой. – М.: Эксмо, 2010. – 688 с.

5.Агальцов, В.П. Информатика для экономистов / В.П. Агальцов. – М.: Форум, 2012. – 448 с.

6.Глухих, И.Н. Интеллектуальные информационные системы: учебное пособие/ И.Н. Глухих. – М.: Академия, 2010. – 112 с.

29

Приложение А

Рисунок А.1 – Пример №1. Код процедуры

Рисунок А.2 – Пример №1. Рабочий лист с результатом