Использование оператора безусловного перехода Лабораторная работа 2 Условные операторы Цель работы Приобретение навыков программирования линейных и разветвленных вычислительных процессов. Темы лекций для предварительной проработки Модуль 2.2. Операторы ввода-вывода на консоль Модуль 2.3 Условные операторы Планируемые результаты обучения В результате выполнения лабораторной работы должны быть сформированы и развиты следующие профессиональные компетенции: на уровне знаний: – воспроизводить синтаксис операторов ветвления: обход, альтернатива, выбор. на уровне понимания: – объяснять логику работы операторов ветвления языка С. на уровне применения: – использовать по назначению базовые типы данных языка программирования при объявлении переменных; – записывать в соответствии с правилами языка программирования выражения и операции; – использовать по назначению операторы ветвления при записи соответствующих вычислительных процессов; – использовать вложенные ветвления при решении практических задач; – определять, какие операторы эффективнее применять при реализации задач; – составлять программы с ветвлениями. на уровне анализа: – анализировать разработанную программу с целью выявления логических ошибок; – локализовать ошибки выполнения программы с целью их исправления. на уровне синтеза: – использовать математические методы и вычислительные алгоритмы для решения практических задач; – проектировать структуру программы; – организовать работу в группе при совместном решении задачи; – проектировать тестирование программы; – защищать выполненную самостоятельную работу; – принимать верное решение при коллективном решении задачи. Краткие теоретические сведения Условные операторы Оператор if Оператор условия используется для изменения хода исполнения программы и имеет синтаксис: if (условие) { выражение 1; } else { выражение 2; }; В блоке с условием записывается логическое выражение, результат вычисления которого может принимать значения «да» (true) или «нет» (else), после чего в случае true выполняется выражение 1, в противном случае – выражение 2. Примерами таких выражений могут служить операции сравнивания или значение вычисления других логических выражений. 4<5; // true a == 3; // a < 3 // false a == 2 // true В последнем случае любое значение целочисленной переменной, отличенное от нуля, принимает значение true, а значение равное 0 – false. Логические операторы можно использовать совместно далее приводится таблица истинности для бинарных операторов: Таблица №1. Матрица истинности. Операнд 1 | Операнд 2 | and | or | xor | t | t | t | t | f | t | f | f | t | t | f | t | f | t | t | f | f | f | f | f | Кроме бинарных операторов в языке С используется унарная операция отрицания «!». Результатом выполнения этой операции будет инвертирование значения аргумента. Приведем несколько примеров: (2<5) and (3<2) // false (8>4) or (4>8) // true !((2>2) and (5>4) and (4>1)) // false В С для работы с арифметическими выражениями используются следующие операторы сравнивания: >, < – больше, меньше; >=, <= – больше или равно, меньше или равно; !=, == – не равно, равно. 4.2.2. Тернарный оператор “?” Оператор имеет следующий синтаксис: условие ? выражение1 : выражение 2; Оператор вопросительный знак является аналогом оператора if, но имеет одно существенное отличие – он может возвращать в программу значение вычисляемого выражения. К примеру: int a = 0; a = 3>2 ? 5*5 : 5*7; Значением а после выполнение этих строк будет 25. Использование оператора switch Оператор switch используется, когда требуется осуществить выбор из большого количества вариантов: int a = 2; switch (a){ case 1: a = a * a; break; case 2: a = a + a; a = a * 20; break; default: a = 0; }; После ключевого слова case указываются предполагаемые значения а и действия, которые требуется выполнить. Обратите внимание на ключевое слово break в конце каждого оператора. Оно используется для выхода из блока switch, так как в нем все операторы выполняются последовательно, начиная с того, где было найдено требуемое значение. Блок default исполняется, если ни один из операторов case не содержал искомого значения. Использование оператора безусловного перехода Безусловный переход используется для разрыва привычного хода выполнения программы и имеет синтаксис: label name: goto name; Сначала объявляется метка перехода, затем с помощью ключевого слова goto осуществляется переход. Следует отметить, с помощью оператора перехода можно создавать циклы: int i = 0; label m1: i = i + 1; if(i<10){ goto m1; } В приведенном примере выполнение программы возобновиться только при достижении переменной i значения 10. Необходимо отметить, что использование оператора goto в структурированных программах не приветствуется. Методические указания Для выполнения лабораторной работы необходимо изучить теоретический материал модуля 2.3. Лабораторная работа включает: – общие задания для совместного выполнения под присмотром преподавателя; – индивидуальные задания для самостоятельного выполнения. При выполнении общих заданий необходимо разработать, отладить и продемонстрировать программу. При выполнении индивидуальных заданий необходимо выполнить все этапы решения задачи на ЭВМ: 1) словесная постановка задачи; 2) анализ задачи и формальная постановка задачи; 3) проектирование (разработка алгоритма); 4) реализация (кодирование, отладка); 5) тестирование. Результаты выполнения индивидуальных заданий оформить в виде отчета. При выполнении задания на использование инструкции switch следует помнить, что: – инструкция switch предназначена для выбора одного из нескольких возможных направлений дальнейшего хода программы; – выбор последовательности инструкций осуществляется в зависимости от равенства значения переменной-селектора константе, указанной после слова case; – если значение переменной-селектора не равно ни одной из констант, записанных после case, то выполняются инструкции, расположенные после слова default; – в качестве переменной-селектора можно использовать переменную целого (int) или символьного (char) типа. Пример решения задачи Постановка задачи Разработать программу, определяющую принадлежит ли точка заданной фигуре.  |