Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Програмування (методичка).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
495.1 Кб
Скачать

Лiтерні величини

У порiвняннi з iншими, алгоритми роботи з лiтерними величинами на НАМ дають найбiльшi ускладнення при їх перекладi на мову Паскаль. Причини ускладнень такi:

1) алгоритмiчна мова передбачає широкi можливостi для змiнних лiтерного типу; ними можна користуватись як змiнними з iндексами; при цьому лiтерна змiнна з iндексами t[i:j] у складi виразу означає операцiю "вирiзка", а з лiвої сторони команди присвоювання використовується для операцiї "часткова змiна лiтерної величини"; таким чином, лiтерна змiнна з iндексами може означати вiдразу цiлий фрагмент лiтерної величини; в мовi ж Паскаль до змiнних типу String може бути застосований лише один iндекс, що означає можливiсть працювати лише з одним символом;

2) набiр стандартних засобiв для роботи з лiтерними величинами в НАМ надзвичайно обмежений: вимiрювання довжини довж(X), склеювання "+" i порiвняння "=" та "<>"; в той же час в мовi Паскаль стандартних засобiв значно бiльше;

3) оскiльки алфавiт НАМ жорстко не визначений, в НАМ вiдсутнiй символьний тип, а з окремими символами не зв'язується нiякий код.

В зв'язку з цими причинами всю сукупнiсть задач для роботи з лiтерними величинами доцiльно розбити на двi групи:

  1. Задачi, якi можуть бути розв'язанi засобами НАМ i перекладенi на мову Паскаль;

  2. Задачi, якi недоцiльно розв'язувати алгоритмiчною мовою через надмiрнi ускладнення, i якi слiд розв'язувати тiльки мовою Паскаль.

Алгоритмiчною мовою процедури Str i Val як стандартнi не передбаченi, а вiдповiднi алгоритми надзвичайно складнi. Саме тому подiбнi задачi за допомогою НАМ розв'язувати недоцiльно.

Приклади алгоритмів літерних величин

Приклад 1. "Кiлькiсть лiтер". Задано лiтерну величину S, що являє собою деякий текст. Задано лiтерну величину X, що являє собою єдину лiтеру. Пiдрахувати кiлькiсть лiтер X у текстi S.

алг КЛ(X,S: лiт): нат

поч k,j: нат

k:=0

для j вiд 1 до довж(S)

виконувати якщо S[j:j]=X то k:=k+1

КЛ:=k

кiн

Приклад 2. "Палiндром". Задано лiтерну величину S, що являє собою деякий текст. Побудувати алгоритм, результатом якого є текст, обернений до даного.

алг ОТ(S: лiт): лiт

поч a: лiт, j: нат

a := ""

для j вiд 1 до довж(S)

виконувати a := S[j:j] + a

ОТ := a

кiн

Приклад 3. "Замiна лiтер". Задано лiтерну величину S, що являє собою деякий текст. Задано також лiтернi величини X та Y, кожна з яких являє собою єдину лiтеру. Замiнити в текстi S лiтеру X лiтерою Y.

алг ЗЛ(арг X,Y: лiт; рез S: лiт)

поч j: нат

для j вiд 1 до довж(S)

виконувати якщо S[j:j]=X то S[j:j]:=Y

кiн

Приклад 4. "Вилучення лiтер". Задано лiтерну величину S, що являє собою деякий текст. Задано також лiтерну величину X, що являє собою єдину лiтеру. Вилучити iз тексту S всi лiтери X.

алг ВЛ(арг X: лiт; рез S: лiт)

поч a: лiт, j: нат

a := ""

для j вiд 1 до довж(S)

виконувати якщо S[j:j]X то a:=a+S[j:j]

S := a

кiн