Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Г. Шилтд - Самоучитель C++ (PDF)

Г. Шилтд - Самоучитель C++ (PDF), страница 8

PDF-файл Г. Шилтд - Самоучитель C++ (PDF), страница 8 Практика расчётов на ПЭВМ (37366): Книга - 3 семестрГ. Шилтд - Самоучитель C++ (PDF): Практика расчётов на ПЭВМ - PDF, страница 8 (37366) - СтудИзба2019-05-08СтудИзба

Описание файла

PDF-файл из архива "Г. Шилтд - Самоучитель C++ (PDF)", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 8 страницы из PDF

(Для непосредственного подсчета квадратного корня вы можете использовать стандартную библиотечную функцию sqrt().)2. Стандартная библиотека C++ содержит три функции:double atof (const char s) ;int atoi (const char *s)long atol(const char *s)Эти функции возвращают численное значение, содержащееся в строке, накоторую указывает s. Заметьте, что atof() возвращает double, atoi возвращаетint и atoi возвращает long. Почему нельзя перегрузить эти функции?3.

Создайте функцию min(), которая возвращает наименьший из двух численных аргументов, используемых при вызове функции. Перегрузите функциюГлава 1, Краткий обзор C++41min() так, чтобы она воспринимала в качестве аргументов символы, целые идействительные двойной точности.4. Создайте функцию sleepQ, приостанавливающую работу компьютера настолько секунд, сколько указано в аргументе функции. Перегрузите sleep()так, чтобы она могла вызываться или с целым, или со строкой, задающейцелое. Например, оба этих вызова должны заставить компьютер остановитьсяна 10 секунд:sleep (10);sleepf'lO") ;Продемонстрируйте работу ваших функций, включив их в короткую программу. (Почувствуйте удобство их применения для задания паузы в работекомпьютера.)1.8.

Ключевые слова C++В C++ поддерживаются все ключевые слова С и кроме этого еще 30 ключевых слов, которые относятся только к языку C++. Все определенные дляC++ ключевые слова представлены в табл. 1.1. Кроме них в ранних версияхC++ было определено ключевое слово overload, которое сейчас считаетсяустаревшим.Таблица 1.1. Ключевые слова C++asmconst_castexplicitintregisterswitchunionautocontinueexternlongreinterpret_casttemplateunsignedbooldefaultfalsemutablereturnthisusingshortthrowvirtualsignedtruevoidbreakdeletefloatnamespacecasedotor-newcatchdoublefriendoperatorsizeoftryvolatilechardynamic_castgotoprivatestatictypedefwchar_tclasselseifprotectedstatic_casttypeidwhileconstenuminlinepublicstructtypenameПроверка усвоенияматериала главыПопытайтесь выполнить следующие упражнения и ответить на вопросы.1.

Дайте краткие определения полиморфизма, инкапсуляции и наследования.2. Как включить в программу C++ комментарии?_42СамоучительC++3. Напишите программу, использующую стиль ввода/вывода C++, для ввода двух целых с клавиатуры и затем вывода на экран результата возведения первого в степень второго.

(Например, пользователь вводит 2 и 4,тогда результатом будет 24, или 16.)4. Создайте функцию rev_str() для изменения порядка следования символовстроки на обратный. Перегрузите rev_str() так, чтобы она могла вызываться с одним или двумя символьными строками. Если функция вызывается с одной строкой, то операция должна осуществляться с ней. Еслиона вызывается с двумя строками, то результирующая строка должна оказаться во втором аргументе. Например:char sl[80], s2[80];s t r c p y f s l , "привет") ;rev_str(sl, s2}; // измененная строка оказывается в s2,// si не меняетсяrev_str{sl);// измененная строка возвращается в si5.

Дана следующая программа, написанная в соответствии с новым стилемпрограммирования на C++. Покажите, как превратить ее в программустарого стиля.^include <iostream>using namespace std;int f (int a} ;int main{){cout « f (10) ;return 0;}int f(int a){return a * 3.1416;6. Что представляют собой данные типа bool?Глава 2Введение в классыВ этой главе вводятся понятия классов и объектов. В следующих несколькихважнейших разделах фактически описаны почти все аспекты программирования на C++, поэтому советуем вам читать повнимательнее.Повторение пройденногоПеред тем как продолжить, необходимо правильно ответить на следующиевопросы и сделать упражнения.1. Напишите программу, использующую стиль ввода/вывода C++ для вводастроки и затем вывода на экран ее длины.2.

Создайте класс, который содержит информацию об имени и адресе. Храните всю эту информацию в символьных строках закрытой части класса.Включите в класс открытую функцию для запоминания имени и адреса.Также включите открытую функцию, которая выводит эти имя и адрес наэкран.

(Назовите эти функции store() и display().)3. Создайте перегружаемую функцию rotate(), которая циклически сдвигаетвлево свой аргумент и возвращает результат. Перегрузите ее так, чтобыона работала с целыми (mt) и длинными целыми (long). (Сдвиг по кольцуаналогичен обычному сдвигу, за исключением того, что выдвигаемый содного конца слова бит появляется на другом его конце.)4.

Что неправильно в следующем фрагменте?^include <iostream>using namespace std;class myclass {int i;public:44Самоучитель C++int main (){myclass ob;ob.i = 10;-2.1. Конструкторы и деструкторыЕсли вы писали очень длинные программы, то знаете, что в некоторых частях программы обычно требуется инициализация. Необходимость в инициализации еще более часто проявляется при работе с объектами.Действительно, если обратиться к реальным проблемам, то, фактически, длякаждого создаваемого вами объекта требуется какого-то вида инициализация.

Для разрешения этой проблемы в C++ имеется функция-конструктор(constructor function), включаемая в описание класса. Конструктор класса вызывается всякий раз при создании объекта этого класса. Таким образом, любая необходимая объекту инициализация при наличии конструкторавыполняется автоматически.Конструктор имеет то же имя, что и класс, частью которого он является, ине имеет возвращаемого значения. Например, ниже представлен небольшойкласс с конструктором:ttinclude <iostream>using namespace std;class myclass {int a ;public:myclass (); // конструкторvoid show() ;myclass : :myclass ( ){cout « "В конструкторе\п";a-10;)void myclass :: show (){cout « a;Глава2.Введениевклассы_45int main ( ){myclass ob;ob.

s h o w ) ) ;return 0;В этом простом примере значение а инициализируется конструкторомmyclass(). Конструктор вызывается тогда, когда создается объект ob. Объект, всвою очередь, создается при выполнении инструкции объявления объекта. Важно понимать, что в C++ инструкция объявления переменной янляется"инструкцией действия". При программировании на С инструкции объявленияпеременных понимаются просто как создание переменных. Однако в C++, поскольку объект может иметь конструктор, инструкция объявления переменнойможет вызывать выполнение записанных в конструкторе действий.Обратите внимание, как определяется конструктор myclassQ.

Как уже говорилось, он не имеет возвращаемого значения. В соответствии с формальными правилами синтаксиса C++ конструктор не должен иметь возвращаемогозначения.Для глобальных объектов конструктор объекта вызывается тогда, когда начинается выполнение программы. Для локальных объектов конструктор вызывается всякий раз при выполнении инструкции объявления переменной.Функцией, обратной конструктору, является деструктор (destructor).

Этафункция вызывается при удалении объекта. Обычно при работе с объектомв момент его удаления должны выполняться некоторые действия. Например, при создании объекта для него выделяется память, которую необходимо освободить при его удалении. Имя деструктора совпадает с именемкласса, но с символом ~ (тильда) в начале. Пример класса с деструктором:^include <iostream>using namespace std;class myclass (int a;public:myclass (); // конструктор-myclass (); // деструкторvoid show() ;,.'myclass : :myclass ( ){cout « "Содержимое конструктора\п";a = 10;46Самоучитель C++myclass::~myclass (){cout « "Удаление.

. Лп";}void myclass::show(){cout « a « "\n";}int main()myclass ob;ob.show ();return 0;}Деструктор класса вызывается при удалении объекта. Локальные объектыудаляются тогда, когда они выходят из области видимости. Глобальные объекты удаляются при завершении программы.Адреса конструктора и деструктора получить невозможно.Фактически как конструктор, так и деструктор могут выполнить любой тип операции. Тем не менее считается, что код внутри этих функций не должен делатьничего, не имеющего отношения к инициализации или возвращению объектовв исходное состояние.

Например, конструктор в предшествующем примере могбы рассчитать число pi с точностью до 100 знаков после запятой. Однако применение конструктора или деструктора для действий, прямо не связанных синициализацией, является очень плохим стилем программирования и его следует избегать.1. Вспомните, что в созданном в главе 1 классе stack для установки переменнойиндекса стека требовалась функция инициализации. Это именно тот типдействия, для выполнения которого и придуман конструктор.

Здесь представлена улучшенная версия класса stack, где для автоматической инициализации объекта стека при его создании используется конструктор:^include <iostream>using namespace std;^define SIZE 10Глава 2. Введение в классы// Объявление класса stack для символовclass stack {char stck[SIZE]; // содержит стекint tos; // индекс вершины стекаpublic:stack(); // конструкторvoid push(char ch); // помещает в стек символchar pop(); // выталкивает из стека символ// Инициализация стекаstack: : stack (){cout « "Работа конструктора стека \п";tos=0;// Помещение символа в стекvoid stack: : push (char ch)<if {tos==SIZE} {cout « "Стек полон";return;}stck[tos]=ch;tos++;1// Выталкивание символа из стекаchar stack::pop(){if (tos==0) {cout « "Стек пуст";return 0; // возврат нуля при пустом стеке}tos — ;return stck[tos];}int main ( )(// образование двух автоматически инициализируемых стековstack si, s2;int i ;si. push ( 'a' ) ;s2.push( 'x' ) ;sl.push('b') ;4748Самоучитель C++s2. push Су') ;si.push('с');s2.push('z');for(i=0; i<3; .i++) cout « "символ из si:" « sl.popO « "\n";for(i=0; i<3; i++} cout « "символ из s2:" « s2.pop() « "\n";return 0;Обратите внимание, что теперь вместо отдельной, специально вызываемойпрограммой функции задача инициализации выполняется конструктором автоматически.

Это важное положение. Если инициализация выполняется автоматически при создании объекта, то это исключает любую возможностьтого, что по ошибке инициализация не будет выполнена. Вам, как программисту, не нужно беспокоиться об инициализации — она автоматически выполнится при появлении объекта.2. В следующем примере показана необходимость не только конструктора, но идеструктора. В примере создается простой класс для строк, который содержит саму строку и ее длину.

Когда создается объект strtype, для хранениястроки выделяется память, и начальная длина строки устанавливается равнойнулю. Когда объект strtype удаляется, эта память освобождается.ftinclude <iostream>^include <cstring>^include <cstdlib>using namespace std;^define SIZE 255class strtype {char *p;int len;public:s t r t y p e ( ) ; // конструктор- s t r t y p e ( } ; // деструкторvoid set(char *ptr);void s h o w ( ) ;// Инициализация объекта строкаstrtype::strtype()p=(char *) m a l l o c ( S I Z E ) ;if(!p) {cout « "Ошибка выделения памяти\п";exit ( 1 ) ;Глава 2. Введение в классы____49*р='\0';1еп=0;// Освобождение памяти при удалении объекта строкаstrtype: :~strtype ()cout « "Освобождение памяти по адресу р\п";free (р) ;}void strtype: : set (char *ptr}{if (atrlen(p) > =SIZE) {cout « "Строка слишком великаХп";return;1strcpy(p, ptr) ;len=strlen{p) ;1void strtype: : show (){cout « p « " — длина: " « len;cout « "\n";1int main ()(strtype sl,s2;sl.set("3TO проверка");s2.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее