Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект бейс.doc
Скачиваний:
8
Добавлен:
12.11.2019
Размер:
1.33 Mб
Скачать

17. Робота з текстовими даними

1. Дії з текстовими даними. Задачі числового характеру, де об'єктами є числові дані, не вичерпують сфер застосування комп'ютерів. Актуальними є задачі опрацювання текстових даних. Для роботи з текстовими даними використовують такі елементи мови: текстові сталі, текстові змінні, текстові функції, текстові вирази та дії з ними. (Текстові дані називають ще символьними, чи літерними даними, чи рядками).

Довжина текстової сталої не повинна перевищувати 255 символів. Текстова стала, яка має нульову довжину, зображується так: "".

Нагадаємо, що до імені текстової змінної потрібно дописати символи $,

якщо ця змінна не описана оператором DEFSTR.

З текстовими даними виконують операції введення та виведення, перетворення та порівняння.

Введення і виведення текстових даних. Надати значення текстовим змінним ( увести дані) можна трьома способами за допомогою таких операторів:

1) присвоєння;

2) INPUT або LINE INPUT;

3) READ.

Текстові дані можна виводити на екран дисплея, на друкарський пристрій (або у файл даних). Виведення текстових даних виконують оператором PRINT або WRITE

Приклад І. Розглянемо оператори:

10 А$ = "САДОК ВИШНЕВИЙ"

20 DATA "КОЛО ХАТИ"

ЗО READ В$

Тут змінна В$ отримає значення " КОЛО ХАТИ".

Приклад 2. Результати виконання таких операторів майже однакові:

60 PRINT AS; B$

65 PRINT AS; " "; B$

Відмінність така: у першому випадку не буде пропуску перед словом "КОЛО".

Перетворення текстових даних. Для перетворення текстових даних використовують текстові вирази та текстові функції.

Текстовий вираз складається з текстових сталих, змінних, функцій, з'єднаних між собою операцією з'єднання (конкатенації). Операцію з'єднання позначають символом "+".

Для введення текстового рядка, який містить кому, слід використати оператор LINE INPUT замість INPUT.

Приклад 3. Розглянемо оператори " -

40 DS = "СА" + "ДОК"

45 О1$ = "ДОК" + "СА"

50С$ = А$ + "" + В$.

Тут змінна D$ отримає значення "САДОК", a Dl$ - значення "ДОКСА". Яке значення отримає змінна CS?

2. Текстові функції. Під час розв'язування багатьох задач потрібно вміти виділяти з текстового даного певну частину символів. Для цього, а також для інших перетворень текстових даних використовують текстові функції. Набір функцій, які входять до більшості Бейсик-систем, наведено в табл.7.

Таблиця 7

Функція

Дії

ASC(A$)

LEN(A$)

INSTR(A$, B$)

INSTR(A$, B$, I)

VAL(A$)

CHR$(N)

LEFT$(A$, N)

RIGHT$(A$, N)

MID$(A$, N, M)

STR$(A)

INKEY$

INDUT$(N)

SPACE$(N)

STRING$(N, M)

STRING$(N, A$)

Дає (внутрішній машинний) код ASCII першого символу рядка A$ (тобто додатнє число або Ø). Якщо рядок пустий, то повертається значення -1.

Дає число символів в рядку A$.

Дає початкову початкову позицію першого входження рядка B$ в рядок A$; повертає Ø, якщо рядок B$ не є вирізкою із рядка A$. Якщо параметр І вказаний то пошук входження рядка B$ в рядок A$ починається з і-ої позиції рядка A$.

Дає число по його символьнову записові в рядку A$; якщо в рядку вміщуються посторонні символи, то повертається Ø.

Дає символ з кодом, який дорівнює N.

Дає N лівих (LEFT$) або правих (RIGHT$) символів рядку A$.

Дає М символів рядка A$, починаючи з N- ої позиції.

Дає рядок, який є символьним записом числа А. Оберненою функцією є VAL.

Не має аргументів і забезпечує введення з клавіатури одного символу.

Забезпечує введення з клавіатури N- символів.

Дає рядок із N- пропусків.

Дає рядок із N однакових символів з кодом ASCII, або N- кратно повторює перший символ рядку A$.

Довідка 2.Для заміни поточного рядку або заміни його на другий необхідно виконати:

а) Зробити пошук B$ в A$, A$- поточний рядок, B$-деяка вирізка. Цю операцію можна виконати функцією INSTR, або їй подібною.

б)Наступна необхідна операція - вставка C$ в позицію "і" в A$, що означає вставку нового рядка безпосередньо перед і- позицією вхідного рядка. Цю операцію можна здійснити за допомогою виразу LEFT$(A$, i-1)+C$+RIGHT$()A$, LEN(A$)-i+1)

