If ( выражение ) оператор else оператор

Switch ( выражение ) оператор

В C++ нет отдельного булевского типа.

Операции сравнения

== != < <= > >=

возвращают целое 1, если сравнение истинно, иначе возвращают 0. В операторе if первый (или единственный) оператор выполняется в том случае, если выражение ненулевое, иначе выполняется второй оператор (если он задан). Отсюда следует, что в качестве условия может использоваться любое целое выражение. В частности, если a целое, то

if (a) // ...

эквивалентно

if (a != 0) // ...

Логические операции

&& || !

наиболее часто используются в условиях. Операции && и || не будут вычислять второй аргумент, если это ненужно. Например:

if (p && cou) // ...

вначале проверяет, является ли p не нулем, и только если это так, то проверяет cou.

Скобки вокруг условия необязательны, но когда они используются, программу легче читать.

Некоторые простые операторы switch можно по-другому записать в виде набора операторов if. Например:

switch (val) { case 1: f(); break; case 2; g(); break; default: h(); break; }   иначе можно было бы записать так:   if (val == 1) f(); if (val == 2) g(); else h();  

Смысл тот же, однако первый вариант (switch) предпочтительнее, поскольку в этом случае явно выражается сущность действия (сопоставление значения с рядом констант). Поэтому в нетривиальных случаях оператор switch читается легче.

Заботьтесь о том, что switch должен как-то завершаться. Самый обычный способ завершить случай - это break, иногда можно даже использовать goto. Например:

switch (val) {

case 0:

cout << "case 0";

case 1:

cout << "case 1";

return;

case 2:

cout << "case 2";

goto case1;

default:

cout << "default: case не найден";

return;

}

При обращении к нему с val =2 выдаст

case 2

case 1

Заметьте, что метка case не подходит как метка для употребления в операторе goto:

goto case 1; // синтаксическая ошибка

4. Оператор goto

goto идентификатор;

Идентификатор: оператор

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

Оператор goto может быть также важен в тех редких случаях, когда важна наилучшая эффективность, например, во внутреннем цикле какой-нибудь программы, работающей в реальном времени.

Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя).

Пример 5. Написать программу решения квадратного уравнения. Проверять действительно ли уравнение квадратное (коэффициент при старшей степени не равен нулю).

If ( выражение ) оператор else оператор - student2.ru

#include <stdio.h>

#include <conio.h>

#include <math.h>

void main()

{

float a,b,c;

float d;

float x1,x2;

clrscr();

printf("Vvedi koefficienti uravnenia\n");

printf("a=");scanf("%f",&a);

printf("b=");scanf("%f",&b);

printf("c=");scanf("%f",&c);

printf("Rezultat: \n");

if(a!=0)

{

d=pow(b,2)-4*a*c;

if(d<0)

printf("Korney net");

else

if(d>0)

{

x1=((-b+sqrt(d))/(2*a));

x2=((-b-sqrt(d))/(2*a));

printf("x1=%.2f\n",x1);

printf("x2=%.2f\n",x2);

}

else

{

x1=-b/(2*a);

printf("x=%.2f\n",x1);

}

}

else

printf("Uravnenie ne kvadratnoe");

getch();

}

Пример 6. Выяснить, принадлежит ли точка с координатами (x, y) кругу радиуса r с центром в начале координат.

If ( выражение ) оператор else оператор - student2.ru

#include <stdio.h>

#include <conio.h>

#include <math.h>

void main()

{

float x,y;

float r;

float l;

clrscr();

printf("VVedite koordinati tochki:\n");

printf("x=");scanf("%f",&x);

printf("y=");scanf("%f",&y);

printf("Vvedite radius kruga :\n");

printf("r=");scanf("%f",&r);

if(r<=0)

printf("Ne moget bit r< 0");

else

{

l=sqrt(pow(x,2)+pow(y,2));

if(l<=r)

printf("Tochka prinadlegit krugu");

else

printf("Tochka ne prinadlegit krugu");

}

getch();

}

Методические рекомендации к выполнению лабораторной работы

Отчет к лабораторной работе оформляется в текстовом редакторе MS Word в формате А4 и должна содержать:

1. Цель работы.

2. Задание (2 задачи – на использование операторов if и case).

3. Графические схемы алгоритмов с учетом требований ГОСТ 19.701-90 (в редакторе Visio).

