Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Управляющая строка




ВВОД-ВЫВОД

Вопросы для самопроверки

Вопросы для самопроверки и контроля

Next

End select

1. Какие преимущества имеет инструкция присваивания языка C перед аналогичной инструкцией языка Basic?

2. Какой новый объект программы позволяет выполнить инструкцию goto?

3. Допустим ли выход из тела цикла с помощью инструкции goto?

4. Можно ли реализовать разветвление алгоритма более, чем на 2 ветви?

5. Почему необходимо в языке C наличие пустой инструкции?

6. В чем смысл составной инструкции?

7. Можно ли организовать цикл, не используя инструкцию цикла?

8. В чем преимущество циклов с предусловием?

9. Можно ли изменять конечное значение счетчика цикла внутри тела цикла в инструкции for языка Basic? А в инструкции for языка C?

10. Чему равно значение счетчика цикла после его окончания? Отличается ли это правило для языков Basic и C?

11. В чем разница в действиях инструкций break и continue языка C?

12. Происходит ли выход из инструкции switch по достижения конца ветви case? А в инструкции select языка Basic?

Контрольные вопросы

1. Можно ли считать запись i ++; инструкцией присваивания?

2. Можно ли использовать в качестве метки целое число? Если можно, то в каком языке?

3. Как выполняется помеченная инструкция, если она достигнута не с помощью инструкции goto, а в естественном порядке выполнения программы?

4. Почему в языке Basic не нужны пустая и составная инструкции?

5. Можно ли в однострочной форме инструкции if языка Basic выполнить разветвление более, чем на 2 ветви?

6. Перечислите блоки обобщенной блок-схемы цикла.

7. Какова функция <выражения 3> инструкции for языка C?

8. Когда разумно использовать цикл с постусловием?

9. Когда форма do until языка Basic удобней, чем форма do while?

10. Может ли инструкция exit do завершить цикл for?

11. Могут ли иметь одинаковые значения выражения в ветвях case инструкций switch и select?

Ввод-вывод в языке Basic в данном разделе не рассматриваем.

Ввод-вывод – это передача данных между переменными программы в оперативной памяти и внешней средой.

Ввод – это передача: внешняя среда à оперативная память, вывод – оперативная память à внешняя среда.

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

Основными функциями форматного ввода-вывода являются: printf – вывод на экран, scanf – ввод с клавиатуры.

Формат обращения к ним:

{ scanf | printf }(<управляющая строка>[, < список -данных>]);

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

Формат одной спецификации:

% [<флаги>][ W ][. D ][ l ]<тип>

Флаги для функции printf (для функции scanf они не используются):

- данное прижимается к левой границе поля вывода, если выводи-

мое значение имеет меньше символов, чем размер поля вывода;

+ число всегда выводится со знаком;

<пробел> вместо знака числа: <пробел> для чисел > 0, - для чисел <0.

W – размер поля данного в символах (байтах).

D – обычно характеризует точность представления значения при выводе, при вводе не используется.

l – модификатор длинных значений; употребляется при передаче значений типа long и double.

<тип> - это собственно спецификация, определяющая тип передаваемого значения.

6.1.1. Спецификация d (целые десятичные числа)

Ввод. Формат спецификации: %[W][l]d

Значения при вводе разделяются символами разрядки. Если до появления символа разрядки будет считано W символов и в спецификации присутствует параметр W, то ввод данного значения закончится.

W – максимальное число считываемых символов.

Пример.

Внешнее представление Спецификация Значение в памяти

165<пробел> d 165

-165<Tab> d -165

+165<Enter> d 165

165 2d 16

165 1d 1

431921 ld 431921

-431921 4ld -431

+431921<пробел> 10ld 431921

Вывод. Формат спецификации: %[<флаги>][W][.D][l]d, где D – минимальное число выводимых символов. Если длина выводимого значения превышает W символов, то действие параметра W игнорируется и значение выводится полностью. Если его длина меньше W символов, то выводимое значение располагается в крайних правых позициях поля вывода. Если при этом использован флаг -, то значение располагается в крайних левых позициях поля. Если длина значения меньше D символов, то значение дополняется слева нулями.

Пример.

Значение в памяти Спецификация Внешнее представление

2475 d 2475

2475 +d +2475

2475 <пробел>d <пробел>2475

-2475 d -2475

-2475 +d -2475

