- •Предисловие
 - •Алфавит языка
 - •Служебные слова
 - •Константы
 - •Комментарии
 - •Переменные
 - •Int I,j,k; //переменные I, j, k – целого типа
 - •Математические функции
 - •Выражения
 - •Выражения целого типа
 - •Примеры записи выражений целого типа:
 - •Примеры вычислений выражений целого типа:
 - •Выражения вещественного типа
 - •Примеры записи выражений вещественного типа
 - •Примеры вычислений выражений вещественного типа:
 - •Операторы присваивания
 - •Примеры записи операторов присваивания:
 - •Ввод и вывод данных
 - •Стандартный ввод-вывод
 - •Посимвольный ввод-вывод
 - •Ввод-вывод строк
 - •Форматированный вывод
 - •Форматированный ввод
 - •Scanf(“формат”, аргументы);
 - •Int age, rost;
 - •Vasja Pupkin
 - •Vasja Pupkin
 - •Структура программы
 - •Void main()
 - •Int main()
 - •Int age, rost;
 - •Директивы препроцессора
 - •Включение файлов
 - •Int main()
 - •Int age, rost;
 - •Int main()
 - •Int age, rost;
 - •Подстановка имен
 - •Макросы
 - •Структуры данных
 - •Массивы
 - •Int vect[5];
 - •Int vect[count];
 - •Vect[0] vect[1] vect[2] vect[3] vect[4]
 - •Int main()
 - •Int temp;
 - •Int matr[row][col];
 - •Алгоритм и его свойства
 - •Схемы алгоритмов
 - •Пример записи алгоритма:
 - •Базовые структуры
 - •Цепочка
 - •Ветвления
 - •Альтернатива
 - •If (условие)
 - •Вариант 2 – с использованием операции конъюнкции
 - •Int main()
 - •Int c, y1, y2, kl, day, month, year;
 - •Часто встречающиеся ошибки программирования:
 - •Int main()
 - •Переключатель
 - •Int main()
 - •Int month;
 - •Часто встречающиеся ошибки программирования:
 - •Бесконечные циклы
 - •Циклы с предусловием
 - •Int main()
 - •Программа
 - •Int main()
 - •Программа
 - •Int main()
 - •Часто встречающиеся ошибки программирования:
 - •Циклы с постусловием
 - •Int main()
 - •Int main()
 - •Программа
 - •Int main()
 - •Int main()
 - •Int main()
 - •Int month;
 - •Циклы с параметром
 - •Действия цикла:
 - •Int main()
 - •Int top, bottom;
 - •Int main()
 - •Int num, sum, factor;
 - •Int main()
 - •Int main()
 - •If (number % 3)
 - •Int main()
 - •Int main()
 - •Int I, m, vector_min, vector_max, temp;
 - •Int vector[n];
 - •Int main()
 - •Int vector_min, vector_max, temp;
 - •Int vector[n];
 - •Функции
 - •Int summa(int a, int b)
 - •Int summa(int a, int b)
 - •Void swap(int a, int b)
 - •Int temp;
 - •Int top, bottom, temp;
 - •Рекурсия
 - •5 * 4 * Factorial(3)
 - •5 * 4 * 3 * Factorial(2)
 - •5 * 4 * 3 * 2 * Factorial(1)
 - •Void quick_sort(int left, int right, int vector[])
 - •Int I, last;
 - •Void swap(int I, int j, int vector[])
 - •Int temp;
 - •Особенности рекурсии:
 - •Адреса и указатели
 - •Операции над указателями
 - •Указатели и массивы
 - •Int mass[5];
 - •Int trio[5][2][3];
 - •Указатели и функции
 - •Int main()
 - •Указатели и строки
 - •Функции для работы со строками
 - •Vtorokursnik
 - •Vtorokursnik
 - •Itoa(I, str, 16);
 - •Текстовые файлы
 - •Int vector[k];
 - •Vector_1:
 - •Vector_2:
 - •Int ocenka;
 - •Imja: Vasilij
 - •Imja: Ivan
 - •Int ocenka;
 - •Бинарные файлы
 
