
- •Методическое материалы по курсу
- •Cанкт-Петербург
- •Оглавление
- •Введение.
- •Задание: Разобраться в коде и вывести на консоль еще одну фразу: "It's a first program"
- •Типы данных и правила их применения:
- •Операции
- •Управляющие операторы
- •Задание: в данном примере реализуйте операции умножения и деления Оператор цикла for (;;)
- •Оператор цикла do-while
- •Задание: к примеру добавьте перегруженную функцию для суммирования чисел типа double, и проверьте ее работу
- •Модульная организация программы
- •Массивы
- •Задание: добавьте еще один элемент в массив при инициализации и посмотрите его размерность. В цикле увеличьте значение всех элементов массива на 10 и напечатайте его заново. Работа со строками
- •Ссылочный тип данных
- •Задание: Объявить еще одну переменную-ссылку на I и, изменив ее значение, пронаблюдать, как изменилось значение переменной I Работа с файлами
- •Взаимодействие с ассемблером
- •Обработка ошибок и исключений
- •Директивы препроцессора: Макросы и Условные директивы
- •Структуры
- •Задание : Добавить в сруктуру еще одно данное (стоимость модели) типа int, в коде функции main() задать значение этого данного переменной–структуры, и напечатать его.
- •Объектно-ориентированное программирование (ооп)
- •Терминология ооп
- •Структура как простейший класс
- •Конструкторы и деструкторы
- •Перегрузка методов класса
- •Дружественные функции и классы
- •Указатель this
- •Перегрузка операций
- •Множественное наследование
- •Если осталось время – разобраться в иерархии классов и принципов построения
- •Список литературы
Ссылочный тип данных
Ссылочная переменная не содержит своих данных, но ссылается на данные, хранящиеся в другой переменной. Ссылки упрощают восприятие программы. Значения ссылки задается при объявлении (&) и не меняется в процессе выполнения, меняются только данные, находящиеся по данной ссылке (\22REFVAR)
//
// 22REFVAR.CPP Использование ссылочного типа данных
//
#include <iostream>
using namespace std;
void testfunc(int& ri); // Объявление прототипа функции
int main()
{
int i = 5;
//int& ri; // Нельзя просто объявлять ссылку
int& ri = i; // Объявление ссылки и ее инициализация
cout << "i=" << i << " ri=" << ri << endl;
ri = 4; // Значение i изменилось вместе с ri
cout << "i=" << i << " ri=" << ri << endl;
int *pi = &i; // Тоже самое через использование указателей
*pi = 3; // выглядит достаточно громоздко и больше
// вероятность допуска ошибок
cout << "i=" << i << " ri=" << ri << endl;
testfunc(i); // Вызов функции с передачей параметра по ссылке
//testfunc(1); // Такой вызов функции неверен
cout << "i=" << i << " ri=" << ri << endl;
return(0);
}
void testfunc(int& rint)
{
rint--; // Изменяется также и значение передаваемой переменной
cout << "rint = " << rint << endl;
}
Задание: Объявить еще одну переменную-ссылку на I и, изменив ее значение, пронаблюдать, как изменилось значение переменной I Работа с файлами
Библиотека <fstream.h> предоставляет объекты потоков для работы с файлами:ifstream (для чтения файла), ofstream (для записи в файл), fstream (для чтения и записи в файл одновременно).
Эти объекты обладают свойствами и методами, позволяющими вам открывать файлы, считывать и заносить в них информацию. Работа с объектами подобна работе с объектами потоков cout, cin
Пример (\23FILES) иллюстрирует основные методы работы с файловыми потоками.
#include <fstream.h> // Заголовок библиотеки C++ для работы с файловыми потоками
#include <iomanip>
// Заголовок библиотеки C++ для форматирования
#define MIN_DISCOUNT 0.97 // Константы для величины скидок
#define MAX_DISCOUNT 0.95
int main()
{
float forder_price, fbill_price; // Объявление переменных
ifstream fin("customer.dat"); // Открытие файла для чтения "customer.dat"
ofstream fout("billing.dat"); // Открытие файла для записи "billing.dat"
fin >> forder_price; // Считать из потока входную цену
while (!fin.eof()) { // Цикл пока не конец файла
fout << setiosflags(ios::fixed); // Установить формат вывода фиксированный
fout << "Your order of $" << setprecision(2) \
<< setw(8) << forder_price; // Вывести в файл входную цену
// в формате 8.2
if (forder_price < 10000) // Расчет выходной цены
fbill_price = forder_price * MIN_DISCOUNT;
else
fbill_price = forder_price * MAX_DISCOUNT;
fout << " is discounted to $" << setprecision(2) \
<< setw(8) << fbill_price << "\n"; // Вывести выходную цену в файл
fin >> forder_price; // Считать следующую входную цену
}
fin.close(); // Закрыть потоки, связанные с файлами
fout.close();
return(0);
}