Типовые процедуры обработки символьных переменных

Строка символов рассматривается программой как одномерный массив. Символы можно сортировать и сравнивать также как и числа. Операции отношения над текстовыми операндами базируются на посимвольном сравнении их числовых кодов. В кодовой таблице ASCII, например, цифры имеют меньшие номера, чем буквы. Латинские буквы имеет меньшие номера, чем символы русского алфавита. Прописные буквы имеют меньшие номера, чем строчные буквы соответствующего алфавита.

При сравнении двух строк символов программа сравнивает их посимвольно. Если строки разной длины, то строка с большим числом символов считается большей, если остальные символы совпадают. Если символы в строках разные, то при сравнении учитываются результаты сравнения по первым n символам. Где n число символов в короткой строке.

Рассмотрим некоторые типовые процедуры обработки символьных переменных.

Задача 9.4.8. Выделить i –й символ из текста.

Задача решается с помощью функции MID$:

С1$ = MID$(C, i, 1)

Задача 9.4.9. Найти позицию, в которой располагается заданный символ или цепочка символов.

Задача решается с помощью функции INSTR:

n = INSTR(C1, C2)

Задача 9.4.10. Удалить символ или цепочку символов.

Решение.

найти позицию, с которой заданный символ или цепочка символов входит в строку;

выделить часть строки слева от символа;

выделить часть строки справа от символа;

объединить полученные строки.

Задача 9.4.11. Вставить текст между i – м и i+1 – м символами.

разделить строку на две подстроки в месте нахождения заданного символа;

прибавить к левой части строки вставляемый текст и пробел;

прибавить к полученной строке правую часть строки.

Задача 9.4.12. Разделить текст на строки, если ограничитель спецсимвол.

Решение.

Определить длину текста;

Найти первый спецсимвол (р).

 
 

Если р=0, то напечатать текст от n до n1 и завершить программу; иначе напечатать текст от n до р.

Запомнить позицию пробела: n = p + 1 и повторить операции по п. 2- 4

CLS

c$ = "во поле береза стояла"

c1$ = " "

n = 1 ' текущее значение переменной цикла

n1 = LEN(c$)

m:

IF n < n1 THEN

p = INSTR(n, c$, c1$) ' p - позиция спецсимвола - пробела

IF p = 0 THEN PRINT MID$(c$, n, n1 - (n - 1)): END

PRINT MID$(c$, n, p - n)

n = p + 1

GOTO m

END IF

END

 

Задача 9.4.13. Разделить текст на строки по пробелам при заданной длине строки.

Решение. Данная задача является дальнейшим развитием задачи 9.4.12.

Введем переменные:

n – начало строки (подстроки);

 
 

n1 – длина строки символов;

p - текущая позиция спецсимвола (пробела);

p1 – предыдущая позиция спецсимвола;

L0 - заданная длина строки

Если длина выделяемой подстроки p-n больше L0, тогда на печать будет выведена строка p1-n.

CLS

DEFSTR C

c1 = "у лукоморья дуб зеленый, златая цепь на дубе том"

c2 = " "

lc = 14

'Line input "Введите строку текста";c1

'input "Введите символ-разделитель"c2

'Input "Введите длину строки",lc

n = 1: REM начальное положение указателя

p = 1: REM текущее значение указателя

p1 = 0: REM предыдущее положение указателя

IF LEN(c1) < lc THEN PRINT c1: GOTO m2

m1:

IF p - n < lc THEN

p1 = p

p = INSTR(p1 + 1, c1, c2)

GOTO m1

ELSE

p2 = p1 - n

c4 = MID$(c1, n, p2)

PRINT c4

n = p1 + 1

p = p1

c3 = LEFT$(c1, p1)

'?c3

p3 = (LEN(c1) - LEN(c3))

IF (LEN(c1) - LEN(c3)) < lc THEN PRINT RIGHT$(c1, p3): GOTO m2

GOTO m1

END IF

m2:

END

Задача 9.4.14. Сравнить символы или цепочки символов

