Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
05.06.2015
Размер:
80.9 Кб
Скачать

Л.В.Рибакова МОДУЛЬ №2 Лабораторна робота 10

Лабораторна робота.№10

Тема: Використання змінних рядкового типу.Стандартні процедури i функції обробки рядків.

Мета роботи: Закріпити знання і відпрацювати вміння та навички використовувати в Рascal- програмі рядкові змінні i стандартні процедури та функції для їх обробки .

Теоретична частина.

Рядковий тип - стандартний в TURBO-PASCAL.

Рядок ‑ це скінчена послідовність символів кодової таблиці ASCII (розширеної).

Рядок постійно містить у собі будь-які символи обмежені, апострофами. Дов-жина рядка не перевищує 255 символів.

На зберігання рядка відводиться пам‘яті: кількість символів плюс один. Це так звана біжуча довжина.

Для опису використовуються службове слово string.

Type str=string [максимальна довжина рядка];

var s1:str;

Або у розділі змінних :

var s2:string [максимальна довжина рядка].

var t : string[20];

s : string;

Максимальна довжина - кількість символів в рядку, ціле число з діапазону [0..255]. Якщо довжина рядка при описувнні змінної не вказана, то вона дорівнює 255.

До окремого символу в рядку можна звернутися по номеру даного символу в рядку . Наприклад t[1], t[2] - відповідно 1-й та 2-й символи рядкової змінної t.

Рядковий вираз складається з рядкових констант, змінних, функцій i знаків операцій. Допустимі операції зімкнення (+) i відношення. Допускається поєднання в одному виразі операторів символьного (char) i рядкового (string) .

Стандартні процедури I функції обробки рядків.

Процедури.

Delete (st, poz, N) - знищення N символів рядка st, почавши з позицi1 poz.

Приклад:

ЕОМ IBM PC ’ --> Delete (str,8,3) -->ЕОМ IBM

'річка Інгул '--> Delete (str,1,5) -->' Інгул '

Insert (str1,str2,poz) - вставка рядка str1 в str2, починаючи з позицi1 poz.

Приклад:

var s1, s2, s3: string [11];

s1:=кібернетика; s2:='наука '; s3:=insert(s1,s2,7);

В результаті отримаємо s3 - наука кібернетика;

Str (X [: Size], Str) - перетворення числового виразу в рядок. Після виразу може бути записаний формат Size аналогічний формату виведення даних .

Val (Str, X, ErCode) - перетворення рядка Str в вираз X Код помилки ErCode- цiлочисельна змінна, яка дорівнює номеру першого помилкового елемента (якщо помилка відсутня код=0).

Функції.

Copy (st, poz, N) - виділяється з рядка st пiдрядок довжиною N символів, починаючи з позиції poz.

Concat (str1, str2... strN) - виконує з’єднання рядків str1, str2... strN. Сума символів всіх з'єднань не повинна перевищувати 255. Якщо в отриманому рядку сума символів перевищує 255 рядок відсікається до 255 символів.

Length (st) - обчислює довжину в символах рядка st.

Pos (str1, str2) - відшукує першу появу в рядку str2 пiдрядка str1.

Приклади програмування

{Програма визначення кількість символів у слові}

uses crt;

const n=50;

var tekst1,tekst:string;

k :array[1..n] of integer;

dl, ns, m, l, j, i :integer;

Begin

ClrScr;

writeln(' введіть речення з крапкою на кінці `);

writeln(' між словами вставте прогалину ');

Readln (tekst);

tekst1:=tekst;

dl:=length(tekst);

if tekst[dl]<>'.' then

begin

writeln(' Ви не поставили "."');

writeln(' повторіть з початку’);

halt;

end;

Insert ('’, tekst, dl); i: =0;

while tekst<>'.' do

begin

i:=i+1;

l:=pos(' ', tekst);{починаючи з позиції l ' ' входить у текст}

k[i]:=l-1; {формує масив довжин}

Delete (tekst, 1,l); {видаляє перевірене слово з тексту}

end;

m:=k[1];ns:=1;

for j:=2 to i do

if k[j]>m then

begin

m:=k[j];ns:=j;

end;

writeln ('В тексті - ');

writeln (tekst1);

for j:=1 to i do

writeln (' cлово',j:3,' складається з ', k[j],'-символів');

writeln (ns,'-e слово в тексті найдовше і складається з);

writeln (m:3,'-символів'); readln; END.

{Дано текст. Визначити скільки разів кожна буква латинського алфавіту з‘являється в тексті і відносну частоту появи.}

program pidrachunok;

uses crt;

type mas=array['A'..'Z'] of word;

var s:string;

i:char;

a:mas;

j,k:word;

begin

clrScr;

for i:='A' to 'Z' do

a[i]:=0;

writeln('введіть текст'); readln(s);

for j:=1 to length(s) do begin

for i:='A' to 'Z' do

if i=s[j] then a[i]:=a[i]+1

end;

for j:=1 to length(s) do begin

for i:='a' to 'z' do

if i=s[j] then a[upcase(i)]:=a[upcase(i)]+1

end;

writeln('буква':7,'кіл-ть':10,'частота':10); k:=0; j:=0;

for i:='A' to 'Z' do begin

k:=k+1;

if k>23 then begin

j:=j+1; gotoxy(30,j)

end;

writeln(i:5,a[i]:9, a[i]*100/length(s):11:2);

end;

Repeat Until KeyPreSSed;

end.

Соседние файлы в папке Labtp_1s