Внутри цикла условие должно изменяться либо должно быть предусмотрено прерывание цикла в какой-либо момент.
Прерывание цикла.
Пример:
For (int i=9000; i>0; i--)
{ if (A[i]=5)
}
}
Просмотр с последнего элемента. Ищет элемент, значения = 5, заменяет на 100 и цикл прервется.
Пример:
int main()
{ int a,b;
for (a=1,b=0; a<100; b+="a,a++)" { if (b%2) continue; ... /* обработка четных сумм */ } return 0; }
Когда сумма чисел от 1 до а становится нечетной, оператор continue передает управление на очередную итерацию цикла for, не выполняя операторы обработки четных сумм.
Пример:
void prov (int a, double b)
{ double c;
if (a<3) return; else if (b>10) return;
else { c=a+b;
if ((2*c-b)==11) return;
}
}
В этом примере оператор return используется для выхода из функции в случае выполнения одного из проверяемых условий. В отличие от оператора Break оператор Return, не только прерывает цикл, но и функцию, в которой он расположен.
СТРУКТУРЫ.
Операция → обеспечивает доступ к элементу структуры через указатель на объект.
Пример:
TPers = & TPers
PPers →Sex = true;
Cамоадресуемые структуры:
Не редко в памяти надо динамически размещать последовательность структур, как бы формирую некий фрагмент БД, предназначенный для операторного анализа и обработки.
Struct TPers
{AnsiString FIO;
bool Sex;
int Voz;
TPers * Pr;
}
Пример: пример формирования в памяти списка структур. Для этого надо 3 переменных:
TPers * Po = null; *Pnew; *Oold;
Вставка структур в список:
Pnew = new TPers; - выделяем память под новую структуру.
Pnew→ FIO = ‘Иванов И. И.’
Pnew→ Sex = true
…………………..
if (Po = = null) Po = Pnew; - проверяем Po на указание первой структуры.
Else Pold→Pr = Pnew;
Pold = Pnew;
Сформировав список в памяти его легко просматривать, проходя в цикле по указателям.
Проверяем не равно ли Pnew = Po
Pnew = Po;
While (Pnew !=null)
{Show Message (Pnew→ FIO);
Pnew = Pnew→Pr
}
Классы.
Это тип данных, определенный пользователем. В С++ имеется множество предопределенных классов (AnsiString). Класс должен быть объявлен до того, как будет объявлена хотя бы одна переменная этого класса.
published: // видны в инспекторе объектов и изменяемые <данные, свойства>
protected:// доступна только потомкам < данные, методы, свойства, события >
private:// доступна только в классе <данные, методы, свойства, события>
}
Если объявляемый класс не имеет предшественников, то список классов родителей вместе с предшествующим : - отпускается.
Пример:
{ public:
MyClass (Int=0);
Void SetA(int);
Int GetA(void);
Int Fa;
Protected:
}
int F(int);
Доступ можно получить только функция MyClass, SetA, GetA. Поля Fa и функция F – закрытые элементы.
Открытая функция MyClass с именем, совпадающим с именем класса – это конструктор класса, который должен инициализировать данные в момент создания объекта класса. Присутствие конструктора в объявлении класса не обязателен. При этом пользователь сам должен создать начальное значение данным элементам класса. Объявление данных элементов (полей) выглядит также как объявление переменных или объявление полей в структурах.
После того, как класс объявлен можно создать объекты этого класса.
Пример:
MyClass Мс, Мс10[10], * PMc
Создается объект Mc, объявленного выше класса MyClass, массив Мс10 из 10 объектов данного класса и указатель PMc на объект этого класса. Создание объектов класса простым объявлением переменных, возможно только в случае, если среда предков класса, нет классов библиотеки компонента С++. Если же такие предки есть, то создание указателя на объект этого класса возможно только операцией new/
Пример:
Class MyClass2: Tobject
{…}
MyClass * P2 = new MyClass2
ФУНКЦИИ - ЭЛЕМЕНТЫ, ДРУЖЕСТВЕННЫЕ ФУНКЦИИ,
КОНСТАНТНЫЕ ФУНКЦИИ.
Поля данных, исходя из принципа инкапсуляции всегда должны быть защищены от несанкционированного доступа. Доступ к ним как правило должен осуществляться только через эти функции, включающие методы чтения и записей полей. В этих функциях должна осуществляться проверка данных, чтобы не записать случайно в поля неверные данные.