В этом разделе предлагаются вопросы для самоконтроля и укрепления полученных знаний и приводится несколько упражнений, которые помогут закрепить ваши практические навыки. Попытайтесь самостоятельно ответить на вопросы теста и выполнить задания, а потом сверьте полученные результаты с ответами в приложении Г. Не приступайте к изучению материала следующей главы, если для вас остались неясными хотя бы некоторые из предложенных ниже вопросов.
1. Что представляет собой оператор прямого доступа и для чего он используется?
2. Что резервирует память — объявление или определение?
3. Объявление класса является его интерфейсом или выполнением?
4. Какова разница между открытыми (public) и закрытыми (private) данными- членами?
5. Могут ли функции-члены быть закрытыми?
6. Могут ли переменные-члены быть открытыми?
7. Если объявить два объекта класса Cat, могут ли они иметь различные значения их переменных-членов itsAge?
8. Нужно ли объявления класса завершать точкой с запятой? А определения методов класса?
9. Как бы выглядел заголовок функции-члена Meow класса Cat, которая не принимает никаких параметров и возвращает значение типа void?
10. Какая функция вызывается для выполнения инициализации класса?
1. Напишите программу, которая объявляет класс с именем Employee (Служащие) с такими переменными-членами: age (возраст), yearsOfService (стаж работы) и Salary (зарплата).
2. Перепишите класс Employee, чтобы сделать данные-члены закрытыми и обеспечить открытые методы доступа для чтения и установки всех данных-членов.
3. Напишите программу с использованием класса Employee, которая создает два объекта класса Employee; устанавливает данные-члены age, YearsOfService и Salary, а затем выводит их значения.
4. На основе программы из упражнения 3 создайте метод класса Employee, который сообщает, сколько тысяч долларов зарабатывает служащий, округляя ответ до 1 000 долларов.
5. Измените класс Employee так, чтобы можно было инициализировать данные-члены age, YearsOfService и Salary в процессе "создания" служащего.
6. Жучки: что неправильно в следующем объявлении?
class Square
{
public:
int Side;
}
7. Жучки: что весьма полезное отсутствует в следующем объявлении класса?
class Cat
{
int GetAge() const;
private:
int itsAge;
};
8. Жучки: какие три ошибки обнаружит компилятор в этом коде?
class TV
{
public:
void SetStation(int Station);
int GetStation() const;
private:
int itsStation;
};
main()
{
TV myTV;
myTV.itsStation = 9;
TV.SetStation(10);
TV myOtherTv(2);
}
Структура любой программы состоит из комбинации множества ветвлений и циклов. На четвертом занятии вы научились организовывать ветвление программы с помощью оператора if. Сегодня вы узнаете:
• Что такое циклы и как они используются
• Каковы методы организации циклов
• Как избежать чрезмерной вложенности конструкций if/else
Для решения ряда задач часто требуется многократное выполнение одних и тех же действий. На практике это реализуется с помощью рекурсивных (см. занятие 5) или итеративных алгоритмов. Суть итеративного процесса заключается в повторении последовательности операций нужное количество раз.
В те годы, когда программирование находилось еще на начальной стадии развития, использовались только небольшие по размеру и достаточно примитивные программы. Нельзя было назвать приятным и сам процесс их разработки. В таких программах циклы состояли из метки, последовательности команд и оператора безусловного перехода.
В C++ меткой называют идентификатор, за которым следует двоеточие (:). Метка всегда устанавливается перед оператором, на который необходимо будет передать управление. Для перехода на нужную метку используется оператор goto, за которым следует имя метки. Пример использования оператора goto приведен в листинге 7.1.
Листинг 7.1. Организация цикла с помощью оператора goto
1: // Листинг 7.1.
2: // Организация цикла с помощью goto
3:
4: #include
5:
6: int main()
7: {
8: int counter = 0; // инициализация счетчика
9: loop: counter++; // начало цикла
10: cout.<< "counter: " << counter << "\n";
11: if (counter < 5) // проверка значения
12: goto loop; // возвращение к началу
13:
14: cout << "Complete. Counter: " << counter << ".\n";
15: return 0;
16: }
Результат:
counter: 1
counter: 2
countor: 3
counter: 4
counter: 5
Complete. Counter: 5.
Анализ:В строке 8 переменная counter инициализируется нулевым значением. Метка loop: в строке 9 показывает начало цикла. На каждой итерации значение counter yвeличивaeтcя на единицу и выводится на экран. В строке 11 выполняется проверка значения переменной counter. Если оно меньше пяти, значит условие выполняется и управление передается оператору goto, в результате чего осуществляется переход на строку 9. Итеративный процесс выполняется до тех пор, пока значение переменной counter не достигнет пяти. После этого программа выходит за пределы цикла и на экран выводится окончательный результат.
Читать дальше