
Практическое занятие № 2
Программирование разветвляющихся и циклических структур в Ms Visual C++ 2008 Express Edition. Работа с отладчиком.
Задание:
Изучить следующие теоретические положения и выполнить соответствующие задания к ним:
Программирование разветвляющихся структур. Использование условных операторов
Запись действий, которые должен выполнить компьютер, состоит из операторов. При выполнении программы операторы выполняются один за другим, если только оператор не является оператором управления, который может изменить последовательное выполнение программы. Именно эти операторы и определяют в какой последовательности выполняется программа. Наиболее часто используемыми операторами управления являются условные операторы.
Условные операторы позволяют выбрать один из вариантов выполнения действий в зависимости от каких-либо условий. Условие – это логическое выражение, т.е. выражение, результатом которого является логическое значение true (истина) или false (ложь).
Оператор if выбирает один из двух вариантов последовательности вычислений. Синтаксис оператора имеет следующий вид:
If (условие)
<оператор1>;
else
<оператор2>;
Если условие истинно, то выполняется оператор1, если ложно, то выполняется оператор2. Следует отметить, что «ветка» else - необязательная часть конструкции.
Во внутреннем представлении значение false – восьмиразрядный нуль, всё остальное – значение true. В связи с этим, условием может выступать и обыкновенное математическое выражение или константа.
Рассмотрим стандартную математическую задачу (выстрел по мишени) с применением оператора if.
Дана заштрихованная область (рис.1) и точка с координатами (x,y). Написать программу, определяющую, попадает ли точка в заданную область. Результат вывести в виде текстового сообщения.
Рис.1. Графически заданная область задачи
Начинать решение даже самой простейшей задачи необходимо с чёткого определения и описания того, что является её исходными данными, а что результатом. В данном случае очевидно, исходными данными являются координаты точки – вещественные значения x и y, которые определены вдоль соответствующих числовых осей, а результатом – строковое (текстовое) значение, которое отвечает на вопрос: попадает ли точка в область.
Далее, перед непосредственным написанием текста программы необходимо составить алгоритм её решения – сначала в общем виде, а затем постепенно детализируя каждый шаг. Такой способ создания алгоритма называется «нисходящая разработка» и применяется для создания простых по структуре программ. Описать алгоритм решения задачи можно, как известно, либо в словесном виде, либо в виде блок-схемы. Нам удобнее будет для начала записать условия попадания точки в область в виде формул. Точка может попасть либо в круг, либо в треугольник, либо в их общую область:
Первое условие задаёт попадание точки в круг, включая окружность, второе – в треугольник, включая его границы.
Запишем теперь алгоритм в неформальной словесной форме. Этот способ обычно рекомендуется либо для сложных или «запутанных» задач (для простых задач это не имеет смысла), либо для начинающих. Тем не менее, следует помнить, что только после того, как задача чётко описана на естественном языке, её можно успешно записать на языке программирования.
Ввести значения координат точки x и y.
Проверить выполняются ли математические условия попадания точки в область.
Вывести соответствующее строковое сообщение.
Программа для решения задачи выглядит следующим образом:
#include <iostream>
using namespace std;
void main(void)
{
float x,y;
cout << “Введите значения координат точки x и y:” << endl;
cin >> x >> y;
if ( x*x + y*y <= 1 || x<=0 && y<=0 && y>= -x-2 )
cout <<“Точка попадает в область” << endl;
else cout <<“Точка не попадает в область!” << endl;
}
Три условия из правых фигурных скобок должны выполняться одновременно, поэтому в программе они объедигяются с помощью операции И (&& ). Её приоритет выше, чем у операции ИЛИ (||), и ниже, чем у операций отношения, поэтому дополнительных скобок не требуется. Хотя, для улучшения читаемости программы можно ставить скобки в тех местах, где они не обязательны, - например, для визуальной группировки условий.
Разработать проект Практика_if типа Console Application. Содержимым основного модуля (*.срр) должна являться приведённая выше тестовая программа. Произведя компиляцию и компоновку проекта, получить работающее приложение (количество баллов за данный вид работ = 2).