Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Операторы отношения (сравнения) и логическиеСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В выражениях оператор отношения и логический оператор слово oтношение обозначает взаимоотношение двух величин, т. е. результат их сравнения, а слово логический обозначает способ, которым объединяются истинное и ложное значения. Поскольку операторы отношения образуют истинный или ложный результат, они часто используются совместно с логическими операторами. Именно по этой причине они обсуждаются здесь вместе. Операторы отношения и логические перечислены в табл. 3.1. Обратите внимание на отношения равенства и неравенства: в С++ не равно обозначается знаками!=, а равно - двойным знаком равенства, ==. В С++ результат операции отношения или логической образует результат типа bool. Другими словами, результат операции отношения или логической всегда равен либо true, либо false. Таблица 3.1. Операторы отношения и логические в С++
Замечание Для старых компиляторов результат операции отношения и логической может быть целым числом, принимающим значение 0 или 1. Это различие носит в основном академический характер, потому что С++, как это уже отмечалось, автоматически преобразует true в 1, a false в 0 и наоборот. Операнды, участвующие в операции отношения, могут принадлежать почти любому типу; необходимо только, чтобы их сравнение имело смысл. Операнды логической операции должны образовывать истинный или ложный результат. Поскольку ненулевое значение истинно, а нулевое ложно, это означает, что логические операторы допустимо использовать с любым выражением, дающим нулевой или ненулевой результат. Логические операторы используются для поддержки базовых логических операций И (AND), ИЛИ (OR) и НЕ (NOT), согласно следующей таблице истинности:
Оба типа операторов, и логические, и отношения, имеют более низкий приоритет, чем арифметические операторы. Это означает, что выражение вроде 10 > 1 + 12 дает тот же результат, что и вариант 10 > (1 + 12). Результат, разумеется, ложен. С помощью логических операторов можно объединять любое количество операторов отношения. Например, в этом выражении объединены три оператора отношения:var > 15 ||!(10< count) && 3 <= item
26. Передача аргументов по ссылке Пример Для того чтобы аргумент передавался не по значению, а по ссылке, перед именем соответствующего аргумента необходимо указать оператор &. В листинге приведен практически тот же программный код, что и в листинге 7.1, однако аргумент функции incr () в этом случае передается по ссылке. #include "stdafx.h" #include <iostream> using namespace std; //Аргумент передается по ссылке: int incr (int &m); int main() {int n=5; cout << "n =" << incr (n) << endl; cout << "n =" << n << endl; cin >> n; return 0;} int incr (int &m) {m=m+1; return m;}
27. Передача аргументов по значению Пример #include "stdafx.h" #include <iostream> using namespace std; //Аргумент передается по значению: int incr (int m); int main() { int n=5; cout << "n =" << incr (n) << endl; cout << "n =" << n << endl; cin >> n; return 0;} int incr (int m) { m=m+1; return m; } Программный код функции incr () предельно прост: функция в качестве значения возвращает целочисленную величину, на единицу превышающую аргумент функции. Особенность программного кода состоит в том, что в теле функции выполняется команда m=m+1, которой с формальной точки зрения аргумент функции т увеличивается на единицу, и именно это значение возвращается в качестве результата. Поэтому с точки зрения здравой логики после вызова функции переменная, переданная ей в качестве аргумента, должна увеличиться на единицу. Однако это не так. Вывод результатов выполнения программы на экран будет выглядеть так: n =6 n =5 Если с первой строкой проблем не возникает, то вторая выглядит несколько неожиданно. Хотя это только на первый взгляд. Остановимся подробнее на том, что происходит при выполнении программы. В начале главного метода main () инициализируется со значением 5 целочисленная переменная n. Далее на экран выводится результат вычисления выражения incr (n) и затем значение переменной n. Поскольку функция incr () возвращает значение, на единицу большее аргумента, результат этого выражения равен 6. Но почему же тогда не меняется переменная n? Все дело в механизме передачи аргумента функции. Поскольку аргумент передается по значению, при выполнении инструкции incr (n) для переменной n автоматически создается копия, которая и передается аргументом функции incr (). В соответствии с кодом функции значение переменной-копии увеличивается на единицу и полученное значение возвращается в качестве результата функции. Как только результат функцией возвращен, переменная-копия прекращает свое существование. Поэтому функция вычисляется корректно, а переменная-аргумент не меняется!
Переменная Айнымалы – атауы бар жад облысы Жариялау форматы: тип айнымалы аты[];/массив Тип айнымалы аты ();/функция Возможно, в программировании нет более фундаментальной конструкции, чем переменная. Переменная представляет собой именованную ячейку памяти, которой может быть присвоено определенное значение. В дальнейшем, по ходу выполнения программы, значение переменной может быть изменено. Другими словами, содержимое переменной не фиксировано, а поддается изменениям. В С++ все переменные, перед тем, как их использовать, должны быть объявлены, при этом в объявлении переменной должно быть указано, какого рода значения будут содержаться в этой переменной. Эта называется типом переменной. В нашем случае length может содержать только целочисленные значения, т. е. целые числа в диапазоне от -32768 до 32767. Для того, чтобы в языке С++ объявить целочисленную переменную, перед ее именем следует поставить ключевое слово int. Общая форма объявления переменной имеет следующий вид: тип_переменной имя_переменной;
Присваивание(Меншіктеу) В одной строке может стоять больше одной операции присваивания =. Пример. a=b=c=d=100; Знак = всегда означает: "переменной слева присвоить значение, стоящее справа ". Операция выполняется справа налево. Поэтому первой значение 100 получает переменная d, затем с, b и а. Знак присвоить может стоять даже внутри математического выражения: value=5+(r=9-c) Присваивание имеет более высокий приоритет, чем сложение и вычитание. Поэтому сначала переменной r будет присвоено значение 9-с. А затем переменная value получит значение 5+9-с. Құрама меншіктеу(Составное присваивание) При написании программы часто требуется изменить значение переменной. Например, требуется взять текущее значение переменной, прибавить или умножить это значение на какое-то выражение, а затем присвоить это значение той же переменной. Такие операции выполняют операторы составного присваивания.
Операция Пример Эквивалент + = B+ = 500; B= b+ 500; - = С- = 50; C = с - 50; * = D* = 1.2; D = d*1.2; / = F/ = 50; f = f/.50; % = m% = 7; M = m% 7;
Прототип функции Если нужно вызвать функцию до ее определения в этом файле или определение функции находится в другом исходном файле, то вызов функции следует предварить ее объявлением, т. е. задать прототип функции, который позволит компилятору выполнить проверку типов аргументов и возвращаемого значения.Формат прототипа: <класс памяти><тип>имя (список формальных параметров); В отличие от определения функции, в прототипе за заголовком сразу же следует точка с запятой, а тело функции отсутствует. Правила использования остальных элементов формата такие же, как при определении функции. Имена формальных параметров при объявлении функции можно не указывать, а если они указаны, то их область действия распространяется только до конца объявления. Таким образом, прототип – это явное объявление функции, которое предшествует определению функции. Тип возвращаемого значения при объявлении функции должен соответствовать типу возвращаемого значения в определении функции. Хороший стиль программирования требует задания прототипа во всех случаях. В прототипе может быть отражен и тот факт, что число аргументов переменно или что аргументы вообще не задаются. Если прототип функции не задан, а встретился вызов функции, то строится неявный прототип из анализа формы вызова функции. При этом список типов и числа параметров функции формируется на основании типов и числа фактических аргументов, используемых при данном вызове. Вызов функции Для обращения к функции используется имя функции. Формат вызова: Имя_функции (список), где список представляет собой список фактических аргументов, передаваемых в функцию. Этот список может быть и пустым, но наличие круглых скобок обязательно. Фактический аргумент может быть величиной любого простого типа, структурой, объединением, перечислением или указателем на объект любого типа. Массив и функция не могут быть использованы в качестве фактических аргументов, но можно использовать указатели на эти объекты. Выполнение вызова функции происходит следующим образом. Вычисляются выражения в списке фактических аргументов. Затем, если известен прототип функции, тип полученного фактического параметра сравнивается с типом соответствующего формального параметра. Если они не совпадают, то либо производится преобразование типов, либо формируется сообщение об ошибке. Число выражений в списке фактических аргументов должно совпадать с числом формальных параметров, если только функция не имеет переменного числа параметров. В последнем случае проверке подлежат только обязательные параметры. Если в прототипе функции указано, что ей не требуются параметры, а при вызове они указаны, формируется сообщение об ошибке. Происходит присваивание значений или адресов фактических аргументов соответствующим формальным параметрам. Управление передается на первый оператор функции. Выполняются действия, указанные в теле функции. Выполнение оператораreturn в теле функции возвращает управление и вычисленное значение в вызывающую функцию. При отсутствии оператора return управление возвращается после выполнения последнего оператора тела функции, а возвращаемое значение не определено. Пример программы Найти корни уравнения x = sin2 x / 4 + 0,27 методом итераций с точностью e. Расчетная формула x 1 = sin2 x 0 / 4 + 0,27, где условие нахождения искомого корня | x 1 – x 0| < e – x 0 - начальное значение корня уравнения (обычно принимается равным нулю), x 1 - значение корня уравнения на следующей итерации, e - заданная точность вычисления корня (например, 0.001). В программе используется старый стиль определения функции: #include <stdio.h> #include <math.h> /*Подключение стандартных библиотек*/ #define EPS 0.001 /*Задание точности вычисления корня*/ float root(x, E) /*Заголовок функции с именем root*/ float x,E; /*Описание аргументов функции*/ { /*Тело функции*/ float x1; for (x1=pow(sin(x),2)*.25+.27; fabs (x1−x)>E; x=x1, x1=pow(sin(x),2)*.25+.27); return (x1); } /*Завершение описания функции root*/ int main() { floatx0; printf ("\n Введите значение x0"); scanf ("%f",&x0); printf ("\n Корень уравнения %f", root(x0,EPS)); //Вызов функции root() return 0; }
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 686; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.170.80 (0.007 с.) |