Примеры: "a"<"b"; "ab"="ab"; "ac">"ab"; "abc"<"abd", но "abf">"abd"

"abc"<"abcd", но "fbc">"abcd"

Задача 9.4.15. Выделить слово из текста.

Решение.

- вычислить длину слова (функция LEN);

найти позицию вхождения слова в строку символов (функция INSTR);

выделить слово (функция MID$).

Задача 9.4.16. Определить, является буква гласной или согласной.

- ввести строку текста;

ввести строку символов, содержащую только гласные Cg$;

выделить символ из текста (функция MID$(C,n,1));

проверить принадлежит ли символ строке гласных Cg$ (функция INSTR(C,C1)). Если принадлежит, значит символ – гласная.

 

Контрольные вопросы и задания

 

1. Провести классификацию прикладного программного обеспечения.

2. В чем отличие библиотеки прикладных программ от пакетов прикладных программ?

3. В чем особенности интегрированных пакетов?

4. Что такое табулирование функций? Как оно осуществляется?

5. Поясните порядок вычисления многочлена по схеме Горнера.

6. В чем различие между аналитическими и численными методами решения уравнений?

7. Что такое отделение корней уравнения?

8. Что понимается под уточнением корней уравнения?

9. Отделите корни уравнения 3 + 5х2 - 3=0.

10. Отделите корне уравнения Зх3 - 2х2 +5=0.

11. Назовите методы уточнения корней уравнения на от­резке отделения.

12. В чем сущность метода дихотомии?

13. В чем отличие метода "золотого сечения" от метода дихотомии?

14. В чем сущность метода простых итераций?

15. Назовите условия наличия экстремума внутри отрез­ка.

16. Сформулируйте условия выпуклости и вогнутости функции.

17. Опишите порядок решения системы линейных алгеб­раических уравнений методом Гаусса.

18. Что такое интеграл? Дайте геометрическую интерпре­тацию определенного интеграла.

19. Поясните способы вычисления определенного интег­рала.

20. Что такое интерполирование функций?

21. Вычислить площадь земельного участка, который в прямоугольной системе координат описывается уравнениями у = Æ; xi = 2; x2 = 4; у = 1 / х.

22. Вычислить работу, необходимую для откачки воды из цистерны, радиус основания которой R равен 0,5 м, высота Н равна 2 м; f (h) = 9807 × Sосн× h.

23. Вычислить силу давления воды на вертикальную пло­тину, имеющую форму равнобедренной трапеции с основани­ями с, d и высотой h; f(x) = d × х + ((с - d) / h) x2.

24. Найти путь, пройденный автомобилем за10 с, если скорость его описывается уравнением: v = 3t2 + 2t + 1.

25. Вычислить работу А силы F при сжатии пружины на 0,04 м, если для сжатия ее на 0,01 м 0) требуется сила 10Н (F0). Сжатие винтовой пружины пропорционально прило­женной силе; f(x) = k0 x2 ; k0 = F0 / x0.

26. Найти площадь поперечного сечения канала для оро­шения, имеющего форму параболического сегмента, если ши­рина канала В равна 1 м, глубина Н-0,6 м; f(x) = a x2; a = Н/(В/2)2.

27.Рассчитать величину управляющего сигнала, раз­гона двигателя при t = 3 с, если закон управления опи­сывается выражением у = Зх3 + х2 + 5. Решить методом Горнера.

28. Решить систему линейных уравнений:

7,5 x1 + 3,87x2 - 1,74х3 = 5,68;

1,85x1 - 2,34х2 + 6,48х3 = 8,56;

3,15x1 + 0,85x2 + 3,79х3 = 4,59.

29. Что такое символьная переменная?

30. Приведите классификацию функций для обработки символьных переменных.

31. Что лежит в основе сравнения символьных переменных?

32. На чем основан принцип обработки символьных перменных?

Литература

Алексеев А. П., Информатика, - М.: "Солон-Р", 2002. – 400 с., ил.

Гурин Н. И. Работа на персональном компьютере. - Мн.: Выш. школа, 1994.

