Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты информатика.rtf
Скачиваний:
39
Добавлен:
02.05.2015
Размер:
6.9 Mб
Скачать

16. Операторы ввода-вывода в языке си (c)

Функция форматного вывода printf()

Оператор вызова этой функции имеет вид:

printf(форматная_строка, список_вывода)

Список вывода содержит перечисленные через запятую имена выводимых переменных, т. е. показывает, что выводить. В список вывода можно включать не только переменные, но и произвольные выражения (в частном случае константы).

Форматная строка показывает, в каком виде значения переменных будут выведены на экран. В простейшем случае форматная строка - это строковая константа, т. е. она ограничена двойными кавычками. Форматная строка может содержать:

произвольный текст (обычно он поясняет значения выводимых переменных); среди символов этого текста могут быть и управляющие; в несложных программах этого пособия часто будет использоваться управляющий символ '\n' ;

спецификации форматов, показывающие, в каком виде должны выводиться значения переменных; каждая спецификация соответствует одной переменной; спецификации встречаются в форматной строке в том порядке, в каком перечисляются выводимые переменные в списке вывода; каждая спецификация начинается с символа %; спецификация стоит в том месте текста, где должно выводиться значение соответствующей переменной.

Спецификация формата вывода или ввода

В простейшем виде спецификация формата имеет вид:

%ширина_поля.точность спецификатор

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

Точность - положительное целое число, указывается в основном для вещественных чисел, означая в этом случае количество выводимых после десятичной точки цифр.

На первых этапах обучения программированию достаточно следующих спецификаторов:

d - для целых значений (типов int, char, unsigned);

f - для вещественных значений (типов float, double);

e - для вещественных значений (типов float, double)с указанием порядка, т. е. в виде:

Другие примеры оператора printf() представлены на рис.1.

Функция форматного ввода scanf()

Оператор вызова этой функции имеет вид:

scanf(форматная_строка, список_ввода)

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

Форматная строка - это строковая константа, которая, так же как при выводе, показывает, в каком виде значения переменных будут выглядеть на экране. Форматная строка при вводе содержит только спецификации формата, включать в нее какой либо пояснительный текст бессмысленно. Спецификации формата при вводе записываются так же при выводе, но ширина поля и точность обычно упускаются.

Пример функции scanf:

int i; float a;

printf("Введите i и a\n"); /* вывод приглашения к вводу */

scanf("%d%f", &i, &a);...

Форма ввода :

Введите i и a

В фигурные скобки принято заключать альтернативные фрагменты формы ввода или вывода. В данном примере значения i и a можно располагать на одной строке экрана, разделяя их пробелами, а можно на разных строках, разделяя их нажатием клавиши Enter.

Заметим также, что при вводе строк символов с помощью функции scanf() действуют более сложные правила. Так, в буфер устройства ввода считываются все символы до нажатия Enter, а в вводимую строковую переменную передаются символы до первого пробела. Такой принцип работы scanf() имеет свои преимущества, но они слишком трудны при начальном освоении языка Си. Поэтому для ввода и вывода строк лучше пользоваться функциями gets() и puts().

17. логические операции используются вместе с операциями отношения для записи условных выражений. На предыдущем уроке Вы уже имели возможность в этом убедиться, когда узнали, что результат выполнения операции отношения в языке С оценивается как истина (True) или ложь (False). То есть имеет место логический тип.     Однако, вместе с тем в языке С нет данных логического типа, то есть boolean тип в С отсутствует.2. Список логических операций в языке С.     Язык С имеет ровно три логические операции: это

  • && или (AND);

  • || или (OR);

  • ! или (NOT).

  • Как принято еще называть логические операции? 

  1. Операция "&&" или операция "AND" называется еще операцией "и" или логическим умножением.

  2. Операция "||" или операция "OR" называется еще операцией "или" или логическим сложением.

  3. Операция "!quot; или операция "NOT" называется еще операцией "не" или логическим отрицанием.

3. Таблицы истинности логических операций в языке С.     Разберемся, почему они так называются? Будем считать, что истина это "1", а ложь это "0". 

  1. Операция "&&" называется логическим умножением потому, что выполняется таблица истинности этой операции, очень напоминающая таблицу обыкновенного умножения из арифметики.     Логическое умножение это такая операция, которая истинна тогда и только тогда, когда истинны оба входящих в нее высказывания.    1 && 1 = 1   0 && 1 = 0   1 && 0 = 0   0 && 0 = 0

  1. Операция "||" называется логическим сложением потому, что выполняется таблица истинности этой операции, очень напоминающая таблицу обыкновенного сложения из арифметики.     Логическое сложение это такая операция, которая истинна тогда и только тогда, когда истинно хотя бы одно из входящих в нее высказываний.    1 || 1 = 1   0 || 1 = 1   1 || 0 = 1   0 || 0 = 0

  1. Операция "!" называется логическим отрицанием потому, что выполняется следующая таблица истинности.     Логическое отрицание это такая операция, которая истинна тогда и только тогда, когда ложно входящее в нее высказывание и наоборот.    !1 = 0   !0 = 1

