Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Упражнения. 1. Напишите программу, которая объявляет класс с именем Employee (Служащие) с такими переменными-членами: age (возраст)






 

1. Напишите программу, которая объявляет класс с именем Employee (Служащие) с такими переменными-членами: age (возраст), yearsOfService (стаж работы) и Salary (зарплата).

class Employee

{

int Age;

int YearsOfService;

int Salary;

};

2. Перепишите класс Employee, чтобы сделать данные-члены закрытыми и обеспечить открытые методы доступа для чтения и установки всех данных-членов.

class Employee

{

public:

int GetAge() const;

void SetAge(int age);

int GetYearsOfService() const;

void SetYearsOfService(int years);

int GetSalary() const;

void SetSalary(int salary);

private:

int Age;

int YearsOfService;

int Salary;

};

3. Напишите программу с использованием класса Employee, которая создает два объекта класса Employee; устанавливает данные-члены age, YearsOfService и Salary, а затем выводит их значения.

int main()

{

Employee John;

Employee Sally;

John.SetAge(30);

John.SetYearsOfService(5);

John.SetSalary(50000);

Sally.SetAge(32);

Sally.SetYearsOfService(8);

Sally.SetSalary(40000);

cout < < " At AcmeSexist company, John and Sally have the same job.\n";

cout < < " John is " < < John.GetAge() < < " years old and he has been with";

cout < < " the firm for " < < John.GetYearsOfService < < " years.\n";

cout < < " John earns $" < < John.GetSalary < < " dollars per year.\n\n";

cout < < " Sally, on the other hand is " < < Sally.GetAge() < < " years old and has";

cout < < " been with the company " < < Sally.GetYearsOfService;

cout < < " years. Yet Sally only makes $" < < Sally.GetSalary();

cout < < " dollars per year! Something here is unfair.";

return 0;

}

4. На основе программы из упражнения 3 создайте метод класса Employee, который сообщает, сколько тысяч долларов зарабатывает служащий, округляя ответ до 1 000 долларов.

float Employee: GetRoundedThousands() const

{

return (Salary+500) / 1000;

}

5. Измените класс Employee так, чтобы можно было инициализировать данные-члены

age, YearsOfService и Salary в процессе " создания" служащего.

class Employee

{

public:

Employee(int Age, int yearsOfService, int salary);

int GetAge() const;

void SetAge(int Age);

int GetYearsOfService() const;

void SetYearsOfService(int years);

int GetSalary() const;

void SetSalary(int salary);

private:

int Age;

int YearsOfService;

int Salary;

};

6. Жучки: что неправильно в следующем объявлении?

class Square

{

public:

int Side;

}

Объявления классов должны завершаться точкой с запятой.

7. Жучки: что весьма полезное отсутствует в следующем объявлении класса?

class Cat

{

int GetAge() const;

private:

int itsAge;

};

Метод доступа к данным GetAge() является закрытым по умолчанию. Помните: все члены класса считаются закрытыми, если не оговорено иначе.

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

}

Нельзя обращаться к переменной itsStation непосредственно. Это закрытая пере- менная-член.

Нельзя вызывать функцию-член SetStation()npHMO в классе. Метод SetStation() можно вызывать только для объекта.

Нельзя инициализировать переменную-член itsStation, поскольку в программе не определен нужный для этого конструктор.

 

 

День 7

 

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

 

1. Можно ли в цикле for инициализировать сразу несколько переменных-счетчиков?

Можно, для этого в строке инициализации их следует разделить запятыми, например:

for < х = 0. у = 10; х < 100; х++, у++)

2. Почему следует избегать использование оператора goto?

Оператор Goto выполняет переход в любом направлении к любой произвольной

строке программы. Это делает исходный код слишком запутанным, а следовательно, и трудным для понимания и дальнейшего обслуживания.

3. Можно ли с помошью оператора for организовать цикл, тело которого не будет выполняться?

Да. Если условие после инициализации оказывается ложным (FALSE), то тело цикла

for никогда не будет выполняться. Вот пример:

for (lnt х = 100; х < 100; х++)

4. Можно ли организовать цикл while внутри цикла for?

Да. Любой цикл может быть вложен внутрь любого другого цикла.

5. Можно ли организовать цикл, который никогда не завершится? Приведите пример.

Да. Ниже приведены примеры как для цикла for, так и для цикла wtiile:

for(;;)

{

// Этот цикл никогда не заканчивается!

}

whlle(1)

{

// Этот цикл никогда не заканчивается!

}

6. Что происходит при запуске бесконечного цикла?

Программа зависнет и придется перезагрузить компьютер.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.