Система программирования Turbo Pascal

           

Программа вводит произвольную текстовую строку,



Program CharsConvert;
{ Программа вводит произвольную текстовую строку, преобразует все входящие в нее буквы в прописные и печатает результат преобразования}
PROCEDURE UpString(sl : String; var s2 : String);
{Эта процедура преобразует буквы входной строки si в прописные буквы латинского или русского алфавита и помещает результат преобразования в выходную строку s2. Используется предположение о том, что последовательности латинских букв от «а» до «z» и русских букв. от «а» до «п» и от «р» до «я», а также последовательности соответствующих им прописных букв образуют непрерывные массивы}  
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). В левой части оператора присваивания в этом случае указывается имя функции.

Содержание раздела