4. Логическая операция "исключающее или" в языке С.     Кроме трех расмотренных выше классических логических операций в языке С используется еще четвертая логическая операция: "исключающее или".     Если обычно принято операцию логическое умножение обозначать как "X AND Y", операцию логическое сложение как "X OR Y",а логическое отрицание как "NOT X",то операцию "исключающее или" обозначают как "X XOR Y".     Сделаем одно очень выжное замечание. Оно касается логической операции XOR. В языке С нет знака логической операции XOR. Однако, она может быть реализована с помощью операций AND, OR и NOT. Покажем теперь таблицу истинности этой новой логической операции в языке С.       1 XOR 1 = 0      0 XOR 1 = 1      1 XOR 0 = 1      0 XOR 0 = 0    Отсюда видно, что, если оба входящих в выражение высказывания истинны или оба ложны, то есть однакового значения истинности, то результат будет в этом случае ложным. То есть как бы отрицается утверждение: оба высказывания имеют одинаковый смысл истинности.     Напротив, если оба высказывания имеею разный смысл истинности, то в результате операции "исключающее или" это отрицается. Поэтому и выходит, что результат будет равен истине. 5. Приоритет выполнения логических операций.     Логические операции и операции отношения имеют более низкий приоритет, чем арифметические операции. Это значит, что выражение 200>120+50 равносильно выражению 200>(120+50).     Принято следующее старшинство операций отношения и логических операций:       ! - самая старшая из логических операций Далее старшинство операций распределяется так:       >      <      >=      <=. Затем уже идут операции:      ==      !=и самая младшая операция - это ||.     В логических выражениях можно использовать скобки, которые имеют наивысший приоритет. Это положение известно еще из арифметики. Оно сохраняется и здесь. Использование скобок делает выражение более понятным и удобным для чтения. Поэтому рекомекндуется использовать скобки. Условные и логические выражения часто используются в операторе условного перехода if и в других операторах.     Отметим еще одну очень важную особенность операторов && и ||. Если при вычислении операции X && Y первое выражение X окажется нулевым (то есть ложным), то значение второго выражения Y никак не повлияет на результат. Это следует из таблицы истинности операции логическое умножение. Смотрите таблицу истинности этой операции. Поэтому действительно можно игнорировать второе выражение. Аналогично обстоит дело и с оператором ||. Так, если значение первого операнда ненулевое, то значение второго операнда так же не влияет на результат. Потому он так же не вычисляется и игнорируется. Это также следует из таблицы истинности операции логическое сложение. Поэтому нужно учитывать этот факт и не изменять во втором операторе какую-либо переменную, пользуясь операцией ++. 

Ниже приведен список операторов отношения

Оператор

Его значение

<=

Меньше или равно

>=

Больше или равно

>

Больше

<

Меньше

==

Равно

К числу логических относятся операторы, приведенные ниже.

Оператор

Значение

&

И

ИЛИ

^

Исключающее ИЛИ

&&

Укороченное И

││

Укороченное ИЛИ

!

НЕ

Результатом работы такого типа операторов является логическое значение типа bool

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

Операнды логических операторов должны относиться к типу bool, а результат вы­полнения логической операции также относится к типу bool. Логические операторы &, |, л и ! поддерживают основные логические операции И, ИЛИ, исключающее ИЛИ и НЕ в соответствии с приведенной ниже таблицей истинности.

Р

q

p & q

p | q

^ q

!P

false

false

false

false

false

true

true

false

false

true

true

false

false

true

false

true

true

true

true

true

true

true

false

false

Как следует из приведенной выше таблицы, результатом выполнения логической операции исключающее ИЛИ будет истинное значение (true), если один и только один ее операнд имеет значение true.

18.препроцессор, директивы дефайн и инклуд

Препроцессор — это компьютерная программа, принимающая данные на входе и выдающая данные, предназначенные для входа другой программы. Результат и вид обработки зависят от вида препроцессора. Наиболее частый случай использования препроцессора — обработка исходного кода перед передачей его на следующий шаг компиляции.