Специальные управляющие символы

Символ Назначение
\n Переход на новую строку
\r Возврат курсора к началу строки
\t Табуляция (курсор сдвигается вправо на 8 позиций)
\b Возврат на одну позицию
\f Переход к новой странице
\\ Выводит на экран символ \ (слэш)
\’ Выводит на экран апостроф
\” Выводит на экран кавычки

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

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

Синтаксис записи спецификации преобразования:

% [выравнивание] [ширина поля] символ преобразования

Например: printf (“Значение переменной a=%3d”,a);

Символы преобразования

Формат Тип выводимых значений
d Ввод-вывод целого значения
c Ввод-вывод одного символа
s Ввод-вывод символьной строки
f Ввод-вывод значения с плавающей точкой
e (E) Ввод-вывод значения с плавающей точкой в экспоненциальной форме вида [-] число e (или)[-]xx (для числа по умолчанию берется: 1 позиция под целуб\ю часть, 6 позиций под дробную часть)
g (G) Ввод-вывод по формату f или е (E) в зависимости от того, какая запись короче
u Ввод-вывод беззнакового целого
o Ввод-вывод беззнакового восьмеричного целого
x Ввод-вывод беззнакового шестнадцатиричного целого

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

Выравнивание по умолчанию производится по правому краю ширины поля. Если в позиции выравнивания поставить знак «-», то выравнивание производится по левому краю ширины поля.

Ширина поля задает количество позиций, отводимых на экране для изображения значения.

Если заданная ширина поля недостаточна для изображения числа, то этот параметр игнорируется, и величина будет выводиться полностью.

Если ширина поля велика для выводимого числа, то поле заполняется пробелами слева или справа в зависимости от выравнивания.

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

Вместо ширины поля можно поставить *, которая означает, что число выводимых символов определяется текущим значением переменной.

Например:

#include <stdio.h> main() { рrintf ("/%d/\n",336); рrintf ("/%2d/\n",336); рrintf ("/%10d/\n",336); рrintf ("/%-10d/\n",336); }  

При выводе символьных строк ширина поля определяет максимальное число печатаемых символов.

При выводе чисел с плавающей точкой возможно задание точности (число позиций под дробную часть числа). Она задается через точку от ширины поля. Если точность превышает количество символов в дробной части, то лишние позиции дополняются нулями. Если же количество цифр в дробной части числа больше точности, то производится округление дробной части. Если в спецификации f не указана точность, то по умолчанию после точки берется 6 цифр.

Например:

#include <stdio.h> main() { рrintf ("/%f/\n",1234.56); рrintf ("/%e/\n",1234.56); рrintf ("/%12f/\n",1234.56); рrintf ("/%3.1f/\n",1234.56); рrintf ("/%10.3f/\n",1234.56); рrintf ("/%-10.3f/\n",1234.56); рrintf ("/%10.3e/\n",1234.56); }  

Функция ввода scanf()

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

Синтаксис записи:

scanf ("формат", аргумент 1,...,аргумент n);

Форматная строка и список аргументов присутствуют обязательно.

где аргументы – это перечень вводимых переменных, причем перед именеми каждой переменной обязательно указывается символ &(это знак операции «взятия адреса переменной»).

формат - символьная строка, которая может содержать символы трех типов:

1. Пробелы, символы табуляции, символ перехода на новую строку, которые компилятором игнорируются.

2. Обычные символы. В этом случае пользователь программы должен набрать на клавиатуре перед задаваемым значением указанную перед форматом последовательность исмволов, иначе ввод прекратится при первом же несовпадающем символе.

3. Спецификации преобразования – указывают необходимые преобразования вводимых данных для очередного аргумента.

В спецификации преобразования указывается символ % и символ преобразования.

Например:

scanf("%d%f",&a,&b);

Составить программу для ввода и вывода своего любимого числа и своего возраста.

#include <stdio.h>

main()

{

int chislo;

float voz;

рrintf ("Введите Ваше любимое число =>");

scanf ("%d",&chislo);

рrintf ("\nСколько Вам лет? ");

scanf ("%f",&voz);

рrintf("\nВам %4.1f лет",vоz);

printf("\nВаше любимое число %d",chislo);

}

ОПЕРАТОРЫ ЯЗЫКА СИ

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

ПУСТОЙ ОПЕРАТОР

Синтаксис оператора:

;

Оператор может появиться в любом месте программы, где по синтаксису требуется оператор. Выполнение пустого оператора не изменяет состояние программы.

Он может использоваться:

1) для установки метки (например, чтобы пометить закрывающуюся фигурную скобку составного оператора, который не является оператором, нужно поставить перед ней помеченный пустой оператор);

2) после ключевого слова else оператора if, вложенного в другой if, внешний по отношению к данному;

