Процедура перетворення рядкового значення в числове

Val (st, I, Cod) – де st – рядок, I – зміна цілого або дійсного типу, в якій розміщується результат перетворення рядка st, Cod – цілочисельна змінна. Якщо під час операції перетворення помилки не виявлено, значення Cod рівно нулю; якщо помилка виявлена (наприклад, лiтерне значення перекладається в числове), Cod буде містити номер позиції першого помилкового символу, а значення I не визначено.

Приклади

Значення st Процедура Результат
'1450' '14. 2e+02' '14. 2fgh' Val (st, I, Cod) Val (st, I, Cod) Val (st, I, Cod)? 1450, Cod=0 1420, Cod=0 Cod=5

5. Функція Length (St) – обчислює поточну довжину в символах рядка St. Результат має цілий тип. Наприклад, якщо St ='rte', тоді результатом функції Length (St) буде число 3.

 

6. Функція Copy (St, Poz, N) - виділяє із St підрядок довжиною N символів, починаючи із позиції Poz. Змінні Poz і N мають цілочисельний тип. Якщо Poz>length (St), тоді результатом буде пропуск; якщо Poz>255, виникає помилка при виконанні.

Приклади

Значення St Функція Результат

'abcdefg' Copy (St, 2, 3) 'bcd'

'abcdefg' Copy (St, 4, 10) 'defg'

 

7. Функція Pos (St1, St2) – виявляє першу появу в рядку St2 підрядка St1. Результат має цілий тип і рівний номеру тієї позиції в рядку St2, де знаходиться перший символ підрядка St1. Якщо в St2 підрядок St1 не знайдений, то результат рівний 0. Наприклад, якщо St ='abcdef', тоді результатом функції Pos ('de', st) є число 4, а результат функції Pos ('r', St) є число 0.

 

8. Функція Concat (St1, St2,..., Stn) – виконує зчеплення рядків St1, St2, ..., Stn в тому порядку, в якому вони вказані в списку. Cума символів всіх зчеплених рядків не повинна перевищувати 255. Наприклад, результатом функції Concat ('aa', 'xx', 'y') є літерна величина 'aaxxy'.

 

9. Функція Upcase (Ch) – перетворює малу літеру латинського алфавіту в велику. Параметр і результат мають тип Char. Наприклад, результатом функції Upcase ('a') є символ 'a'.

 

Зміст роботи

1. Вивчити теоретичний матеріал.

2. Виконати індивідуальне завдання.

3. Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, описати програму, привести контрольний приклад виконання програми.

Індивідуальні завдання

Створити блок-схему та програму на мові Pascal для приведеної задачі згідно варіанту:

1. Дано рядок із 25 символів. Визначити кількість входжень у цей рядок сполучення 'oksm'.

2. Вилучити з фрази w коми і знак оклику, інші символи продублювати. Вивести результат.

3. Дано рядок із 30 символів. Визначити кількість входжень у цей рядок літери 'r'.

4. Ввести з клавіатури рядок символів будь-якої довжини. Визначити довжину рядка.

5. Ввести з клавіатури рядок символів. Вивести на екран всі цифри, які входять у текст.

6. Ввести стрічку довільної довжини, в якій слова відокремлюються пробілами. Вивести на екран слова, що починаються на літеру “m”.

7. Ввести з клавіатури рядок символів. Вивести на екран всі великі літери від “D” до “К”, які входять у текст.

8. Ввести стрічку довільної довжини, в якій слова відокремлюються пробілами. Визначити кількість символів у кожному слові.

9. В заданому рядку визначити, скільки раз зустрічається задане слово.

10. В заданому рядку слова розділені пропуском. Замінити всі пропуски комою і пропуском.

11. В заданому рядку визначити кількість подвійних приголосних.

12. В заданому рядку визначити кількість слів, в яких задана буква зустрічається більше одного разу.

13. В заданому рядку всі слова розділені декількома пропусками. Видалити всі лишні пропуски.

14. В заданому рядку кожне слово замінити кількістю букв в цьому слові.

