№ | Слайд | Текст |
1 |
 |
Обработка символьных данных |
2 |
 |
Символьные константы и переменныеТекст - это произвольная последовательность символов некоторого алфавита. Алфавит - любое множество символов, например (0, 1,2, ... ), ( А, Б, В,…), ( A, B, C, ... ). Значениями символьной переменной или константы являются отдельные символы, которые составляют компьютерный алфавит. Символьные константы заключаются в одинарные кавычки, например, 'A', 'B', 'C', '4', '7', ' '(пробел). Для описания символьных констант и переменных используется тип CHAR: Var <имя переменной>: CHAR; |
3 |
 |
Символьные константы и переменныеСравнение символов осуществляется по их кодам. Из двух символов большим считается тот, код которого больше. Стандартные символьные функции: CHR(N) - возвращает в программу символ с кодом N, ORD(S) - возвращает код символа S, PRED(S) -возвращает предыдущий символ, SUCC(S) - возвращает следующий символ. |
4 |
 |
Символьные константы и переменныеПримеры: Write ( CHR(128)) ; = А Write ( ORD(':')); = 58 Write ( PRED('Б')); = А Write ( SUCC('Г')); = Д |
5 |
 |
Символьные константы и переменныеПример 1. Составить программу, многократно вычисляющую сумму двух чисел, которые вводятся с клавиатуры. В конце каждого этапа появляется запрос : "Завершить программу?(Д/Н)". Program sum; Var A, B : real; C : char; Begin Repeat Write('Введите два числа'); Readln(a,b); Writeln(a+b : 10 : 2); Writeln('Завершить программу?(Д/Н)'); Readln(C); Until C='Д'; {условие выхода из цикла} Readln; End. |
6 |
 |
Символьные константы и переменныеProgram chet; Var n: integer; { переменная для хранения количества "!" } C : char; begin read(c); { чтение первого символа с клавиатуры } n:=0; { обнуление cчётчика "!" } while c<>'/' do begin if c='!‘ then n:=n+1; { подсчёт символов "!" } read(c); { чтение следующего символа } end; writeln(‘Количество восклицательных знаков=’,n); readln; end. Пример 2. Дана последовательность символов, заканчивающаяся символом "/". Подсчитать количество восклицательных знаков в данной последовательности. |
7 |
 |
Символьные константы и переменныеProgram kodi; Var n: integer; sim : char; begin For sim:= ‘A’ to ‘Z’ do writeln(sim:4, ‘-’, ord(sim):4); readln; end. Пример 3. Распечатать коды символов от A до Z. Так как тип Char относится к так называемому перечисляемому типу – значит, переменные такого типа можно использовать в заголовке арифметического цикла. |
8 |
 |
Символьные константы и переменныеProgram preobr; var mall, big:char; d:integer; begin read(mall); d:=ord('а')-ord('a'); {находим разность между кодами букв} big:= chr(ord(mall)-d); {находим большую букву} write(big); readln; end. Пример 4. Дана маленькая латинская буква. Необходимо преобразовать её в большую латинскую букву. |
9 |
 |
Символьные константы и переменныеЗадачи: Дана последовательность из N символов. Известно, что в последовательности имеется хотя-бы одна запятая. Найти номер: а) первой по порядку запятой; б) последней по порядку запятой. Дана последовательность символов, заканчивающаяся символом '+'. Определить и вывести на экран номера символов, имеющих наибольший и наименьший коды. *Дана последовательность символов, заканчивающаяся символом '?' Подсчитать наибольшее количество символов "пробел" идущих в строке подряд. |
10 |
 |
Строковые данныеСтрока (строковый тип данных) – это последовательность символов кодовой таблицы ПК, заключенная в апострофы, длиной от 0 до 255. Например: ‘237’, ‘Скоро каникулы!’ Для описания строковых констант и переменных используется тип STRING: 1. Var <имя>: STRING[<макс. длина строки>]; 2. Var <имя>: STRING; (длина строки= 255) |
11 |
 |
Строковые данныеЭлементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, N[5]. Нумерация символов начинается с 1. Строка похожа на одномерный массив, элементами которого являются символы. Тип String и тип Char совместимы, они могут употребляться в одних и тех же выражениях. |
12 |
 |
Строковые данныеНад строковыми данными допустимы операции: Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов. Операции отношения (=, <>, >, <, <=, >=) проводят сравнение двух строк и имеют приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в кодовой таблице. |
13 |
 |
Строковые данныеНапример, ‘MS-DOS’ < ’MS-Dos’. Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше. ‘Комп’ < ’Компьютер ’ Строки равны, если они полностью совпадают. ‘Маска’ = ’Маска’ |
14 |
 |
Строковые процедуры и функцииФункция Length(S) – определяет текущую длину строки S. Выражение Оператор Результат S:=‘1500 символов’ X:=Length(S); 13 S:= 'урок' X:=Length(S); 4 |
15 |
 |
