Правила записи и использования оператора

1. За описателем располагается список переменных, типы которых объявляются.

2. Количество идентификаторов в списке не ограничено.

3. Использование нескольких описателей одного типа допускается. При этом желательно, чтобы они располагались компактно (блочно).

Так, при необходимости использования в задаче целочисленных переменных (A2, igr) и вещественных с обычной точностью (s, s1, sum) возможны следующие варианты описания:

int A2, igr; float s, s1, sum; int A2; int igr; float s, s1, sum; int A2, igr; float s, s1; float sum; int A2, igr; float s, s1, sum;

С точки зрения правил выполнения все варианты равноценны. Разработчик программы, в соответствии с реализуемым стилем программирования, выбирает нужный.

Первый (левый) вариант компактен по записи, второй (третий) использует дополнительный оператор int (float), четвёртый содержит оператор со структурированным списком переменных. К использованию можно рекомендовать первый (четвёртый) вариант.

4. Дополнительные типы применяют для описания целых переменных. При этом возможны два варианта описания – полный (с двумя, тремя ключевыми словами) и укороченный (описатель int не указывается).

Примеры описания имеют вид:

Полный вариант Укороченный вариант
long int sh; short int n, N; unsigned long int i, j, k; long sh; short n, N; unsigned long i, j, k;

5. Переменные при описании могут определяться (инициализироваться), т. е. получать значения констант.

Примеры различных видов описания:

Блочное описание Описание с инициализацией
int ss, sr, sob1; int qm, li; float a, b, pi, summa; float ax, tok, b48; char per='\n'; int pic=264, i=0; double z=2.34E27, pr=-78.3; float x, y, z=15.2e-3;

В последнем операторе описания с инициализацией переменная z – определена, переменные x, y – не определены.

6. Операторы описания предписывают для указанных в списке переменных резервирование соответствующего числа ячеек памяти. Размер и структура каждой ячейки определяются типом описателя.

7. Описатели переменных располагаются в тексте программы.

ü Внимание! В расчетах могут использоваться только описанные и определённые переменные.

Следовательно, переменные, не определённые при описании, должны получить свои значения при вводе (расчёте).

Функции. Вызовы функций

Функция – универсальная базовая конструкция языка, формирующая совокупность вычислений (выполнения действий), планируемых пользователем.

Структура функции:

[тип] имя ([b1, …, bi, …, bn])

{

тело

функции

}

, где имя – идентификатор (название) функции;

тип – описатель типа функции (результата);

b1 bi bn – параметры (аргументы), используемые в вычислениях (действиях) тела функции;

, , – разделители аргументов;

( ) – ограничители параметров;

[ ] – признак необязательности содержимого;

тело – основная часть функции, реализующая требуемые вычисления (действия);

{ } – ограничители тела.

Заголовок – первая строка функции.

Функция может быть пользовательской или системной.

Пользовательская – функция, составленная разработчиком программы для компактного оформления некоторого участка вычислений, желательно, многократного использования.

Системная – функция для выполнения стандартных вычислений (действий), хранящаяся в одной из библиотек языка программирования.

Функция, как самостоятельная основная конструкция используется в виде исключения (см. разд. 3.5.5.2).

Как правило, она является дополнительным, зависимым модулем. Использование функции в этом, стандартном, варианте организуется обращением к ней (вызовом).

Вызов функциипростейшая конструкция, выполняющая общение с функцией – передачу ей значений параметров и получение результатов работы.

Структура вызова функции:

имя( [ a1, …, ai, ... , an] )

где имя – идентификатор функции;

а1 ai an – аргументы, передаваемые в функцию;

, – разделители аргументов;

( ) – ограничители аргументов;

[ ] – признак необязательности содержимого.

В качестве аргументов используются константы, переменные, вызовы функций или их совокупности (арифметические выражения).

В вычислительных процессах часто используются тригонометрические и другие неарифметические (трансцендентные) функции. Программы их вычисления разработаны и включены в библиотеку системных функций языка Си/Си++. Примеры активно применяемых функций представлены в табл.3.6.

Таблица 3.6

Математическая запись Вызов функции Наименование функции
ln x log(x) Натуральный логарифм
Правила записи и использования оператора - №1 - открытая онлайн библиотека log10(а) Десятичный логарифм
e0.5 exp(0.5) Экспонента
Правила записи и использования оператора - №2 - открытая онлайн библиотека sqrt(y) Корень квадратный
sin x sin(х) Синус
cos в cos(в) Косинус
tg(x+с) tan(x+с) Тангенс
arcsin x asin(x) Арксинус
arccos в acos(в) Арккосинус
arctg с atan(c) Арктангенс
xy pow(x,y) Возведение в степень
| x | fabs(x) Нахождение абсолютного значения х

Аргументы всех функций табл. 3.6 должны быть двойной точности. Исключение – целый (при необходимости) показатель степени (у) в функции pow(x, y).

ü Внимание!

– использование аргументов других типов не запрещается, но может привести к неверным результатам;

– аргументы тригонометрических функций считаются заданными в радианах.

Результат вычисления указанных функций – вещественная десятичная константа двойной точности.

3.5.3. Выражения Си/Си++

Выражения – промежуточные конструкции входного языка. Соответствуют части предложения в разговорном языке.

Выражение– совокупность операндов, соединенных знаками действий (арифметических, логических) и разделенных, в случае необходимости, круглыми скобками.

Операнды – величины (данные), участвующие в операции (константы, переменные, вызовы функций).

Операция– действие (арифметическое или логическое) над данными (операндами).

Взаимодействие операндов и операций с выражением представлено на рис. 3.6.

Правила записи и использования оператора - №3 - открытая онлайн библиотека Рис. 3.6. Схема получения выражения

Выражение – промежуточная конструкция языка программирования,соответствующая сложному слову (части предложения) в разговорном языке.

Выражения делятся на арифметические и логические. Логические выражения рассмотрены в разд. 4.1.1.2.

Арифметические выражения

Арифметические выражения используются для программирования правых частей равенств.

Арифметическое выражение – совокупность операндов, соединенных знаками арифметических действий и разделенных, в случае необходимости, круглыми скобками.

В качестве операндов используются простейшие конструкции (данные) – константы, переменные, вызовы функций.

Под операциями подразумеваются арифметические действия.

В Си/Си++ существует большой набор операций, классифицируемых в большинстве случаев на унарные и бинарные.

Унарная – операция для обработки одного операнда.

Например, унарные операции используют для формирования знаковых констант (разд. 3.5.2.2).

Бинарная– операция с использованием двух операндов.

В арифметических выражениях используются унарные и бинарные операции.

К бинарным операциям относятся арифметические действия:

+ сложение;

- вычитание;

* умножение;

/ деление;

% взятие остатка (деление по модулю).

По способу машинного выполнения две первые операции называются аддитивными, три остальные – мультипликативными.

Результат вычисления любого арифметического выражения – константа. Поэтому, в языке Си/Си++ арифметическое выражение называется константным.

Правила записи и вычисления арифметических выражений

1. Арифметические выражения записываются одноэтажно. Например, 0.35+а*2-cos(b)/(PI+2).

2. Все знаки арифметических операций указываются явно. Например, А+В+С не равно АВ+С, так как во втором случае подразумевается переменная с именем АВ, а не две переменные.

3. Запись подряд двух знаков операций, как правило, запрещается (исключение см. разд. 6.2.1). Обойти это правило можно с помощью круглых скобок. Например, a*(-b).

4. Арифметическое выражение может быть любой сложности. Минимально может состоять из одного операнда. Реально определяется математической моделью задачи. Если зависимости математической модели относительно громоздки, рекомендуется представлять одну сложную зависимость несколькими простыми, – содержащими не более 5–7 операций в каждой.

5. Последовательность выполнения операций в арифметическом выражении соответствует принятой в математике:

· выражения в скобках;

· вычисления функций;

· умножения, деления;

· сложения, вычитания.

Например, выражение 0.2-cos(0.5)*pow(v,3) выполняется в следующем порядке: вычисление косинуса, возведение v в куб, умножение первого результата на второй и, наконец, вычитание из константы 0.2 константы, полученной после умножения.

6. Одноранговые операции выполняются слева направо. Например, выражение А*В/С*3 будет выполняться в порядке записи.

7. При необходимости нарушить последовательность выполнения действий используют скобки. Например, А+В/(С+D) или (0.2-v)*cos(0.5).

