Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_Раб_2С++.doc
Скачиваний:
10
Добавлен:
15.08.2019
Размер:
263.68 Кб
Скачать

If ( условие )

Оператор1;

Если логическое выражение истинно, то выполняется <оператор1>, в противном случае программа переходит к выполнению операторов, следующих за оператором IF. Если условие ложно, то выполняются следующие за IF операторы.

В программах условные операторы часто встречаются группами, например:

if (total_test_score < 50)

cout << "Вы не прошли тест. Выучите материал как следует.\n";

else if (total_test_score < 65)

cout << "Вы прошли тест со средним результатом.\n";

else if (total_test_score < 80)

cout << "Вы хорошо выполнили тест.\n";

else if (total_test_score < 95)

cout << "Вы показали отличный результат.\n";

else {

cout << "Вы сдали тест нечестно!\n";

total_test_score = 0;

}

1.2 Оператор выбора switch

Еще одна конструкция, позволяющая проверять условие и выполнять в зависимости от этого различные действия, — это switch. На русский язык название данного оператора можно перевести как «переключатель». Смысл у него именно такой. В зависимости от того, какое значение имеет переменная, он переключается между различными блоками действия. Структуру switch можно записать следующим образом:

switch (выражение или переменная) {

case значение1:

блок_действий1

break;

case значение2:

блок_действий2

break;

default:

блок_действий_по_умолчанию

}

В отличие от if, здесь значение выражения не приводится к логическому типу, а просто сравнивается со значениями, перечисленными поcле ключевых слов case (значение1, значение 2 и т.д.). Если значение выражения совпало с каким-то вариантом, то выполняется соответствующий блок_действий — от двоеточия после совпавшего значения до конца switch или до первого оператора break, если таковой найдется. Если значение выражения не совпало ни с одним из вариантов, то выполняются действия по умолчанию (блок_действий_по_умолчанию), находящиеся после ключевого слова default. Выражение в switch вычисляется только один раз, а в операторе elseif - каждый раз, поэтому, если выражение достаточно сложное, то switch работает быстрее.

Пример. Написать программу, определяющую, какая из курсорных клавиш была нажата. В составе библиотеки, унаследованной от языка С, есть функция getch (), возвращающая код нажатой пользователем клавиши. В случае нажатия функциональных или курсорных клавиш эта функция возвращает 0 либо 0хЕ0 (в зависимости от компилятора), а ее повторный вызов позволяет получить расширенный код клавиши.

#include <stdio.h>

#include <conio.h>

main(){

int key;

printf("\n Нажмите одну из курсорных клавиш:\n");

key = getch();

key = getch();

switch (key){

case 77: printf("стрелка вправо\n"); break;

case 75: printf("стрелка влево\n"); break;

case 72: printf("стрелка вверх\n"); break;

case 80: printf("стрелка вниз\n"); break;

default: printf(“нe стрелка\n");

};

getch();

}

2 Задание

2.1 Составить и отладить программу для решения следующей задачи: даны координаты точки, не лежащей на координатных осях OX и OY. Определить номер координатной четверти, в которой находится данная точка.

Использовать фрагмент программы вида:

cout << "Введите координаты точки.\n";

cin >> x >> y;

if (x >0 && y>0)

cout << "Точка лежит в 1 координатной четверти.\n";

if (x <0 && y>0)

cout << "Точка лежит во 2 координатной четверти.\n";

if (x <0 && y<0)

cout << "Точка лежит в 3 координатной четверти.\n";

if (x >0 && y<0)

cout << "Точка лежит в 4 координатной четверти.\n";

2.2 Решить задачи, указанные преподавателем из Приложения А.

2.3 Составить и отладить на компьютере задачу определения значения Y в зависимости от значения текущей переменной N для некоторого заданного действительного числа x:

Для других значений N выдать сообщение «Функция не определена».

Фрагмент программы с использованием оператора switch:

cout << "Введите значение x: \n";

cin >> x;

cout << "Введите номер функции: \n";

cin >> n;

switch (n) {

Case 1 : y= sin(x); break;

Case 2 : y=cos(x); break;

Case 3 : y=log(x); break;

Case 4: y= abs(x); break;

Default:

Cout <<”Функция не определена”;

}

Cout <<”y=”<< y ;

2.4 Решить задачи, указанные преподавателем из Приложения Б.

2.5 Определить, принадлежит ли точка с координатами (x, y) заданному множеству точек на координатной плоскости, включая его границу (заштрихованная область на рисунке).

Рассмотрим различные варианты области.

а) область задана прямой: 

В данном случае, очевидно, что точка (x, y) попадает на линию графика, если у=x. Точка попадает в закрашенную область (лежит выше линии графика) если y>x. Наконец, точка (x, y) лежит ниже линии графика, если y<x. Таким образом, условие попадания точки в закрашенную область:

if (y>=x) сout <<”Попадает”;

else сout <<”Не попадает”;

б) если область задана прямой, проходящей через две точки -  A(x1, y1) и B(x2, y2). Тогда уравнение прямой выводится из соотношения:

в) область задана уравнением

Фрагмент программы:

if (y>=x*x) сout <<”Попадает”;

else сout <<”Не попадает”;

г) Рассмотрим попадание точки в круг. Уравнение окружности: x2+y2=r2, в представленном на рисунке случае r=1.

Точка (x, y) лежит на линии окружности, если расстояние до нее  , если l=r. Если l>r, то точка лежит вне окружности. Если l<r, то точка — внутри круга.

Фрагмент программы:

l=sqrt(x*x+y*y);

if (l<1) Cout <<”Попадает”;

else Cout <<”Не попадает”;

д) если область задана окружностью с центром в точке С(a, b) и радиусом, равным R, то уравнение выводится из соотношения:

(x - a)2 + (y - b)2 = R2.

е) несколько областей

Уравнение прямой по двум точкам: Y =-1/2 X +1

Уравнение окружности: Y = 

Отсюда получаем условия попадания точки в область:

(( y <=-1/2+1) и ( x >=0) и ( x <=2)) или (( y <=  ) и ( y <0) и ( x >0))

Блок-Схема:

Текст программы:

#include <iostream.h>

#include<conio.h>

#include <math.h>

main() {

float x, y;

cin >> x>>y;

if (((y<=-1/2+1)&&(x>=0)&&(x<=2)) || (y<=sqrt(1-x*x)&&(y<=0)&&(x<=0)))

cout <<”Попадает”;

else cout <<”Не попадает”;

getch();

}

2.6 Решить задачи, указанные преподавателем из Приложения В.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]