8 ЖОЛДЫҚ АЙНЫМАЛЫЛАР
8.1 Символдық тип
Бағдарламалауда символдарды, сөздерді, сөйлемдерді, мәтіндерді өңдеумен байланысты көптеген есептер класы бар.
Осы мақсатта көптеген бағдарламалау тілдеріне символдармен және мәтіндермен, яғни char және string типтерімен жұмыс істейтін арнайы құралдар қосылған.
C# тілінде осы типтердің екеуі де бар. Олардың арасында тығыз байланыстың барын айта кету керек.
Кейбір авторлар char типіндегі айнымалы бір символдан тұратын жол деп есептейді. Басқа авторлар жолдық типтегі айнымалыларды char типіндегі айнымалылар массиві ретінде қарастырады.
C# тілінде символдармен жұмыс жасауға арналған арнайы char класы қолданылады, онда символдарды көрсетудің екі байттық жүйесі және осы символдармен жұмыс жасаудың көптеген әдістер жиыны қолданылады.
Символдарды көрсетудің екі байттық жүйесі Unicode кодтамасы деген атқа ие болды. Windows тобындағы ОЖ-де 2 байтты UTF-16LE кодтамасы қабылданған.
Барлық символдар топтастырылған және реттелген. Мысалы, 0 мен 9 арасындағы сандардың екілік кодтары өсу тәртібінде, қатарынан орналасқан. Алфавиттің a және z арасындағы үлкен және кіші әріптері де өсу тәртібінде, қатарынан орналасқан. Кириллицада қолданылатын "Ё" әрпі ғана өзгеше сипатталады.
Символдарды кодтаудың осы ерекшелігі мәтіндерді өңдеудің түрлі алгоритмдерін оңай құруға мүмкіндік береді, мысалы, алфавит бойынша сөздерді реттеу.
Unicode кодтамасымен берілетін алфавитте 65000 аса символдар бар болғандықтан, кодтардың көбі резервте сақталады және қолданылмайды.
Char класында апострофқа алынған символдармен берілген символды тұрақтылар және басқарушы символдар мен Unicode-тізбегі анықталған.
Бағдарламада символдарды қолдану үшін олар апострофқа алынады. Escape-тізбегінің коды ақпаратты экранға, принтерге, басқа да құрылғыларға шығару үшін пішімдеуді қолданады. Ол бір немесе бірнеше символдан тұрады, оның алдында кері слеш (\) жазылады.
Символды көрсету Unicode–тізбегінде кодтың көмегімен орындалады.
8.1-кестеде кейбір escape-тізбегі көрсетілген.
8.1-кесте – C# тіліндегі кейбір escape-тізбегінің мысалдары
\n
|
Жаңа жол символы
|
\t
|
Көлденең табуляция
|
\v
|
Вертикаль табуляция
|
\b
|
Бір позицияға шегіну символы
|
\r
|
Күймешені қайтару
|
\f
|
Бетті ауыстыру
|
\a
|
Дыбыстық сигнал (ескерту)
|
\\
|
Кері слеш символы
|
\'
|
Бір тырнақша символы
|
\"
|
Қос тырнақша символы
|
\?
|
Сұрақ белгісі символы
|
\0
|
Нөлдік символ (барлық биттер нөлге тең)
|
Ескерту, мәтін ішінде escape-тізбегін қарапайым символдар сияқты қолдануға болады.
Char класында символдармен жұмыс жасау үшін әдістердің үлкен жиыны бар. Көптеген әдістер статикалық болып келеді және объекттерді құруды қажет етпейді. Кейбір әдістер 8.2-кестеде көрсетілген.
8.2-кесте – кейбір char класының статикалық әдістері
Әдістер
|
Сипаттамасы
|
Double GetNumericValue(char c);
|
Символдың сандық кодын қайтарады. Егер символ болмаса, онда -1 қайтарылады.
|
UnicodeCategory GetUnicodeCategory (char c);
|
Барлық символдар категорияға бөлінген, сондықтан әдіс символ категориясын қайтарады.
|
bool IsControl(char c);
|
Егер с символы басқарушы болса, онда ол true мәнін қайтарады.
|
bool IsDigit(char c);
|
Егер с символы цифр болса, онда ол true мәнін қайтарады.
|
bool IsLetter(char c);
|
Егер с символы әріп болса, онда ол true мәнін қайтарады.
|
bool IsLetterOrDigit(char c);
|
Егер с символы цифр немесе әріп болса, онда ол true мәнін қайтарады.
|
bool IsLower(char c);
|
Егер с символы кіші әріп болса, онда ол true мәнін қайтарады.
|
bool IsNumber(char c);
|
Егер с символы сан болса, онда ол true мәнін қайтарады.
|
bool IsPunctuation(char c);
|
Егер с символы тыныс белгілерінің символы болса, онда ол true мәнін қайтарады.
|
bool IsSeparator(char c);
|
Егер с символы бөлгіштерге жатса, онда true мәні қайтарылады.
|
bool IsSurrogate(char c);
|
Егер с символы құрастырылған болса, онда true мәні қайтарылады.
|
bool IsSymbol(char c);
|
Егер с символ болса, онда true мәні қайтарылады.
|
bool IsUpper(char c);
|
Егер с символы бас әріп болса, онда true мәні қайтарылады.
|
bool IsWhiteSpace(char c);
|
Егер с символы бос орын болса, онда true мәні қайтарылады.
|
char ToLower(char c);
|
с символын кіші әріпке ауыстырады
|
String ToString(char c);
|
с символын жолға ауыстырады
|
char ToUpper(char c);
|
с символын бас әріпке ауыстырады
|
GetUnicodeCategory() әдісі char класына сәйкес (UnicodeCategory) категориясының бір мәнін қайтарады. Кейбір категориялардың сипаттамасы 8.3-кестеде көрсетілген.
8.3-кесте – Char класының символдар категориялары (UnicodeCategory).
Категория атауы
|
Символдың сипаттамасы
|
|
ClosePunctuation
|
Фигуралық, квадрат, дөңгелек жақша сияқты жұп символдарға арналған жабушы символ
|
|
Control
|
Басқарушы символ
|
|
CurrencySymbol
|
Ақша бірлігінің символы
|
|
DashPuntuation
|
Сызықшалар (тире, дефис)
|
|
DecimalDigitNumber
|
ондық сан
|
|
EnclosingMark
|
жабушы маркер
|
|
FinalQuotePunctuation
|
Дәйексөздің жабушы маркері (мысалы, жабушы тырнақша)
|
|
Format
|
Пішімдеуші символ
|
|
InitialQuotePunctuation
|
Дәйексөздің ашушы маркері
|
|
LetterNumber
|
Әріптік сан (мысалы, рим цифры)
|
|
LineSeparator
|
Жолдарды бөлгіш
|
|
LowerCaseLetter
|
Кіші әріптер
|
|
MathSymbol
|
Математикалық символ
|
|
ModifierLetter
|
Символ алдынғы символдың модификаторы болып келеді
|
|
NonSpacingMark
|
Негізгі символды өзгертетін, бос орыннан өзге символ.
|
|
OpenPunctuation
|
Ашылатын жақшаны көрсететін символ (фигуралық, квадратты, дөңгелек)
|
OtherLetter
|
Әріп, бірақ кіші, үлкен әріптер емес.
|
OtherNotAssigned
|
Бұл символ Unicode-символы емес
|
OtherNumber
|
Ондық немесе әріптік емес сандық символ (мысалы, бөлшектің символы)
|
OtherPunctuation
|
Фигуралық, квадрат, дөңгелек жақша сияқты жұп символдарға арналған ашушы символ
|
OtherSymbol
|
Математикалық емес символ, ағымдағы символ немесе өзгертуші символы
|
ParagraphSeparator
|
Азат жолды бөлушісі
|
PrivateUse
|
Жиі қолданылатын символ (private-use)
|
SpaceSeparator
|
Пішімдеуші немесе басқарушы символ емес бөлуші
|
SpacingCombiningMark
|
Символды таңбалау орнының енін өзгертуші символ
|
TitlecaseLetter
|
Мәтіннің ең бірінші бас әрпі (азат жол маркері)
|
UpercaseLetter
|
Бас әріп
|
Айнымалылар мен char класына тиісті кейбір әдістер қолданылған мысалда алфавит символдарының Unicode кодына және керісінше түрлендірудің нұсқалары қарастырылған. Char класының кейбір әдістерін бас әріптерді кіші әріптерге ауыстыру үшін түрлендіру. Символ бойынша оның категориясының тұрақтысы.
Бағдарлама код:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{ char i;
int a1, a2;
for (i = 'a'; i <= 'z'; i++)
{ Console.Write("{0}-", i);
Console.Write("{0} ", (int)i);
}
Console.WriteLine();
Console.WriteLine();
a1 = (int)'А';
a2 = (int)'Я';
for (int j = a1; j <= a2; j++)
{
Console.Write("{0}-", j);
Console.Write("{0} ", (char)j);
}
Console.WriteLine();
Console.WriteLine();
for (i = 'А'; i <= 'Я'; i++)
{
Console.Write("{0}-", char.ToLower(i));
Console.Write("{0} ", (int)char.ToLower(i));
}
Console.WriteLine("\n\n");
System.Globalization.UnicodeCategory cat1, cat2;
cat1 = char.GetUnicodeCategory('A');
cat2 = char.GetUnicodeCategory(';');
Console.WriteLine("'A' - category {0}", cat1);
Console.WriteLine("';' - category {0}", cat2);
Console.WriteLine("'4' - category {0}", char.GetUnicodeCategory('4'));
Console.WriteLine("'+' - category {0}", char.GetUnicodeCategory('+'));
Console.WriteLine();
Console.WriteLine("Enter pernesin basiniz");
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
a-97 b-98 c-99 d-100 e-101 f-102 g-103 h-104 i-105 j-106 k-107 l-108 m-109 n-110 o-111 p-112 q-113 r-114 s-115 t-116 u-117 v-118 w-119 x-120 y-121 z-122
1040-А 1041-Б 1042-В 1043-Г 1044-Д 1045-Е 1046-Ж 1047-З 1048-И 1049-Й 1050-К 1051-Л 1052-М 1053-Н 1054-О 1055-П 1056-Р 1057-С 1058-Т 1059-У 1060-Ф 1061-Х 1062-Ц 1063-Ч 1064-Ш 1065-Щ 1066-Ъ 1067-Ы 1068-Ь 1069-Э 1070-Ю 1071-Я
а-1072 б-1073 в-1074 г-1075 д-1076 е-1077 ж-1078 з-1079 и-1080 й-1081 к-1082 л-1083 м-1084 н-1085 о-1086 п-1087 р-1088 с-1089 т-1090 у-1091 ф-1092 х-1093 ц-1094 ч-1095 ш-1096 щ-1097 ъ-1098 ы-1099 ь-1100 э-1101 ю-1102 я-1103
'A' - category UppercaseLetter
';' - category OtherPunctuation
'4' - category DecimalDigitNumber
'+' - category MathSymbol
Enter pernesin basiniz
Достарыңызбен бөлісу: |