Иллюстрированный самоучитель по Tirbo Pascal


Процедуры и функции - часть 6


var

i: Integer; {Счетчик цикла преобразования} 

с: Char; {Рабочая переменная преобразования} 

begin {UpString}

s2 :=' ' ; {Вначале выходная строка пуста} 

{Цикл посимвольного анализа исходной строки}  

for i := 1 to Length(s1) do 

begin

{Берем из входной строки очередной символ}  

с := s1[i] ;

{Проверяем символ на принадлежность к одному из трех подмассивов}  

if (с >= 'a') and (с <= 'z') then

с := chr(ord('А')+ord(c)-ord('a')) {A,a - латинские!} 

else if (c >= 'a') and (c <= 'n') then

с := chr(ord('A')+ord(c)-ord('a')) {A,a -русские!} 

else if (c >= 'p') and (с <= 'я') then

с := chr(ord('P')+ord(c)-ord('p')); 

s2 := s2+c 

end 

end; {UpString}

var

Sinp, Sout : String; {Исходная и преобразованная строки}

begin {Начало основной (вызывающей) программы} 

Write('Введите строку: ');

ReadLn(Sinp); {Вводим исходную строку} 

UpString(Sinp,Sout); {Преобразуем ее к прописным буквам} 

WriteLn(' Результат: ',Sout) {Печатаем результат}

end. {Конец вызывающей программы}

Рассмотрим иной способ реализации той же программы: оформим алгоритм преобразования в виде функции. Кроме того, с помощью стандартной функции UPCASE преобразуем каждый очередной символ (это преобразование осуществляется только для букв латинского алфавита) и тем самым исключим проверку принадлежности символа к строчным латинским буквам:

Function UpString(s1: String): String;

var

i : Integer; с : Char;

s2: String; {Результат преобразования} 

begin {UpString}

s2 := ' ';

for i := 1 to Length(si) do 

begin

{Получаем и преобразуем очередной символ}

с := UpCase(si [i]);

if (с >= 'a') and (с <= 'п') then

с := chr(ord('A')+orcKcJ-ord('a')) 

else

if (c >= 'p') and (с <= 'я') then

с := chr(ord('P')+ord(c)-ord('p'));

 s2 := s2+c 

end;

UpString := s2 {Присваиваем значение функции UpString} 

end; {UpString}

var

Sinp: String; 

begin {Начало основной программы}

Write('Введите строку: ') ;

ReadLn(Sinp);

WriteLn(' Результат: ',UpString(Sinp))

 end. {Конец основной программы}

Программа получилась несколько проще за счет того, что функцию можно использовать в качестве параметра обращения к другой процедуре (в нашем случае к WriteLn). Обратите внимание: в теле любой функции нужно осуществить присваивание ей вычисленного значения (см. оператор UpString := s2). В левой части оператора присваивания в этом случае указывается имя функции.

 




Начало  Назад  Вперед



Книжный магазин