- •3. Система программитрования турбо паскаль
- •3.1 Окно среды разработчика
- •3.2. Элементы диалоговой среды
- •3.3. Команды редактора
- •3.4. Модули
- •4. Общие сведения о языке паскаль
- •4.1 Алфавит языка
- •4.2. Типы данных в TurboPascal 7.0
- •4.3. Операции и выражения в языке Паскаль
- •4.4 Стандартные функции в языке Паскаль
- •5. Линейные алгоритмы
- •5.1. Структура программы на языке Паскаль
- •5.2. Конструкция «следование»
- •6. Разветвляющиеся алгоритмы
- •And, * (умножение), / (деление), div, mod;
- •6.1. Операторы условных переходов
- •Var a, b, c : Real; lv : Boolean;
- •Var a, b, c : Real; lv : Boolean;
- •Var X, y : Real;
- •6.2. Оператор безусловного перехода
- •Var n, p, X : Real;
- •20: WriteLn('Факториал числа ' , n:4:2,' равен ' ,p:4:2);
- •7. Циклические алгоритмы
- •7.1. Цикл с предусловием While
- •X, xn, xk, dx, y, s, p: real;
- •7.2. Цикл с постусловием repeat
- •X1, x0, X, eps: real;
- •7.3. Цикл с параметром for
- •I: integer; c: char;
- •7.4. Принудительное завершение цикла
- •X, xn, xk, dx: real;
- •8. Символьный тип
- •8.1. Особенности символьного типа
- •8.2. Объявление символьной переменной
- •8.3. Операции с символами
- •Строковые переменные
- •9.1. Определение и типы строк
- •9.2. Упакованный строковый тип
- •9.3. Строковый тип
- •9.5. Примеры работы со строками
- •9.6. Индивидуальные задания по работе со строками и символами
- •10. Массивы
- •10.1. Организация данных в массиве
- •10.2. Объявление массивов
- •10.3. Ввод и вывод значений элементов массива
- •10.4. Подсчет количества элементов по заданному условию
- •10.5. Поиск минимального элемента массива
- •10.6. Вычисление произведения ненулевых элементов массива
- •10.7. Сортировка элементов массива
- •10.8. Заполнение массива случайными числами
- •10. 9. Индивидуальные задания по работе с массивам
- •11. Процедуры и функции
- •11.1. Понятие подпрограммы
- •11.2. Описание процедуры
- •11.3. Описание функции
- •11.4. Области действия имен
- •11.5. Индивидуальные задания по разработке процедур и функций
- •Var k,l; real;
8.2. Объявление символьной переменной
Объявление символьной переменной осуществляется следующим образом:
VAR Litera1, LITERA2: CHAR;
При этом в памяти будет выделено две области по 1 байту каждая с символическими именами соответственно Litera1 и Litera2.
Задать символ можно с использованием оператора присваивания одним из трех возможных способов:
- записью символа, заключенного в одиночные кавычки (апострофы). Например: '7', '+', 'A', ' ' ' ' , 'a'. Для представления самого апострофа его изображение удваивается;
- использованием десятичного кода (номера) символа с предшествующим ему символом '#' (решеткой, диезом). Фактически, символ решетки является указанием транслятору о представлении числового кода как тип Char. Например, #97 = CHR(97) = ‘A’; #0 = CHR( 0 ) { символ нуля}; #32 = CHR(32) = ‘ ‘ (пробел). Функция CHR по заданному коду возвращает графическое представление символа;
- использованием шестнадцатеричного номера символа в таблице. В этом случае к литере # следует добавить литеру "$". Например, для символа пробела ' ' = #$20.
Символы, имеющие коды от 1 до 31, являются управляющими. Их можно представить значком «^» и буквой алфавита с тем же номером (диапазон кодов 1…26) или служебным знаком (диапазон кодов 27…31). Символы и знаки для управляющих столбцов 1 и 2 расположены в тех же строках таблицы ASCII столбцов с номерами 4 и 5 соответственно:
^A = #1 = CHR(1) – код 1,
^B = #2 = CHR(2) – код 2,
. . . . . . . . . . .
^Z = #26 = CHR(26) – код 26,
^[ = #27 = CHR(27) – код 27,
. . . . . . . . . . .
^ =#31 = CHR(31) - код 31.
Задание констант для улучшения читабельности и облегчения коррекции программ осуществляется с использованием любого из названных способов.
CONST
THREE = ‘3’;
BEL = ^G.
Однако следует иметь в виду, что задание управляющих кодов возможно при выполнении операции присваивания, при объявлении констант или записи констант в операциях вывода. Ввести эти коды с клавиатуры невозможно.
8.3. Операции с символами
А). Операция присваивания. Выполняется по общим правилам. Например:
VARsimv1: char;
. . . . .
Simv1:='A'; {символьной переменной присваивается код символа "А"}
Simv1:=^G; {присваивается управляющий код звукового сигнала 7}
Simv1:=CHR(32) {присваивается результат работы функции преобразования кода в символ. В данном случае это код пробела}
Б). Операция сравнения. При сравнении символов фактически сравниваются не символы, а их ASCII-коды. При этом один символ считается больше другого, если он имеет больший ASCII-код. Поэтому справедливы следующие отношения:
'R' = 'R'
'r'>'R' , так как код строчного символа равен114, а заглавного – 82.
Ввод данных. Ввод символов возможен при выполнении операции присваивания или выполнении оператора ввода с клавиатуры READLN. При этом символы допускается вводить подряд без пробелов по числу переменных типа CHAR в операторе с последующим нажатием клавиши ENTER. Лишние набранные с клавиатуры символы будут утрачены. В случае нехватки символов – оператор READLN будет ожидать ввода недостающих символов.
Вывод данных. Операция осуществляется стандартными операторами вывода с учетом способов задания символьных переменных, констант и параметров форматирования:
VARSimv1, simv2: char;
. . . . .
WRITELN(Simv2:4); {по месту установки курсора будет выведен символ, соответствующий текущему значению символьной переменной Simv2, причем перед ним будет напечатано 3 символа пробела}
WRITELN (Simv2,^G^G^G^G,Simv1); {выводится значение символьной переменной Simv2, 4 раза код звукового сигнала, затем переменная Simv1}
9.4. Стандартные функции для работы с символами
Синтаксис и формат функции |
Назначение функции, примеры |
Аналог в Basic |
||
CHR(N)
CHR(N:BYTE):CHAR |
Возвращает символ (графическое представление) по десятичному ASCII-номеру (коду) N (преобразует тип) Simv3:=CHR(65) {символьной переменной Simv3 присваивается значение латинского символа "А"} |
CHR(X) |
||
ORD(X)
ORD(Х:CHAR):BYTE |
Возвращает число (порядковый номер, код), соответствующее ASCII-коду символа X (преобразует тип) Ord(A) <Ord(B) – условие истинное Date1:=ORD(A) {Числовой переменной Date1 присваивается значение 65=41h} Date2:=ORD(^G) {Числовой переменной Date2 присваивается значение 7} |
ASC(X) |
||
PRED(X)
PRED(Х:CHAR):CHAR |
Возвращает символ, предшествующий символу Х в ASCII. PRED(#0) не определен, выдается ошибка. Функция удобна для последовательного перебора символов Pred(C) = Chr(Ord(С) - 1) – условие истинное; Simv4:=PRED(A) {символьная переменная Simv4 приобретает значение символа @} |
Нет |
||
SUCC(X)
SUCC(Х:CHAR):CHAR
|
Возвращает символ, следующий за символом Х в ASCII. SUCC (#255) не определен, выдается ошибка. Функция удобна для последовательного перебора символов Succ(С) = Chr(Ord(С) +1) – условие истинное; Simv4:=SUCC(A) {символьная переменная Simv4 приобретает значение символа B} |
Нет |
||
UPCASE(X)
UPCASE(Х:CHAR):CHAR |
Преобразует строчный латинский символ Х в верхний регистр (прописные буквы) латинского алфавита. Остальные символы оставляет без изменения, в том числе и прописные латинские символы. Simv5:=UPCASE('я') - оставляет без изменения; Simv6:=UPCASE('f') - выполняет, результат – 'F' |
UCASE$(S$) LCASE$(S$)
|
Каждый символ можно рассматривать как элемент множества SETOFCHAR, поэтому возможна проверка на вхождение IN. Принцип построения такой проверки показан на примере:
VAR
CH:CHAR;
. . . . .
CH:=’D’;
IF CH IN[‘A’. .’Z’] THEN . . .