
- •Технология программирования линейных процессов
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ключевые слова
- •Константы
- •Целые константы
- •Вещественные константы
- •Текстовые константы
- •Переменные
- •Правила записи и использования оператора
- •Функции. Вызовы функций
- •Арифметические выражения
- •Правила записи и вычисления арифметических выражений
- •Оператор присваивания
- •Правила составления и использования
- •Операторы ввода-вывода
- •Оператор ввода
- •Правила составления и выполнения оператора ввода
- •Оператор вывода на дисплей
- •Правила составления и выполнения оператора вывода
- •Оператор вывода в поток
- •Организация ввода-вывода переменных
- •Ввод переменных
- •Вывод переменных
- •Заголовок программы
- •Тело программы
- •Поэлементная структура простейшей программы
- •Предмашинная подготовка задачи определения площади круга
- •Постановка задачи
- •Создание математической модели задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
Оператор ввода
Оператор используется для организации ввода численных значений переменных с клавиатуры.
Структура оператора:
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.
Правила составления и выполнения оператора ввода
-
Количество, типы и порядок расположения спецификаторов в управляющей строке должны совпадать с аналогичными характеристиками переменных в списке адресов.
-
Если адресов переменных больше, чем спецификаторов, лишние (последние) – игнорируются. Если их меньше – ошибка (результат непредсказуем).
-
Поле «длина» задает максимальное количество цифр (символов), которые могут быть прочитаны с клавиатуры дисплея (входного потока), если раньше не встретился пробел или символ, который нельзя использовать в указанном спецификатором формате.
-
В управляющей строке не рекомендуется использование символов, кроме составляющих спецификаторы.
-
Если управляющая строка по размеру превышает стандартную ширину страницы, она должна быть оформлена с переносом.
-
Внимание! При переносе управляющей (символьной) строки требуется оформление каждой её части в виде отдельной символьной строки.
-
Ввод текстовых констант функцией scanf не рекомендуется. Рекомендации по их вводу изложены в разд. 6.2.2.