Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интегрирование Глава 3.doc
Скачиваний:
3
Добавлен:
12.11.2018
Размер:
986.62 Кб
Скачать

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

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

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

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. Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.

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

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