
- •Введение
- •1. Структура программы на языке Си
- •2. Структура простейшей одномодульной программы
- •2.1. Комментарии в программе на языке Си
- •2.2. Начальные сведения о препроцессоре
- •2.3. Определение функции main().
- •2.4. Пример простейшей программы
- •3. Алфавит, синтаксис и семантика
- •4. Алфавит языка Си
- •5. Понятие о типе
- •6. Система типов языка Си
- •Система типов языка Си
- •7. Понятие об объекте
- •8. Лексемы
- •9. Зарезервированные слова
- •10. Идентификаторы
- •11. Литералы
- •11.1. Целочисленные литералы
- •11.2. Литерал вещественного типа
- •11.3. Символьные литералы
- •11.4. Строковый литерал
- •12. Переменные
- •13. Символические константы в языке Си
- •14. Операторы, выражения и инструкции. Общие сведения.
- •14.1. Классификация операторов
- •14.2. Приоритет и ассоциативность операторов.
- •14.3. Побочные эффекты и вычисления выражений
- •14.4. Порядок вычисления выражений
- •15. Арифметические операторы и выражения
- •15.1. Унарные операторы
- •15.2. Бинарные операторы
- •Автоматическое преобразование типов
- •Явное преобразование типа
- •15.4. Математические функции
- •16. Оператор присваивания и инструкция присваивания
- •16.1. Простой оператор присваивания
- •16.2. .Множественное присваивание
- •16.3. Составной оператор присваивания
- •16.4. Преобразование типа при присваивании
- •17. Начальные сведения об указателях. Выходные параметры функции
- •18. Принятие решений и логические величины. Операторы отношения и сравнения на равенство
- •18.1. Логические операторы
- •18.2. Поразрядные операторы
- •19. Условные выражения (оператор ?:)
- •20. Оператор запятая
- •21. Оператор sizeof
- •22. Инструкции перехода
- •22.1. Инструкция break
- •22.2. Инструкция continue
- •22.3. Инструкция goto
- •22.4. Инструкция return
- •23. Составная инструкция
- •24. Инструкция if else
- •24.1. Полная и сокращенная формы инструкции if
- •24.2. Вложенные инструкции if
- •25. Инструкция switch
- •25.1. Синтаксис инструкции switch
- •1.25.2. Использование инструкции switch
- •26. Функциональные компоненты цикла
- •27. Арифметические и итерационные циклы
- •27.1. Задачи, приводящие к арифметическим циклам
- •27.2. Задачи, приводящие к итерационным циклам
- •28. Циклические управляющие инструкции
- •29. Цикл, управляемый инструкцией for
- •30. Цикл, управляемый инструкцией while
- •31. Цикл, управляемый инструкцией do … while
- •32. Цикл с выходом
- •33. Вложенные циклы
- •34. Понятие о варианте и инварианте цикла
- •35. Объявления и определения (расширенное рассмотрение)
- •35.1. Спецификаторы объявления
- •Спецификаторы класса памяти.
- •Квалификаторы типа
- •Спецификаторы типа
- •Использование спецификаторов
- •35.2. Описатели
- •36. Функции
- •36.1. Понятие об абстракции и инкапсуляции
- •36.2. Функция языка Си и процедурная абстракция
- •36.3. Понятие о функции
- •36.4. Назначение функций
- •36.5. Определение функции
- •36.9. Понятие о прототипе. Компиляция
- •36.10. Старый стиль определения функции
- •37. Массивы в стиле языка С89
- •37.1. Определение и объявление массивов
- •Определение и объявление одномерных массивов. Иницициализация одномерных массивов при их определении. Доступ к элементам массива.
- •Определение и инициализация двумерных массивов
- •37.2. Операции с массивами
- •37.3. Размещение массивов в оперативной памяти
- •38. Указатели
- •38.1. Операторы разыменования и взятия адреса
- •38.2. Области применения указателей
- •38.3. Нулевой указатель
- •38.4. Определение указателя
- •38.5. Недействительный указатель
- •38.6. Операции с указателями
- •Дополнительные сведения о разыменовании указателей
- •Присваивание указателей
- •Операция взятия адреса для указателя. Указатели на указатели
- •Указатели и операция индексирования
- •Арифметические операции с указателями
- •Сравнение указателей
- •38.7. Указатели и динамическая память
- •Функция malloc
- •Функция calloc
- •Функция realloc
- •Функция free
- •38.9. Указатели на функцию
- •Постановка задачи
- •Решение
- •39. Указатели и массивы
- •40. Строки
- •40.1. Строковый литерал
- •40.2. Символические строковые константы
- •40.3. Строковые переменные
- •40.4. Инициализация строковых переменных
- •40.5. Операции со строковыми переменными
- •40.6. Ввод строк
- •Функция scanf()
- •Опасная функция gets()
- •Использование функции fgets()
- •40.7. Вывод строк
- •Функция printf()
- •Функция puts()
- •Функция fputs()
- •40.8. Библиотечные функции для обработки строк
- •Функция strlen()
- •Функции strcpy() и strncpy()
- •Функции strcat() и strncat()
- •Функция strcmp()
- •40.9. Массивы строк
- •41. Структуры
- •41.1. Объявление структур
- •41.2. Обращение к полям структуры
- •41.3. Инициализация структур
- •41.4. Операции над структурами
- •41.5. Массивы структур
- •Объявление массива структур
- •Идентификация элементов массива структур
- •42. Работа с внешними устройствами
- •42.1. Понятие потока
- •Текстовый поток
- •Двоичный поток
- •42.2. Файлы
- •Указатель файла
- •Функция fopen()
- •Функция fclose()
- •Функция feof()
- •Стандартные потоки
- •Классификация функций потокового ввода – вывода
- •Форматированный ввод – вывод
- •Построковый ввод – вывод
- •Блоковый ввод – вывод
- •Примеры решенных задач
- •Функция fseek()
алгоритмом необходимо поместить несколько инструкций, а синтаксис языка разрешает использовать только одну,
24. Инструкция if else
Эта инструкция используется для программирования разветвляющихся алгоритмов. Назначение этой инструкции состоит в моделировании на языке Си двух стандартных управляющих конструкций структурного программирования, которые применяются для организации разветвляющихся алгоритмов:
●Альтернатива.
●Действие или обход.
24.1.Полная и сокращенная формы инструкции 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. Нетрудно видеть,
46
что логика работы полной инструкции if соответствует стандартной управляющей конструкции “альтернатива”.
В сокращенной форме инструкции if имеется только одна внутренняя инструкция (инструкция1). Работа такой формы инструкции if отличается от работы полной формы инструкции if только для случая, когда значение выражения выр равно false. В этом случае при использовании сокращенной формы инструкции if не выполняется ни каких действий. Можно сказать, что в этом случае имеет место обход действия, предусмотренного единственной инструкцией инструкция1.
Приведем примеры использования инструкции if.
Пример 1. Даны два числа a и b. Необходимо найти значение наибольшего из этих чисел.
/*
В коде, приведенном ниже a, b max – переменные типа double. Переменные a и b содержат исходные данные, а переменная max – ожидаемый результат
*/
if(a > b) max = a;
else
max = 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) else max = a;
max = b; if(c > max)
max = c;
47