Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive
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 + " год"; }
- Page 1 and 2: Федеральное агентс
- Page 3 and 4: Оглавление Предисл
- Page 5 and 6: 5 Предисловие Напра
- Page 7 and 8: 7 Введение в процед
- Page 9 and 10: 9 которые использую
- Page 11 and 12: 11 [Модификатор] [тип
- Page 13 and 14: 13 В ответ на вызов к
- Page 15 and 16: 15 Данные в определе
- Page 17 and 18: 17 Здесь при выборе
- Page 19 and 20: 19 void _ _fastcall TForm1::MyClick
- Page 21 and 22: 21 фигурные скобки.
- Page 23 and 24: 23 Типы указываются
- Page 25 and 26: 25 Простые оператор
- Page 27 and 28: Метод IsDelimiter (AnsiString&
- Page 29 and 30: 29 Variant v = Edit3->Text; Label3-
- Page 31 and 32: 31 6. Как передаются
- Page 33 and 34: Условный оператор 3
- Page 35: } 35 case 4: day = "Четверг"
- Page 39 and 40: 39 В следующем приме
- Page 41 and 42: 41 Число байтов, выд
- Page 43 and 44: Перестановки и сор
- Page 45 and 46: } 45 for (int i=1; i=0 + 1; - -j) i
- Page 47 and 48: 47 нять, создавать с
- Page 49 and 50: lb->LoadFromFile (“1.txt”); Sho
- Page 51 and 52: 51 При передаче в фу
- Page 53 and 54: 53 } // 0 1 Иванов 2 Петр
- Page 55 and 56: 55 void Info (TList *vl) { AnsiStri
- Page 57 and 58: Allocate (k[0], k[1], book1); Alloc
- Page 59 and 60: 59 else ShowMessage ("Такой ч
- Page 61 and 62: 61 for (rj=n.rbegin (); rj!=n.rend
- Page 63 and 64: int i, d[] = { 5, 2, 3, 8, 3, 1, 3
- Page 65 and 66: 22. Каков принцип де
- Page 67 and 68: StringGrid1->Cells[0][j] = myS[j].a
- Page 69 and 70: void Files2 () { AnsiString from =
- Page 71 and 72: void _ _fastcall TForm1::DelFromFil
- Page 73 and 74: 73 Фрагмент обработ
- Page 75 and 76: 75 отказ в доступе, EM
- Page 77 and 78: 77 //myApplication.cpp #include "my
- Page 79 and 80: 79 Для подключения н
- Page 81 and 82: 81 Управление созда
- Page 83 and 84: 83 Контрольные вопр
- Page 85 and 86: 85 для построения ма
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 />
}