Символьные переменные и строки

Содержание

Слайд 2

CHAR

CHAR - символьный тип данных является порядковым, значения могут сравниваться между собой.

CHAR CHAR - символьный тип данных является порядковым, значения могут сравниваться между
Коды символов упорядочены, например:
‘A’<’B’<’C’<…<’Z’ ‘0’<’1’<’2’<…<’9’
Используемые функции:
PRED() предыдущее значение, например PRED(‘B’)=’A’
SUCC() последующее значение, например SUCC(’A’)= ‘B’
ORD() определяет порядковый номер символа, например ORD(‘7’)-ORD(‘0’)=7
CHR() определяет символ по порядковому номеру.
Функции CHR() и ORD() являются обратными по отношению друг к другу. CHR(ORD(‘a’))=’a’ ORD(CHR(7))=7
UPCASE() используется для преобразования строчных английских букв в прописные
Символьные переменные могут использоваться как переменные цикла, например
For I:=’Z’ downto ‘A’ Do или For I:= ‘A’ to’Z’ Do

Слайд 3

STRING

У типа-строки может быть указан размер (от 1 до 255).
Для строк выполняются

STRING У типа-строки может быть указан размер (от 1 до 255). Для
операции сравнения (>,<,>=,<=), например
‘viv’<’viva’ (длина второй строки больше)
‘Balkon’<‘balkon’ ) (Ord(‘B’)По сути, строка длины К представляет собой массив из К+1 символьных переменных, где нулевой элемент хранит значение длины строки:
STRING[K]=ARRAY[0..K] of CHAR;
К любому символу можно обращаться по его номеру, например:
Str1[i] – это обращение к i-му элементу строки Str1.
Строки вводятся и выводятся не поэлементно, как массивы, а сразу целиком.

Слайд 4

Функции

COPY(s,p,n) Тип значения функции string S: string; P,n:integer
Из строки s, начиная с

Функции COPY(s,p,n) Тип значения функции string S: string; P,n:integer Из строки s,
позиции p, копируется n символов
LENGTH(s) Тип значения функции integer S: string;
Определяется длина s, т.е. число символов из которых она состоит
POS(w,s) Тип значения функции integer S,w: string;
В строке s отыскивается первое вхождение строки w(номер позиции). Если вхождения нет, то возвращается 0
CONCAT(s1,s2,…Sm) Тип значения функции string S1,s2,…Sm: string;
Строки s1+s2+…+sm записываются одна за другой. Если результат превысит 255 символов, строка обрывается

Слайд 5

Процедуры

DELETE(s,p,n) S: string;P,n:integer
Удаляются n символов из строки s, начиная с позиции p
INSERT(w,s,p,) S,w: string;P:integer
В

Процедуры DELETE(s,p,n) S: string;P,n:integer Удаляются n символов из строки s, начиная с
строку s, начиная с позиции p, вставляется строка w
STR(v,s)
Число v преобразуется в строку s
VAL(s,v,w)
Если строка s представляет собой правильную запись числа, то это число записывается в переменную v, при этом значение w равно 0. В противном случае (строка состоит не только из цифр) преобразование не выполняется, w≠0 –признак ошибки

Слайд 6

Задача 1

Задача 2

Вывести в одну строку ABBCCC…ZZ…Z.

Вывести в одну строку

Задача 1 Задача 2 Вывести в одну строку ABBCCC…ZZ…Z. Вывести в одну строку ZYY…AA…A
ZYY…AA…A

Слайд 7

Задача 3

ABC…Z
BC…Z
C…Z
…...
Z

Вывести треугольник

Задача 3 ABC…Z BC…Z C…Z …... Z Вывести треугольник

Слайд 8

Задача 4

Для решения этой задачи нам понадобится объявить множество знаков препинания М.

Задача 4 Для решения этой задачи нам понадобится объявить множество знаков препинания
Затем, последовательно проверяя каждый символ строки на принадлежность этому множеству, найдем первый знак препинания. Найдя знак надо выйти из цикла.

Дана строка символов. Удалить из нее первый знак препинания.

Как нужно доработать программу, если знак препинания стоит на первой позиции?

Дана строка символов. Удалить из нее все знаки препинания.

Задача 5

Слайд 9

Задача 5

Дана строка символов. Удалить из нее все знаки препинания.

Задача 5 Дана строка символов. Удалить из нее все знаки препинания.

Слайд 10

Задача 8
При решении данной задачи следует обратить внимание на 3 важные особенности.

Задача 8 При решении данной задачи следует обратить внимание на 3 важные

Основная сложность заключается в том, что слова могут быть разделены группой пробелов. Если бы слово от слова отделялось только одним пробелом, то мы могли бы посчитать количество пробелов и вычислить количество слов. В нашем случае необходимо ввести логический флаг F, по которому можно определять начало слова (F:=TRUE) и конец слова (F:=FALSE).
По условию задачи текст вводится до точки, т.е. все слова за первой точкой игнорируются.
Последнее слово в тексте может обрабатываться не совсем корректно. Если между последним словом и точкой есть хотя бы один пробел, то флаг F позволит обработать его. Если последнее слово кончается на точку, то счетчик слов его не обработает, т.к. флаг не найдет конца слова. В этом случае значения счетчика слов нужно увеличивать на единицу по выходе из обработки цикла.

Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Подсчитать, сколько слов содержит данная строка.

Слайд 11

Задача 8

Дана строка символов до точки. Группы символов в ней между группами

Задача 8 Дана строка символов до точки. Группы символов в ней между
пробелов считаются словами. Подсчитать, сколько слов содержит данная строка.

1 способ решения

Слайд 12

Задача 8

2 способ решения

Дана строка символов до точки. Группы символов в ней

Задача 8 2 способ решения Дана строка символов до точки. Группы символов
между группами пробелов считаются словами. Подсчитать, сколько слов содержит данная строка.

Слайд 13

Задачи повышенной сложности

Задача На вход программе подается текст заклинания, состоящего не более

Задачи повышенной сложности Задача На вход программе подается текст заклинания, состоящего не
чем из 200 символов, заканчивающийся точкой (символ «точка» во входных данных единственный). Оно было зашифровано Гарри Потером следующим образом. Сначала Гарри определил количество букв в самом длинном слове, обозначив полученное число К (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем он заменил каждую английскую букву в заклинании на букву, стоящую в алфавите на К букв ранее (алфавит считается циклическим, то есть перед буквой А стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остались строчными, а прописные прописными. Требуется написать как можно более эффективную программу, которая будет выводить на экран текст зашифрованного заклинания. Например, если зашифрованный текст был таким:
Zb Ra Ca,Dab Ra.
То результат расшифровки должен быть следующим:
Ce Ud Fd,Gde Ud.

Слайд 14

program str1;
Var s:string; c,cnew:char; f: boolean; i,k,max:integer;
begin
s:=''; max:=0;k:=0; f:=false;
repeat
read(c);

program str1; Var s:string; c,cnew:char; f: boolean; i,k,max:integer; begin s:=''; max:=0;k:=0; f:=false;
s:=s+c;
if f then {слово началось }
if c in ['a'..'z','A'..'Z'] then k:=k+1
else begin if k>max then max:=k; f:=false end
else {f=false}
if c in ['a'..'z','A'..'Z'] then begin f:=true; k:=1 end
until c='.';
writeln(s,max);
for i:=1 to length(s) do
begin
cnew:=chr(ord(s[i])+max);
case s[i] of
'a'..'z':if cnew>'z' then write(chr(ord(cnew)-26))
else write(cnew);
'A'..'Z':if cnew>'Z' then write(chr(ord(cnew)-26))
else write(cnew);
else write(s[i])
end; end; readln; readln;
end.

Комментарий Программа читает входные данные, сразу подсчитывая максимальную длину встречающихся слов. За второй проход исходных данных производится замена букв латинского алфавита и печать расшифрованного сообщения.

Например, если зашифрованный текст был таким:
Zb Ra Ca,Dab Ra.
То результат расшифровки должен быть следующим:
Ce Ud Fd,Gde Ud.

РЕШЕНИЕ

Слайд 15

Задачи повышенной сложности

Задача. На вход программе подаются строчные и прописные английские буквы.

Задачи повышенной сложности Задача. На вход программе подаются строчные и прописные английские
Ввод этих символов заканчивается точкой (другие символы, отличные от ‘.’,’a’..’z’,’A’..’Z’ во входных данных отсутствуют. Требуется написать программу, составляющую слово из тех букв английского алфавита, которые не встречаются во входных данных ни как строчные, ни как прописные, причем буквы должны идти в алфавитном порядке. Каждая буква должна быть распечатана один раз. Буквы построенного слова должны быть прописными. Если во входных данных встречаются все буквы английского алфавита, то следует вывести строчными буквами слово ‘no’.
Например, пусть на вход подаются следующие символы:
absCDKLMNOPvwXYabcprst.
В данном случае программа должна вывести
EFGHIJQUZ
Имя файла: Символьные-переменные-и-строки.pptx
Количество просмотров: 237
Количество скачиваний: 0