Дьяконов В. П. Справочник по алгоритмам и программам на языке БЕЙСИК для персональных ЭВМ: Справочник. - М.: Наука. Гл. ред. физ.-мат. лит., 1987. - 240 с.

Использование Microsoft Windows XP Home Edition. Специальное издание.: - М.: Издательский дом "Вильямс", 2002. – 896 с.: ил.

Кетков GW-, Turbo-, QBasic для IBM PC

Коуров Л. В., Словарь-Справочник по информатике, - Мн.: Амалфея, 2000. – 176 с.

Кучура Н. А., Ходош М. В., Цагельский В. И. Персональные ЭВМ единой системы. - М.: Финансы и статистика, 1988.

Кушниренко А. Г., Лебедев Г. В., Сворень Р. А. Основы информатики и вычислительной техники. – М.: Просвещение, 1993. – 224 с.: ил.

Леонтьев В. П., Новейшая энциклопедия персонального компьютера 2000. – 2-евро издание, перераб. и доп. – М.: ОЛМА-ПРЕСС, 2000. – 847 с.:ил.

Ляхович В. Ф. Основы информатики. - Ростов н/Д.: Изд-во "Феникс", 1996. –640 с.

Михайлов В. Ю., Степанников В. М. Современный бейсик для IBM PC. – М.: Изд-во МАИ, 1993. – 288 с.

Новейший самоучитель работы на компьютере. - Москва: изда­тельство "ДЕСС КОМ", 2000. - 654 с.

Основы информатики: Учебное пособие; под ред. А. Н. Морозевича. – Мн.: Новое знание, 2001. – 544 с.: ил.

Острейковский В. А. Информатика. – М.: "Высшая школа", 2000.-511 с.: ил.

Поснова М. Ф., Стрикелева Л. В., Поснов Н. Н. ЭВМ для всех. – Мн.: Университетское, 1990. – 208 с.: ил.

Рыжиков Ю. И. Решение научно-технических задач на персональном компьютере. – СПб.: КОРОНА принт, 2000. – 272 с.: ил.

Светозарова Г. И. и др. Практикум по программированию на языке БЕЙСИК. - М.: Наука, 1988.

Турчак Л. И. Основы численных методов. – М.: Наука. Гл. ред. физ.-мат. лит., 1987. – 320 с.

Фигурнов В. Ф. IBM PC для пользователя. - М.: Финансы и статистика, 2003.

Экономическая информатика / под ред. П. В. Конюховского и Д. Н. Колесова. – СПб.: Питер, 2001. – 560 с.: ил.

 

 


[1] В разных источниках приводятся различные даты начала и конца соответствующего периода

[2] В объектно-ориентированных языках программирования, например С, Delphy, а также Visual Basic число используемых типов переменных значительно больше. Имеются переменные логические, типа дата, время, объектные переменные и др. В настоящем пособии они не рассматриваются.

[3] В тригонометрических функциях аргумент измеряется в радианах. Для пересчета радианов в градусы надо умножить значение функции на 180/p. Для пересчета градусов в радианы надо умножить значение функции на p/180. Приближенное значение числа p равно 3,141593, а более точное значение можно вычислить по формуле p = 4*Atn(1)

[4] Значение аргумента для arcsin x и arcos x должно находиться в интервале от –1 до +1.

[5] Средствами Mercury отчет на печать может не выводится из-за отсутствия соответствующего драйвера.

 

[В. Л.1] N – числовая переменная, С – строковая переменная, [n] – параметр, заключенный в квадратные скобки необязательный.

[В. Л.2] N – числовая переменная, С – строковая переменная, [n] – параметр, заключенный в квадратные скобки необязательный.

[В. Л.3] В тригонометрических функциях угол задается в радианах. Для пересчета радианов в градусы надо умножить значение в радианах на 180/p. Для пересчета градусов в радианы угол в градусах надо умножить на p/180. Число p приблизительно равно 3.141593, точное значение можно вычислить по формуле p=4*Atn(1)