Читаем Освой самостоятельно С++ за 21 день. полностью

Многие программисты используют ключевое слово struct для классов, которые не имеют функций. Можно расценивать это как ностальгию по устаревшим структурам языка С, которые не могли иметь функций. Лично я считаю это ненужным и даже плохим стилем программирования. Ведь если сегодня данной структуре не нужны методы, то не исключено, что они могут понадобиться ей завтра. И тогда вам придется либо заменять этот тип классом, либо нарушать свое же правило и работать со структурой, которая "не брезгует" присутствием в ней методов.

Коллоквиум

В этом разделе предлагаются вопросы для самоконтроля и укрепления полученных знаний и приводится несколько упражнений, которые помогут закрепить ваши практические навыки. Попытайтесь самостоятельно ответить на вопросы теста и выполнить задания, а потом сверьте полученные результаты с ответами в приложении Г. Не приступайте к изучению материала следующей главы, если для вас остались неясными хотя бы некоторые из предложенных ниже вопросов.

Контрольные вопросы

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);

}

День 7-й. Циклы

Структура любой программы состоит из комбинации множества ветвлений и циклов. На четвертом занятии вы научились организовывать ветвление программы с помощью оператора if. Сегодня вы узнаете:

• Что такое циклы и как они используются

• Каковы методы организации циклов

• Как избежать чрезмерной вложенности конструкций if/else

Организация циклов

Для решения ряда задач часто требуется многократное выполнение одних и тех же действий. На практике это реализуется с помощью рекурсивных (см. занятие 5) или итеративных алгоритмов. Суть итеративного процесса заключается в повторении последовательности операций нужное количество раз.

История оператора goto

В те годы, когда программирование находилось еще на начальной стадии развития, использовались только небольшие по размеру и достаточно примитивные программы. Нельзя было назвать приятным и сам процесс их разработки. В таких программах циклы состояли из метки, последовательности команд и оператора безусловного перехода.

В 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.


Перейти на страницу:

Похожие книги

Сущность технологии СОМ. Библиотека программиста
Сущность технологии СОМ. Библиотека программиста

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования.

Дональд Бокс

Программирование, программы, базы данных / Программирование / Книги по IT