Строковый тип данных (11 класс)

advertisement
Символьный и
строковый тип
данных
ТИП ДАННЫХ
1. Целый: Integer (-32 768…32 768),
LongInt (-2 147 483 648… 2 147 48648),
Word (0…65535)
2. Логический: Boolean ( False (ложь) или
True (ист ина) )
3. Вещест венный ( Real (2.9E-39…1.7E38),
Comp (-9.2E18…9.2E18) )
4. Символьный (Char)
Значения Char - символы
Каждому символу соответствует свой код
Функция Ord(w) дает порядковый номер символа w
Функция Chr(i) определяет символ с порядковым номером i
Ord(Chr(i)) = i
Chr(Ord(w) = w
Функция Upcase(ch) преобразует значение переменной ch
символьного т ипа , если оно соот вет ст вует ст рочной
лат инской букве в код прописной буквы, иначе значение
ch ост ает ся неизменным
Задание 1.
Сост авит ь программу, кот орая определяет код
одного введенного символа
Program kod;
Uses Crt;
Var d:Char;
x:Integer;
Begin
ClrScr;
WriteLn('введи символ');
ReadLn(d);
x:=ord(d);
WriteLn('код символа ',d,' равен ',x);
ReadLn;
End.
Задание 2.
Составить програму, которая определяет код
любого количества введенных символов, пока
небудет введен символ ‘.’ (точка)
Услоовие d = '.'
Program kod;
Uses Crt;
Var d:Char;
x:Integer;
Begin
ClrScr;
Repeat
WriteLn('введи символ и нажми Enter');
ReadLn(d);
x:=ord(d);
WriteLn('код символа ',d,' равен ',x);
ReadLn;
Until d='.';
End.
Задание 2.
Составить програму, которая преобразует
введенную строчную латинскую букву в прописную
Задание 3.
Составить програму, которая преобразует
введенную строчную латинскую или русскую букву в
прописную
Задание 2.
Составить програму, которая преобразует любое
количество введенных строчных латинских букв
в прописные
4. Ст ороковый (String)
Значения переменной типа String – последовательность
символов определенной длины
Значения строковой константы - последовательность
символов , заключенных в апострофы (‘школа №6’)
Форма записи String [k] ,k – длина ст роки (мах размер)
Если [k] отсутствует, то длина строки =255 символов
Операция сравнения над ст роками
Сравнение строк происходит посимвольно слева направо:
сравниваются коды соответствующих символов до тех
пор, пока не нарушится равенство, при этом делается
вывод о знаке неравества
Примеры
‘Balkon’<‘balkon’ (Ord(‘B’)<Ord(‘b’));
‘balkon’ > ‘balk’ (Длина первой строки больше)
‘кошка ‘ > ’кошка’ (Длина первой строки больше)
‘Кот’ =‘Кот’ (Равны по длине и совпадают посимвольно)
Функции и процедуры над строками
1. Функция Concat(s1,s2,…,sm) или s1+s2+…+sm
выполняет сцепление ст рок s1,s2,…,sm в одну ст року
значение функции т ипа String
Выражение
Результат
Concat(‘контра ‘,’бас’)
‘контрабас’
2. Функция Copy(s,p,n) выделяет из ст роки s
подст року длиной n символов, начиная с позиции p
Значение s
выражение
результат
‘контрабас у вас и
нас’
Copy(s,7,9)
‘бас у вас’
3. Функция Length(s) определяет длину ст роки s
Результ ат – значение целого т ипа
Значение s
выражение
‘контрабас у нас’ Length(s)
результат
15
4. Функция Pos(s1,s2) обнаруживает в ст роке s2 первое
вхождение ст роки s1 (номер позиции). Если
вхождения нет , т о выдает ся 0
Значение s2
выражение
‘контрабас у нас’ Pos(ас,s2)
результат
8
5. Функция StrToInt(s) преобразует символьную
ст року s в числовое значение
k:= StrToInt(s)
Значение s
‘125’
выражение
StrToInt(s)
Результат (k)
125
Или процедура Val(s,k,r)
5. Процедура Delete(s,p,n) удаляет n символов из
ст роки s, начиная с позиции p
Значение s
оператор
‘контрабас у нас’ Delete(s,1,6)
результат
‘бас у нас’
6. Процедура Insert(s1,s2,p) - вcт авка ст роки s1 в
ст року s2, начиная с позиции p.
Значение s2
‘контрабас у
нас’
оператор
результат
Insert(‘есть’,s2,11) ‘контрабас есть у
нас’
Задание 1
Сост авит ь программу, кот орая определяет длину
введенной ст роки
Обозначим
вводимую строку переменной s, ее тип
строковый т.е.- String
d:integer;
Длину этой строки переменной d, ее тип
целый т.е.- integer;
начало
Ввод s
WriteLn('введи строку ');
ReadLn(s);
d:=Length(s)
Вывод d
конец
WriteLn('в строке ',d,' символов ');
ReadLn;
Program dlina; {длина строки}
Uses Crt;
Var s:String; {вводимая строка}
d:integer;
Begin
ClrScr;
WriteLn('введи строку и нажми Enter');
ReadLn(s);
d:=Length(s);
WriteLn('во введенной строке ',d,' символов ');
ReadLn;
end.
Задание 2
Составить программу, которая
определяет количество слов
начало
Кот и кит
Ввест и s
d:=length(s)
i=1,d
нет
да
Copy(s,i,1)=‘ ‘
Вывест и k
k:= k+1
конец
Кот и кит
№ шага
i
Copy(s,i,1)=‘ ‘
k:=k+1
1
1
нет
к≠’ ‘
0
2
2
нет
о≠’ ‘
0
3
3
нет
т≠’ ‘
0
4
4
да
‘ ‘=’ ‘
1
5
5
нет
и≠’ ‘
1
6
6
да
‘ ‘=’ ‘
2
нет
т≠’ ‘
2
9
9
Program kod;{длина строки}
Uses Crt;
Var s:String;{вводимая строка}
d,i,k:integer;
Begin
ClrScr;
WriteLn('введи строку и нажми Enter');
ReadLn(s);
d:=Length(s);
for i:=1 to d do if s[i]=' ' then k:=k+1;
WriteLn('во введенной строке ',k+1,' слов ');
ReadLn;
end.
Задание 3
Составить программу, которая выводит
введенное слово назад
(ввод – кот
вывод – т ок)
Обозначим
S- вводимое слово
S1 – выводимое слово (слово s назад)
d- длина слова
i - счетчик
начало
Ввест и s
d:=length(s)
i=d,1
1
s1:= copy(s,i,1)
Вывест и s1
конец
Кот
№ шага
i
s1:=copy(s,i,1)
1
3
т
2
2
о
3
1
к
Program slovo;
Uses Crt;
Var s,s1:String;
d,i,:integer;
Begin
ClrScr;
WriteLn(‘введи слово');
ReadLn(s);
d:=Length(s);
for i:=d downto 1 do
Begin
s1:=copy(s,i,1);
Write(s1);
ReadLn;
end;
end.
Задание 4
Составить программу, которая
определяет одинаково ли количество
открывающихся и закрывающихся
скобок во вводимой строке
Обозначим
S- вводимая строка
k1- количество открывающихся скобок
k2- количество закрывающихся скобок
i - счетчик
Program z_4;
Uses Crt;
Var s:String;
d,i,k1,k2:integer;
Begin
ClrScr;
WriteLn(‘введи строку');
ReadLn(s);
d:=Length(s);
for i:=1 to d do if copy(s,i,1)=')' then k1:=k1+1;
for i:=1 to d do if copy(s,i,1)='(' then k2:=k2+1;
if k1=k2 then WriteLn(‘количество скобок равно')
else WriteLn(‘количество скобок неравно');
ReadLn;
end.
Дополнительные
процедуры
Процедура str(x,s) преобразует числовое значение x
(т ип real) в ст року s (т ип String)
Процедура var(s,x,err) -превращает ст роковое
значение s (т ип String) в числовую переменную x
(т ип real) , err (т ип-integer) возвращает номер
позиции, в кот орой произошла ошибка
преобразования, или 0 , если ошибки не было
Download