лекция 6.pptx
- Количество слайдов: 13
РАБОТА СО СТРОКОВЫМИ ЭЛЕМЕНТАМИ
1. Описание строковых переменных. Использование компьютеров в настоящее время в значительной мере состоит из работы с текстами и прочей нечисловой информацией. Поэтому в современном программировании задачи, связанные с обработкой текстовой информации, встречаются очень часто. Познакомимся с некоторыми возможностями языка паскаль, предназначенными для решения этого класса задач. С текстовыми (они же символьные или строковые) данными мы уже встречались на одном из первых занятий, так что для начала вспомним то, что нам уже известно. Описание строковой переменной помещается в блок описания переменных (после слова Var) и выглядит так: Var <имя_переменной> : String [<количество_символов_N>] 1<=N<=255 колличество символов N может отсутствовать, тогда считается, что задается max колличество символов =255 символам, т. е. <имя_переменной> : String
В квадратных скобках должно стоять либо целое число, либо имя целочисленной константы (объявленной в блоке const), либо составленное из них целочисленное выражение. Например, такое описание Var name : String[50]; отводит в памяти компьютера 50+1 байт для размещения переменной с именем name. При этом нужно иметь ввиду, что в квадратных скобках записывается наибольшее возможное для этой переменной количество символов, то есть объем оперативной памяти компьютера, необходимый для хранения значений этой переменной во время исполнения всей программы. Если в какой-то момент этой переменной будет присвоено более "короткое" значение, то часть памяти компьютера просто не будет использоваться, а если более "длинное", то часть символов пропадет. Нулевой символ строки содержит информацию о текущей длине строки, его код равен числу символов в строке. Можно объявить строковую константу в разделе описания констант: const <имя_переменной>: String='значение' Пр. const st='группа';
2. Ввод и вывод символьных переменных. Работа с символьными переменными Ввод и вывод символьных переменных осуществляется с помощью команд Read (Read. Ln) и Write(Writeln) соответственно. При этом введется и напечатается столько символов, сколько указано в описании (недостающие дополнятся пробелами, лишние "отрежутся"). Присваивание значения такой переменной осуществляет обычный оператор присваивания (: =), при этом текстовую константу следует заключить между двумя знаками ', например, выполнение оператора name : = 'все, что угодно' приведет к тому, что в 50 -символьную переменную text будет занесена строка, содержащая 15 символов: все, что угодно Остальные 35 байт использоваться не будут.
При выполнении оператора name: ='все, что угодно, и еще много разного нужного и не очень' в переменную name будет занесена строка все, что угодно, и еще много разного нужного и не Остальная часть (очень) введена не будет. Для работы с отдельным символом из строки можно указывать имя строки и номер нужного символа в квадратных скобках. Так name[1] указывает на первый символ строки name. Пример: var speech: string[20]; . . . speech: ='Маузер'; speech[4]: ='ч'; speech[1]: ='В'; Writeln(speech); . . . На экране: Ваучер
3. Группы символов кодовой таблицы ASCII. Константа типа Char - это непустой символ из кодовой таблицы ПК, заключенный в апострофах: 'D', '*' и т. д. Символы можно задавать и с помощью кодового номера с префиксом #, например: #7 - звуковой сигнал, #254 - символ ю, и т. д. Для неклавишных символов это - один из основных способов задания. Символы с кодами 0 -31 являются управляющими, это означает, что вывод их на экран или в файл эквивалентен подаче команды, управляющей работой устройства. Группы символов кодовой таблицы ПК (альтернативной): 0. . 127 - стандартные символы ASCII 0. . . 31 - управляющие символы (управляют работой компьютера); 32 - пробел 33. . 47, 58. . 64, 91. . 96 - математические и другие знаки; 48 -57 - цифры
65 - A. . 90 - Z -прописные латинские буквы 97 - a. . 122 - z - строчные латинские буквы 128 -А. . 159 -Я - прописные русские буквы 160 -а. . 175 -п, 224 -р. . 239 -я - строчные русские буквы 176. . 178 - символы заполнения фона 179. . 222 - символы псевдографики Символы, используемые при оформлении программ: ░ -176 ▒ -177 ▓ -178 □ -219 Символы, используемые для построения таблиц и рамок: 194 196 203 205 218 ┌ ┬ ─ ┐ 191 201 ╔ ╦ ═ ╗ 187 195 ├ ┼ 197 ┤ 180 204 ╠ ╬ 206 ╣ 185 179 │ │ 179 186 ║ ║ 186 192 └ ┴ ─ ┘ 217 200 ╚ ╩ ═ ╝ 188 193 196 202 205
4. Стандартные функции обработки символьных величин: Chr(k: byte): char - получение символа по его коду; Ord(c: char): byte - получение кода заданного символа; Up. Case(c: char): char - перевод строчных латинских символов 'a'. . 'z' в прописные 'A'. . 'Z'; остальные символы не изменяются; Pred(c: char): char - получение символа, предшествующего заданному; (но нет Pred(#0)); Succ(c: char): char - получение символа, следующего за заданным; (но нет Succ(#255)); Операции над символами: - присваивание; три способа присвоить значение символьной переменной: с: ='A'; c: =#65; c: =Chr(65); - сравнение (по коду): 'R'='R' 'Q'<'R' 'R'<'r'
Символьные строки, как и числа, можно сравнивать между собой и использовать эти равенства и неравенства в качестве условий в циклах и развилках. Равными считаются строки одинаковой длины (не по описанию, а фактически), у которых все символы, стоящие на соответствующих местах, одинаковы. Например, строки text_1 и text_2 равны, если text_1 = 'Я вас любил!' , text_2 = 'Я вас любил!'. В следующих случаях строки text_1 и text_2 не равны: text_1 = 'Я вас любил!' , text_2 = 'Я Вас любил!' ; text_1 = 'Я вас любил!' , text_2 = ' Я вас любил!'; text_1 = 'Я вас любил!' , text_2 = 'Я вас любил. . . '. (Попробуйте определить, почему эти строки не равны).
Более того, можно использовать при сравнении строк знаки > (больше) и < (меньше). Одна строка считается больше другой, Если в словаре (где слова расположены по алфавиту) она стоит дальше от начала. Если первые буквы строк совпадают, то сравниваются вторые, затем третьи и т. д. Строчные буквы расположены в таком воображаемом "словаре" после заглавных, а русские после латинских. Что касается цифр и прочих символов, которые могут входить в строки, можно руководствоваться общим правилом. Каждый символ, который можно набрать на клавиатуре, имеет свой код, эти коды можно посмотреть в специальной таблице, На компьютерах IBM PC принят код, называемый ASCII. Символьные строки можно "склеивать" между собой с помощью операции "+" (ее принято называть операцией конкатенации (объединение)). Например, выполнение группы операторов a 1 : = 'ма'; a 2 : = 'шина'; b : = a 1 + a 2; приведет к тому, что переменной b будет присвоено значение 'машина'.
5. Встроенные функции для обработки строк Length(Str) - функция, котоpая вычисляет текущую длину (в символах) стpоки Str. Pезультат имеет целочисленный тип. Текущая длина строки содержится также в коде символа Str[0]. Copy(St, K, J) - функция, котоpая выделяет из St подстpоку из J символов, начиная с позиции K. Если K>Length(St), то результатом будет пустая строка. Pos(S, St) - функция, которая определяет наименьший номер элемента в St, начиная с которого S входит в St как подстрока. Если в St не найдено S, то результат равен нулю. Результат имеет тип byte. Concat(str 1, str 2, . . ) - функция, выполняющая объединение всех строк, указанных в качестве аргументов. Количество аргументов может быть любым.
6. Встроенные процедуры для обработки строк Delete(Str, K, J) - пpоцедуpа, котоpая удаляет из стpоки Str J символов, начиная с K-го. Pезультатом является стpока Str без удаленной подстpоки. Если K больше размера строки, символы не удаляются. Insert(Str 1, Str 2, K) - пpоцедуpа, котоpая вставляет стpоку Str 1 в стpоку Str 2, начиная с позиции K. Если полученная в pезультате стpока Str 2 пpевышает 255 символов, то все лишние символы (начиная с 256) отбpасываются. Str(x, st) - процедура, которая преобразует число X вещественного или целого типа в последовательность символов. Число X может быть указано с форматом, аналогичным формату вывода в процедуре Write, например: Str(x: 8: 3, st). Val(st, x, Code) - процедура, которая преобразует символьное представление числа в числовое значение, соответствующее типу переменной x (вещественному или целому). Переменная Code: integer служит для контроля правильности выполнения преобразования (Code=0) или указания номера ошибочного символа (Code<>0).
Пр1. Дана строка. Подсчитать общее число символов +, -, * в данной строке. Program St 1; const n=10; var s: string[n]; I, m: integer; begin writeln ('введите строку символов, не более 10'); readln(s); m: =0; {счетчик колличества символов +, -, *} for i: =1 to length(s) do if (s[i]='+') or(s[i]='-') or (s[i]='*') then m: =m+1; write ('m=', m); end.
лекция 6.pptx