Суббота, 18.05.2024, 21:17
Информатика в школе
Приветствую Вас Гость | RSS
Главная Символы и строки Регистрация Вход
Форма входа

Меню сайта

Мини-чат
300

Категории
Школа и сайт [4]
Software [18]
Hardware [14]

Календарь
Календари для ucoz

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Введение

Обработка текста - одна из часто встречающихся задач программирования. Если требуется обработать какие-либо текстовые данные, то без знаний того материала, что будет изложен ниже, просто не обойтись. Особенно, если данные сформированы не лично вами, а какой-либо сторонней программой или другим человеком.

Символы

Символ - это одна единица текста. Это буква, цифра, какой-либо знак. Кодовая таблица символов состоит из 256 позиций, т.е. каждый символ имеет свой уникальный код от 0 до 255. Символ с некоторым кодом N записывают так: #N. Прямо так символы и указываются в коде программы. Так как код символа представляет собой число не более 255, то очевидно, что в памяти символ занимает 1 байт и имеет числовой код в соответствии с таблицей кодов ASCII. Как известно, менее байта размерности нет. Точнее, она есть - это бит, но работать с битами в программе мы не можем: байт - минимальная единица. Так же посмотреть таблицу символов и их коды можно с помощью стандартной утилиты "Таблица символов", входящей в Windows (ярлык расположен в меню Пуск - Программы - Стандартные - Служебные).Есть и другие кодовые таблицы, в которых 1 символ представлен не одним байтом, а двумя. Это Юникод (Unicode). В таблице Юникода есть символы всех языков мира. К сожалению, работа с Юникодом довольно затруднена и его поддержка пока что носит лишь локальный характер. 2 байта также называют словом (word). Отсюда и название соответствующего числового типа данных - Word (число, занимающее в памяти 2 байта, значения от 0 до 65535). Количество "ячеек" в таблице Юникода составляет 65536 и этого вполне достаточно для хранения всех языков мира. Если вы решили, что "1 байт - 256 значений, значит 2 байта - 2*256 = 512 значений", советую вспомнить двоичную систему и принцип хранения данных в компьютере.

Строки

Строка, она же текст - это набор символов, любая их последовательность. Соответственно, один символ - это тоже строка, тоже текст. Текстовая строка имеет определённую длину. Длина строки - это количество символов, которые она содержит. Если один символ занимает 1 байт, то строка из N символов занимает соответственно N байт. 

Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет две разновидности длины:

  • Общая длина строки, которая характеризует размер памяти, выделяемый строке при описании;
  • Текущая длина строки (всегда меньше или равна общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.

Типы данных

Для работы с символами и строками существуют соответствующие типы данных:

Char - один символ (т.е. 1 байт);
String
- строка символов, текст (N байт).

Официально строки вмещают лишь 255 символов. Для хранения больших текстов и текстов со специальными символами существуют специальные типы данных AnsiString и WideString (последний, кстати, двухбайтовый, т.е. для Юникода).

Действия с символами
  • Для задания текстовых значений в Pascal используются одинарные кавычки (не двойные!). Т.е. когда вы хотите присвоить строковой переменной какое-либо значение, следует сделать это так:  ch:='k';
Операции
#<положительная константа целого типа>

Результат - символ, номер которого в таблице ASCII соответствует заданному числу. Например,

#100  = 'd'
#39   = ''''         {апостроф}
#232  = 'ш'       
#1000 = 'ш'      {потому что (1000 mod 256)= 232}
Стандартные функции
 
chr(c)

"превращает" номер символа в символ. Действие этой функции аналогично действию операции #.

Например:    c:= chr(48);   {c: char}    {c = '0'}

оrd(a)
Обратная к функции chr()
Например:   a:=ord(‘0’) {a:byte} {a=48}
ord(chr(c)) = c            и                 chr(ord(a)) = a
upcase(c)
превращает строчную букву в прописную. Символы, не являющиеся строчными латинскими буквами, остаются без изменения (в их число входят и все русские буквы).
Например: c:=’f’; upcase(c); Результат: c=F
 
Действия со строками
// Результат: 'John  Black';
  • Если вы хотите жёстко ограничить длину текста, хранимого в строковой переменной, можно сделать это следующим образом:

var s:string[10]; {В скобках указывается максимальная длина строки.}


Символьная информация

Литерная (строковая) информация

Один символ

а:=’f ’;

b:=’*’;

c:=’4’; d:=’ 

Строка символов

a:=’строка’;

b:=’текстовая информация’

c:=’ 


Процедуры и функции для работы со строками.
  • Length(s:string):integer

Функция возвращает в качестве результата значение текущей длины строки-параметра

Пример.

n := length('Pascal'); {n будет равно 6}

  • Concat(s1,[s2,...,sn]:string):string

Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.

  • Copy(s:string; index:integer; count:integer):string

Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

Пример.

s := 'Язык Turbo Pascal';

s2 := copy(s, 1, 4); {s2 будет равно 'Язык'}

s3 := copy(s, 6, 5); {s3 будет равно 'Turbo'}

s4 := copy(s, 11, 6); {s4 будет равно 'Pascal'}

  •  Delete(var s:string; index,count:integer)

Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример.

s := 'Система Turbo Pascal';

delete(s,8,6); {s будет равно 'Система Pascal'}

  •  Insert(source:string; var s:string;index:integer)

Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

Пример.

s := 'Язык Pascal';

insert('Turbo ',s,5); {s будет равно 'Язык Turbo Pascal'}

 

  • Pos(substr,s:string):byte

Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Пример.

s := 'Язык Turbo Pascal';

x1 := pos('Pascal', s); {x1 будет равно 12}

x2 := pos('Basic', s); {x2 будет равно 0}

  • Str(X: арифметическое выражение; var st: string)

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.

  • Val(s : string, u : integer, c : integer), где s – строка, u – число из строки, с – код ошибки если преобразование не удалось.
Процедура преобразует строковое значение в его численное представление.               


<<          2
Часы

Праздники России

Праздники России



Uploader

Поиск

Полезные ссылки
  • Официальный блог
  • Сообщество uCoz
  • Программисту
  • Олимпиаднику
  • Как создать сайт с нуля
  • Сайт МОУ СОШ №81
  • 3DNews

  • Александр Михайлович Марченко © 2024 Конструктор сайтов - uCoz