АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ввод данных

Читайте также:
  1. Анализ данных.
  2. Анализ и интерпретация данных.
  3. Аудит электронной обработки данных. Контрольная среда.
  4. Аудит электронной обработки данных. Контрольная среда.
  5. Базовые понятия реляционной модели данных. Ключи. Неопределенные значения. Ссылочная целостность и способы ее поддержания. Атомарность атрибутов и 1НФ.
  6. Вопрос о пригодности того или иного грунта для основания решают проводя анализ геологоразведочных данных.
  7. Выбор исходных данных.
  8. Глава 2. Основные навыками работы с базами данных.
  9. Методы криптографического преобразования данных.
  10. Многомерная обработка данных с использованием интегрированной системы Statistica. Корреляционный анализ данных.
  11. Необходимость резервного копирования данных.

Ввод данных. Для ввода данных с клавиатуры ЭВМ в программе будем использовать функцию (описана в заголовочном файле stdio.h):

 

scanf (форматная_строка, список_аргументов);

 

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

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

 

% * ширина_поля модификатор спецификатор

 

Среди элементов спецификации преобразования обязательны только % и спецификатор. Для ввода числовых данных используются спецификаторы:

d - для целых десятичных чисел (тип int);

u - для целых десятичных чисел без знака (тип unsigned int);

f - для вещественных чисел (тип float);

е - для вещественных чисел (тип float).

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

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

В качестве модификаторов используются символы:

h - для ввода значений типа short int (hd);

I - для ввода значений типа long int (Id) или double (If, le);

L - для ввода значений типа long double (Lf, Le).

В ближайших программах нам не потребуются ни '*', ни модификаторы. Информацию о них приводим только для полноты сведений о спецификациях преобразования данных при вводе.

В отличие от функции printf () аргументами для функции scanf () могут быть только адреса объектов программы, в частном случае - адреса ее переменных. Не расшифровывая понятие адреса (адресам и указателям будет посвящена гл. 4), напомним, что в языке Си имеется специальная унарная операция & получения адреса объекта:

& имя_объекта

 

Выражение для получения адреса переменной будет таким:

 

& имя_переменной

 

Итак, для обозначения адреса перед именем переменной записывают символ &. Если name - имя переменной, то &name -ее адрес.

Например, для ввода с клавиатуры значений переменных n, z, х можно записать оператор:

 

 

В данном примере спецификации преобразования в форматной строке не содержат сведений о размерах полей и точностях вводимых значений. Это разрешено и очень удобно при вводе данных, диапазон значений которых определен не строго. Если переменная n описана как целая, z и х - как вещественные типа float, то после чтения с клавиатуры последовательности символов 18 18 -0.431 переменная n получит значение 18, z -значение 18.0, х - значение -0.431.

При чтении входных данных функция scanf () (в которой спецификации не содержат сведений о длинах вводимых значений) воспринимает в качестве разделителей полей данных "обобщенные пробельные символы" - собственно пробелы, символы табуляции, символы новых строк. Изображения этих символов на экране отсутствуют, но у них имеются коды, которые "умеет" распознавать функция scanf (). При наборе входной информации на клавиатуре функция scanf () начинает ввод данных после нажатия клавиши <Enter> (переход на новую строку). До этого набираемые на клавиатуре символы помещаются в специально выделенную операционной системой область памяти - в буфер клавиатуры и одновременно отображаются на экране в виде строки ввода. До нажатия клавиши <Enter> разрешено редактировать (исправлять) данные, подготовленные в строке ввода.

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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)