Òåìà 7: Óïðàâëÿþùàÿ
êîíñòðóêöèÿ if, öèêë for
Çäåñü âû ïîçíàêîìèòåñü ñî ñòðîêîâûìè, ñèìâîëüíûìè è ëîãè÷åñêèìè òèïàìè
äàííûõ. Èçó÷èòå óïðàâëÿþùóþ êîíñòðóêöèþ if è öèêë for, ïîçíàêîìèòåñü ñ
"ïðîãðàììíûìè ñêîáêàìè". Íàïèøèòå ïðèëîæåíèå, èñïîëüçóÿ ïðîéäåííûé ìàòåðèàë.
Ìû óæå ðàáîòàëè ñî ñòðîêîâûì òèïîì äàííûõ String. Îäíàêî, êàê è â ñëó÷àå
ñ öèôðàìè, áûâàåò íåñêîëüêî ñòðîêîâûõ òèïîâ. Ñòðîêà ñîñòîèò èç íàáîðà ñèìâîëîâ.
Êîìïüþòåð ðàáîòàåò â äâîè÷íîé ñèñòåìå èñ÷èñëåíèÿ, îí ðàáîòàåò òîëüêî ñ öèôðàìè.
È ñèìâîëû êîìïüþòåð âîñïðèíèìàåò â âèäå öèôð. Äëÿ ýòîãî â îïåðàöèîííîé ñèñòåìå
ñóùåñòâóåò òàáëèöà ñèìâîëîâ, ãäå êàæäîìó ñèìâîëó ñîîòâåòñòâóåò êàêàÿ ëèáî
öèôðà.
Ñàìàÿ ïåðâàÿ òàáëèöà ñèìâîëîâ, ñîçäàííàÿ
äëÿ îïåðàöèîííîé ñèñòåìû MS-DOS, íàçûâàëàñü ASCII. Ýòè ñèìâîëû áûëè 7-ìè
áèòíûìè, êàê ñëåäñòâèå, òàáëèöà ñîäåðæàëà ìàêñèìóì 127 ñèìâîëîâ. Ïîñêîëüêó â
îäíîì áàéòå ñîäåðæèòñÿ 8 áèò, îäèí áèò òåðÿëñÿ âïóñòóþ. Ó ýòîé òàáëèöû áûëè
ñâîè ÿçûêîâûå ðàñøèðåíèÿ, òî åñòü, äëÿ êàæäîãî ÿçûêà äåëàëàñü ñâîÿ òàêàÿ òàáëèöà.
Äëÿ îïåðàöèîííîé ñèñòåìû Windows áûëà
ðàçðàáîòàíà òàáëèöà ñèìâîëîâ ANSI, êîòîðàÿ èñïîëüçóåòñÿ ïî ñåé äåíü. Ýòà
òàáëèöà èñïîëüçóåò 8-ìè áèòíûå ñèìâîëû, òî åñòü, ñîäåðæèò 256 ñèìâîëîâ, îò 0 äî
255.  Delphi òàêàÿ òàáëèöà èñïîëüçóåòñÿ, êàê îñíîâíàÿ. Áîëüøåå êîëè÷åñòâî
ñèìâîëîâ ïîçâîëèëî âñòàâèòü â òàáëèöó íå òîëüêî îñíîâíûå ñèìâîëû, íî è öèôðû,
çíàêè ïðåïèíàíèÿ, ñïåöèàëüíûå ñèìâîëû. Ìû áóäåì ðàáîòàòü, â îñíîâíîì, ñ ýòîé
òàáëèöåé.
Äëÿ òîãî, ÷òîáû óäîâëåòâîðèòü ïîòðåáíîñòè
ïîëüçîâàòåëåé äðóãèõ ÿçûêîâ, áûëà ñîçäàíà òàáëèöà UNICODE. Ýòà òàáëèöà
èñïîëüçóåò 16 áèò, è â íåå ïîìåùàåòñÿ îò 0 äî 65 535 ñèìâîëîâ. Ýòà òàáëèöà,
íà÷èíàÿ ñ Windows 2000, èñïîëüçóåòñÿ âñå áîëåå øèðîêî, è êîãäà-íèáóäü ñòàíåò
ñòàíäàðòîì, íî ïîêà ÷òî îíà âñòðå÷àåòñÿ ãîðàçäî ðåæå, ÷åì ANSI.
Èìåþòñÿ ñëåäóþùèå ñòðîêîâûå òèïû äàííûõ:
ShortString – êîðîòêàÿ ñòðîêà èç
ANSI ñèìâîëîâ. Êîëè÷åñòâî ñèìâîëîâ ìîæåò áûòü îò 0 äî 255. Èíûìè ñëîâàìè,
ñòðîêó äëèíîé áîëåå 255 ñèìâîëîâ â ShortString çàïèñàòü íåëüçÿ.
LongString – äëèííàÿ ñòðîêà èç
ANSI ñèìâîëîâ. Äëèíà ñòðîêè çäåñü ïî÷òè íå îãðàíè÷åíà, â îäíó ïåðåìåííóþ
òàêîãî òèïà ìîæíî çàïèñàòü òåêñòîâûé ôàéë ñ ðîìàíîì "Âîéíà è ìèð".
Ýòîò òèï èñïîëüçóåòñÿ ïî óìîë÷àíèþ, òî åñòü, êîãäà ìû óêàçûâàåì òèï String, ïîäðàçóìåâàåòñÿ èìåííî
ýòîò òèï äàííûõ. Ñ íèì íàì ÷àùå âñåãî è ïðèäåòñÿ ðàáîòàòü.
WideString – äëèííàÿ ñòðîêà èç
UNICODE ñèìâîëîâ. Îò LongString îòëè÷àåòñÿ òîëüêî òåì, ÷òî èñïîëüçóåò èíóþ òàáëèöó ñèìâîëîâ.
Ñóùåñòâóåò åùå îäèí òèï ñòðîê – PChar. Ýòîò òèï ðàáîòàåò ñ
ïðîöåññîðîì ñîâåðøåííî èíà÷å, ÷åì ïðåäûäóùèå òèïû ñòðîê. Îí î÷åíü íåóäîáåí â
èñïîëüçîâàíèè è îñòàëñÿ äëÿ ñîâìåñòèìîñòè ñ ïðîãðàììàìè ñòàðûõ âåðñèé. Êðîìå
òîãî, âñòðîåííûå â Windows ôóíêöèè ðàáîòàþò èìåííî ñ òàêèì òèïîì äàííûõ,
ïîýòîìó åãî âñå æå ïðèäåòñÿ èñïîëüçîâàòü. Êîãäà ìû íà÷íåì ðàáîòàòü ñ ýòèìè
ôóíêöèÿìè, ðàçáåðåì ýòîò òèï ïîäðîáíåé.
Ïðîãðàììèñòó ïðèõîäèòñÿ ðàáîòàòü íå òîëüêî
ñî ñòðîêàìè, íî è ñ îòäåëüíûìè ñèìâîëàìè. Ñèìâîë – ýòî ëþáàÿ áóêâà, öèôðà,
àðèôìåòè÷åñêèé çíàê, çíàêè ïðåïèíàíèÿ èëè ïðîáåë. Êðîìå òîãî, ñóùåñòâóþò
ñïåöèàëüíûå ñèìâîëû, íàïðèìåð, ñèìâîë ïåðåõîäà íà íîâóþ ñòðîêó. Delphi
ïîääåðæèâàåò äâà òèïà ñèìâîëüíûõ äàííûõ:
AnsiChar – ñèìâîë ANSI
òàáëèöû. Èñïîëüçóåòñÿ ïî óìîë÷àíèþ, òî åñòü, êîãäà ìû óêàçûâàåì òèï Char, ïîäðàçóìåâàåì èìåííî
ýòîò òèï.
WideChar – ñèìâîë UNICODE
òàáëèöû. Ðàçíèöà ìåæäó íèìè òàêàÿ æå, êàê è ó ñòðîê ýòèõ òèïîâ.
Êàê è â ñëó÷àå ñî ñòðîêàìè, ïðîãðàììèñò
îáû÷íî îáúÿâëÿåò òèï Char, ÷òî ñîîòâåòñòâóåò òèïó AnsiChar.
Ëîãè÷åñêèé òèï äàííûõ èñïîëüçóåòñÿ â
óñëîâíûõ âûðàæåíèÿõ. Îí íåîáõîäèì äëÿ ñîçäàíèÿ ëîãèêè ïðîãðàììû. Óñëîâíîå
âûðàæåíèå ïðîâåðÿåò – ñîîòâåòñòâóåò ëè äåéñòâèòåëüíîñòü çàäàííîìó óñëîâèþ? Åñëè
ñîîòâåòñòâóåò, òî âûðàæåíèå âîçâðàùàåò ðåçóëüòàò True (Èñòèíà). Åñëè íå ñîîòâåòñòâóåò, òî
âîçâðàùàåòñÿ False (Ëîæü). Òàêèì îáðàçîì, ëîãè÷åñêèé òèï äàííûõ ìîæåò èìåòü òîëüêî îäíî èç
äâóõ ýòèõ çíà÷åíèé.
Boolean – ëîãè÷åñêèé òèï
äàííûõ.
 òàáëèöå 4.1 ïðèâåäåíû îïåðàíäû, ñ
