Программирование. Строки и символы в PascalABC.net


Программирование. Строки и символы в PascalABC.net Автор: Комкова М.С. Учитель ИКТ, гимназия МИИТ, г. Москва Описание переменных: Строки в Паскале – это данные типа string. var s: string; s1: string[9]; s2: shortstring; // синоним string[255]Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки. Примеры описания строк: var s: string; s1: string[9]; s2: shortstring; begin s := 'PascalABC.NET'; writeln(s,' ',s.Length); SetLength(s,20); writeln(s,' ',s.Length); s1 := s; writeln(s1,' ',s1.Length); end. Символ строки К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:…s1[3] := 'h'; writeln (s2[3] + 'r'); Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:…writeln(ord(st[0])); Процедуры и функции для работы со строками Функция Concat (s1, s2, ..., sn) возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len. Процедуры и функции для работы со строками Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s. Строки и массивы символов array of char рассматриваться как строка постоянной длины  Вставка подстроки Задача: Вставить в заданную позицию строки другую строку. var s1,s2: string; i: byte;Beginwrite(‘Программа для вставки в заданную позицию строки другую строку');write(‘Введите первый текст: ');readln(s1);write(‘Введите второй текст: ');readln(s2);write(‘Введите номер позиции, в которую надо вставить второй текст: ');readln(i);insert(s2,s1,i);writeln(s1);end. Замена подстроки в строке var s,s_old,s_new: string; i,l_old: byte;begin write(‘Ведите текст: '); readln(s); write(‘Что заменить?'); readln(s_old); l_old := length(s_old); write(‘ Чем заменить? '); readln(s_new); i := pos(s_old,s); delete(s,i,l_old); insert(s_new,s,i); writeln(s);readlnend. Задача: Найти в строке определенную последовательность символов и заменить ее другой. Копирование части строки Задача: Скопировать часть строки с определенной позиции и определенной длины в другую строку. var s1,s2: string; n,len: byte;begin write('Введите текст: '); readln(s1); write('Введите номер позиции, с которой будет копироваться строка: '); read(n); write(‘Введите длину копируемой части: '); readln(len); s2 := copy(s1,n,len); writeln('Ты скопировал: ',s2);readln;end. Удалить пробелы между первым и вторым вопросительным знаком var str: string; q1, q2, l, i: byte; begin readln(str); l := length(str); q1 := 0; q2 := 0; for i:=1 to l do if str[i] = '?' then begin q1 := i; break; end; for i:=q1+1 to l do if str[i] = '?' then begin q2 := i; break; end; if (q1 <> 0) and (q2 <> 0) then begin q1 := q1 + 1; while q1 < q2 do if str[q1] = ' ' then begin delete(str,q1,1); q2 := q2-1; end else q1 := q1 + 1; writeln(str); end; end. Задача: Во введенной строке удалить пробелы между первым и вторым вопросительным знаком. Задача Дана непустая строка S и целое число N (>0). Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка). Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз Задача program m2; var s:String; i,j,n,k:Integer; f:Boolean; begin Writeln('Введите строку:'); Readln(s); n:=Length(s); for i:=1 to n do begin f:=True; for j:=1 to n do if (i<>j) and (s[i]=s[j]) then f:=False; if f and (k=0) then Writeln('Символы,которые встречаются в строке один раз:'); if f then begin Write(s[i],' '); inc(k); end; end; if k=0 then Writeln('В строке нет символов которые встречаются всего один раз.'); Readln; end. Источники http://templated.ru/ingeneriya/117-informacionnye-tehnologii.htmlhttp://pascalabc.net/wiki/index.php?title=Строки_и_символы._Тексты_программhttp://www.cyberforum.ru/pascalabc-net/thread1266946.htmlhttp://pas1.ru/book/export/html/300http://programmado.ru/55-stroki-v-paskale-tip-string.htmlhttp://mojainformatika.ru/paskal/uroki-paskal-stroki/116-stroki-v-paskal.htmlhttp://nschool.by/text.php?cat=library&textid=10