- •Ф.Ф. Павлов технология программирования
- •Санкт-Петербург
- •090103 – Организация и технология защиты информации
- •Содержание
- •Раздел 1 Создание программных приложений………………..…..7
- •Тема 1. Технология программирования. Основные понятия........7
- •Тема 3. Объектно-ориентированный подход
- •Тема 4 Объектно-ориентированное проектирование
- •Раздел 3 «Перспективные направления в области создания технологий программирования» содержит 3 темы: технология ActiveX, технологии доступа к базам данных, технологии для работы в Internet.
- •Раздел 1. Создание программных приложений
- •Тема 1. Технология программирования.
- •1.1. Этапы эволюции технологии программирования
- •1.2. Жизненный цикл и этапы разработки программ
- •1.3. Постановка задачи и спецификация программы
- •1.4. Проектирование и реализация программы
- •2.1 Структура программы
- •2.2 Структура функции
- •2.3. Типы данных
- •2.4. Средства управления экраном и клавиатурой
- •2.5 Средства управления файлами
- •Тема 3. Объектно-ориентированный подход
- •3.1. Сущность объектно-ориентированного подхода
- •3.2. Инкапсуляция
- •3.3. Наследование
- •3.4. Полиморфизм
- •Тема 4. Объектно-ориентированное проектирование
- •4.1. Постановка задачи и определение спецификаций
- •4.2. Проектирование структуры программы
- •4.3. Проектирование файлов интерфейсов классов
- •4.4. Проектирование файлов реализации классов
- •Раздел 2. Особенности программирования в Windows
- •5.1. Система окон разработки и система меню
- •5.2. Библиотека классов mfc
- •5.3. Сообщения – реакция на события
- •Тема 6. Создание Windows-приложений
- •6.1. Консольные приложения
- •6.4. Диалоговые приложения
- •Тема 7. Ввод-вывод информации
- •7.1. Управление клавиатурой
- •7.2. Управление курсором
- •7.3. Управление мышью
- •Тема 8. Программирование интерфейса приложений
- •8.1. Система меню
- •8.2. Система диалоговых окон и элементов управления
- •Тема 9. Программирование файловой обработки
- •9.1. Файловая обработка объектов класса mfc
- •9.2. Файловая обработка объектов классов пользователя
- •9.3. Файловая обработка с классом cFile
- •Тема 10. Технология программирования в Widows
- •10.1. Проектирование структуры программы,
- •10.2. Создание классов предметной области
- •10.3. Создание диалоговых окон
- •10.4. Создание диалоговых окон базы справочных
- •10.5. Создание ведомости результатов
- •Раздел III. Прогрессивные технологии
- •Тема 11. Технология ActiveX
- •11.1. Концепция технологии ActiveX
- •11.2. Создание приложения-контейнера
- •11.3. Создание приложения-сервера
- •Тема 12. Поддержка баз данных
- •12.1. Технологии доступа к данным
- •12.2. Создание приложения с базой данных
- •Тема 13. Программирование для Internet
- •13.1. Технологии для работы в Internet
- •13.2. Приложение в стиле браузера
- •13.3. Приложение с протоколом http в WinInet
- •13.4. Приложение с протоколом ftp в WinInet
- •Раздел 1 «Создание программных приложений»:
- •Раздел 2 «Особенности программирования в Windows»:
- •Раздел 3 «Прогрессивные технологии программирования»:
- •Извлечение из рабочей программы дисциплины
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •4. Содержание разделов и тем дисциплины
- •Раздел 1. Создание программных приложений
- •Тема 1. Технология программирования. Основные
- •Тема 4. Технология объектно-ориентированного
2.4. Средства управления экраном и клавиатурой
В C++ нет встроенных средств ввода-вывода. Альтернативой этому служит наличие библиотек ввода-вывода. Рассмотрим библиотеку iostream, имеющую средства управления экраном и клавиатурой.
Базовая библиотека ввода-вывода потоков iostream обладает улучшенной гибкостью и элегантностью по сравнению с другими библиотеками ввода-вывода ,например, с stdio. Поэтому, настоятельно рекомендуем пользоваться этой библиотекой. Библиотека построена в виде иерархии классов.
Потоковый ввод может применятся с стандартным входным потоком cin(клавиатура). Для выполнения ввода используется перегруженная операция ">>" - операция извлечения.
cin>>per; //p - переменная базовых типов.
С клавиатуры читается последовательность символов до пробела, преобразуется к типу per и помещается в per.
Потоковый вывод применяется со стандартным выходным потоком cout(экран дисплея). Для выполнения вывода используется перегруженная операция "<<" - операция вставки.
cout<< per;//per-перем.,выражение,константа базовых типов.
Значение per преобразуется в последовательность символов и выводится на экран.
Несколько операторов вывода с операцией вставки (<<) можно объединять в один (сцеплять). Тоже относится и к операции извлечения, но при вводе необходим разделитель-пробел.
Форматирование ввода/вывода в библиотеке iostream.h выполняется флагами форматирования и некоторыми функциями, заданными в классе ios. Перечислим флаги форматирования:
---------------------------------------------------------------------------------
Поле Флаг Действия
---------------------------------------------------------------------------------
ios::adjustfield ios::left Прижим влево
ios::right Прижим вправо
ios::basefield ios::dec Вывод целого десятичного
ios::oct Вывод целого восьмеричного
ios::hex Вывод целого шестнадцатиричного
ios::floatfield ios::fixed Вывод с фиксированной точкой
ios::scientific Вывод с плавающей точкой
ios::skipws Пропуск пробелов при вводе
ios::showbase Вывод целых чисел с основанием
системы счисления
ios::showpoint Вывод вещественных с десятич-
ной точкой и хвостовыми нулями
ios::showpos Вывод положительных чисел с +
ios::uppercase Вывод прописных X и E
Перечислим функции форматирования класса ios.
- Установка флагов форматирования:
seft(flag) - для флагов без поля форматирования;
seft(flag,pole) - для флагов с полем форматирования.
Примеры:
cout.setf(ios::showpos);
cout.setf(ios::fixed,ios::floatfield);
cout.setf(ios::showpoint|ios::uppercase);//Несколько флагов
- Сброс флагов форматирования: unsetf(flag);
- Установка ширины поля вывода:
width(n) - устанавливает ширину поля n позиций и возвращает предыдущую ширину;
width() - только возвращает текущую ширину поля.
Пример:
cout.width(5);
cout<<123; //__123
cout<<456; //456 ширина поля сбросилась в ноль
- Установка символа-заполнителя:
fill(ch) - устанавливает символ-заполнитель ch и возвращает предыдущий;
fill() - только возвращает текущий символ-заполнитель. По умолчанию - пробел.
Пример:
cout.fill('*');
cout.width(5);
cout<<123; //**123
- Установка точности вещественных чисел:
precision(n) - устанавливает n цифр после точки и возвращает предыдущее значение;
precision() - только возвращает точность. По умолчанию точность равна 6 и хвостовые нули усекаются. Если после точки имеются только нули, то усекаются хвостовые нули и точка.
Пример:
cout.precision(2);
cout<<1.2345; //1.23
Альтернативным способом форматирования ввода/вывода является использование функций-манипуляторов:
dec - ввод/вывод целых десятичных чисел;
oct - ввод/вывод целых восьмеричных чисел;
hex - ввод/вывод целых шестнадцатиричных чисел;
setw(n) - установка ширины поля n;
setprecision(n) - установка точности n;
setfill(ch) - установка символа-заполнителя ch;
ws - извлечение пробелов при вводе;
endl - вставка символа новой строки и очистки потока(вывод);
ends - вставка конечного нулевого символа в строку(вывод);
setbase(n)-установка системы счисления при преобразованиях;
setiosflags(flag) - установка флагов форматирования flag;
resetiosflags(flag) - очистка флагов форматирования flag.
Манипуляторы могут быть записаны прямо в операциях ввода/вывода в виде цепочки. При использовании параметризированных манипуляторов необходимо включить в программу библиотеку iomanip.h .
Пример:
cout<<setw(7)<<setprecision(2)<<12.345 //__12.34
Основными средствами ввода/вывода библиотеки iostream.h являются операции вставки (<<) и извлечения (>>). Помимо операций вставки и извлечения для ввода/вывода можно использовать функции.
- Ввод с клавиатуры символа: get(ch) - функция с параметром; get() - функция без параметра.
cin.get(ch);
ch=cin.get();
- Ввод с клавиатуры строки: get(),getline(),read().
cin.get(buf,n[,razd]);
cin.getline(buf,n[,razd]);
cin.read(buf,n);
,где buf - массив символов, n -количество символов, razd -символ-разделитель.
Функция get прекращает ввод, когда либо введено n-1 символов, либо встретился символ-разделитель razd, который не вводится, либо - символ конца файла(^Z). Отличие функции getline от get в том, что символ-разделитель razd тоже вводится.
- Вывод символа на экран: put(ch).
cout.put(ch);
- вывод строки на экран: write().
cout.write(buf.n);
Отличие этих функций от операций вставки и извлечения в том, что они не имеют средств форматирования и преобразования данных.
Для ввода с клавиатуры содержимого документов и вывода результатов задач на экран предпочтение лучше отдать операциям >> и <<. При вводе строки, имеющей внутри пробелы, операция извлечения (>>) введет только часть строки до первого пробела. В такой ситуации лучше использовать функции.