ïîìîùüþ êîòîðûõ ôîðìèðóþò ëîãè÷åñêèå âûðàæåíèÿ:
Ëîãè÷åñêàÿ îïåðàöèÿ |
Îïèñàíèå |
Ëîãè÷åñêàÿ îïåðàöèÿ |
Îïèñàíèå |
= |
Ðàâíî |
>= |
Áîëüøå èëè ðàâíî |
> |
Áîëüøå |
<= |
Ìåíüøå èëè ðàâíî |
< |
Ìåíüøå |
<> |
Íå ðàâíî |
== |
Òî÷íîå ðàâíî |
Ïðåäïîëîæèì, ó íàñ åñòü äâà ÷èñëà, è íóæíî
ïðîâåðèòü èõ íà ðàâåíñòâî. Ýòè ÷èñëà õðàíÿòñÿ â ïåðåìåííûõ öåëîãî òèïà a è b. Òîãäà âûðàæåíèå
ñðàâíåíèÿ áóäåò âûãëÿäåòü òàê:
a = b;
Åñëè â îáîèõ ïåðåìåííûõ õðàíèòñÿ îäíî è òî
æå çíà÷åíèå, òî ðåçóëüòàòîì òàêîãî ñðàâíåíèÿ áóäåò True, èíà÷å – False.
 ÿçûêå ïðîãðàììèðîâàíèÿ Delphi, êàê è â
