Программа паскаль строковые функции

В Pascal строкой называется массив из Литерных символов, где 0-ое значение занято размером строки.

Общее.

При объявлении строки можно задать её размер. Максимальный размер строки 255 символов. По умолчанию, если размер строки не указан явно, в Borland Pascal и Turbo Pascal размер строки будет равен 255 символов, в UCSD Pascal – 80. В FreePascal и Delphi не ограниченная переменная string имеет на самом деле имеет тип AnsiString который может занимать максимальный размер в памяти до 2 Гб это 2147483646 символов.

В Object Pascal строковая переменная так же имеет ограничение в 2 Гб.

Объявление строки.

Что бы объявить строку, в блоке var надо указать тип string и возможно указать кол-во элементов, по следующему шаблону:

Пример объявления строковой переменной:

Delphi/Pascal
s1 , s2 : string [ 80 ] ;

Можно так же объявить строку, через объявления пользовательского типа.

Шаблон такого способа будет выглядеть так:

Delphi/Pascal
MyString = string [ 80 ] ;
s : MyString ;

#8 Паскаль: String. Строки, строковый тип данных и работа с ним

Процедуры предназначенные для работы над строками:

Delete

Procedure Delete(Var Str: String; Poz: Integer; Count: Integer); — Из строки Str удаляет Count символов, начиная с позиции Poz.

Delphi/Pascal
program DeleteString ;
Str : string ;
Str : = ‘123456789’ ;
Delete ( Str , 3 , 4 ) ;
Writeln ( Str ) ;

В результатае строка Str будет иметь значение ‘12789’ соответственно 4 символа начиная с третьего были удалены ‘3456’.

Insert

Procedure Insert(S: String; Var Str: String; Poz: Integer); — Вставляет строку S в строку Str, начиная с позиции Poz.

Delphi/Pascal
program InsertString ;
Str : string ;
Str : = ‘123456789’ ;
Insert ( ‘000’ , Str , 3 ) ;
Writeln ( Str ) ;

В результатае строка Str будет иметь значение ‘120003456789’ соответственно была вставлена подстрока ‘000’ начиная с третьего символа.

Str

Procedure Str(IR:[Integer;Real] ; var Str: String); — Преобразует числовое значение IR в строку, и помещает его в строку Str.

Delphi/Pascal
program IntOrRealToString ;
Str ( 123 , S ) ;
Writeln ( S ) ;

В результате строка S будет иметь значение ‘123’.

Val

Procedure Val(Str: String; var IR:[integer, real]; var Error: Integer); — Преобразует значение Str в целочисленный или вещественный тип и помещает результат в переменную IR. В переменную error будет помещаться позиция первого символа, на котором произошла ошибка.

Delphi/Pascal
program StringToRealOrInteger ;
i , error : Integer ;
Val ( S , i , Error ) ;
Writeln ( i ) ;
Writeln ( Error ) ;

В результате переменная i будет содержать число 123, а переменная Error число 4 .

Функции предназначенные для работы со строками:

Copy

Function Copy(Str: String; Poz: Integer; Count: Integer): String; — функция Сopy возвращает строку содержащую Count символов, начиная с Poz.

Delphi/Pascal
program StringCopy ;
S , SCopy : string ;
S : = ‘123456789’ ;
SCopy := Copy ( S , 2 , 4 ) ;
Writeln ( SCopy ) ;

Программирование на языке Pascal. Урок 9. Строки.

В результате в переменной SCopy будет строка ‘2345’ .

Concat и +

Function Concat(Str1[,Str2,…,StrN]: String): String; — Результатом функции будет строка, являющаяся объединением строк Str1[,Str2,…,StrN]. Если в результате получится строка больше 255 символов, то строка обрежеться до 255 -ого символа.

Delphi/Pascal
program ConcatString ;
S := Concat ( ‘123’ , ‘4’ , ‘5’ , ‘678’ , ‘9’ ) ;
Writeln ( S ) ;

В результате в строке S будет значение ‘123456789’.

Такой же результат можно добиться используя оператор + (сложения):

