Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции КПиЯП.docx
Скачиваний:
51
Добавлен:
20.09.2019
Размер:
3.8 Mб
Скачать

Логические операции.

В языке «С» нет логического типа данных. Для этих целей здесь используется целочисленный тип, ложь представляется значением равным нулю, а истина – любым не нулевым значением. Существует ряд способов создания данного типа.

Первый способ - объявление через директиву препроцессора #define:

#define BOOL int

#define FALSE 0

#define TRUE 1

Преимуществом этого способа перед следующим является то, что компилятор не будет выдавать «warning» на действия с такими переменными. С другой стороны он допускает присвоение этой переменной значения отличного от нуля и единицы.

Второй способ – создание нового типа как перечисление:

typedef enum {false=0, true=1} bool;

В данном случае переменная сможет принимать только два значения: false и true, интерпретируемые как 0 и 1 соответственно.

Недостатком того и другого метода является то, что возникает ошибка если оператор или функция в качестве значения ИСТИНА возвращает значение отличное от 1. Также недостатком является то, что значение переменной такого типа невозможно напрямую вывести на экран – приходится пользоваться следующим способом:

if(flag) printf(“TRUE”); else printf(“FALSE”);

В таких средах разработки как Borland C++ Builder и Microsoft Visual C++ создан тип bool, который является логическим (в обход общего стандарта).

Для работы с логическими переменными в языке «С» предусмотрены два вида операций:

  1. операции отношения (сравнения);

  2. логические операции.

В таблице сведены операции отношений доступные в языке «С», их синтаксис аналогичен синтаксису математических операций.

Обозначение

Значение

==

Равно

!=

Неравно

>

Больше

<

Меньше

>=

Больше или равно

<=

Меньше или равно

Операции отношения (сравнения) возвращают 0 – если условие не выполняется, в противном случае возвращают 1.

Для построения сложных логических выражений в языке «С» предусмотрены логические операции: И - &&, ИЛИ - ||, НЕ - !.

При построении логических выражений необходимо учитывать, что логические операции имеют приоритет более высокий, чем операции отношения. Для построения правильных выражений нужно использовать скобки.

Условная операция.

В языке «С» присутствует условная операция, имеющая следующий синтаксис: переменная = условие ? выражение1 : выражение2;

Данная операция работает следующим образом: если условие истинно, то значению переменной присваивается результат выражения 1, если ложно – выражения 2.

Примеры: Вычислить модуль числа.

#include <stdio.h>

void main()

{

double a;

printf(“Введите число: ”); scanf(“%lf”,&a);

a = a>0 ? a : -a;

printf(“Модуль числа: %lf”, a);

}

Операторы управления.

Как и любой другой язык программирования высокого уровня, язык «С» содержит операторы управления для осуществления ветвлений, циклов и прерываний выполнения алгоритма программы. Традиционно все операторы управления можно разделить на четыре основные группы:

  1. Операторы ветвления,

  2. Операторы выбора,

  3. Операторы циклов,

  4. Операторы переходов.

Рассмотрим каждую из этих групп применительно к языку «С».