äðóãèõ ÿçûêàõ, ñóùåñòâóþò ïðîãðàììíûå ñêîáêè, ïîêàçûâàþùèå íà÷àëî è
êîíåö êàêîãî-ëèáî áëîêà êîäà. Ýòè ñêîáêè èìåþò âèä
Begin
//áëîê êîäà
end;
Îáðàòèòå âíèìàíèå, ÷òî ïîñëå ñëîâà Begin òî÷êà ñ çàïÿòîé íå
ñòàâèòñÿ. Ýòè ïðîãðàììíûå ñêîáêè îáÿçàòåëüíû äëÿ êàæäîé ïðîöåäóðû èëè ôóíêöèè,
äàæå åñëè îíè ñîäåðæàò òîëüêî îäíó êîìàíäó. Îäíàêî ýòè æå ñêîáêè ÷àñòî
ïðèìåíÿþòñÿ â óïðàâëÿþùèõ êîíñòðóêöèÿõ èëè öèêëàõ. Öèêëû, êàê è óïðàâëÿþùèå
êîíñòðóêöèè, ðàáîòàþò òîëüêî ñ îäíèì îïåðàòîðîì (êîìàíäîé). À ÷òî, åñëè â ýòîì
ìåñòå òðåáóåòñÿ èñïîëüçîâàòü áîëåå îäíîãî îïåðàòîðà? Òóò íà ïîìîùü ïðèõîäÿò ýòè
ñàìûå ïðîãðàììíûå ñêîáêè. Âåñü áëîê êîäà, ñêîëüêî áû êîìàíä òàì íå áûëî,
çàêëþ÷åííûé ìåæäó Begin è End âîñïðèíèìàåòñÿ, êàê îäèí îïåðàòîð. Ìû íå ðàç áóäåì èñïîëüçîâàòü ýòè
ñêîáêè.
 ïðåäûäóùèõ ïðèìåðàõ íàì óæå ïðèõîäèëîñü