Комментарии
Программа без комментариев – первый признак непрофессионализма.
Комментарии можно начинать или двумя знаками деления:
//это комментарий
или заключать между символами-скобками /* */:
/* это комментарий */
Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы алфавита языка Си, поскольку комментарии не обрабатываются компилятором.
Рекомендуется использовать //-комментарии для пояснений, а скобки /* */ применять для временного исключения программных блоков при отладке программы.
Переменные
В математике с понятием переменной связывают некоторый именованный объект, который может принимать одно из допустимого множества значений.
В программировании термин переменная означает область оперативной памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя переменной можно рассматривать как адрес первого байта области памяти, в которой она хранится. Знание этого адреса дает возможность пользователю изменять значение переменной в процессе выполнения программы.
Константам тоже выделяются необходимые ячейки памяти, однако их адреса пользователю неизвестны. Поэтому значения констант нельзя изменять в процессе выполнения программы.
Таким образом, понятие переменной употребляется для обозначения величины, которая при работе программы может принимать различные значения. Каждая переменная должна иметь свое имя-идентификатор. Имена переменных программист выбирает сам, руководствуясь следующими правилами:
имя переменной должно отражать ее смысл, то есть то, что с помощью этой переменной вычисляется,
не допускается совпадение имени переменной со служебными словами и именами функций,
в имени можно использовать буквы латинского алфавита, цифры и знак подчеркивания,
имя должно начинаться с буквы,
совпадающие имена, состоящие из строчных и прописных букв, считаются различными: name и NAME – различные имена.
Переменные в Си могут иметь один из трех стандартных типов:
int - целый,
float - вещественный,
char - символьный.
Диапазон допустимых значений переменных совпадает с диапазоном допустимых значений констант того же типа:
int: -32768 … +32767,
float: ±3,4×10-38…±3,4×10+38,
char: 0 … 255.
Кроме этих основных типов можно использовать следующие типы переменных:
long: -2 147 483 648 … +2 147 483 647,
double: ±1,7×10-308…±1,7×10+308,
и их беззнаковые аналоги:
unsigned int: 0 … 65535,
unsigned long: 0 … 4 294 967 295.
Перед своим использованием любая переменная должна быть описана (объявлена): указан класс памяти, тип и имя переменной, а также по возможности инициализирована – ей присваивается начальное значение.
Самое простое описание включает в себя тип переменной и ее имя:
Int I,j,k; //переменные I, j, k – целого типа
float x,y; //переменные x, y – вещественного типа
char a; //переменная a – символьного типа
Желательна инициализация переменных при их описании:
int i=1, j=0, k=2;
float x=0.25, y=-1.5;
char a=’W’;
Если при описании переменной использован модификатор const, то это означает, что значение переменной нельзя изменять в программе. Такую переменную называют именованной константой. Она обязательно должна быть инициализирована:
const int i=1; //именованная целая константа i
const float x=0.25; //именованная вещественная константа x
const char a=’W’; //именованная символьная константа a
Класс памяти определяет время жизни и область видимости переменной:
auto - автоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее описание. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни – от момента описания до конца блока. Для локальных (описанных внутри блока) переменных спецификатор auto применяется по умолчанию, поэтому задавать его явным образом смысла не имеет,
extern - внешняя переменная. Эта переменная определяется в другом месте программы (в другом файле или дальше по тексту программы). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены. Если переменная в этом же описании инициализируется, то спецификатор extern игнорируется,
static - статическая переменная. Время ее жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего описание переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными (описаны вне любого блока, область их действия – весь файл, в котором они описаны) и локальными (описаны внутри блока). Глобальные статические переменные видны только в том модуле, в котором они описаны,
register - регистровая переменная. Память для нее выделяется в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto:
int a; //глобальная переменная a
void main() //заголовок головной программы
{ //начало блока головной программы
int b=1; //локальная переменная b
extern float x;//переменная x определена в другом месте
static int c=0;//локальная статическая переменная c
register char d=’W’; //регистровая переменная d
a=1; //присваивание значения глобальной переменной a
int a; //описание локальной переменной a
//с этого момента и до конца блока действует
//только локальная переменная a
a=0; //присваивание значения локальной переменной a
. . . . . . . . .
return 0;
} //конец блока головной программы
float x=1.5;//определение и инициализация внешней переменной x
В этом примере:
глобальная переменная a определена вне всех блоков. Память под нее выделяется в сегменте данных в начале работы программы, областью действия и областью видимости является вся программа до оператора описания одноименной локальной переменной a,
локальные переменные b и c определены внутри блока, поэтому область их видимости – весь блок от момента их описания. Память под b выделяется в стеке при входе в блок и освобождается при выходе из него. Переменная с располагается в сегменте данных и существует все время, пока работает программа.
Если при определении начальное значение переменной явным образом не задано, то компилятор присваивает глобальным и статическим переменным нулевые значения соответствующего типа. Автоматические переменные в этом случае не инициализируются.
Описание переменной может выполняться в форме объявления или определения.
Объявление описывает свойства переменной, информируя компилятор о типе переменной и классе памяти. Определение содержит, кроме этого, указание компилятору о выделении памяти в соответствии с типом переменной, то есть связывает переменную с конкретной областью памяти. В Си большинство объявлений являются одновременно и определениями. В приведенном выше примере только описание:
extern float x;
является объявлением, но не определением.
Переменная может быть объявлена многократно, но определена только в одном месте программы.