в) Чергова операція - виділення B$ із A$. Для виконання спочатку необхідно знайти початкову позицію вирізка B$ в A$, так як вказано вказано в прикладі (а); якщо вона дорівнює"c", зміну рядка можна виконати за допомогою виразу: LEFT$(A$, i-1)+RIGHT$(A$, LEN(A$)-LEN(B$)-i+1)

г) Досить часто дії (а), (б), (в) приходиться об'єднувати в одну операцію - заміна B$ на C$ в A$. Для спочатку визначають початкову позицію "і" вирізки B$ в A$, потім видалити B$ і дальше вставити С$.

Приклад 2. Задача 1. Нехай змінна A$ має значення "САДОК ВИШНЕВИЙ". Тоді наведені функції дадуть такі результати:

ФУНКЦІЯ РЕЗУЛЬТАТ

LEFT$(A$,5) "САДОК",

RIGHT$(A$,8) "ВИШНЕВИЙ"

MID$(A$,3,2) “ДО”,

LEN(AS) 14,

VAL (“124”) 124,

STR$(124) “124”.

INSTR(A$, “Д”) 3

CHR$(74) J

ASC(“J”) 74

Задача 2. Визначити кількість букв В у тексті А$.

10 REM Кількість букв у тексті -;

20 А$= "САДОК ВИШНЕВИЙ" .

30 K=LEN(A$)

40 S=0

50 FOR 1=1 ТОК -

60 IF MID$(A$,I,1)="B" THEN S=S+1

70 next І

80 PRINT"S="S 90 END Виконаємо програму. На екрані отримаємо: S=2.

Довідка І. Конструкція MID$(A$,L,M) призначена також для зміни поточного значення текстової величини за допомогою такого оператора присвоєння:

MID$(A$,L,M) = CS (в даному випадку MID$ виконує функції оператора)

Дія оператора. М перших символів з С$ заміщують L символів у А$, починаючи з позиції L .Наприклад, якщо значенням D$ є "САДОК", то оператор MID${D$,2,2)="OP" змінює значення змінної D$ з "САДОК" на "СОРОК".

3.Порівняння текстових даних. Тексові дані можна порівнювати між собою. Отже, з них можна будувати логічні співвідношення (умови) та логічні вирази.

"Більшою" вважають ту текстову величину, значення якої починається з символу, що стоїть в алфавіті (у таблиці кодів ASCII) далі, тобто числовий код якого більший. Наприклад, числові коди наступних символів зростають зліва на право:

…Al,2,…,9,…,A,B,C,…,X,Y,Z,…Ab,c,..,y,z3…AB,B,…,a,6,B,…

Порівняння текстових даних використовують у задачах сортування інформації.

Приклад 5. Істинними є такі логічні вирази:

-7"<"9", "А 1 "<"А2", "АВ">"АА", "ГАЛЯ"<"РОМАН",

а хибними - "А">"В", "В"="Б", "СШ 15">"СШ 91"

Довідка 5. Таблицю кодів ASCII - "American Standard Code for International ^Interchange" можна знайти в довідниках.

Масив рядків символів.

Групу рядків можна зберігати в масиві і звертатися до окремих рядків по іменам. Для масивів рядків допустимі імена, що і для звичайних масивів, тільки до імені додається в кінці знак $. DIM A$(N).

В програмі не повинно існувати ніякого зв'язку між рядками які зберігаються в масиві і одноіменним числовим масивом. Кожний елемент рядкового масиву рівноцінний рядковій змінній і може вміщувати від 0 до 255 символів.

Елементами масивів рядків можна користуватися в сполученні з всіма рядковими функціями. В силу обставин можуть знадобитися двохмірні масиви рядків і масиви більшого числа вимірів

ВПРАВИ

1. Дано значення текстової змінної А$=" ЛІТЕРАТУР А". Визначити значення

текстових функцій.

a) LEFT$(A$,6); б) RIGHT$(A$,3); в)МГО$(А$,3,5); г) LEN(AS);

д) MID(A$,3,3) + MID(A$,8,1).

Виконати попередню вправу, якщо А$ = "СУСПІЛЬСТВО".

2. Дано дві текстові величини:

С$ = "ГАЛЯ 1986СШ76";

D$ = “РOMAH 1979СШ91"

3. Обчислити значення функції:

a) LEFT$(C$,5); б) VAL(MID$(C$,7,4)); в) MID$(D$,7,4); г) LEN$(D$);

д) RIGHT$(C$,2).

4. Визначити текстове значення

а) поточної секунди;

б) поточної години;

в) поточного місяця;

г) поточного дня;

д) поточного року.

Обчислити числове значення

а) поточної секунди;

б) поточної години;

в) поточного місця;

г) поточного дня;

д) поточного року.