- •1. Краткие теоретические сведения
- •1.1. Операции сравнения и логические операции
- •1.1.1. Операции сравнения
- •1.1.2. Логические операции
- •1.1.3. Логические выражения
- •1.2. Приоритет операций
- •1.3. Разветвляющийся вычислительный процесс
- •1.5. Оператор перехода
- •1.6. Пустой оператор
- •1.7.1. Короткая форма условного оператора
- •1.7.2. Полная форма условного оператора
- •1.9. Понятие составного оператора (группы операторов)
- •1.10.1. Проверка двух или более условий
- •1.10.5. Обработка нескольких условий
- •1.10.6. Вложенный условный оператор
- •1.11. Рекомендации по заданию исходных значений переменным
- •1.11.1. Операторы присваивания
- •1.11.2. Операторы ввода
- •1.11.3. Инициализация переменных
- •1.11.4. Именованные константы
- •1.12. Оператор множественного выбора switch
- •1.13. Использование отступов для улучшения удобочитаемости вашей программы
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1
- •2.4.1.1. Условие задания
- •2.4.2. Задание 2
- •2.4.3. Задание 3
- •2.4.4. Задание 4
- •2.5. Задания для выполнения дома
- •2.5.1. Задание 1
- •2.5.2. Задание 2
- •3.6. Пример программы
- •3.7. Типичные ошибки при выполнении работы
- •2.5.3. Задание 3
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Операции сравнения и логические операции 2
- •1.1.1. Операции сравнения 2
3.6. Пример программы
Условие задачи. Ввести с клавиатуры координаты точки на плоскости X и Y и определить, в каком квадранте плоскости хОу лежит точка.
Приведем три различных варианта решения задачи, блок- схемы которых показаны соответственно на рис. 6.19, 6.20 и 6.21.
Пример 6.38.
/*Лабораторная работа № 6*/.
/*Программа для определения квадранта*/
/* положения точки на координатной плоскости*/.
/*Вариант А (см. рис. 6.19)*/
/*Автор Иванов Сергей, гр. ИНФО-101*/
/*Дата выполнения 29.03.2012*/
# include <stdio.h>
# include <conio.h>
int main ()
{float x,y; int К; //К – номер квадранта
/ *ввод исходных данных */
clrscr(); //Очистка экрана
cout << ("Введите координаты точки х и у > ");
cin >> x >> y >> endl;
/* Определение номера квадранта*/
if(x>=0 && y>=0) K = 1;
if(x<0 && y>=0) K = 2;
if(x<0 && y<0) K = 3;
if(x>=0 && y<0) K = 4;
/*печать результата*/
cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;
getch();
return 0;
}
Рис. 6.19. Схема программы (вариант А) к примеру 6.38 |
Рис. 6.20. Схема программы (вариант В) к примеру 6.39 |
|
|
Пример 6.39.
/*Лабораторная работа № 6*/.
/*Программа для определения квадранта*/
/* положения точки на координатной плоскости*/.
/*Вариант А (см. рис. 6.20)*/
/*Автор Иванов Сергей, гр. ИНФО-101*/
/*Дата выполнения 29.03.2012*/
# include <stdio.h>
# include <conio.h>
int main ()
{float x,y; int К; //К – номер квадранта
/ *ввод исходных данных */
clrscr(); //Очистка экрана
cout << ("Введите координаты точки х и у > ");
cin >> x >> y >> endl;
/* Определение номера квадранта*/
if(x> = 0 &&y> = 0) K = 1;
else if(x<0 && у> = 0) K = 2;
else if(x<0 && у< 0) K = 3;
else K = 4;
/*печать результата*/
cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;
getch();
return 0;
}
Рис. 6.40. Схема программы (вариант С)
Пример 6.40.
/*Лабораторная работа № 6*/.
/*Программа для определения квадранта*/
/* положения точки на координатной плоскости*/.
/*Вариант А (см. рис. 6.40)*/
/*Автор Иванов Сергей, гр. ИНФО-101*/
/*Дата выполнения 29.03.2012*/
# include <stdio.h>
# include <conio.h>
int main ()
{float x,y; int К; //К – номер квадранта
/ *ввод исходных данных */
clrscr(); //Очистка экрана
cout << ("Введите координаты точки х и у > ");
cin >> x >> y >> endl;
/* Определение номера квадранта*/
if(y>=0) k = (x>=0)?1:2; // точка в верхней половине плоскости
else k = (х<0)?3:4; // точка в нижней половине плоскости
/*печать результата*/
cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;
getch();
return 0;
}
Сравнение приведенных вариантов весьма поучительно, хотя все они приводят к одинаковому результату. Для варианта А результат достигается после выполнения проверки восьми условий независимо от положения точки. Для варианта В в наихудшем случае проверяются шесть условий, а в наилучшем – только два. Наконец, для варианта С результат в любой ситуации достигается после проверки всего двух условий. Таким образом, очевидно, что вариант В предпочтительнее варианта А, а вариант С предпочтительнее вариантов А и В, так как обеспечивает наиболее экономное решение.
Этот пример показывает, как важно правильно организовать процесс ветвления в сложной ситуации.
Примечание. Обратите внимание на взаимное расположение операторов if и else при записи программы в варианте В: каждый оператор else помещен под своим if.
Настоятельно рекомендуется строго придерживаться этого правила, так как оно существенно улучшает чтение (и отладку) программ, содержащих сложную иерархию условных операторов.