ïðèìåíÿòü ýòó êîíñòðóêöèþ íà ïðàêòèêå, òåïåðü ïðèøëî âðåìÿ ïîçíàêîìèòüñÿ ñ íåé
ïîáëèæå. Óïðàâëÿþùàÿ êîíñòðóêöèÿ if ÿâëÿåòñÿ îñíîâíîé êîíñòðóêöèåé, íà
êîòîðîé ñòðîèòñÿ ëîãèêà ïðîãðàììû. Ïðîñòåéøèé ñèíòàêñèñ ýòîé êîíñòðóêöèè
âûãëÿäèò òàê:
if óñëîâèå then
îïåðàòîð;
Êòî çíàêîì ñ àíãëèéñêèì ÿçûêîì, óæå
óõâàòèë ñóòü ýòîé êîíñòðóêöèè. Íà ðóññêèé ÿçûê ýòî âûðàæåíèå ìîæíî ïåðåâåñòè
òàê:
åñëè óñëîâèå òî
îïåðàòîð;
Äðóãèìè ñëîâàìè, åñëè êàêîå-òî çàäàííîå
óñëîâèå âåðíî, òî âûïîëíÿåòñÿ óêàçàííûé îïåðàòîð. Èíà÷å ýòîò îïåðàòîð íå
âûïîëíÿåòñÿ.
×àñòî îäíîãî îïåðàòîðà áûâàåò
íåäîñòàòî÷íî, òîãäà èñïîëüçóþò ïðîãðàììíûå ñêîáêè:
if óñëîâèå then begin
Îïåðàòîð 1;
Îïåðàòîð 2;
...
Îïåðàòîð n;
end;
Îïåðàòîðû, çàêëþ÷åííûå â ïðîãðàììíûå
ñêîáêè begin .. end âîñïðèíèìàþòñÿ, êàê åäèíûé îïåðàòîð. Èíîãäà è ýòîãî áûâàåò íåäîñòàòî÷íî.
×òî, åñëè ïî ëîãèêå ïðîãðàììû òðåáóåòñÿ âûïîëíèòü îäèí îïåðàòîð, åñëè óñëîâèå
âåðíî, è äðóãîé, åñëè îíî íåâåðíî? Òóò ïðèõîäèò íà ïîìîùü ðàñøèðåííàÿ
êîíñòðóêöèÿ:
if óñëîâèå then
îïåðàòîð 1
else îïåðàòîð2;
Êàê âèäíî èç ñèíòàêñèñà, åñëè óêàçàííîå
óñëîâèå èñòèííî, òî âûïîëíèòñÿ îïåðàòîð 1. Èíà÷å âûïîëíèòñÿ îïåðàòîð 2. Åùå
îäíî ïðàâèëî, êîòîðîå ñëåäóåò çàïîìíèòü: ïåðåä ñëîâîì else òî÷êà ñ çàïÿòîé íå
ñòàâèòñÿ!
Êîíå÷íî æå, ñ ïîìîùüþ ïðîãðàììíûõ ñêîáîê
ìîæíî ðàñøèðèòü è ýòó êîíñòðóêöèþ:
if óñëîâèå then begin
Îïåðàòîð 1;
…
Îïåðàòîð n;
end
else begin
Îïåðàòîð 1;
…
Îïåðàòîð n;
end;
Ñåé÷àñ ñàìîå âðåìÿ óïîìÿíóòü î
êëàññè÷åñêèõ ñòèëÿõ ïðîãðàììèðîâàíèÿ. Ìû óæå ãîâîðèëè, ÷òî õîðîøèé ñòèëü ïðîãðàììèðîâàíèÿ
ïîäðàçóìåâàåò êàæäûé îòäåëüíûé îïåðàòîð ïèñàòü íà ñâîåé ñòðîêå, ïðèìåíÿòü
îòñòóïû.  ëèòåðàòóðå ïî ïðîãðàììèðîâàíèþ ÷àñòî âñòðå÷àåòñÿ äâà êëàññè÷åñêèõ
ñòèëÿ. Îäèí ñòèëü âûãëÿäèò òàê:
if óñëîâèå then
begin
Îïåðàòîð 1;
…
Îïåðàòîð n;
end;
Òî åñòü, ñëîâî begin ïèøåòñÿ íà îòäåëüíîé
ñòðîêå. Äðóãîé ñòèëü âûãëÿäèò èíà÷å:
if óñëîâèå then begin
Îïåðàòîð 1;
…
Îïåðàòîð n;
end;
Îáà ýòè ñòèëÿ ÿâëÿþòñÿ êëàññè÷åñêèìè,
êàêîé èç íèõ ïðèìåíÿòü – äåëî âêóñà. Íà ýòîé ëåêöèè áóäåò èñïîëüçîâàòüñÿ âòîðîé
ñòèëü.
Îäíàêî è ýòî åùå íå âñå. Â ïðåäûäóùåì
ïðèìåðå ìû ðàññìàòðèâàëè òîëüêî îäíî óñëîâèå. Åñëè îíî âåðíî, òî âûïîëíÿëñÿ
îäèí îïåðàòîð, à åñëè íåò – äðóãîé. À ÷òî, åñëè ïî ëîãèêå ïðîãðàììû òðåáóåòñÿ
ïðîâåðèòü áîëåå, ÷åì îäíî óñëîâèå? È ñíîâà ìû ìîæåì ðàñøèðèòü ýòó êîíñòðóêöèþ.
Âçãëÿíèòå íà ñèíòàêñèñ:
if óñëîâèå 1 then
îïåðàòîð 1
else if óñëîâèå 2 then
îïåðàòîð 2
else îïåðàòîð 3;
Çäåñü, åñëè óñëîâèå 1 áóäåò âåðíî,
êîíñòðóêöèÿ âûïîëíÿåò îïåðàòîð 1 è çàâåðøàåò ðàáîòó. Åñëè ýòî óñëîâèå íåâåðíî,
ïðîâåðÿåòñÿ óñëîâèå 2. Åñëè óñëîâèå 2 âåðíî, òî âûïîëíÿåòñÿ îïåðàòîð 2, è
êîíñòðóêöèÿ çàâåðøàåò ðàáîòó. Åñëè æå îáà óñëîâèÿ íåâåðíû, âûïîëíÿåòñÿ îïåðàòîð
3. Ðàñøèðåíèé else if â òàêóþ êîíñòðóêöèþ ìîæíî âñòàâëÿòü ñêîëüêî óãîäíî.
Äàâàéòå òåïåðü ïðîàíàëèçèðóåì ÷àñòü êîäà
èç ïðèìåðà ïðîøëîé ëåêöèè.
If Perem2 = 0
then begin
Soobshenie;
Edit3.Text
:= '0';
end
else begin
Perem3 :=
Delenie(Perem1, Perem2);
Edit3.Text :=
FloatToStr(Perem3);
end;
Âàì óæå äîëæíî áûòü ïîíÿòíî, ÷òî åñëè
Perem2 äåéñòâèòåëüíî ðàâíà 0, òî âûïîëíèòñÿ ïåðâûé áëîê êîäà. Èíà÷å áóäåò
âûïîëíåí âòîðîé áëîê êîäà.
Åùå îäèí ìîùíûé èíñòðóìåíò â Delphi –
öèêëû. Ýòè öèêëû âûïîëíÿþò îïåðàòîð èëè áëîê îïåðàòîðîâ çàäàííîå êîëè÷åñòâî
ðàç. Ñèíòàêñèñ öèêëà for ñëåäóþùèé:
for ñ÷åò÷èê :=
íà÷_çíà÷åíèå to êîí_çíà÷åíèå do îïåðàòîð;
 ðàñøèðåííîì âàðèàíòå ñèíòàêñèñ òàêîé:
for ñ÷åò÷èê :=
íà÷_çíà÷åíèå to êîí_çíà÷åíèå do begin
îïåðàòîð 1;
îïåðàòîð 2;
…
îïåðàòîð n;
end;
Çäåñü:
 êà÷åñòâå ñ÷åò÷èêîâ èñïîëüçóþò îáû÷íî
öåëûå ïåðåìåííûå. ×òîáû íå òðàòèòü ïîïóñòó îïåðàòèâíóþ ïàìÿòü, ñ÷åò÷èêàì
íàçíà÷àþò òèï Byte èëè Word, â çàâèñèìîñòè îò òîãî, êàêîå çíà÷åíèå ìîæåò îêàçàòüñÿ ó êîíå÷íîãî
çíà÷åíèÿ.
 ñàìîì íà÷àëå ñ÷åò÷èê áóäåò ðàâåí
íà÷àëüíîìó çíà÷åíèþ. Êîãäà âûïîëíÿòñÿ âñå óêàçàííûå îïåðàòîðû áëîêà, óïðàâëåíèå
âíîâü âåðíåòñÿ ê íà÷àëó öèêëà. Ñ÷åò÷èê óâåëè÷èòñÿ íà åäèíèöó, è öèêë áóäåò
âûïîëíåí ñíîâà. È òàê äàëåå, äî òåõ ïîð, ïîêà ñ÷åò÷èê íå ñòàíåò ðàâíûì
êîíå÷íîìó çíà÷åíèþ.
Äàâàéòå èçó÷èì öèêë for íà ïðèìåðå. Ïóñòü íàì
íóæíî ïåðåâåñòè òåìïåðàòóðó îò 0 äî 100 ãðàäóñîâ èç øêàëû Öåëüñèÿ â øêàëó
Ôàðåíãåéòà. Ïðàâèëà çäåñü ïðîñòû: íóæíî âçÿòü òåìïåðàòóðó ïî Öåëüñèþ, óìíîæèòü
åå íà 9/5 è ê ðåçóëüòàòó ïðèáàâèòü 32. Ñàì ðåçóëüòàò íóæíî áóäåò ïðîãðàììíî
äîáàâèòü â êîìïîíåíò Memo â âèäå ñòðîêè:
"x ãðàäóñîâ ïî Öåëüñèþ = y ãðàäóñîâ
ïî Ôàðåíãåéòó"
Ñîçäàéòå íîâîå ïðèëîæåíèå.
Ñðàçó æå ñâîéñòâó Name ôîðìû ïðèñâîéòå èìÿ
fName. Â ñâîéñòâå Caption íàïèøèòå "Ïåðåâîä òåìïåðàòóð èç Öåëüñèÿ â Ôàðåíãåéòû". Ñîõðàíèòå
ïðîåêò â íîâóþ ïàïêó.
 âåðõíþþ ÷àñòü îêíà ïîìåñòèòå êîìïîíåíò Memo è â ñâîéñòâå Lines óäàëèòå èç íåãî âåñü
òåêñò. Ðàñòÿíèòå Memo ïî ôîðìå, êàê íà ðèñóíêå 4.1:
Ðèñ. 4.1. Âíåøíèé âèä ïðèëîæåíèÿ
Íèæå Memo äîáàâüòå êíîïêó Button, â ñâîéñòâå Caption êîòîðîé óêàæèòå
"Ðàñ÷åò òåìïåðàòóð".
Òåïåðü ñîçäàäèì îáðàáîò÷èê íàæàòèÿ íà
êíîïêó, äâàæäû ùåëêíóâ ïî íåé. Ïðîöåäóðà âûãëÿäèò òàê:
procedure TfName.Button1Click(Sender: TObject);
var
i : Byte; //ñ÷åò÷èê
begin
for i := 0 to
100 do //äåëàåì îò 0 äî 100
Memo1.Lines.Add(IntToStr(i) + ' ãðàäóñîâ Öåëüñèÿ = ' +
FloatToStr(CelToFar(i)) + ' Ôàðåíãåéòà');
end;
Çäåñü ñëåäóåò îáðàòèòü âíèìàíèå íà
ïîñëåäíèé îïåðàòîð. Îïåðàòîð
Memo1.Lines.Add('Ñòðîêà');
äîáàâëÿåò ñòðîêó 'Ñòðîêà' â êîìïîíåíò
Memo. Ïðè ýòîì, â êà÷åñòâå ñòðîêè, ìû èñïîëüçîâàëè ñëîæíîå âûðàæåíèå,
ôîðìèðóþùåå ñòðîêó èç ðàçíûõ ÷àñòåé. Ðàçáåðåì êàæäóþ ÷àñòü ïîäðîáíî.
IntToStr(i)
â êà÷åñòâå ðåçóëüòàòà âåðíåò çíà÷åíèå i (ñ÷åò÷èêà) â âèäå
ñòðîêè. Êàê óæå ãîâîðèëîñü, ýòî çíà÷åíèå çà êàæäûé ïðîõîä öèêëà áóäåò
óâåëè÷èâàòüñÿ íà åäèíèöó. Òî åñòü, â ïåðâîì ïðîõîäå i áóäåò ðàâíà 0, âî
âòîðîì 1, è òàê äàëåå, ïîêà íå ñòàíåò ðàâíà 100. Âûïîëíèâ îïåðàòîð â ïîñëåäíèé
ðàç, öèêë ïðåêðàòèò ñâîþ ðàáîòó. À ìû êàæäûé ðàç áóäåì ïîëó÷àòü ýòî ÷èñëî â
âèäå ñòðîêè.
Äàëåå ó íàñ èäåò ñòðîêà
' ãðàäóñîâ Öåëüñèÿ = '
Ñ ïîìîùüþ çíàêà "+" (çíàê
êîíêàòåíàöèè) ìû äîáàâëÿåì îäíó ñòðîêó ê äðóãîé. Â ðåçóëüòàòå, ïðè ïåðâîì
ïðîõîäå ìû ïîëó÷èì ñòðîêó
'0 ãðàäóñîâ Öåëüñèÿ = '
Îáðàòèòå âíèìàíèå, ÷òî âî âòîðîé ñòðîêå â
íà÷àëå è â êîíöå åñòü ïðîáåëû. Áåç ïðîáåëà ñòðîêè ñîëüþòñÿ: "0ãðàäóñîâ
Öåëüñèÿ =", à ýòî íåêðàñèâî.
Äàëåå ìû èìååì ñòðîêó
FloatToStr(CelToFar(i))
Ôóíêöèÿ FloatToStr() âîçâðàùàåò âåùåñòâåííîå
÷èñëî â âèäå ñòðîêè.  êà÷åñòâå âåùåñòâåííîãî ÷èñëà ìû èñïîëüçîâàëè âûçîâ
ôóíêöèè CelToFar(i), ïåðåäàâ åé â êà÷åñòâå ïàðàìåòðà öåëîå ÷èñëî – òåêóùåå çíà÷åíèå ñ÷åò÷èêà.
Ôóíêöèÿ èñïîëüçóåò ýòî ÷èñëî, êàê ãðàäóñ Öåëüñèÿ, ïðåîáðàçóåò åãî â Ôàðåíãåéò è
âåðíåò çíà÷åíèå â âèäå âåùåñòâåííîãî ÷èñëà. Ýòîé ôóíêöèè ïîêà åùå íå
ñóùåñòâóåò, ìû íàïèøåì åå ïîçæå.  ðåçóëüòàòå ìû ïîëó÷èì ñòðîêó "0
ãðàäóñîâ Öåëüñèÿ = 32". Äàëåå ìû äîáàâëÿåì åùå ñòðîêó
' Ôàðåíãåéòà'
â ðåçóëüòàòå ÷åãî ïîëó÷àåì ãîòîâóþ ñòðîêó
"0 ãðàäóñîâ Öåëüñèÿ = 32 Ôàðåíãåéòà". È óæå ãîòîâóþ ñòðîêó ñ ïîìîùüþ
ìåòîäà Add() ìû äîáàâëÿåì â êîìïîíåíò Memo.
Åùå îäíî ïðàâèëî, êîòîðîå ìîæíî óâèäåòü èç
ýòîãî ïðèìåðà – åñëè îïåðàòîð ïîëó÷àåòñÿ äëèííûì, åãî ìîæíî ïåðåíåñòè íà
ñëåäóþùóþ ñòðîêó ïîñëå àðèôìåòè÷åñêîãî çíàêà èëè çàïÿòîé.
Ôóíêöèþ CelToFar() íóæíî áóäåò ñîçäàòü âûøå íàøåé ïðîöåäóðû:
function CelToFar(a : Byte): Real;
begin
Result := a * 9/5 + 32;
end;
Ôóíêöèÿ ïðèíèìàåò ïàðàìåòð â âèäå öåëîãî
÷èñëà, ïåðåâîäèò åãî â Ôàðåíãåéòû è âîçâðàùàåò â êà÷åñòâå ðåçóëüòàòà, êàê
âåùåñòâåííîå ÷èñëî. Íàøà ïðîãðàììà ãîòîâà. Ñîõðàíèòå åå, ñêîìïèëèðóéòå è
ïîñìîòðèòå, êàê îíà ðàáîòàåò. Åñëè ó âàñ íå óìåùàåòñÿ âåñü ïîëó÷åííûé òåêñò â Memo, äîáàâüòå â êîìïîíåíò
âåðòèêàëüíóþ ïîëîñó ïðîêðóòêè.