Список операций отношения в языке С.
Язык С имеет ровно шесть операции отношения. Почему их так называют? Дело в том, что обычно относительно двух величин, например, величины А и величины В, можно с определенностью сказать, что друг по отношению к другу они: или равны, то есть находятся в отношении равенства А=В, или не равны, то есть находятся в отношениях неравенства А не = В. Но тогда в последнем случае можно уточнять и думать уже о том, какая из этих двух величин больше и какая меньше. Тут может быть одна из двух возможностей: либо А<В, либо А>В. Иногда еще рассматривают такое отношение, в котором есть доля неопределенности, например, когда говорят, что А<=В, либо, когда А>=В. Сведем эти соотношения между двумя величинами в одну таблицу. Получим следующее:
Таким образом, А по отношению к В может быть: либо меньше, либо меньше или равно; либо больше, либо больше или равно; либо равно, либо не равно. Другого нам просто не дано. Операции отношения используются в условных выражениях. Например, простейшие условия, которые не содержат логических операций, это следующие: "a<0", "1998>2003", "b==B", "C!=D" и так далее. Логические операции: В С++ существует три логические операции: Логические операции образуют сложное (составное) условие из нескольких простых (два или более) условий. Эти операции упрощают структуру программного кода в несколько раз. Логические операции Обозначение в С++ Составное условие
И && a==3 && b>4 ИЛИ || a==3 || b>4 НЕ !! (a==3)
следует понять разницу между логической операцией «И» и логической операцией «ИЛИ» // or_and_not.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h" #include <iostream> using namespace std;
int main(int argc, char* argv[]) { bool a1 = true, a2 = false; // объявление логических переменных bool a3 = true, a4 = false; cout << "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii!" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; } Приоритет операций - очерёдность выполнения операций в выражении, при условии, что в выражении нет явного указания порядка следования выполнения операций (с помощью круглых скобок). Если операции имеют одинаковый приоритет, то очерёдность выполнения таких операций определяется согласно свойству ассоциативности. Ассоциативность - направление выполнения операций в случае, если операции имеют одинаковый приоритет. В таблице 1 показаны основные операции в С++, их приоритет выполнения и ассоциативность.
Таблица 1:
Циклы и ветвления. Циклы и ветвления. К операторам ветвления относятся if, if else,?, switch. if (логическое выражение) оператор; Если значение логического выражения истинно, то выполняется оператор. if (логическое выражение) оператор_1; else оператор_2; Если значение логического выражения истинно, то выполняется оператор_1, в противном случае выполняется оператор _2. логическое выражение? оператор_1: оператор_2; Если значение логического выражения истинно, то выполняется оператор_1, в противном случае выполняется оператор _2. Если требуется выполнить несколько операторов, то для if используется составной оператор, а для? операторы перечисляются через запятую. switch (выражение) { case значение_1: последовательность_операторов_1; break; ... case значение_n: последовательность_операторов_n; break; default: последовательность_операторов_n+1; } Ветку default можно не описывать. Она выполняется, если ни одно из вышестоящих выражений не удовлетворено. Оператор цикла. В Си имеются следующие конструкции, позволяющие программировать циклы: while, do while и for. Их структуру можно описать следующим образом: Цикл с предусловием: while (логическое выражение) оператор; Цикл с постусловием: do оператор; while (логическое выражение); Цикл с параметром: for (инициализация; проверка; итерратор) оператор;
if и switch как понятно из вышеизложенного-операторы выбора. Синтаксис определения структуры и структурной переменной. Доступ к полям структуры. Присвоение структурных переменных
Использование структур обусловлено необходимостью объединить несколько переменных. Структуры - это, обычно, группа переменных описывающих какую-нибудь сущность. Объявления у структуры нет. Её нужно сразу определять. Тело структуры должно находиться до начала main. Пример: struct имя { int x; Int y; }; Int mai() { Имя a; a.x=3;//доступ к полям структуры a.y=5;//доступ к полям структуры имя b; b=a;//в этом случае b.x=a.x b.y=a.y Структурные переменные:--------------
Синтаксис определения и инициализация указателей на структуры. Работа с полями структуры через указатель. Указатели Когда компилятор обрабатывает оператор определения переменной, например, int i=10;, он выделяет память в соответствии с типом (int) и инициализирует ее указанным значением (10). Все обращения в программе к переменной по ее имени (i) заменяются компилятором на адрес области памяти, в которой хранится значение переменной. Программист может определить собственные переменные для хранения адресов областей памяти. Такие переменные называются указателями. Итак, указатели предназначены для хранения адресов областей памяти. В C++ различают три вида указателей:
Указатель на функцию Указатель на функцию содержит адрес в сегменте кода, по которому располагается исполняемый код функции, то есть адрес, по которому передается управление при вызове функции. Указатели на функции используются для косвенного вызова функции (не через ее имя, а через обращение к переменной, хранящей ее адрес), а также для передачи имени функции в другую функцию в качестве параметра. Указатель функции имеет тип «указатель функции, возвращающей значение заданного типа и имеющей аргументы заданного типа»: тип (*имя) (список_типов_аргументов); Например, объявление: int (*fun) (double, double); задает указатель с именем fun на функцию, возвращающую значение типа int и имеющую два аргумента типа double.
Указатель на объект Указатель на объект содержит адрес области памяти, в которой хранятся данные определенного типа (основного или составного). Простейшее объявление указателя на объект (в дальнейшем называемого просто указателем) имеет вид: тип *имя; где тип может быть любым, кроме ссылки и битового поля, причем тип может быть к этому моменту только объявлен, но еще не определен (следовательно, в структуре, например, может присутствовать указатель на структуру того же типа). Звездочка относится непосредственно к имени, поэтому для того, чтобы объявить несколько указателей, требуется ставить ее перед именем каждого из них. Например, в операторе int *a, b, *c; описываются два указателя на целое с именами а и с, а также целая переменная b. Размер указателя зависит от модели памяти. Можно определить указатель на указатель и т. д. Указатель на void Указатель на void применяется в тех случаях, когда конкретный тип объекта, адрес которого требуется хранить, не определен (например, если в одной и той же переменной в разные моменты времени требуется хранить адреса объектов различных типов). Указателю на void можно присвоить значение указателя любого типа, а также сравнивать его с любыми указателями, но перед выполнением каких-либо действий с областью памяти, на которую он ссылается, требуется преобразовать его к конкретному типу явным образом.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|