4. Программы на Тuгbо Раscаl и Си/С++.

5. Результаты выполнения работы.

1. варианты заданий для оператора if.

Вычислить и вывести на экран значение заданной функции.

№ вар. Функция Условие Исходные данные
If ( выражение ) оператор else оператор - student2.ru 1 ≤ t ≤ 2 t < 1 t > 2 a = - 0,5 b = 2
If ( выражение ) оператор else оператор - student2.ru x < 1.3 x = 1.3 x > 1.3 a = 1.5
If ( выражение ) оператор else оператор - student2.ru x < 1.2 x = 1.2 x > 1.2 a = 2.8 b = -0.3 c = 4
If ( выражение ) оператор else оператор - student2.ru x < 1.4 x = 1.4 x > 1.4 a = 1.65
If ( выражение ) оператор else оператор - student2.ru x < 1 x = 1 1< x< 2 x > 2 a = 2.3
If ( выражение ) оператор else оператор - student2.ru x < a x = a x > a a = 2.5
If ( выражение ) оператор else оператор - student2.ru bx < 1 bx = 1 bx > 1 b = 1.5
If ( выражение ) оператор else оператор - student2.ru x > 3.5 x ≤ 3.5 __
If ( выражение ) оператор else оператор - student2.ru x > 1 x ≤ 1 a = 20.3
If ( выражение ) оператор else оператор - student2.ru x < 0.5 x = 0.5 x > 0.5 t = 2.2
If ( выражение ) оператор else оператор - student2.ru x < 2.8 2.8 ≤x< 6 x ≥ 6 a = 2.6 b = -0.39
If ( выражение ) оператор else оператор - student2.ru x > 1 x ≤ 1 a = 0.9
If ( выражение ) оператор else оператор - student2.ru i < 4 4 ≤i≤ 6 i > 6 a = 2.1 b = 1.8 c = -20.5
If ( выражение ) оператор else оператор - student2.ru If ( выражение ) оператор else оператор - student2.ru ≥0 If ( выражение ) оператор else оператор - student2.ru ≤0 a = 0.3 n = 10
If ( выражение ) оператор else оператор - student2.ru x ≤ 2 2 <x< 5 x ≥ 5 __
If ( выражение ) оператор else оператор - student2.ru x > 0 x < 0 x = 0 __
If ( выражение ) оператор else оператор - student2.ru y ≠ 0 y = 0 x = 0.5
If ( выражение ) оператор else оператор - student2.ru x < -1 -1 ≤x≤ 1 x > 1 __
If ( выражение ) оператор else оператор - student2.ru t < 0.1 t = 0.1 t > 0.1 a = 2.5 b = 0.4
If ( выражение ) оператор else оператор - student2.ru If ( выражение ) оператор else оператор - student2.ru >0 If ( выражение ) оператор else оператор - student2.ru <0 c = 0.5 n = 10
If ( выражение ) оператор else оператор - student2.ru x<4 x=4 x>4   __
If ( выражение ) оператор else оператор - student2.ru x<0 x³0   b=0.25
If ( выражение ) оператор else оператор - student2.ru x<0 x³0   c=0.3
If ( выражение ) оператор else оператор - student2.ru x<2 x=2 x>2   __
If ( выражение ) оператор else оператор - student2.ru x<1 x=1 x>1   __
If ( выражение ) оператор else оператор - student2.ru x£0 0<x£1 x>1   __
If ( выражение ) оператор else оператор - student2.ru x<3 x³3   __
If ( выражение ) оператор else оператор - student2.ru x£0 0<x£1 x>1   b = 2
If ( выражение ) оператор else оператор - student2.ru x £ -p x > -p   __
If ( выражение ) оператор else оператор - student2.ru x£-1 -1<x£1 x>1   __
         


2. варианты заданий для оператора case

1. В зависимости от того введена ли открытая скобка или закрытая, напечатать "открытая круглая скобка" или "закрытая фигурная скобка". (Учитывать круглые, квадратные, фигурные скобки).

2. В зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.

3. Определить, является ли введенная буква русского алфавита гласной.

4. Напишите программу, которая по введенному числу из промежутка 0..24, определяет время суток.

5. Пусть имеются данные об автомобилях четырех моделей. Как входное данное ввести номер модели и получить характеристики: год выпуска и цену.

6. Ввести первую букву названия страны. Вывести название ее столицы.

7. Ввести телефонный код города. Вывести название города.

8. Дано целое число в диапазоне 1–7. Вывести строку — название дня недели, соответствующее данному числу (1 — «понедельник», 2 — «вторник» и т. д.).

9. Вычислить значение функции по одной из формул (x ³ 0):

If ( выражение ) оператор else оператор - student2.ru

10. Ввести число от 0 до 5. Вывести его название на английском (или другом) языке.

11. Пусть время суток обозначено номерами: 1 – утро, 2 – день, 3 – вечер. Билет в кино на утренний сеанс стоит 50 р., на дневной сеанс – 70 р., а на вечерний – 100 р. Какова выручка кинотеатра в одно из время суток, если в кино пришло n посетителей.

12. Ввести номер телефона одного из четырех друзей. Вывести его имя.

13. Элементы окружности пронумерованы следующим образом: 1 — радиус R, 2 — диаметр D = 2·R, 3 — длина L = 2··R, 4 — площадь круга S = ·R2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности.

14. Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка».

15. Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Вывести название соответствующего времени года («зима», «весна», «лето», «осень»).

16. Пусть время суток обозначено номерами: 1 – утро, 2 – день, 3 – вечер. Билет в кино на утренний сеанс стоит (детский – 25 р., взрослый – 70 р.), на дневной сеанс (детский – 50 р., взрослый – 100 р.), а на вечерний (детский – 70 р., взрослый – 100 р.). Какова выручка кинотеатра в одно из время суток, если в кино пришло n детей и m взрослых.

17. Робот может перемещаться в четырех направлениях («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и целое число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.

18. Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Определить количество дней в этом месяце для невисокосного года.

19. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия N (целое число в диапазоне 1–4) и вещественные числа A и B (B не равно 0). Выполнить над числами указанное действие и вывести результат.

20. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 — катет a, 2 — гипотенуза c = a·(2)1/2, 3 — высота h, опущенная на гипотенузу (h = c/2), 4 — площадь S = c·h/2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника.

21. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

22. Элементы равностороннего треугольника пронумерованы следующим образом: 1 — сторона a, 2 — радиус R1 вписанной окружности (R1 = a·(3)1/2/6), 3 — радиус R2 описанной окружности (R2 = 2·R1), 4 — площадь S = a2·(3)1/2/4. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника.

23. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.

24. Пусть населенные пункты обозначены номерами от 1 до 8. стоимость одного билета к пункту k определяется так:

If ( выражение ) оператор else оператор - student2.ru

Сколько стоит m билетов к населенному пункту, номер которого пользователь должен ввести с клавиатуры?

25. Вводится целое положительное число. Определить четное оно или нет.

26. Для целого числа N от 20 до 30 напечатать фразу "Мне N лет", учитывая при этом, что при некоторых значениях N слово "лет" надо заменить на слово "год" или "года".

27. Напечатать слово СТУДЕНТ в заданном падеже (И - именительный, Р - родительный, Д - дательный, В - винительный, Т - твори­тельный, П - предложный) единственного числа.

28. Для целого числа N от 1 до 8 напечатать фразу "Мы нашли N грибов", согласовав окончание слова "гриб".

29. Вычислить значение функции по одной из формул (x ³ 0):

If ( выражение ) оператор else оператор - student2.ru

30. Мастям игральных карт присвоены порядковые номера: 1 — пики, 2 — трефы, 3 — бубны, 4 — червы. Достоинству карт, старших десятки, присвоены номера: 11 — валет, 12 — дама, 13 — король, 14 — туз. Даны два целых числа: N — достоинство (6 £ N £ 14) и M — масть карты (1 £ M £ 4). Вывести название соответствующей карты вида «шестерка бубен», «дама червей», «туз треф» и т. п.

Контрольные вопросы:

1. Какие виды ветвлений реализованы в Turbo Pascal и Си/С++?

2. Для чего используются ветвления? Приведите примеры.

3. Как в блок-схемах изображаются разветвленные алгоритмы?

4. Какие операторы используются для организации ветвлений?

5. Две формы записи условного оператора If.

6. Формат записи оператора выбора Case.

7. Формат записи оператора безусловного оператора GOTO. В каких случаях он используется?

Лабораторная работа № 4

Наши рекомендации