
- •Технология программирования линейных процессов
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ключевые слова
- •Константы
- •Целые константы
- •Вещественные константы
- •Текстовые константы
- •Переменные
- •Правила записи и использования оператора
- •Функции. Вызовы функций
- •Арифметические выражения
- •Правила записи и вычисления арифметических выражений
- •Оператор присваивания
- •Правила составления и использования
- •Операторы ввода-вывода
- •Оператор ввода
- •Правила составления и выполнения оператора ввода
- •Оператор вывода на дисплей
- •Правила составления и выполнения оператора вывода
- •Оператор вывода в поток
- •Организация ввода-вывода переменных
- •Ввод переменных
- •Вывод переменных
- •Заголовок программы
- •Тело программы
- •Поэлементная структура простейшей программы
- •Предмашинная подготовка задачи определения площади круга
- •Постановка задачи
- •Создание математической модели задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
Оператор вывода в поток
Используется для вывода значений переменных в информационный поток.
Поток – последовательность информации, формируемая (считываемая) в процессе решения задачи.
Потоки реализуются вводом информации с клавиатуры, чтением из файла, выводом на монитор (в консольное окно), записью в файл.
Структура оператора:
fprintf(Указ_уст, “управляющая строка” [, П1, …, Пi, ... ,Пn]);
, где fprintf – имя функции («напечатать»)
Указ_уст – указатель устройства вывода;
“управляющая строка” – список спецификаторов выводимых переменных, оформленный в виде символьной строки;
П1 Пi Пn – список идентификаторов выводимых переменных;
, , – разделители аргументов функции fprintf;
( ) – ограничители аргументов функции fprintf;
[ ] – признак необязательности содержимого;
; – символ оператора.
Указатель (Указ_уст) предписывает организацию потока вывода на одно из стандартных устройств (экран, принтер, магнитный диск и т.д.).
В качестве указателя устройства используются идентификаторы устройства или файла:
-
stdout;
-
УИФ.
Указатель stdout предписывает организацию потока вывода на экран дисплея.
При выводе потока в файл, задается УИФ (указатель имени файла), принимающего поток. Формирование УИФ в данной главе не рассматривается.
Оператор fprintf предписывает последовательный вывод в поток численных значений переменных списка в форматах, предписанных управляющей строкой.
Структуры спецификаторов, правила записи и использования оператора идентичны рассмотренным для оператора printf.
Так, оператор
fprintf(stdout,“%10d%9.1f%11.1e”, i, r, z);
предписывает вывод на экран монитора численных значений трех переменных аналогично рассмотренному в операторе printf.
-
Внимание! Использование функции вывода fprintf c указателем устройства stdout идентично использованию функции вывода printf.
-
Организация ввода-вывода переменных
Рассмотренные операторы позволяют овладеть технологией (методикой) организации ввода-вывода переменных.
-
Внимание! В предлагаемом разделе рассматривается использование спецификаторов классической структуры (длина и точность обязательны).
Организация ввода-вывода с использованием укороченных спецификаторов представлена в разд. 6.2.1.1.
Ввод переменных
Для вводимых переменных численные значения известны. Поэтому методика организации ввода достаточно проста:
-
создать идентификаторы переменных для входных данных алгоритма, определив тип каждого;
-
сформировать константы из численных значений исходных данных;
-
привести типы констант в соответствие с типами их переменных;
-
определить длину поля значения каждой вводимой переменной;
-
сформировать спецификатор каждой переменной;
-
установить желательную последовательность переменных в списке ввода;
-
сформировать адрес каждой переменной;
-
записать оператор ввода, расположив спецификаторы в управляющей строке в той же последовательности, что и адреса переменных списка.
Пример 3.1. Осуществить ввод переменных A=13,2 B= -6,8 I=70 PI=3,1416.
Подготовка к вводу представлена в табл. 3.9.
Таблица 3.9
Запись в задаче |
Обозначение в Си/Си++ |
Тип переменой |
Обозначение типа |
Длина поля |
Специфи-катор |
A=13,2 B= -6,8 I=70 PI=3,1416 |
a=13.2 b= -6.8 i=70 pi=3.1416 |
Вещественный Вещественный Целый Вещественный |
f f d f |
4 4 2 6 |
%4f %4f %2d %6f |
Расположение переменных в списке оператора ввода произведем аналогично табличному. При этом фрагмент программы по организации ввода оформится операторами:
float a, b, pi; /* описатели */
int i; /* переменных */
. . .
scanf(“%4f%4f%2d%6f”, &a, &b, &i, &pi );/*оператор ввода*/
Строка численных значений, подготовленных к вводу, будет иметь вид:
13.2-6.8703.1416
Следовательно, управляющая строка оператора ввода каждым спецификатором предписывает, какая часть вводимых значений соответствует конкретной переменной (переменной a – первые четыре символа, переменной b – следующие четыре, переменной i – два, переменной pi – шесть).
Пример 3.2. Осуществить ввод переменных для расчёта площади (длины Д=120 м; ширины Ш=3,6 10-3 км; переводного коэффициента K= 0,001 км/м)
В этом примере требуется предварительная подготовка данных, так как типы переменных Д и Ш не совпадают с типами их значений.
Методику преобразования представим табл. 3.10.
Таблица 3.10
Запись в задаче |
Обозначение в Си/Си++ |
Тип переменой |
Обозначение типа |
Длина поля |
Специ-фикатор |
Д=120 Ш=3,6 10-3 K= 0,001 |
d=120. sh=3.6E-3 k= 0.001 |
Вещественный Вещественный Вещественный |
f e f |
4 6 5 |
%4f %6e %5f |
Расположение переменных в списке оператора ввода произведем аналогично табличному.
При этом фрагмент программы по организации ввода оформится операторами:
float d, sh, k; /* описатели переменных */
. . .
scanf(“%4f%6e%5f”, &d, &sh, &k ); /* оператор ввода */
Строка численных значений, подготовленных к вводу:
120.3.6E-30.001