1_символьные перемнные и строки.ppt
- Количество слайдов: 23
Тема: Символьные и строковые переменные. Функции и процедуры обработки символьных и строковых переменных. ░ Цель: Ознакомить с форматом описания ▒ символьных и строковых переменных. Организацией, размещением в памяти, ▓ функциями и процедурами обработки символов и строк. T 1
СИМВОЛЬНЫЕ переменные Символьный тип (сhar) – это тип данных для работы с отдельными символами в языке Pascal. Значениями переменных этого типа отдельные символы: буквы, цифры, знаки. являются В оперативной памяти переменная типа сhar занимает 1 байт=8 бит. Формат описания: Var имя_переменной: char; Например: Var u, v, X 1, X 2: char; 2
Операции над символами Над символьными переменными можно выполнять следующие действия: присваивание, например, u: =’a’; X 1: =’D’; v: =’!’; X 2: =#33; {нельзя написать u: =’abc’} ввод, например, read (u, v, X 1, X 2); readln (u, v, X 1, X 2); вывод, например, write (u, v, X 1, X 2); writeln (u, v, X 1, X 2); сцепление (конкатенация) – операция соединения нескольких символов и обозначается символом + (плюс), например, write (u+v+X 1+X 2); сравнение символов применяя операции сравнения: =, <=, >=, <, >, <> – – при проверке сравниваются коды символов символы упорядочены в соответствии с их кодами (латинский алфавит и символы кириллицы: заглавные, строчные) Например, операция сравнения результат ’ 7’<’c’ true ’b’=’B’ false 3
Пример1: составить программу, в которой выполняется присваивание, ввод и вывод четырёх символов. Program Primer 1; var X 1, X 2, X 3, X 4: char; Begin X 4: =’!’; {присваивание значения} write (’Введите три символа: ’ ); {вводить без пробелов} read(X 1, X 2, X 3); {ввод трёх символов} writeln (X 1+X 2+X 3+X 4); {сцепление и вывод результата} end. Результат выполнения программы может выглядеть: Введите три символа: УРА! 4
Алгоритм выполнения задачи 1. Загрузите программу Turbo Pascal (TP 7BINTURBO. EXE). 2. Набрать текст программы. 3. Выполнить компиляцию – проверка на наличие синтаксических ошибок (CompileCompile или Alt+F 9). 4. Выполнить проверку (подобрать исходные значения и посчитать результат). 5. Запустить программу на выполнение (RunRun или Ctrl+F 9). 6. Просмотреть полученный результат (Alt+F 5) и сравнить его с результатом проверки. 7. Сохранить программу в своей папке: a). File Change Dir… – укажите и выберите каталог, который нужен; b). File Save As… – введите имя файла, не более 8 символов). 5
ФУНКЦИИ ОБРАБОТКИ СИМВОЛЬНЫХ ПЕРЕМЕННЫХ Succ(x 1) – возвращает следующий символ; Pred(x 1) – возвращает предыдущий символ; Ord(x 1) – возвращает значение кода литеры; Chr(n) – возвращает символ с кодом n. Например, Succ(’ 0’)=’ 1’ – символ, следующий за символом 0, равен символу 1 Pred(’ 3’)=’ 2’ – символ, предшествующий символу 3, равен 2 Chr(65)=’A’ – символ, соответствующий коду 65, равен А Ord(’A’)=65 – код символа А равен 65 6
Пример2: напечатать на экране строчные буквы латинского алфавита от z по a. Program Lat_bukv; Var c: char; begin For c: ='z' downto 'a' do write(c); End. Задание: Составить программу, которая выведет на экран: а) прописные буквы латинского алфавита от A по K; б) символы с кодами от 60 до 70. 7
Задача: составить программу подсчёта количества ! среди символов s 1, …, sn до 1 -ой * Program kol; Var S: char; k: integer; Begin k: =0; Readln(s); {ввод 1, a, b, !, !, c, !, *, – до 1 -ой звездочки} While s<>'*' do begin If s='!' then k: =k+1; Readln(s); end; Writeln(k); {результат 3} End. Если используется оператор read, то символы вводятся без пробелов и без всяких знаков. Упорядочение открывает возможность использовать в программах операторы цикла с параметром, имеющий тип char. 8
СТРОКОВЫЕ ПЕРЕМЕННЫЕ Строка – это последовательность символов. Строковый тип (string) – это тип данных для работы со строками в языке Pascal. Значениями переменных этого типа являются строки, содержащие не более 255 любых символов. Формат описания: var имя: string; или var имя: string [n]; string – служебное слово n – максимальное количество символов в строке, если указано, значение 255. Над строковыми переменными можно выполнять основные действия: присваивание, ввод, вывод, сцепление (соединение, конкатенация) и сравнение строк. не 9
Пример3: составить программу, которая выполняет присваивание, ввод, соединение и вывод трёх строк. Первая строка известна – «Информатика» . Program Primer 3; var Y 1, Y 2, Y 3: string; Begin Y 1: =‘Информатика‘; {присваивание значения} writeln (‘Введите две строки: ‘ ); readln (Y 2); {ввод строки Y 2} readln (Y 3); {ввод строки Y 3} writeln (Y 1, ‘, ░ ’ , Y 2, ‘, ░ ’ , Y 3); {вывод} writeln (Y 1 + ‘: ˽ ’ + Y 2 + ‘˽ и ˽ ’ + Y 3); {соединение и вывод} end. Результат выполнения программы может выглядеть: Введите две строки: Компьютер программы Информатика, ░компьютер, ░программы Информатика: ˽компьютер˽и˽программы 10
Строковый тип данных Тип данных string обладает свойствами и простых и составных типов: • при вводе и выводе строк используют имя строки – свойство простой переменной; • строка как совокупность из n символов, т. е. как массив символов – составной тип данных. К любому символу в строке можно обратиться так же, как к элементу массива из n символов. Для этого после имени строки надо указать порядковый номер символа в строке. Например, St: =‘ИНФОРМАТИКА’; тогда St[2] = ‘Н’; St[3] = ‘Ф’; 11
В памяти ЭВМ под строку отводится максимальная длина + 1 байт. Байт располагается в начале слова и указывает длину строки. Тype sm=string[10]; Var st 1, st 2: sm; {st 1 и st 2 отводится по 11 байт} rt 1: string[213]; { 214 байт} rt 2: string; { 256 байт} Rt 2: =''; {пустая строка} 12
Функции для работы со строками length(st) — вычисляет текущую длину в символах строки st. Результат имеет целочисленный тип. N: =length (‘студент‘); {N =7} сopy(st, poz, n) — выделяет из строки st подстроку длиной n символов, начиная с позиции роz. Если poz больше длины строки, то результатом будет пустая строка. s 1: ='Turbo Pascal'; s 2: =copy(s 1, 1, 5) ; s 3: =copy(s 1, 7, 3); {Turbo} {Pas} concat(str 1, str 2, . . . , strn) — выполняет сцепление строк str 1, str 2, . . . strn в том порядке, в каком они указаны в списке параметров. S: =concat('AA', 'XX', 'Y'); { S='AAXXY' } или s: ='AА'+'ХХ'+'У‘; 13
Функции для работы со строками роs (str 1, str) — обнаруживает (находит) первое появление в строке str подстроки str 1. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ подстроки str 1. Если в str подстроки str 1 не найдено, результат равен 0. str: = 'Turbo Pascal'; n 1: =pos('Pascal', str); {7} n 2: =pos('pascal', str); {0} n 3: =pos(‘r', str); {3} 14
Процедуры обработки строковых переменных delete (st, poz, n) — удаление n символов строки st, начиная с позиции роz Если значение роz больше, чем размер строки, то ничего не удаляется. delete (‘спорт’, 1, 1); {порт} delete (‘спорт’, 2, 1); {сорт} Удаление всех пробелов в начале строки st : while st[1]=' ' do delete (st, 1, 1); Удаление пробелов в конце строки st : while st[length(st)]=' ' do delete (st, length(st), 1); 15
Процедуры обработки строковых переменных insert (str 1, str 2, poz) — вставка строки str 1 в строку str 2, начиная с позиции poz (первый параметр — что вставляем, второй параметр — куда) • при вставке контролируйте длину полученной строки (сообщения об ошибке не выдается. ) insert (‘порт’, ’с’, 1); { спорт} 16
Пример4: программа, в которой из слова "СТРОКА" будет получено слово "СЕТКА" Var st : string [6]; { 6 – длина строки СТРОКА } Begin st: ='СТ Р О КА'; {вводить латинскими буквами} delete (st, 3, 2); {удаляем с третьей позиции два символа→ результат – СТКА } insert ('Е', st, 2); {вставим символ Е на вторую позицию в СТКА } writeln (st); {выводим результат на экран – СЕТКА} End. 17
Пример5 : преобразовать строчные буквы в заглавные Vаr s : string; i: integer; Begin write ('Введите исходную строку: '); readln (s); for i: =1 to length(s) do s[i]: =upcase(s[i]); {Преобразование одного символа} writeln(s); End. 18
Процедуры обработки строковых переменных процедура преобразования типов: str (number, st) — преобразование числового значения величины number в строку st. var s 1, s 2, s 3, s 4: string; num 1: integer; num 2: real; num 1: =5; num 2: =5. 78; str(num 1, s 1); {s 1=’ 5’} str(num 1: 3, s 2); {s 2=’ 5’} str(num 2, s 3); {s 3=’ 5. 7800000 E+00’} 19 str(num 2: 3: 1, s 4); {s 4=’ 5. 8’}
Процедуры обработки строковых переменных процедура преобразования строки в число: val (st, number, code) — преобразует значение st в величину целочисленного или вещественного типа и помещает результат в number. Code - целочисленная переменная. Ошибки нет, значение code равно нулю, если не число code содержит номер позиции первого ошибочного символа, а значение number не определено. s 1: =’ 5. 78’; s 2: =’ 5, 78’; val(s 1, num 1, cod 1); val(s 2, num 2, cod 2); {num 1=5. 78 cod 1=0} {cod 2=2 – второй символ ошибочный} 20
Задача: преобразовать строки в число Var s: string; n, error : integer; Begin repeat write ('Введите число '); {сообщение ввести число, } readln (s); { а вводим строку } val(s, n, error); {преобразуем строку в число} if error>0 then writeln ('Неверный символ № ', error) until error=0; { продолжение программы } 21
Пример6: написать программу подсчёта количества ! в строке, введённой с клавиатуры Program string_1; Var s : string; i, k : integer; Begin k: =0; writeln(‘Введите строку’); readln(s); for i: =1 to length(s) do if s[i]='!' then k: =k+1; writeln(‘Восклицательных знаков’, k: 4); End. 22
Задания: 1. Составить программу: получить из слова металлоискатель слова: МЕТАЛЛ, ИСКАТЕЛЬ, ЛОМ и … 2. Задан текст. Проверить какая из букв ‘a’ или ‘e’ встречается чаще. 23