Разделы презентаций


Рекурсия

Содержание

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

Слайды и текст этой презентации

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

порядке
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);
REVERS (N);
END.

{239}

{239}


{9}

{23}

{23}


{3}

{2}

{2}


{2}

{0}

РекурсияПример: Пусть задано целое положительное число, выдать цифры в обратном порядке PROGRAM REKURS;VAR N:INTEGER;PROCEDURE REVERS(M:INTEGER);BEGIN

Слайд 2 Условие полного окончания работы рекурсивной процедуры должно находиться в самой

процедуре.
Рекурсия может быть прямой или косвенной. (А→ В →

А).

Опережающее описание

PROCEDURE A(J:BYTE);
BEGIN
...
B(J);
END;
PROCEDURE B; {параметры опускаются}
BEGIN
...
A(I);
END.

При повторном описании тело процедуры В начинается заголовком, в котором уже не указываются описанные ранее формальные параметры.
-

FORWARD (вперед).


PROCEDURE B(I:BYTE); FORWARD;

Условие полного окончания работы рекурсивной процедуры должно находиться в самой процедуре. Рекурсия может быть прямой или косвенной.

Слайд 3Этапы подготовки и решения задач на компьютере
Постановка задачи
Физический и математический

анализ
Этап алгоритмизации
Этап программирования
Отладка программы и тестирование
Решение задач на компьютере
Обработка результатов

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

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

программы
Компилирующего типа
Интерпретирующего типа
-

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

Слайд 5Классификация языков программирования

Языки программирования
Машинные
Машино-
зависимые
Низкого уровня
Высокого уровня
Проблемно-
ориентированные
Объектно-
ориентированные
Процедурно-
ориентированные
Машино-независимые
Машинные
коды

АССЕМБЛЕР

СИМВОЛИЧЕСКОЕ
КОДИРОВАНИЕ

Фортран Фортран77
Кобол

Паскаль
Ада Си
Модула
ПЛ/1




ПРОЛОГ
СИМУЛА
CPSS




TP
C++
ЛОГО

Системы
визуальн.
прог-я

Delphi
BuilderC++

Классификация языков программирования Языки программированияМашинныеМашино-зависимыеНизкого уровняВысокого уровняПроблемно-ориентированныеОбъектно-ориентированныеПроцедурно-ориентированныеМашино-независимыеМашинныекоды   АССЕМБЛЕР     СИМВОЛИЧЕСКОЕ

Слайд 6СИМВОЛЬНЫЙ ТИП

СИМВОЛЬНЫЙ ТИП (С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
Остальные128.. 255 не могут
ограничиваться рамками стандарта.
Символы с кодами 0..31
относятся к служебным символам.
Табуляция (9,17,25,..)
CTRL+Z конец файла
СИМВОЛЬНЫЙ ТИПСИМВОЛЬНЫЙ ТИП (Сhar) – тип данных, состоящий из одного 					 символа (знака, буквы, кода). 		VAR

Слайд 7 Латинские ‘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
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)] не доп.

Латинские  ‘A’ – код 65,   ‘a’ - код 97   Русские

Слайд 8PRED(С)= CHR(ORD(C)-1); SUCC (С)= CHR(ORD(C)+1);
Пример:

Var c1,c2, c: char;
Begin

