
- •Рекурсия
- •Условие полного окончания работы рекурсивной процедуры должно находиться в самой процедуре.
- •Этапы подготовки и решения задач на компьютере
- •Порядок выполнения программы
- •Классификация языков программирования
- •СИМВОЛЬНЫЙ ТИП
- •Латинские ‘A’ – код 65, ‘a’ - код 97
- •Клавиши с кодами из 2-х частей
- •Массив символов эквивалентен строке типа STRING
- •СТРОКОВЫЙ ТИП (String)
- •Отдельный символ совместим со значение Char:
- •Нулевой символ строки s[0] – это символ, код которого равен длине строки.
- •Операции над строками
- •Функции (процедуры) для работы со строками
- •5.INSERT(subs:string; Var st:string; index:integer) - вставляет в строку S подстроку SubS, начиная с
- •Процедуры преобразования
- •9.FILLCHAR - процедура заполнения. (Word-целое без знака (0..65535)) Fillchar(Var x,kbytes:word, b:byte)
- •Примеры:

Рекурсия
Пример: Пусть задано целое положительное число, выдать цифры в обратном порядке
PROGRAM REKURS; VAR N:INTEGER;
PROCEDURE REVERS(M:INTEGER);
BEGIN
WRITE(M MOD 10);
IF (M DIV 10)<>0 THEN revers (M DIV 10);
END;
BEGIN
WRITE(‘Введи целое число без знака’);
READ (N); {239} REVERS (N);
END.
{239} |
{23} |
{2} |
{9} |
{3} |
{2} |
{23} |
{2} |
{0} |
1

Условие полного окончания работы рекурсивной процедуры должно находиться в самой процедуре.
Рекурсия может быть прямой или косвенной. (А В А). Опережающее описание
FORWARD (вперед).
PROCEDURE B(I:BYTE); FORWARD;
PROCEDURE A(J:BYTE); BEGIN
...
B(J);
END;
PROCEDURE B; {параметры опускаются} BEGIN
...
A(I);
END.
При повторном описании тело процедуры В начинается заголовком, в котором уже не указываются описанные ранее формальные параметры.
- |
2 |

Этапы подготовки и решения задач на компьютере
1. Постановка задачи
2. Физический и математический анализ
3. Этап алгоритмизации
4.Этап программирования
5.Отладка программы и тестирование
6.Решение задач на компьютере
7.Обработка результатов решения задач. Дополнительные этапы:
Выбор языка программирования, описание структуры программы, описание структур данных, оптимизация программы, документирование.
3

Порядок выполнения программы
|
|
|
Трансляция |
|
|
|
|
|
|
|
|
|
|
|
|
Компиляция |
|
|
|
Абсолютный |
|||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Компиляция |
|
|
|
Компоновка |
|
|
|
Загрузка |
|
|
|
|
|
|
|
|
|
|||||
Исходный |
Объектный |
(загрузочный) |
||||||||||
модуль |
|
|
модуль |
|||||||||
|
|
модуль |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
Системы подготовки и выполнения программы
1.Компилирующего типа
2.Интерпретирующего типа
-
4

Классификация языков
программирования
Языки программирования
|
Низкого уровня |
|
Высокого уровня |
|
|
|
|
|
|
|
|
|
|
|
|
Машино-независимые |
|
Машинные |
|
||||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
Машино- |
|
|
|
Системы |
|
|
|
Процедурно- |
|
|
Проблемно- |
||||||||||
зависимые |
|
|
|
визуальн. |
|
|
ориентированные |
|
ориентированные |
||||||||||||
|
|
|
|
|
прог-я |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
Фортран |
|
Фортран77 |
|
|
|
|
|
||||||||
|
|
|
|
|
Delphi |
|
|
|
|
|
|
|
|||||||||
Машинные |
|
|
|
|
|
Кобол |
|
|
Паскаль |
|
|
ПРОЛОГ |
|||||||||
|
|
|
|
BuilderC++ |
|
|
|
|
|
||||||||||||
коды |
|
|
|
|
|
|
|
|
Ада |
|
|
|
Си |
|
|
|
СИМУЛА |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Модула |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPSS |
|||||||
|
|
|
|
|
АССЕМБЛЕР |
|
|
|
|
ПЛ/1 |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
СИМВОЛИЧЕСКОЕ |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
КОДИРОВАНИЕ |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Объектно- ориентированные
TP
C++
ЛОГО
5

