Главная/Раздел 3

 

 

Главная

 

 Раздел 1

 

Раздел 2

 

Раздел 3

 

Раздел 4

 

Раздел 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Символьные переменные.
Тип данных "CHAR"

Переменные, предназначенные для хранения одиночных символов, называются символьными переменными. В языке Turbo Pascal для них определён тип данных CHAR. В переменную этого типа может быть помещён любой из 256 символов расширенного кода ASCII.

Таблица расширенного кода ASCII.

 

Объявление символьных переменных осуществляется в разделе объявления переменных с помощью служебного слова CHAR.

Этот тип данных обладает некоторыми особенностями. Обычно значения для переменных типа "CHAR" задаются в апострофах. Например, если в программе есть описания

     u, v: char
то возможны операторы присваивания
     u:='a'; v:=u; v:='*' и т.д.

Апостроф (штрих) ' - принятая в Паскале форма кавычки - употребляется всякий раз, когда значение типа "CHAR" явно указывается в программе (то есть является константой). Выполнение операторов

     u:='b'; write(u)
приводит к отображению на экране символа b.

Кроме того, имеется возможность задавать значения указанием непосредственно числового значения ASCII-кода. В этом случае Вы должны перед числом, обозначающим код символа ASCII, поставить знак "#"

     u:=#97

П р и м е р 1. Дана последовательность символов заканчивающаяся символом "/". Необходимо подсчитать количество восклицательных знаков в данной последовательности.

     Program ex_1;

     var
      c: char;        { организация символьной переменной }
      n: integer;     { переменная для хранения количества "!" }

     begin
      read(c);          { чтение первого символа с клавиатуры }
      n:=0;             { обнуление cчётчика "!" }
       while c<>'/' do  { условие окончания работы водом символа '/' }
        begin
         if c='!' then n:=n+1;   { подсчёт символов "!" }
         read(c);                { чтение следующего символа }
        end;
     end.

Обратите внимание. В таблице ASCII большие латинские буквы и малые латинские буквы расположены подряд по алфавиту. Такая упорядоченность открывает возможность использования в программах операторов цикла с параметром, имеющим тип "CHAR". Параметр цикла пробегает последовательность символов в указанных границах. Выполнение оператора цикла

     for c:='a' to 'z' do write(c)
где c символьная переменная, приводит к высвечиванию на экране последовательности всех малых букв латинского алфавита:
     abcdefghhijklmnopqrstuvwxyz

Выполнение оператора цикла

     for c:='z' downto 'a' do write(c)
приведёт к выводу этих же букв в обратном порядке.

Символьные переменные очень удобны для написания диалоговых программ. Представим себе, что вам необходимо довольно часто получать значения некоторой функции, например значение синуса от корня квадратного из x для разных значений x.

Пусть заранее неизвестно, сколько раз и для каких именно значений x потребуется вычислить значение функции. Можно составить такую программу, которая будет вычислять значение фукнкции и сразу же ожидать ввода нового значения дл x. Это зацикленная программа.

     program ex_2;

     label 1;

     var c: real;

     begin
     1: write('x=);read(c);
        writeln(' ,f(x)=',sin(sqrt(x)));
        goto 1;
     end.

Когда эта программа выполняется, на экране формируется последовательность строк

     x=...,f(x)=...
     x=...,f(x)=...
     x=...,f(x)=...
       . . . .

Для того, чтобы прекратить выполнение программы, потребуется предпринять специальные меры - например, выключить компьютер или нажать комбинацию клавиш Ctrl-Break.

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

     program ex_3;

     var
      x: real;
      s: char;

     begin
      s:='д';
      while s='д' do
       begin
        write('x=);read(c);
        writeln(' ,f(x)=',sin(sqrt(x)));
        writeln('продолжить?(д или н)');
        read(s);
        write(' ');
       end;
     end.

Когда выполняется эта программа, на экране возникает следующая последовательность строк:

     x=...,f(x)=...
     продолжить?(д или н)
     д
     x=...,f(x)=...
     продолжить?(д или н)
     д
       . . . .
     x=...,f(x)=...
     продолжить?(д или н)
     н

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

Описание функций работающих с символьными переменными.

CHR(x: byte): char;

Преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода. Следующая программа иллюстрирует возможности функции "CHR". Она выдаёт все символы кода ASCII на экран. При этом некоторые символы ASCII-кода (например 7, 10, 13) при обычных условиях не имеют изображения, а используются для реализации специальных функций (пере- вод курсора и т.д.) Благодаря использованному в операторе Write формату каждый из изображаемых символов отделяется от соседнего пробелом (занимает две позиции)

     Program ex_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;

Осуществляет преобразование символов английского алфавита из строчных символов в прописные. Все остальные символы при применении этой функции остаются непреобразованными.

Контрольные вопросы.

  1. Какие переменные называют символьными переменными?
  2. Опишите тип данных CHAR.
  3. Как используется в языке Turbo Pascal символ номер 39.
  4. Какие преобразования выполняет функция ODD?
  5. Какие преобразования выполняет функция CHR?
  6. Какие преобразования выполняет функция UpCase?
  7. Как используются специальные символы - "управляющие коды"?
  8. Сколько символов содержится в таблице ASCII?
  9. Опишите использования формата вывода информации в операторе Write.
  10. Как сравниваются символьные переменные при вычислении условий?

Задания для самостоятельного выполнения.

  1. Дана последовательность из n символов. Подсчитать:
    а) сколько раз среди данных символов встречается символ + и сколько раз - символ *.
    б) общее число вхождений символов +, -, * в данную последовательность.
  2. Вывести на экран изображение всех возможных символов вместе с их номерами.
  3. Дана последовательность из n символов. Выяснить, имеются ли в последовательности два подряд идущих символа ",-".
  4. Дана последовательность из n символов. Известно, что в последовательности имеется хотя бы одна запятая. Найти номер:
    а) первой по порядку запятой;
    б) последней по порядку запятой.
  5. Дана последовательность из n символов. Выяснить, каких символов в последовательности больше, запятых или точек с запятой. (Не исключается случай равенства).
  6. Дана последовательность символов, заканчивающаяся символом '+'. Определить и вывести на экран номера символов, имеющих наибольший и наименьший номер.
  7. Дана последовательность из n символов. Выяснить, в какой половине последовательности, в первой или во второй, больше вопросительных знаков. (Не исключается случай равенства).
  8. Дана последовательность из n символов. Выяснить встречается ли в данной последовательности группа из трёх стоящих рядом точек.
  9. Дана последовательность из n символов. Подсчитать наибольшее число букв "a" идущих подряд в данной последовательности.
  10. Дана последовательность символов, заканчивающаяся символом '?' Подсчитать наибольшее количество символов "пробел" идущих в строке подряд.

ДАЛЕЕ                   

 

 

 

 

 

 

 

 :::

 

 :::

 

 

 

 

 

 

 

Сайт создан в системе uCoz