8. При делении целого операнда на целый от частного используется только целая часть. Так, результатом вычисления 5/2 будет целая константа 2, а выражения 2/5 – ноль. Для получения истинного результата необходимо сделать вещественными оба операнда или один из них. Например, 5./2. или 5./2 (5/2.).

9. Возведение в степень (pow(a,x)), если показатель (х) целочисленный, выполняется методом последовательного умножения. Если показатель степени вещественный, возведение осуществляется по формуле ax = еxlna. Использование функций (экспоненты и логарифма) приводит к получению приближенного значения результата.

10.В арифметическом выражении желательно использовать операнды одного типа. Например, i+23*k, если переменные i, k – целые или x*2.-0.36/cos(y), если переменные x, y – вещественные. В первом случае результатом будет целая константа, во втором – вещественная константа двойной точности (перед использованием автоматически все вещественные операнды приводятся к типу double).

11.Допускается применение смешанных арифметических выражений. При этом наличие хотя бы одного вещественного операнда приводит к получению результата (константы) с двойной точностью. Например, при вычислении выражения 4/z+i*k-0.07*sin(3./b) результатом будет вещественная константа двойной точности, если переменные i, k – целые, а z, b – вещественные. Аналогично, возможно получение дробного результата деления целых переменных использованием дополнительного операнда в виде вещественной константы (1.). Так, если переменные i и k описаны как целые, то результат выражения i/k есть целая константа (целая часть частного), а результат выражения i*1./k есть вещественная константа двойной точности. Следует помнить, что наличие операции деления двух целых операндов в смешанном выражении может привести к неверному результату. Например, вычисление выражения 0.02 + 3/5 - 0.01 дает неверный результат (0.01), так как второе слагаемое (частное от деления целой константы 3 на целую константу 5) равно нулю.

12.Деление по модулю % используют в целочисленной арифметике. Результат операции– остаток от деления целого операнда, записанного слева от знака операции, на операнд справа от него. Например, выражение 13%5 дает результат 3, поскольку 13=5*2+3, где 3 – остаток от деления.

13.Вычисление корня n-ой степени при n>2 требует предварительного преобразования его к виду Правила записи и использования оператора - №4 - открытая онлайн библиотека , а затем использование функции возведения в степень. Например, зависимость Правила записи и использования оператора - №5 - открытая онлайн библиотека должна быть преобразована к виду Правила записи и использования оператора - №6 - открытая онлайн библиотека , а затем сформирована как вызов функции pow(x,1./3.) Попытка вычисления функции вида pow(x,1/3) приведет к получению неверного результата – единицы, так как показатель степени (1/3) после деления станет равен нулю.

ü Внимание! Сообщения об ошибках, возможных при выполнении арифметических выражений (например, переполнение разрядной сетки), как правило, не выдаются.

Изучение выражений завершает рассмотрение простейших и промежуточных конструкций языка.

3.5.4. Основные конструкции Си/Си++

Оператор– основная конструкция большинства языков высокого уровня.

Оператор соответствует предложению в разговорном языке.

Каждый блок схемы алгоритма реализуется одним или несколькими операторами. Следовательно, совокупность операторов образует программу.

Программа на языке высокого уровня – последовательность операторов, выполняемых в порядке их записи.

В языке Си/Си++ базовой конструкцией является функция (разд. 3.5.2.4), что позволяет представлять любые участки вычислений структурировано (блочно). Поэтому некоторые операторы языка Си/Си++ есть функции, оформленные специальным образом.

ü Внимание! Отличительный признак оператора – завершающий его символ «точка с запятой».

По критерию значимость все операторы можно классифицировать схемой рис. 3.7.

Правила записи и использования оператора - №7 - открытая онлайн библиотека

Рис. 3.7. Классификация операторов

Неисполняемые – операторы-описатели не вызывающие действий в программе.

Исполняемые – операторы, предписывающие конкретные действия обработки информации в программе.

Неисполняемые операторы – вспомогательные конструкции алгоритмических языков.

Большинство из них – описатели типов операндов-переменных, участвующих в задаче.

Классификация операторов описателей представлена на рис. 3.8.

Правила записи и использования оператора - №8 - открытая онлайн библиотека

Рис. 3.8. Классификация операторов описателей

