русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 861; Нарушение авторских прав


Ввод данных.

Ввод данных. Для ввода данных с клавиатуры ЭВМ в программе будем использовать функцию (описана в заголовочном файле 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);

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

В отличие от функции 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( ) для ввода данных и принципы построения простых программ на основе следующих несложных задач вычислительного характера.



<== предыдущая лекция | следующая лекция ==>
Переключатели | Приближенное значение экспоненты.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.