Вспомогательные алгоритмы презентация

Содержание

При создании программы для решения более или менее сложной задачи выполняется разделение этой задачи на подзадачи, этих подзадач – на более мелкие подзадачи и так далее до тех пор, пока подзадачи не

Слайд 1Вспомогательные алгоритмы
(подпрограммы)


Слайд 2При создании программы для решения более или менее сложной задачи выполняется

разделение этой задачи на подзадачи, этих подзадач – на более мелкие подзадачи и так далее до тех пор, пока подзадачи не станут легко программируемыми.

Для такой организации используются подпрограммы.


Слайд 3В программах часто приходится повторять некоторые аналогичные действия многократно.

Используя подпрограммы,

можно единожды описать действия в подпрограмме, а затем лишь только вызывать ее.

Такой принцип дефрагментации программы называется нисходящим программированием и соответствует принципам структурного программирования, в основу которого и положено понятие подпрограммы.

Слайд 4
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм


Слайд 5Подпрограммы удобно использовать, когда в программе приходится выполнять одни и те

же действия, но с разными данными.

Слайд 6 Использование подпрограмм имеет следующие преимущества:

облегчение разработки

больших и сложных программ;

экономия памяти: память для переменных выделяется только на время работы подпрограммы.

Слайд 7РАЗЛИЧАЮТ ДВА ВИДА ПОДПРОГРАММ: ПРОЦЕДУРЫ И ФУНКЦИИ.


Слайд 8ОСНОВНЫЕ ОТЛИЧИЯ: - ФУНКЦИЯ ВОЗВРАЩАЕТ ЗНАЧЕНИЕ И МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНА В

ВЫРАЖЕНИИ; - ПРОЦЕДУРА МОЖЕТ БЫТЬ ВЫЗВАНА НА ВЫПОЛНЕНИЕ.

Слайд 9ВИДЫ ПЕРЕМЕННЫХ


Слайд 10ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ – ЭТО ПЕРЕМЕННЫЕ, ОПИСАННЫЕ В РАЗДЕЛЕ ОПИСАНИЙ ГЛАВНОЙ ПРОГРАММЫ


Слайд 11ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ – ЭТО ПЕРЕМЕННЫЕ, ОПИСАННЫЕ В РАЗДЕЛЕ ОПИСАНИЙ ПОДПРОГРАММЫ. ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ

МОГУТ ИСПОЛЬЗОВАТЬСЯ И МЕНЯТЬСЯ ТОЛЬКО ОПЕРАТОРАМИ ДАННОЙ ПОДПРОГРАММЫ

Слайд 12ПАРАМЕТРЫ
Формальные параметры – это параметры, описываемые в заголовке процедуры.

Фактические параметры

– это значения, указываемые в вызове процедуры

Слайд 13подпрограммы-процедуры


Слайд 14Процедура — это подпрограмма, которая имеет любое количество входных и выходных

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

Слайд 15 ОПИСАНИЕ ПРОЦЕДУРЫ ИМЕЕТ ТАКОЙ ВИД:
procedure ;   {описание локальных переменных} begin   {операторы}  end;


Слайд 16Процедура без параметров может реализовывать любой алгоритм. Все переменные, с которыми

проводят действия операторы процедуры, определяются в вызывающей программе, им присваиваются необходимые для выполнения процедуры значения. Для вызова процедуры без параметров просто указывается ее имя.

Слайд 17Пример
Составить программу для вычисления площади выпуклого 4-угольника, заданного длинами его

сторон и диагональю.

Диагональ делит 4-угольник на два 3-угольника, к которым применима формула Герона:


Слайд 18program Prog1;
uses CRT;
var AB, BC, CD, DA, AC, S1, S2, S,

a, b, c, p: real;
Procedure Ploshad1;
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
begin
Clrscr;
Writeln('Задайте стороны 4-х угольника ABCD и его диагональ AC');
readln (AB, BC, CD, DA, AC);
a:=AB; b:=BC; c:=AC;
Ploshad1;
S1:=s;
a:=DA; b:=AC; c:=CD;
Ploshad1;
S2:=s;
Writeln ('Площадь ABCD= ', S1+S2:8:2); readln; end.

2 обращения к процедуре

Команды присваивания, задающие значения a, b, c перед каждым вызовом процедуры

Команды присваивания для сохранения результатов

Связь процедуры Ploshad1 с остальными операторами происходит с помощью переменных a, b, c и s. Переменная p используется только внутри процедуры. Ее можно и описать в этой процедуре.


Слайд 19Переменные, которые описаны и используются внутри процедуры, называются – локальными.
Переменные, которые

описаны в основной программе, называются – глобальными.

Локальные переменные действуют только внутри данной процедуры.

Глобальные переменные действуют во всей программе и в каждой ее процедуре.


Слайд 20Рассмотрим пример вычисления наименьшего общего кратного двух натуральных чисел НОК(Х, У),

которое можно найти, используя наибольший общий делитель (НОД) этих чисел, по формуле НОК(Х, У)=Х-У/НОД(Х, У).

Слайд 21Программа имеет вид: program NOK;   const c:array[1..5]of integer=(36,54,72,18,15);   var x,у,i,m:integer;   procedure NSD;

{заголовок процедуры}     var a,b:integer; {описание локальных переменных}   begin     a:=x;     b:=у;{сохранение начальных данных}     while a<>b do       if a>b then a:=a-b              else b:=b-a;     m:=а {результат работы процедуры присваивается глобальной               переменной}   end; {конец процедуры} begin {начало главной программы}   х:=с[1];   for i:=2 to 5 do      begin у:=с[i];     NSD; {вызов процедуры без параметров}      х:=х*у div m {div - деление нацело                   для целочисленных данных}   end;   writeln('HOK=',x) end.

Слайд 22ОФОРМИМ В ВИДЕ ПРОЦЕДУРЫ ПРОГРАММУ ПРИВЕТСТВИЯ
Program HelloAll;
Procedure Hello (name: string);
Begin

writeln (‘Привет, ’, name, ‘!’);
writeln (name, ‘, как дела?’);
Readln;
End;
Begin
Hello (‘Катя’);
Hello (‘Андрей’);
Hello (‘Лена’)
End.

Слайд 23Задача. Составить программу нахождения наибольшего элемента в линейном массиве, используя вспомогательные

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

Процедура создания массива случайных чисел содержит один параметр – массив. Т.к. – это результат работы процедуры, то этот параметр должен быть параметром-переменной.


Процедура нахождения наибольшего из двух чисел содержит три параметра, один из которых должен быть параметром-переменной – результатом, и два – параметрами значениями – аргументами.


Слайд 24В ЯП Паскаль в описании процедур в списке параметров нельзя описывать

массивы таким образом:
procedure Tabl(var x: array[1..n] of integer);
Поэтому в основной программе до описания массивов можно указать тип данных массив:
type
arr = array[1..n] of integer;
И затем этот тип данных использовать при описании массивов в самой программе и в процедурах при описании формальных параметров type
arr = array[1..n] of integer;
var
i, k, z: integer;
а :arr;
procedure Tabl(var x: arr);



Слайд 25Program max_tabl;
Uses Crt; const n=10;
type
arr = array [

1 ..n] of integer;
var
i, k, z: integer; а :arr;
procedure Tabl(var x: arr);
begin
writeln ('Massiv');
for i:=1 to n do
begin
x[i]:=random(100); write (x[i]:5);
end; writeln;
end;{Tabl}
procedure max(x1,x2 : integer; var x3:integer);
begin
if x1>x2 then x3:=x1 else x3:=x2;
end;{max}