-2475 <пробел>d -2475

-2475 3d -2475

2475 10d ______2475

2475 +10d _____+2475

2475 -10d 2475______

2475 -+10d +2475_____

2475 10.4d ______2475

-12 10.4d ______-012

-12.4d -012

-12.0d -12

3 5.0d ____3

-478126 10ld ___-478126

-478126 -10ld -478126___

478126 +-10ld +478126___

6.1.2. Спецификация f (десятичные числа с плавающей точкой)

Ввод. Формат спецификации: %[W][l]f.

Форма представления одного значения:

[+|-][ a ][. b ][<порядок>], где a целая часть, b – дробная часть.

<порядок>:= [ e | E ][+|-]<целое без знака>

Длина мантиссы >= 1 цифры.

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

Пример.

Внешнее представление Спецификация Значение в памяти

-2.347e-5 f -2.347e-5

-236.485 f -2.36485e+2

2e10 f 2e10

.345 f 0.345

-2. f -2.0

461.2347 %5f%3f 461.2 347

-94.56e-5 f -9.456e-4

-94.56+5 f -9.456e+6

 

Вывод. Значение выводится в обычной форме.

Формат спецификации: %[W] [.D][ l ] f, где D – число знаков после символа десятичной точки.

По умолчанию D =6. При D =0 десятичная точка не выводится. Если число дробных разрядов больше D, то результат округляется, если меньше, то значение дополняется справа нулями. Значение, как при спецификации d, выводится полностью, что при неправильной оценке величины выводимого значения приводит к очень длинным числам.

Пример.

Значение в памяти Спецификация Внешнее представление

-385.476 f -385.476000

2. f 2.000000

1e-7 f 0.000000

1e15 f 1000000000000000.000000

-385.476 10f -385.476000

-385.476 15f ____-385.476000

2.5 10.4f ____2.5000

-6.48756 10.4f ___-6.4876

-0.34844 6.4f -0.3484

38.56.0f 39

0.000346 10.5f ___0.00035

6.1.3. Спецификация e (десятичные числа с плавающей точкой)

Ввод. Полностью аналогичен спецификации f, поэтому для ввода ее можно не использовать.

Вывод. Значение выводится в показательной форме в нормализованном виде (преобразуется так, чтобы мантисса находилась в пределах 1<=| m |<10).

Формат спецификации: %[W][.D]{e|E}, где D –количество значащих цифр мантиссы. По умолчанию D =6. При D =1 точка не выводится. Если в спецификации использована заглавная буква E, то в выводимом значении также ставится заглавный символ E (10 в степени). Остальные правила совпадает со спецификацией f.

Пример.

Значение в памяти Спецификация Внешнее представление

2.3 e 2.30000e+00

2.3.5e 2.3000e+00

237.486 10.4e _2.375e+02

237.486 10.4E _2.375E+02

-96.56e-105 15.5e ___-9.6560e-104

2.37e25 10.1e _____2e+25

-24.866e-10.4e -2.487e-09

6.1.4. Спецификация g (универсальная спецификация)

С помощью этой спецификации можно вводить и выводить любые числовые значения. Формат спецификации g аналогичен формату спецификации e. Эту спецификацию удобно использовать для вывода значений с плавающей точкой, когда неизвестен диапазон выводимых значений. Если значение лежит в диапазоне 104<=| x |<10 D, где D – параметр спецификации, то оно будет выводиться по спецификации f, если значение вне указанного диапазона, то по спецификации e. Это дает возможность всегда получать внешнее представление значения приемлемой длины. При этом конечные нули не выводятся. Если использовать заглавную букву G, то при выводе в показательной форме будет применяться заглавная буква E в представлении порядка.

Рекомендация по вводу-выводу числовых значений. Для ввода-вывода целых значений следует использовать спецификацию d. Для ввода значений с плавающей точкой любой величины достаточно спецификации f. Если значения с плавающей точкой по модулю невелики(или немалы), разумно применять спецификацию f, в противном случае – спецификацию g. Спецификацию e можно вообще не использовать.


Пример.

Значение в памяти Спецификация Внешнее представление

0.000485456.5g 0.00048546

4.456e-5.5g 4.456e-05

4.456.5g 4.456

4.456e4.5g 44560

4.456e6.5g 4.456e+06

0.0004456.5g 0.0004456

4.456e6.5G 4.456E+06

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 531; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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