Delphi/Pascal
program ConcatString ;
S : = ‘123’ + ‘4’ + ‘5’ + ‘678’ + ‘9’ ;
Writeln ( S ) ;

Читайте также:
Программа которая решает дроби

Length

Function Length(Str: String) : Integer; — результатом данной функции будет текущая длина строки.

Delphi/Pascal
program LengthString ;
I : Integer ;
I := Length ( ‘123456789’ ) ;
Writeln ( I ) ;

В результате в переменной I будет содержаться число 9, что соответствует длине строки ‘123456789’.

Pos

Function Pos(S: String; Str: String): Byte; — Функция Pos возвращает позицию первого вхождения строки S в строку Str. Если строки S нет в строке Str, то возвращается 0.

Delphi/Pascal
program PosString ;
i : integer ;
i := Pos ( ‘456’ , ‘123456789’ ) ;
Writeln ( i ) ;

В результате в переменной i будет содержаться число 4, что соответствует началу первого вхождени подстроки ‘456’ в строку ‘123456789’.

Так же к строкам можно применить логические операции:

‘=’ — операция равно. Если две строки равны результат будет TRUE, в противном случае FALSE.

<> — операция не равно. Если строки равны результат будет FALSE, в противном случае TRUE.

— операции больше или меньше. Сравнивает две строки по алфавиту. так например ‘a’
Delphi/Pascal
program LogString ;
Writeln ( ‘Àíòîí’ < ‘John’ ) ; < FALSE >
Writeln ( ‘Anton’ = ‘John’ ) ; < FALSE >
Writeln ( ‘Anton’ = ‘Anton’ ) ; < TRUE >
ВКонтакте ( X )
Facebook ( X )
Думьянус Ностардамус
Хорошой сайт, хорошой
Данил Женин
тут ошибка в слове алфавит.
Спасибо, поправил.
Данилл Женин
можно ли сделать через строки сложение длинных целых чисел

сделать можно … но мне кажется инструмент не тот.. или я вас не так понял.
В классическом паскале строки 255 символов. Конечно в современных реинкарнациях максимальное количество символов должен быть больше. Но всё равно это как то не рационально. Предлагаю числа хранить в файлах.
Брать посимвольно, складывать сохранять в конец 3 файла. и в памяти надо хранить 1 или 0.
В итоге в случае прирывания процесса… чисто теоретически мы можем начать с места на котором остановились. Если же числа не настолько большие… то в принципе в современных компиляторах есть всякие типы double. которые вполне справляются со сложением больших чисел. (вопрос точности Например Powershell:

Источник: coolcode.ru

Pascal. Строки символов типа String. Функции работы со строками символов

Строки символов типа String. Функции работы со строками символов. Функции Concat , Copy , Delete , Insert , Length , Pos , Val , Str

Поиск на других ресурсах:

1. Функция Concat . Конкатенация (слияние) строк

Для конкатенации (добавления, слияния) строк используется функция Concat . Общая форма использования функции следующая

ResStr := Concat(S1:string; S2:string [; . SN:string])

  • S1 , S2 , SN – строки, которые нужно объединить;
  • ResStr – результирующая строка.

Для вызова функции нужно указывать как минимум одну строку-параметр. Результат выполнения функции – результирующая строка типа string .

Пример.

program Project1; uses SysUtils; var S1, S2, S3, ResStr : String; begin // Функция Concat() — конкатенация строк S1 := ‘Hello’; S2 := ‘,’; S3 := ‘ world’; ResStr := Concat(S1, S2, S3, ‘!’); Writeln(ResStr); // Hello, world! Readln; end.

Результат выполнения программы

Hello, world!

2. Функция Copy . Получить копию подстроки из указанной строки

Для выделения некоторого фрагмента из строки используется функция Copy , имеющая следующее использование

ResStr := Copy(S, Start, Len);

  • S – строковая величина типа String , из которой выделяется фрагмент;
  • Start – величина типа Integer , определяющая позицию начала выделяемого фрагмента;
  • Len – величина типа Integer , определяющая количество символов фрагмента, которые нужно выделить.
  • ResStr – результатом выполнения этой процедуры есть величина типа String .

Пример.

program Project1; uses SysUtils; var S1, S2, S3: String; begin // Функция Copy() — получить подстроку из строки S1 := ‘1234567890’; // исходная строка S2 := Copy(S1, 4, 3); // S2 = ‘456’ Writeln(S2); S3 := Copy(S1, 8, 5); // S3 = ‘890’ Writeln(S3); Readln; end.

Читайте также:
Какое расширение имеют файлы созданные в программе ms World

Результат выполнения программы

456 890

3. Процедура Delete . Удаление подстроки из строки

С помощью процедуры Delete можно удалить некоторый фрагмент из строки. Общий вид процедуры:

Delete(S, Start, Len)

  • S – строковая величина, из которой удаляется фрагмент;
  • Start – порядковый номер первого символа удаляемого фрагмента;
  • Len – количество символов фрагмента, которые нужно удалить.

Пример.

program Project1; uses SysUtils; var S : String; begin // 1. Исходная строка S := ‘ABCDEF’; // 2. Удалить фрагмент CD delete(S, 3, 2); // S = ‘ABEF’ Writeln(S); // 3. Задать новую строку S := ‘123456789’; // 4. Удалить фрагмент ‘4’ delete(S, 4, 1); Writeln(S); Readln; end.

Результат выполнения программы

ABEF 12356789

4. Процедура Insert . Добавить подстроку к строке

Для вставки в заданную строку другой подстроки используется процедура Insert . В общем случае использование этой процедуры следующее

Insert(S, S_new, Start);

  • S – строковая величина – вставляемый фрагмент;
  • S_new – строковая величина, в которую вставляется фрагмент S и где получается результат вставки;
  • Start – порядковый номер символа в строке S_new , перед которым вставляется фрагмент S . Значение Start нумеруется с 1.

Пример.

program Project1; uses SysUtils; var S1, S2, S3: String; begin // Процедура Insert() — вставить подстроку в строку // 1. Вставка на начало строки S1 := ‘ABCD’; Insert(‘000’, S1, 1); Writeln(S1); // 2. Вставка посредине строки S1 := ‘12345678’; // Исходная строка S2 := ‘ABC’; // Вставляемая строка // Вызов процедуры Insert Insert(S2, S1, 3); // S1 = 12ABC345678 Writeln(S1); // 3. Добавление в конец строки S1 := ‘12345678’; Insert(‘ABCD’, S1, 9); // S1 = 12345678ABCD Writeln(S1); Readln; end.

Результат выполнения программы

000ABCD 12ABC345678 12345678ABCD

5. Функция Length . Получить текущую длину строки

Для определения длины строки используется стандартная функция Length . В наиболее общем случае использование функции может быть следующим

Len := Length(S);

  • S – строка типа String ;
  • Len – количество символов в строке S (длина строки).

Пример.

program Project1; uses SysUtils; var S : String; Len : Integer; begin // Функция Length() — получить длину строки S := ‘Hello, world!’; Len := Length(S); // Len = 13 Writeln(Len); Len := Length(»); // Len = 0 Writeln(Len); Readln; end.

Результат выполнения программы

13 0

6. Функция Pos . Поиск подстроки в строке

Для определения местоположения искомого фрагмента строковой величины можно воспользоваться функцией

position := pos(S_find, S);

  • S_find – искомая подстрока;
  • S – строка;
  • Position – позиция, с которой начинается подстрока S_find в строке S . Значение Position есть типа Byte и нумеруется с 1. Если искомой подстроки в строке не существует, то Position = 0 .

Пример.

program Project1; uses SysUtils; var S : String; Position : Byte; begin // Функция Pos() — определить позицию вхождения подстроки в строку // 1. Подстрока есть в строке S := ‘123456789’; Position := Pos(‘345’, S); // Position = 3 Writeln(Position); // 2. Подстроки нету в строке Position := Pos(‘ABCD’, ‘ABC’); // Position = 0 Writeln(Position); // 3. В строке есть несколько вхождений подстроки Position := Pos(‘AB’, ‘ABCD ABC ABD BAB’); // Position = 1 Writeln(Position); Readln; end.

Результат выполнения программы

3 0 1

7. Процедура Val . Конвертировать строку в число

Процедура Val позволяет преобразовать строку в число. При этом считается, что строка является представлением числа в символьной форме (например, ‘2.85’, ‘1879’). Эта процедура производит обратную операцию по отношению к процедуре Str .
В наиболее общем случае использование процедуры Val имеет вид:

val(S, V, ErrCode);

  • S – строковая величина;
  • V – величина числового типа, которую нужно преобразовать;
  • ErrCode – код результата выполнения процедуры. Если преобразование произошло успешно, то ErrCode=0 . Если из строки S невозможно получить число V , то ErrCode равен номеру позиции в строке S , которую нельзя преобразовать. К примеру, для строки ‘123A56’ вызов процедуры Val вернет ErrCode = 4 .
Читайте также:
Какие есть программы для копирования файлов

Пример.

program Project1; uses SysUtils; var S : String; V1 : Integer; V2 : Real; Code : Integer; begin // Процедура Val, // 1. Конвертировать String => Integer S := ‘286’; Val(S, V1, Code); // Обработать результат if Code = 0 then Writeln(‘Ok! V1 = ‘, V1) else Writeln(‘Error!

ErrCode = ‘, Code); // 2. Конвертировать String => Real S := ‘-38.25’; Val(S, V2, Code); // Обработать результат if Code = 0 then Writeln(‘Ok! V2 = ‘, V2) else Writeln(‘Error! ErrCode = ‘, Code); // 3. Попытка конвертировать строку, содержащую недопустимые символы S := ’18U7’; // здесь недопустимые символы Val(S, V2, Code); // Code = 3 if Code = 0 then Writeln(‘Ok! V2 = ‘, V2) else Writeln(‘Error! ErrCode = ‘, Code); Readln; end.

