- •Санкт-Петербургский
 - •Структура программы на языке Си
 - •Структура простейшей одномодульной программы
 - •Комментарии в программе на языке Си
 - •Начальные сведения о препроцессоре
 - •Определение функции main().
 - •Пример простейшей программы
 - •Алфавит, синтаксис и семантика
 - •Алфавит языка Си
 - •Понятие о типе
 - •Система типов языка Си Система типов языка Си
 - •Понятие об объекте
 - •Лексемы
 - •Зарезервированные слова
 - •Идентификаторы
 - •Литералы
 - •Целочисленные литералы
 - •Литерал вещественного типа
 - •Символьные литералы
 - •Строковый литерал
 - •Переменные
 - •Символические константы в языке Си
 - •Операторы, выражения и инструкции. Общие сведения.
 - •Классификация операторов
 - •Приоритет и ассоциативность операторов.
 - •Побочные эффекты и вычисления выражений
 - •Порядок вычисления выражений
 - •Арифметические операторы и выражения
 - •Унарные операторы
 - •Бинарные операторы
 - •Преобразования типа при выполнении бинарных операторов
 - •Автоматическое преобразование типов
 - •Явное преобразование типа
 - •Математические функции
 - •Оператор присваивания и инструкция присваивания
 - •Простой оператор присваивания
 - •.Множественное присваивание
 - •Составной оператор присваивания
 - •Преобразование типа при присваивании
 - •Начальные сведения об указателях. Выходные параметры функции
 - •Принятие решений и логические величины. Операторы отношения и сравнения на равенство
 - •Логические операторы
 - •Поразрядные операторы
 - •Условные выражения (оператор ?:)
 - •Оператор запятая
 - •Оператор sizeof
 - •Составная инструкция
 - •Инструкция ifelse
 - •Полная и сокращенная формы инструкции if
 - •Вложенные инструкции if
 - •Инструкция switch
 - •Синтаксис инструкции switch
 - •1.25.2. Использование инструкции switch
 - •Функциональные компоненты цикла
 - •Арифметические и итерационные циклы
 - •Задачи, приводящие к арифметическим циклам
 - •Задачи, приводящие к итерационным циклам
 - •Циклические управляющие инструкции
 - •Цикл, управляемый инструкцией for
 - •Цикл, управляемый инструкцией while
 - •Цикл, управляемый инструкцией do … while
 - •Цикл с выходом
 - •Вложенные циклы
 - •Понятие о варианте и инварианте цикла
 - •Объявления и определения (расширенное рассмотрение)
 - •Спецификаторы объявления
 - •Спецификаторы класса памяти.
 - •Квалификаторы типа
 - •Спецификаторы типа
 - •Использование спецификаторов
 - •Описатели
 - •Использование зарезервированного слова typedefдля объявления синонимов типов
 - •Функции
 - •Понятие об абстракции и инкапсуляции
 - •Функция языка Си и процедурная абстракция
 - •Понятие о функции
 - •Назначение функций
 - •Определение функции
 - •Функции, возвращающие и невозвращающие значение
 - •Вызов функции. Передача параметров по значению
 - •Внешние переменные и процедурная абстракция
 - •Понятие о прототипе. Компиляция
 - •Старый стиль определения функции
 - •Массивы в стиле языка с89
 - •Определение и объявление массивов
 - •Определение и объявление одномерных массивов. Иницициализация одномерных массивов при их определении. Доступ к элементам массива.
 - •Определение и инициализация двумерных массивов
 - •Операции с массивами
 - •Размещение массивов в оперативной памяти
 - •Указатели
 - •Операторы разыменования и взятия адреса
 - •Области применения указателей
 - •Нулевой указатель
 - •Определение указателя
 - •Недействительный указатель
 - •Операции с указателями
 - •Дополнительные сведения о разыменовании указателей
 - •Присваивание указателей
 - •Операция взятия адреса для указателя. Указатели на указатели
 - •Указатели и операция индексирования
 - •Арифметические операции с указателями
 - •Сравнение указателей
 - •Указатели и динамическая память
 - •Функция malloc
 - •Функция calloc
 - •Функция realloc
 - •Функция free
 - •Указатели – параметры функций. Имитация передачи по ссылке
 - •Указатели на функцию
 - •Инициализация указателя на функцию
 - •Операции с указателями на функцию
 - •Табулирование произвольной функции одного переменного
 - •Использование стандартной функции qsort
 - •Указатели и массивы
 - •Строковый литерал
 - •Символические строковые константы
 - •Строковые переменные
 - •Инициализация строковых переменных
 - •Операции со строковыми переменными
 - •Ввод строк
 - •Функция scanf()
 - •Опасная функция gets()
 - •Использование функции fgets()
 - •Вывод строк
 - •Функция printf()
 - •Функция puts()
 - •Функция fputs()
 - •Библиотечные функции для обработки строк
 - •Функция strlen()
 - •Функции strcpy()иstrncpy()
 - •Функции strcat() иstrncat()
 - •Функция strcmp()
 - •Массивы строк
 - •Структуры
 - •Объявление структур
 - •Обращение к полям структуры
 - •Инициализация структур
 - •Операции над структурами
 - •Массивы структур
 - •Объявление массива структур
 - •Идентификация элементов массива структур
 - •Работа с внешними устройствами
 - •Понятие потока
 - •Текстовый поток
 - •Двоичный поток
 - •Указатель файла
 - •Функция fopen()
 - •Функция fclose()
 - •Построковый ввод – вывод
 - •Блоковый ввод – вывод
 - •Примеры решенных задач
 - •Прямой доступ к файлу
 - •Функция fseek()
 
