Презентация Модульное программирование (Delphi / Pascal, глава 4) онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Модульное программирование (Delphi / Pascal, глава 4) абсолютно бесплатно. Урок-презентация на эту тему содержит всего 54 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Модульное программирование (Delphi / Pascal, глава 4)
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:54 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:1.60 MB
- Просмотров:101
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№6 слайд
Содержание слайда: Передача данных через параметры
Список параметров описывается в заголовке:
Параметры, описанные в заголовке – формальные.
При вызове подпрограммы необходимо определить фактические значения этих параметров – аргументы (константы и переменные).
Формальные и фактические параметры должны соответствовать по количеству, типу и порядку:
function proc(a:integer; b:single):byte; …
n:= proc(5,2.1);
№8 слайд
Содержание слайда: Способы передачи параметров (2)
Параметры-значения при описании подпрограммы не помечаются, например:
function Beta(x:single; n:byte):integer; .
Параметры-переменные при описании подпрограммы помечаются служебным словом var, например:
function Alpha(x:single; Var n:byte):integer; .
Ограничение: в качестве фактических значений параметров-переменных нельзя использовать литералы:
Alpha(2.5,5); // ошибка!
правильно: n:=5; Alpha(2.5,n);
Параметры-константы – в подпрограмму, так же как и в случае параметров-переменных, передаются адреса фактических параметров, но при попытке изменить значение параметра компилятор выдает сообщение об ошибке; такие параметры при описании подпрограммы помечаются служебным словом const, например:
function Alpha(const x:single; n:byte); .
№9 слайд
Содержание слайда: Определение площади четырехугольника
Площадь четырехугольника определяем как сумму площадей треугольников.
Площадь треугольника определяем по формуле Герона.
В качестве подпрограммы реализуем вычисление площади треугольника, поскольку эта операция выполняется два раза с разными параметрами.
№11 слайд
Содержание слайда: Функция
Program Ex4_1;
{$APPTYPE CONSOLE}
Uses SysUtils;
Var A,B,C,D,E:single;
Function Stf(const X,Y,Z: single): single;
Var p:single;
begin
p:=(X+Y+Z)/2;
Result:=sqrt(p*(p-X)*(p-Y)*(p-Z)); // или Stf:=..
end;
Begin
WriteLn('Input a,b,c,d,e:');
ReadLn(A,B,C,D,E);
WriteLn('S=',Stf(A,B,E)+Stf(C,D,E):7:3);
ReadLn;
End.
№12 слайд
Содержание слайда: Процедура
Program Ex4_2;
{$APPTYPE CONSOLE}
uses SysUtils;
Var A,B,C,D,E:real; S1,S2:single;
Procedure Stp(const X,Y,Z:single;var S:single);
Var p:single;
begin p:=(X+Y+Z)/2;
S:=sqrt(p*(p-X)*(p-Y)*(p-Z));
end;
Begin
WriteLn('Input a,b,c,d,e'); ReadLn(A,B,C,D,E);
Stp(A,B,E,S1);
Stp(C,D,E,S2);
WriteLn('S= ',S1+S2:7:3);
ReadLn;
End.
№14 слайд
Содержание слайда: Программа
Program Ex4_3;
{$APPTYPE CONSOLE}
Uses SysUtils;
Type mas=array[1..10] of integer;
Var a:mas; i,n:integer;
Function sum(b:mas; n:integer):integer;
Var s:integer; i:integer;
Begin s:=0;
for i:=1 to n do s:=s+b[i];
Result:=s;
End;
Begin Write('Input n:');
ReadLn(n);
for i:=1 to n do Read(a[i]);
ReadLn;
WriteLn('Sum =',sum(a,n));
ReadLn;
End.
№15 слайд
Содержание слайда: 4.2 Модули
Модуль – это автономно компилируемая коллекция программных ресурсов, предназначенных для использования другими модулями и программами.
Ресурсы – переменные, константы, описания типов и подпрограммы.
Все ресурсы, определенные в модуле делят на:
1) внешние – предназначенные для использования другими программами и модулями.
2) внутренние – предназначенные для использования внутри модуля.
Структура модуля:
Unit <Имя модуля>;
Interface
<Интерфейсная секция>
Implementation
<Секция реализации>
[Initialization
<Секция инициализации>
[Finalization
<Секция завершения>]]
End.
№16 слайд
Содержание слайда: Подключение модуля к программе
Подключение модуля к программе осуществляется по имени:
Uses <Имя модуля1>, <Имя модуля2>, ...;
Объявление модулей в файле проекта
Если:
к проекту подключается модуль, который находится в каталоге, не совпадающем с каталогом проекта и не указанном в путях компилятора;
в путях компилятора имеется несколько модулей с одинаковыми именами,
то необходимо указать местонахождение модуля:
Uses Strings in 'C:\Classes\Strings.pas';
Uses Strings in '..\Strings.pas'; {относительно текущего кат.}
Модули, объявленные в файле проекта с указанием in …, считаются частью проекта, т. е. доступны через средства работы с проектом среды.
Использование указания in … в файлах с расширением pas не допустимо.
№17 слайд
Содержание слайда: Модуль с функцией вычисления суммы
Unit Summa; {должен находиться в файле Summa.pas}
Interface
type mas=array[1..10] of integer;
function sum(b:mas;n:integer):integer;
Implementation
Function sum;
Var s:integer;i:integer;
begin
s:=0;
for i:=1 to n do s:=s+b[i];
Result:=s;
end;
End.
№20 слайд
Содержание слайда: 4.3 Создание универсальных подпрограмм
4.3.1 Открытые массивы и строки
Открытый массив – конструкция описания типа массива без указания типа индексов. Используется только при объявлении формальных параметров.
Примеры:
array of single;
array of integer;
Индексы открытого массива всегда начинаются с 0.
Размер можно:
передать через дополнительный параметр;
получить, используя функцию High(<Идентификатор массива>).
№23 слайд
Содержание слайда: Открытые строки
Для строк, передаваемых в подпрограмму как параметр-переменная, Паскаль осуществляет контроль длины строки. Чтобы избежать его необходимо использовать «открытые» строки.
Пример. Программа, формирующая строку из букв латинского алфавита.
Unit Stroka;
Interface
Procedure Add(var s:openstring);
Implementation
Procedure Add;
Var Ch:char;
begin
Ch:=s[length(s)];
s:=s+chr(succ(Ord(Ch)));
end;
End.
№25 слайд
Содержание слайда: 4.3.2 Нетипизированные параметры
Нетипизированные параметры – параметры-переменные, тип которых при объявлении не указан.
Для приведения нетипизированного параметра к определенному типу можно использовать:
1) автоопределенное преобразование типов:
Procedure Proc(Var a); ...
...b:= Integer(а)+10; ...
2) наложенное описание переменной определенного типа:
Procedure Proc(Var a); ...
Var r:real absolute a;...
№26 слайд
Содержание слайда: Суммирование чисел различных типов
Unit Summa4;
Interface
type ttype=(treal,tinteger);
function sum(var x;n:integer;t:ttype):real;
Implementation
function sum;
Var mr:array[1..3000] of real absolute x;
mi:array[1..3000] of integer absolute x;
s:real;i:integer;
begin s:=0;
if t=treal then
for i:=1 to n do s:=s+mr[i]
else for i:=1 to n do s:=s+mi[i];
sum:=s;
end;
End.
№27 слайд
Содержание слайда: Тестирующая программа
program Ex4_7;
{$APPTYPE CONSOLE}
uses SysUtils,
Summa4 in 'Summa4.pas';
Var a:array[1..10] of integer;
b:array[1..15] of real;
i,n:integer;
Begin
for i:=1 to 10 do Read(a[i]);
ReadLn;
WriteLn('Sum=',sum(a,10,tinteger):8:1);
for i:=1 to 15 do Read(b[i]);
ReadLn;
WriteLn('Sum=',sum(b,15,treal):8:1);
ReadLn;
end.
№30 слайд
Содержание слайда: Универсальная подпрограмма
Unit Matrica;
Interface
procedure Tran(Var x;n,q:integer);
Implementation
procedure Tran;
Var a:array[1..3000] of real absolute x;
i,j:integer; t:single;
begin
for i:=1 to n-1 do
for j:= i+1 to n do
begin t:=a[(i-1)*q+j];
a[(i-1)*q+j]:=a[(j-1)*q+i];
a[(j-1)*q+i]:=t;
end;
end;
End.
№31 слайд
Содержание слайда: Тестирующая программа
Program Ex4_8;
{$APPTYPE CONSOLE}
Uses SysUtils,
Matrica in 'Matrica.pas';
Var a:array[1..10,1..10] of single; i,j:integer;
Begin WriteLn('Input a(5*5):');
for i:=1 to 5 do
begin for j:=1 to 5 do Read(a[i,j]);
ReadLn;
end;
tran(a,5,10);
WriteLn('Result:');
for i:=1 to 5 do
begin for j:=1 to 5 do Write(a[i,j]:6:2);
WriteLn;
end;
ReadLn;
End.
№32 слайд
Содержание слайда: 4.3.3 Параметры процедурного типа
Параметры процедурного типа используются для передачи в подпрограмму имен процедур и функций.
Для объявления процедурного типа используется заголовок подпрограммы, в котором отсутствует имя:
Type proc=procedure (a,b,c:real;Var d:real);
func=function(x:real):real;
Значениями переменных процедурных типов являются идентификаторы процедур и функций с соответствующими заголовками:
Var f:func;
...
f:=fun1;...
№34 слайд
Содержание слайда: Подпрограмма табулирования функции
Unit SFun;
Interface
Type func=function(x:Single):Single;
Procedure TabFun(f:func;a,b:Single;n:integer;
var Masf,MasX:array of Single);
Implementation
Procedure TabFun;
Var h,x:Single; i:integer;
Begin
h:=(b-a)/(n-1);
for i:=0 to n-1 do
begin MasX[i]:= a+h*i;
Masf[i]:=f(MasX[i]);
end;
End;
End.
№35 слайд
Содержание слайда: Тестирующая программа
Program Ex4_9;
{$APPTYPE CONSOLE}
Uses SysUtils,
SFun in 'SFun.pas';
Var masF1,masX1:array[1..10] of Single;
masF2,masX2:array[1..20] of Single;
i:integer;
function F1(x:Single):Single;
Begin
F1:=sin(x);
end;
function F2(x: Single):Single;
Begin
F2:=exp(x)+cos(x);
end;
№37 слайд
Содержание слайда: 4.4 Рекурсия
4.4.1 Основные понятия
Рекурсия – организация вычислений, при которой процедура или функция обращаются к самим себе.
Различают явную и косвенную рекурсии. При явной – в теле подпрограммы существует вызов самой себя, при косвенной – вызов осуществляется в подпрограммах, вызываемых из рассматриваемой.
Косвенная рекурсия требует предопределения forward:
procedure B(j:byte); forward;
procedure A(j:byte);
begin ...B(i);...
end;
procedure B;
begin ... A(j);...
end;
№39 слайд
Содержание слайда: Вычисление наибольшего общего делителя (2)
Program Ex4_10a;
{$APPTYPE CONSOLE}
Uses SysUtils;
Var a,b,r:integer;
Procedure nod(a,b:integer; var r:integer);
Begin
if a=b then r:=a
else if a>b then nod(a-b,b,r)
else nod(a,b-a,r)
End;
Begin WriteLn('Input A,B');
ReadLn(a,b);
nod(a,b,r);
WriteLn(r);
ReadLn;
End.
№41 слайд
Содержание слайда: Вычисление наибольшего общего делителя (4)
Program Ex4_10b;
{$APPTYPE CONSOLE}
Uses SysUtils;
Var a,b,r:integer;
Function nod(a,b:integer):integer;
begin if a=b then Result:=a
else
if a>b then Result:=nod(a-b,b)
else Result:=nod(a,b-a)
end;
Begin WriteLn('Input A,B');
ReadLn(a,b);
r:=nod(a,b);
WriteLn(r);
ReadLn;
End.
№42 слайд
Содержание слайда: 4.4.2 Фрейм активации.
Структура рекурсивной подпрограммы
Каждое обращение к рекурсивной подпрограмме вызывает независимую активацию этой подпрограммы.
Совокупность данных, необходимых для одной активации рекурсивной подпрограммы, называется фреймом активации.
Фрейм активации включает
локальные переменные подпрограммы;
копии параметров-значений;
адреса параметров-переменных и параметров-констант (4 байта);
копию строки результата (для функций типа string);
служебную информацию (12 байт, точный размер этой области зависит от способа передачи параметров).
№43 слайд
Содержание слайда: Переворот строки
1) последовательное отсечение начального элемента и добавление его в конец результирующей строки:
Function reverse1(const st:string):string;
Begin
if length(st)=0 then Result:=‘‘
else
Result:= reverse1(copy(st,2,length(st)-1))+ st[1];
End;
Фрейм активации: V=4 + 256 + <служебная область> 272.
№44 слайд
Содержание слайда: Переворот строки (2)
2) последовательная перестановка элементов,
например
ABCDE EBCDA EDCBA
Procedure reverse2(var ss:string; n:integer);
Var temp:char;
Begin if n<=length(ss) div 2 then
begin temp:=ss[n];
ss[n]:=ss[length(ss)-n+1];
ss[length(ss)-n+1]:=temp;
reverse2(ss,n+1);
end;
End;
Фрейм активации: V=4+4+1+<служебная область>21
№46 слайд
Содержание слайда: Определение корней уравнения на заданном отрезке (2)
Базисное утверждение: Если абсолютная величина функции в середине отрезка не превышает заданного значения погрешности, то координата середины отрезка и есть корень.
Рекурсивное утверждение: Корень расположен между серединой отрезка и тем концом, значение функции в котором по знаку не совпадает со значением функции в середине отрезка.
№47 слайд
Содержание слайда: Определение корней уравнения на заданном отрезке (3)
Program Ex4_11;
{$APPTYPE CONSOLE}
Uses SysUtils;
Var a,b,eps,x:real;
Procedure root(a,b,eps:real;var r:real);
Var f,x:real;
Begin x:=(a+b)/2; f:=x*x-1;
if abs(f)>=eps then
if (a*a-1)*f>0 then root(x,b,eps,r)
else root(a,x,eps,r)
else r:=x;
End;
Begin WriteLn('Input a,b,eps'); ReadLn(a,b,eps);
root(a,b,eps,x);
WriteLn('Root x=',x:9:7); ReadLn;
End.
№48 слайд
Содержание слайда: Структура рекурсивной подпрограммы
«Операторы после вызова», выполняются после возврата управления из рекурсивно вызванной подпрограммы.
Пример. Распечатать положительные элементы массива в порядке следования, а отрицательные элементы – в обратном порядке. Признак конца массива – 0.
№50 слайд
Содержание слайда: Просмотр массива. Программа
Program Ex4_12;
{$APPTYPE CONSOLE}
Uses SysUtils;
Type mas=array[1..10] of real;
Var x:mas; i:integer;
Procedure print(const x:mas;i:integer);
Begin if x[i]=0 then WriteLn('***')
else
begin
if x[i]>0 then WriteLn(i,x[i]);
print(x,i+1);
if x[i]<0 then WriteLn(i,' ', x[i]);
end
End;
№53 слайд
Содержание слайда: Перестановки (2)
Program Ex4_13;
{$APPTYPE CONSOLE}
Uses SysUtils;
Type mas=array[1..3] of char;
Var a:mas='ABC'; Var pole:mas;
procedure Perest(n,m:integer; Const r:mas;
Var pole:mas);
Var r1:mas; k,j,i:integer;
Begin
if n>m then
begin
for i:=1 to m do Write(pole[i]); WriteLn;
end
else
Скачать все slide презентации Модульное программирование (Delphi / Pascal, глава 4) одним архивом:
-
Основы алгоритмизации и процедурное программирование. Простейшие конструкции языка Delphi / Pascal (Глава 1)
-
Средства объектно-ориентированного программирования (Delphi / Pascal, глава 7)
-
Управляющие конструкции (Delphi / Pascal, глава 2)
-
Структурные типы данных (Delphi / Pascal, глава 3)
-
Работа с файлами ( Delphi/Pascal, глава 5)
-
Использование динамически выделяемой памяти (Delphi / Pascal, глава 6)
-
Создание приложений Windows. Программирование в среде Delphi с использованием библиотеки VCL (Глава 8)
-
Глава 3. Модульное программирование (ассемблер)
-
Язык программирования Turbo Pascal
-
Условный оператор в языке программирования Pascal