:: PASCAL :: ТЕОРИЯ  
 

 

Лекция 6

Нестандартные типы данных.

  3. Строковый тип данных.  
  Для общения человека с компьютером необходимы средства работы с символьной информацией. С этой целью в языке Паскаль разработан специальный тип данных, который занимает промежуточное положение между простым (символьным) и структурированным (массив) типами данных. Этот тип называется строковым.  
  Строки в языке Паскаль – это последовательности символов алфавита различной длины и состава. Строковые константы заключаются в апострофы, что позволяет отличать их от идентификаторов, зарезервированных слов и других конструкций языка.  
  Описание строкового типа состоит из ключевого слова string и указания максимальной длины строки. Длина строки – это количество символов, составляющих данную строку (считая пробелы). Если максимальная длина строки не указана, то она принимается равной 255 символам. Описать строковый тип можно одним из двух способов:  
  1) type <имя_типа> = string[<max длина>];  

 

  var <имя_переменной> : <имя_типа>;  
  2) var <имя_переменной> : string[<max длина>];  
  Язык Паскаль позволяет рассматривать строковую переменную как единое целое, с одной стороны, и как набор символьных переменных – с другой. Такой двойственностью и объясняется промежуточное положение строкового типа.  
  Представление строковой переменной в виде набора символьных переменных дает возможность обращения к отдельным символам строковой переменной по их индексу (порядковому номеру в строке), указываемому в квадратных скобках после имени строковой переменной. Первый символ строки соответствует первому порядковому номеру.  
  Пример.  
  stroka = 'Это строковая переменная';  
  for i:=1 to 10 do  
  writeln(stroka[i]);  
  3.1 Операции над строковыми величинами.  
  Над переменными строкового типа определены операции:  
  1) отношения  
  сравнение двух символьных величин происходит посимвольно слева направо в соответствии с их кодами;  

 Например, 'abc'< 'abd'; 'вода' < 'огонь'; '111' < '121'; '99' > '100'

  2) сложения (склеивания, конкатенации)  
  результат данной операции – строка, поэтому ее длина не должна превосходить 255 символов.  

 Например, '12' + '23' = '1223'; 'это ' + 'конкатенация' = 'это конкатенация'

  3.2 Процедуры и функции, определенные для строковых величин.  
  Функции:  
  1) length (<строка>)  

 возвращает число, равное длине строки.
Например, length('В этой фразе двадцать восемь букв' ) = 33

  2) copy (<строка>, <позиция>, <длина>)  

 возвращает строковую величину указанной длины, вырезанную из данной строки с указанной позиции.
Например, copy('прототип',4,3) = 'тот'

  3) pos (<строка1>, <строка2>)  

 возвращает число, равное номеру начальной позиции вхождения первой строки во вторую. Если строка1 не входит в строку2, то возвращается 0.
Например, pos('бас', 'контрабас') = 7; pos('лето', 'котлета') = 0

  Процедуры:  
  1) delete (<строка>, <позиция>, <количество>)  

 удаляет из строки указанное количество символов, начиная с данной позиции
Например, delete('лаванда', 3, 3) = 'лада'

  2) insert (<строка1>, <строка2>, <позиция>)  

вставляет строку1 в строку2, начиная с указанной позиции.
Например, insert('ади', 'стон', 3)

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

Program invertor;
   uses crt;
   type stroke = string[20];
   var str1, str2: stroka; i, len: integer;
Begin
   clrscr;
   readln(str1);
   str2:= '';
   len:=lingth(str1);
   for i:=len downto 1 do   |   for i:=1 to len do
      str2:=str2+str1[i];   |   str2:=str1[i]+str2;
   writeln(str2);
   readln
End.

  2. Составить программу вычисления количества слов в тексте. Слово – это последовательность символов между пробелами.  

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


Program kolich_slov;
   uses crt;
   var s: string; i, ln, k: byte;
Begin
   clrscr;
   readln(s);
   i:=0;
   while i<length(s) do
      begin
      i:=i+1;
      if (s[i] = ' ') and (s[i+1]= ' ') then
      begin
      delete(s,i,1);
      i:=i-1;
      end
      end;
   k:=0;
   ln:=length(s);
   if s[1] = ' ' then delete(s,1,1);
   if s[ln] = ' ' then delete(s,ln,1);
   for i:=1 to ln do
      if s[i] = ' ' then k:=k+1;
   writeln(k+1);
   readln
End.

  3. Составить программу шифрования введенного текста следующим образом: А -> Б, Б->В, В->Г, …, Я->А  

 Program invertor;
   uses crt;
   type stroka=string;
   var s1, s2, s: stroka; i, k, len: integer;
Begin
   clrscr;
   readln(s1);
   len:=length(s1);
   s2:= '
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
   s:= '';
   for i:=1 to len do
   begin
   k:=pos(s1[i],s2);
   if k<>0 then
      if s1[i]<> '
Я' then
         s:=s+s2[k+1]
      else
         s:=s+ '
А'
   else
      s:=s+s1[i]
   end;
   writeln(s);
   readln;
End.

   
::  

::


Rambler's Top100 Крапивна
 

(с)2005-2006 Web studio SEDUVAN

Hosted by uCoz