
- •Псевдокод
- •Один из примеров псевдокода - школьный алгоритмический язык.
- •Блок-схема
- •Запись на псевдокоде
- •Вопросы для самоконтроля
- •Формулы бэкуса-наура
- •Перминов о.Н. Программирование на языке Паскаль
- •Синтаксические диаграммы
- •Алгоритмы сортировки
- •Сортировка с помощью прямого включения
- •Сортировка с помощью прямого выбора (линейная)
- •Сортировка с помощью прямого обмена (пузырьковая)
- •Быстрая сортировка (ч. Хоара, сортировка с помощью разделения)
- •Рекурсия
- •Параметры-процедуры и параметры-функции
- •Символьные типы
- •Строковые типы
- •Строковые типы в Borland Pascal
- •Строковые типы в Delphi
- •Множества
- •Тип "запись" (record)
- •Вариантная часть записи
- •Процедуры и функции для работы с файлами
- •Работа с текстовыми файлами*
- •Работа с типизированными и нетипизированными файлами
- •Типизированные файлы
- •Последовательный и прямой доступ к файлам
- •Нетипизированные (бестиповые) файлы
- •Класс tfilestream (факультатив, для зачета 1 семестра не требуется)
- •Работа с данными файла
- •Закрытие файла
Символьные типы
Используются для представления непустых символов из алфавита ЭВМ.
ИМЯ ТИПА
Borland Pascal
Char
1 байт, кодировка ASCII
-
-
Delphi
Char
Синоним типа AnsiChar
AnsiChar
1 байт, кодировка ANSI
WideChar
2 байта, кодировка UNICODE
ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЙ
Символ, заключенный в одинарные кавычки:
'a',…,'z','A',…,'Z', '0',…,'9', 'Ю', '}' и.т.п.;
Представление с префиксом # (#<код_символа>, только числовая константа):
#97('a'), …, #122('z'), #65('A'), …, #90('Z'), #48('0'), …, #57('9'), #158('Ю'), #125('}'), #7(сигнал), #9(табуляция), #27(Esc), #32(пробел);
Управляющие символы (с кодом #1..#31):
^A(#1)..^Z(#26), ^[(#27), ... ,^_(#31)
ЗАДАНИЕ 1. РАСПЕЧАТАТЬ СИМВОЛЫ КОДОВОЙ ТАБЛИЦЫ
ОПЕРАЦИИ НАД СИМВОЛАМИ
Присваивание (:=)
Сравнение (<,>,<=,>=,=,<>): сравниваются коды символов
Символ больше, если имеет больший код: 'a'>'A' (#97>#65)
Проверка вхождения элемента в множество (in).
ИСПОЛЬЗУЕМЫЕ ФУНКЦИИ И ПРОЦЕДУРЫ:
UpCase(C:Char):Char - перевод символов 'a'..'z' в верхний регистр: 'А'..'Z'.
Chr(X:byte):Char - возвращает символ с кодом X;
Ord(C:Char):Byte - возвращает код символа C;
Pred(C:Char):Char - возвращает символ, предшествующий C;
Succ(C:Char):Char - возвращает символ, следующий за C;
Inc(var C:Char) – увеличивает код символа на 1 (изменяется сам символ);
Dec(var C:Char) – уменьшает код символа на 1 (изменяется сам символ).
ЗАДАНИЕ 2. Написать функцию, обратную UpCase (для кодировки DOS|Win).
ЗАДАНИЕ 3. Написать функцию, аналогичную UpCase, для букв русского алфавита (для кодировки DOS|Win).
РАБОТА С БУФЕРОМ КЛАВИАТУРЫ (для среды Borland Pascal | Free Pascal | PascalABC)
Символы хранятся в буфере клавиатуры, пока они не будут считаны или буфер не будет очищен программой.
KeyPressed:Boolean (модуль CRT)
Функция опроса буфера клавиатуры. Возвращает True, если в буфере имеется хотя бы один символ, и False, если буфер пуст.
Очистка буфера клавиатуры:
Readkey:Char (модуль CRT)
Считывает ОДИН символ из буфера клавиатуры.
Read/Readln
После выполнения этих операторов происходит полная очистка буфера.
Расширенный код:
При нажатии некоторых клавиш/комбинаций клавиш (F1..F12, <стрелки>, Alt+A(..Z), Ctrl/Shift+<клавиша>) в буфер клавиатуры заносится ДВА символа, код первого из которых равен 0.
Uses Crt;
Var Ch:Char;
Begin ... While KeyPressed do Ch:=ReadKey; ... End. |
Uses Crt; Var Ch:Char; Begin ... Repeat ... Writeln(‘Прекратить выполнение программы?(Д/Н)’); Ch:=Readkey; Until Ch in [’д’,’Д’]; ... End. |
Uses Crt; Const Esc=#27; {выход по нажатии Esc} Var ch:char; Begin ClrScr; Writeln('Код клавиши(символ). Выход-ESC'); Repeat While KeyPressed do begin ch:=Readkey; write(Ord(ch):4); if not KeyPressed then Write('('+ch+')','':4,#13); end; Until ch=Esc end. |