Обработка символьной информации. Строки
Обработка символьной информации
До сих пор в основном рассматривались программы, предназначенные для обработки числовых данных. Обработка символьных (литерных) данных становится возможной благодаря привлечению значений и переменных типа char. Значениями типа char служат все символы алфавита языка Паскаль: буквы, цифры, знаки операций, скобки, пробел и т.д. Исключение составляет штрих (апостроф) - ‘, имеющий специальное назначение и употребляющийся всякий раз, когда значение типа char явно указывается в программе. При выполнении процедуры вывода штрихи на печати не выводятся. Например: var u : char; … u := ‘b’; write(u); при этом на экране печатается b. Символы, подготовленные для ввода, не отделяются друг от друга никакими знаками. Если три символа будут вводиться с помощью read(a, b,c), то можно будет набрать на клавиатуре чшщ (без пробела). Все множество символов считается упорядоченным. Упорядоченность получается так: из всех символов составлен список, и из двух символов меньше тот, который встречается в списке раньше. Например: ‘a’ < ‘b’ < … < ‘z’ ‘A’ < ‘B’ < … < ‘Z’ ‘0’ < ‘1’ < … ‘9’ При построении условий, например, располагающихся после if и while, можно использовать разнообразные отношения в множестве символов: =, <>, >, >=, <, <=. Например, ‘a’ < ‘c’; ‘3’ > ‘1’. Упорядоченность открывает возможность использования в программах операторов цикла с параметром, имеющим тип char. Например: var c : char; … for c := ‘a’ to ‘z’ do write(c); for c := ‘z’ to ‘a’ do write(c); при этом в первом случае на экране появится abcdefg…xyz, а во втором – zyx…gfedcba. В следующих двух примерах будут приведены программы, которые предназначены для исследования и преобразования символов, предшествующих символу / в последовательности данных символов. Пример 7.1 Программа замены всех восклицательных знаков точками. program p71; var c : char; begin read(c); while c <> ‘/’ do begin if c = ‘!’ then write(‘.’) else write(c); read(c); end; end. Пример 7.2 Программа выбрасывания групп символов, расположенных между скобками (,). Сами скобки тоже выбрасываются. Предполагается, что внутри каждой пары скобок нет других скобок. program p72; var c : char; i : integer; begin i := 0; read(c); while c <> ‘/’ do Begin if c = ‘(‘ then i := 1 else if c := ‘)’ then i := 0 else if i = 0 then write(c); read(c) End End. Пример 7.3 Программа вывода последовательности букв: a ab abc … abc…xyz program p73; var c, d : char; Begin for c := ‘a’ to ‘z’ do Begin for d := ‘a’ to c do write(d); writeln End End. Высказывание «значение переменной а типа char есть буква» может быть записано так: (а >= ‘a’) and (a <= ‘z’) или a in [‘a’..’z’]. Для проверки, является ли значением а цифра можно составить выражение а in [‘0’..’9’]. Пример 7.4 Программа читает первое слово в тексте и печатает число букв в нем. program p74; var c : char; i : integer; Begin i := 0; repeat read(a) until c in [‘a’..’z’]; repeat i := i + 1; read(c) until not (c in [‘a’..’z’]); writeln(‘Число букв в первом слове текста:’, i:2) End. Задание 7.1 1. Всегда ли справедливо следующее утверждение: а) если с литера и ‘0’ £ ‘9’, то с – цифра; б) если с – литера и ‘a’ c ‘z’, то с – строчная латинская буква; в) ‘9’ < ‘a’; г) ‘0’ = 0; д) ord(‘0’) = 0; е) ‘a’ = ‘A’; ж) если с и d – литеры, то с < d тогда и только тогда, когда ord(c) < ord(d); з) ord(chr(k)) = k для любого целого k; и) chr(ord(c)) = c для любой литеры с. 2. Вычислите значения выражений:
3. Имеется символьная переменная d. Присвойте логической переменной t значение true, если выполняется указанное условие, и значение false в противном случае: а) значение d – это литера ‘*’; б) значение d – литера ‘a’ или ‘q’; в) значение d – цифра. 4. Определите значение переменной d после выполнения следующих операторов: а) c := ‘+’; d := c; б) c := ‘+’; d := ‘c’. 5. Вычислите s – сумму порядковых номеров всех букв, входящих в слово SUM. 6. Напечатайте текст, образованный литерами с порядковыми номерами 65, 71 и 69. 7. Символьной переменной next присвойте цифру, следующую за цифрой, являющейся значением символьной переменной dig, считая при этом, что за ‘9’ следует ‘0’. 8. Логической переменной f присвойте значение true, если между буквами ‘a’ и ‘z’ нет иных символов, кроме строчных латинских букв, и значение false иначе. 9. Напечатайте заданный непустой текст: а) удалив из него все цифры и удвоив знаки «+» и «-«; б) удалив из него все знаки «+», непосредственно перед которыми идет цифра. 10. Выведите в одну строку ABBCCC…ZZ…Z. 11. Выведите в одну строку ZYY…AA…A. 12. Выведите треугольник A B C … Z B C … Z … Z.
Строки
Строка (string) – это структурированный тип, во многом похожий на массив символов. Основное отличие – число символов в строке динамическое: от 0 (пустая строка) до указанной при описании максимальной длины, в то время как для массивы число элементов в нем фиксировано. Если максимальная длина не указана при объявлении строковой переменной, то предполагается максимально возможная длина – 255 символов. Например: var s : string [20]; Каждая строковая переменная занимает на один байт больше – в нулевом байте хранится фактическая длина строки. Строковые выражения состоят из строковых констант, переменных, функций и операций. Знак + в операциях со строками означает сцепление. Длина результата при этом не больше 255 символов. Над строковыми данными допустимы и операции отношения.
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (778)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |