
- •Диалоговые программы. Дружественный интерфейс пользователя
- •Оптимальный вариант:
- •СТРОКОВЫЙ ТИП (String)
- •Отдельный символ совместим со значение Char:
- •Нулевой символ строки s[0] – это символ, код которого равен длине строки.
- •Операции над строками
- •Функции (процедуры) для работы со строками
- •5. INSERT(subs:string; Var s: string; index: integer) - вставляет в строку S подстроку
- •Процедуры преобразования
- •9. FILLCHAR(Var X, k: word, Value) - процедура заполнения. (Word-целое без знака (0..65535))
- •Примеры:

Диалоговые программы. Дружественный интерфейс пользователя
Тест: Написать программу, которая превращает нули в единицы, а 1 в 2
Вариант б) лучше, но короткое сообщение об ошибке не много даст.
Добавьте перед вводом: ВВЕДИ а (из 0 или 1)
Вариант а) не доработан. Необходимо провести проверку на ввод данных.
1

Оптимальный вариант:
1.Выдается сообщение, что делает программа (Вы работаете с программой, превращающей 1 в 2, а 0 в 1). Помощь сразу после загрузки
2.Введите число (указание диапазона, вида).
3.Контроль ввода: вы ввели… - Визуальный контроль для исключения ошибки
оператора
4.Результат
2 группы функций при разработке диалога:
Функции управления данными. Функции управления процессами.
Понятие дружественности предполагает облегчение процесса программиро- вания, облегчение процесса общения с вычислительной системой (переход от специализированных языков к естественному), упрощение сервиса обслуживания, включая быструю диагностику неисправностей и ошибок программиста.
Специальные интегральные среды (справки, система отладки) – Турбо Паскаль
1.Интерфейс (interface) - совокупность средств и правил, обеспечивающих взаимодействие устройств вычислительной системы и (или) программ.
2.Интерфейс пользователя (user interface) - комплекс программных средств, обеспечивающих взаимодействие пользователя с системой или средства связи между пользователем и системой.
Важна система помощи и подсказок, элементов обучения |
2 |

СТРОКОВЫЙ ТИП (String)
Напоминает одномерный массив символов ARRAY[0..N] OF CHAR
Может меняться длина строки от 1до N символов, где N<=255
1. Строка-константа: (‘abcd-абвг’, ’ ’ , ’ , ‘) writeln (‘вариант=’);
2.Строки-переменные:
VAR типом STRING |
{либо в разделе TYPE} |
пример: Const N=200; |
|
VAR st: String; |
{переменная длина до 255 символов} |
st1: String[1]; |
|
st2: String[10]; |
|
st3: String[N]; |
{длина до 200 символов} |
Строка в ТП трактуется как цепочка символов:
st2: ARRAY[0..10] OF CHAR; st2[0] – служебный пример: Var st:string;
Begin
St:= ‘алгоризм’;
if st[7]=‘з' then st[7]:=‘т'; {алгоритм}
. . .
End.
3

Отдельный символ совместим со значение Char:
пример: Var st: string; Ch: Char;
begin
st:=‘Hello’; ch:=st[1]; {ch=‘H’} st[2]:=‘E’;
st[6]:=‘!’; {st=‘HEllo!’}
for I=1 to 6 do write (st[I]);
readln;
End.
Начальный символ строки имеет индекс 0.
Длина строки всегда равна ORD(ST[0]) – коду нулевого символа строки. Значащие символы занимают с 1 по N байты.
st[0] - нулевой элемент строки содержит информацию о ее длине.
4

