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

Function vvod(ByVal T As TextBox) As String

Return T.Text

End Function

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

Dim Str1, Str2 As String

 

Str1 = vvod(TextBox1) : Str2 = vvod(TextBox2)

Обработка(Str2, Str1) : vivod(Str1, TextBox3)

End Sub

 

Private Sub Button2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button2.Click

End

 

End Sub

 

'Процедура решения задачи удаления символов из строки

Sub Обработка(ByVal b As String, ByRef a As String)

Dim d, m, i, j As Short

'длина строки a

m = CShort(a.Length)

d = CShort(b.Length)

'длина строки b

For i = 0 To CShort(d - 1) Step 2 'перебор нечетных симв. строки b

j = 0

'перебор всех символов строки a

Do While j < m

If a.Substring(j, 1) = b.Substring(i, 1) Then

a = a.Remove(j, 1) 'пока симв. совпад.-удаляем из a Else m = CShort(m - 1) 'уменьшаем длину строки a

j = CShort(j + 1) 'переход к след.символу строки a

End If

Loop

Next i

End Sub

End Class

Рис. 4.9.4-3

Если

в

процедуре Обработка( )использовать логический оператор AndAlso

(см. Тему

4.4), то процедура будет иметь вид, представленный на рис. 4.9.4-4.

 

'Процедура удаления символов из строки, используя оператор AndAlso

 

 

Sub

Обработка(ByVal b As String, ByRef a As String)

 

 

 

Dim d, m, i, j As Short

'длина строки a

 

 

m = CShort(a.Length)

 

 

d = CShort(b.Length)

'длина строки b

 

 

For i = 0 To CShort(d - 1) Step 2

'перебор нечетных символов

 

 

 

j = 0

 

 

 

 

 

'перебор всех символов строки a

 

 

 

 

 

Do While j < m AndAlso a.Substring(j,1) = b.Substring(i,1)

 

 

 

a = a.Remove(j, 1) 'пока симв. совпад.-удаляем из a

 

 

 

Loop m = CShort(m - 1) 'уменьшаем длину строки a

 

 

 

j = CShort(j + 1) 'переход к след.символу строки a

 

 

Next i

 

 

 

End Sub

 

 

 

Рис. 4.9.4-4

3.Выполнить проект и получить результаты, представленные на рис. 4.9.4-5.

Тема 4.9.Обработка строковых данных

Страница245

Страница246

Рис. 4.9.4-5

4.9.5. Работа с кодами ASCII

Символьные данные можно сравнивать между собой, и, следовательно, сортировать. Прежде чем VB сможет при сортировке сравнить один символ с другим, он должен преобразовать каждый из символов в число с помощью таблицы перевода, которая называется таблицей символов ASCII(или таблицей символов ANSI). ASCII – это сокращение от American Standard Code for Information Interchange (американский стандартный код для обмена информацией). Каждый из основных символов, которые можно отобразить на компьютере, имеет свой код ASCII. Эти коды включают базовый набор символов «клавиатуры» (коды с 32 по 127) и специальные «управляющие» символы, такие, как табуляция, перевод строки и возврат каретки (коды с 0 по 31). Например, буква «а» (латинская) в нижнем регистре соответствует ASCII-коду 97, а буква «А» (тоже латинская) в верхнем регистре соответствует ASCII-коду 65. В результате VB при сортировке или при выполнении других операций считает эти два символа различными.

В 1980-х годах таблица ASCII была расширена кодами с 128 по 255, которые содержали символы национальных языков, греческие символы, символы псевдографики и некоторые другие. Таблицу ASCII с этими дополнительными символами обычно называют

расширенной таблицей символов.

Набор символов ASCII не является единственным. При расширении рынка компьютеров и прикладного программного обеспечения был разработан более сложный стандарт представления символов, который называется Unicode. Unicode может хранить до 65536 символов - вполне достаточно для того, чтобы представить традиционные символы набора ASCII плюс большую часть национальных и международных символов. В MS Windows и VS поддерживаются как наборы символовASCII, так и Unicode.

Чтобы определить ASCII-код конкретной буквы, можно использовать функцию Asc( ) VB. Например, следующий оператор присваивает короткой целочисленной переменной AscCode число 122 (ASCII-код строчной буквы «z»):

Dim AscCode As Short

AscCode = Asc("z")

Точно также с помощью функции Chr()можно преобразовать ASCII-код в букву. Например, следующий программный код присваивает символьной переменной букву «z»:

Dim letter As Char letter = Chr(122)

Такой же результат можно получить, если использовать только что объявленную переменную AscCode следующим образом:

Тема 4.9.Обработка строковых данных

letter = Chr(AscCode)

Как сравнить одну текстовую строку или ASCII-код с другой? Использовать один из операторов сравнения, предоставляемых VB для работы с текстовыми и числовыми элементами.

Символ больше, чем другой символ, если его ASCII-код больше. Например, ASCII-

значение буквы «В» больше, чемASCII-значение буквы «А», так что выражение"А"<"В"истинно, а выражение "А">"В" ложно.

При сравнении двух строк, которые содержат больше одного символа, VB начинает со сравнения первого символа первой строки с первым символом второй строки, а затем продолжает посимвольное сравнение этих строк до тех пор, пока не найдет различие. Например, строки Mike и Michael одинаковы до третьего символа («к» и «с»). Так как значение ASCII «k» больше, чем значение «с», выражение "Mike" > "Michael" истинно.

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

длинная строка больше, чем более короткая. Например,выражение

"ААААА">"ААА"

истинно.

 

Тема 4.9.Обработка строковых данных

Страница247

4.9.6. Задачи для самостоятельного решения по теме «Обработка строковых данных»

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

1)Переписать заданное слово на русском языке таким образом, чтобы все гласные были удвоены.

2)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Найти самое длинное симметричное слово заданной строки. Если нет – сообщить.

3)Дана строка s и число n. Преобразовать строку s в строку длины n следующим образом: если длина строки s больше n, то отбросить первые символы, если длина строки s меньше n, то в ее начало добавить символы "." (точка).

4)Даны две строки: s1 и s2. Удалить из строки s1 все подстроки, совпадающие с s2. Если таких подстрок нет, то вывести s1 без изменений.

5)Дана строка. Вывести подстроку, расположенную между первой и последней точками исходной строки. Если в строке менее двух точек, то вывести всю исходную строку.

6)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые начинаются и заканчиваются одной и той же буквой

7)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно три буквы "А".

8)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, но разделенные одним символом "." (точка). В конце точку не ставить.

9)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.

10)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все последующие вхождения первой буквы этого слова и разделить слова одним пробелом.

11)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в алфавитном порядке.

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

13)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, удалив из него все предыдущие вхождения последней буквы этого слова и разделить слова одним пробелом.

14)Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы,

расположенные на нечетных местах. Например, строка "Программа" превратится

в "ргамамроП".

15)Написать программу, позволяющую определить, является ли данное слово палиндромом (т.е. читается ли оно справа налево так же, как и слева направо).

16)В записи данного натурального числа найти самую большую цифру и определить ее позицию.

17)В записи данного натурального числа подсчитать количество различных цифр и вывести

их.

Страница248

Тема 4.9.Обработка строковых данных

18)Переписать русское слово так, чтобы все гласные в нем были вычеркнуты.

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

20)Из заданного текста выберите и напечатайте те символы, которые встречаются в нём ровно один раз.

21)Выясните, верно ли, что в заданном предложении P есть все буквы, входящие в заданное слово S.

22)Определите количество предложений в заданном тексте (предложение заканчивается либо точкой, либо вопросительным или восклицательным знаком).

23)Каждые n символов во введенном тексте отделите знаком "!".

24)Выясните, верно, ли, что в заданном предложении есть пара соседствующих одинаковых символов.

25)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Отредактировать заданное предложение, удаляя из него все слова с чётными номерами и оставив по одному пробелу между словами.

26)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Найти самое короткое слово в заданном предложении.

27)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). В заданной последовательности слов найдите все слова, начинающиеся с заданной приставки. Если нет – сообщить.

28)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). В заданной последовательности слов найдите все слова, имеющие заданное окончание. Если нет – сообщить.

29)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Найдите самое длинное слово в заданном предложении.

30)В заданном тексте подсчитайте наибольшее количество подряд идущих пробелов.

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

32)Дана последовательность слов, в которой слова разделены запятыми, а за последним словом – точка. Напечатайте: эту же последовательность слов, но в обратном порядке; все различные слова, указав для каждого из них число его вхождений в последовательность.

33)Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Из заданного предложения удалите те слова, которые уже встречались в предложении раньше.

Тема 4.9.Обработка строковых данных

Страница249

4.9.7. Тестовые задания по теме «Обработка строковых данных»

1.Символьным (строковым) выражением является

1)последовательность букв русского или латинского алфавита, цифр или других символов, взятая в кавычки

2)последовательность букв русского или латинского алфавита

3)последовательность букв русского алфавита

4)последовательность букв русского или латинского алфавита, цифр или других символов, начинающаяся с латинской буквы и взятая в кавычки

2.Ошибочной записью символьной переменной является

1)с$

2)b

3)c1

4)нет верного ответа

3.Подсчитать количество символов в символьном выражении позволяет функция

1)Len( )

2)Left( )

3)Asc( )

4)Mid ( )

4.Выделить любое количество нужных символов из символьного выражения можно с помощью функции

1)Mid( )

2)Left( )

3)Asc( )

4)Len( )

5.Определить правильное написание имени символьной переменной

1)d34

2)2A$

3)ЭF$

4)&D

6.Значением функции Len("СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ") является

1)21

2)0

3)14

4)23

7.Верный оператор присваивания (Dim klass As String)

1)class = "8A"

2)class = 8A

3)class$ = 8A

4)class = ‘8A’

Тема 4.9.Обработка строковых данных

Страница250

8.Операции, допустимые для строковых данных

1)>, < , = , < = , > = , <> , + , &

2)+ , = , &

3)=

4)нет верного ответа

9.Метод a.Substring(0, n)

1)возвращает n первых символов строки a

2)возвращает n последних символов строки a

3)не применяется к строкам

4)находит символ, стоящий на позиции n в строке a

5)ничего не делает

10.Функция Left(a, n)

1)возвращает n первых символов строки a

2)возвращает n последних символов строки a

3)не применяется к строкам

4)находит символ, стоящий на позиции n в строке a

5)ничего не делает

11.Функция Right(a, n)

1)возвращает n последних символов строки a

2)возвращает n первых символов строки a

3)не применяется к строкам

4)находит символ, стоящий на позиции n в строке a

5)нет верного ответа

12.Функция Mid(a, n, m)

1)вырезает из строки a , начиная с n-ого, m символов

2)вырезает из строки a , начиная с m-ого , n cимволов,

3)не применяется к строкам

4)нет верного ответа

13.Метод a.Substring(n, m)

1)вырезает из строки a , начиная с n-ого, m символов

2)вырезает из строки a , начиная с m-ого , n cимволов,

3)не применяется к строкам

4)нет верного ответа

14.Функция Space(n)

1)возвращает строку из n пробелов

2)возвращает строку из n первых символов

3)возвращает строку из n последних символов

4)удаляет n начальных пробелов

15.Функция Lcase(a)

1)заменяет прописные буквы строки a на строчные

2)заменяет строчные буквы на прописные

3)удаляет начальные пробелы строки

4)удаляет конечные пробелы строки

Тема 4.9.Обработка строковых данных

Страница251

16.Метод a.ToUpper

1)заменяет строчные буквы строки a на прописные

2)заменяет прописные буквы на строчные

3)удаляет начальные пробелы строки

4)удаляет конечные пробелы строки

17.Функция Ucase(a)

1)заменяет строчные буквыстроки a на прописные

2)заменяет прописные буквы на строчные

3)удаляет начальные пробелы строки a

4)удаляет конечные пробелы строки a

18.Метод a.ToLower

1)заменяет прописные буквы строки aна строчные

2)заменяет строчные буквы на прописные

3)удаляет начальные пробелы строкиa

4)удаляет конечные пробелы строки a

19.Функция Ltrim(a)

1)удаляет начальные пробелы строки a

2)заменяет прописные буквы строки aна строчные

3)заменяет строчные буквы строки aна прописные

4)удаляет конечные пробелы строки

5)нет верного ответа

20.Метод a.TrimStart

1)удаляет начальные пробелы строки a

2)заменяет прописные буквы строки a на строчные

3)заменяет строчные буквы строки a на прописные

4)удаляет конечные пробелы строки

5)нет верного ответа

21.Функция Rtrim(a)

1)удаляет конечные пробелы строки

2)заменяет прописные буквы на строчные

3)заменяет строчные буквы на прописные

4)удаляет начальные пробелы строки

5)нет верного ответа

22.Метод a.TrimEnd

1)удаляет конечные пробелы строки

2)заменяет прописные буквы на строчные

3)заменяет строчные буквы на прописные

4)удаляет начальные пробелы строки

5)нет верного ответа

23.Функция Instr(n, a, b)

1)начиная с n-й позиции строки a, определяет позицию вхождения в нее строки b

2)начиная с n-й позиции строки b, определяет позицию вхождения в нее строки a

3)заменяет n символов строки a на n символов строки b

4)ошибочно записана

 

 

 

Тема 4.9.Обработка строковых данных

Страница252

 

24.Метод a.Indexof(b, n)

1)начиная с n-й позиции строки a, определяет позицию вхождения в нее строки b

2)начиная с n-й позиции строки b, определяет позицию вхождения в нее строки a

3)заменяет n символов строки a на n символов строки b

25.Функция Chr(n)

1)возвращает символ, код ASCII которого равен числу n

2)возвращает строку из n пробелов

3)возвращает строку из n первых символов

4)возвращает строку из n последних символов

26.Функция Asc(a)

1)возвращает ASCII код первого символа строки a

2)возвращает количество символов в строке a

3)преобразует число в строку a

4)не применяется к строкам

27.Функция Val(a)

1)преобразует строку a в число, если это возможно

2)возвращает длину строки

3)определяет ASCII код строки

4)не применяется к строкам

28.Определить результат выполнения фрагмента программы

n = Len("Маша ела кашу") TextBox1.Text = CInt(n)

1)13

2)12

3)&Маша ела кашу&

4)14

29.Определить результат выполнения фрагмента программы

Dim a As String = "стереопроигрыватель"

TextBox1.Text = a.Substring(0, 6)

1)стерео

2)O

3)нет верного ответа

4)проигрыватель

30.В результате выполнения фрагмента программы

A ="КОЗАК" a.Replace("О","А") TextBox1.Text= a

1)вторая буква будет заменена на букву «А»

2)будет вырезана буква «А»

3)будет вырезана вторая буква слова

Перейти кТеме 4.8 Теме 4.10

Огл.

Тема 4.9.Обработка строковых данных

Страница253

Соседние файлы в папке УчеП-Раз-4-Инф-270100