- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «Microsoft Visual Studio.Net».
- •Структура программы.
- •Пример простейшей программы:
- •Представление данных.
- •Операции.
- •Ввод и вывод алфавитно-цифровой информации.
- •Математические функции.
- •Практическое задание №1.
- •Условия в вычислениях. Ветвящиеся и итерационные алгоритмы Условная операция присваивания. Операторы if ... Else и switch.
- •Ветвящиеся алгоритмы.
- •Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
- •Практическое задание №2.
- •Функции.
- •Определение функции.
- •Прототипы функций.
- •Вызов по значению и вызов по ссылке.
- •Вычисление функций путем разложения в ряд.
- •Поиск корней функции методом деления отрезка пополам.
- •Поиск корней функции методом касательных.
- •Практическое задание №3.
- •Массивы и указатели. Работа с файлами. Объявления массивов и указателей.
- •Доступ к элементам массива.
- •Передача массивов функциям.
- •Указатели.
- •Динамическое выделение и освобождение памяти.
- •Практическое задание.
- •Потоковые функции.
- •Низкоуровневый ввод и вывод.
- •Ввод и вывод символов, строк, слов.
- •Форматированный ввод и вывод.
- •Потоки cin, cout, cerr.
- •Практическое задание №4.
- •Структуры и объединения. Синтаксис структур.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Структуры и битовые поля.
- •Объединения.
- •Дополнительные средства (typedef и enum).
- •Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
- •Терминология объектно-ориентированного программирования.
- •Структура как простейший класс.
- •Inline методы.
- •Указатель this.
- •Конструкторы и деструкторы.
- •Перегрузка методов класса.
- •Перегрузка операций.
- •Практическое задание.
- •Производные классы. Полиморфизм
- •Виртуальные функции
- •Использование дружественных функций.
- •Практическое задание.
- •Работа в объектно-ориентированной среде.
- •Объектно-ориентированные стековые операции.
- •Объектно-ориентированные связанные списки.
- •Практическое задание.
- •Классы iostream.
- •Потоковый ввод-вывод.
- •Буферизованные потоки.
- •Строковые потоки.
- •Двоичные файлы.
- •Вычисления в интерактивном режиме.
- •Графика в системе matlab.
- •3. Программирование m-функций.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •Глава 7. Дополнительные возможности системы matlab Объекты и классы. Переопределение операций.
- •Написание расширений matlab на языке c
- •Программные интерфейсы
- •Настройка среды для сборки проекта
- •Пример программы
- •Вызов команд среды matlab из mex-файла
Классы iostream.
Все объекты ввода/вывода, описанные в библиотеке iostream, используют оди и тот же базовый класс ios (за исключением классов буферизованных потоков). Эти производные классы делятся на 4 категории.
Классы потокового ввода |
|
istream |
Универсальный класс ввода, или родительский класс для других производных потоковых классов ввода. |
ifstream |
Ввод из файлов. |
istream_withassign |
Ввод из потока cin. |
istrstream |
Ввод из строки. |
Классы потокового вывода |
|
ostream |
Универсальный класс вывода, или родительский класс для других производных потоковых классов вывода. |
ofstream |
Вывод в файлы. |
ostream_withassign |
Вывод в потоки cout, cerr и clog. |
ostrstream |
Вывод в строку. |
Классы потокового ввода/вывода |
|
iщstream |
Универсальный класс ввода/вывода, или родительский класс для других производных потоковых классов ввода/вывода. |
fstream |
Ввод/вывод в файлы. |
stdiostream |
Стандартный поток ввода/вывода. |
strstream |
Ввод/вывод в строку. |
Классы буферизованных потоков |
|
streambuf |
Родительский класс для производных буферизованных классов. |
filebuf |
Буферизованный поток для файлов. |
stdiobuf |
Буферизованный поток для стандартного файлового ввода/вывода. |
strstreambuf |
Буферизованный поток для строк. |
Все производные от ios используется объект класса streambuf.
Потоковый ввод-вывод.
Используемый в следующем примере класс ifsteam :
#include <fstream.h>
void main()
{
char one_line[80];
ifstream my_input_stream(“iputfile.cpp”,ios::in);
while(my_input_stream)
{
my_input_stream.getline(one_line,sizeof(one_line),’*’);
cout<<endl<<one_line;
}
my_input_stream.close();
}
Для объекта my_input_stream можно использовать методы open(), rdbuf() из класса ifstream и ряд методов из родительского класса istream: gcount(),get(), getline(), ignore(), peek(), putback(), read(), seekg(), tellg().
При создании объекта вызывается конструктор, которому передается имя файла, а также один или несколько режимов ввода, задаваемые константами, предопределенными в классе ios (ios::in ios::binary ios::nocreate). Константы объединяются с помощью операции побитового или “|”. Значение дескриптора файла можно использовать в логических проверках. При достижении конца файла оно устанавливается в ноль (условие EOF).
Метод getline() читает текстовые строки из входного потока (знак “*” является разделителем строк).
Классы ofstream позволяют выполнять вывод в поток streambuf:
#include <fstream.h>
#include <string.h>
void main()
{
int i=0;
long ltellp;
char sample[40]=”Sample string\n”;
ofstream my_out_stream(“outfile.out”,ios::out);
while(sample[i]!=0)
{
my_out_stream.put(sample[i]);
ltellp=my_out_stream.tellp();
cout<<”\ntellp value: “<<ltellp;
i++;
}
my_out_stream.write(sample,strlen(sample));
ltellp.my_out_stream.tellp();
cout<<”\ntellp after write: “<<ltellp;
my_out_stream.close();
}
Обратите внимание на то, что при выполнении этой программы производится преобразование символа “\n” в два символа в файле.
Допустимо использование методов open(), rdbuf() из класса ofstream и flush(), put(), seekp(), tellp(), write() из класса ostream.