Реферат: Програмування рядкових величин - Refy.ru - Сайт рефератов, докладов, сочинений, дипломных и курсовых работ

Програмування рядкових величин

Рефераты по астрономии » Програмування рядкових величин
Тема 7. . 1.     Поняття рядкової величини.

Величиною рядкового типу (strings) називається послідовність символів, укладена в одинарні лапки. Цей тип даних є стандартним для мови ПАСКАЛЬ, хоча він є структурованим. Величини можуть бути як константами, так і змінними. При завданні змінних символьного типу можна вказати кількість символів у цій величині.

ПРИКЛАД:

type

message=string;

list=string[10];


Опис типу message задає тип рядкових величин з максимально можливою довжиною рядка (255 символів), а опис типу list – рядкові величини з максимальною довжиною рядка 10 символів.

Рядкові величини можна опрацьовувати і як єдине ціле, і поелементно. При обробці рядка поелементно він розглядається як одновимірний масив з типом індексу byte  і типом елементів char. Рядкові величини можуть містити довільні символи. Так. у рядку може міститися й одинарна лапка. Для того, щоб помістити одинарну лапку в рядок, потрібно написати дві послідовно розташовані одинарні лапки. Рядки, у яких міститься тільки один символ, являють собою дані стандартного символьного типу (char). Рядок можна порівняти з масивом даних символьного типу, що має таку ж довжину. Всі рядкові константи сумісні з усіма рядковими типами (string).

ПРИКЛАДИ:

‘TURBO’

‘п”ятниця’

“””

‘;’

Для рядкових величин визначена операція конкатенації (об’єднання) рядків. Операція позначається символом “+”. Тип результату – також рядкова величина. Мова ТУРБО ПАСКАЛЬ дозволяє використовувати оператор + для об’єднання двох рядкових операндів. Якщо довжина результуючого рядка перевищує 255 символів, то вона усікається до 255 символів.

Оператори відношення =, <>, <, >, <=, або >= можуть застосовуватися для порівняння рядків відповідно до порядку розширеного набору символів коду ASCII.  Будь-які два значення рядкового типу даних можна порівняти, оскільки всі значення рядкових даних сумісні. Значення рядкового типу сумісні зі значеннями символьного типу, і при їхньому порівнянні символьне значення опрацьовується як рядкове значення довжиною 1. Та величина вважається “більшою”, яка має на відповідному місці символ з більшим ASCII кодом. Слід зауважити, що пробіл є повноправним символом рядкової величини і він опрацьовується аналогічно іншим символам величини.

ПРИКЛАДИ:

‘turbo’>’Turbo’;

‘turbo’>’pascal’;

‘turbo’<’turbo pascal’;

‘123’<>’  123’;

2.     Основні процедури та функції опрацювання рядкових величин.

Рядкові величини можна вводити з клавіатури. Для цього можна використати стандартну процедуру вводу read. Однак при цьому є така особливість: необхідно ввести стільки символів, скільки було оголошено при визначенні цієї величини. Так, якщо величина була оголошена як величина типу string [10], то необхідно ввести 10 символів (якщо їх кількість менша, то вільні місця необхідно заповнити пробілами). Якщо ж величина описана як string, то кількість пробілів буде дуже великою. Щоб позбавитись цього недоліку, для вводу рядкових величин варто використовувати іншу процедуру вводу – readln. В цьому випадку доповнювати пробілами рядкову величину непотрібно.

Функція Соncat - виконує конкатенацію послідовності рядків. Її дія аналогічна дії операції конкатенації.

Функція Copy - повертає підрядок (частину) рядкової величини.

Процедура Delete - видаляє з рядка його частину заданої довжини, починаючи з заданої позиції.

Процедура Insert - додає в рядок підрядок, починаючи з певної позиції рядка.

Функція Length - повертає динамічну довжину рядка.

Функція Роs - здійснює пошук підрядка в рядкові.

Процедура Str - перетворює чисельне значення в його рядкове представлення.

Процедура Val - перетворить рядкову величину, яка є числом, в її чисельне значення.

ПРИКЛАДИ

var

  s,t,x:string;

  n,m,k:integer;

begin

  …

  readln(s); {припустимо, що введена величина ‘програма’}

  readln(t); {припустимо, що введена величина ‘рог’}

  n:=length(s); {n=8}

  x:=concat(s,t); {x=’програмарог’}

  x:=copy(s,4,3); {x=’гра’}

  m:=pos(t,s); {m=2}

  delete(s,4,3); {s=’прома’}

  …

end.


Розглянемо приклад алгоритмів опрацювання рядкових величин із застосуванням наведених функцій.

Заданий текст (рядкова величина), слова якої розділені символом “пропуск”.

1. Знайти кількість слів у тексті.

2. Надрукувати окремо з нового рядка кожне слово тексту.

3. Знайти i надрукувати найдовше слово тексту.


program strings; 

uses crt; 

var s,t:string;

  i,k:integer; 

procedure kol(s:string; var k:integer); 

{ процедура знаходження кiлькостi слiв у текстi ( текст мiстить хоча б одно слово } 

var i,n:integer; 

begin

  k:=1;

  n:=length(s);

  for i:=1 to n do

  if s[i]=’ ‘ then k:=k+1; 

end; 

procedure druk(s:string); 

{ процедура друкування слів тексту } 

var n:integer;

  s1:string; 

begin

  n:=pos(‘ ‘,s);

  while n<>0 do

  begin

  s1:=copy(s,1,n-1);

  writeln(s1);

  delete(s,1,n);

  n:=pos(‘ ‘,s)

  end;

  writeln(s) 

end; 

procedure max_word(s:string; var s1:string); 

{ процедура знаходження найбільшого слова тексту } 

var m,n,max:integer;

  s2:string; 

begin

  s1:=”;

  max:=0;

  n:=pos(‘ ‘,s);

  while n<>0 do

  begin

  s2:=copy(s,1,n-1);

  m:=length(s2);

  if m>max then

  begin

  max:=m;

  s1:=s2

  end;

  delete(s,1,n);

  n:=pos(‘ ‘,s)

  end;

  m:=length(s);

  if m>max then s1:=s 

end; 

{Основна програма}

begin

  write(‘Введiть текст, розділяючи слова одним символом “пропуск”: ‘);

  readln(s);

  writeln;

  writeln(‘Результати: ‘);

  kol(s,k);

  writeln(‘кiлькiсть слiв у текстi k=’,k);

  writeln;

  writeln(‘Слова тексту: ‘);

  druk(s);

  writeln;

  writeln(‘Найдовше слово тексту);

  max_word(s,t);

  writeln(t); 

end.


Узагальнення по темі.

Величиною рядкового типу (strings) називається послідовність символів, укладена в одинарні лапки. Цей тип даних є стандартним для мови ПАСКАЛЬ, хоча він є структурованим. Величини можуть бути як константами, так і змінними. При завданні змінних символьного типу можна вказати кількість символів у цій величині.

Рядкові величини припускають обробку і як єдиного цілого, так і поелементно. При обробці рядка поелементно він розглядається як одновимірний масив з типом індексу byte і типом елементів char. Рядкові величини можуть містити довільні символи. Так, у рядку може міститися й одинарна лапка. Для того, щоб помістити одинарну лапку в рядок, потрібно написати дві послідовно розташовані одинарні лапки. Рядки, у яких міститься тільки один символ, являють собою дані стандартного символьного типу (char). Рядок можна порівняти з масивом даних символьного типу, що має таку ж довжину. Всі рядкові константи сумісні з усіма рядковими типами (string).

Для рядкових величин визначені операція конкатенації (об’єднання) рядків та операції відношення . Вониможуть застосовуватися для порівняння рядків відповідно до порядку розширеного набору символів коду ASCII. Будь-які два значення рядкового типу даних можна порівняти, оскільки всі значення рядкових даних сумісні. Значення рядкового типу сумісні зі значеннями символьного типу, і при їхньому порівнянні символьне значення опрацьовується як рядкове значення довжиною 1. Та величина вважається “більшою”, яка має на відповідному місці символ з більшим ASCII кодом. Слід зауважити, що пробіл є повноправним символом рядкової величини і він опрацьовується аналогічно іншим символам величини.

Рядкові величини можна вводити з клавіатури. Для цього можна використати стандартну процедуру вводу read. Однак при цьому є така особливість: необхідно ввести стільки символів, скільки було оголошено при визначенні цієї величини.  Щоб позбавитись необхідності вводу 255 символів при оголошенні рядкової величини як strings , варто використовувати іншу процедуру вводу – readln.

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