- •1.1. Алфавит языка Си
- •1.2. Лексемы
- •1.3. Идентификаторы и ключевые слова
- •1.4. Знаки операций
- •1.5. Литералы (константы)
- •1.6. Комментарии
- •1.7. Общая структура программы на языке Си.
- •1.8. Функциональная и модульная декомпозиции
- •1.9. Этапы обработки программы.
- •1.10. Роль препроцессора.
- •1.11. Ошибки
- •2. Переменные и константы. Типы данных
- •2.1. Основные типы данных
- •2.2. Декларация (объявление) объектов
- •2.3. Константы в программах
- •2.4. Целочисленные константы
- •2.5. Константы вещественного типа
- •2.6. Символьные константы
- •2.7. Строковые константы
- •2.8. Логические константы
- •3. Обзор операций
- •3.1. Операции, выражения
- •3.2. Арифметические операции
- •3.3. Операции сравнения
- •3.4. Логические операции
- •3.5. Операция присваивания
- •Примеры недопустимых выражений:
- •3.6. Сокращенная запись операции присваивания
- •3.7. Операция «,» (запятая)
- •4. Обзор операций (продолжение)
- •4.1. Преобразование типов операндов бинарных операций
- •4.2. Преобразование типов при присваивании.
- •4.3. Операция явного приведения типа
- •4.4. Приоритеты операций
- •5. Стандартная библиотека языка Си
- •5.1. Стандартные математические функции
- •5.2. Потоковый ввод-вывод
- •5.3. Консольные функции вывода данных на экран
- •5.4. Консольные функции ввода информации
- •5.5. Ввод-вывод в оконных приложениях.
- •Советы по программированию
- •6. Операторы языка с.
- •7. Составление разветвляющихся алгоритмов
- •7.1. Условные операторы
- •If (выражение) оператор;
- •If (выражение) оператор 1 ;
- •If (выражение 1) оператор 1;
- •If (выражение 2) оператор 2;
- •If (выражение 3) оператор 3;
- •7.2. Оператор выбора альтернатив (переключатель)
- •Void main(void)
- •7.3. Условная операция «? :»
- •8. Составление циклических алгоритмов
- •8.1. Оператор с предусловием while
- •8.2. Оператор цикла с постусловием do – while
- •Void main(void)
- •8.3. Оператор цикла с предусловием и коррекцией for
- •8.4. Вложенные циклы.
- •Пример 1.
- •Void main(){
- •Пример 2.
- •9. Операторы передачи управления.
- •9.1. Оператор безусловного перехода goto
- •9.2. Операторы continue, break и return
- •10. Массивы
- •10.1. Одномерные массивы
- •10.2. Примеры алгоритмов, использующих одномерные массивы.
- •10.3. Многомерные массивы
- •10.4. Примеры алгоритмов, использующих двумерные массивы.
- •10.5. Компонента StringGrid
- •11. Размещение данных и программ в памяти пэвм
- •11.1. Общие понятия.
- •11.2. Кодирование целых чисел.
- •11.3. Кодирование вещественных чисел.
- •11.4. Кодирование символов.
- •Примеры кодов символов:
- •Стандартная часть таблицы символов (ascii)
- •Дополнительная часть таблицы символов (ascii, кириллица)
- •Дополнительная часть таблицы символов (ansi, кириллица)
- •11.5. Операция sizeof
- •11.6. Кодирование программы.
- •11.8. Регистры
- •12.1. Строки как нуль-терминированные массивы char.
- •Void main(){
- •If (!strcmp(a,b))
- •Itoa(I, s, 10);
- •If (! sscanf(s, "%d", &I))
- •If (!strnicmp(s, "song", 4)) {
- •If (!strnicmp(s, "song", 4)) {
- •12.2. Русификация консольных приложений.
- •Void main(void)
- •12.3. Строки как переменные типа AnsiString.
- •12.4. Преобразования строковых типов.
- •12.5. Тип String в консольных приложениях.
- •Void main(){
- •13. Функции пользователя.
- •13.1. Сущность и предназначение функций.
- •13.2. Определение и вызов функции.
- •Void main(){
- •14. Область видимости и классы памяти
- •14.1. Область видимости.
- •Void fun(void);
- •14.2. Классы памяти объектов в языке Cи.
- •Void f1(int);
- •Void main(void)
- •Void f1(int I)
- •Void st(void){
- •14.3. Разбиение программы на модули.
- •15. Генерация псевдослучайных чисел.
- •16. Отладка и пошаговое выполнение программы
- •17. Указатели
- •17.1. Определение указателей
- •17.2. Связь указателей и массивов.
- •17.3. Операции над указателями (косвенная адресация)
- •17.4. Сравнение указателей
- •17.5. Массивы указателей.
- •17.6. Указатели на указатели.
- •17.7 . Указатели как параметры функций.
- •Void zam(int *X, int *y)
- •Void zam(int &X, int &y)
- •Void zam (int&, int&);
- •Void main (void)
- •17.9. Указатели на функции
- •Void FunOut(double (*p_f )(char, double)){
- •18.2. Создание одномерного динамического массива.
- •18.3. Создание двуxмерного динамического массива.
- •19. Операция typedef
7. Составление разветвляющихся алгоритмов
7.1. Условные операторы
Условный оператор if используется для разветвления процесса выполнения кода программы на два направления.
В языке Си имеется две формы условного оператора: простая и полная. Синтаксис простой формы:
If (выражение) оператор;
выражение – логическое или арифметическое выражение, вычисляемое перед проверкой, и, если выражение истинно (не равно нулю), то выполняется оператор, иначе он игнорируется; оператор – любой оператор языка Си. Если в случае истинности выражения необходимо выполнить несколько операторов (более одного), их необходимо заключить в фигурные скобки. (Группа операторов, заключенная в фигурные скобки, называется составным оператором или блоком).

Примеры записи:
if (x > 0) x = 0;
if (i != 1) j++, s = 1; – используем операцию «запятая»;
if (i != 1)
{
j++;
s = 1; // последовательность операций (блок);
}
if (getch() != 27) k = 0; – если нажата любая клавиша, кроме “Esc”.
if (!x) exit (1); или так : if (x == 0) exit(1);
if ( i>0 && i<n) k++; – если нужно проверить несколько условий, то их объединяют знаками логических операций.
Синтаксис полной формы условного оператора:
If (выражение) оператор 1 ;
else оператор 2 ;
Если выражение не равно нулю (истина), то выполняется оператор 1, иначе – оператор 2. Операторы 1 и 2 могут быть простыми или составными (блоками).
Наличие символа «;» перед словом else в языке Си обязательно.

Примеры записи:
if (x > 0) j = k+10;
else m = i+10;
if ( x > 0 && k !=0 )
{
j = x/k;
x += 10;
}
else m = k*i + 10;
Операторы 1 и 2 могут быть любыми операторами, в том числе и условными. Тогда, если есть вложенная последовательность операторов if – else, то слово else связывается с ближайшим к ней предыдущим if, не содержащим ветвь else. Например:
if (n > 0)
if(a > b) z = a;
else z = b;
Здесь ветвь else связана со вторым if (a > b). Если же необходимо связать слово else с внешним if, то используются операторные скобки:
if (n > 0) {
if (a > b) z = a;
}
else z = b;
В следующей цепочке операторов if – else – if выражения просматриваются последовательно:
If (выражение 1) оператор 1;
else
If (выражение 2) оператор 2;
else
If (выражение 3) оператор 3;
else оператор4 ;
Если какое-то выражение оказывается истинным, то выполняется относящийся к нему оператор и этим вся цепочка заканчивается. Каждый оператор может быть либо отдельным оператором, либо группой операторов в фигурных скобках. Оператор 4 будет выполняться только тогда, когда ни одно из проверяемых условий не выполняется. Иногда при этом не нужно предпринимать никаких явных действий, тогда последний else может быть опущен, или его можно использовать для контроля, чтобы зафиксировать "невозможное" условие (своеобразная экономия на проверке условий).
Пример:
if (x < 0) printf("\n X отрицательное \n");
else if(x==0) printf ("\n X равно нулю \n");
else printf("\n X положительное \n");
Замечание. Наиболее распространенной ошибкой при создании условных операторов является использование в выражении операции присваивания «=» вместо операции сравнения на равенство операндов «==» (два знака равно). Например, в следующем операторе синтаксической ошибки нет:
if (x = 5) a++;
но значение а будет увеличено на единицу независимо от значения переменной х, т.к. результатом операции присваивания х = 5 в круглых скобках является значение 50 – истина.
