- •1. Основные понятия информатики
- •1.1. Понятие и задачи информатики
- •1.2. Системы счисления
- •1.2.1. Двоичная система счисления
- •1.2.2. Восьмеричная система счисления
- •1.2.3. Шестнадцатеричная система
- •1.3. Обобщенная структура и состав персонального компьютера
- •1.4. Организация вычислительных процессов при решении инженерных задач
- •1.5.1. Алгоритм: основные свойства и способы представления
- •1.5.2. Базовые элементы и структуры программирования
- •1.5. Алгоритмы
- •1.5.3. Представление линейных, разветвленных и циклических структур
- •2. ОБщие сведения об операционных системах
- •2.1. Общие сведения об операционных системах
- •2.1.1. Предпосылки создания и краткая история операционных систем ms-dos и Windows
- •2.1.1.1. Операционная система ms-dos
- •2.1.1.2. История создания операционной системы Windows
- •2.1.2. Основные отличия версий операционных систем
- •2.1.2.1. Операционная система Mac os
- •2.1.1.2. Операционная система Linux
- •2.1.1.3. Операционная система Windows
- •2.1.3. Основные команды операционной системы ms-dos
- •2.2. Основные элементы интерфейса операционной системы Windows
- •2.2.1. Элементы интерфейса ос Windows
- •2.2.2. Работа с файловыми системами операционной системы
- •3.2. Элементы языка с
- •3.2.1. Алфавит языка с (используемые символы)
- •3.2.2. Идентификаторы
- •3.2.3. Константы
- •3.2.4. Ключевые слова
- •3.2.5. Знаки операций
- •3.2.6. Комментарии
- •3.3. Лекция 6. Типы данных и их объявление
- •3.3.1. Основные типы данных
- •3.3.2. Объявление типов данных
- •3.4. Лекция 7. Указатели и массивы
- •3.4.1. Объявление указателей
- •3.4.2. Инициализация указателей
- •3.4.3. Составные указатели
- •3.4.4. Операции над указателями
- •3.4.5. Ссылки
- •3.5. Лекция 8. Массивы
- •3.5.1. Одномерные массивы
- •3.5.2. Многомерные массивы
- •3.5.3. Динамические массивы
- •3.5.3.1. Одномерные динамические массивы
- •3.5.3.2. Динамический многомерный массив
- •3.5.4. Символьные массивы (строки)
- •3.6. Лекция 9. Выражения и присваивания
- •3.6.1. Операции инкремента и декремента (увеличения и уменьшения на 1)
- •3.6.2. Операция определения размера типа
- •3.6.4. Операции деления ( / ) и нахождения остатка от деления ( % )
- •3.6.7. Поразрядные операции
- •3.6.8. Логические операции
- •3.6.9. Операции присваивания
- •3.6.10. Условная операция
- •3.6.11. Приоритеты выполнения операций
- •3.6.12. Преобразование типов
- •3.7. Лекция 10. Операторы
- •3.7.1. Операторы ветвления
- •3.7.1.1. Условный оператор if
- •If (выражение) [оператор_1]; [ else оператор_2 ; ]
- •3.7.1.2. Оператор switch
- •3.7.2. Операторы цикла
- •3.7.2.1. Цикл с предусловием (while)
- •3.7.2.2. Цикл с постусловием (do while)
- •3.7.2.3. Цикл с параметрами ( for )
- •3.7.3. Операторы передачи управления
- •3.7.3.1. Оператор безусловного перехода goto
- •3.7.3.2. Оператор прерывания break
- •3.7.3.3. Оператор пропуска continue
- •3.7.3.4. Оператор возврата из функции return
- •4. Модульное программирование
- •4.1. Лекция 11. Функции
- •4.1.1. Объявление функций
- •4.1.2. Определение функций
- •4.1.3. Вызов функций
- •4.1.4. Передача параметров в функцию
- •4.1.5. Передача массивов в функцию
- •В примере:
- •4.1.6. Функции с переменным числом параметров
- •4.1.7. Рекурсивные функции
- •4.1.8. Функция main()
- •4.1.9. Перегрузка функций
- •4.1.10. Шаблоны функций
- •4.2. Лекция 12. Директивы препроцессора
- •4.2.1. Директива #include
- •4.2.1. Директива # define
- •4.2.3. Директивы условной компиляции
- •4.2.4. Директивы #undef
- •4.3. Лекция 13. Пользовательские типы данных
- •4.3.1. Переименование типов
- •4.3.2. Перечисления
- •4.3.3. Структуры
- •4.3.4. Битовые поля
- •4.3.5. Объединения
- •5. Программирование графических изображений в языке с
- •5.1. Лекция 14. Программирование графических изображений
- •5.1.1. Графический режим видеоадаптера
- •5.1.2. Функции управления графическим окном
- •5.1.3. Управление цветом и стилем заполнения фигур
- •5.1.4. Рисование простейших графических фигур
- •5.1.5. Отображение текстовой информации в графическом режиме
- •5.1.7. Преобразование координат и анимационные эффекты
- •6.1.1.3. Функция gets()
- •6.1.1.4. Функция puts()
- •6.1.1.5. Функции printf() и scanf()
- •Потоковые объекты ввода/вывода (форматируемые):
- •6.1.2.1 Форматирование данных с помощью флагов и методов
- •6.2. Функции файлового ввода и вывода
- •6.2.1. Файловый ввод и вывод средствами с
- •6.3. Строки: операции с текстовыми файлами
- •6.3.1. Операции над строками
- •6.3.2. Методы и функции ввода и вывода строк
- •6.4. Лекция 18. Операции со структурами и бинарными файлами
- •6.5. Лекция 19. Списки: операции с динамическими структурами данных; организация списков и их обработка
- •6.5.1. Линейные списки
- •6.5.2. Стеки
- •6.5.3. Очередь
- •6.5.4. Бинарные деревья
Потоковые объекты ввода/вывода (форматируемые):
сin — связывается с клавиатурой (входные потоки с буфером);
сout — связывается с экраном (выходные потоки с буфером);
cerr — связывается с экраном для вывода сообщений об ошибках (выходные потоки без буфера);
clog — связывается с экраном для вывода сообщений об ошибках (выходные потоки с буфером).
Функции (методы) ввода/вывода (неформатируемые):
get () — возвращает считанный из потока код символа или код ошибки 0x E0F;
get (ch) — возвращает ссылку на поток, из которого выполнялось чтение, и записывает извлеченный символ в ‘ch’.
put (ch) — выводит в поток символ ‘ch’ и возвращает ссылку на поток.
Способы форматирования данных в потоковых классах:
— с помощью флагов;
— с помощью манипуляторов;
— с помощью форматирующих методов.
Флаги — отдельные биты, объединённые в поле x_flays типа long класса ios.
6.1.2.1 Форматирование данных с помощью флагов и методов
Поля класса ios, используемые при форматировании:
int x_flags — отдельные биты форматирования, объединенные в поле типа long;
int x_width — минимальная ширина поля вывода;
int x_precision — кол-во цифр в дробной части при выводе вещественных чисел с фиксированной точкой или общее ко-во значащих цифр при выводе в форме с мантиссой и порядком;
int x_fill — символ заполнения поля вывода.
Флаги форматирования данных в потоковых классах представлены в таблице 6.1.
Таблица 6.1 — Флаги форматирования данных в потоковых классах
Флаг |
Положение |
Действие при установке бита (флага) |
skipws |
0x001 |
При извлечении пробельные символы игнорируются |
left |
0x002 |
Выравнивание по левому краю поля |
right |
0x004 |
Выравнивание по правому краю поля |
internal |
0x008 |
Выводится знак числа по левому краю, число — по правому. Между — символы из x_fill (пробелы по умолчанию) |
dec |
0x0010 |
Десятичная система счисления |
oct |
0x0020 |
Восьмеричная система счисления |
hex |
0x0040 |
Шестнадцатеричная система счисления |
showbase |
0x0080 |
Выводится основание системы счисления (0x — для шестнадцатеричных чисел, 0 — для восьмеричных) |
showpoint |
0x0100 |
Печатать десятичную точку и дробную часть |
uppercase |
0x0200 |
При выводе используются символы верхнего регистра |
showpos |
0x0400 |
Печатать знак при выводе положительных чисел |
scientific |
0x0800 |
Печатать вещественные числа в форме мантиссы с порядком |
fixed |
0x1000 |
Печатать вещественные числа в форме с фиксированной точкой (точность — из x_precision) |
Управление флагами поля x_flags c помощью методов flags, setf и unsetf:
long ios :: flags( ) — возвращает текущие флаги потока;
long ios :: flags(long) — присваивает флагам значение параметра;
long ios :: setf(long, long) — присваивает флагам, биты которых установлены в первом параметре, значение битов второго параметра;
long ios :: setf(long) — устанавливает флаги, биты которых установлены в параметре;
long ios :: unsetf(long) — сбрасывает флаги, биты которых установлены в параметре.
Примечание:
— все функции (методы) возвращают прежние значения флагов;
— перед установкой некоторых флагов требуется сбросить флаги, которые не могут быть установлены одновременно с ними. Для этого используют второй параметр метода setf статические константы класса ios:
adjustfiled (left | right | internal) — выравнивание;
basefiled (dec | oct | hex) — система счисления;
floatfiled (scientific | fixed) — представление дробных чисел.
Управление полями x_width, x_precision и x_fill с помощью методов width, precision и fill:
int ios :: width( ) — возвращает значение ширины поля вывода;
int ios :: width(int) — устанавливает ширину поля вывода в соответствии со значением параметра;
int ios :: precision( ) — возвращает значение точности представления при выводе вещественных чисел;
int ios :: precision(int) — устанавливает значение точности представления при выводе вещественных чисел;
char fill( ) — возвращает текущий символ заполнения;
char fill(char) — устанавливает значение текущего символа заполнения.
Пример (форматированный вывод):
…
cout.width(10);
cout.precision(3) , cout.setf(ios :: showpoint) ;
cout.setf(ios :: left , ios :: adjustfield) ;
cout.setf(ios :: fixed , ios :: floatfield) ;
cout<<a ;
…
cout.width(7) ;
cout.setf(ios :: hex | ios :: showbase | ios :: uppercase) ;
cout<<b ;
Пример (неформатированный ввод/вывод):
#include <iostream.h>
void main()
{
int const n=4 ;
int i;
char b[n] ;
for(i=0; i<n; i++)
{ cin.get(b[i]) ; } //<– –b[i]=cin.get();
for(i=n–1; i>=0; i––)
{ cout.put(b[i]) ; }
}
Результат выполнения программы:
Ввод: abcd <ENTER>
На экране: abcd
dcba
6.1.2.2. Форматирование данных с помощью манипуляторов
Манипуляторы — это функции, которые включаются в цепочку операций помещения и извлечения для форматирования данных.
Манипуляторы разделяются на:
— простые (без аргументов);
— параметризированные (требующие указания аргументов).
Особенности использования манипуляторов:
— использование манипуляторов требует подключения библиотечного файла <iomanip.h> ;
— изменение системы счисления действует до следующего явного изменения системы счисления;
— применение манипуляторов удобнее методов установки флагов форматирования.
Рассмотрим простые манипуляторы:
dec — устанавливает при вводе и выводе флаг десятичной системы счисления;
oct — устанавливает при вводе и выводе флаг восьмеричной системы счисления;
hex — устанавливает при вводе и выводе флаг шестнадцатеричной системы счисления;
ws — устанавливает при вводе извлечение пробельных символов;
endl — при выводе включает в поток символ новой строки и выгружает буфер;
ends — при выводе включает в поток нулевой символ;
flush — при выводе выгружает буфер.
Пример:
cout<<13<<hex<<' '<<13<<oct<<' '<<13<<endl;
На экране появится надпись:
13 d 15
Рассмотрим параметризированные манипуляторы <iomanip.h>:
setbase(int n) — задаёт основание системы счисления (n=8, 16, 10 или 0);
resetiosflags(long) — сбрасывает флаги состояния потока;
setiosflags(long) — устанавливает флаги состояния потока;
setfill(int) — устанавливает символ-заполнитель;
setprecision(int) — устанавливает точность вещественных чисел;
setw(int) — устанавливает максимальную ширину поля вывода.
Пример:
//параметризованные манипуляторы:
double d[] = {1.234, -12.34567, 123.456789, -1.234,0.00001};
cout <<setfill(‘.’)<<setprecision(4)
<<setiosflags(ios::showpoint | ios::fixed);
for(int i=0; i<5; i++) cout<<setw(12)<<d[i]<<endl ;
Результат выполнения программы (на экране):
......1.2340
..–12.3457
..123.4568
….–1.2340
……0.0000
