Скачать презентацию Тема Символьные и строковые переменные Функции и процедуры Скачать презентацию Тема Символьные и строковые переменные Функции и процедуры

1_символьные перемнные и строки.ppt

  • Количество слайдов: 23

Тема: Символьные и строковые переменные. Функции и процедуры обработки символьных и строковых переменных. ░ Тема: Символьные и строковые переменные. Функции и процедуры обработки символьных и строковых переменных. ░ Цель: Ознакомить с форматом описания ▒ символьных и строковых переменных. Организацией, размещением в памяти, ▓ функциями и процедурами обработки   символов и строк. T 1

СИМВОЛЬНЫЕ переменные Символьный тип (сhar) – это тип данных для работы с отдельными символами СИМВОЛЬНЫЕ переменные Символьный тип (сhar) – это тип данных для работы с отдельными символами в языке Pascal. Значениями переменных этого типа отдельные символы: буквы, цифры, знаки. являются В оперативной памяти переменная типа сhar занимает 1 байт=8 бит. Формат описания: Var имя_переменной: char; Например: Var u, v, X 1, X 2: char; 2

Операции над символами Над символьными переменными можно выполнять следующие действия: присваивание, например, u: =’a’; Операции над символами Над символьными переменными можно выполнять следующие действия: присваивание, например, 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: составить программу, в которой выполняется присваивание, ввод и вывод четырёх символов. 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. Набрать текст Алгоритм выполнения задачи 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) – возвращает ФУНКЦИИ ОБРАБОТКИ СИМВОЛЬНЫХ ПЕРЕМЕННЫХ 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; Пример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 Задача: составить программу подсчёта количества ! среди символов 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) – это тип данных СТРОКОВЫЕ ПЕРЕМЕННЫЕ Строка – это последовательность символов. Строковый тип (string) – это тип данных для работы со строками в языке Pascal. Значениями переменных этого типа являются строки, содержащие не более 255 любых символов. Формат описания: var имя: string; или var имя: string [n]; string – служебное слово n – максимальное количество символов в строке, если указано, значение 255. Над строковыми переменными можно выполнять основные действия: присваивание, ввод, вывод, сцепление (соединение, конкатенация) и сравнение строк. не 9

Пример3: составить программу, которая выполняет присваивание, ввод, соединение и вывод трёх строк. Первая строка Пример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 обладает свойствами и простых и составных типов: • Строковый тип данных Тип данных string обладает свойствами и простых и составных типов: • при вводе и выводе строк используют имя строки – свойство простой переменной; • строка как совокупность из n символов, т. е. как массив символов – составной тип данных. К любому символу в строке можно обратиться так же, как к элементу массива из n символов. Для этого после имени строки надо указать порядковый номер символа в строке. Например, St: =‘ИНФОРМАТИКА’; тогда St[2] = ‘Н’; St[3] = ‘Ф’; 11

В памяти ЭВМ под строку отводится максимальная длина + 1 байт. Байт располагается в В памяти ЭВМ под строку отводится максимальная длина + 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. Функции для работы со строками 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) — обнаруживает (находит) первое появление Функции для работы со строками ро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, Процедуры обработки строковых переменных 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 Процедуры обработки строковых переменных insert (str 1, str 2, poz) — вставка строки str 1 в строку str 2, начиная с позиции poz (первый параметр — что вставляем, второй параметр — куда) • при вставке контролируйте длину полученной строки (сообщения об ошибке не выдается. ) insert (‘порт’, ’с’, 1); { спорт} 16

Пример4: программа, в которой из слова Пример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 Пример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) — преобразование числового значения Процедуры обработки строковых переменных процедура преобразования типов: 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) — Процедуры обработки строковых переменных процедура преобразования строки в число: 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 Задача: преобразовать строки в число 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 Пример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. Составить программу: получить из слова металлоискатель слова: МЕТАЛЛ, ИСКАТЕЛЬ, ЛОМ и … Задания: 1. Составить программу: получить из слова металлоискатель слова: МЕТАЛЛ, ИСКАТЕЛЬ, ЛОМ и … 2. Задан текст. Проверить какая из букв ‘a’ или ‘e’ встречается чаще. 23