'asdF '; ' aBcg '< 'ab '; ' ' > ''.">
Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемДенис Апрелев
1 Работа со строками. МОУ СОШ 17 с углубленным изучением математики г. Тверь. Учитель Матвеева А.Г.
2 Типы строковых данных Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов. Переменной типа shortstring память выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически во время работы программы, поэтому длина таких строк практически не ограничена. Помимо перечисленных выше типов можно применять универсальный строковый тип String. Тип String эквивалентен типу Shortstring.
3 Операции над строками Строки можно присваивать, объединять, сравнивать. Объединение строк записывается в естественном виде, применяя знак "+". Если сумма получается длиннее, чем описана длина левой части оператора присваивания, то излишек отсекается. Пример: st1:=F1-; st2:=Help; st3:=st1+st2; {F1- Help}. Сравнение строк - Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом. Например: 'asdf '= 'asdf '; 'asdf '> 'asdF '; ' aBcg '< 'ab '; ' ' > ''. 'asdF '; ' aBcg '< 'ab '; ' ' > ''.">
4 Функция Length(s:string):byte - выдает текущую длину строки. Вместо неё можно пользоваться конструкцией ord(s[0]), что то же самое. Функция Concat - производит объединение строк. Вместо неё можно пользоваться операцией "+". Функция copy(s:string; start,len:integer):string - позволяет выделить из строки s последовательность из len символов начиная с символа start. Например: s:='asdfgj'; st:= copy(s,2,3); {st='sdf'} Процедура delete(s:string;start,len:integer) - видоизменяет строку s, стирая len символов, начиная с символа start. Например: s:='widows'; delete(s,3,2); {s:='wiws'} Процедура insert(st,s:string;start:integer) - вставляет подстроку st в строку s начиная с позиции start (процедура противоположная delete). Функция Pos(Subs, S: string):byte - возвращает номер символа в строке S, с которого начинается включение в S подстроки subs. Строковые процедуры и функции
5 Упражнения 1) Дана строка символов, в которой есть хотя бы одно вхождение 'abc'. Все вхождения 'abc' заменить на 'def. 2) В заданном тексте все встретившиеся буквы 'a' удалить, а буквы 'd' удвоить.
6 Решение program upr1; var i: byte; st, st1: string; begin readln(st); st1:='def'; for i:=1 to length(st) do if copy(st,i,3)='abc' then begin delete(st,i,3); insert(st1,st,i); end; writeln(st); end.
7 Program Upr_2 var st,st1:string; i:integer; begin write('st='); readln(st); i:=1; while i<= length(st) do if st[i]='a' then delete(st,i,1) else if st[i]='d' then begin insert('d',st,i+1); i:=i+2; end else i:=i+1; writeln(st); end. Решение
8 Функции преобразования. Решение задач на перевод чисел из одной системы счисления в другую. Str(ch:integer;,st:string;) - преобразование числового значения величины ch и помещение результата в строку st. После ch можно записывать формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода расширяется автоматически до нужной длины. Например: ch= 3500; str( ch:6,st); st=' 3500'; ch=45789; str(ch:3,st); st='45789'.
9 Val(st:string;,ch:integer;,code:integer;) - преобразует значение st и помещает результат в ch. Значение st не должно содержать незначащих пробелов в начале и в конце. Code - целочисленная переменная. Если в операции преобразования ошибки не обнаружено, значение code равно нулю, если ошибка обнаружена ( например, литерное значение переводится в цифровое ), code будет содержать номер позиции первого ошибочного символа, а значение ch не определенно. Например: st='6500'; Val(st,ch,code); ch= 6500; code=0; st='34,01'; val(st,ch,code); ch не определенно; code=3.
10 Перевод чисел из десятичной системы счисления в двоичную (фрагмент программы) readln(n); { ввод десятичного числа} p:=n; while p>=1 do begin k:= p mod 2; {остатки из которых будет формироваться число в 2 с/с} str (k,st); { перевод остатков в символы} st1:= st1 + st;{формирование строки из остатков} p:= p div 2; { уменьшения числа на разряд } end; str(p,st); {перевод последнего частного в символ} st1:=st1 + st; {строка из остатков и последнего частного} for i:= length(st1) downto 1 do { цикл для вывода числа в обратном порядке} begin st2:= copy(st1,i,1); st3:= st3 + st2; {строка в 2 с/с} end; val(st3,ch,errc); writeln('ch=',ch);
11 Перевод чисел из двоичной системы в десятичную Фрагмент программы: readln(n); str(n,st); dl:=length(st); dl:=dl-1; for i:=1 to length(st) do begin val(st[i],m,errc); p:= p+ m* exp(dl*ln(2)); dl:= dl-1; end; writeln('p=',p:6:0);
12 Дом.задание 1. Дан текст из строчных латинских букв, за которым следует точка. Напечатать в алфавитном порядке все буквы, которые входят в этот текст по одному разу. 2. Напечатать заданный текст, удалив из него лишние пробелы, т.е. из нескольких подряд идущих пробелов оставить только один. 3. В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству: текст начинается с k букв (1<=k<=9), за котором следует только одна литера - цифра с числовым значением k
13 4 Дано натуральное n. Напечатать в троичной системе счисления целые числа от 0 до n. 5 Задано неотрицательное целое число, в восьмеричной системе счисления (за числом - пробел). Напечатать это число в пятеричной системе счисления.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.