3) после оператора заголовка цикла, когда действия, которые должны быть выполнены в теле цикла, помещаются в заголовок цикла.

СОСТАВНОЙ ОПЕРАТОР

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

Синтаксис оператора:

{

[объявление;]

[операторы;]

}

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

В составном операторе могут быть другие составные операторы. Любой оператор внутри составного оператора может быть помечен меткой. Передача управления внутрь составного оператора возможна, но если составной оператор содержит объявление переменных и их инициализацию, то при входе в блок по метке, эта инициализация не будет выполнена, и значение переменных будет неопределено.

ОПЕРАТОР ПЕРЕХОДА

Оператор goto передает управление непосредственно на оператор, помеченный меткой.

Синтаксис оператора:

goto метка;

где метка – это идентификатор.

Например:

goto m1; …..

m1: a=b; …...

Область действия метки ограничивается функцией, которой она определена. Из этого следует: 1) каждая метка должна быть отлична от других меток той же самой функции; 2) нельзя передавать управление оператором goto в другую функцию.

Помеченный оператор выполняется сразу после выполнения оператора goto. Если оператор с данной меткой отсутствует или существует более одного оператора, помеченных одной и той же меткой, то это приводит к ошибочному результату.

Не рекомендуется переход внутрь операторов: составного, условного, варианта, цикла.

Для программирования ветвлений в языке Си используют условную
операцию ?, условный оператор if и оператор выбора варианта switch.

УСЛОВНЫЙ ОПЕРАТОР

Синтаксис оператора:

if (выражение) оператор1;

[else оператор2;]

где выражение – это некоторое условие, содержащее операции отношения и логические операции. Значение выражения приводится к целому и интерпретируется в соответствии с правилом: =0 – ложь, ¹0– истина. Выражение обязательно записывается в круглых скобках.

Перед ключевым словом else точка с запятой:

- ставится, если оператор 1 простой;

- не ставится, если оператор 1 – составной оператор.

Условный оператор служит для вычислений по одной из двух ветвей в зависимости от значения выражения. Сначала вычисляется выражение, и если оно истинно, то выполняется <оператор 1>, если ложно, то выполняется <оператор 2>, непосредственно следующий за ключевым словом else.

Если значение выражения ложно, а конструкция else отсутствует, то управление передается на оператор, следующий в программе за оператором if.

Например:

if (i>0)

y=x/i;

else { y=1;

i++; }

На месте оператора 1 и 2 может быть оператор if. В этом случае имеет место вложенный условный оператор.

Например:

if (x<100)

{ y=0;

z=5; }

else if (x<1000)

y=1;

else if (x<2000)

y=2;

else y=3;

При вложенности операторов if рекомендуется для ясности программы использовать фигурные скобки, ограничивающие операторы 1 и 2. Если фигурные скобки отсутствуют, то ключевое слово else будет относиться к ближайшему оператору if, у которого отсутствует конструкция else.

Пример 1. if (i>j) if (j>0) x=1; else x=2; /* else ассоциируется с внутренним if */ Пример 2. if (i>j) { if (j>0) x=1; } else x=2; /* else ассоциируется с внешним if */

ОПЕРАТОР ВЫБОРА ВАРИАНТА

Синтаксис оператора:

switch (выражение целого или символьного типа)

{ case константное выражение 1: оператор1;[break;]

case константное выражение 2: оператор 2;[break;]

. . . . . . .

case константное выражение N: оператор N;[break;]

[default: оператор;]

}

Оператор switchслужит для выбора одного из нескольких вариантов; он проверяет совпадения значения выражения в скобках с одним из заданных константных выражений во всех вариантах caseи передаёт управление оператору, который соответствует значению какого-либо из выражений. Каждый вариант caseможет быть помечен целой или символьной постоянной или выражением. Операторы, связанные с меткой defaultвыполняются в том случае, если ни одна из констант не равна значению выражения. Вариант defaultнеобязательно указывать в операторе и не обязательно последним. Если ни одно из константных выражений не соответствует значению выражения и вариант defaultотсутствует, то оператор switch не выполняет никаких действий.

Ключевое слово caseвместе с константным выражением служит просто меткой. Если будут выполнены операторы для некоторого варианта, то далее выполняются операторы всех последующих вариантов до тех пор, пока не встретится оператор break. Это позволяет связать одну последовательность операторов с несколькими.

Если действия двух вариантов совпадают, то эти варианты могут быть объединены, в этом случае оператор switch имеет вид:

switch (выражение целого символьного типа)

{ case константное выражение 1:

case константное выражение 2: оператор1;[break;]

[default: оператор;]

}

ОПЕРАТОР РАЗРЫВА

Синтаксис оператора:

break;

