ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ СТАНДАРТНЫХ ПРОЦЕДУР И ФУНКЦИЙ ДЛЯ СТРОК
1.1 Научиться использовать стандартные процедуры и функции для строк;
1.2 Научиться решать типовые задачи.
Строка- это последовательность символов. Количество символов в строке может динамически меняться в пределах от 0 до 255.
1. Описание переменных строкового типа:
a. В разделе описания переменных VAR VAR
St: string [12]; -объявлена строка с длиной 12 символов
St1:string; - по умолчанию длина строки =255
b. В разделе констант:
CONST St=’Сегодня наступила весна’;
c. В разделе описания типов: TYPE Stroka=string[8]; VAR St:stroke;
2. К отдельным символам строки можно обратиться по номеру индексу данного символа в строке в квадратных скобках.
St[1]- первый символ строки st; St[4]- четвертый символ строки st;
St[0]- специальный символ- указатель на длину строки.
3. Строковые процедуры и функции
4. Стандартные функции, определенные для символьного типа Char.
|
|
Примеры использования |
|
Функция Length – возвращает це- лое число – текущую длину стро- ки |
A:=Length(s); For I:=1 to Length(Slovo) do … |
|
Функция Pos – возвращает номер (целое число) первого символа строки S1 при его первом появле- нии в строке S2 |
S1:=’это’; S2:=’Найди это слово’; A:=Pos(S1, S2); {переменная А получит значение - 7} |
|
Функция Copy – копирует N сим- волов строки S, начиная с пози- ции P, т.е. возвращает строку |
P:=4; N:=3; S:=’компьютер’; S1:=Copy(S, P, N); {переменная S1 получит значение ‘пью’, строка S останется без из- менений} |
|
Процедура Delete – удаляет N символов строки S, начиная с по- зиции P |
S:=’параметр’; P:=1; N:=4; Delete(S, P, N); |
|
|
Writeln (S); {на экране появится слово ‘метр’, при этом длина строки S равна 4}; |
|
Процедура Insert – вставляет строку S1 в строку S2, начиная с позиции P |
S1:=’это ’; S2:=’Найди слово’; Р:=7; Insert(S1, S2, Р); Writeln(S1); {на экран выведутся 4 символа ‘это ’} Writeln(S2); {на экране появится ’Найди это слово’, если позволяет длина строки} |
|
Процедура Str – преобразует чис- ло Х в строку S |
Var Y: integer; X:real; BEGIN Y:=1999; Str(Y:6, S); Writeln (s); {на экране 6 символов: 1999} |
|
Процедура Val – преобразует строку S в целое или дробное число X. Если преобразование возможно (т.е. если в строке все символы являются символами числа), то в переменную Z будет записан ноль, иначе там будет номер первого символа строки, который не может быть символом числа |
Var X: real; S: String[5]; Z: integer; BEGIN S:=’17.25’; Val(S, X, Z); Writeln (‘X=’,X:5:2,’ ошибка=’, Z); {на экране появится: Х=17.25 ошибка=0} END. |
Так как строка - это одномерный массив элементов символьного типа- ти- па Char, значит к ним применимы процедуры и функции, определенные для символьного типа данных.
Chr(x)- возвращает значение символа по его коду ASCII. Ord(Ch)- возвращает код заданного символа ch.
Pred(ch)- возвращает предыдущий символ. Succ(ch)- возвращает следующий символ.
Например:
Chr(66)=’B’;
Ord(‘A’)=65;
Pred(‘B’)=’A’;
Succ(‘B’)=’C’
5. Основные операции над строками
a. Введение строки с клавиатуры: Var st:string;
Begin
Writeln(‘введите строку’);
Readln(st);
…
Var
b. Задание строки и вывод строки на экран: Var
St:string;
Begin
St:=’Привет!’; Writeln(st);
End.
c. Подсчет количества конкретного символа в строке: k:=0;
for i:=1 to length(st) do if st[i]=’s’ then k:=k+1;
d. Замена пробела в строке на символ ‘*’ for i:=1 to length(st) do
if st[i]=’ ’ then st[i]:=’*’;
e. Обращение введенного слова, т.е. если задана строка ‘Маша’, то программа воэвращает ‘ашаМ’
i,n:integer; s:=string; ch:char; Begin
Write(‘введите строку=’); readln(s); n:=length(s);
for i:=1 to trunc(n/2) do begin
ch:=s[i]; s[i]:=s[n-i+1];
s[n-i+1]:=ch; end;
writeln(s); End.
1. Определите количество знаков препинания (. , ! ?) во введенной с клавиа- туры строке.
1) в разделе описания переменных опишите строку st и переменную k,
которая будет подсчитывать количество знаков препинания.
2) организуйте ввод строки с клавиатуры (см. п. 5.а);
3) подсчитайте количество в строке знаков препинания (см.п.5.с), только в условии пропишите все знаки препинания через оператор or ( if st[i]=’.’ Or st[i]=’,’ or… then…);
4) выведите строку st на экран (см. п. 5.b) и k.
2. Определите, сколько раз в строке, введенной с клавиатуры встречается сим- вол, код которого так же вводится с клавиатуры.
1) в разделе описания переменных опишите строку st и переменную n целого типа, которая будет содержать код символа и переменные i и k так же целого типа;
2) организуйте ввод строки с клавиатуры (см. п. 5.а);
3) организуйте ввод переменной n;
4) в цикле for i:=1 to length(st) do запишите условие if st[i]=chr(n) then k:=k+1;
5) выведите символ, количество которого считали в строке
writeln(chr(n));
и переменную k.
3. Над заданными в разделе описания констант строками st1=’123’ и st2=’78’, преобразованными в числовое значение произвести операции сложения, вычи- тания, умножения и деления.
1) в разделе описания констант (см.п.1.b) опишите строки st1 и st2;
2) объявите 2 переменные целого типа- х и у в разделе описания пере- менных;
3) объявите 3 переменные s, v, p целого типа для хранения результатов сложения, вычитания, умножения соответственно и одну переменную d- веще- ственного типа для хранения результата деления.
4) преобразуйте строки st1 и st2 в числовые значения: val (st1,x,code); val(st2,y,code); переменную code предварительно опишите в разделе описания переменных.
4) присвойте этим переменным значения соответствующих выражений: s:=x+y, для других переменных так же.
5) выведите значения s,v,p,d на экран.
4. Удалите из строки, введенной с клавиатуры все пробелы
1) в разделе описания переменных опишите строку st;
2) организуйте ввод строки с клавиатуры (см. п. 5.а);
3) в цикле for i:=1 to length(st) do запишите условие
if st[i]=’ ‘ then begin delete(st,i,1); i:=i-1;
end;
4) выведите строку st на экран.
5. Наберите и откомпилируйте программу 5.е.
1) Что представляет собой строка?
2) Какая максимальная длина может быть у строки?
3) Как можно обратиться к каждому символу строки?
4) Что обозначает st[0]?
5) Какие функции предназначены для преобразования типов? Опишите
их.
1) Напишите программу, которая вводит строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ. При- мер работы программы:
Введите строку:
Аbcde
Результат:
Abcd Abc Ab A.
2) Введите 2 целых числа. Преобразуйте числа в 2 строки, объедините их в одну и выведите результат.
3) Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется 1 пробелом. Пример работы программы:
Введите строку:
Делу время, а потехе час.
Количество слов в строке: 5
4) Вставьте в строку, заданную с клавиатуры 2 пробела, начиная с пози- ции, заданной с клавиатуры. Если введенный номер позиции превышает длину строки программа должна выдавать ошибку. Примеры работы программы:
а) Введите строку: ПРИВЕТ Введите номер позиции: 4 Результат: ПРИ ВЕТ.
б) Введите строку: ПРИВЕТ Введите номер позиции: 14 Результат: Ошибка!
5) Ввести с клавиатуры две строки st и st1.
Произвести над этими строками следующие действия:
a) вставить в строку st строку st1, начиная со 2-й позиции;
b) удалить из каждой строки первую букву;
c) определить номер позиции, с которой в каждой строке первый раз встречается символ r.
d) соединить эти строки;
e) найти длину каждой строки. Результат каждого действия вывести на экран.
6) Напишите программу, определяющую число слов в строке. Одно слово от другого отделяется 1 пробелом. Пример работы программы:
Введите строку:
Делу время а потехе час.
Количество слов в строке: 5
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.