Результат выполнения программы

Ok! V1 = 286 Ok! V2 = -3.82500000000000E+0001 Error! ErrCode = 3

8. Процедура Str . Конвертировать число в строку

Процедура Str является обратной процедуре Val и позволяет конвертировать величину числового типа ( Integer , Real и т.д.) в строку типа String . Общая форма использования процедуры

Str(V, S);

  • V – величина числового типа, значение которой преобразуется в строковый вид;
  • S – результат преобразования строкового типа.

Приклад.

program Project1; uses SysUtils; var S : String; V1 : Integer; V2 : Real; begin // Процедура Str, // 1. Конвертировать Integer => String V1 := 277; Str(V1, S); // S = ‘277’ Writeln(‘S = ‘, S); // 2. Конвертировать Real => String V2 := 8.53; Str(V2, S); Writeln(‘S = ‘, S); Readln; end.

Результат выполнения программы

S = 277 S = 8.53000000000000E+0000

Связанные темы

  • Тип String . Операции над строками символов
  • Логические типы. Символьные типы. Строчные типы

Источник: www.bestprog.net

Строковый тип данных в Паскале

При работе со строками, как правило, возникает необходимость выполнять их копирование, вставку, удаление или поиск. Для эффективной реализации этих действий в Паскале предусмотрены стандартные процедуры и функции. Они кратко описаны ниже. Функция Concat (s1, s2, . sn) возвращает строку, являющуюся слиянием строк s1, s2, . sn.

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s. Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len. Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start. Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.

Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s. Процедуры преобразования типов Процедура Str (x, s) преобразует числовое значение x в строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln. Например: x := 123; s := str(x:6,s); — Результат: s = ‘ 123’. Процедура Val (s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено.

Пример.

Задача: выяснить сколько пробелов в введенной строке. program Probely; var s: string; i , n: integer; begin n := 0; writeln(‘Введите исходную непустую строку:’); readln(s); for i:=1 to length(s) do if s[i]=’ ‘ then n := n+1; writeln(‘В строке «‘,s,’ ‘,n,’ пробелов.’); end.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru