28632

Структурный тип - Строка

Лекция

Информатика, кибернетика и программирование

m] of char; где: m максимальная длина строки число диапазона 0 . Строки длины до 255 соответствуют типу string без указания длины строки. Нулевая позиция строки является специальной позицией в которой хранится текущая длина строки код ASCII представляющий длину строки. Доступ к компоненту строки символу строки осуществляется также как к элементу массива т.

Русский

2013-08-20

37 KB

5 чел.

Лекция 11: Структурный тип - Строка.

1. Строка, как специальная форма массива.

2. Основы обработки строк.

3. Примеры элементарных программ обработки строк.

1. Строка, как специальная форма массива.

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

type string[ <m >] = array [0..m] of char;

где:  <m >- максимальная длина строки (число диапазона 0 .. 255).

       string- стандартное имя строкового типа, являющееся ключевым словом.

Строки длины до 255 соответствуют типу string (без указания длины строки).

Нулевая позиция строки является специальной позицией, в которой хранится текущая длина строки (код ASCII, представляющий длину строки). Эта позиция автоматически корректируется при операциях над строками.

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

Например: st[J+1]      {Cимвол в позиции J+1 строки st}

Разрешен доступ, в том числе и к нулевой позиции строки, так что, например ord(st[0]) - длина строки st .

     Замечание

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

2. Основы обработки строк.

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

Поскольку строки указанного типа являются разновидностями массива, для них можно применять всё, что применимо к массивам. Кроме того, для обработки строк в Турбо Паскале предусмотрен ряд достаточно удобных и эффективных средств:

Для строк допустим оператор присваивания вида:

< переменная типа string > := < выражение типа string  или типа char >;

Над строками допустимы отношения сравнения  <,<=,>,>=, =, <>, причём длины сравниваемых строк могут быть различными (меньшая строка при сравнении дополняется справа до выравнивания длин символами chr(0)). Сравнение выполняется посимвольно слева направо по кодам символов таблицы ASCII. Например: 'A' >'1', 'Turbo' < 'TURBO PASCAL'.

К строкам применима операция сцепления строк (конкатенация), обозначаемая символом '+'. Например: 'Это -' + 'строка'   {соответствует 'Это - строка' }.

Стандартные процедуры обработки строк:

Delete(st, Npos, count)      -удаление из строки st, начиная с позиции Npos под-                                  строки длины count .

Insert(subst, st, Npos)       -вставка в строку st подстроки subst с позиции Npos.

Стандартные функции обработки строк:

Length(st)           -длина строки st (без учёта нулевой позиции строки).

Copy(st, Npos, count)        -выделение из строки st подстроки длиной count, на              чиная с позиции Npos.

Pos(subst, st)          -позиция начала первого вхождения подстроки subst в               строку st (если подстрока не найдена, то pos=0).

Основными элементарными задачами обработки строк являются: управление пробелами в строке (удаление лишних пробелов, удаление пробелов в начале или в конце строки, выравнивание длин строк вставкой пробелов и др.), анализ частот символов, либо подстрок, поиск подстрок по заданным критериям (первого вхождения, всех вхождений, по образцу, по шаблону и др.), подстановка подстрок и другие.

3. Примеры элементарных программ обработки строк.

Приведём две такие программы на Турбо Паскале:

              

       program bin_dec; {Перевод двоичного числа в десятичное}

       uses CRT;

       var bin:string; {строка-двоичное число}

             dec:integer; {эквивалентное десятичное число}

              r,j:integer;   

       begin TextBackground(cyan);TextColor(white);ClrScr; window(10,10,50,20);

             TextBackground(green); ClrScr; write(' Введите двоичное число: ');read(bin);

             dec:=0;r:=1;for j:=length(bin) downto 1 do

             begin if (bin[j] <>'0') and  (bin[j] <>'1') then

                   begin writeln('Ошибка ввода');halt end; if bin[j]='1' then dec:=dec + r;r:=r*2

             end;  writeln('Десятичное число: ', dec)

       end {bin_dec}.

program del_blank;{Удаление лишних пробелов между словами в строке}

       uses CRT;

       var str:string; {Вводимая строка}

     c:string;j:byte;

 begin TextBackground(cyan);TextColor(white);ClrScr;

            repeat writeln('Введите  строку:');readln(str);

                 if str='' then writeln('Строка пустая') else

             begin j:=1; if length(str)>1   then  while j<length(str) do

             if (str[j]=' ') and (str[j+1]=' ')  then delete(str,j+1,1) else j:=j+1;

             writeln('Результирующая строка:'); writeln(str);

             end;readln(c);

           until c=' ';

 end{ del_blank}.


 

А также другие работы, которые могут Вас заинтересовать

73823. Проблемы обеспечения устойчивости каналов радиоуправления 48 KB
  Кроме систем связи институт разрабатывает автоматизированные системы управления и средства радио-противодействия как в интересах народного хозяйства так и силовых структур. В современных условиях безопасность страны и её граждан зависит не только от количества и качества ВВП приходящемся на душу населения вооружений которым обладают силовые структуры но и от качества системы управления которая состоит из органов управления командиров пунктов управления технических средств связи и средств автоматизированного управления. Создание АСУ...
73826. Операции над матрицами 1.17 MB
  Элементами матрицы могут являться числа алгебраические символы или математические функции. Например матрицы используется для решения систем алгебраических и дифференциальных уравнений нахождения значений физических величин в квантовой теории шифрования сообщений в Интернете. Строки матрицы нумеруются сверху вниз а столбцы – слева направо.
73827. Системы уравнений в линейной алгебре 467.5 KB
  Если это определение озвучить в терминах определителей то оно будет выглядеть примерно так: Матрица размера m×n имеет ранг r если существует хотя бы один отличный от нуля определитель rго порядка тогда как определитель любой подматрицы более высокого порядка равен нулю. Для вычисления ранга матрицы можно использовать метод элементарных преобразований строк и столбцов – в точности тот самый метод который применяется для вычисления определителей. Целью элементарных преобразований является приведение матрицы к...
73828. Модель затраты- выпуск (модель В. Леонтьева) 121 KB
  Либо не весь объём производства расходуется на потребление и его достаточно для расширения производства тех видов продукции на которые имеется растущий спрос либо объём производства недостаточен для воспроизводства трудового ресурса на постоянном уровне. Свойство наличия баланса состоит как раз в том что полные объёмы всей продукции складываются только из объёмов её конечного потребления и объёмов потребления продукции в производственных процессах межотраслевых потоков. Примером такой взаимосвязи может служить например потребление с х...
73829. Комплексные числа 388 KB
  Определение комплексного числа. Первая компонента комплексного числа действительное число называется действительной частью числа это обозначается так; вторая компонента действительное число называется мнимой частью числа. Два комплексных числа и равны тогда и только тогда когда равны их действительные и мнимые части.
73830. Многочлены -ой степени 536.5 KB
  Многочленом ой степени называется функция где постоянные комплексные числа коэффициенты многочлена комплексная переменная. Число в котором многочлен принимает нулевое значение называется корнем многочлена. Представим в виде многочлена по степеням. Очевидно отсюда следует утверждение: для того чтобы число было корнем многочлена необходимо и достаточно чтобы коэффициент при нулевой степени в разложении по степеням был равен нулю: .
73831. Линейные пространства 451.5 KB
  Обозначим множества векторов направленных отрезков на прямой на плоскости в пространстве соответственно с обычными операциями сложения векторов и умножения векторов на число. Вместо свободных векторов можно рассмотреть соответствующие множества радиус-векторов. Например множество векторов на плоскости имеющих общее начало т. Множество радиус-векторов единичной длины не образует линейное пространство так как для любого из этих векторов сумма не принадлежит рассматриваемому множеству.