Язык программирования Паскаль (версия PascalABC.NET)
Строковые величины в языке программирования Pascal
Строковая константа (строка) – последовательность любых символов, заключённая в апострофы. Например:
'Это строка'
Длина строки – количество символов в строке (до 255 символов).
Пустая строка – строка с нулевой длиной (не содержит ни одного символа, обозначается '' ).
Объявление строковой переменной:
Var : string ;
Если только один символ, можно использовать символьный тип:
Var : char ;
Операции со строками
1. Присваивание значения строковой переменной
s := 'Строка' ;
2. Ввод строки с клавиатуры
Read ln (s); Примечание: при вводе значения строки апострофы не вводятся.
3. Вывод строки на экран
Writeln(s); Примечание: при выводе строки апострофы не выводятся.
4. Работа с отдельным символом s[ 6 ] := 'и' ; Примечание: символы нумеруются, начиная с 1.
Операции со строками
5. Определение длины строки
Функция Length(s) возвращает значение длины строки.
Например:
length(s) {=6}
length( 'ЭВМ' ) {=3}
length( '' ) {=0}
6. Присоединение строк (конкатенация)
Соединяет несколько строк в одну строку. Обозначается знаком + .
Например:
'КОМ' + 'ПЬЮ' + 'ТЕР' {='КОМПЬЮТЕР'}
'10' + '2' {='102'}
Операции со строками
7. Функция выделения части строки (подстроки)
Copy(s, n, k)
Выделяет из строки s часть строки длиной k символов, начиная с позиции n .
Например:
copy( 'ИНФОРМАТИКА' , 3 , 5 ) {='ФОРМА'}
8. Процедура удаления части строки
Delete (s, n, k)
Удаляет из строки s часть строки длиной k символов, начиная с позиции n .
Например:
delete( 'ИНФОРМАТИКА' , 4 , 8 ) {='ИНФ'}
Операции со строками
9. Процедура вставки строки в другую строку
Insert (s1, s2, n)
Вставляет строку s1 в строку s2 , начиная с позиции n .
Например:
insert( 'А' , '9 кл.' , 2 ) {='9А кл.'}
10. Функция поиска части строки (подстроки)
Pos(s1, s2)
Возвращает номер позиции, в которой обнаружено первое появление подстроки s1 в строке s2 . Если такого вхождения нет, результат равен 0.
Например:
pos( 'ФОРМА' , 'ИНФОРМАТИКА' ) {=3}
pos( 'Е' , 'ИНФОРМАТИКА' ) {=0}
, , =. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если первый несовпадающий символ имеет больший код в кодовой таблице (пробел, цифры, латинские заглавные, латинские строчные, русские заглавные, русские строчные). Строки равны, если они совпадают по длине и содержат одни и те же символы. Например: 'Слово1' 'Слово' 'СЛОВО' {истина} 'Слово' 'Слово' = 'Слово' {истина} " width="640"
Операции со строками
11. Сравнение строк
Операции отношения: = , , , , , =.
Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если первый несовпадающий символ имеет больший код в кодовой таблице (пробел, цифры, латинские заглавные, латинские строчные, русские заглавные, русские строчные). Строки равны, если они совпадают по длине и содержат одни и те же символы.
Например:
'Слово1'
'Слово' 'СЛОВО' {истина}
'Слово'
'Слово' = 'Слово' {истина}
Задача 1
Получить с помощью операций выделения части строки и конкатенации из слова «ИНФОРМАТИКА» слово «ФИРМА».
1 2 3 4 5 6 7 8 9 10 11
И Н Ф О РМА ТИКА
Program Konkat1;
Var a, b: string ;
Begin
a:= 'ИНФОРМАТИКА' ;
b:=a[ 3 ]+a[ 1 ]+copy(a, 5 , 3 );
writeln(b)
End .
Задача 2
В двух строках хранятся фамилия и имя человека. Получить две другие строки в виде «Фамилия_И.», «Имя_Ф.».
Program Konkat2;
Var a, b, c, d: string ;
Begin
write ( 'Введите фамилию: ' ); readln (a);
write ( 'Введите имя: ' ); readln (b);
writeln;
c := a + '_' + b[ 1 ] + '.' ;
writeln(c);
d := b + '_' + a[ 1 ] + '.' ;
writeln(d);
End .
Задача 3
Из данной строки получить другую строку, состоящую из тех же символов, но в обратном порядке.
Program Perevertysh;
Var a, b: string ; i: integer ;
Begin
writeln( 'Введите строку:' ); readln(a);
b:= '' ; //нач. знач. результата пустая строка
//перебор символов от первого до последнего
for i:= 1 to length(a) do
b:=a[i]+b; //присоед. текущ. симв. в начало
writeln( 'Перевернутая строка:' );
writeln(b);
End .
Задача 4
Подсчитать, сколько раз в данном тексте встречается некоторый заданный символ.
Program Kol_simv;
Var a: string ; b: char ; i, k: integer ;
Begin
writeln( 'Введите текст:' ); readln(a);
writeln( 'Какой символ подсчитать?' ); readln(b);
k:= 0 ; //начальное значение счётчика
for i:= 1 to length(a) do //перебор символов
//если заданный символ, увелич. счётчик на 1
if a[i]=b then k:=k+ 1 ;
writeln( 'В тексте таких символов ' , k);
End .
Задача 5
В данном тексте после каждого символа вставить некоторый заданный символ.
Program Vstavka;
Var a, b, c: string ; i: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
writeln ( 'Какой символ вставлять?' ); readln (b);
c:= '' ; //начальное значение результ. строки
for i:= 1 to length(a) do //перебор символов
//присоед. к результ. текущ. и задан. символ
c := c + a[i] + b;
writeln( 'Получен текст:' );
writeln(c);
End .
Задача 6
В данном тексте удалить некоторый заданный символ.
Program Udalenie;
Var a, b, c: string ; i: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
writeln ( 'Какой символ удалять?' );
readln (b);
c:= '' ; // начальное значение результ. строки
for i:= 1 to length(a) do //перебор символов
//если текущий не равен заданому, присоедин.
if a[i]b then c := c + a[i];
writeln( 'Получен текст:' );
writeln(c);
End .
Задача 7
В данном тексте заменить некоторый заданный символ другим заданным символом.
Program Zamena;
Var a, b, c, d: string ; i: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
writeln ( 'Какой символ заменять?' ); readln (b);
writeln ( 'На какой заменять?' ); readln (c);
d:= '' ; //начальное значение результ. строки
for i:= 1 to length(a) do //перебор символов
if a[i]=b then //если текущий равен задан.
d := d + c //присоед. новый символ
else //иначе
d := d + a[i]; //присоед. текущий символ
writeln( 'Получен текст:' );
writeln(d);
End .
Задача 8а
Из данной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.
Program Poisk1; //первый способ
Var a, b, c, d: string ; i, j: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
b:= '0123456789' ; //строка цифр
c:= '' ; //нач. знач. результ.
for i:= 1 to length(a) do //перебор символов
begin //исходной строки
d := a[i]; //очередной символ
for j:= 1 to length(b) do //перебор строки цифр
if d=b[j] then //если текущ. - цифра
c := c + d; //присоед. к результ.
end ;
writeln( 'Получена строка:' ); writeln(c);
End .
Задача 8б
Из данной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.
Program Poisk2; //второй способ
Var a, b, c, d: string ; i, j: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
b:= '0123456789' ; //строка цифр
c:= '' ; //нач. знач. результата
for i:= 1 to length(a) do //перебор символов
begin
d := a[i]; //очередной символ
if pos(d, b) 0 then //если он есть среди цифр
c := c + d; //присоед. к результату
end ;
writeln( 'Получена строка:' );
writeln(c);
End .
= '0' ) and (cthen //если это цифра b := b + c; //присоед. к результату end ; writeln( 'Получена строка:' ); writeln(b); End . " width="640"
Задача 8в
Из данной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.
Program Poisk3; //третий способ
Var a, b, c: string ; i: integer ;
Begin
writeln ( 'Введите текст:' ); readln (a);
b:= '' ; // нач. знач. Результ.
for i:= 1 to length(a) do //перебор символов
begin
c := a[i]; //очередной символ
if (c= '0' ) and (cthen //если это цифра
b := b + c; //присоед. к результату
end ;
writeln( 'Получена строка:' );
writeln(b);
End .