Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Общие сведения. Лабораторная работа №5. Программирование с использованием строковых переменных






Лабораторная работа №5. Программирование с использованием строковых переменных

Цель работы: познакомить с понятием " стринг" и выработать навыки работы с символьной информацией в языке программирования Pascal научиться использовать строки символов и множества при решении задач.

Общие сведения

Переменные типа String аналогичны массивам типа Char. Их отличием является то, что число символов (длина строки) может динамически меняться в интервале от единицы до заданного верхнего значения.

Тип String (строка) в Турбо Паскале широко используется для обработки текстов. Этот тип является стандартным и во многом похож на одномерный массив символов Array [0..N] of Char. Значение N соответствует количеству символов в строке и может меняться от 0 до 255. Символы, входящие в строку, занимают позиции с 1 до N. Начальный байт строки с индексом 0 содержит информацию о ее длине, т.е. это символ с кодом, равным длине строки.

Можно, также описывать переменные типа String[K], где K - целое число не больше 255. Так определяются строки с длиной не больше K. Этот тип уже не является стандартным. С символами строки можно работать как с элементами массива из символов, но в отличие от массивов, строки можно вводить целиком, сравнивать друг с другом и сцеплять операцией " +".

Сравнение строк выполняется посимвольно в соответствии с их кодами до первого несовпадения. Если одна из строк закончилась до первого несовпадения, то она считается меньшей. Пустая строка меньше любой строки. ПРИМЕР: Сравнение строк.

'abcd' > 'abcD' { 'd'> 'D' } 'abcd' > 'abc' { 'd'> '' } 'abc' < 'axxc' { 'b'< 'x' } 'abcd' = 'abcd'

Переменная строкового типа (String) может рассматриваться как массив элементов символьного типа (Char). Например, если в программе определены переменные S: string; C: char; и задано S: ='Москва', то S[1]='М', S[2]='о' и т. д. и возможно присвоение, например: C: = S[1]; Таким образом строка может рассматриваться как линейный массив символов. Элементы массива, составляющие строку можно переставлять местами и получать новые слова, например:

for i: = 1 to N div 2 do begin C: = S[i]; S[i]: = S[N-i+1]; S[N-i+1]: = C Writeln(S); end; { исходное слово выведется справа налево: " авксоМ" }

Здесь N: = ord(S[0]); - число символов в переменной " S" хранится в переменной S[0]. Функция " ord" преобразует символьный тип в целый. N div 2 - количество перестановок для слова из " N" символов. В переменной " C" запоминается значение i-го элемента, который меняется с элементом, симметричным относительно середины строки.

Можно производить поиск и замену заданного символа в строке, например:

for i: =1 to N do if S[i]=' ' then writeln ('найден символ пробел'); for i: =1 to N do if S[i]='/' then S[i]: ='\'; {замена символа " /" на " \" }

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

for i: =1 to N do S[i]: = chr(ord(S[i])+2); {преобразование исходных символов в символы с кодом большим на две единицы}

Напомним, что все используемые в MS-DOS символы имеют ASCII коды от 0 до 255. Здесь удобно также использовать функции Pred(C); и Succ(C);

Существует ряд стандартных функций и процедур для работы со строками.

· Функция Length(s) выдает длину строки s.

· Функция Concat(s1, s2,.., sn) возращает строку s1+s2+..+sn.

· Функция Copy(s, p, k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k.

· Функция Pos(s1, s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли.

· Процедура Delete(s, p, k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k.

· Процедура Insert(s, s1, p) вставляет в строку s1 подстроку s, начиная с заданной позиции p.

Турбо паскаль позволяет производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str(X: n: d, S) и Val(S, X, e). Первая получает их числа X строку S с изображением этого числа, в которой не менее n символов и из них d знаков после запятой. Параметры n и d необязательные. Вторая процедура получает из строки S число X. При успешном результате e=0.

ПРИМЕР: Работа со строками.

var s, x, y, z: string; begin x: = 'turbo'; y: = 'pascal'; z: = x+' '+y; { z='turbo pascal' } s: = ''; { пустая строка } for c: ='a' to 'z' do s: =s+c; { s='abcd..xyz' } writeln(s); end.





© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.