Назначение, структура, правила использования описателей изложены выше (разд. 3.5.2.3).

Исполняемые операторы – основные конструкции, формирующие программу.

Каждый из них при выполнении программы предписывает полную (частичную) реализацию указаний, соответствующего блока схемы алгоритма. Такими блоками являются ввод исходных данных, вывод результатов, вычисления по формулам, проверка условий, формирование циклов и т.п.

Укрупненно по критерию назначение исполняемые операторы классифицируются схемой (рис. 3.9).

Операторы присваивания – программные аналоги формульных вычислений алгоритма.

Операторы ввода-вывода – программные аналоги предписаний соответствующих блоков схем алгоритма. Их разнообразие обусловлено значительным диапазоном внешних устройств, используемых для обмена данными между пользователем и

Правила записи и использования оператора - №9 - открытая онлайн библиотека

Рис. 3.9. Классификация исполняемых операторов

ЭВМ (ручной ввод с клавиатуры, вывод на экран дисплея, в поток и т.п.).

Операторы управления – программные аналоги предписаний соответствующих блоков схем алгоритмов (решение, начало и конец цикла, модификация, предопределенный процесс и т.п.).

Операторы присваивания, ввода-вывода информации – обязательный элемент конструкции практически любого вычислительного процесса, начиная с простейшего – линейного. Операторы управления – специфические конструкции, организующие основные операции ветвящихся, циклических, смешанных процессов. Значительное разнообразие операторов управления обусловлено конкретными особенностями этих процессов. Назначение, структуры, правила записи и использования различных операторов управления рассматриваются в соответствующих разделах (гл. 4, 5).

Рассмотрим операторы, используемые в программировании линейных вычислительных процессов.

Оператор присваивания

Оператор присваивания предназначен для реализации в программе требований блока «процесс» (расчета численного значения переменной по формуле).

Структура оператора:

П=А; (П=L;)

где П – имя переменной;

А (L) – арифметическое (логическое) выражение;

= – символ операции присваивания;

; – символ оператора.

Оператор выполняется следующим образом:

· вычисляется арифметическое (логическое) выражение А(L) для получения результата – константы конкретного типа;

· полученный результат присваивается переменной с именем П с автоматическим преобразованием типа константы к типу переменной.

Так, фрагмент с операторами:

Правила записи и использования оператора - №10 - открытая онлайн библиотека предписывает вычислить записанное справа выражение – сложить содержимое ячейки v (вещественной константы) с целой константой 2, а затем полученный результат (вещественный) записать в ту же ячейку v.

Правила записи и использования оператора - №11 - открытая онлайн библиотека Фрагмент с операторами:

предписывает вычислить записанное справа выражение – сложить содержимое ячейки v (вещественной константы) с целой константой 2, а затем полученный результат (вещественную константу) записать в ячейку i (целочисленную). Тип результата не соответствует типу переменной, поэтому он должен быть преобразован из вещественного в целый (отбрасыванием дробной части вместе с разделителем). Так, если значение v было равно 1.5, то результат вычисления арифметического выражения (v + 2) есть 3.5, а переменная i получит значение целой части (3) от полученного справа результата.

Правила составления и использования

ü В одном операторе может использоваться несколько операций присваивания

П1=П2=…=ПN=A;

При этом первым выполняется правое присваивание (ПN=A), а затем в обратном порядке все остальные с учётом типов переменных. Например, если переменная t вещественная, а i – целая, оператор t = i = a + b/c; предписывает вычислить выражение (a + b/c) и полученный результат присвоить переменной i (целой константой), а затем значение i присвоить переменной t (вещественной константой).

ü Операция присваивания может использоваться в операторах описания для инициализации некоторых переменных.

Так, описатели

Правила записи и использования оператора - №12 - открытая онлайн библиотека предписывают выделение ячеек соответствующей длины для всех переменных списков. При этом, переменные c, d, k и tip становятся определёнными, т.е. в их ячейки будут внесены указанные в описателях значения (константы).

ü Возможны укороченные формы записи операции присваивания. Например, префиксная операция и постфиксная операции увеличения (++) и уменьшения (– –) (разд. 6.1.1).

Операторы присваивания со структурой П = L; в представленном разделе не рассматриваются.

Операторы ввода-вывода

