В – 1970 год – разработан Кеном Томпсоном из Bell Laboratories – еще большее упрощение – пригоден для узкого круга системных задач.
Впоследствии Деннис Ритчи дополнил систему типов данных языка В без потери его простоты.
Программа на языке С состоит из произвольного количества функций, причем одна из них должна называться main(). Выполнение программы начинается с первой инструкции этой функции.
Тело функции представляет из себя перечень действий, которые необходимо выполнить. Этот список действий заключается в фигурные скобки. Перед телом функции помещается заголовок.
Как правило, функция main() среди своих действий содержит вызовы других функций, которые могут создаваться самим программистом или содержаться в библиотеках, входящих в комплект поставки.
# include <stdio.h> main()
{ |
printf(“Здравствуй, мир!\n”); |
} |
|
Вначале программы помещается конструкция, позволяющая
подключить информацию о стандартной библиотеке ввода-вывода. Знак # показывает, что данная строка должна быть выполнена до начала процесса перевода программы в машинный код.
Если необходимо в теле одной функции вызвать другую, то к
ней надо обратиться по имени, |
указав в скобках после имени |
список параметров, которые надо |
передать в вызываемую функцию |
для работы. Если функции не надо ничего передавать, то в строке вызова круглые скобки остаются, но в них ничего не будет.
Комбинация “\n” внутри строки означает на необходимость перейти на новую строку при печати. Существует несколько таких последовательностей, начинающихся с наклонной черты, которые служат для печати трудно представимых символов.
В языке C существует четыре базовых типа данных:
-символьный (char);
-целый (int);
-действительный (float);
-двойной точности(double).
Имеется также несколько квалификаторов, которые можно использовать для расширения числа типов данных. Это квалификаторы long (длинный), short (короткий), unsigned (беззнаковый) и signed (со знаком). Знаковым или беззнаковым может объявляться любой целый тип (в том числе и тип char), а long и short применяются к типу int. Кроме этого существует тп long double.
Информатика 27.03.02 |
41 |
Стандарт языка С не устанавливает размер памяти, который должен быть выделен на тот или иной тип. При этом некоторые соотношения между типами в стандарте описаны. Например,
short int <= int <= long int.
Реально выделенный размер можно узнать при помощи конструкции sizeof(тип) или sizeof(переменная).
Кроме переменных в программах на С используются константы. Целую константу от действительной можно отличить по наличию десятичной точки.
Символьная константа – это целое число, записанное в виде символа, заключенного в одиночные кавычки. Значением символьной константы является код символа, зависящий от используемой системы кодировки. Символьные константы могут участвовать в операциях по тем же правилам, что и целые переменные или константы.
Некоторые трудно представимые символы записываются как комбинация нескольких других символов. Такие комбинации называются Esc-последовательностями. К ним, например, относятся:
\n – |
переход на новую строку \a – |
звонок |
|
\t |
– |
горизонтальная табуляция \f – |
перевод страницы |
\\ |
- |
собственно наклонная черта. |
|
Строковая константа – это произвольное количество символов, заключенных в двойные кавычки, которые не являются составной частью строки. Такая строка фактически воспринимается как массив символов, а в конце этого массива присутствует специальный невидимый символ завершения строки \0.
Символьная константа и строка, содержащая один символ, воспринимаются компьютером совершенно по разному. Так, “a” воспринимается как массив из двух символов, а ‘a’ – как число, равное коду буквы a.
Константы перечисления – это список целых констант. Первое имя в списке имеет значение 0, следующее – 1 и т.д. Если значение какой-нибудь константы явно определено, то следующие константы продолжаю прогрессию с шагом 1.
enum aaa {A,B=8,C}.
Все переменные должны быть описаны до их использования, при своем описании переменная может быть инициализирована (то есть ей может быть присвоено начальное значение). В языке С описание переменных разрешается в начале функции или начале блока.
К любой переменной может быть применен квалификатор const для запрета в дальнейшем изменения значения этой переменной. Константы принято инициализировать при описании в обязательном порядке.
Информатика 27.03.02 |
42 |
Темы 33-36. Управляющие структуры языка С/С++.
Структуры, реализующие последовательность.
Для того чтобы любое выражение языка воспринималось как действие, в конце его необходимо поставить точку с запятой.
a=5;
Если необходимо, чтобы с точки зрения синтаксиса несколько действий воспринимались как одно, то перед первым из этих
действий необходимо открыть фигурную скобку, а после |
последнего |
– закрыть. Такая конструкция называется составной |
инструкцией |
или составным оператором. |
|
Структуры, реализующие развилку.
Основной конструкцией для реализации развилки является оператор if-else.
if (условие)
действие;
else
действие; Если по какой-то ветви необходимо выполнить более чем одно
действие, то нужны фигурные скобки. if(a>5)
{b=3;
t=4;}
else
a=29;
k=11;
Очень часто не поставленные или неверно поставленные фигурные скобки вызывают не только синтаксические ошибки, обнаруживаемые при компиляции, но и смысловые ошибки, из-за которых программа работает неверно.
else – часть может отсутствовать. В этом случае, если условие ложно, то управление передается на следующий оператор программы.
if (a>5)
;
else
t=t+1;
r=7;
В случае, когда нескольким вложенным друг в друга или идущим друг за другом операторам if соответствует один оператор else, этот else считается относящимся к ближайшем if.
if(t > t1) |
if(t > t1) |
{ |
if (n<0) |
if (n<0) |
|
n=n+m; |
n=n+m; } |
|
Информатика 27.03.02 |
|
43 |
else |
else |
n=n-m; |
n=n-m; |
При необходимости многоступенчатого принятия решений удобно использовать конструкцию else – if. Условия проверяются по порядку; как только встречается истинное условие, выполняется соответствующая ему инструкция и последовательность проверок завершается. Если ни одно из условий не оказалось истинным, то срабатывает последняя else часть.
if (r >= 45)
printf(“Выплачивается повышенная стипендия\n”); else if (r >= 35)
printf(“Выплачивается стипендия\n”); else if(r >= 25)
printf(“Нет стипендии\n”);
else
printf(“Пора гнать\n”);
Инструкция switch используется для выбора одного из многих путей и называется переключателем. Она проверяет, совпадает ли значение некоторого выражения с одной из целых констант, и выполняет соответствующую этому занчению ветвь, а также последующие ветви, соответствующие константам.
switch (выражение) {
case константа : инструкции case константа : инструкции
. . . . . . . . . . . . . .
default : инструкции }
Если ни одна из констант не совпала со значением выражения, то выполняются только инструкции, стоящие после ключевого слова default.
Так как в языке С символьный тип является подмножеством целого типа, то в конструкции switch разрешается использование символьных переменных и констант.
При необходимости немедленного выхода из переключателя после выполнения соответствующей ветви следует использовать инструкцию break. После ее выполнения управление передается на инструкцию, следующую за обязательной закрывающей фигурной скобкой оператора
switch. |
|
|
i=4; |
|
|
switch (i+2) |
{ |
|
case 4 |
: i=i+4; |
|
case 6 |
: i=i+6; break; |
|
case 8 |
: i=i+8; |
|
|
|
} |
Информатика 27.03.02 |
|
44 |
Структуры, реализующие повторение.
В языке С существует три основных конструкции для реализации циклов. Для представления циклов с постусловием используется
конструкция do – while, а |
для циклов |
с |
предусловием – |
конструкции while и for. |
|
|
|
while (условие) |
i=2; |
|
|
действие; |
while (i<=5) |
||
действие; |
{ . . . . |
|
|
|
|
|
i=i+1;} |
|
t=4; |
|
|
do |
i=3; |
|
|
действие; |
do{ |
|
|
while (условие); |
. . . |
|
|
|
i=i+1; |
|
|
|
. . .} |
|
|
|
while (i<=10); |
||
При организации циклов с |
предусловием |
и |
с постусловием |
условие необходимо формулировать так, чтобы выполнение цикла
продолжалось по ветви “да”. |
|
|
При написании циклов с предусловием |
более |
компактным |
способом записи является использование цикла |
for, |
поскольку в |
его заголовке помимо условия окончания цикла |
содержатся, если |
|
это необходимо, и задание начального значения счетчика, и предписание по изменению значения счетчика.
for (выражение 1; выражение 2; выражение 3) действие;
действие;
for (i=2; i<=5; i=i+1) {. . .
. . .
}
t=4;
Первое выражение из заголовка цикла for воспринимается как действие и выполняется только 1 раз. Второе выражение воспринимается как условие. До тех пор, пока это условие истинно, выполняется тело цикла. После каждого выполнения тела выполняется третье выражение, которое воспринимается как действие. Затем управление вновь передается на проверку условия.
Любое из трех выражений, находящихся в заголовке цикла for, может быть пропущено, а может присутствовать, но не являться действием или условием. Обязательными с точки зрения синтаксиса
Информатика 27.03.02 |
45 |