|
§ 3.4. Ïðîãðàììèðîâàíèå ðàçâåòâëÿþùèõñÿ àëãîðèòìîâ
Ïîóðî÷íûå ïëàíû, èíòåðàêòèâ
3.4.3. Ìíîãîîáðàçèå ñïîñîáîâ çàïèñè âåòâëåíèé
 êà÷åñòâå îïåðàòîðà ïîñëå then è else ìîæíî èñïîëüçîâàòü óñëîâíûé îïåðàòîð. Íàïðèìåð, âîçìîæíà ñëåäóþùàÿ êîíñòðóêöèÿ:
Ïðè èñïîëüçîâàíèè òàêèõ ñëîæíûõ êîíñòðóêöèé (èõ åù¸ íàçûâàþò âëîæåííûìè âåòâëåíèÿìè) ñëåäóåò èìåòü â âèäó, ÷òî else âñåãäà îòíîñèòñÿ ê áëèæàéøåìó îïåðàòîðó if.
Ïðèìåð. Âîñïîëüçóåìñÿ âëîæåííûì âåòâëåíèåì äëÿ çàïèñè íà ÿçûêå Ïàñêàëü ðàññìîòðåííîãî â ï. 2.4.2 (ïðèìåð 10) àëãîðèòìà ðåøåíèÿ ëèíåéíîãî óðàâíåíèÿ.
program n_12;
var a, b, õ: real;
begin
writeln ('Ðåøåíèå ëèíåéíîãî óðàâíåíèÿ');
write ('Ââåäèòå êîýôôèöèåíòû à, b>>');
readln (à, b) ;
if à<>0 then
begin
õ:=-b/a;
writeln ('Êîðåíü óðàâíåíèÿ õ=', õ: 9: 3)
end
else if b<>0 then writeln ('Êîðíåé íåò')
else writeln ('x - ëþáîå ÷èñëî');
end.
Êàê ïðàâèëî, äëÿ ðåøåíèÿ îäíîé è òîé æå çàäà÷è ìîæíî ïðåäëîæèòü íåñêîëüêî àëãîðèòìîâ. Óáåäèìñÿ â ýòîì, çàïèñàâ ïðîãðàììó ðåøåíèÿ ëèíåéíîãî óðàâíåíèÿ, íå ïðèáåãàÿ ê âëîæåííûì âåòâëåíèÿì.
program n_13;
var a, b, õ: real;
begin
writeln ('Ðåøåíèå ëèíåéíîãî óðàâíåíèÿ');
write ('Ââåäèòå êîýôôèöèåíòû à, b>>');
readln (à, b) ;
if à<>0 then
begin
x:=-b/a;
writeln ('Êîðåíü óðàâíåíèÿ õ=', õ:9:3)
end;
if (à=0) and (b<>0) then writeln ('Êîðíåé íåò');
if (a=0) and (b=0) then writeln ('x - ëþáîå ÷èñëî')
end.
Âîçìîæíî, âòîðîé âàðèàíò ïðîãðàììû ïîêàæåòñÿ âàì áîëåå íàãëÿäíûì. Íî è ó ïåðâîãî âàðèàíòà åñòü ñâîè ïðåèìóùåñòâà: â í¸ì äåëàåòñÿ ìåíüøå ïðîâåðîê.
Èñïîëüçóéòå âëîæåííûå âåòâëåíèÿ äëÿ çàïèñè ïðîãðàììû, îïðåäåëÿþùåé ïðèíàäëåæíîñòü òî÷êè õ îòðåçêó [à, b].
|