Нулевой символ строки s[0] – это символ, код которого равен длине строки.
Длина строки может быть изменена:
1.Путем заполнения строки новым значением;
2.Путем изменения нулевого элемента.
!!!Если строку формировали поэлементно, надо обязательно заполнить для нее нулевой элемент.
Если в примере ‘Hello!’ записать st[0]:=chr(6),
то такую строку можно вывести целиком (а не поэлементно) writeln(str);
пример: Var st:string; Begin
writeln(‘Введи элементы строки посимвольно’)
|
for I=1 to5 do read (st[I]); |
{‘BYE!’} |
{ st[1]=‘B';st[2]=‘Y‘ ..} |
st[0]:=CHR(4); длина строки = 4;
writeln(st)
end.
5

Операции над строками
Операции сцепления
пример: st:='A‘ + 'B'; |
{st содержит ‘AB’} |
st:=st + 'C'; |
{st=‘ABC’} |
st[1]:='A' и т.д. |
|
пример: Var st: string[2]; begin
st:='123'; writeln(st); {12}
End.
Операции отношений: >,<,=,>=,<=,<>
пример
'abcd‘ = ‘abcd‘ ->TRUE; |
'abcd‘ <> 'abcD'->TRUE; |
‘abcd‘ < 'abcde'->TRUE; т.к.‘e'>‘ '; |
'abcd‘ > 'abcD '-TRUE, т.к. 'd'>'D'; |
‘abcd‘ <' abcde'->TRUE; |
'aBcd‘ < 'ab' ->TRUE, т.к. 'B'<'b'; |
6

Функции (процедуры) для работы со строками
1. LENGTH(s:string):byte - выдает длину строки S; Пример: k:=Length(st), где st :=‘ABC’ - Результат – k=3
for I:=1 to Length(st) do …
2. CONCAT(s1,s2,...,sN:string):string - осуществляет сцепление |
||
строк; |
st:=concat(‘note’,’book’); |
{‘notebook’\} |
|
s3:=concat(s1,s2); |
{ s3:=s1+s2} |
|
s3:=concat(s1,s2,s3); |
{ s3:=s1+s2+s3} |
3. COPY(s:string; index,len:integer):string - выдает подстроку из строки S длиной len, начиная с символа с номером index.
Если index>LENGTH(S), то функция вернет пустую строку; если |
||
index>255,то ошибка. |
|
|
Пример: Значение S |
Выражение |
Результат |
‘ABCDEFG’ |
COPY(S,2,3) |
‘BCD’ |
‘ABCDEFG’ |
COPY(S,4,10) |
‘DEFG’ |
‘ABC’ |
COPY(S,4,2) |
‘’ (пусто) |
4. DELETE(Var st:string; index,len: integer) - удаляет из строки st
подстроку длиной len, начиная с символа с номером index; Если index=0 или(и) Len=0, то строка не меняется.
Пример: Delete(S,20,255); |
|
|
|
Значение S |
Выражение |
Результат |
|
‘абвгде’ |
Delete(S,4,2) |
‘абве’ |
|
‘ABCDEF’ |
Delete(S,1,5) |
‘F’ |
7 |
|
|
|

5. INSERT(subs:string; Var s: string; index: integer) - вставляет в строку S подстроку SubS, начиная с позиции
index;
Пример: Var st: string[10];
str2, str3, str4: string;
…
str2:= ’начало-конец’; str3:= str2; str4:= str2;
insert(‘середина-’,str2,8); {результат:str2=‘начало-середина-конец’}
st:=‘****-’;
insert(st,str3,8); {результат:str3=‘начало-****-конец’}
st:=‘****-’;
insert(str4,st,3); {результат:st=‘**начало-к’}
6. POS(subs,s:string):byte - функция отыскивает вхождение подстроки SubS в строке S
Пример: |
S |
функция |
результат |
|
'abcdef' |
POS('de',S) |
4 |
|
'abcdef' |
POS('k',S) |
0 |
|
|
- |
|
8

Процедуры преобразования
7.STR(x[:w[:n]],Var s:string) - преобразует числовое значение x в
строковое s. Параметры [:w[:n]] не обязательны.
Пример: str(6.66:8:2,s); |
{результат s=‘ 6.66’} |
str(6.66:-8:2,s); |
{результат s=‘6.66 ’} |
str(6.66:8:1,s); |
{результат s=‘ 6.7’} |
str(6.66:8,s); |
{результат s=‘0.67E+01’} |
const F=6; N=4; |
|
str(1.254687:F:N,s); {результат:S=‘1.2547’}
8. VAL(s:string,Var x,Var ErrCod) - преобразует числовую строку s в числовую переменную x. Если ErrCod=0, то
преобразование выполнено. |
|
||
Пример:S |
преобразования |
результат |
|
1562 |
|
VAL(S,x,ErrCod) |
x=1562, ErrCod=0 |
15.62E2 |
VAL(S,x,ErrCod) |
x=1562, ErrCod=0 |
|
15.62A2 |
VAL(S,x,ErrCod) |
x-неопр., ErrCod=6 |
9

9. FILLCHAR(Var X, k: word, Value) - процедура заполнения. (Word-целое без знака (0..65535))
Fillchar(Var x,kbytes:word, b:byte); Fillchar(Var x,kbytes:word, c:char);
Пример: Заполнить строку с ее начала (с первого элемента) 80 пробелами (‘ ’или #32)
Var
st: string;
Fillchar(st[1], 80, ’ ‘);
st[0]:=chr(80); {принудительная запись длины строки} st[1] означает, что заполняем строку с первого элемента
При использовании ввода строк с клавиатуры процедурой Read читается только одна строка (дo <enter>), остальные процедуры Read и Readln игнорируются для любых типов и типа string.
Используйте Readln в программах со строками для ввода данных любого типа, кроме символов.
10