
- •Санкт-Петербургский
- •Структура программы на языке Си
- •Структура простейшей одномодульной программы
- •Комментарии в программе на языке Си
- •Начальные сведения о препроцессоре
- •Определение функции 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); /* Конец фрагмента программного кода */