В языке Cи/Си++ операторы ввода-вывода в явном виде отсутствуют. Каждый из них получается оформлением соответствующей функции, хранящейся в одной из библиотек языка.

Операторы ввода-вывода используются в программе для организации действий, предписанных в алгоритме соответствующими блоками. Каждый из операторов содержит информацию о том, сколько переменных вводится (выводится), в каком порядке, какого типа и какой структуры.

Рассмотрим основные операторы ввода-вывода.

Оператор ввода

Оператор используется для организации ввода численных значений переменных с клавиатуры.

Структура оператора:

scanf(“управляющая строка”, АП1 [, АП2, . , АПn] );

, где scanf – имя функции (считать);

“управляющая строка” – список спецификаторов вводимых переменных, оформленный в виде символьной строки;

АП1 АП2 АПn – список адресов вводимых переменных;

, , – разделители списка;

( ) – ограничители аргументов функции scanf;

[ ] – признак необязательности содержимого;

; – символ оператора.

Рассмотрим основные элементы оператора ввода.

Спецификатор – совокупность символов, обозначающих формат (тип и структуру) вводимой (выводимой) переменной.

Структура (необязательный элемент) определяет длину поля, занимаемого численным значением переменной и точность (количество разрядов дробной части), если она имеется.

Простейший спецификатор ввода точность не учитывает и имеет вид:

% [длина] тип

, где % – признак спецификатора;

длина – целая константа без знака, задающая количество считываемых символов численного значения;

тип – буквенное обозначение типа переменной;

[ ] – признак необязательности содержимого.

Наиболее часто при вводе используют обозначения типа, представленные в табл. 3.7.

Таблица 3.7

Тип переменной Обозначение типа Формат ввода
int d Целое десятичное
long ld Длинное целое десятичное
float f (e) Вещественное десятичное с обычной точностью
double lf Вещественное десятичное с двойной точностью

Спецификатор определяет формат численного значения вводимой (выводимой) переменной.

Например, спецификатор %4d задаёт один конкретный вариант формата (целочисленная, четырехразрядная), спецификатор %8f – другой (вещественная, восьмиразрядная, без экспоненты), а спецификатор %12e – третий (вещественная, двенадцатиразрядная, с экспонентой).

Адрес переменнойобозначение номера ячейки, предназначенной для хранения численного (символьного) значения переменной в оперативной памяти.

Структура адреса переменной:

&имя

, где & – операция формирования адреса;

имя – идентификатор переменной, для которой формируется адрес.

Так, для переменных a, x2, summa адресами будут &a, &x2, &summa.

Оператор ввода предписывает последовательное считывание вводимых с клавиатуры символов и запись их в ячейки оперативной памяти, задаваемые адресами переменных.

Количество символов для каждой переменной определяется размером «длина» соответствующего спецификатора.

Например, оператор

scanf(“%8d%5f”, &g, &h);

предписывает из последовательно вводимых с пульта символов первые восемь считать и записать целочисленным значением в ячейку ОП, зарезервированную для переменной g типа int, а следующие пять символов считать как вещественное (без экспоненты) значение и записать в ячейку переменной h типа float.

Правила составления и выполнения оператора ввода

1. Количество, типы и порядок расположения спецификаторов в управляющей строке должны совпадать с аналогичными характеристиками переменных в списке адресов.

2. Если адресов переменных больше, чем спецификаторов, лишние (последние) – игнорируются. Если их меньше – ошибка (результат непредсказуем).

3. Поле «длина» задает максимальное количество цифр (символов), которые могут быть прочитаны с клавиатуры дисплея (входного потока), если раньше не встретился пробел или символ, который нельзя использовать в указанном спецификатором формате.

4. В управляющей строке не рекомендуется использование символов, кроме составляющих спецификаторы.

5. Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.

ü Внимание! При переносе управляющей (символьной) строки требуется оформление каждой её части в виде отдельной символьной строки.

6. Ввод текстовых констант функцией scanf не рекомендуется. Рекомендации по их вводу изложены в разд. 6.2.2.

Оператор вывода на дисплей

Оператор используется для организации форматного вывода численных значений переменных на экран дисплея.

Структура оператора:

printf(“управляющая строка” [, П1, …, Пi, ..., Пn] );

, где printf – имя функции («напечатать»);