Строковые процедуры и функцииФункция Concat(S1,S2,…,Sn) – выполняет сцепление строк S1,S2,…,Sn в одну строку. Выражения Оператор Результат S1:=‘лет’; s2:=‘сам’; s3:=‘о’; X:=concat(s2,s3,s1); ‘Самолет’ |
16 |
 |
Строковые процедуры и функцииПроцедура Delete(St, poz, n) – удаление n символов строки St, начиная с позиции Poz. Значение St Оператор Результат ‘Абвгде’ Delete(St, 4, 2); ‘Абве’ ‘река Волга’ Delete(St, 1, 5); ‘Волга’ |
17 |
 |
Строковые процедуры и функцииПроцедура Insert (S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz. Значение S1 Значение S2 Оператор Результат ‘ Ес ’ ‘Эвм1841’ Insert (S1, S2, 4); ‘Эвм ес 1841’ ‘ N’ ‘ Рис. 2’ Insert (S1, S2 , 6); ‘ Рис. N2’ |
18 |
 |
Строковые процедуры и функцииФункция Copy(S, Poz, N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Значение S Оператор Результат ‘Мама мыла раму’ X:=Copy(S, 6, 4); ‘Мыла’ |
19 |
 |
Строковые процедуры и функцииФункция Pos(S1,S2) – определяет первое появление в строке S2 подстроки S1. Значение S2 Оператор Результат ‘abcdef’ X:=Pos(‘cd’,S2); 3 ‘abcdef’ X:=Pos(‘k’,S2) ; 0 |
20 |
 |
Строковые процедуры и функцииПроцедура Str( N, St ) – преобразование числового значения N в строковый тип и помещение результата в строку St. Значение Оператор Результат 1500 Str (N:6,St); ‘ 1500’ |
21 |
 |
Строковые процедуры и функцииПроцедура Val(St, N,Code) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, в противном случае Code будет содержать номер позиции первого ошибочного символа, а значение N не определено. Code N Значение St Оператор ‘1500’ Val(St, N, Code); Code=0 1500 14.2A+02 Val(St, N,Code); Code=5 Не определено (ошибка) |
22 |
 |
Строковые данныеПример 1. Дано слово, подсчитать количество букв а. Program a; var k, I :integer; a: string; begin k:=0; {счетчик количество букв a} a:='алабама'; for i:=1 to length(a) do if a[i] = 'a' then k:=k+1; write(k); readln; end. |
23 |
 |
Строковые данныеПример 2. Перевернуть текст Program a; var k,i :integer; a, s :string; begin s:=''; a:=‘программа'; k:=length(a); for i:=1 to k do s:=a[i]+s; write(s); readln; end. |
24 |
 |
Строковые данныеProgram a3; Var k,i :integer; f,a, s :string; Begin s:=''; f:='0123456789'; a:=‘O 240 AX RUS 14 '; k:=length(a); for i:=1 to k do if pos(a[i],f)<>0 then s:=s+'c' else s:=s+a[i]; write(s); Readln; End. Пример 3. Дана строка. Заменить цифры на символ c. Замечание: При решении задачи применяем вспомогательную строку, в которую поместим все цифры. |
25 |
 |
Строковые данныеПример 4. В заданном тексте удалить часть текста, заключенную в скобки (вместе со скобками). var s,a: string; i,k: integer; begin k:=1; s:=''; a:='Мир (имеется в виду согласие, отсутствие конфликтов) победит войну'; while a[k]<>'(' do begin s:=s+a[k]; k:=k+1; end; {Добавили символы, стоящие до '('} {Пропускаем символы стоящие после «(« и до «)»} while a[k]<>')' do k:=k+1; {Добавляем символы стоящие после')‘ } for i:=k+1 to length(a) do s:=s+a[i]; write(s); readln; end. |
26 |
 |
Строковые данныеЗадача 1. Выяснить встречается ли в заданном тексте буква «a» чаще, чем буква «b». Задача 2. Дано слово. Удвоить каждую букву «a». Задача 3. Дана строка S. Подсчитать наибольшее количество идущих подряд символов "+". |
27 |
 |
Строковые данныеЗадача 4. В заданном тексте удалить часть текста, расположенного после последней скобки. Задача 5. Ввести число и увеличить каждую его цифру, не равную "9", на единицу. Задача 6. Ввести слово и найти символ, который наиболее часто встречается в этом слове. |
28 |
 |
var i, s, k, code: longint; c, new, c1: string; begin readln(s); new=''; str(s,c); for i:=1 to length(c) do begin IF c[i]<>’9’ then begin val(c[i],k,code); k:=k+1; str(k,c1); new:=new+c1; end Else new:=new+’9’; End; writeln(new); readln; end. Задача 5. Ввести число и увеличить каждую его цифру, не равную "9", на единицу. |
«Обработка символьных данных» |
http://900igr.net/prezentacija/informatika/obrabotka-simvolnykh-dannykh-95942.html