СИМВОЛЬНЫЙ ТИП
СИМВОЛЬНЫЙ ТИП (Сhar) – тип данных, состоящий из одного
|
|
|
|
символа (знака, буквы, кода). |
|||||
|
|
|
VAR |
словом CHAR. |
|
|
|||
|
Символьное значение заключается в апострофы: 'A' , ‘Ф‘. |
||||||||
|
Пример: Var c1,c2,c3:Char; |
|
|
|
|
|
|||
Альтернативный способ кодировки – внутренние коды |
|||||||||
|
‘A’ - |
#65, |
‘a’ - #97, |
‘ ’ - |
#32 |
|
|
||
|
Код ASCII: - American Standart Code Information Interchange |
||||||||
|
Код ASCII семибитовый позволяет |
|
|
|
|
|
|||
кодировать 128 |
символов; |
|
|
|
|
|
|||
|
|
Сим- |
код |
Назначение |
|||||
В ТП 8 битовый - 256 символов |
|
|
|||||||
|
|
вол |
|
|
|||||
|
|
от 0 |
до 255. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0..127 |
совпадают с ASCII |
|
|
|
BEL |
7 |
Звонок |
||
Остальные128.. 255 не могут |
|
|
HT |
9 |
Табуляция |
||||
ограничиваться рамками стандарта. |
|
|
LF |
10 |
Перевод строки |
||||
|
Символы с кодами 0..31 |
|
|
|
CR |
13 |
Возврат каретки |
||
относятся к служебным символам. |
|
|
ESC |
27 |
Конец работы |
||||
|
Табуляция (9,17,25,..) |
|
|
|
SUB |
26 |
Конец файла |
||
|
CTRL+Z |
конец файла |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |

Латинские ‘A’ – код 65, ‘a’ - код 97
Русские буквы А-128…Я-159; а-160…п-175,Встроенныер-192…я-функции207(наиб.ТП
РаспрСвойство.) упорядоченности
1. Цифры от 0 до 9: ‘0’<‘1’<‘2’<…<‘9’
Коды 48<49<50<….<57
2.Латинские буквы ‘A’<‘B’<‘C’<…<‘Y’<‘Z’ ‘a’ < ‘b’,.., ’y’ < ‘z’ 65<66<67<…<89<90 97<98<…121<122 Если ORD(c1) < ORD(c2), то и c1<c2
3.К символам типа char применимы присваивания и все операции отношений:
<, >, <=, >=, =, <>.
VAR c: char; … c:= ‘A’
c ='A‘ |
=>TRUE; |
'A‘ <> 'a‘ |
=>TRUE; |
'A‘ < 'a‘ |
=>TRUE; |
1.ORD(c) - возвращает код символа; c-аргумент типа char, результат имеет тип byte.
ord(‘.’)=46; ord(‘ ’)=32
2. CHR(b) - выдает по коду b аргумента символ типа Char;
b-аргумент типа byte, результат имеет тип char.
Эквивалентны ‘А’ - #65 – CHR(65)
3. UPCASE(c:char) :Char – переводит латинские строчные символы в верхний регистр.
4.PRED(c):Char – выдает предшествующий С символ
5.SUCC(c):Char –выдает следующий за С символ
PRED(‘z’)-> ‘y’; succ(‘c’)->’d’ PRED(#0) [SUCC(#255)] не доп.
7

PRED(С)= CHR(ORD(C)-1); |
SUCC (С)= CHR(ORD(C)+1); |
Пример: |
|
|
Var c1,c2, c: char; |
|
|
Begin |
|
|
c1:=UPCASE(‘s'); |
|
{строка вывода: S ф} |
c2:=UPCASE(‘ф'); writeln(c1,' |
',c2); |
|
for c:= ‘0’ to ‘9’ do writeln( c,' - |
', ord(c)); |
|
{строка вывода: Символы 0..9 и их коды} |
||
End. |
|
|
Для преобразования символа цифры F в число |
||
следует воспользоваться выражением |
ORD(F)-ORD(‘0’) |
Дома. Ввести набор символов. Напечатать из него только цифры
8

Клавиши с кодами из 2-х частей
клавиша |
Код клавиши |
|
|
|
часть1 |
часть2 |
|
Стрелка вверх |
0 |
72 |
|
Стрелка вниз |
0 |
80 |
|
Стрелка влево |
0 |
75 |
|
Стрелка вправо |
0 |
77 |
|
F1 |
0 |
59 |
|
F2 … |
0 |
60 |
… |
F10 |
0 |
68 |
|
F11 |
0 |
133 |
|
F12 |
0 |
134 |
|
INS |
0 |
82 |
|
HOME |
0 |
71 |
|
END |
0 |
79 |
|
PgUn |
0 |
57 |
9 |
PgDn |
0 |
81 |

Массив символов эквивалентен строке типа STRING
Пример:
Определим слово из 5 букв. Переведем в верхний регистр (str2); закодируем следующим символом по таблице ASCII (str3)
Var i: byte; c: char;
str1, str2, str3:string; begin
readln(str1);
for i:=1 to 5 do str2[i]:=UPCASE(str1[i]); for i:=1 to 5 do
begin str3[i]:=SUCC(str2[i]); write (str3[i]);
end
End.
10