Остащенко А.Ю., Певцов Е.Ф. Практикум по программированию Основы программирования на VISUAL C++ 6.0 (1017102), страница 4
Текст из файла (страница 4)
Для этого используетсяключевое слово const после круглых скобок, но перед точкой сзапятой. Например: void Function() const;Использование const везде в объявлениях методов, если онине изменяют переменные объекта, позволяет лучше отслеживать26ошибки. Если метод объявлен как const, а в его выполнении происходит изменение переменной-члена объекта, то компиляторвыдаст ошибку.Т.к. функция GetAge() прошлой программы просто возвращает текущее значение переменной itsAge, то правильнеебудет записать: int GetAge() const;Можно также помещать определение методов класса непосредственно в объявлении класса. Обратите внимание на отсутствие точки с запятой в этом случае после определения.Например:class Cat{public:int GetAge() {return itsAge;} // определение в объявленииvoid SetAge(int age);};Можно строить сложные классы путём объявления болеепростых классов и последующего их включения в объявлениесложного класса.
Т.е. классы могут содержать другие классы вкачестве переменных-членов.Очень близкими родственниками ключевого слова classявляются структуры, объявляемые ключевым словом struct. ВС++ структура – это тот же класс, но с открытыми по умолчаниючленами. Структуры перешли в С++ по наследству из языка С.Пример, включающий изученные выше понятия языка С++.Разработаем программу, позволяющую вычислять объёмполого цилиндра при разных исходных данных.#include <iostream.h> /* подключение стандартной библиотеки ввода/вывода */#include <math.h> /* подключение стандартной библиотекиматематических операций для функции возведения в степень b числа a: pow(a,b) */enum choice {Size=1, Volume, Thickness, Quit};/* перечислимый тип переменной */class Cylinder // объявление класса{ public:27Cylinder(float R1, float R2, float H); // конструктор класса~Cylinder() {} // деструкторfloat GetExtRadius() const {return itsR1;} /* метод доступакласса сразу с его определением */float GetIntRadius() const {return itsR2;} /* метод доступакласса сразу с его определением */float GetHeight() const {return itsH;} /* метод доступа класса сразу с его определением */float GetVolume() const; // метод расчета объёма цилиндраfloat GetThickness() const {return (itsR1 - itsR2);} /* методкласса сразу с его определением */void SetSize (float newR1, float newR2, float newH); /* метод задания размеров цилиндра */private: // закрытые члены класса (переменные)float itsR1;float itsR2;float itsH;};// определение методов класса:Cylinder::Cylinder (float R1, float R2, float H)/* определение конструктора*/{itsR1 = R1;itsR2 = R2;itsH = H; }void Cylinder::SetSize(float newR1, float newR2, floatnewH) /* определение метода класса */{itsR1 = newR1;itsR2 = newR2;itsH = newH; }float Cylinder::GetVolume() const// определение метода класса{float V;// формула расчёта объёма цилиндраV = 3.1415 * (pow(itsR1,2) - pow(itsR2,2)) * itsH;return V;28}// прототипы используемых функцииint DoMenu(); // функция вывода меню на экран// функция вызова метода расчёта объёмаvoid DoVolume(Cylinder);// функция вызова метода расчёта толщины стенки^void DoThickness(Cylinder);int main() // основное содержание программы, функция main{//инициализация конструктором параметров цилиндраCylinder theCyl(0,0,0);int choice = Size;int fQuit = false;while(!fQuit){choice = DoMenu();/* функция DoMenu выводитМеню и возвращает сделанный там выбор пункта */if (choice<Size || choice > Quit){cout<<"\nInvalid choice.
Try again.\n\n";continue;} /* переход на следующую итерацию тела цикла без выполнения тела цикла */switch(choice){case Size:float L1,L2,Hi;cout<<"\nEnter external radius of Cylinder: ";cin>> L1;cout<<"Enter internal radius of Cylinder: ";cin>> L2;cout<<"Enter height of Cylinder: ";cin>> Hi;theCyl.SetSize(L1, L2, Hi);break; /* выход из выполнения оператораswitch */case Volume:DoVolume(theCyl);29break;case Thickness:DoThickness(theCyl);break;case Quit:fQuit = true;cout<<"\nExiting...\n\n";break;default:cout<< "Error in choice!\n";fQuit=true;break;} // конец switch} // конец whilereturn 0;}// определение тел функцийint DoMenu() // тело функции вывода меню и выбора его пункта{int choice;cout<< "\n ***Menu***\n";cout<< "(1) Set Size\n";cout<< "(2) Count Volume\n";cout<< "(3) Count Thickness\n";cout<< "(4) Quit\n";cout<< "Choice a number from Menu: ";cin>> choice;return choice;}void DoVolume(Cylinder theCyl) /* тело функции вызова методарасчёта объёма */{cout<<"The Volume of Cylinder: "<<theCyl.GetVolume()<< endl;}void DoThickness(Cylinder theCyl) /* тело функции вызова метода расчёта толщины стенки */30{cout<<"The Thickness of Cylinder Wall: "<<theCyl.GetThickness()<<endl;}Задание.
Самостоятельно разработать программу, позволяющуюмногократно вычислять некоторую физическую величину по заданной формуле и одновременно вычислять значения каких-либопараметров формулы. Варианты заданий по лабораторной работеприведены в Табл.3.Таблица 4Варианты заданий по лабораторной работе №4№1234НаименованиеОбъём:тораусеченного круглого цилиндраусеченного прямого конусашарового сектора5 шарового сегмента6 полого цилиндра(Oz – ось цилиндра)Центральный момент инерции:7 полого цилиндра(Ox – ось цилиндра)8 полого шара9 шарового сектораФормулаПараметрV=2π2Rr2h + h2V = πR 2 12πh 2V =( R + Rr + r 2 )32πR 2 hV=31V = πh(3R − h)31J Z = (R 2 + r 2 )2rJX =1(3R 2 + 3r 2 + H 2 )22 (R5 − r 5 )J =5 R3 − r 3hJ = (3R − h)5RhRhR-rR-rR-rh3110 усеченного прямого конуса11 тора12 Импеданс последовательной цепиRLC13 Импеданс параллельной цепи RLC14 Емкость плоскогоконденсатораε0=8,85*10-12 Ф/м15 Сила отталкиваниядвух электронове=1,6*10-29 Кл3 (R5 − r 5 )J =10 R 3 − r 33J Z = (R 2 + r 2 )41 2)Z − = R 2 + ( ωL −ωCZ // =hrR111 2+−(ωC)2ωLRεε SC= 0d1 e2F=4πε 0 r 2RdrЗАКЛЮЧЕНИЕВ конце лабораторной работы необходимо оформить отчёт ввиде текстового документа Word, который должен включать следующие пункты:1.
Формулировка задания с указанием номера варианта и исходных данных.2. Полный программный код с комментариями3. Результаты тестирования и результаты работы программыБИБЛИОГРАФИЧЕСКИЙ СПИСОК1. Д. Либерти «Освой самостоятельно С++ за 21 день». СПб.:Диалектика, 20062. Т.А. Павловская «С/С++. Программирование на языке высокого уровня».
СПб.: Питер, 2007.3. С.В. Глушаков, А.В. Коваль, С.В. Смирнов «Язык программирования С++» Изд-во Фолио, 2001.32Подписано в печать 00.00.2009. Формат 60х84 1/16.Бумага офсетная. Печать офсетная.Усл. печ. л.00,00 Усл. кр.-отт. 00,00. Уч.-изд. л. 00,00Тираж 000 экз. С 00Государственное образовательное учреждениевысшего профессионального образования“Московский государственный институт радиотехники,электроники и автоматики (технический университет)”119454, Москва, пр. Вернадского, 78.