“управляющая строка” – список спецификаторов выводимых переменных, оформленный в виде символьной строки;

П1 Пi Пn – список идентификаторов выводимых переменных;

, , – разделители аргументов в списке функции printf;

( ) – ограничители аргументов функции printf;

[ ] – признак необязательности содержимого;

; – символ оператора.

Структура спецификатора вывода (упрощённая):

%[длина][.точность]тип,

, где % – признак спецификатора;

длина – целая константа без знака, определяющая общий размер поля выводимой переменной (количество разрядов численного значения с учетом разделителя, знаков Правила записи и использования оператора - №13 - открытая онлайн библиотека и буквы Е (е), если они имеются);

точность – целая константа без знака, определяющая число разрядов дробной части мантиссы численного значения переменной;

. – разделитель длины и точности;

тип – буквенное обозначение типа переменной;

[ ] – признак необязательности содержимого.

Обозначения типа, используемые при выводе, представлены в табл. 3.8.

Таблица 3.8

Тип переменной Обозначение типа Формат вывода
int d Десятичное целое со знаком
long ld Десятичное целое со знаком
unsigned u Десятичное целое без знака
int o Восьмеричное целое без знака
int x Шестнадцатеричное целое без знака
double f (lf) Вещественное со знаком в формате: [-]dddd.dddddd Количество цифр перед десятичной точкой зависит от величины числа, а число разрядов после нее соответствует заданной точности или равно шести
double e (E) Вещественное со знаком в формате: [-]d.dddddde[+][-]d[dd]
char c Одиночный символ
cтрока s Последовательность символов до первого нулевого (\0)

При выводе спецификатор позволяет задавать формат численного значения выводимой переменной с указанием планируемой точности. Так, спецификатор %8.3f задаёт один конкретный вариант формата (вещественная, восьмиразрядная, без экспоненты, с тремя разрядами после запятой), а спецификатор %12.4e – другой (вещественная, двенадцатиразрядная, с экспонентой, с четырьмя разрядами после запятой в мантиссе).

Следовательно, оператор вывода предписывает последовательную печать значений выводимых переменных на одной или нескольких строках экрана дисплея в соответствии с указаниями управляющей строки.

Правила составления и выполнения оператора вывода

Количество, типы и порядок расположения спецификаторов в управляющей строке должны соответствовать количеству, типам и последовательности переменных в их списке.

Если переменных больше, чем спецификаторов, лишние (последние) игнорируются. Если переменных меньше – ошибка, результат непредсказуем.

Параметр «длина» определяет минимальное число выводимых цифр (символов). Если в целой части вычисленного значения переменной их меньше, чем задано параметром, левые незначащие разряды заполняются пробелами до заданной длины.

Если количество символов в целой части выводимого значения больше планируемого параметром «длина» или он не задан, выводятся все цифры (символы) с учетом предписаний поля «точность».

Для целых (символьных) переменных поле «точность» (при отсутствии параметра «длина») определяет количество выводимых цифр (символов). Его использование может привести к усечению или округлению выводимого значения.

Если параметр «точность» не задан, для спецификаторов е (Е) и f его значение равно шести, а для s – нулю.

По спецификатору типа е(Е) численное значение выводится в нормализованном виде, т.е. с одним разрядом целой части.

В управляющей строке наряду со спецификаторами возможно указывать требуемые пользователю совокупности символов, облегчающие чтение и увеличивающие информативность выводимых численных значений (имена переменных, пробелы, символы управления печатью).

Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.

ü Внимание! При переносе управляющей (символьной) строки требуется оформление каждой её части в виде отдельной символьной строки.

Пример организации вывода переменных на экран дисплея:

printf(“%10d%9.1f%11.1e”, i, r, z);

Оператор осуществляет вывод строки:

– – – – – – – – 18 – – 12000.0 – – – – 3.6е-03

ü Внимание! Здесь и в дальнейшем информация, выдаваемая ЭВМ, подчёркивается.

Оператор вывода в поток

Используется для вывода значений переменных в информационный поток.

Поток – последовательность информации, формируемая (считываемая) в процессе решения задачи.

Потоки реализуются вводом информации с клавиатуры, чтением из файла, выводом на монитор (в консольное окно), записью в файл.

Структура оператора:

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.