|
Символьні та рядкові величини у мові Паскаль
У мові Паскаль викор. 2 типи текстових даних:
1) символьні (char);
2) рядкові (string).
Симв. стала – це 1 симв. кодової табл. ПК, записаний в апострофах. Він займає 1Б памяті. Напр.: ‘h’, ’7’, ’(’, ‘_’, ‘’.
Симв. змінна може набувати значень різних символів.
Приклад опису симв. змінних:
Var S, t:char;
Симв. змінна може отримати значення:
1) через присвоєння: S:='*';
2) введенням з клавіатури: Read(S);
Симв. тип – впорядкований, тобто для кожного значення типу можна назвати як попереднє, так і наступне, напр. для ' Q' попереднім є 'P', а наступним – 'R'.
Тому симв. змінні можна також використ. як параметр циклу.
Пр. 1:
For s:='a' to 'z' do
Write(s,' ');
Writeln(Сhr(66));
Writeln(Ord('B'));
Для роботи із Char використ. функції Сhr i Ord.
Сhr видає символ за його кодом у кодовій таблиці ПК.Приклад: Сhr(66)='B'
Ord видає код символа у кодовій таблиці ПК. Приклад: Ord('B')=66
З-ча 2. Вивести на екран таблицю кодування
Var k:byte;
begin
For k:=0 to 255 do
Write(k,' ',Chr(k),' ');
End.
Символьні дані можна обєднувати в масиви.
Приклад опису:
var P: array [1..50] of char;
Використовуючи симв. дані та масиви з них, розвязують різноманітні задачі аналізу та опрацювання текстів.
Рядок (стрічка символів - string) – послідовність символів довжиною не більше 255 символів.
Пр. викор. рядк. сталих:
1) write (‘Введіть х ’);
2) write (‘S=’, S);
3) const R=’No’;
Для опису рядкових змінних вказ. тип – string і максимально можлива кількість символів значення величини.
Приклади опису:
1) var St: string; - максим. можл довж. – 255;
2) var R1, R2: string[20]; - максим. можл. довж. – 20;
3) var im: string[10]; - максим. можл. довж. – 10;
Порожній рядок має довжину 0 (‘’).
Рядкові вирази – це вирази, які складаються із рядкових даних: сталих, змінних, знаків операцій, функцій.
Зокрема, над даними string допустимі операції склеювання та відношення (порівняння).
Приклад склеювання:
Х:=’ін’+’форма’+’тик’;
write(X);
Результат:
інформатик
var x, y: string[15];
begin
Y:= ’форма’;
Х:=’ін’+Y+’тик’;
write(X);
end.
Заув. Максим. довж. не має перевищувати 255 симв.
Порівняння рядків відбувається посимвольно зліва направо до першого неоднакового символа і той рядок вважається більшим, в якому перший із неоднакових символів має більший код у кодовій таблиці. Результат порівняння – true (істина) або false (хибність).
Приклади:
‘RL’=’RL’ true
‘RL’=’rl’ false
‘RL’>’rl’ false
‘YYY’ >’YY’ true
‘R’>’З’ false
Функції опрацювання рядків.
Нехай St – рядок, тобто в програмі є опис
Var St: string;
Length(St) – видає ціле число, що є кількістю символів, тобто довжиною рядка St.
Якщо і> Length(St), то результат – пропуск (' '), і>255 – помилка
Пр.: 1) Length('1.2,3,4')=7 -
2) St:=''; {порожній рядок}
write(Length(St));
Рез.: 0
Copy(St, i, k) – формує новий рядок довжиною k, починаючи з і-го символа рядка St.
Якщо і> Length(St), то результат – пропуск (' '), і>255 – помилка
Приклади
St | Вираз | Результат |
'каліграфія' | Copy(St, 5, 4) | 'граф' |
'каліграфія' | Copy(St, 1, 8) | 'каліграф' |
'інформатика' | Copy(St, 12, 4) | _ |
'інформатика' | Copy(St, 3, 5) | ‘форма’ |
З-ча 1. Нап. та вик. пр. визн. ск. разів і введ. тексті зустр символ 'k'.
begin
n:=0;
For i:=1 to length(st) do
if St[i]=’k’ then n:=n+1
З-ча 2. Нап. та вик. пр. визн. ск. разів у введ тексті зустр.
буквосполучення ‘net’
begin
n:=0;
For k:=1 to length(st)-2 do
if Copy(St, k, 3)=’net’ then n:=n+1
Pos (St1, St2) – визначає чи входить рядок St1 в рядок St2. Результатом функції є ціле число, яке дорівнює номеру позиції, починаючи з якої St1 входить в St2.
Приклади
St | Вираз | Результат |
'мороз' | Pos('р', St) | |
'мороз' | Pos('ор', St) | |
'мороз' | Pos('я', St) |
З-ча 6. Визначити чи є задане буквосполучення у введеному з клавіатури тексті.
Var St:string; Sl:string[12]; k:byte;
begin
write ('Введи буквосполучення ');
readln(Sl);
write ('Введи текст ');
readln(St);
k:= pos(Sl, St);
if k>0 then writeln('Входить')
else writeln('Не входить')
end.
Upcase(S) – функція перетворення символа S із нижнього регістра у верхній. Символи поза інтервалом 'a','b',…,'z' залишаються без змін
З-ча 5. Замінити у введеному тексті перші букви слів на великі.
…
For k:=1 to length(St) do
If (St[k]<>' ') and (St[k-1]=' ') then St[k]:=Upcase(St[k]);
…
Процедури опрацювання рядків
Delete(St, i, k) – вилучає з рядка St k символів, починаючи з і -го.
Пр.: Delete(St, 2, 1); - вилучає з рядка St 1 символ, починаючи з 2-го.
Insert(St1,St2,k) – вставляє рядок St1 в St2, починаючи з k-ї позиції рядка St2.
Пр.: S1:='MS ';
S2:='ЕТ Excel';
Insert(S1,S2,4);
Write(S2);
ЕТ MS Excel |
Peзультат:
З-ча 5. Підрахувати у введеному рядку кількість слів
З-ча 7. Написати програму заміни у введеному тексті слова Sl1 на слово Sl2.
Const Sl1='OgO'; Sl2='AyA';
Var ST:string;
k: byte;
begin
Write ('Vvedit text ');
Readln(ST);
K:=pos(Sl1, ST);
While k<>0 do begin
Delete (ST, k, length(Sl1));
Insert(Sl2,ST,k);
K:=pos(Sl1, ST);
End;
Writeln(ST);
End.
З-ча 6. Замінити у введеному тексті перші букви слів на великі.
З-ча 7. Визначити у введеному тексті найбільше слово.
З-ча 6. Визначити, чи задане слово є паліндромом (однаково читається зліва направо і навпаки, напр. Пилип)
З-ча 9. Визначити, скільки у тексті є слів-паліндромів
Дата добавления: 2015-08-27; просмотров: 746 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
1. Система сил при свободном резании | | | Синтез архитектуры и монументального искусства |