Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
77
Добавлен:
15.06.2014
Размер:
554.5 Кб
Скачать

Рекурсия

Пример: Пусть задано целое положительное число, выдать цифры в обратном порядке

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

Соседние файлы в папке Секретные файлы Шафеевой))