![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 711; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.152.51 (0.011 с.) |