15. В заданому рядку видалити всі пропуски.

16. В заданому рядку, слова якого розділені або пропусками, або комами, визначити кількість слів.

17. В заданому рядку замінити всі великі букви на мaленькі і навпаки.

18. Надрукувати всі слова взяті в лапки.

19. В заданому рядку слова розділені пропуском. Надрукувати найдовше слово.

20. В заданому рядку слова розділені пропуском. Надрукувати всі слова, які містять в собі задану послідовність символів.

21. В заданому рядку визначити, чи є він ідентифікатором.

Методичні РЕКОМЕНДАЦІЇ

1. Для виконання лабораторної роботи потрібно перш за все опрацювати теоретичний матеріал.

2. Виконати індивідуальне завдання.

3. Показати результат роботи викладачеві.

4. Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, тобто створити блок-схему, описати програму (лістинг програми з коментарями), привести контрольний приклад виконання програми (результат роботи програми).

5. Здати робоче місце, а оформлений звіт – викладачеві на підпис.

6. Під час виконання лабораторної роботи дотримуватися правил безпеки.

Приклади розв’язання задач по організації програм, для роботи з рядковими змінними

1)Задано текст, слова якого поділені пропуском. Виділити і надрукувати всі слова тексту, кожне із нового рядка.

Розв’язання. Введемо рядкову змінну st, оголосивши її довжину за максимумом (255 байт). В цій змінній будемо вводити заданий рядок. Введемо також рядкову змінну w, в яку будемо заносити чергове слово рядка st, і цілочисельну змінну p для позначення позиції чергового пропуску.

Лістинг програми:

Program rjadok;

uses crt;

var

st: string;

w: string;

p: integer;

begin

writeln ('введiть текст, розділяючи слова пропуском: ');

readln (st);

writeln ('заданий текст: ');

writeln (st);

p: =pos (' ', st); { Знаходження позиції 1-го пропуску }

writeln;

writeln ('в текст входять слова: ');

while p>0 do

begin w: =copy (st, 1, p-1); { Виділення слова }

delete (st, 1, p); {Видалення цього слова із тексту разом з пропуском}

writeln (w); { Друк виділеного слова }

p: =pos (' ', st) { Знаходження позиції чергового пропуску }

end; writeln (st) { Друк останнього слова }

end.

Результат роботи програми:

заданий текст: це програма обробки рядків на Pascal.

в текст входять слова:

це

програма

обробки

рядків

на

Pascal

Блок-схема алгоритму

 

2)Дано рядок із 100 символів. Визначити кількість входжень у цей рядок сполучення 'abc'.

Лістинг програми:

program Stroka;

const n=100;

type STR=array[1..n] of char;

var b: STR; m, i: integer;

begin

writeln (' Введіть строку');

for i:=1 to n do

read (b[i]);

for i:=1 to n-2 do

if ((b[i]='a') and (b[i+1]='b') and (b[i+2]='c')) then Inc(m);

writeln (' Кількість входжень 'abc' у вхідний рядок m=', m);

readln; end.

3)Вилучити з фрази а пропуски, коми і крапки, інші символи продублювати. Вивести результат.

 

4)Нехай задано рядок ‘Я люблю інформатику’. Визначити довжину рядка. Вивести на екран друге слово цього рядка.

 


Контрольні питання

1. Що таке рядок на Pascal?

2. Як задається рядковий тип даних?

3. Яка максимально допустима довжина рядка? Чи можна задати довжину рядка меншою максимально допустимого? Якщо можна, тоді як?

4. Як можна звернутися до окремих символів рядка?

5. Як визначити поточну довжину рядка, не використовуючи відповідну функцію?

6. Що таке рядковий вислів? Чи допускається в рядковому вислові змішування операндів рядкового і лiтерного типів?

7. Перерахувати операції, допустимі над рядковими даними.

8. Які стандартні функції процедури використовуються для обробки рядкових даних?

9. Чи можна рядкові дані застосовувати у вигляді <виразу> в операторі case?

Викладач ____________ М. О. Пашко