Оператор разрыва прерывает выполнение операторов цикла или оператора switch, в которых он появляется. Управление передаётся оператору, следующему за прерванным оператором. Если операторы цикла вложены, то break вызывает непременное прекращение того цикла в котором он находится. Появление break вне перечисленных операторах приводит к ошибке.

ОПЕРАТОРЫ ЦИКЛА

Циклы используют в случае, если некоторые действия надо выполнить многократно, каждый раз с новыми данными. В Си имеются операторы цикла while, do while и for.

ОПЕРАТОР ПРОДОЛЖЕНИЯ

Синтаксис оператора:

continue;

Оператор продолжения может использоваться в операторах цикла, предназначен для перехода за последний оператор тела цикла, т.е. на корректировку параметров цикла for (вычисляется выражение приращения) или на анализ конца циклов while и dowhile(происходит вычисление условного выражения).

ОПЕРАТОР ЦИКЛА С ПАРАМЕТРОМ (С ШАГОМ)

Оператор цикла с параметром используется, если заранее известно начальное значение параметра (параметров) цикла, условие его завершения и коррекция – выражение (выражения) для изменения параметра (параметров) цикла.

Синтаксис оператора:

for ([начальное значение];[условное выражение];[выражение приращения])

оператор;

где

- начальное значение – список операторов, инициирующих начальные значения; выполняется один раз, до начала выполнения тела цикла; как правило, используется для установки начальных значений параметров цикла;

- условное выражение – список операторов и выражений для проверки конца цикла; конец цикла обычно определяется на основе анализа значения параметра цикла; выполняется перед каждым выполнением тела цикла; если значение последнего выражения истинно (≠0), тело цикла выполняется, а если ложно (=0) – завершается;

- выражение приращения – список операторов и (или) выражений для корректировки параметров цикла; выполняется после каждого выполнения тела цикла;

- оператор – простой или составной оператор тела цикла.

Правила выполнения цикла for:

1) производится вычисление начального выражения;

2) выполняется условное выражение и производится его оценка:

а) если оно истинно (≠0), то выполняется тело цикла;

б) если оно ложно (=0), то выполнение цикла завершается;

если оно ложно до первого выполнения тела цикла, то тело цикла не выполняется ни разу;

3) после выполнения тела цикла выполняется выражение приращения и осуществляется переход к п.2;

4) появление в любом месте тела цикла оператора continue дает переход к выполнению выражения приращения, т.е. к п.3;

5) появление в любом месте тела цикла оператора break вызывает переход к оператору, следующему после оператора цикла;

после выхода из цикла по оператору break или goto параметр цикла сохраняет значение, при котором произошло завершение выполнения цикла;

6) после нормального завершения цикла значение параметра цикла равно значению, которое привело к завершению выполнения цикла.

7) если начальное значение и (или) условное выражение отсутствуют, их ; должны остаться в операторе заголовка цикла;

Например:

for( ; ; ) for(i=1; ;i++) - бесконечныециклы, которые могут завершиться только при выполнении в его теле операторов break, goto, return.

Пример оператора цикла for:

for (i=0; i<10; i++)

c+=i;

С помощью сокращенной формы оператора forможно реализовать временную задержку процесса выполнения программы. Например, для ограничения времени ожидания ответа пользователя - for (n=1; n<=10000; n++);

Этот цикл считает значения nот 1до10000,ничего больше не делая. Символ ; после заголовка цикла – это пустой оператор.

Любой список заголовка может содержать оператор запятая, т.е. несколько операторов и выражений, разделенных запятыми, которые выполняются слева направо. Таким образом, оператор цикла for может иметь как бы несколько параметров цикла, изменяющихся одновременно. Чаще всего начальное выражение и выражение приращения – операторы присваивания или обращение к функциям (если их нет, то параметр цикла как бы не рассматривается); а условное выражение содержит выражение отношения или логическое выражение (если его нет (остается только ; ), то считается что условие проверки конца цикла истинно, при этом цикл не может быть завершен по условию конца цикла в заголовке цикла, а только по операторам break, goto, return.

ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ

Оператор цикла с предусловием (анализ конца цикла производится до выполнения операторов тела цикла) используется, когда количество повторений операторов тела цикла заранее не известно и определяется в процессе выполнения цикла.

Синтаксис оператора:

while (выражение)

оператор;

где

выражение – выражение любого типа;

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

Вначале вычисляется выражение (условие), если оно истинно, то выполняется тело цикла, и выражение вычисляется снова; если ложно – тело цикла не выполняется. Цикл продолжается до тех пор, пока значение выражения не станет ложным и управление сразу передаётся следующему оператору. Если выражение ложно изначально, то тело цикла не будет выполнено ни разу.

Например:

i=20;

while (i>=1)

{x=i;

i - -;

}

Наши рекомендации