Стефан Дэвис - С++ для чайников .

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Стефан Дэвис - С++ для чайников . краткое содержание

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

С++ для чайников . - читать онлайн бесплатно полную версию (весь текст целиком)

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Давайте профилируем немного изменённую программу DeepCopy из главы 18, "Копирующий конструктор".

//

/* DeepCopy — программа для демонстрации профилирования */

//

#include

#include

#include

#include

using namespace std ;

class Person

{

public :

Person( char *pN )

{

pName = new char[ strlen( pN ) + 1 ] ;

if ( pName != 0 )

{

strcpy( pName , pN ) ;

}

}

Person( Person & p )

{

pName = new char[ strlen( p.pName ) + 1 ] ;

if ( pName != 0 )

{

strcpy( pName , p.pName ) ;

}

}

~Person( )

{

delete pName ;

pName = 0 ;

}

protected :

char *pName ;

} ;

_________________

340 стр. Часть 6. Великолепная десятка

void fn1( Person & p )

{

/* Создаём новый объект */

Person p1( p ) ;

}

void fn2( Person p )

{

/* Создаём новый объект */

Person* p1 = new Person( p ) ;

delete p1 ;

}

int main( int nNumberofArgs , char* pszArgs[ ] )

{

Person p( "Very, very long name" ) ;

for ( int i = 0 ; i < 10000000 ; i++ )

{

fn1( p ) ;

fn2( p ) ;

}

return 0 ;

}

Эта программа вызывает функции fn1( ) и fn2( ) десять миллионов раз — просто нереально получить сколь-нибудь точную картину происходящего, если программа выполняется меньше секунды.

Кроме того, я удалил из программы весь вывод на экран. Если вы вернёте его назад, то сразу убедитесь, что это очень медленный процесс, так что время, затраченное на вывод на экран, не даст возможности получить результаты по другим функциям.

После выполнения программы воспользуйтесь командой меню Выполнить => Анализ профиля( Execute => Profile Analysis). Появляющееся при этом окно показано на рис. 30.1.

Рис 301 Анализ профиля программы 341 стр Глава 30 Десять - фото 346

Рис. 30.1. Анализ профиля программы

_________________

341 стр. Глава 30. Десять основных возможностей Dev-C++

Интерпретация профиля требует определённой практики. В окне показаны функции, вызываемые в процессе выполнения программы ( в программе могут быть и другие функции, которые никогда не вызываются ). В первом столбце перечислены имена функций, за которыми следуют время их работы в процентах от общего времени работы программы. В нашем случае больше всего времени занимает выполнение конструктора копирования. В столбце Self Sees указано общее время, затраченное на выполнение этой функции.

Означает ли приведённая информация, что конструктор копирования — самая медленная функция программы? Не обязательно. Просто программа вызывает эту функцию чаще других — и в функции fn1( ) , и в fn2( ) .

Опустившись ниже по списку, мы видим, что fn2( ) работает почти в два раза больше, чем fn1( ) . В основном это связано с тем, что функция main( ) передаёт функции fn2( ) объект Person по значению, что приводит к дополнительному вызову конструктора копирования.

_________________

342 стр. Часть 6. Великолепная десятка

Глава 31. ПРОГРАММА BUDGET...343

ОГЛАВЛЕНИЕ

В этой главе...

►BUDGET1 343

►BUDGET2 348

►BUDGET3 355

►BUDGET4 366

►BUDGET5 377

В этой дополнительной главе описана серия программ для работы с воображаемым банковским счётом. Первая из них, BUDGET1, решает поставленную задачу с использованием простейших ( и подверженных ошибкам ) технологий функционального программирования. В программе BUDGET2 информация о счетах хранится в двух классах, Savings и Checking . Программа BUDGET3 выражает взаимоотношения классов Savings и Checking путём порождения их из общего класса Account . Объекты в этой программе хранятся в связанном списке. Программа BUDGET4 обобщает связанный список, превращая его в шаблон класса LinkedList< class Т > , а в программе BUDGET5 мы перестаём изобретать велосипед и используем один из контейнеров STL. Все исходные тексты программ находятся на прилагаемом компакт-диске.

►BUDGET1...343

Главы, составляющие две первые части книги, предоставляют вам достаточно информации для написания собственной нетривиальной программы. Такой программой является рассматриваемая далее программа BUDGET 1.

В этой программе используются концепции С++, рассмотренные в первых двух частях книги. Программа BUDGET моделирует простейший банковский счёт ( в очень упрощённом виде ). Эта программа будет выполнять такие действия:

■■■

■ создавать один или несколько банковских счетов;

■ присваивать уникальный номер каждому счёту;

■ работать со счётом — создание депозита и снятие денег;

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

■■■

Программа имитирует банковские транзакции, подчиняющиеся следующим правилам ( в процессе развития программы к этим правилам будут добавлены и другие ).

■■■

■ Баланс не может быть отрицательным ( каким бы дружественным не был к вам ваш банк, настолько дружественным он быть просто не в состоянии ).

■ Создание депозита не влечёт за собой никаких расходов.

■■■

_________________

343 стр. Глава 31. Программа BUDGET

Вот как выглядит исходный текст данной программы.

/* BUDGET1.CPP — "Функциональная" программа бюджета */

#include

#include

#include

using namespace std ;

/* Максимальное количество счетов */

const int maxAccounts = 10 ;

/* Данные, описывающие счёт */

unsigned accountNumber[ maxAccounts ] ;

double balance[ maxAccounts ] ;

/* Прототипы функций */

void process( unsigned & accountNumber ,

double & balance ) ;

void init( unsigned* pAccountNumber ,

double* pBalance ) ;

/* main — собирает начальные входные данные и выводит конечные суммы */

int main( int nNumberofArgs , char* pszArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

cout << "Нажмите С для продолжения, X для выхода:\n" ;

// Цикл ввода

int noAccounts = 0 ; /* Количество счетов */

/* Нельзя создать счетов больше, чем выделено места */

cout << "Программа создаёт банковские счета\n" << endl ;

while ( noAccounts < maxAccounts )

{

char transactionType ;

cout << "С для создания счёта, X для выхода: " ;

cin >> transactionType ;

/* Выход, если пользователь ввёл X */

if ( transactionType == 'x' ||

transactionType == 'X' )

{

break ;

}

/* Если введено С */

if ( transactionType == 'c' ||

transactionType == 'C' )

{

/* Инициализация нового счёта */

init( & accountNumber[ noAccounts ] ,

& balance[ noAccounts ] ) ;

/* Ввод информации о транзакции */

process( accountNumber[ noAccounts ] ,

balance[ noAccounts ] ) ;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x