{***** Main*****}
begin
clrscr;
randomize;
tabl (a);
z:= a[1];
for i:=2 to n do
max(z,a[i],z);
writeln('max= ', z:6);
readln;
end.


Слайд 26подпрограммы-функции


Слайд 27В Паскале помимо процедур можно использовать функции. Их еще называют функции

пользователя ( в отличие от стандартных функций, таких как sin, random и др.) Обращение к функции приводит к вычислению ее значения – объекта типа real, integer или char.

Function Имя(параметры):тип результата;
var список локальных переменных
begin
Команды
Имя:=выражение;
end;

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


Слайд 28Функции –
это разновидность подпрограммы.

Для использования функции в

программе ее необходимо описать в разделе описаний главной программы.

Слайд 29ОПИСАНИЕ ФУНКЦИИ НАЧИНАЕТСЯ С ЗАГОЛОВКА FUNCTION И ЗАКАНЧИВАЕТСЯ ТИПОМ ДАННЫХ ВОЗВРАЩАЕМОГО

ЗНАЧЕНИЯ:

Function <имя функции > (<параметры>): <тип данных>;


Слайд 30ЗАДАЧА. ВЫЧИСЛИТЬ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ:


Слайд 31РЕШЕНИЕ.
Вычисление модуля оформим в виде пользовательской функции Modul:
Program P1;
Var

x, y: real;
Function Modul (x: real): real;
begin
if x<0 then x:=-x;
Modul:=x;
end;
Begin
writeln (‘Введите х’); readln (x);
y:=Modul (x+1)+Modul (x+2);
writeln (y:6:3);
End.

Слайд 32ЗАДАЧА. ВЫЧИСЛИТЬ ЗНАЧЕНИЕ ВЫРАЖЕНИЯ:


Слайд 33РЕШЕНИЕ.
Вычисление степени оформим в виде пользовательской функции Deg:
Program Degree;
Var

z, f: real; m: integer;
Function Deg (n: integer; x: real): real;
Var I: integer; y: real;
begin
I:=1; y:=1;
while I<=n do begin
y:=y*x; I:=I=+1;
end;
Deg:=y;
End;
Begin
writeln (‘Введите z, m’); readln (z,m);
f:=Deg (m,z);
writeln (f:8:3);
End.


Слайд 34ЗАДАЧА

Найти значение выражения.


Величины а и b вводятся с клавиатуры.



Слайд 35РЕШЕНИЕ ЗАДАЧИ

Program FFF;
Var a,b,y:real;
Function SB(s,n:real):real;
Var s,n,z:real;

Begin
z:=sin(s)/cos(n);
SB:=z;
End;
Begin
Readln(a,b);
y:=SB(a,b)/sqr(SB(a,b))-sqrt(SB(a,b))+(sqr(SB(a,b))*SB(a,b));
Writeln(y:3:2);
Readkey;
End.


Подпрограмма-функция

Вычисления с
помощью функции


Слайд 36Составить программу для вычисления площади выпуклого 4-угольника, заданного длинами его сторон

и диагональю.

Диагональ делит 4-угольник на два 3-угольника, к которым применима формула Герона:

Рассмотрим пример:


Слайд 37program Function_of_user;
uses Crt;
var AB,BC,CD,DA,AC,S1,S2,S:real;
Function f(a,b,c:real):real;
var p:real;

begin
p:=(a+b+c)/2; F:=Sqrt(p*(p-a)*(p-b)*(p-c));
end;
begin
readln (AB,BC,CD,DA,AC);
S1:=f(AB,BC,AC);
S2:=f(CD,DA,AC); s:=S1+S2;
writeln (S:8:2);
Writeln (f(AB,BC,AC)+ f(CD,DA,AC):8:2);
readln; end.

Вызов
функции


Слайд 38Для многих программ не важно, что изберет программист для их реализации:

процедуру или функцию, но есть определенные правила, которые дают четкие отличия процедур и функций

Слайд 39Сравнение процедур и функций.


Слайд 40Написать программу вывода на экран компьютера таблицы тригонометрических функций sin x,

cos x. tg x. Для вычисления функции tg x использовать функцию пользователя, а для вывода таблицы – процедуру.

Мы с вами знаем много стандартных функций ЯП Паскаль. К ним относятся и функции sin x и cos x. А для вычисления такой распространенной функции, как тангенс, стандартной функции в Паскале нет. Поэтому мы напишем ее самостоятельно.

Пример 1.


Слайд 41Program Table_of_function;
uses CRT;
var x, nx,kx: integer;
function Tg(xx:integer):real;

begin
if cos(xx)<> 0 then
Tg:=sin(xx)/cos(xx)
else Tg:=-100;
end;
procedure output(a:integer;b,c,d:real);
var i:integer;
begin
for i:=1 to 35 do
write('_');
writeln;
writeln (a:8,b:8:2,c:8:2,d:8:2);
end;

begin
clrscr;
writeln ('Zadayte diapason
dlja x: nx, kx');
Readln (nx, kx);
{*** zagolovok tablizy***}
writeln (' x sinx cosx tgx');
for x:=nx to kx do
output(x, sin(x), cos(x), tg(x));
readln;
end.


Слайд 42Из данного примера видно, что стандартные функции и функции пользователя в

программе используются совершенно одинаково.
Для вывода информации на экран компьютера мы использовали процедуру, т.к. функция не может производить подобные действия – вывод чего-то на экран компьютера. В описании процедуры использованы 4 параметра – значения.
Поэтому в качестве фактических параметров при вызове процедуры мы можем использовать имена переменных, выражения (в виде функций) и константы. Параметров–значений в этой процедуре нет, т.к. она ничего не вычисляет.

Слайд 43Пример 2
Написать программу, которая определяет, является ли билет «Счастливым», т.е. сумма

правых трех цифр числа должна быть равна сумме левых трех цифр. Для написания этой программы нам надо вспомнить операции DIV целая часть от деления и MOD остаток от деления.

20 div 7 =2 123 div 10 = 12
20 mod 7 =6 123 mod 100 = 23

Слайд 44Program Bilet;
uses Crt;
var Nomer: longint;
lev,prav:integer;
function summa(x:integer):integer;

var i,j,k:integer;
begin
i:=x div 100; { sothi}
j:=x div 10 mod 10; {desjatki}
k:=x mod 10; {edinizy}
summa:=i+j+k;
end;

begin
clrscr;
writeln (‘ Zadayte nomer bileta-);
writeln (‘zeloe 6-zn chislo');
readln (nomer);
lev:= nomer div 1000;
prav:= nomer mod 1000;
if summa(lev)=summa(prav) then
writeln ('Yes')
else
writeln ('No');
readln;
End.


Слайд 453
Написать программу для вычисления значения функции

f(0.8,a)+f(a,b)-f(2a-1,ab),
где a, b действительные числа и



Слайд 46Program F_X_Y;
uses CRT;
var a,b,z: real;
function f(x,y:real):real;
begin

f:= (sqr(x)-sqr(y))/(sqr(x)-2*x*y+sqr(y)+6);
end;
begin
clrscr;
writeln ('Zadayte a,b'); readln(a,b);
z:=f(0.8,a)+f(a,b)-f(2*a-1,a*b);
writeln(z:8:2); readln; end.

При а=1 и в=2 ответ –0,06
При а=2, в=3 ответ –0,15

Слайд 47Задания:
Задача 1. Составить программу, которая каждому элементу массива присваивает

значение суммы двух соседних с ним элементов массива:
Создания массива случайных чисел.
Вывода массива на экран компьютера.
Вычисления элементов массива
Задача 2. Даны вещественные числа a и b. Вычислить:
U=f(1.7,a)+f(b,a)+f(a+b,b-a), если



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

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

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

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

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


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

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