ТЕМА №9: ДАННЫЕ ТИПА STRUNG.
ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. ТР5.
ЦЕЛИ И ЗАДАЧИ: приобретение навыков составления программ с использованием данных типа STRING
ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:
Учащиеся должны знать:
- Что такое данные типа STRING;
- Как описываются строковые данные;
- Для чего используются строковые данные;
- Сколько бай занимают строковые данные;
- Для чего используется нулевой элемент строковой переменной,
- Как обозначается элемент строковой переменной;
- С какой цифры начинается отсчет номера элемента строкой переменной;
- Какой функцией определяется длина строковой переменной;
- Как склеить две строковые переменные;
- Как вырезать часть строковой переменной;
- Как вставить одну строковую переменную в другую;
- Как удалить часть строковой переменной;
- Как можно преобразовать числовую переменную в строковую;
- Как определить входить ли одна строковая переменная в состав другой.
Учащиеся должны уметь:
- Правильно задавать строковые переменные;
- Правильно использовать строковые переменные;
- Правильно использовать процедуры и функции обработки строковых переменных;
- Вводить строковые переменные;
- Составлять программы, используя строковые переменные.
ПЛАН-СОДЕРЖАНИЕ УРОКА
Основные понятия
Данные типа String или строковые данные (Строка) – это особая форма одномерного массива символов.
Отличие строки от массива в том, что массив имеет фиксированную длину (количество элементов), которая определяется при описании.
Строковые данные описываются следующим образом:
Var S: string[n]; SS: string; где
n – число символов в строковой переменной, изменяется от 1 до 255.
Длина описанной переменной S - n+1 байт.
Максимально возможная длина строковой переменной – 255 символов.
S[i] – общий вид элемента строковой переменной
Строка имеет две разновидности длины:
- общую длину строки (n), которая характеризует размер памяти, выделяемый строке при описании.
- Текущую длину строки (p) (p<=n), которая показывает количество смысловых символов в каждый конкретный момент времени. При выдаче на экран значения нулевого символа (Write(ord (s[0]));), получим величину р. Например:
0 1 2 3 4 5 6 7 8 9 10
|
B |
O |
R |
L |
A |
N |
D |
Когда в описании длина не указывается, то она по умолчанию берется 255 символов.
Заполняются строковые данные с помощью оператора присваивания (:=) или оператора ввода (read).
Примеры: SS:=’Информатика’; read(s);
Сравнение строковых переменных идет слева направо в соответствии с ASCII кодами символов. При сравнении длин строк используются операции =, >=, <=, <>, <, >. Если длина переменных одинакова – больше то, у которого больше код. Если длины разные – более короткая величина меньше. Считается, что отсутствующие символы в более короткой строке имеют код, меньше кода любого действительного символа. Например, ‘AB’ больше, чем ‘A’.
Строковые переменные можно склеить (знак +), что равноценно дозаписи символов второй переменной к символам первой. Если длина новой строки превысит допустимую (255) длину, то «лишние» символы отбрасываются. Пример, если а:=’К’; b:=’O’;с:= ‘Т’; х:=а+b+с;d:=a+c+b; – то в х поместится 'КОТ', а в d – ‘КТО’
Для обработки строковых переменных имеется набор специальных процедур и функций.
Процедуры обработки строк:
INSERT(S,T,N); |
Вставка подстроки (S) в строковую переменную (T) с символа N |
DELETE(S,M,N); |
Удаление части (N символов) строковой переменной (S), начиная с символа M |
STR(V,S); |
Преобразование числовой переменной в строковую |
VAL(S,V,N); |
Преобразование строковой переменной в числовую. S - строка, V - числовая переменная, N - значение первого содержащего ошибку символа. |
LENGTH(S) |
Определение количества символов строковой переменной S |
String |
Integer |
POS(S,T); |
Определение первого одинакового левого символа двух строк (строка S и подстрока T) |
String, String |
Integer |
CONCAT(S1,S2,…,SN); |
Склеивание строк |
String, …, String |
String |
COPY(S, M, N); |
Вырезка подстроки (N символов) начиная с M-го символа из строковой переменной S |
String, Integer, Integer |
String |
ORD(X) |
Определение кода символа. X |
Char |
Integer |
CHR(X) |
Определение символа по его коду |
Integer |
Char |
SUCC(X) |
Нахождение следующего элемента |
Integer, Char |
Integer, Char |
PRED(X) |
Нахождение предыдущего элемента |
Перечисляемый |
Перечисляемый |
Примеры программ:
Uses crt; Var s,s1:string; n,i:integer; Begin Read(s); S1:=’’; N:=length(s); For i:=1 downto 1 do S1:=s1+s[i]; Writeln(s1); Repeat until keypressed; End. |
User crt; Var s:string; n,i,sum:integer; m:char; Begin Read(s); Sum:=1; N:=lenght(s); M:=’ ‘; For i:=1 to n do Begin If s[i]=m then sum:=sum+1; End; Writeln(sum); Repeat until keypressed; end. |
Uses crt; Var m,n,l:integer; s,w:string; Function ddd(s:string; m,n:integer):string; Var g1,g2,w:string; l,k:integer; Begin L:=length(s); G1:=’’; For k:=1 to m-1 do g1:=g1+s[k]; Writeln(g1); G2:=’’; For k:=m+n to l do g2:=g2+g2+s[k]; Writeln(g2); W:=g1+g2; Writeln(w); Ddd:=w; End; Begin Readln(s); Writeln(s); Readln(m,n); W:=ddd(s,m,n); Writeln(w); Repeat until keypressed; end. |
Uses crt; Var s,r:string; n,i:integer; Begin R:=’’; Readln(s); For i:=1 to n do Begin N:=ord(s[i]); R:=r+chr(n+3); End; Writeln(s); Writeln®; Repeat until keypressed; end. |