Слайд 1Диалоговые программы. Дружественный интерфейс пользователя
Вариант б) лучше,
но короткое сообщение об ошибке не много даст.
Добавьте
перед вводом:
ВВЕДИ а (из 0 или 1)
Вариант а) не доработан. Необходимо
провести проверку на ввод данных.
Тест: Написать программу, которая
превращает нули в единицы, а 1 в 2
Слайд 2Важна система помощи и подсказок, элементов обучения
Оптимальный вариант:
Выдается сообщение,
что делает программа (Вы работаете с программой, превращающей 1 в
2, а 0 в 1). Помощь сразу после загрузки
Введите число (указание диапазона, вида).
Контроль ввода: вы ввели… - Визуальный контроль для исключения ошибки оператора
Результат
2 группы функций при разработке диалога:
Функции управления данными. Функции управления процессами.
Понятие дружественности предполагает облегчение процесса программиро-вания, облегчение процесса общения с вычислительной системой (переход от специализированных языков к естественному), упрощение сервиса обслуживания, включая быструю диагностику неисправностей и ошибок программиста.
Специальные интегральные среды (справки, система отладки) – Турбо Паскаль
Интерфейс (interface) - совокупность средств и правил, обеспечивающих взаимодействие устройств вычислительной системы и (или) программ.
Интерфейс пользователя (user interface) - комплекс программных средств, обеспечивающих взаимодействие пользователя с системой или средства связи между пользователем и системой.
Слайд 3 СТРОКОВЫЙ ТИП (String)
Напоминает одномерный массив символов ARRAY[0..N] OF CHAR
Может меняться длина строки от 1до N символов, где N
(‘abcd-абвг’, ’ ’ , ’ , ‘) writeln (‘вариант=’);
Строки-переменные:
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.
Слайд 4
Отдельный символ совместим со значение 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] - нулевой элемент строки содержит информацию о ее длине.
Слайд 5
Нулевой символ строки 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.
Слайд 6Операции над строками
Операции сцепления
пример: 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';
Слайд 7Функции (процедуры) для работы со строками
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’
Слайд 8
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
-
Слайд 9Процедуры преобразования
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
Слайд 10
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 ), остальные процедуры Read
и Readln игнорируются для любых типов и типа string.
Используйте Readln в программах со строками для ввода данных любого типа, кроме символов.
Слайд 11Примеры:
Ввести строку и заменить в ней все подстроки Min не
зависимо от регистра на MAX
Var s, ss: string;
k:byte;
Begin
readln(s);
For k=1 to length(S) do ss[k]:=upcase(s[k]);
{в верх.рег}
SS[0]:=s[0];
Repeat
K:=pos(‘MIN’, ss);
If (k<>0) then
begin
Delete(Ss,k,3);
Insert(‘MAX’,Ss,k)
end
Unit k=0;
Writeln(‘Ss=’,Ss);
End.
Ввести 4-хзначное число.
Напечатать цифры числа в обратном порядке
1.ч/з числовой формат.
2.ч/з строковый тип.
1.Var N:word; I: byte;
begin
read(N);
for I:=1 to 4 do
begin write(N mod 10);
N:=N div10;
end;
End.
2. Var X:word;
S: string;
begin
readln(X);
STR(X:4,S);
for I:=4 downto 1 do write(S[i]);
End.