Отдельными символами




Скачать 75.71 Kb.
Дата02.03.2016
Размер75.71 Kb.




Лекция 7

7.0. Символы и строки

ПК может обрабатывать не только числовую информацию, но и символьную. Символьная информация может быть представлена:


  • Отдельными символами

  • Строками

7.1. Символы

Для хранения и обработки отдельных символов используются переменные типа AnsiChar и WideChar.

Тип AnsiChar (американский стандарт) представляет собой набор ANSI-символов, в котором каждый символ кодируется 8-разрядным двоичным числом (байтом).

Тип WideChar (международный стандарт) представляет собой набор символов в кодировке Unicode, в котором каждый символ кодируется 16-разрядным двоичным числом (2 байтами).

Для обеспечения совместимости с предыдущими версиями Delphi и Borland Pascal поддерживается тип Char, эквивалентный AnsiChar.

К символам относятся:



  • Буквы русского и латинского алфавитов;

  • Цифры;

  • Знаки препинания;

  • Специальные символы (пробел, -“новая строка”);

Объявление символьных переменных:

<Имя переменной>: Char;

Например:



var

sim:char; // Символьная переменная



const

s= ' х '; // Символьная константа

Символьная переменная может получить значение в программе в результате выполнения операции присвоения.

Например:



var

C, S :char; // переменные



. . . . . . . .

С:= ' * ' ; // переменной С присваивается значение *

S := ' a '; // переменной S присваивается значение a

. . . . . . . .



Задача1. Выполняет программу диалога:

program Example1;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

s: char;



begin

writeln('Vy hotite nauchitcy programmirovaty?');

readln(s); //Вы хотите научиться программировать?

writeln('Vash otvet:' , s); readln



end.

Рекомендации при решении задач:



  • Каждому символу соответствует число – код символа;

  • Переменную типа Char можно сравнивать с другой переменной типа Char или символьной константой, причем ' 0 ' < ' 1' <…' 9 ' < 'A' < ' B ' <…<' Z ' < ' a ' < ' b ' <… < ' z '

  • Символам русского алфавита соответствуют числа большие, чем символам латинского алфавита, при этом 'A' < ' Б ' <…<' Ю ' <' Я ' < ' a ' < ' б ' <… < ' ю ' < ' я '

  • В тексте программы вместо символа можно указать его код, подставив перед числом #. Обычно этот способ записи используют для служебных символов.

Например: S1:= #13; //образование новой строки ()

S2:= #32; //образование «пробела»

вместо константы 'А' можно записать #192;


Например:

С := Chr(46); // переменной С присвоено значение «точка»



  • Функция Ord() позволяет определить код символа, который передается ей в качестве параметра.

Например:

K := Ord (' * '); // переменная K будет содержать число 42 – код символа «*».


Задача2. Написать программу, которая выдает код символа, введенного с клавиатуры.





program Example2;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

sim:char;

code:integer;

begin

writeln('Vvedite simvol i nazmite ');

//Введите символ и нажмите

writeln('Dly zavershen program vvedite .');

//Для завершения программы введите .”

repeat

write(' > ');

readln(sim);

code:=Ord(sim);

writeln(' Simvol : ',sim);

writeln(' Code simvola : ',code);



until sim= ' . ';

readln


end.

7.2. Строки

Последовательность символов произвольной длины называется строкой. Для обработки и хранения символов можно использовать массив символов или переменные типа String

Строки могут быть представлены следующими типами: ShortString, LongString, WideString.

Переменной типа ShortString память выделяется до начала выполнения программы, и количество символов такой строки не может превышать 255.

Переменным типа LongString, WideString память выделяется во время работы программы, поэтому длина таких строк практически не ограничена.

Для обеспечения совместимости с предыдущими версиями Delphi и Borland Pascal поддерживается тип String, эквивалентный типу ShortString.

Объявление строковых переменных:



<Имя переменной>: String;

или


<Имя переменной>: String[n];

где n – размер строки (от1 до 255).

Строковая переменная может получить значение в программе в результате выполнения операции присвоения.

Например:



var

Parol :string; // длина строки до 255 символов

S :string[10]; // длина строки до 10 символов

const

a=' Many ';



. . . . . . . .

S:= ' Mart ' ; // переменной S присваивается значение Март

Parol := ' Secret ' ;

. . . . . . . .

Результат выполнения строкового выражения является строка символов.

Для строк применимы операции:


  • конкатенация (добавление к первой строке второй) // Сцепление строк

  • сравнение. // Какой код строки длиннее

Задача3. Объединение (конкатенация) двух строк.

program Example3;

{


  • Код 32 – клавиши пробел

  • Код 13 – клавиши Enter

  • Код 46 – клавиши точка
$APPTYPE CONSOLE}

uses

SysUtils;



var

S, Str, Str1, Str2:string[20];



begin

Str1:='Delphi ';

Str2:='2005';

Str:=Str1 + #32 + Str2 + chr(46); // Delphi 2005.

S:= Concat(Str1, #32, Str2, #46); // Функция объединения

Writeln(Str); // или Writeln(S);

Readln

end.

Задача4. Сравнить содержимое двух строк
program Example4;

{$APPTYPE CONSOLE}



uses

SysUtils;

var

Str1, Str2:string[50];



begin

Writeln ('Vvedite 1 stroky');

Readln (Str1);

Writeln ('Vvedite 2 stroky');

Readln (Str2);

If Str1 > Str2 Then Writeln ('1 stroka dlinnee')

Else

If Str1 < Str2 Then Writeln('1 stroka koroche')

Else Writeln(' 1 i 2 stroki ravnye');

Writeln ('Str1=', Str1, ' Str2=', Str2);

Readln

end.

Переменную типа String можно сравнивать с другой переменной типа String или со строковой константой.

Строки сравниваются посимвольно, начиная с 1 символа:


  • Если все символы сравниваемых строк одинаковые, то такие строки считаются равными;

  • Если в одинаковых позициях строк находятся разные символы, большей считается та, у которой в этой позиции находится символ с большим кодом.

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

Например, s[ i ], где i – номер символа строки s.

Например,



Строка 1

Строка 2

Результат сравнения

Иванов

Иванов

Строки равные

васильев

Васильев

Строка1 > Строки2

Алексеев

Петрова

Строка1 < Строки2

Код В=194, а в=231

А=192, л=235, е=229, к=234, с=241,

П=207, т=242, р=240, о=238, в=226
7.3. Строковые функции и процедуры

I. Функция Length(Строка) возвращает длину строки.

Значением функции Length(S) является количество символов, из которых состоит строка S. У этой функции один параметр – выражение строкового типа

Например, n:= length ('Самара');

m:= length ('Кировский проспект');

Значение переменных n и m будет равно 6 и 18 соответственно.

II. Функция Concat ( строка1, строка2, . . . , строкаN) возвращает строку, являющуюся объединением строк, указанных при вызове функции. У этой функции может быть несколько параметров – выражения строкового типа по количеству объединяемых строк.

Например, S:= Concat(n, #46, #32, m, #46);

Значение переменной S  Самара. Кировский проспект.

III. Функция Pos(Подстрока, Строка) позволяет определить положение подстроки в строке, где Подстрока – строковая переменная ( или строковая константа), которую надо найти в строковой переменной Строка.

Например,

p:=pos('Пе', 'Санкт-Петербург');

Значение переменной p будет равно 7. Если в строке р нет искомой подстроки, то значение функции pos будет равно 0.

IV. Функция Copy(Строка, p, n) позволяет выделить фрагмент строки. Здесь Строка – выражение строкового типа, содержащее строку, фрагмент которой надо получить, p - номер первого символа, с которого начинается выделяемая подстрока, n - длина выделяемой подстроки.

Например,

st:= ' Инженер Иванов ';

fam:=сopy(st,9,6);

Значением переменной fam будет строка ' Иванов ' – 9 позиция строки st, с которой выделяется подстрока Иванов из 6 символов из строки st.

V. Функция Chr(Код) возвращает символ с указанным кодом

Например, Chr(192) вернет символ – букву A

Chr(46) вернет символ – « . » (точку)

VI. Процедура delete(Строка, p, n) позволяет удалить часть строки. Здесь Строка – переменная строкового типа, p – номер символа, с которого начинается удаляемая подстрока, n – длина удаляемой подстроки.

Например,

s:= ' Город Санкт-Петербург '



delete(s, 7, 6);

Значением переменной s будет строка ' Город Петербург ' – где из строки s начиная с 7 позиции удалена подстрока Санкт- состоящая из 6 символов.

VII. Процедура insert(Подстрока, Строка, p) позволяет вставить часть подстроки в строку, где Подстрока - строковая переменная, которую надо вставить в строковую переменную Строка начиная с позиции p.

Например,

S:= ' Санкт- ';

Insert(S, ' Петербург ', 1);

Значением переменной S будет строка ' Санкт-Петербург '



Задача5. Удаление начальных пробелов строки, введенной с клавиатуры.

program Example5;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

st: string[50];



begin

writeln (' Vvedite stroky ');

readln (st);

while (pos(' ', st)=1) and (length(st)>0) do delete(st,1,1);

writeln('stroka bez nachalnyh probelov:', st);

readln // вывод cтроки без начальных пробелов

end.

Необходимость проверки условия length(st)>0 объясняется возможностью того, что введенная строка состоит только из пробелов.

VIII. Процедура Val(Строка, Число, Код) позволяет преобразовать изображение числа в соответствующий ему код-число, где Строка –строковая переменная, содержащая изображение числа, Число – переменная целого или дробного типа, которой должно быть присвоено значение, изображенное Строкой, Код – возвращаемое процедурой целое число (или код ошибки). Возвращается код результата операции, если операция выполнена успешно, в противном случае возвращается 0.

IX. Процедура Str(X [: ВсегоСимволов [: ДробнаяЧасть ] ]; var Строка: string) выполняет преобразование числового выражения X в его строковое представление S (Строка). ВсегоСимволов и ДробнаяЧасть – необязательные выражения целого типа, которые задают общее количество символов дробной части в изображении числа.



Задача6. Вычисления со строковыми переменными

program Example6;

{$APPTYPE CONSOLE}



uses

SysUtils;



var

S1, S2, S :string[50];

code, X1, X2, Y :integer;

begin

Writeln ('Vvedite 1 stroky');

Readln (S1);

Writeln ('Vvedite 2 stroky');

Readln (S2);

Val(S1, X1,Code); // Преобразование 1-й строки в цифру Х1

Val(S2, X2,Code); // Преобразование 2-й строки в цифру Х2

Y:=X1*X2; // Арифметические действия

Writeln('Y=',Y);

Str(Y:6,S); // Вывод результата в виде строки S

Writeln('Rezalt: ',S);

readln


end.


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница