- •ГЛАВА 7. ОСНОВЫ АЛГОРИТМИЗАЦИИ
- •1. ПОНЯТИЕ ОБ АЛГОРИТМЕ
- •2. ОСНОВНЫЕ СТРУКТУРЫ
- •2.1. Структура «следование»
- •2.2. Структура «развилка»
- •2.3. Структура «цикл»
- •3. ОСНОВНЫЕ ТИПЫ АЛГОРИТМОВ
- •3.1. Линейный алгоритм
- •3.2. Разветвленный алгоритм
- •3.3. Циклический алгоритм
- •Практические задания
- •1. Алгоритмы линейной структуры
- •2. Алгоритмы разветвляющейся структуры
- •3. Алгоритмы циклической структуры (цикл «ПОКА»)
- •4. Алгоритмы циклической структуры (цикл «ДО»)
- •ГЛАВА 8. ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ VISUAL С++ 2005
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРОГРАММЫ
- •2. ПЕРЕМЕННЫЕ
- •3. ЛИНЕЙНАЯ ПРОГРАММА
- •3.1. Оформление линейной программы
- •3.2. Программирование в стандартизованной среде CLR
- •Практические задания
- •Русская система мер
- •4. ПРОГРАММА С ВЕТВЛЕНИЕМ
- •Практические задания
- •5. ЦИКЛ С ПАРАМЕТРОМ
- •6. ЦИКЛ «ПОКА»
- •Практические задания
- •7. ОДНОМЕРНЫЕ МАССИВЫ
- •7.1. Понятие об одномерном массиве
- •7.2. Сортировка в одномерном массиве
- •Практические задания
- •8. ДВУМЕРНЫЕ МАССИВЫ
- •8.1. Понятие о двумерном массиве
- •8.2. Датчик случайных чисел
- •Практические задания
- •9. ФУНКЦИИ
- •9.1. Понятие о пользовательских функциях
- •Рис. 8.20. Пятиугольник со сторонами a, b, c, d, f и диагоналями h,g.
- •9.2. Рекурсия
- •9.3. Вызов функции из функции
- •9.4. Функция типа void и глобальные переменные
- •9.5. Передача в функцию имени функции
- •Практические задания
- •10. СОБСТВЕННАЯ БИБЛИОТЕКА ПРОГРАММИСТА
- •10.1. Перегрузка функций
- •Рис. 8.25. Результат работы программы примера
- •11. ПЕРЕЧИСЛИМЫЙ ТИП
- •11.1. Понятие о перечислимом типе
- •11.2. Множественный выбор
- •12. УКАЗАТЕЛИ
- •12.1. Понятие об указателях
- •12.2. Указатели и функции
- •12.3. Указатели и динамические массивы
- •12.4. Указатели и перегрузка операций
- •13. ОБРАБОТКА СИМВОЛЬНЫХ СТРОК
- •13.1. Символьные переменные
- •13.2. Символьные строки (как массивы символов)
- •13.3. Обработка массивов строк
- •Практические задания
- •14. СТРУКТУРЫ
- •Практические задания
- •15. КЛАССЫ
- •15.1. Понятие класса
- •15.2. Открытые и закрытые члены класса
- •15.3. Конструкторы и деструкторы
- •Практические задания
- •Раздел А
- •Раздел Б
- •16. ФАЙЛЫ
- •16.1. Работа с текстовыми файлами
- •16.2. Работа со структурами в файлах
- •16.3. Работа с классами в файлах
- •Практические задания
- •Раздел А
- •Раздел Б
- •ПРИЛОЖЕНИЯ
- •Приложение 1. Список библиотечных функций
- •Математические функции
- •Строковые функции (для работы с символьными массивами)
- •Приложение 2. План лабораторных работ
- •ГЛАВА 9. ПРИЛОЖЕНИЯ WINDOWS FORMS
- •ВВЕДЕНИЕ
- •1. РАЗРАБОТКА ПРИЛОЖЕНИЯ
- •3. ДИНАМИЧЕСКИЕ ССЫЛКИ НА ОБЪЕКТЫ
- •3.1 Понятие о динамических ссылках.
- •3.2. Программа «Калькулятор»
- •4. ИСПОЛЬЗОВАНИЕ ТАЙМЕРА. КОМПОНЕНТ CHECKBOX
- •4.1 Таймер
- •4.2. Компонент CheckBox
- •5. СПИСКИ ВЫБОРА И ПОЛОСЫ ПРОКРУТКИ. ГРАФИЧЕСКИЕ КОМПОНЕНТЫ В C++Builder
- •5.1. Список выбора ListBox
- •5.2. Полосы прокрутки
- •5.3. Графика
- •6. РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ.
- •6.1. Чтение и запись текстового файла
- •ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
- •Раздел 1. Кнопки, метки и окна редактирования
- •Раздел 2. Радиокнопки
- •Раздел 3. Полосы прокрутки
- •Раздел 4. Обработка текстовых файлов
- •ЛИТЕРАТУРА
- •ТЕСТЫ
- •Тесты по основам алгоритмизации
- •Тесты по программированию на С++
- •Учебное издание
108
b->summa(); cout<<"\n"; return 0; }
void Sum :: summa()
{s=x+y;
cout<<Rus("\n сумма ")<<x; cout<<Rus(" и " )<<y; cout<<Rus(" равна:")<<s; }
char* Rus(const char* str)
{AnsiToOem(str, str_rus); return str_rus; }
15.3. Конструкторы и деструкторы
Объявление класса не производит выделения памяти. Это происходит потом, когда мы, на основе объявленного класса, проводим описание переменной.
Поэтому при объявлении класса нельзя сразу производить инициализацию (присваивание данных) для объекта. Но если в определение класса включить функцию-член специального вида, известную как конструктор, то она автоматически вызывается при объявлении объекта данного класса. Конструктор определяется так же, как и любая другая функция-член; существует лишь два отличия:
1)имя конструктора должно совпадать с именем класса,
2)определение конструктора не может иметь возвращаемого значения. Более того, в начале прототипа функции или в ее заголов-
ке не должно присутствовать никакого типа, даже void.
Например, для класса Sum описание конструктора может выглядеть так:
Sum (int x2=0, int y2)
{x=x2; y=y2; }
Далее конструктор Sum() можно вызвать двумя способами: Sum A=Sum(1,2) и Sum A(1,2). В обоих случаях создается объект А, элементы данных x и y которого получают начальные значения 1 и 2 соответственно. А можно было и так: Sum A(,2), т.к. первый параметр задан сразу при описании конструктора(x2=0). В одном классе может быть несколько конструкторов.
109
Внутри класса могут быть и так называемыедеструкторы. Деструкторы уничтожают объекты класса и освобождают занимаемую ими память. Деструктор представляет собой метод с именем, совпадающий с именем класса, перед которым стоит символ~ (тильда). Деструктор не должен иметь ни параметров, ни типа возвращаемого значения. Например, для класса Sum деструктор имеет вид: ~Sum () {}.
Пример 15.4. Создать программу для расчета произведения ви-
да s = a×b + c×k + a×c
// применение конструктора и деструктора
#include <iostream> #include <windows.h> using namespace std;
char* Rus(const char* str); char str_rus[256];
class Pro
{private:
int x,y,z; public:
// прототипы методов
Pro(int,int); // конструктор int putx(); //доступ к x int puty(); //доступ к y int putz(); //доступ к z
void proizv(); // произведение
~Pro(); // деструктор
}; // описание методов
Pro::Pro(int x1,int y1){x=x1; y=y1;} int Pro::putx(){return x;}
int Pro::puty(){return y;} int Pro::putz(){return z;} void Pro::proizv(){z=x*y;} Pro::~Pro(){}
int main() {int s,a,b,c,k;
cout << Rus("\n введите a,b,c,k \n"); cin>>a>>b>>c>>k;
Pro D=Pro(a,b); |
//создание и иницализация объекта D |
Pro E(c,k); |
//создание и иницализация объекта E |
Pro F(a,c); |
//создание и иницализация объекта F |
D.proizv(); |
// получение произведения a*b |
E.proizv(); |
// получение произведения c*k |
F.proizv(); |
// получение произведения a*c |