L4(function)по ПДС_2015
.pdfпроцедуре при вызове могут быть переданы некоторые данные (параметры)
плитка(кухня, синий);
краска(коридор, красный, кисть);
обои(комната, зеленый);
необходимо
boss = бригадир,
dye = красная краска, side = правая стена, tank = ведро 15л, dauber = валик;
если (tank === неопределено) boss получить tank;
иначе
если (tank содержимое === остатки_покрытия) tank подготовить растворитель;
иначе
tank подготовить вода;
tank подготовить;
если (dye === неопределено) boss получить dye;
иначе
daub = tank содержимое dye;
пока (side область вся !== окрашено) side область не_окрашено_вниз; side область 70см_х_ширина_стены; side нанести daub;
side нанести dauber;
boss получить фронт_работ;
подготовка_емкости(tank, boss);
подготовка_материалов(dye, tank, boss, daub);
малярные_работы(side, dauber, boss);
...выполняет их вызов
...переданы некоторые данные (параметры)
комментарий к псевдокоду
передаваемые данные
подготовка_емкости(tank, boss);
подготовка_материалов(dye, tank, boss, daub);
малярные_работы(side, dauber, boss);
необходимо
boss = бригадир, |
|
dye = красная краска, |
|
side = правая стена, |
|
tank = ведро 15л, |
|
dauber = валик; |
... выполняет их вызов... |
|
|
подготовка_емкости(tank, boss); |
|
|
|
подготовка_материалов(dye, tank, boss); |
|
малярные_работы(side, dauber, boss); |
|
...фрагменты программы обозначенные именами, упоминание которых в тексте программы (в разных точках программы) выполняет их вызов...
процедура подготовка_емкости(t, b) |
... |
уникальные |
фрагменты |
|
{ |
|
|
|
|
программы обозначенные |
||||
если (t === неопределено) |
||||
b получить t; |
именами... |
|||
иначе |
|
|
|
|
|
|
|
если (t содержимое === остатки_покрытия) t подготовить растворитель;
иначе
t подготовить вода;
t подготовить;
}
...при вызове процедуры выполняется последовательность
инструкций описанных
внутри этой
процедуры...
процедура подготовка_материалов(d, t, b)
{
если (d === неопределено) b получить d;
иначе
daub = t содержимое d;
}
процедура малярные_работы(s, d, b)
{
пока (s область вся !== окрашено) s область не_окрашено_вниз;
s область 70см_х_ширина_стены; s нанести daub;
s нанести d;
b получить фронт_работ;
}
необходимо
boss = бригадир,
dye = красная краска, side = правая стена, tank = ведро 15л, dauber = валик;
подготовка_емкости(tank, boss);
подготовка_материалов(dye, tank, boss);
малярные_работы(side, dauber, boss);
н еоб ход имо |
|
||
bo ss |
= |
б риг ади р, |
|
dy e |
= |
кр асн ая |
кра ска , |
si de |
= |
п рав ая |
сте на, |
ta nk |
= |
в едр о |
1 5л, |
da ube r |
= ва лик ; |
подг ото вка _ем кос ти( tan k, bos s);
подг ото вка _ма тер иал ов( dye , t ank , b oss );
маля рны е_р або ты( sid e, dau ber , b oss );
п роц еду ра |
подгот овк а_е мко сти (t, b) |
|||
{ |
|
|
|
|
е сли |
(t |
== = |
н еоп ред еле но) |
|
b |
п о л учи ть |
t; |
||
и нач |
е |
|
|
|
е с |
ли |
(t |
с од ерж имо е === ост атк и_п окр ыти я) |
tп о дг ото вит ь раствор ите ль;
ин аче
t п о дг ото вит ь вода;
t п о дго тов ить ;
}
п роц еду ра |
подгот овк а_м ате риа лов (d, t, b) |
||
{ |
|
|
|
е сли |
(d == = |
н еоп ред еле но) |
|
b |
п о л учи ть d; |
||
и нач е |
|
|
|
da ub = |
t |
с о дер жим ое d; |
|
} |
|
|
|
п роц еду ра |
малярн ые_ раб оты (s, d, b) |
||
{ |
|
|
|
п ока |
(s о б лас ть вся != = о кра шен о) |
||
s о б л аст ь |
не_окра шен о_в низ ; |
||
s о б л аст ь |
70см_х_ шир ина _ст ены ; |
||
s н а н ест и |
daub; |
||
s н а н ест и |
d; |
||
b п о луч ить |
фронт _ра бот ; |
||
} |
|
|
|
подготовка емкости
параметры: boss, tank
подготовка материалов
параметры:
dye, tank, boss
малярные работы
параметры:
side, dauber, boss
необходимо
boss = бригадир,
dye = красная краска, side = правая стена, tank = ведро 15л, dauber = валик;
отделка(boss, tank, dye, side, dauber);
процедура отделка(b, t, d, s, dbr)
{
подготовка_емкости(t, b); подготовка_материалов(d, t, b); малярные_работы(s, dbr, b);
}
любой алгоритм можно представить в виде одной процедуры ...
принципы процедурного программирования:
1.повторяющиеся фрагменты программы (группы инструкций) можно оформить в виде подпрограмм (процедур, функций);
2.каждую логически законченную (выполняющую ограниченную задачу) группу инструкций следует оформить как блок;
3.разработка программы ведётся пошагово, методом «сверху вниз»
процедура = функция = подпрограмма = блок
... одна и та же процедура для разных параметров
отделка( boss, tank, dye, отделка( boss, tank3, wallpaper, отделка( boss, tank1, dye_green, отделка( boss, tank1, ceramic_tile, отделка( boss, tank2, dye,
отделка( boss, tank1, dye_yellow, отделка( boss, tank2, wallpaper_yellow, отделка( boss, tank, dye,
отделка( boss, tank2, dye, отделка( boss, tank, ceramic_tile, отделка( boss, tank1, dye_green, отделка( boss, tank, dye_gray,
отделка( boss, tank, wallpaper_blue, отделка( boss, tank2, wallpaper_green, отделка( boss, tank2, dye_blue, отделка( boss, tank, dye_gray,
...
...повторяющиеся фрагменты программы (группы инструкций) можно оформить в виде подпрограмм (процедур и функций)
|
|
|
процедура подготовка_ |
side, |
dauber |
); { |
|
side_room1, |
dauber |
); |
если (t === неопределе |
b получить t; |
|||
side_room2, |
dauber2 ); |
иначе |
|
side_kitchen1, dauber |
); |
если (t содержимое |
|
t подготовить рас |
|||
side_room3, |
dauber1 ); |
иначе |
|
t подготовить вод |
|||
side_hall1, |
dauber2 ); |
|
|
side_hall2, |
dauber |
); }t подготовить; |
|
side2, |
dauber |
); процедура подготовка_ |
|
side3, |
dauber |
); { |
|
side_kitchen2, dauber |
); |
если (d === неопределе |
|
b получить d; |
|||
side_hall3, |
dauber1 ); иначе |
||
side, |
dauber |
); } daub = t содержимое |
|
side, |
dauber3 |
); процедура малярные_ра |
|
side, |
dauber2 |
); { |
|
side_hall4, |
dauber |
); |
пока (s область вся ! |
s область не_окраше |
|||
side_room4, |
dauber3 |
); |
s область 70см_х_ши |
|
|
|
s нанести daub; |
процедура отделка(b, t, d, s, dbr)
{
подготовка_емкости(t, b); подготовка_материалов(d, t, b); малярные_работы(s, dbr, b);
}