русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Строки

Строковый тип данных(STRING) предназначен для обработки цепочек символов (литер, элементов типа CHAR). Переменные типа STRING могут быть объявлены следующим образом:

<имя переменной>:STRING[длина]

или

<имя переменной>:STRING

В стандарте Паскаля такого типа данных нет.

Параметр длина задает максимальную длину строки (максимальное число символов цепочки). Если максимальный размер строки не указан, то он автоматически принимается равным 255 – максимально возможной длине строки. Для переменной типа string резервируется участок памяти длиной длина+1 байт. Дополнительный байт используется для хранения значения текущей длины строки.

В языке Паскаль широко используются константы строкового типа. Они представляют собой цепочки произвольных символов используемой кодовой таблицы, заключенные в апострофы. Например: ‘ВОТ’ – цепочка из трех символов, ‘’ – пустая цепочка.

Строка обладает всеми свойствами массива литер, то есть, структуры данных, описанной описателем array[0..длина] of char. Если имеются описания s,s1:string[10], то, в отличие от массива, допустимы присваивания

s:=’BOT’

s1:=’’.

При этом текущая длина строки s будет равна 3, текущая строка s1 – 0. Текущая длина строки – целое положительное число в диапазоне от 0 до длина – хранится в нулевом элементе строки как данное типа char (s[0]=chr(3), s1[0]=chr(0)). В первом элементе строки s – s[1] – хранится символ ‘B’, во втором – ‘O’, в третьем – ‘T’, значение элемента s[4] неопределенно, обращение к нему является ошибкой, поскольку индекс превышает текущее значение длины строки.

Текущая длина строки не должна превышать максимальную длину.

К строкам применимы стандартные процедуры ввода и вывода. Если выдать на экран значения строк s и s1, то получим:

writeln(s) – на экране строка ‘ВОТ’,

writeln(s1) – на экране пустая строка.

Над строковыми данными определена бинарная операция конкатенации (+). Результатом конкатенации двух строк является строка, содержащая последовательно все символы левого операнда, а затем все символы правого операнда. Вот примеры использования конкатенации:

writeln(s) – на экране текст ВОТВОТ;

s1:=s+’ KOT’; writeln(s1) – на экране ВОТ КОТ.

Пример использования строк для обеспечения защиты ввода целого числа от «дурака». Под «дураком» подразумевается пользователь программы, позволяющий себе, не взирая на настоятельные предупреждения разработчика о формате вводимой информации, вводить произвольную последовательность символов. При использовании стандартных средств ввода в таких случаях может возникнуть ошибка ввода, приводящая к прерыванию выполнения программы. Для обеспечения нормальной работы программы при вводе можно воспользоваться следующим средством:

program Enter_int;

type status=(beginning,znak,Ok,Err);

var s:string; zn,k,i:integer; c:char;

n:longint;

stat:status;

cifra:boolean;

begin

repeat

writeln(‘Введите целое по модулю меньшее ’,$7FFF:1);

readln(s);

k:=length(s);

zn:=1;

n:=0;

stat:=beginning;

for i:=1 to k do

begin

c:=s[i];

cifra:=(c>='0') and (c<='9');

case stat of

beginning: case c of

' ': ;

'+': stat:=znak;

'-': begin stat:=znak; zn:=-1 end;

'0'..'9': begin n:=n*10+ord(c)-ord('0');

stat:=Ok end;

else stat:=Err

end;

znak: if cifra then

begin

n:=n*10+ord(c)-ord('0'); stat:=Ok

end else stat:=Err;

Ok: if cifra then

begin

n:=n*10+ord(c)-ord('0'); stat:=Ok

end else stat:=Err;

end;

end;

n:=zn*n;

if abs(n)>=$7FFF then stat:=Err;

until stat=Ok;

writeln('rezult ',n)

end.

Переменную типа STRING можно сравнивать с другой переменной или константой типа STRING, используя отношения =, <, >, <=, >=, <>. Используется лексикографический порядок (как в каталогах библиотек).

В TP имеются следующие функции для обработки строк:

  • CONCAT - функция имеет произвольное число параметров строкового типа, результат - строка, полученная последовательной склейкой параметров. Если длина полученной строки превышает 255 символов, то происходит усечение;
  • COPY(S:string; ind,count:integer):string - возвращает подстроку S длиной count, начиная с литеры номер ind. При несоответствии с максимальной длиной используется усечение;
  • DELETE(var S:string; ind,count:integer) - удаляет из S count символов, начиная с ind;
  • INSERT(St:string; var S:string; ind:integer) - вставляет в S St, начиная с позиции ind;
  • LENGTH(S:string) - функция, возвращает текущую длину строки S;

Две процедуры можно рассматривать как процедуры преобразования типа:

  • VAL(S:string; var V; var code:integer) - где V - переменная целого или вещественного типа. Процедура выделяет из строки последовательность символов, преобразует к типу соответствующей переменной и присваивает полученное значение этой переменной. Процедура VAL является строковым аналогом процедуры READ. Если при чтении из строки встречается недопустимый символ, то в переменной code возвращается его номер. В противном случае этот параметр равен нулю;
  • STR(X; var S:string) - преобразует численное значение целого или вещественного типа в его строковое представление. Эта процедура является строковым аналогом процедуры WRITE. После выражения X можно указать длину и точность представления данных.

Вот примеры использования процедур VAL и STR.

var X:real; S:string; i:integer;

begin

X:=3.1415926;

STR(X:8:4, S); S:='X=' + S;

Writeln(S); { на экране 'X= 3.1416'}

S:=DELETE(S,1,2); {удалили первые два символа}

VAL(S,X,i);

if i=0 then writeln(X:10:6) {на экране ' 3.141600'}

end.

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

Просмотров: 467


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.