String что это в информатике
Строковый тип данных в Паскале
Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.
Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.
Примеры описания строк:
Длина строки хранится в первом ее байте, индекс которого равен 0.
Объявление типизированной константы для типа string осуществляется так:
Существует понятие пустой строки, то есть строки, в которой нет ни одного символа. Пустая строка обозначается двумя рядом стоящими апострофами (например, st : = » ).
Операции над строками
Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.
Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.
Строки можно сравнивать друг с другом с помощью операций отношения. При сравнении строки рассматриваются посимвольно слева направо, при этом сравниваются коды соответствующих пар символов. Строки равны, если они имеют одинаковую длину и посимвольно эквивалентны. В строках разной длины существующий символ всегда больше соответствующего ему отсутствующего символа. Меньшей будет та строка, у которой меньше код первого несовпадающего символа (вне зависимости от максимальных и текущих длин сравниваемых строк).
Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.
Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str [ 3 ] : = ‘j’ ).
Элементы строки нумеруются с единицы, так как в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:
Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str [ 0 ] : = #50 устанавливает текущую длину равной 50.
Тип данных String (Visual Basic)
Содержит последовательности 16-разрядных (2-байтовых) кодовых точек без знака, которые находятся в диапазоне от 0 до 65535. Каждая кодовая точка, или код символа, представляет один символ Юникода. Строка может содержать от 0 до приблизительно 2 000 000 000 (2 ^ 31) символов Юникода.
Комментарии
Значение по умолчанию String — Nothing (пустая ссылка). Обратите внимание, что это не то же самое, что пустая строка (значение «» ).
Символы Юникода
Первая 128 кодовых позиций (0 – 127) Юникода соответствует буквам и символам стандартной клавиатуры США. Первые 128 кодовые точки те же, что и кодировка ASCII. Вторая 128 кодовых позиций (128 – 255) представляет специальные символы, такие как буквы латинского алфавита, диакритические знаки, символы валют и дроби. В Юникоде используются оставшиеся кодовые точки (256-65535) для широкого спектра символов. Это включает в себя международные текстовые символы, диакритические знаки, математические и технические символы.
IsDigitДля определения своей классификации Юникода можно использовать методы, например и, для IsPunctuation отдельного символа в String переменной.
Требования к формату
Литерал необходимо заключать String в кавычки ( » » ). Если необходимо включить кавычки в качестве одного из символов в строке, используются две смежные кавычки ( «» ). Это показано в следующем примере.
Обратите внимание, что смежные кавычки, представляющие кавычки в строке, не зависят от кавычек, начинающихся и заканчивая String литералом.
Манипуляции со строками
После присвоения строки String переменной эта строка является неизменяемой, что означает, что изменить ее длину или содержимое нельзя. при изменении строки каким-либо образом Visual Basic создает новую строку и задействует предыдущую. String Затем переменная указывает на новую строку.
Вы можете манипулировать содержимым переменной с String помощью различных строковых функций. В следующем примере показана Left функция
Строка, созданная другим компонентом, может быть дополнена начальными или конечными пробелами. Если вы получаете такую строку, Trim LTrim RTrim для удаления этих пробелов можно использовать функции, и.
Дополнительные сведения об операциях со строками см. в разделе строки.
Советы по программированию
Отрицательные числа. Помните, что символы, удерживаемые, String не подписаны и не могут представлять отрицательные значения. В любом случае не следует использовать String для хранения числовых значений.
Тип STRING
STRING [ максимальная длина ]
— строке можно присвоить строку;
— строки можно вводить процедурой READLN;
— строки можно выводить процедурой WRITE[LN];
— для строк определена операция сцепления +, при этом вторая строка дописывается справа к первой и длина результата становится равной сумме длин операндов (если она не превосходит 255).
Запишем программу, выполняющую простейшие операции со строками:
TYPE ShortString = STRING[80];
VAR s1,s2 : ShortString; s3 : STRING;
BEGIN WRITE(‘Введите 1-ю строку ‘); READLN(s1);
WRITE(‘Введите 2-ю строку ‘); READLN(s2);
WRITELN(‘Вы ввели ‘,s1,’ и ‘,s2); WRITELN(‘s1+s2=’,s1+s2);
s3:=s1+s1+s1; WRITELN(‘s1,повторенная 3 раза ‘,s3);
Обратите внимание, что при вводе строк всегда используется READLN, но не READ. Процедура READ в отличие от READLN считывает лишь символы до символа конца строки (клавиша Enter), который остается в буфере клавиатуры. Таким образом, пользуясь процедурой READ можно ввести только одну строку; все строки, вводимые вслед за первой, станут пустыми. Например, программа
BEGIN WRITE(‘Введите 1-ю строку ‘); READ(s1);
WRITE(‘Введите 2-ю строку ‘); READ(s2);
WRITELN(‘Вы ввели «‘,s1,'» и «‘,s2,'»‘);
при входном потоке abcdef Enter 123456 Enter выведет : Вы ввели «abcdef» и «». Запишем теперь программу, которая вводит некоторую строку, заменяет в ней все цифры на пробелы и дописывает в конец строки символы «. «:
VAR s : STRING; L,i : Byte;
BEGIN WRITE(‘Введите строку ‘); READLN(s);
FOR i:=1 TO L DO IF s[i] IN [‘0′..’9′] THEN s[i]:=’ ‘;
FOR i:=L+1 TO L+3 DO s[i]:=’?’;
WRITELN(‘Вот что получилось : ‘,s);
Для обработки строк в Паскале существует несколько стандартных функций и процедур :
Из вышеизложенного понятно, что процедуры и функции могут иметь параметры типа STRING (что неудивительно), но также допустимы функции типа STRING, хотя это и не скалярный тип. Еще две стандартные процедуры предназначены для перевода строки в число и числа в строку:
Теперь, зная процедуру Val, вы можете организовать надежный ввод числовых данных в любой своей программе. Предположим, что программа должна вводить вещественное значение F. Мы можем записать это так :
WRITE(‘Введите F ‘); READLN(S);
Val(S,F,Code); IF Code=0 THEN Break;
1) удалим завершающие пробелы, после чего текст примет регулярный вид *X*X. *X;
2) удалим лидирующие пробелы;
3) выделим первое слово и удалим его из текста.
После выполнения пунктов 2 и 3 мы получили одно слово и текст стал короче на одно слово, сохранив при этом свою структуру. Очевидно, что пункты 2 и 3 следует выполнять до тех пор, пока текст не пуст. Запишем программу, реализующую этот алгоритм.
VAR s : STRING; i : Byte;
CONST Letters : SET OF Char = [‘а’..’п’,’р’..’я’,’А’..’Я’];
BEGIN WRITE(‘Введите текст ‘); READLN(s);
WHILE NOT(s[Length(s)] IN Letters) DO Delete(s,Length(s),1);
WHILE NOT(s[1] IN Letters) DO Delete(s,1,1);
Pascal: Занятие № 11. Строковый тип данных в Паскаль
Символьный тип char в Паскале
Символьной переменной соответствует тип char:
Инициализация символьной переменной:
Основные функции для работы с символами
Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:
Функция возвращает порядковый номер символа параметра в таблице ASCII:
var i: integer; begin for i:=32 to 255 do write(chr(i):3); end.
var c := ‘Ю’; var n := Ord(c); // n := c.Code Print(n); // 1070 c := Chr(n); print(c); // Ю
Символьные константы: #код – символ с определенным кодом:
#10 – новая строка (Linux) #13#10 – новая строка (Windows) #9 – tab Print(‘a’#10’b’);
char.IsLetter(с); // буква ли, boolean char.IsDigit(с); // десятичное ли число, boolean char.IsLower(с); // буква нижнего регистра, boolean char.IsUpper(с); // буква верхнего регистра, boolean char.IsPunctuation(с); // знак препинания, boolean с := char.ToLower(с) ; с := char.ToUpper(с);
c1 c2; с in [‘a’,’e’,’i’,’o’,’u’,’y’]; // c принадлежит гласным с in [‘a’..’z’,’A’..’Z’]; // c принадлежит английским буквам
//c принадлежит диапазону: c.InRange(‘a’..’z’); //Трансформация символа в цифру: var n := Ord(c) – Ord(‘0’); // Увеличение кода символа на n: c := Chr(Ord(c) + n); // или Inc(c,2);
Строковые переменные в Паскаль
Строковые переменные в Паскале имеют тип String
Объявление и инициализация строковой переменной:
var a:string; begin a:=’Привет всем!’; writeln(a); end.
Ввод значения строковой переменной с клавиатуры:
var a:string; begin writeln(‘Введите слово’); readln(a); writeln(‘Вы ввели слово ‘,a); end.
Строка «рассматривается» компилятором, как массив букв:
Функции работы со строками в Pascal
var s:string[30]; n,i:integer; begin writeln(‘введите текст’); readln(s); n:=0; for i:=1 to length(s) do if s[i]=’f’ then n:=n+1; write(‘в тексте букв f = ‘,n) end.
* Задание повышенной сложности: запросить у пользователя ввести подстроку, которую требуется удалить из исходной строки.
* усложненный вариант: предусмотреть, что в начале или в конце введенной строки введен пробел
const m = [‘0’..’9′]; var s: string; i, k: byte; begin read(s); k := 0; for i := 1 to length(s) do if s[i] in m then inc(k); writeln(‘цифр = ‘, k); readln; end.
var a,b,c:string; i:longint; begin write(‘введите слово:’); readln(a); b:=»; for i:=1 to length(a) do b:=a[i]+b; if a=b then write(‘перевертыш’) else write(‘не перевертыш’); end.
String 6. Определить, встречается ли в тексте сочетание букв «ку».
String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).
Примечание:
Использовать функции: Pos, Copy, Delete
Пример:
Трудность низкая:
Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.
Трудность высокая:
Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.
А теперь рассмотрим олимпиадное задание по Паскалю:
Посимвольный ввод до пробела
Посимвольный ввод удобен для «мгновенной» обработки символов в строке.
Для организации массива символьных строк:
Пример:
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:
Строковый тип
В программировании, строковый тип (англ. string «нить, вереница») — тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.
Содержание
Представление в памяти
Некоторые языки программирования накладывают ограничения на максимальную длину строки, но в большинстве языков подобные ограничения отсутствуют. При использовании Unicode каждый символ строкового типа может требовать двух или даже четырёх байтов для своего представления.
Основные проблемы в машинном представлении строкового типа:
В представлении строк в памяти компьютера существует два принципиально разных подхода.
Представление массивом символов
В этом подходе строки представляются массивом символов; при этом размер массива хранится в отдельной (служебной) области. От названия языка Pascal, где этот метод был впервые реализован, данный метод получил название Pascal strings.
Слегка оптимизированным вариантом этого метода является т. н. формат c-addr u (от англ. character-aligned address + unsigned number ), применяемый в Форте. В отличие от Pascal strings, здесь размер массива хранится не совместно со строковыми данными, а является частью указателя на строку.
Преимущества
Недостатки
Метод «завершающего байта»
Второй метод заключается в использовании «завершающего байта». Одно из возможных значений символов алфавита (как правило, это символ с кодом 0) выбирается в качестве признака конца строки, и строка хранится как последовательность байтов от начала до конца. Есть системы, в которых в качестве признака конца строки используется не символ 0, а байт 0xFF (255) или код символа «$».
Метод имеет три названия — ASCIIZ (символы в кодировке ASCII с нулевым завершающим байтом), C-strings (наибольшее распространение метод получил именно в языке Си) и метод нуль-терминированных строк.
Преимущества
Недостатки
Использование обоих методов
В таких языках, как, например, Оберон, строка размещается в массиве символов определённой длины, причём её конец обозначается нулевым символом. По умолчанию, весь массив заполнен нулевыми символами. Такой способ позволяет объединить многие преимущества обоих подходов, а также избежать большинство их недостатков.
Реализация в языках программирования
Операции
Представление символов строки
До последнего времени один символ всегда кодировался одним байтом (8 двоичных битов; применялись также кодировки с 7 битами на символ), что позволяло представлять 256 (128 при семибитной кодировке) возможных значений. Однако для полноценного представления символов алфавитов нескольких языков (многоязыковых документов, типографских символов — несколько видов кавычек, тире, нескольких видов пробелов и для написания текстов на иероглифических языках — китайском, японском и корейском) 256 символов недостаточно. Для решения этой проблемы существует несколько методов: