одиночку, если есть такая возможность! В центре внимания нашей книги лежит реализация и особенно программирова- ние. Мы не учим решать задачи, заваливая вас грудой примеров и решений. Часто новую задачу можно свести к уже известной и применить традиционный метод ее решения. Только после того, как большая часть подзадач будет обработана таким образом, можно позволить себе увлекательное "свободное творчество". Итак, со- средоточимся на методах выражения идей в виде программ. Непосредственное выражение идей в виде программ— это основная цель программирования. Это совершенно очевидно, но до сих пор мы еще не при- вели достаточно ярких примеров. Мы еще не раз будем возвращаться к этому. Если в нашей программе необходимо целое число, мы храним его в виде переменной ти- па int, предусматривающего основные операции с целыми числами. Если мы хотим работать со строками символов, то храним их в виде переменных типа string, обес- печивающего основные операции по манипуляции с текстом. В идеале, если у нас есть идея, концепция, сущность или какая-то "вещь", которую можно изобразить на доске и сослаться на нее в ходе дискуссии, про которую написано в учебнике (по некомпьютерным наукам), то мы хотим, чтобы это нечто существовало в нашей программе в виде именованной сущности (типа), предусматривающей требуемые опе- рации. Если мы собираемся проводить математические вычисления, то нам потребу- ется тип complex для комплексных чисел и тип Matrix для матриц. Если хотим рисо- вать, то потребуются типы Shape (Фигура), Circle (Круг), Color (Цвет) и Dialogbox (Диалоговое окно). Если хотим работать с потоками данных, скажем, поступающих от датчика температуры, то нам понадобится тип istream (буква "i" означает ввод (input)). Очевидно, что каждый такой тип должен обеспечивать совершенно конкретный набор предусмотренных операций. Мы привели лишь несколько примеров из книги. Кроме них, мы опишем инструменты и методы, позволяющие создавать