Лабораторная работа 11.
Символьные переменные Тип данных "CHAR"
Переменные, предназначенные для хранения одиночных символов, называются символьными переменными. В языке Turbo Pascal для них определён тип данных CHAR. В переменную этого типа может быть помещён любой из 256 символов расширенного кода ASCII.
Таблица расширенного кода ASCII.
Объявление символьных переменных осуществляется в разделе объявления переменных с помощью служебного слова CHAR.
Этот тип данных обладает некоторыми особенностями. Обычно значения для переменных типа "CHAR" задаются в апострофах. Например, если в программе есть описания
u, v: char то возможны операторы присваивания u:=’a’; v:=u; и т.д.
Штрих ‘’ - принятая в Паскале форма кавычки - употребляется всякий раз, когда значение типа "CHAR" явно указывается в программе. Выполнение операторов
u:=’b’; write(u);
приводит к высвечиванию на экране символа b.
Кроме того, имеется возможность задавать значения указанием непосредственно числового значения ASCII-кода. В этом случае Вы должны перед числом, обозначающим код символа ASCII, поставить знак "#"
u:=#97
П р и м е р 1. Дана последовательность символов, заканчивающаяся символом "/". Необходимо подсчитать количество восклицательных знаков в данной последовательности.
Program ех_1;
var
с: char; { организация символьной переменной }
n: integer; { переменная для хранения количества "!" }
begin
read(с); { чтение первого символа с клавиатуры }
n:=0; { обнуление счётчика "!" }
while с=’/’ do { условие окончания работы вводом символа }
begin
if c=’!’ then n:=n+l; { подсчёт символов "!" }
read(c); { чтение следующего символа }
end;
end.
Обратите внимание. В таблице ASCII большие латинские буквы и малые латинские буквы расположены подряд по алфавиту. Такая упорядоченность открывает возможность использования в программах операторов цикла с параметром, имеющим тип "CHAR". Параметр цикла пробегает последовательность символов в указанных границах. Вьполнение оператора цикла
for c:=’a’ to ‘z’ do write(c)
где с символьная переменная, приводит к высвечиванию на экране последовательности всех малых букв латинского алфавита:
abcdefghhijklrrjiopqrstuvwxyz
Выполнение оператора цикла
for c:= ‘z’ downto ’a’ do write (c)
приведёт к выводу этих же букв в обратном порядке.
Символьные переменные очень удобны для написания диалоговых программ. Представим себе, что вам необходимо довольно часто получать значения некоторой функции, например значение синуса от корня квадратного из х для разных значений х.
Пусть заранее неизвестно, сколько раз и для каких именно значений х потребуется вычислить значение функции. Можно составить такую программу, которая будет вычислять значение функции, и сразу же ожидать ввода нового значения для х. Это зацикленная программа.
program ех_2;
label 1;
var с: real;
begin
1: write(‘x=’); read(с) ;
writeln(‘ ,f(x)= ‘ , sin(sqrt(x)));
goto 1;
end.
Когда эта программа выполняется, на экране формируется последовательность строк (?)
Для того, чтобы прекратить выполнение программы, потребуется предпринять специальные меры - например выключить компьютер.
Другой вариант - программа, в ходе выполнения которой на экране регулярно возникает вопрос, следует ли продолжать работу, или прекратить выполнение программы:
program ех_3;
var х: real; s: char;
begin s:=’д’;
while s=’д’ do begin write(‘x=’); read(x); writeln(‘ f(x)= ‘, sin(sqrt(x))); writeln(‘ продолжить?(д или н) ‘); read(s); write(‘ ‘); end; end.
Когда выполняется эта программа, на экране возникает следующая последовательность строк: (?)
С вводом буквы н выполнение программы заканчивается. Возможность прочтения буквы ответов обеспечивается использованием в программе символьной переменной.
Описание функций работающих с символьными переменными.
CHR(x: byte): char;
Преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода. Следующая программа иллюстрирует возможности функции "CHR". Она выдаёт все символы кода ASCII на экран. При этом некоторые символы ASCII-кода (например 7, 10, 13) при обычных условиях не имеют изображения, а используются для реализации специальных функций (перевод курсора и т.д.) Благодаря использованному в операторе Write формату каждый из изображаемых символов отделяется от соседнего пробелом (занимает две позиции)
Program ех_4;
var
i: byte;
begin
for i:=0 to 255 do write(chr(i):2); end.
ORD(c: char): byte;
Функция Ord выполняет действие, обратное функции Chr, т.е. возвращает порядковый номер символа параметра в таблице ASCII.
UpCase(c: char): char;
Осуществляет преобразование символов английского алфавита из строчных символов в прописные. Bсе остальные символы при применении этой функции остаются непреобразованными.
Контрольные вопросы.
Какие переменные называют символьными переменными?
Опишите тип данных CHAR.
Как используется в языке Turbo Pascal символ номер 39.
Какие преобразования выполняет функция ODD?
Какие преобразования выполняет функция CHR?
Какие преобразования выполняет функция UpCase?
Как используются специальные символы - "управляющие коды"?
Сколько символов содержится в таблице ASCII?
Опишите использования формата вывода информации в операторе Write
Как сравниваются символьные переменные при вычислении условий?
Задания для самостоятельного выполнения лабораторной работы 11.
Дана последовательность из n символов. Подсчитать:
а) сколько раз среди данных символов встречается символ + и сколько
раз - символ *.
б) общее число вхождений символов +, -, * в данную последовательность.
Вывести на экран изображение всех возможных символов вместе с их номерами.
Дана последовательность из n символов. Выяснить, имеются ли в последовательности два подряд идущих символа ",-".
Дана последовательность из n символов. Известно, что в последовательности имеется хотя-бы одна запятая. Найти номер:
а) первой по порядку запятой;
б) последней по порядку запятой.
Дана последовательность из n символов. Выяснить, каких символов в последовательности больше, запятых или точек с запятой. (Не исключается случай равенства).
Дана последовательность символов, заканчивающаяся символом ‘+’. Определить и вывести на экран номера символов, имеющих наибольший и наименьший номер.
Дана последовательность из n символов. Выяснить, в какой половине последовательности, в первой или во второй, больше вопросительных знаков. (Не исключается случай равенства).
Дана последовательность из n символов. Выяснить встречается ли в данной последовательности группа из трёх стоящих рядом точек.
Дана последовательность из n символов. Подсчитать наибольшее число букв "а" идущих подряд в данной последовательности.
Дана последовательность символов, заканчивающаяся символом ‘?’. Подсчитать наибольшее количество символов "пробел" идущих в строке подряд.
Do'stlaringiz bilan baham: |