- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •1.2. Способы объявления и обращения к элементам двухмерных массивов
- •Лекция 14 Символы и строки
- •1. Символьный тип данных
- •2. Строки
- •Лекция 15 Структуры
- •1. Понятие структуры
- •2. Определение нового имени типа
- •3. Массивы структур. Указатели на структуры
- •3.1. Определение статического массива структур
- •3.1. Определение динамического массива из n структур
- •Лекция 16 Файлы
- •1. Потоковый ввод-вывод данных
- •3. Понятие файла. Функции работы с файлами
- •Лекция 17 Файлы
- •Лекция 18 Функции пользователя
- •I. Приёмы построения алгоритмов
- •2. Понятие функции
- •2.1. Определение функции
- •2.2. Область видимости переменных
- •2.3. Параметры функции
- •2.4. Описание функции
- •2.5. Организация вызова функции
- •2.5. Передача параметров в функцию
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
Лекция 16 Файлы
Цели:
-
получить представление о потоке и потоковом вводе-выводе; файлах и функциях, работающих с файлами.
1. Потоковый ввод-вывод данных
Процесс ввода-вывода данных предполагает обмен данными между ОП и внешними устройствами. Например, между ОП и клавиатурой, ОП и жестким диском и др. Под вводом понимается запись данных с внешнего устройства в ОП; под выводом – чтение информации из ОП и перенос этой информации на внешнее устройство.
В языке С++ процесс ввода-вывода информации тесно связан с понятием потока – последовательностью байтов, передаваемой в процессе ввода-вывода данных. Так как при вводе-выводе информации создается связь между ОП и внешними устройствами, то в процессе выполнения программы созданные потоки связываются с конкретными внешними устройствами. По-другому говорят, что поток направлен на внешнее устройство.
При запуске программы кроме потоков, которые объявляет программист, создаются три основных стандартных потока:
-
stdin – поток стандартного ввода (как правило связан с клавиатурой);
-
stdout – поток стандартного вывода (обычно связан с монитором);
-
stderr – поток сообщений об ошибках (всегда связан с монитором).
2. Форматированный ввод-вывод в С++
В разделе «Линейные вычислительные процессы» были рассмотрены функции ввода–вывода printf() и scanf(). В языке С++ существует стандартная библиотека (головной файл), ориентированная на организацию потокового форматированного ввода-вывода – iostream.h. Потоковый форматированный ввод-вывод в С++ основан на понятии объектов, под которыми понимаются величины, содержащие в себе свойства (характеризуют состояние объекта в данный момент времени) и методы (функции, которые могут изменять свойства объекта).
В библиотеке iostream.h описаны два объекта:
-
cout – поток вывода, связанный с дисплеем;
-
cin – поток ввода, связанный с клавиатурой.
Знак << (два знака меньше подряд) обозначает операцию вставки символов в поток вывода cout, а знак >> (два знака больше подряд) – операцию извлечения из потока ввода cin:
int i;
float f;
cout<<"Введите целое число ";//на монитор выводится текст
cin>>i; //с клавиатуры вводится целое число
f=5.9*i;
//на монитор выводится текст и значение переменной
cout<<"Значение f = "<<f<<"\n";
Часть строки "\n" обозначает перевод курсора на следующую строку.
Для организации форматированного потокового ввода-вывода в С++ существуют два средства: применение флагов форматирования; применение манипуляторов.
Флаги форматирования управляют форматом выводимых значений и тесно связаны с объектно-ориентированным программированием, поэтому в этом разделе не будем их рассматривать.
Для управления форматами потокового вывода можно использовать специальные функции, называемые манипуляторами. Доступ к стандартным манипуляторам можно получить, подключив файл iomanip.h. Список стандартных манипуляторов:
Манипулятор |
Назначение манипулятора |
dec |
Десятичный формат |
endl |
Вывод "\n" и освобождение буфера |
hex |
Шестнадцатеричный формат числа |
setbase(int baz) |
Установить основание системы счисления baz |
setfill(char ch) |
Установить символ заполнения ch |
setprecision (int pr) |
Установить рr цифр в дробной части |
setw(int wd) |
Установить ширину wd поля выдачи |
Пример. Вывести на экран таблицу из 10 значений функций . Для форматирования таблицы результатов использовать манипуляторы.
Программа, реализующая эту задачу:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main()
{
float a,b,x,h;
int i;
a=0;
b=4*atan(1);
h=(b-a)/10;
cout<<" x sin(x) cos (x)"<<endl;
cout<<endl;
x=a;
for(i=1; i<=10; i++)
{
cout<<setprecision (4)<<setw(7)<<x<<" "
<<setprecision(4)<<setw(7)<<sin(x)<<" "
<<setprecision(4)<<setw(7)<<cos(x)<<endl;
x=x+h;
}
return 1;
}
Результат работы программы:
Под каждое выводимое значение выделяется по 7 позиций на экране. По умолчанию число занимает крайнюю правую позицию в отведенном под него поле. Оставшиеся слева позиции занимает символ-заполнитель. По умолчанию символом-заполнителем является пробел. Однако с помощью манипулятора setfill() его можно заменить. Если в крайних правых позициях оказываются нули, то они не выводятся. Действие манипулятора распространяется только на значение, непосредственно следующее за ним в потоке вывода.