Реферат: Програмування рядкових величин
Название: Програмування рядкових величин Раздел: Рефераты по астрономии Тип: реферат |
Тема 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 . Серед інших процедур та функцій над рядками варто відмітити процедури виділення (копіювання) частини рядка, видалення частини рядка, функцію знаходження позиції входження одного рядка до іншого, функцію визначення довжини рядка, тощо. |