русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Процедури і функції типу String.


Дата додавання: 2014-11-27; переглядів: 800.


Над рядками визначена операція конкатенації “+”, результат якої - рядок, в якому операнди з’єднанні в порядку їх слідування у виразі. Наприклад:

'Turbo' + 'Pascal' = 'TurboPascal';

'Turbo_' + 'Pascal ' + 'System' = 'Turbo_Pascal System';

Тому результатом виконання серії операторів

X := ' Приклад';

У := ' додавання ';

Z := ' рядків' ;

Writeln(X + Y + Z);

Writeln(Y + ' ' + Z + ' ' + X)

будуть виведені на екран рядки

Прикладдодаваннярядків

додавання рядків Приклад

 

Тип String допускає і пустий рядок - рядок, який не містить символів: EmptyStr := '' {лапки, що йдуть підряд}. Вона грає роль нуля (нейтрального елемента) операції конкатена­ції: EmptyStr + X = X + EmptyStr = X

Над рядками визначені також відношення (операції логічного типу)

" = ", " <> ", " < ", " > ", " <= ", " >= ".

Таким чином, кожний із рядкових типів упорядкований, причому лексикографічно. Це означає, що

а) порядок на рядках погоджений з порядком, заданим на символьному типі (Char);

б) порівняння двох рядків здійснюється посимвольно, починаючи з перших символів;

в) якщо рядок А є початком рядка В, то А < В;

г) пустий рядок - найменший елемент типу.

 

Наприклад:

а) 'с' < 'k', так як Ord(‘c’) < Ord(‘k’);

б) 'abс' < 'abk', так як перші два символи рядків співпадають, а порівняння третіх дає Ord(‘c’) < Ord(‘k’);

в) 'abс' < 'abkd', так як перші два символи рядків співпадають, а порівняння третіх дає Ord(‘c’) < Ord(k);

г) 'ab' < 'abсd', так як рядок 'ab'- початок рядка 'abсd'.

На рядковому типі даних визначені:

 

Функції:

a) Length(X: String): Byte; - довжина рядка X; { Length(EmptyStr) = 0 }

б) Pos(Y:String; X:String):Byte; - позиція першого символу першого зліва входження підрядка Y у рядок X. Якщо X не містить Y, Pos(Y, X) = 0.

в) Copy(X:String; Index, Count: Integer):String - підрядок рядка X, що починається з пози­ції Index і містить Count символів.

г) Concat(X1, X2, .., Xk: String): String; - конкатенація рядків Х1, X2, .., Xk. Інша форма запису суми X1+X2+ .. +Xk.

 

Процедури:

д) Delete(var X: String; Index, Count: Integer); З рядка X видаляється Сount символів, починаючи з позиції Index. Результат поміщується в змінну X.

e) Insert(Y:string; var X: String; Index: Integer); В строку X вставляється рядок Y, причому вставка здійснюється починаючи з позиції Index.

Стандартні процедури введення-виведення Паскаля розширені для введення-виведення рядків. Відмітимо, однак, що для введення декількох рядкових даних треба користуватись оператором Readln. Оператор Read у цих випадках може вести себе непередбачено.

Приклад 11.7. Дано масив A[1..n] of string[20]. Скласти програму заміни всіх перших входжень підрядка L в A[i] на підрядок R. Рядки L і R вводяться з клавіатури в виді рівності L = R. Результат замін відобразити у масив, елементи якого - рівності виду:

A[i]=результат заміни L на R в A[i].

Program RewriteArray;

Const

n = 100;

Single = 20;

Double = 41;

Type

Sitem = string[Single];

Ditem = string[Double];

SWordArray = array[1..n] of Sitem;

DWordArray = array[1..n] of Ditem;

Var

A: SWordArray;

B: DWordArray;

L, R: Sitem;

X : Sitem;

i, Index : Integer;

 

Procedure InpWord(var U, V : Sitem);

Var

X : Ditem;

j : Integer;

Begin

Writeln('________ Введення рівності L = R __________');

Read(X); j := Pos('=', X);

U := Copy(X, 1, j - 1);

V := Copy(X, j + 1, Length(X))

End;

 

Procedure InpArray;

begin

Writeln('====== Введення масиву слів ======');

For i:=1 to n do Readln(A[i])

end;

 

Procedure OutArray;

begin

Writeln('====== Виведення масиву слів ====');

For i:=1 to n do Writeln(B[i])

end;

 

Begin

InpArray; {введення масиву слів з клавіатури}

InpWord(L, R); {введення і аналіз рівності L = R}

For i := 1 to n do begin

X := A[i];

Index := Pos(L, X);

If Index <> 0

then begin

Delete(X, Index, Length(L));

Insert(R, X, Index)

end;

B[i] := A[i] + '=' + X

end;

OutArray; {виведення масиву слів до друку}

End.

 

11.7. Файли. Управління файлами

Програма, яка написана мовою Pascal, повинна якимось чином обмінюватись даними з зовнішніми пристроями ( отримувати дані з клавіатури, магнітного диска, виводити дані на екран, принтер і т.д.) Для роботи з зовнішніми пристроями використовуються файли. Файли - це значення файлового типу даних - ще одного стандартного складного типу в мові.

(Послідовний) файл – це послідовність однотипних компонент, яка має ознаку кінця і оброблюється послідовно – від початку до кінця.

Порядок компонент визначається самою послідовністю, подібно до того, як порядок слідування чергового кадру кінофільму визначається його розташуванням на кіноплівці. У будь-який момент часу доступний тільки один елемент файла (кадр кінофільму). Інші компоненти доступні тільки шляхом послідовного просування по файлу.

У результаті виконання програми відбувається перетворення одного текстового файла (який називається Input) в інший текстовий файл (який називається Output). Обидва ці файли є стандартними і використовуються для введення /виведення даних.

Над файлами можна виконувати два явних виду дій:

Перегляд (читання) файла.

Створення (запис) файла - виконується шляхом приєднання нових компонент у кінець початково порожнього файла.

Файли, з якими працює програма, повинні бути описані в програмі. Частина файлів (що представляють собою фізичні пристрої ) має в операційній системі стандартні імена. Наприклад, для читання даних з клавіатури і виведення результатів на екран монітора ми користуємось стандартними файлами Input і Output. Файл - принтер має ім’я Prn:

Імена нестандартних файлів, що використовуються в програмі, необхідно описувати у розділі змінних. Описання файлового типу відповідає діаграмі:

 

 
 

 



<== попередня лекція | наступна лекція ==>
Поле варіант | Файловий тип


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн