информатика. Игнатьева Елена Александровна, Измайлова Елена Ивановна. Информатика. Электронный ресурс методические указания
Скачать 4.32 Mb.
|
Работа с переменными строкового типа Операции над строками Строки можно присваивать, объединять и сравнивать. Объ- единение строк записывается в естественном виде. Если сумма получается длиннее, чем описанная длина левой части оператора присваивания, то излишек отсекается. Для объединения двух и более строк используется символ "&" (амперсанд) или "+" (сложение). Результатом объединения строк является строка. Пример 1: Sub строки1() Dim A As String Dim B As String Dim C As String A="Строковая" В="переменная" С=A & B 'Результат: С = "Строковая переменная" С=А + "переменная" 'Результат: С = "Строковая пере- менная" End Sub Первый комментарий соответствует случаю, когда при по- шаговом выполнении программы жёлтым выделен оператор С=A & B. Этот комментарий означает следующее: если указатель мышки подвести к С, то высветится С = "Строковая переменная" – результат выполнения оператора, находящегося в одной строке с комментарием. Аналогичный смысл имеют все комментарии в программах данного методического указания, начинающегося со слова "Ре- зультат". 167 Следует учесть, что при остановах во время выполнения программы жёлтым цветом выделяется первый из невыполнен- ных операторов. Благодаря операции объединения строк, строку можно рас- сматривать как выражение, аналогичное арифметическим и логи- ческим выражениям Сравнение строк происходит посимвольно, начиная от пер- вого символа в строке. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны. В языке VBA имеется набор стандартных (встроенных) функций для работы со строковыми данными. Функции для работы со строками . Сравнение строковых выражений Для сравнения строковых выражений используются сле- дующие функции: 1) Option Compare{Binary | Text | Database}, где Binary – сравнение идёт побайтно; Text – сравнение идёт по расположению этих слов в слова- ре; Database – работает только с Microsoft Access. Операция сравнения не зависит от регистра символов. 2) StrComp (string1, string2 [,compare]), где string1 – строка, которая сравнивается; string2 – строка, которая сравнивается; compare – способ сравнения (по умолчанию 0 – Binary, 1 – Text) Если string1=string2, то функция возвращает 0; если string1 Удаление пробелов При работе со строками используется три функции удаления пробелов. Описание и назначение этих функций представлено в таблице 1. 168 Таблица 1 Описание и назначение функций удаления пробелов Функция Назначение Тип аргумента Тип результата LTrim(N) Удаляет все про- белы в начале строки (слева – left) String String RTrim(N) Удаляет все про- белы в конце строки (справа – right) String String Trim(N) Удаляет все про- белы в начале и в конце строки String String Пример 2: Sub Строки2() Dim A As String Dim B As String A=" Строковая переменная " В=LTrim(A) 'Результат: "Строковая переменная " B=RTrim(A) 'Результат: " Строковая переменная" B=Trim(A) 'Результат: "Строковая переменная" End Sub Преобразование числа в строку Для преобразования числового значения в строковое ис- пользуется функция Str(Value), где Value – аргумент функции числового типа. Результат будет иметь тип String. Например: Если переменная n=1000, то в результате S=Str(n) получим S="1000". 169 Преобразование строки в число Для преобразования строки в число используется функция Val(St), где St – аргумент функции строкового типа. Результат будет иметь числовой тип. Если функция Val не может сделать преобразование, то она возвращает ноль. Пример 3: Sub Строки3() Dim A As String Dim B As Currency A="45.77" B=Val(A) 'Результат: В=45.77 A=Str(B) 'Результат: А="45.77" B=Val("4.7=X") 'Результат: В=4.7 B=Val("Х=4.7") 'Результат: В=0 End Sub Возвращение строки, состоящей из пробелов Для возвращения в программу строки, состоящей из пробе- лов, используется функция Space(N), где N – аргумент функции типа Byte, обозначающий количество пробелов, из которых будет состоять строка. Пример 4: Sub Строки4() Dim A As String Dim B As Currency Dim C As String A="X=" B=45.77 C=A & Str(B) 'Результат: С="Х=45.77" B=Val("45.77=X") 'Результат: В=45.77 B=Val(C) 'Результат: В=0 C="Строковая" & Space(3) & "переменная" 170 'Результат: С="Строковая пере- менная" End Sub Замена подстроки Для замены какой-либо части строки или определённых символов используется функция Replace. Её синтаксис: Replace(expression, find, replace [,start [,count [,compare]]]), где: expression – исходная строка; find – какую подстроку заменить; replace – на какую подстроку заменит; start – позиция начала поиска (по умолчанию равна 1); count – количество проводимых замен (по умолчанию равно 1); compare – способ сравнения (по умолчанию Binary(0) – сравнение идёт побайтно; Text(1) – сравнение идёт по располо- жению строк в словаре). Пример 5: Sub строки5() Dim A As String Dim B As String A="Павел Иванов" B=Replace(A, "Иванов", "Гусев") 'Результат: В="Павел Гусев End Sub Преобразование букв строки в заглавные или строчные Для преобразования строки или строковой переменной та- ким образом, чтобы все буквы стали заглавными (то есть буквами верхнего регистра – upper case) или строчными (то есть буквами нижнего регистра – lower case) используются функции UCase(S) и LCase(S) соответственно. Описание и назначение этих функций приведено в таблице 2. 171 Таблица 2 Описание и назначение функций UCase и LCase Функция Назначение Тип аргумента Тип результата UCase(S) Преобразует все буквы стро- ки в заглавные String String LCase(S) Преобразует все буквы стро- ки в строчные String String Пример 6: Sub Строки6() Dim A As String Dim B As String A="Павел Иванов" В=UCase(A) 'Результат: "ПАВЕЛ ИВАНОВ" B=LCase(A) 'Результат: "павел иванов" End Sub Определение длины строки Для определения количества символов в строке (не считая кавычек) применяется функция Len(S),где S – строка символов. Результат будет иметь тип Integer Пример 7: Sub Строки7() Dim S As String Dim N As Integer A="Строковая переменная" N=Len(S) 'Результат: N=20 End Sub 172 Выделение подстроки из строки символов Для выделения подстроки из строки используются функции Left(S,N), Right(S,N), Mid(S, Start, N), где: S – строка; N – количество выделяемых символов; Start – позиция начала замены. Описание и назначение этих функций приведено в таблице 3. Таблица 3 Описание и назначение функций Left, Right, Mid Функция Назначение Тип аргумента Тип результата Left(S,N) Right(S,N) Mid(S, Start, N) Выделяет N сим- волов слева Выделяет N сим- волов справа Выделяет N сим- волов начиная с позиции start S – String N – Byte Start – Byte String Пример 8: Sub Строки8() Dim S As String Dim S1 As String S=" Моя строковая переменная" S1=Left(S, 3) 'Результат: S="Моя" S1=Right(S, 10) 'Результат: S="переменная" S1=mid(S, 5,9) 'Результат: S="строковая" End Sub Определение позиции вхождения подстроки в строку Для определения позиции вхождения подстроки в строку используются функции InStr([start, ] S1, S2[, compare]) InStrRev(S1, S2[, start[, compare]]), где: 173 start – позиция начала поиска; S1 – строка, в которой будет происходить поиск; S2 – подстрока, которую будем искать в строке S1; compare – способ сравнения. Описание и назначение этих функций приведено в таблице 4. Таблица 4 Описание и назначение функций InStr и InStrRev Функция Назначение Тип аргумента Тип резуль- тата InStr([start, ] S1, S2[, compare]) InStrRev(S1, S2[, start[, com- pare]]) Определяет по- зицию первого вхождения под- строки S2 в строку S1 Определяет по- зицию послед- него вхождения подстроки S2 в строку S1 start – Byte S1 – String S2 – Srting compare – 0 или 1 (по умолча- нию 0) Byte Пример 9: Sub Строки9() Dim S As String Dim S1 As String Dim N As Byte S=" Моя строковая переменная" S1="о" N= InStr(S, S1) 'Результат: N=2 N= InStrRev(S, S1) 'Результат: N=9 End Sub 174 Преобразование элементов массива в строку Для преобразования элементов массива в строку можно ис- пользовать функцию, Join( array[, delimiter]), где: array – массив, который нужно преобразовать; delimiter – символ, который будет разделять элементы мас- сива в конечной строке (по умолчанию пробел). Преобразование строки в массив Для преобразования строки в массив используется функция Split(S[, delimiter[, limit[, compare]]]), где S – строка, которую нужно преобразовать в массив delimiter – символ, который нужно принять за разделитель элементов массива (по умолчанию пробел); limit – ограничение возвращаемых элементов; compare – способ сравнения. 3. ПОРЯДОК ВЫПОЛНЕНИЯ 1. Получить задание у преподавателя. 2. Выполнить задание в соответствии с вариантом. 3. Ответить на контрольные вопросы. 4. ЗАДАНИЕ Выполнить сортировку одномерного массива на языке про- граммирования Visual Basic for Applications. ВАРИАНТ № 1 Дана строка символов. 1) Определить количество слов, длина которых больше трех и меньше либо равно шести символам. 2) Определить длину самого длинного слова и напечатать его. 3) Определить длину строки с символа с номером M по сим- вол с номером N. 4) Определить количество слов, начинающихся на сочета- ние "ст". 175 ВАРИАНТ № 2 Дана строка символов. 1) Напечатать строку символов между второй и третьей за- пятыми. 2) Определить количество слов, заканчивающихся на "ь". 3) Длину самого короткого слова и напечатать его. 4) Определить количество слов, длина которых меньше семи символов. ВАРИАНТ № 3 Дана строка символов. 1) Напечатать часть строки от первого символа "5" до по- следнего символа "!". 2) Определить количество слов, содержащих букву "й". 3) Определить количество букв "а" во втором слове. 4) Напечатать слова, начинающиеся на "кр". ВАРИАНТ № 4 Дана строка символов. 1) Напечатать часть строки от предпоследней до последней запятой. 2) Определить количество слов, заканчивающихся на соче- тание "ай". 3) Определить напечатать среднее (по расположению в строке) слово. 4) Определить количество слов, длина которых более 10 символов. ВАРИАНТ № 5 Дана строка символов. 1) Определить количество символов "=" после предпослед- ней запятой. 2) Определить и напечатать слова, начинающиеся на "ст" и заканчивающиеся на "нь". 3) Определить количество букв "о" во втором слове. 4) Напечатать второе слово в обратном порядке. 176 ВАРИАНТ № 6 Дана строка символов. 1) Определить и напечатать слово, содержащее максималь- ное количество букв "о". 2) Определить количество слов, начинающихся на букву "к" и длиной от трех до семи символов. 3) Определить количество символов между первым симво- лом "7" и последним символом "?". 4) напечатать предпоследнее слово в обратном порядке. ВАРИАНТ № 7 Дана строка символов. 1) Определить количество слов. Длина которых больше длины первого слова. 2) Определить длину самого длинного слова и напечатать его. 3) Определить длину строки с символа с номером M по вто- рую встреченную запятую. 4) Определить количество слов, заканчивающихся на "ок". ВАРИАНТ № 8 Дана строка символов. 1) Напечатать строку символов между второй и предпослед- ней точками. 2) Определить количество слов, в которых встречается бук- ва "я". 3) Длину самого короткого слова и напечатать его. 4) Определить количество слов, длина которых меньше 8 символов, но больше длины самого короткого слова. ВАРИАНТ № 9 Дана строка символов. 1) Напечатать часть строки от третьего символа "5" до по- следнего символа ";". 2) Определить количество слов, начинающихся и заканчи- вающихся на букву "о". 3) Определить количество букв "к" в предпоследнем слове. 177 4) Напечатать слова, начинающиеся на "рос". ВАРИАНТ № 10 Дана строка символов. 1) Напечатать часть строки от предпоследней запятой до первой точки. 2) Определить количество слов, заканчивающихся на соче- тание "ин". 3) Определить напечатать среднее (по расположению в строке) слово. 4) Определить количество слов, длина которых не менее 8 символов. ВАРИАНТ № 11 Дана строка символов. 1) Определить количество символов "+" после второй точки. 2) Определить и напечатать слова, начинающиеся на "ст" и содержащих символ "5". 3) Определить количество букв "о" в строке. 4) Напечатать последнее слово в обратном порядке. ВАРИАНТ № 12 Дана строка символов. 1) Определить и напечатать слово, содержащее минималь- ное количество букв "о". 2) Определить количество слов, начинающихся на букву "т" и длиной не более семи символов. 3) Определить количество символов между последним сим- волом "7" и последним символом "?". 4) напечатать предпоследнее слово. ВАРИАНТ № 13 Дана строка символов. 1) Определить количество слов, содержащих более трех за- пятых. 2) Определить длину слова, содержащего наибольшее число символов "о" и напечатать его. 3) Определить длину строки до третьего с конца строки сло- ва. 178 4) Определить количество слов, начинающихся на сочетание "ви". ВАРИАНТ № 14 Дана строка символов. 1) Напечатать строку символов между второй запятой и на- чалом последнего слова. 2) Определить количество слов, содержащих "ъ". 3) Длину самого длинного слова и напечатать его. 4) Определить количество слов, длина которых меньше семи символов и больше трех символов. ВАРИАНТ № 15 Дана строка символов. 1) Напечатать часть строки от первого символа "к" до по- следнего символа "р". 2) Определить количество слов, содержащих сочетание "ай". 3) Определить количество букв "е" в предпоследнем слове. 4) Напечатать слова, начинающиеся на "11". ВАРИАНТ № 16 Дана строка символов. 1) Напечатать часть от начала самого короткого слова до последней запятой. 2) Определить количество слов, заканчивающихся на соче- тание "ть" и состоящих из 4 символов. 3) Определить напечатать третье с конца строки слово. 4) Определить количество слов, длина которых более 4 сим- волов. ВАРИАНТ № 17 Дана строка символов. 1) Определить количество символов "=" после второго сло- ва. 2) Определить и напечатать слова, начинающиеся на "т". 3) Определить количество букв "о" во втором и предпослед- нем словах. 4) Напечатать последнее слово в обратном порядке. 179 ВАРИАНТ № 18 Дана строка символов. 1) Определить и напечатать слово, содержащее максималь- ное количество символов, но не содержащее букв "о". 2) Определить количество слов, длиной пять или восемь символов. 3) Определить количество символов между последним сим- волом "%" и третьим символом "!". 4) напечатать самое длинное слово в обратном порядке. ВАРИАНТ № 19 Дана строка символов. 1) Определить и напечатать слово, содержащее M или N символов. 2) Определить количество слов, содержащих символ "?", но не начинающихся на "о". 3) Определить количество символов между последним сим- волом "э" и символом под номером N. 4) Определить напечатать среднее (по расположению в строке) слово в обратном порядке. 5. КОНТРОЛЬНЫЕ ВОПРОСЫ Как описывается область видимости и время существования переменных? 2. Чем характеризуется строка переменной длины? 3. Чем характеризуется строка постоянной длины? 4. Какие операции можно выполнять над строками? 5. Какие действия выполняют функции Val(St) и Str(Value)? 6. Какие действия выполняют функции UCase(S) и LCase(S)? 7. Какие функции определяют позицию вхождения подстро- ки в строку? 180 Лабораторная работа № 10 Пользовательские процедуры и функции 1. ЦЕЛЬ РАБОТЫ Изучение синтаксиса стандартных строковых процедур и функций, встроенных в язык программирования высокого уровня Visual Basic for Applications (VBA), получение навыков примене- ния строковых процедур и функций в программах пользователя при работе с данными строкового типа. 2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Общие положения Описание и создание процедур В офисном программировании целью работы, обычно, явля- ется создание системы документов. С системой документов свя- зан программный проект, представляющий совокупность про- граммных проектов, связанных с каждым отдельным докумен- том. Проекты разных документов связаны между собой и могут иметь общие данные и общие процедуры и функции, доступные из разных проектов. Каждый проект состоит из модулей разного типа. Каждый модуль содержит объявления переменных, проце- дур и функций. Процедуры и функции являются минимальными модульными конструкциями, из которых строится программный проект. Процедура (функция) – это программная единица VBA, включающая операторы описания ее локальных данных и испол- няемые операторы. Обычно в процедуру объединяют регулярно выполняемую последовательность действий, решающую отдель- ную задачу или подзадачу. Особенность процедур VBA в том, что они могут использовать в качестве элементарных действий большое количество встроенных методов и функций, оперирую- щих с разнообразными объектами этой системы. Поэтому струк- 181 тура управления типичной процедуры прикладной офисной сис- темы довольно проста: она состоит из последовательности вызо- вов встроенных процедур и функций, управляемой небольшим количеством условных операторов и циклов. Обычно ее размеры не должны превышать нескольких десятков строк. |