
- •Общие сведения
- •Средства разработки
- •Структура программы
- •Алфавит
- •Лексемы
- •1.2. Переменные. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •1.3. Константы
- •1.4. Операции Арифметические
- •Присваивание
- •1.5. Операторы ветвления и цикла
- •1.6. Функции Описание и вызов
- •Неявно заданные параметры функции
- •Рекурсия
- •Механизм вызова функций, подставляемые функции
- •Перегрузка функций. Параметры по умолчанию
- •1.7. Указатели. Массивы. Строки Обзор
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Операции над указателями
- •Массивы
- •Многомерные массивы
- •Указатели в качестве параметров функций
- •Указатель на функцию
- •Функции работы с указателями и памятью
- •Строки.
- •1.8. Организация ввода-вывода
- •Форматированный ввод-вывод
- •1.9. Директивы препроцессора
- •1.10. Метки. Безусловный переход
- •1.11. Время жизни и область видимости переменных
- •1. 12. Многофайловые проекты
- •1.13. Введение в объектно-ориентированное программирование
- •2.3. Проблемы разработки сложных программных систем
- •2.4. Жизненный цикл программного продукта
- •Модели жц.
- •Экстремальное программирование
- •2.5. Оценка качества процессов создания программного обеспечения
- •2.6. Проектирование надёжного программного средства
- •2.7. Процессы проектирования
- •2.8. Требования, цели
- •2.9. Внешнее проектирование
- •Диаграммы потоков данных (Data Flow Diagrams).
- •Диаграммы переходов состояний (State Transition Diagrams). Функциональные диаграммы.
- •Описание структур данных
- •2.10. Проектирование архитектуры
- •2.11. Проектирование модульной структуры. Модуль
- •Внешнее проектирование модулей
- •Модульная декомпозиция
- •2.12. Кодирование.
- •2.13. Тестирование
- •2.14. Документирование
- •2.15. Проектирование пользовательского интерфейса
- •Реализация многомерных массивов
- •Очередь и стек
- •Ассоциативные массивы
- •3.3. Упорядоченные структуры данных.
- •Сортировка методом пузырька
- •Быстрая сортировка
- •3.4. Деревья
- •Бинарное дерево
- •Обход дерева
- •3.5. Множества, графы Множества
- •3.6. Строки Константные строки
- •Списковое представление строк
- •Представление массива строк
- •3.7. Библиотека stl
- •3.8. Реализация некоторых структур данных Реализация двусвязанного списка.
- •Реализация массива переменного размера:
- •Примеры программ
- •Список литературы
Форматированный ввод-вывод
Для форматированного вывода в поток предназначена функция
fprintf(FILE* stream, const char* formatted_string, arguments, …)
Для подстановки значений переменных в строку вывода используют символы подстановки (спецификаторы формата), начинающиеся с символа «%»:
%[флаги][размер][.точность][модификатор_длины]тип_данного1
Флаги:
«-» – выравнивание результата по левому краю (по умолчанию – по правому относительно заданного количества выводимых символов);
«+» – результат всегда начинается со знака (+/-);
«#» – особая форма отображения результата.
Размер показывает, сколько символов отводится для записи результата, может быть представлен в следующих форматах:
n – минимум n символов отводится для записи числа, недостающие символы заменяются пробелами;
0n – то же, но недостающие символы заменяются нулями;
* – список аргументов содержит размеры данных.
Точность показывает для вещественных чисел количество знаков после десятичной точки.
Модификатор длины может принимать одно из значений:
F – «длинный» указатель;
N – «короткий» указатель;
h – short int;
l – long int, double;
L – long double.
Тип данного может принимать одно из значений:
%d, %i – знаковое десятичное целое;
%u – беззнаковое десятичное целое;
%o – беззнаковое восьмеричное целое;
%x, %X – беззнаковое шестнадцатеричное целое;
%f – знаковое вещественное;
%e, %E – знаковое вещественное в экспоненциальной форме;
%g, %G – знаковое вещественное, форма зависит от числа, размера и точности;
%c – символ;
%s – строка;
%% – символ «%»;
%n, %p – указатель.
Аргументы, передаваемые в функцию, должны соответствовать количеству и типу спецификаторам формата.
Для форматированного ввода данных из потока используется функция
fscanf(FILE* stream, const char* formatted_string, arguments, …)
Строка также может содержать спецификаторы формата, при этом:
– при невозможности предобразования строки в число, число принимает значение ноль;
– строкой считается слово до разделителя (пробел, табуляция, перевод строки).
Для стандартных потоков определены аналогичные функции:
printf(const char* formatted_string, arguments, …)
scanf(const char* formatted_string, arguments, …)
являющиеся аналогами описанных ранее функций, разница заключается в том, что используются стандартные потоки ввода и вывода (stdin, stdout) которые в качестве аргументов не указываются.
Определены функции, использующие вместо потока строку:
sprintf(char *dest, const char* formatted_string, arguments, …)
sscanf(char *src, const char* formatted_string, arguments, …)
1.9. Директивы препроцессора
Есть специальные команды, которые не компилируются, а лишь указывают препроцессору на необходимость выполнения некоторых действий. Директивы начинаются с символа #.
#include <имя_файла> - добавить в данное место содержимое файла, файл содержится в специальном каталоге подключаемых файлов;
#include "имя_файла" - тоже, но для файла из текущего каталога.
Примеры стандартных заголовочных файлов (аналоги библиотек в других ЯВУ):
stdio.h – стандартный ввод-вывод;
string.h – работа со строками;
math.h – математические операции;
limits.h – константы предельных значений;
Следующие заголовочные файлы определены только для ОС Ms Dos и консольных приложений Ms Windows
conio.h – консольный ввод-вывод;
mem.h – функции работы с памятью;
dos.h – команды ОС Ms Dos.
#define идентификатор строка_замещения - заменяет все идентификаторы от директивы до конца файла на строку замещения.
#define WIDTH 80
#define LENGTH ( WIDTH + 10 )
#define test( f1, f2 ) ( f1 * f2 )
#undef идентификатор - отменяет директиву define, после данной директивы замен не производится.
#if, #elif, #else, #endif – организуют ветвление.
#ifdef, #ifndef – далее следующий код будет откомпилирован только если определена / неопределенна макроподстановка.