Составная инструкция
Составная инструкция – это последовательность объявлений, определений и инструкций, заключенных в фигурные скобки. Эта инструкция используется для группирования других инструкций. Дело заключается в том, что внутри некоторых управляющих конструкций допускается использование единственной инструкции. Составную инструкцию следует применять в тех же случаях, когда в соответствии с алгоритмом необходимо поместить несколько инструкций, а синтаксис языка разрешает использовать только одну,
Инструкция ifelse
Эта инструкция используется для программирования разветвляющихся алгоритмов. Назначение этой инструкции состоит в моделировании на языке Си двух стандартных управляющих конструкций структурного программирования, которые применяются для организации разветвляющихся алгоритмов:
● Альтернатива.
● Действие или обход.
Полная и сокращенная формы инструкции if
Рассматриваемая инструкция применяется в двух формах:
● Полной
● Сокращенной
В полной форме инструкция if .. elseмоделирует стандартную управляющую структуру, которая называется альтернатива, а в сокращенной форме – стандартную управляющую структуру действие или обход.
Рассматриваемая инструкция имеет следующий формат:
if(выр) инструкция1 [else инструкция2]
Инструкция if в общем случае содержит следующие компоненты:
● Зарезервированные слова ifиelse.
● Внутренние инструкции инструкция1иинструкция2.
● Выражение выр, предназначенное для принятия решения об использовании внутренних инструкций.
В формате инструкции if, представленном выше, в квадратные скобки заключена необязательная часть инструкцииif. В зависимости от наличия или отсутствия этой части говорят либо о полной форме инструкцииif, либо о сокращенной форме. В полной форме необязательная часть присутствует, а в сокращенной – нет.
Полная форма инструкции ifпозволяет организовать разветвление на два направления. Первое направление (true – ветвь разветвления) представлено единственной инструкцией языка Сиинструкция1, а второе направление (false - ветвь) – единственной инструкциейинструкция2.
Логика работы полной инструкции ifтакова. В зависимости от значения, которое имеет выражениевыр(true или false) будет выполняться либо внутренняя инструкцияинструкция1, либо внутренняя инструкцияинструкция2. Внутренняя инструкцияинструкция1выполняется только в том случае, когда значение выражениявырравно true, в противном случае будет выполняться внутренняя инструкцияинструкция2. Нетрудно видеть, что логика работы полной инструкцииifсоответствует стандартной управляющей конструкции “альтернатива”.
В сокращенной форме инструкции ifимеется только одна внутренняя инструкция (инструкция1). Работа такой формы инструкцииifотличается от работы полной формы инструкцииifтолько для случая, когда значение выражениявырравно false. В этом случае при использовании сокращенной формы инструкцииifне выполняется ни каких действий. Можно сказать, что в этом случае имеет место обход действия, предусмотренного единственной инструкциейинструкция1.
Приведем примеры использования инструкции if.
Пример 1. Даны два числа a и b. Необходимо найти значение наибольшего из этих чисел.
/* В коде, приведенном ниже a, b max – переменные типа double. Переменные a и b содержат исходные данные, а переменная max – ожидаемый результат */if(a > b) max = a;elsemax = b; /* Вызов функции printf()расположен в линейной части и выполняется сразу после завершения работы инструкцииif*/ printf(“Максимальное значение = %0.3f”, max); /* Конец фрагмента программного кода */
В качестве примера применения сокращенной формы рассматриваемой инструкции рассмотрим усложненный вариант задачи, решение которой было выбрано в качестве иллюстрации применения полной инструкции if.
Пример 2. Даны три числа a, b и c. Необходимо найти значение наибольшего из чисел.
Решение. Предположим вначале, что имеется только два числа. Пусть это будут числа a и b. Такая задача уже решена. Ее решение приведено выше. Теперь эту задачу следует решать повторно, сравнивая уже значения переменных с и max. Оказывается, что такое сравнение можно выполнить с помощью сокращенной формы инструкции if. Ниже приведен программный код, содержащий решение рассматриваемой задачи.
/* В коде, приведенном ниже, a,b, с иmax– переменные типаdouble.Переменныеa,bиcсодержат исходные данные, а переменнаяmax– ожидаемый результат */if(a>b)max=a;elsemax=b;if(c>max)max=c;printf(“Максимальное значение = %0.3f”,max); /* Конец фрагмента программного кода */
