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

новая папка 1 / Лабораторная работа №10

.doc
Скачиваний:
42
Добавлен:
25.02.2016
Размер:
41.98 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 10

СТРОКИ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ТУРБО-ПАСКАЛЬ.

1. Литерный тип (CHAR) в языке программирования Паскаль.

Литерный (символьный) тип обозначается именем CHAR. Значениями этого типа являются элементы набора литер (символов). Некоторые из литер не имеют графического представления - это управляющие литеры. Все литеры перенумерованы, начиная с 0. Полный набор литер в Турбо-Паскаль состоит из 256 элементов с номерами от 0 до 255.

Все литеры фиксированы и упорядочены. Отношение порядка между ними такое же, как и между их порядковыми номерами. Так 'A'>'0', потому что номер 'A' - 65, а номер '0' - 48.

Две стандартные функции дают отображение литер на их номера и на-оборот. Это следующие функции: ORD(C), где C - литера. Значением этой функции является номер литеры C; CHR(N), где N - целое число от 0 до 255. Значением этой функции является литера с номером N.

Эти функции являются обратными по отношению друг к другу, то есть

CHR(ORD(C)) = C и ORD(CHR(N)) = N.

Для элементов типа CHAR выполнимы также стандартные функции PRED и SUCC.

2. Строковый тип (STRING) в языке программирования Турбо-Паскаль.

Строки в языке программирования Паскаль - это последовательности литер. В качестве ограничителя строк-констант используются апострофы, например: 'PASCAL', 'компьютер', '25'.

В языке Турбо-Паскаль определен стандартный строковый тип STRING.

Примеры:

Var S:STRING;

Строковые выражения состоят из строковых констант, переменных, имен строковых функций и операндов. Знак "+" используется для слияния (конкатенации) строк.

Например:

Var s,s1,s2:String;

Begin

s1:=’123’;

s2:=’456’;

s:=s1+s2;{В итоге S=’123456’}

End;

Для строк применима операция сравнения. При этом строки сравниваются посимвольно. т.е. сначала сравниваются первые символы. Если они равны, сравниваются вторые символы и т.д.

Например: ‘Привет’>’Пока’

Тип STRING в -Паскале представляется как ARRAY[0..N] OF CHAR.

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

Например, если

VAR A:STRING;

и A:='COMPUTER',

то A[3] равно'M' , A[5] - 'U'.

3. Строковые процедуры и функции в Турбо-Паскале.

В Турбо-Паскале имеются ряд стандартных процедур и функций, специально предназначенных для работы со строками.

3.1. Процедура DELETE.

Синтаксис:

DELETE(var S:String;Pos,Len:Integer);

Убирает из строки S Len символов начиная с Pos .Если Len больше длины S то ничего не происходит . Если Pos+Lеn больше длины строки то удаляются все символы до конца строки .

Например:

S:=’ABCDEF’;

Delete(s,2,3); {В результате S=’AEF’}

3.2. Процедура INSERT.

Синтаксис :

INSERT(S:String;var D:String;Pos:Integer);

Вставляет строку S в строку D начиная с символа с номером Pos . Если Pos больше длины D то S и D сливаются .

Например:

S:=’ABCD’; Insert(‘Q’,S,2) {В результате S=’AQBCD’}

3.3. Функции IntToStr и FloatToStr

Синтаксис :

IntToStr(I:Integer):String;

FloatToStr(R:Real):String;

Преобразует I или R из числа в строку

3.4. Функции StrToInt и StrToFloat

Синтаксис :

StrToInt(S:String):Integer;

StrToFloat(S:String):Real;

Преобразует строковую переменную S в число

3.5. Функция COPY.

Синтаксис :

COPY(S:String;Pos,Len:Integer):String;

Возвращает строку , полученную из Len символов строки S начиная с позиции Pos . Если Pos больше,чем длина строки S то возвращается пустая строка . Если Pos + Len больше ,чем длина строки S то возвращаются только символы , принадлежащие строке S .

Например:

S:=’ABCDEF’;

S1:=Copy(S,2,3); {В результате S1=’BCD’}

3.6. Функция LENGTH.

Синтаксис :

LENGTH(S:String):Integer;

Возвращает длину строки S .

S:=’ABCDEF’;

k:= LENGTH (S); {В результате k=6}

3.7. Функция POS.

Синтаксис :

POS(Pattern,Sourse:String):Integer;

Возвращает номер символа , начиная с которого Pattern входит в

Sourse . Если вхождения нет , то возвращается 0 .

Например: Pos(‘C’,’ABCDC’) = 3;

Pos(‘E’,’ABCD’) = 0.

3.8. Функция AnsiLowerCase;

Синтаксис:

AnsiLowerCase(S:String):String;

Преобразует все буквы строки S к нижнему регистру.

Например: S:=AnsiLowerCase(‘ПрИвЕт’) {Результат: S=’привет’}

3.9. Функция AnsiUpperCase;

Синтаксис:

AnsiUpperCase(S:String):String;

Преобразует все буквы строки S к верхнему регистру.

4. Примеры программ

Пример 1. Написать программу, подсчитывающую число букв ‘A’ в введенной строке.

Для ввода строки используем Edit1. Результат выведем в объект Label1.

Вариант 1.

Var

S:String;

c,I:Integer;

Begin

C:=0;

S:=Edit1.text; {Получаем строку из Edit1}

For I:=1 to Length(s) do {Просматриваем каждую букву строки}

If s[I]=’A’ Then C:=C+1; {Если просматриваемая буква «А», то увеличиваем С}

Label1.caption:=’Число букв «А» в строке «’+s+’» равно ‘+IntToStr(C);

{Путем слияния строк выводим на экран результат. Например, если введена строка ‘AESFDAC’, то результат будет записан в виде: «Число букв «А» в строке «AESFDAC» равно 2»}

End;

Замечание: При сравнении строк различаются большие и маленькие буквы, а также английские и русские символы

Вариант 2:

Var

S:String;

c:Integer;

Begin

C:=0;

S:=Edit1.text; {Получаем строку из Edit1}

While Pos(‘A’,S)>0 do {Пока есть буквы «А» в строке повторяй}

Begin

C:=C+1; {Увеличивай счетчик}

Delete(S,POS(‘A’,S),1); {Удаляй первую найденную букву «А»}

End;

Label1.caption:=’Число букв «А» в строке «’+s+’» равно ‘+IntToStr(C); {Путем слияния строк выводим на экран результат. Например, если введена строка ‘AESFDAC’, то результат будет записан в виде: «Число букв «А» в строке «AESFDAC» равно 2»}

End;

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

Пример 2: Написать программу, заменяющую в введенной строке все буквы “A” на “Я”

Var

S:String;

I:Integer;

Begin

S:=Edit1.text; {Получаем строку из Edit1}

For I:=1 to Length(s) do {Просматриваем каждую букву строки}

If s[I]=’A’ Then S[I]:=’Я’;{Если просматриваемая буква «А», то увеличиваем С}

Label1.caption:=S

End;

Задание 1. Напишите программу, подсчитывающую число заданных букв (например 'А') в произвольном слове. Буква и слово вводятся с клавиатуры

Задание 2. Напишите программу, удаляющую из строки все пробелы.

Задание 3. Напишите программу, заменяющую в произвольном тексте все цифры на символ '*'.