Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
13.01.2015 Views

void Fors1 () { char ch; // ch – переменная-счетчик цикла AnsiString alphabet; for (ch='A'; chLabel1–>Caption = alphabet; } 36 Во втором примере для извлечения символов в операциях сравнения строк и формирования строки символов алфавита служит метод operator [] класса AnsiString. Этот метод возвращает символ строки, соответствующий указанному в качестве аргумента порядковому номеру. void Fors2 () { AnsiString chars="", aa, bb; aa = MyForm–>Edit2–>Text; bb = MyForm–>Edit3–>Text; char a=aa.operator [] (1); char b=bb.operator [] (1); for (char k=a; kLabel1–>Caption = chars; } Для досрочного завершения цикла в его тело включают операторы перехода. При отсутствии выражения условия или итерации образуются «вечные циклы», например for (;;). Операторы повторения Операторы повторения предназначены для организации вычислительных процессов, повторяющихся заранее неизвестное число раз. Различают операторы повторения с предусловием и с постусловием: while (истинноеЛогическоеВыражение ) Выражение… do Выражение… while (истинноеЛогическоеВыражение ); Значение логического выражения обычно меняется в теле оператора в ходе выполнения выражений. В противном случае образуются «вечные циклы» (endless repetition) типа while (1) или do while (!0). До начала работы оператора с предусловием должно быть сформировано истинное логическое выражение. Для досрочного завершения выполнения операторов повторения в выражениях размещаются операторы перехода. Примеры:

37 void Whiles1 () { int temp = 10, count = 1; AnsiString result = MyForm–>Label1–>Caption; while (2 * temp > 3 * count++) result = result + IntToStr (temp––) + ' '; // 10 9 8 7 MyForm–>Label1–>Caption = result; } Оператор повторения с постусловием относится к числу наименее надежных управляющих структур, так как условие его завершения проверяется только после начала работы. void Whiles2 () { int x = 9; do MyForm–>Label1–>Caption = MyForm–>Label1–>Caption + IntToStr (x––) + " в квадрате равно " + IntToStr (x * x) + '\n'; while (x); } А вот пример «вечного цикла», выход из которого возможен только с помощью оператора перехода: void Whiles3 () { int leapYear, year; TLabel *lb = MyForm–>Label1; try { year = StrToInt (MyForm–>Edit1–>Text); } catch (...) { lb–>Caption = "Вводите годы целыми числами"; return; } while (1) { if (year > 0) { if ((year % 100) == 0) leapYear = ((year % 400) == 0); else leapYear = ((year % 4) == 0); if (leapYear) lb –>Caption = " – високосный"; else lb –>Caption = " – не високосный"; break; } else { lb –>Caption = " – неверный"; break; } } lb –>Caption = IntToStr (year) + lb –>Caption + " год"; }

37<br />

void Whiles1 () {<br />

int temp = 10, count = 1;<br />

AnsiString result = MyForm–>Label1–>Caption;<br />

while (2 * temp > 3 * count++) result = result + IntToStr (temp––) + ' '; // 10 9 8 7<br />

MyForm–>Label1–>Caption = result;<br />

}<br />

Оператор повторения с постусловием относится к числу <strong>на</strong>именее <strong>на</strong>дежных<br />

управляющих структур, так как условие его завершения проверяется<br />

только после <strong>на</strong>чала работы.<br />

void Whiles2 () {<br />

int x = 9;<br />

do<br />

MyForm–>Label1–>Caption = MyForm–>Label1–>Caption +<br />

IntToStr (x––) + " в квадрате равно " + IntToStr (x * x) + '\n';<br />

while (x);<br />

}<br />

А вот пример «вечного цикла», выход из которого возможен только с<br />

помощью оператора перехода:<br />

void Whiles3 () {<br />

int leapYear, year;<br />

TLabel *lb = MyForm–>Label1;<br />

try { year = StrToInt (MyForm–>Edit1–>Text);<br />

} catch (...) {<br />

lb–>Caption = "Вводите годы целыми числами"; return;<br />

}<br />

while (1) {<br />

if (year > 0) {<br />

if ((year % 100) == 0) leapYear = ((year % 400) == 0);<br />

else leapYear = ((year % 4) == 0);<br />

if (leapYear) lb –>Caption = " – високосный";<br />

else lb –>Caption = " – не високосный";<br />

break;<br />

}<br />

else { lb –>Caption = " – неверный";<br />

break;<br />

}<br />

} lb –>Caption = IntToStr (year) + lb –>Caption + " год";<br />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!