Òåìà 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 ïðèâåäåíû îïåðàíäû, ñ ïîìîùüþ êîòîðûõ ôîðìèðóþò ëîãè÷åñêèå âûðàæåíèÿ:

Òàáëèöà 4.1. Ëîãè÷åñêèå îïåðàíäû

Ëîãè÷åñêàÿ îïåðàöèÿ

Îïèñàíèå

Ëîãè÷åñêàÿ îïåðàöèÿ

Îïèñàíèå

=

Ðàâíî

>=

Áîëüøå èëè ðàâíî

> 

Áîëüøå

<=

Ìåíüøå èëè ðàâíî

< 

Ìåíüøå

<> 

Íå ðàâíî

==

Òî÷íîå ðàâíî

Ïðåäïîëîæèì, ó íàñ åñòü äâà ÷èñëà, è íóæíî ïðîâåðèòü èõ íà ðàâåíñòâî. Ýòè ÷èñëà õðàíÿòñÿ â ïåðåìåííûõ öåëîãî òèïà a è b. Òîãäà âûðàæåíèå ñðàâíåíèÿ áóäåò âûãëÿäåòü òàê:

a = b;

Åñëè â îáîèõ ïåðåìåííûõ õðàíèòñÿ îäíî è òî æå çíà÷åíèå, òî ðåçóëüòàòîì òàêîãî ñðàâíåíèÿ áóäåò True, èíà÷å – False.

Begin .. end

 ÿçûêå ïðîãðàììèðîâàíèÿ Delphi, êàê è â äðóãèõ ÿçûêàõ, ñóùåñòâóþò ïðîãðàììíûå ñêîáêè, ïîêàçûâàþùèå íà÷àëî è êîíåö êàêîãî-ëèáî áëîêà êîäà. Ýòè ñêîáêè èìåþò âèä

Begin

   //áëîê êîäà

end;

Îáðàòèòå âíèìàíèå, ÷òî ïîñëå ñëîâà Begin òî÷êà ñ çàïÿòîé íå ñòàâèòñÿ. Ýòè ïðîãðàììíûå ñêîáêè îáÿçàòåëüíû äëÿ êàæäîé ïðîöåäóðû èëè ôóíêöèè, äàæå åñëè îíè ñîäåðæàò òîëüêî îäíó êîìàíäó. Îäíàêî ýòè æå ñêîáêè ÷àñòî ïðèìåíÿþòñÿ â óïðàâëÿþùèõ êîíñòðóêöèÿõ èëè öèêëàõ. Öèêëû, êàê è óïðàâëÿþùèå êîíñòðóêöèè, ðàáîòàþò òîëüêî ñ îäíèì îïåðàòîðîì (êîìàíäîé). À ÷òî, åñëè â ýòîì ìåñòå òðåáóåòñÿ èñïîëüçîâàòü áîëåå îäíîãî îïåðàòîðà? Òóò íà ïîìîùü ïðèõîäÿò ýòè ñàìûå ïðîãðàììíûå ñêîáêè. Âåñü áëîê êîäà, ñêîëüêî áû êîìàíä òàì íå áûëî, çàêëþ÷åííûé ìåæäó Begin è End âîñïðèíèìàåòñÿ, êàê îäèí îïåðàòîð. Ìû íå ðàç áóäåì èñïîëüçîâàòü ýòè ñêîáêè.

Óïðàâëÿþùàÿ êîíñòðóêöèÿ if

 ïðåäûäóùèõ ïðèìåðàõ íàì óæå ïðèõîäèëîñü ïðèìåíÿòü ýòó êîíñòðóêöèþ íà ïðàêòèêå, òåïåðü ïðèøëî âðåìÿ ïîçíàêîìèòüñÿ ñ íåé ïîáëèæå. Óïðàâëÿþùàÿ êîíñòðóêöèÿ 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, òî âûïîëíèòñÿ ïåðâûé áëîê êîäà. Èíà÷å áóäåò âûïîëíåí âòîðîé áëîê êîäà.

Öèêë for

Åùå îäèí ìîùíûé èíñòðóìåíò â 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, äîáàâüòå â êîìïîíåíò âåðòèêàëüíóþ ïîëîñó ïðîêðóòêè.