c1:=UPCASE(‘s');
c2:=UPCASE(‘ф'); writeln(c1,' ',c2); {строка вывода: S ф}
for c:= ‘0’ to ‘9’ do writeln( c,' - ', ord(c));
{строка вывода: Символы 0..9 и их коды}
End.

Для преобразования символа цифры F в число
следует воспользоваться выражением ORD(F)-ORD(‘0’)

Дома. Ввести набор символов. Напечатать из него только цифры
PRED(С)= CHR(ORD(C)-1);    SUCC (С)= CHR(ORD(C)+1);  	Пример:   Var c1,c2, c: char;

Слайд 9Клавиши с кодами из 2-х частей

Клавиши с кодами из 2-х частей

Слайд 10Массив символов эквивалентен строке типа 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.
Массив символов эквивалентен строке типа STRING  Пример:Определим слово из 5 букв. Переведем в верхний регистр (str2);

Слайд 11 СТРОКОВЫЙ ТИП (String)
Напоминает одномерный массив символов ARRAY[0..N] OF CHAR



Может меняться длина строки от 1до N символов, где N

(‘abcd-абвг’, ’ ’ , ’ , ‘) writeln (‘вариант=’);
Строки-переменные:
VAR типом STRING {либо в разделе TYPE}
пример: Const N=200;
VAR st: String; {переменная длина до 255 символов}
st1: String[1];
st2: String[10];
st3: String[N]; {переменная длина до 255 символов}
Строка в ТП трактуется как цепочка символов:
st2: ARRAY[1..10] OF CHAR; st2[0] – служебный
пример: Var st:string;
Begin
St:= ‘алгоризм’;
if st[7]=‘з' then st[7]:=‘т'; {алгоритм}
. . .
End.
СТРОКОВЫЙ ТИП (String) Напоминает одномерный массив символов ARRAY[0..N] OF CHAR Может меняться длина строки от 1до

Слайд 12
Отдельный символ совместим со значение Char:
пример: Var st: string;
Ch:

Char;
begin

st:=‘Hello’;
ch:=st[1]; {ch=‘H’}
st[2]:=‘E’; {st=‘HEllo’}
for I=1 to5 do write (st[I]);
readln;
End.
Первый символ имеет индекс 0.
Длина строки всегда равна ORD(ST[0]) – коду нулевого символа строки. Значащие символы занимают с 1 по N байты.
st[0] - нулевой элемент строки содержит информацию о ее длине.

Отдельный символ совместим со значение Char:пример: Var st: string;		 Ch: Char;		begin

Слайд 13
Нулевой символ строки s[0] – это символ, код которого равен

длине строки.

Если в примере ‘Hello’ записать st[0]:=chr(5),
то такую

строку можно вывести целиком (а не поэлементно)
writeln(str3);

Длина строки может быть изменена:
1. Путем заполнения строки новым элементом;
2. Путем изменения нулевого элемента.
!!! Если строку формировали поэлементно, надо обязательно заполнить для нее нулевой элемент.

пример: Var st:string;
Begin
st:=‘Hello’; { st[1]=‘H';st[2]=‘e‘}
st[0]:=CHR(5); длина строки = 5;
writeln(st)
end.
Нулевой символ строки s[0] – это символ, код которого равен длине 				строки. Если в примере ‘Hello’ записать

Слайд 14Операции над строками
Операции сцепления
пример: st:='A‘

+ 'B'; {st содержит ‘AB}’

st:=st + 'C'; {st=‘ABC’}
st[1]:='A' и т.д.

пример: Var st:string[2];
begin st:='123';
writeln(st); {12}
End.
Операции отношений: >,<,=,>=,<=,<>
пример
'abcd‘ = ‘abcd‘ ->TRUE; 'abcd‘ > 'abcD'->TRUE, т.к. 'd'>'D';
‘abcd‘ <> 'abcde'->TRUE; 'abcd‘ > 'abc '-TRUE, т.к. 'd'>' ';
‘abcd‘ <' abcde'->TRUE; 'aBcd‘ < 'ab' ->TRUE, т.к. 'B'<'b';
Операции над строками     Операции сцепленияпример: st:='A‘ + 'B';     {st

Слайд 15Функции (процедуры) для работы со строками
1. LENGTH(s:string):byte - выдает

длину строки S;
Пример: k:=Length(st), где st :=‘ABC’ - Результат –

k=3
for I:=1 to Lingth(st) do …

2. CONCAT(s1,s2,...,sN:string):string - осуществляет сцепление строк; st:=concat(‘note’,’book’); {‘notebook’\}
s3:=concat(s1,s2); { s3:=s1+s2}
s3:=concat(s1,s2,s3); { s3:=s1+s2+s3}
3. COPY(s:string; index,len:integer):string - выдает подстроку S длиной len, начиная с символа с номером index; Если START>LENGTH(S), то функция вернет пустую строку; если START>255,то ошибка.
Пример: Значение S Выражение Результат
‘ABCDEFG’ COPY(S,2,3) ‘BCD’
‘ABCDEFG’ COPY(S,4,10) ‘DEFG’
‘ABC’ COPY(S,4,2) ‘’ (пусто)
4. DELETE(Var st:string; index,len: integer) - удаляет из строки st подстроку длиной len, начиная с символа с номером index; Если START=0 или(и) Len=0, то строка не меняется.
Пример: Delete(S,20,255);
Значение S Выражение Результат
‘абвгде’ Delete(S,4,2) ‘абвге’
‘ABCDEF’ Delete(S,1,5) ‘F’
Функции (процедуры) для работы со строками 1. LENGTH(s:string):byte - выдает длину строки S;Пример: k:=Length(st), где st :=‘ABC’

Слайд 16
5.INSERT(subs:string; Var st:string; index:integer) - вставляет в строку S подстроку

SubS, начиная с позиции index;
Пример: Var st:string[10];
str2:string;

str2:=’начало-конец’
insert(‘середина-’,str2,8); {результат:str2=‘начало-середина-конец’}
st:=‘****-’;
insert(st,str2,8);

{результат:str2=‘начало-****-конец’}
st:=‘****-’;
insert(str2,st,3); {результат:str2=‘**-начало-*’}

6.POS(subs,s:string):byte - функция отыскивает вхождение подстроки SubS в строке S
Пример: S функция результат
'abcdef' POS('de',S) 4
'abcdef' POS('k',S) 0
-
5.INSERT(subs:string; Var st:string; index:integer) - вставляет в строку S			подстроку SubS, начиная с позиции index; Пример: Var

Слайд 17Процедуры преобразования
7.STR(x[:w[:n]],Var s:string) - преобразует числовое значение x в


строковое s. Параметры [:w[:n]] не обязательны.
Пример: str(6.66:8:2,s); {результат s=‘

6.66’}
str(6.66:-8:2,s); {результат s=‘6.66 ’}
str(6.66:8:1,s); {результат s=‘ 6.67’}
str(6.66:8,s); {результат s=‘0.67E+01’}
const F=6; N=4;
str(1.254687:F:N,s); {результат:S=‘1.2547’}

8.VAL(s:string,Var x,Var ErrCod) - преобразует числовую строку s в числовую переменную x. Если ErrCod=0, то преобразование выполнено.
Пример:S преобразования результат
1562 VAL(S,x,ErrCod) x=1562, ErrCod=0
15.62E2 VAL(S,x,ErrCod) x=1562, ErrCod=0
15.62A2 VAL(S,x,ErrCod) x-неопр., ErrCod=6


Процедуры преобразования 7.STR(x[:w[:n]],Var s:string) - преобразует числовое значение x в 			строковое s. Параметры [:w[:n]] не обязательны. Пример:

Слайд 18
9.FILLCHAR - процедура заполнения. (Word-целое без знака (0..65535))

Fillchar(Var x,kbytes:word, b:byte)

Fillchar(Var x,kbytes:word, c:char)
Пример: Заполнить строку с ее начала (с первого элемента) 80 пробелами (‘ ’или #32)
Var
st: string;
Fillchar(st[1], 80, ’ ‘);
st[0]:=chr(80); {принудительная запись длины строки}
st[1] означает, что заполняем строку с первого элемента

При использовании ввода строк с клавиатуры процедурой Read
читается только одна строка (дo ), остальные процедуры Read
и Readln игнорируются для любых типов и типа string. Используйте
Readln в программах со строками для ввода данных любого типа, кроме символов.

9.FILLCHAR - процедура заполнения. (Word-целое без знака (0..65535))	     Fillchar(Var x,kbytes:word, b:byte)

Слайд 19Примеры:
Ввести строку и заменить в ней все подстроки Min на

Max
Var s:string;
k:byte;
Begin
readln(s);
For k=1 to length(S) do ss[k]:=upcase(s[k]);{в

верх.рег}
SS[0]:=s[0];
Repeat
K:=pos(‘MIN’,ss);
If (k<>0) then begin
Delete(Ss,k,3);
Insert(‘MAX,Ss,k’)
end
Unit k=0;
Writeln(‘Ss=’,Ss);
End.

Ввести 4-хзначное число.
Напечатать цифры числа в обратном порядке
1.ч/з числовой формат.
2.ч/з строковый тип.
1.Var N:word; I: byte;
begin
read(N);
for I:=1 to 4 do
begin write(N mod 10);
N:=N div10;
end;
End.
2. Var X:word;
S: string;
begin
read(X);
STR(X:4,S);
for I:=4 downto 1 do write(S[i]);
End.

Примеры:Ввести строку и заменить в ней все подстроки Min на Max Var s:string;	k:byte;Begin readln(s);For k=1 to length(S)

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика