Материал: Мансуров. Основы программирования в среде Lazarus. 2010

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

3.3Обработка символьной информации в Паскале

____________________________________________________________________

Пример:

program function_str; {$mode objfpc}{$H+} uses

CRT, FileUtil; var

S: string;

X: real;

begin X:=123.565; Str(X:6:2, S);

{теперь S='123.56'}

writeln(S);

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Процедура Val преобразует строковое значение в его численное пред-

ставление.

Описание:

Val(S: string, v, code: integer);

S- исходная строка символов

v- числовая переменная – результат преобразования S code- целая переменная

Если невозможно преобразовать S в число, то после выполнения процеду-

ры Val code 0, если преобразование произошло удачно, то code=0.

Пример:

program function_val;

uses

CRT, FileUtil;

186

Глава 3 Более сложные элементы языка

____________________________________________________________________

var

S: string;

c: integer;

X: real;

begin

S:='234.12';

Val(S, X, c);

writeln(X);

writeln(X:0:2);

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Процедуру удобно использовать для организации контроля при вводе чи-

словых данных. Для этого сначала необходимо вводить числа в символьном формате, затем преобразовывать в число процедурой Val и проверять значение code.

Функция LowerCase преобразует заглавные буквы в строчные (не рабо-

тает с кириллицей). Описание:

LowerCase(const S: String): String;

Функция Uppercase преобразует строчные буквы в заглавные (не рабо-

тает с кириллицей). Описание:

Uppercase (const S: String): String;

Удобнее для этих же целей использовать функции UTF8LowerCase() и

UTF8UpperCase()которые поддерживают кириллицу.

program project1;

187

3.3Обработка символьной информации в Паскале

____________________________________________________________________

{$mode objfpc}{$H+} uses

Crt, FileUtil, LCLProc, LConvEncoding; var

str: string; begin

writeln(UTF8ToConsole('Введите строку')); readln(str);

{$IFDEF WINDOWS}

str:= CP866ToUtf8(str); {$ENDIF}

str:= UTF8UpperCase(str); writeln(UTF8ToConsole('Строка в верхнем регистре: '),

UTF8ToConsole(str)); str:= UTF8LowerCase(str);

writeln(UTF8ToConsole('Строка в нижнем регистре: '), UTF8ToConsole(str));

writeln(UTF8ToConsole('Нажмите любую клавишу'));

readkey;

end.

Рассмотрим вкратце еще несколько функций работы со строками:

CompareStr(const S1, S2: string): Integer — выполняет сравнение двух строк, делая различие между строчными и заглавными буквами;

не учитывает местный язык. Возвращаемое значение меньше нуля, если S1 <

S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

CompareText(const S1, S2: string): Integer — выполняет сравнение двух строк, не делая различий между строчными и заглавными бук-

188

Глава 3 Более сложные элементы языка

____________________________________________________________________

вами; не учитывает местный язык. Возвращаемое значение меньше нуля, если

S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2.

IntToStr(Value: Integer): string — преобразует целое число

Value в строку.

StrToInt(const S: string): Integer — преобразует строку в це-

лое число. Если строка не может быть преобразована в целое число, функция генерирует исключительную ситуацию класса EConvertError (обработка исклю-

чительных ситуаций рассматривается в главе 6).

DateToStr(const DateTime: TDateTime): string — преобразует

числовое значение даты в строку.

StrToDate(const S: string): TDateTime — преобразует строку со значением даты в числовой формат даты и времени.

Trim(const S: string): string — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов.

AnsiToUTF8(const S: string): UTF8String — преобразует стро-

ку в формат UTF-8.

UTF8Decode(const S: UTF8String): WideString — преобразует

строку формата UTF-8 к строке формата Unicode.

UTF8Encode(const WS: WideString): UTF8String — преобразует

строку формата Unicode к строке формата UTF-8.

UTF8ToAnsi(const S: UTF8String): string — преобразует стро-

ку формата UTF-8 к стандартной строке.

189

3.4 Массивы

____________________________________________________________________

3.4.Массивы

Внекоторых случаях приходится сталкиваться с ситуацией, когда должно использоваться относительно много переменных одного типа.

Представим себе программу, которая позволяет вычислить определенные метеорологические данные и в которой всегда будет не меньше 365 перемен-

ных. Таким образом можно присваивать отдельным переменным метеорологи-

ческие данные по отдельным дням всего года.

В принципе сейчас нет никакой проблемы, чтобы объявить тип real у 365

переменных, используя запись.

var day1, day2, day3 и т.д. day365:real;

Однако в Паскале нельзя писать и "т.д.". Нужно перечислить все перемен-

ные. Для этого нужна по крайней мере страница. Если теперь нужно подсчи-

тать среднее арифметическое на один день, то нужно записать:

sred:= (day1 + day2 + и т.д. + day365)/ 365;

и опять как быть с "и т.д."?

Для таких случаев Паскаль предоставляет возможность введения большого числа переменных одного и того же типа, используя простые выражения.

Эта возможность в Паскале реализуется с помощью так называемых мас-

сивов. Используется служебное слово array, которое указывает на ряд пере-

менных одного и того же типа и имеющих одно имя.

Например:

var

day: array[1..365] of real;

С помощью этого описания определяется массив day состоящий из 365

элементов (переменных) вещественного типа. Каждый элемент массива может использоваться как отдельная переменная. Можно записать:

day[1]:= 1.25;

190

Смотрите также:

11 Горм +
113
14
1433
1511
1632
199
204
2N4264RE
3773