Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Структура программы

Читайте также:
  1. I.2. Структура оптимизационных задач
  2. Oslash; 1.4. Стандартные программы
  3. PCX. Формат появился как формат хранения растровых данных программы PC PaintBrush фирмы Z-Soft и является одним из наиболее распространенных (расширение имени файла .PCX).
  4. VІІ. Методика проведення заняття і його організаційна структура
  5. VІІ. Методика проведення заняття і організаційна структура заняття
  6. VІІ. Методика проведення заняття та організаційна структура заняття
  7. А. Структура ВС России и система управления войсками.

Оператор if

Этот оператор используется тогда, когда необходимо проверить какое-то условие, и в зависимости от проверки принять то или иное решение. Общей формой этого оператора является:

if (логическоеВыражение) { оператор1; оператор2;} else { оператор3; оператор4;}

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

Операция Смысл
== (два знака "равно") Равно
!= Не равно
> Больше, чем
< Меньше, чем
>= Больше или равно
<= Меньше или равно

Часто, как например в нашем случае, логическое выражение состоит из нескольких проверок, связанных логическими операциями

Операция Смысл
&& и
|| или
! не

Замечание1

Иногда нет необходимости в блоке else{операторы;}. В этом случае этот блок просто не пишется.

Замечание2

При проверке условия допускается использование арифметических операций (в том числе инкремент и декремент)

В современных системах C++ для контроля за управлением в различных инструкциях используются булевские значения true и false. Ниже представлены инструкции C++, наиболее часто используемые для управления логикой выполнения.

Операторы сравнения: меньше (<), больше(>), меньше или равно (<=), больше или равно (>=) Операторы равенства: равно (==), не равно (!=). Логические операторы: (унарное)отрицание (!), логическое и (&&), логическое или(||)

Для операторов сравнения, равенства и логических, также как и для всех остальных, существуют правила приоритета и порядка выполнения, точно определяющие, как должны вычисляться выражения, содержащие эти операторы. Оператор отрицания! является унарным (т.е. выполняется над одним данным). Все остальные операторы сравнения, равенства и логические операторы — бинарные (т.е. выполняется над двумя данными). Они действуют на выражения и вырабатывают булевские значения false или true. Это заменяет более раннее соглашение C++, когда типа bool в языке не существовало, и за false принимался ноль, а за true —не ноль. Однако там, где ожидается логическое значение, арифметическое выражение автоматически преобразуется в соответствии с этим соглашением, так что ноль понимается как false, а не ноль — как true. To есть старый стиль программирования по-прежнему работает корректно.

Одна из "ловушек" C++ заключается в том, что операторы равенства и присваивания визуально похожи. Выражение а = = b является проверкой на равенство, тогда как а = b — это выражение присваивания. Одна из наиболее распространенных ошибок программирования на C++ может выглядеть как-нибудь так:

if (i = 1) //делать что-нибудьКонечно, подразумевалосьif (i == 1) //делать что-нибудь

В первой инструкции if переменной i присваивается значение 1, и результат выражения присваивания также равен 1, поэтому условие в скобках будет всегда выполнено (не ноль, то есть true). Подобную ошибку бывает очень трудно найти.

Логические операторы!, && и || вырабатывают булевское значение true или false. Логическое отрицание может быть применено к любому выражению. Если выражение имело значение false, то его отрицание выработает true.

Приоритет && выше, чем ||, но оба оператора имеют более низкий приоритет, чем все унарные, арифметические операторы и операторы сравнения. Порядок их выполнения — слева направо.

При вычислении выражений, являющихся операндами && и ||, процесс вычисления прекращается, как только известен результат, true или false. Это называется вычислением по короткой схеме (short-circuit evaluation). Пусть expr1 и expr2 — выражения. Если expr1 имеет значение false, то в expr1 && expr2 expr2 не будет вычисляться, поскольку значение логического выражения уже определено как false. Аналогично, если expr1 есть true, то в expr2 || expr2 expr2 не будет вычисляться, поскольку значение логического выражения уже определено как true.

Из всех операторов C++ у оператора запятая самый низкий приоритет. Это бинарный оператор с выражениями в качестве операндов. В выражении с запятой вида expr1, expr2 первым вычисляется expr1, затем expr2. Все выражение с запятой в целом имеет значение и тип своего правого операнда. Например, sum = 0, i = 1 Если i была объявлена как целое, то данное выражение с запятой имеет значение 1 и тип int.. Порядок выполнения операторов запятая — слева направо.

Структура программы

Давайте решим следующую задачу. На плоскости нарисовано кольцо с центром в точке (x0,y0). И радиусами границ r1<r2. Кроме того, на этой же плоскости дана точка с координатами (x, y).

Необходимо определить, принадлежит ли эта точка кольцу. Пусть вас не смущает "математическая окраска" задачи. Решение ее весьма тривиально: мы должны вычислить расстояние от центра кольца до точки, и сравнить его с радиусами. Если логическое выражение r1<L<r2 верно, то точка принадлежит кольцу. Если же хотя бы одно из этих условий не выполнено, то точка не принадлежит кольцу. Программа, реализующая это решение, приведена ниже:

// Точка и кольцо#include <iostream.h>#include <math.h> void main() { // Объявление переменных int x0, y0, r1, r2, x, y; float L; // Пусть пользователь введет данные cout<<"Input coordinates of circle’s center (X0, Y0): "; cin>>x0>>y0; cout<<"Input circle radiuses R1 and R2: "; cin>>r1>>r2; cout<<"Input point coordinates (X, Y): "; cin>>x>>y; L = sqrt(pow(x - x0, 2) + pow(y - y0, 2)); if ((r1 < L) && (L < r2)) { cout<<"This point is situated inside the circle.\n"; } else { cout<<"This point is not situated inside the circle.\n"; }}

В этой программе появилось несколько новых элементов. Во-первых, это функция sqrt(), которая вычисляет квадратный корень и входит в состав библиотеки math.h.


Дата добавления: 2015-10-29; просмотров: 83 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
II. Kinds of travelling. Directions| Структура множественного выбора switch

mybiblioteka.su - 2015-2024 год. (0.006 сек.)