Строковые данные.ppt
- Количество слайдов: 35
СТРОКОВЫЕ ДАННЫЕ
ОСНОВНЫЕ ПРОЦЕДУРЫ ОБРАБОТКИ СИМВОЛЬНЫХ ДАННЫХ ОПРЕДЕЛЕНИЯ И ПРАВИЛА
ФОРМИРОВАНИЕ ТЕКСТА • Формирование текста по правилам ввода MS Word: • перед словом должен быть один пробел (исключая первое слово); • после слова должен быть один пробел (исключая последнее слово); • в качестве знаков препинания используем: . , ! ? » « » , « • знаки препинания пишем слитно с предшествующим текстом
СЛОВО • Цепочка символов между пробелами, исключая знаки препинания
ПРЕДЛОЖЕНИЕ • Понятие «Предложение» • Предложение начинается с прописной буквы • и заканчивается знаками препинания: . ! ? » « » , «
СТРОКА • Понятие «Строка» • Строка заканчивается нажатием клавиши: • Enter • Для ввода строковых данных используется только оператор READLN
СТРОКОВЫЕ ДАННЫЕ • • Описание Операции Функции и процедуры Стандартные приёмы работы с символьными данными
ОПИСАНИЕ СТРОКОВЫХ ДАННЫХ Const k=80; Type st=string [10] ; Var S 1: string; S 2: string [15]; S 3: string [k]; S 4: st; • Длина строки не должна превышать 255.
CТРОКИ, МАССИВЫ - КОНСТАНТЫ Const alf=‘абвг…. ’; …. . Const den: array [1. . 7] of string [11]= (‘понедельник’, ’вторник’, ’среда’, ‘четверг’, . . ); For k: =1 to 7 do … …den[k]… S: = ‘Я учусь в группе 12 -ИЭ’;
ПРЕДСТАВЛЕНИЕ СТРОКИ S: = ‘Я учусь в группе 12 -ИЭ’; Writeln (S); For k: =1 to length (S) do … …S[k]… For k: =1 to 7 do Write (S[k]); Writeln(‘!’); Я учусь! Writeln ( S: 7, ’!’); Я учусь!
ОПЕРАЦИИ § Конкатенация (сцепление) ‘MA’+’МА’ ‘МАМА’ § Отношения ‘Иванов’>’Иванковский-Нижний’ TRUE
ФУНКЦИИ • Функция Length(St) возвращает текущий размер строки St. • Результат имеет целочисленный тип F: =length (‘Я учусь в группе 12 -ИЭ’); F? 22
ФУНКЦИИ • Функция Copy (St, Poz, N) - выделяет из St подстроку длиной N символов, начиная с позиции Poz • Если Poz > Length (St) , то результатом будет пробел • Poz, N - целочисленные выражения Slovo: =copy(ST, 2, 6); • Результат?
ПРИМЕРЫ S: = ‘Я учусь в группе 12 -ИЭ’; С: =Copy (S, 18, 2); Значение С? ’ 12’ D: =Copy (S, i, 4); Значение D?
ФУНКЦИИ • Функция Pos (Str 1, Str 2) - обнаруживает первое появление в строке Str 2 подстроки Str 1 • Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки Str 1 • Если в Str 2 подстроки Str 1 не найдено, результат равен 0
ПРИМЕРЫ S: = ‘Я учусь в группе 12 -ИЭ’; Значение N? N: =Pos (’ 12’, S); N 1: =Pos (’у’, S); N 2: =Pos (’AC’, S); N 3: =Pos (’У’, S);
ФУНКЦИИ • Функция Up. Case(Ch) – преобразует строчную букву в прописную • Обрабатываются буквы только латинского алфавита
ПРИМЕРЫ S: = ‘program’; For k: =1 to length (S) do S[k]: =Up. Case (S[k]); S? ‘PROGRAM’
ФУНКЦИИ • Функция Concat (Str 1, Str 2, …, Str. N) – выполняет сцепление строк Str 1, Str 2, …, Str. N в том порядке, в каком они указаны в списке параметров • Сумма всех символов не должна превышать 255
ПРИМЕРЫ ADRES[j]: = Concat (‘Ул. ’, UL[j], ’ Дом ’, d[j], ’ Кв. ’, k[j] );
ПРОЦЕДУРЫ • Процедура Delete (St, Poz, N) - удаление N символов строки St, начиная с позиции Poz
ПРИМЕРЫ S: = ‘Я учусь в группе 12 -ИЭ’; Delete (S, 10, 7); Значение S? ‘Я учусь в 12 -ИЭ’ Delete (S, 8, 7 ); Значение S? ‘Я учусь’ Delete (S, 2, 6 ); Значение S? ‘Я’
ПРОЦЕДУРЫ • Процедура Insert (Str 1, Str 2, Poz) - вставка строки Str 1 в строку Str 2, начиная с позиции Poz • Если новая строка Str 2 окажется чересчур длинной, то все, что имеется после 255 -го символа, отбрасывается
ПРИМЕРЫ S: = ‘Я’; Insert (‘- отличник’, S, 2); Значение S? ‘Я - отличник’ Insert (‘ещё не’, S, 3); Значение S? ‘Я - ещё не отличник’ Insert (‘, но буду’, S, length(S)+1); Значение S? ‘Я - ещё не отличник, но буду’
ПРОЦЕДУРЫ • Процедура Val (S, V, Code) – преобразование строкового значения S в переменную V (вещественную или целую) • Code- номер позиции в строке, в которой при преобразовании произошла ошибка, • если ошибки не было, значение Code будет равно 0.
ПРИМЕР S: =‘Оценки группы за экзамен: 5, 4, 2, 4, 4, 3, 5, 2, 5, 4, 5, 4’; Задание: определить средний балл …… sum: =0; kol: =0; For k: =1 to length (S) do BEGIN Val (S[k], Ball, Err); If Err=0 then Begin sum: =sum+ Ball; kol: =kol+1; End; END; If (kol>0) then Sr_ball: =sum/kol; ……
ПРОЦЕДУРЫ • Процедура Str (Х, S) – преобразует числовое значение Х в строку символов S
ПРИМЕРЫ X: =123. 254; Str (Х: 7: 2, S) ; Значение S? Str (Х: 7: 0, S) ; Значение S? Str (Х: 2: 0, S) ; ‘ 123. 25’ ‘ 123’ Значение S? ‘ 123’
СТАНДАРТНЫЕ ЗАДАЧИ ДЛЯ СИМВОЛЬНЫХ ДАННЫХ • • Поиск элементов Замена (удаление) Формирование массива слов Упорядочивание • Преобразование: символы числа
ПРИМЕР: В СИМВОЛЬНОЙ СТРОКЕ ПОДСЧИТАТЬ КОЛИЧЕСТВО ГЛАСНЫХ БУКВ Const RUSGL = ‘АОЕЯаоея…. ’; ……. Kol : = 0; For j: =1 to length(RUSGL) do For k: =1 to length(PRED) do If RUSGL[j] = PRED[k] then Kol : = Kol +1;
ПРИМЕР: ВЫБРАТЬ ИЗ СИМВОЛЬНОЙ СТРОКИ ТЕ СЛОВА, КОТОРЫЕ МОЖНО ТРАКТОВАТЬ КАК НОМЕР ТЕЛЕФОНА {не забудьте удалить все знаки} k: =0; pred: =pred+’ ‘; For j: =1 to length(pred)– 5 do begin Tel: = copy(pred, j, 6); Val( tel, nomer, ochibka); {описание tel, nomer} If (ochibka=0) and (pred[j+7]=‘ ‘) then Begin k: =k+1; spicok[k]: =nomer; end; P. S. {rez: =’‘}…… {rez: =rez+ tel+’ ‘}
N=0, S=S+’ ’ POS(‘ ‘, S)>0 ПРИМЕР: СФОРМИРОВАТЬ МАССИВ СЛОВ ИЗ СТРОКИ V= POS(‘ ‘, S) N=N+1 AN=COPY(S, 1, V-1) DELETE (S, 1, V)
ЛАБОРАТОРНАЯ РАБОТА № 10 • Ввести любое количество строк с предложениями. В качестве знаков препинания использовать только точки, запятые и восклицательные знаки. • Для каждого предложения выполнить задание в соответствии с предложенным вариантом с использованием подпрограмм. • В программе предусмотреть варианты отсутствия данных, удовлетворяющих условию задачи. • Вывести на экран исходные строки и результат.
Схема алгоритма решения задачи 1. Ввод всех предложений 2. Вывод исходного предложения, вызов подпрограммы обработки, вывод результатов (с проверкой) Н ввод N K=1, N ввод PRk K=1, N вывод PRk PODPR (PRk, …) вывод резул К
ЗАДАНИЕ • Определить тип подпрограммы решения своего варианта • Написать заголовок процедуры (функции) • Представить схему алгоритма основной программы • Представить схему алгоритма подпрограммы
Строковые данные.ppt