Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

osnovyiprogrammirovaniyanac

.pdf
Скачиваний:
24
Добавлен:
12.03.2015
Размер:
1.46 Mб
Скачать

Глава

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

и вывод

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ь

 

Р е ш е н и е

даже

самой

простой

задачи

на

к о м п ь ю т е р е

не

обходится

без

операций

в в о д а - в ы в о д а

и н ф о р м а ц и и .

Ввод д а н н ы х -

это

передача и н ф о р м а ц и и

с

клавиатуры

в

оперативную

память

к о м п ь ю т е р а

для

д а л ь н е й ш е й

обработки .

Вывод

-

 

это

п р о ц е с с

передачи д а н н ы х для

отображения на м о н и т о р е компьютера . Эти

о п е р а ц и и обеспечивают

«диалог» пользователя и компьютера ,

и м е н н о

поэтому в любых

программах

они играют

очень

важную

роль .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В ы в од данных. Ф у н к ц и я printf()

 

 

 

 

 

 

 

 

 

 

 

 

К а к

на

бумаге

м о ж н о

н а п и с а т ь п р е д л о ж е н и е

«в одном

рубле

сто копеек» ?

 

 

 

 

 

1. М о ж н о

использовать

ц и ф р ы :

в

1 рубле

100 копеек.

 

 

 

 

 

 

 

 

2. М о ж н о

использовать

м а т е м а т и ч е с к и е

с и м в о л ы :

1 рубль

=

100

копеек.

 

 

 

 

3.

М о ж н о

указать

числа

с точностью до

второго

знака

после

з а п я т о й :

1.00 рубля

=

100.00копейки.

4.

М о ж н о

н а п и с а т ь

часть п р е д л о ж е н и я

на

одной строке,

а другую его часть перенести

 

на

новую

строку:

 

1.00 рубля

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100.00 копейки.

 

 

 

 

 

 

 

 

 

 

*

Н е з а в и с и м о

от того,

к а к мы н а п и ш е м

эти

слова,

их смысл

не и з м е н и т с я

(в рубле

не станет

больше к о п е е к ) . М е н я е т с я только

о ф о р м л е н и е .

 

 

 

 

 

 

 

 

 

 

 

 

Форматированный вывод

данных

-

это

о т о б р а ж е н и е

и н ф о р м а ц и и

на

э к р а н е

м о н и т о р а в

соответствии

с

заранее с о з д а н н ы м

ш а б л о н о м о ф о р м л е н и я .

 

 

 

 

 

 

То,

как

отображается

и н ф о р м а ц и я ,

может иметь большое

з н а ч е н и е . С п и с о к п о к у п о к

з а п и с а н н ы й

 

так:

Тетради,

Ручки,

12 шт.,

20 шт.

- разобрать

очень т я ж е л о .

П р а в и л ь н о е

о ф о р м л е н и е

придаст

ему

совсем

другой

смысл:

 

 

 

 

 

 

 

 

 

 

 

 

Тетради

 

-

12

шт.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ручки

-

 

20

шт.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В я з ы к е

С + +

ф о р м а т и р о в а н н ы й

вывод д а н н ы х

 

обеспечивает

ф у н к ц и я

printfQ.

Ф у н к ц и я

о п и с а н а в

библиотек е stdio.h

и

в

общем

виде

она может быть представлена так:

 

 

p r i n t f

(

" у п р а в л я ю щ а я

с т р о к а " ,

а р г у м е н т 1,

а р г у м е н т 2, ...

а р г у м е н т

N );

 

 

Пример 5.1. Отобразить на экране

с п и с о к вида:

 

 

 

 

 

 

 

 

 

 

 

Д е в у ш к и

-

12

человек .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

П а р н и

-

20

человек .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int

а

= 1 2 ,

 

Ь = 2 0 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p r i n t f ( " Д е в у ш к и - % i ч е л о в е к . \ п П а р н и - % i ч е л о в е к . " , а , Ь ) ;

 

 

 

 

 

 

У п р а в л я ю щ а я

строка обязательно

заключается

в д в о й н ы е

к а в ы ч к и

и

состоит

из

элементов трех

т и п о в :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

о б ы ч н ы е

с и м в о л ы ,

к о т о р ы е

просто

к о п и р у ю т с я

на экран

без

и з м е н е н и й

 

 

 

 

п р и м е р е

1

это

слова «Девушки»,

«Парни»,

«человек» и

с и м в о л ы

« - »

и

 

 

 

 

п р о б е л ) ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 .

у п р а в л я ю щ и е

с и м в о л ь н ы е

к о н с т а н т ы (\п)- сочетания

символов,

к о т о р ы е

не

 

 

 

 

выводятся на экран . Их цель -

о ф о р м л е н и е

в ы в о д и м о й

с т р о к и . Д о с т у п н ы

 

 

 

 

следующие

с и м в о л ь н ы е

к о н с т а н т ы :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

подача звукового

сигнала;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

перевод

курсора на

одну п о з и ц и ю

влево;

 

 

 

 

 

 

 

\n - переход на новую строчку; \t - г о р и з о н т а л ь н а я т а б у л я ц и я ; \\ - вывод символа \; \" - вывод символа ";

 

 

 

3.

 

с п е ц и ф и к а ц и я

п р е о б р а з о в а н и я

(%

i)

- это

 

«предупреждение» к о м п ь ю т е р у о

 

 

 

 

 

том,

какого

характера

и н ф о р м а ц и я

будет

выводиться

на э к р а н .

 

 

 

 

 

 

 

Каждая

с п е ц и ф и к а ц и я

п р е о б р а з о в а н и я

 

н а ч и н а е т с я

со

 

знака % .

Далее

идет

буква,

о б о з н а ч а ю щ а я

тип

в ы в о д и м о г о

з н а ч е н и я .

Н а п р и м е р :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- з н а ч е н и е м

аргумента является

символ

(тип

д а н н ы х

 

char);

 

 

 

 

 

 

 

 

 

 

%s

- з н а ч е н и е м

аргумента является

строка

символов

(тип д а н н ы х

c h a r ) ;

 

 

 

 

 

 

 

%d или %i - значением аргумента является целое число

 

(тип д а н н ы х

int);

 

 

 

 

 

 

%f

-

 

з н а ч е н и е м

аргумента является

в е щ е с т в е н н о е

число

(тип

д а н н ы х

float

или

double),

н а п р и м е р ,

3.141593.

 

По

у м о л ч а н и ю

выводится

6

 

 

знаков

после

запятой

к о м п ь ю т е р а х

для

отделения

целой

части

от

д р о б н о й

используется т о ч к а ) .

З а п и с ь

 

вида

%4.2f

означает,

что

для

вывода

числа будет

зарезервировано

4

 

п о з и ц и и ,

две

из

которых

п р е д н а з н а ч е н ы для д р о б н о й

части .

Если

н е о б х о д и м о ,

чтобы

выводились

только

два

знака

после

з а п я т о й ,

то

надо

н а п и с а т ь так: %.2f;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%g или %G - также

выводит

в е щ е с т в е н н о е

число,

исключая

н е з н а ч а щ и е нули.

Т.е.

ч и с л о

5.2300

будет

н а п е ч а т а н о

так:

5.23.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т и

 

п

д а н н ы х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

char a = 6 8 ;

 

int

a=68;

 

 

 

 

 

double

a=68.15900;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

printf("%c",a);

 

 

 

 

 

D

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

printf("%i",a);

 

 

 

 

 

68

 

 

 

 

 

 

68

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

printf("%f',a);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68 .159000

 

 

 

 

 

 

printf("%4f',a);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68 . 159000

 

 

 

 

 

 

printf("%4.1f',a);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68.2

 

 

 

 

 

 

 

printf("%.2f',a);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68.16

 

 

 

 

 

 

 

p r i n t f ( " % g ' » ;

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

68.159

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В т а б л и ц е

п о к а з а н

результат,

который

 

будет

выведен

 

при

соответствующем

 

т и п е

д а н н ы х и с п е ц и ф и к а ц и и п р е о б р а з о в а н и я .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обратите

в н и м а н и е на то,

что

при

с н и ж е н и и точности

результата

те

числа,

которые

не выводятся

на

э к р а н

в

 

соответствии

с

 

запросом,

 

используются

для

округления

в ы в о д и м о г о

 

результата.

Ч и с л о

68.159, в ы в е д е н н о е

с

точностью

до

двух

з н а к о в

после

запятой,

будет выглядеть так: 68.16.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

•»

 

 

Если

после

знака

% з а п и с а н не символ

п р е о б р а з о в а н и я ,

 

то

он выводится

на э к р а н .

Т а к и м образом,

строка

%% приводит к выводу на экран знака %.

 

 

 

 

 

 

 

 

 

 

 

Ф у н к ц и я

printf

использует

у п р а в л я ю щ у ю

 

строку,

чтобы

 

определить,

сколько

 

всего

аргументов

 

и

к а к о в ы

их

т и п ы .

Аргументами

могут

быть

 

п е р е м е н н ы е ,

к о н с т а н т ы ,

в ы р а ж е н и я ,

в ы з о в ы

ф у н к ц и й .

Главное,

чтобы

их

з н а ч е н и я

 

соответствовали

заданной

с п е ц и ф и к а ц и и .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приме р 5.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int

х

=

10,

у = 2 0 ,

 

z;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c h a r

c h ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

float

f l ,

f 2 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d o u b l e

d;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z = x + y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ch

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fl

=

3 . 1 4 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f2

=

fl

*

2 . 5 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

=

0.5;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

printf( "Выводим только текст \п" );

printf( "Значение переменной х = %i \п", х );

printf( "Переменные у и z равны%3 и%31 соответственно", у, z ) ; printf( "А теперь напечатаем три звездочки %с %с %с ", ch, ch, ch ); printf ( "\t Сделали отступ \n пропустили строчку \п и еще одну " }; printf( "%f %f %.2f ", fl, f2, d );

Результат выполнения программы :

Выводим

только текст

 

Значение переменной х = 10

 

Переменные

у и z

равны 20

и 30 соответственно

А теперь напечатаем три звездочки * * *

Сделали

отступ

 

 

пропустили

строчку

 

 

и еще одну

 

 

 

3.140000

7.850000

0.50

 

Пример 5.3. Для покраски дома необходимо купить краски двух цветов: красной для крыши и желтой для стен. Требуется составить программу, которая, зная размеры дома, определяет, сколько понадобится краски, чтобы покрасить лицевую сторону дома. Окна красить не нужно.

int а=10, b=5, с=2, d=3, h=3; // Задаем размеры дома

float

SI,

S2;

 

/ / S I - площадь крыши, S2 - площадь стены

SI =

0.5

* а *

h;

*

S 2 = a * b - 3 * ( c * d ) ;

printf("Нужно купить %2.1f красной краски \n", S1);

printf("и

%2.1f

желтой

краски \n", S2);

В С++ есть функции, цель которых - только форматирование текста. Они абсолютно не влияют на содержание передаваемой информации. Среди таких функций стоит отметить (библиотека conio.h):

textcolor(color) - устанавливает цвет текста. Значение color может быть взято любое из диапазона 0..15;

textbackground(color) - задает цвет фона у выводимого символа. Если эту функцию вызвать перед очисткой экрана, то весь экран буде цвета color;

gotoxy(x, у) - перемещает курсор на строчку у в столбик х экрана. Сам экран в текстовом режиме имеет разрешение 80x50, т.е. 80 знакомест на каждой строчке, и таких строчек 50. Далее текст будет выводиться, начиная с этого места.

П р и м е р 5.4. Написать программу, которая выводит в центре экрана на светло-сером фоне желтыми буквами слово «Солнце».

textbackground(LIGHTGRAY);

textcolor(YELLOW);

gotoxy(40,25);

printf("Солнце");

Вв о д д а н н ы х . Ф у н к ц и я s c a n f ( )

Внаписанной выше программе есть один недостаток. Программа всегда считает данные для одного и того же дома. А что делать, если надо покрасить несколько различных домов? Мы можем исправлять каждый раз код программы, задавая новые значения переменных а, Ь, с, d, h. Но пользователю будет намного удобнее вводить размеры дома с клавиатуры.

Для ввода информации в языке С++ предусмотрена функция scanf из библиотеки stdio.h. Она имеет следующий вид:

scanf ("управляющая строка",

&аргумент_1, &аргумент_2, ... &аргумент_Ы) ;

Например:

 

int х ;

 

scanf("%i", &х);

?

Ее описание во многом схоже с функцией printf. Управляющая строка содержит только спецификаторы преобразования, т.е. тип и количество вводимых с клавиатуры значений. Эти значения записываются в соответствующие аргументы. В качестве аргументов в функцию scanf подаются не сами переменные, а их адреса в памяти компьютера. Символ '&' - амперсант в сочетании с именем переменной передает ее адрес.

Перечислим лишь некоторые спецификаторы преобразования для функции scanf: %с - ввод одного символа;

%d или %i - ввод целого числа типа int; %D или %1 - ввод целого числа типа long; %f - ввод вещественного 4Hcra(float);

%s - ввод строки символов.

П р и м е р 5.5. Ввести с клавиатуры 3 целых числа, посчитать их сумму и вывести её на экран.

int х, у, z;

printf("Введите целое число: " ) ; scanf("%i", &х);

printf("Введите еще два целых числа: " ) ; scanf("%i %i", &у, &z);

^printf ("Сумма трех чисел = %i", х + у + z) ;

Пример 5.6. Напишите программу для кассового аппарата, которая высчитывает стоимость товара. Входные данные: цена за 1 кг продукта и масса покупки.

float price, mass; // цена и масса printf("Введите цену за 1 кг : " ) ; scanf("%f", &price);

printf("Введите массу:");

s c a n f ( " % f " ,

S m a s s ) ;

 

p r i n t f ( " С

в а с %.2f р у б . \ n Спасибо з а п о к у п к у !

p r i c e * m a s s ) ;

Ввод и вывод информации с помощью потоков

В языке С++ есть другой, возможно, более удобный способ ввода/вывода информации. Это работа с потоками. Удобство заключается в том, что не требуется указывать тип вводимых и выводимых значений. Программа сама определяет его, исходя из объявления переменных. Для работы с потоками необходимо подключить файл iostream.h. Тогда мы сможем работать с двумя потоками: cin и cout - стандартные входной и выходной потоки. Запись в поток и считывание из потока осуществляется с помощью операций « и ». Например:

i n t

х ;

 

 

 

 

c i n

»

х;

//

с ч и т ы в а е м

з н а ч е н и е с к л а в и а т у р ы в переменную х

х + + ;

 

 

 

 

 

c o u t

<<

х;

//

выводим на

э к р а н и з м е н е н н о е з н а ч е н и е п е р е м е н н о й х

Если надо ввести или вывести несколько переменных, то можно написать так:

i n t

x l ,

х 2 , х З ;

 

c i n »

x l

»

х2

»

х З ;

x l +=

х2

+

х З ;

 

 

c o u t <<

"Сумма

т р е х

ч и с е л = " « xl << " Л и " ;

Программа прочитает три целых числа в переменные xl, х2 и хЗ, сложит их и выведет на экран надпись "Сумма трех чисел = ", а затем результат, хранящийся в xl, и в конце перейдет на новую строку. Кроме того, для перехода на новую строку можно использовать другую конструкцию:

c o u t << "Сумма т р е х ч и с е л = " << xl < < e n d l ;

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

34

Задачи к главе 5. Ввод и вывод данных

Задача 5.1. Напишите программу, которая выводит на экран имя и фамилию преподавателя, далее на новой строке с отступом выводит Ваше имя и фамилию, затем снова на новой строке с двумя отступами - дату проведения занятия.

<имя и фамилия

преподавателя>

 

<Ваше имя

и

фамилия>

 

<дата

проведения занятия>

в

7^. Задача 5.2. Напишите программу, которая цветами российского флага выводит: «Российская Федерация»

Задача 5.3. Напишите программу, цель которой - вывести на экран значение переменной г = 3.140000 следующим образом:

1 ) 3

2 ) 3 . 1

3 ) 3 . 1 4

4 ) 3 . 1 4 0

Задача 5.4. Напишите программу, в которой с клавиатуры вводится число купленных в магазине компьютеров, цена одного компьютера в евро и курс евро, а выводится общая стоимость покупки в рублях.

Рекомендуемый вид экрана:

Вычисление стоимости покупки в рублях.

 

Введите исходные данные:

 

Количество компьютеров (шт.) -> 10

 

Цена одной единицы (евро) -> 1000

 

Курс

евро (рублей/евро)

-> 3 7 , 3

*

Общая

стоимость покупки

в рублях: 373

000 рублей

Задача 5.5. Напишите программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,5 должно быть преобразовано к виду 12 руб. 50 коп.

Рекомендуемый вид экрана:

Преобразование числа в денежный формат. Введите дробное число -> 3 2 , 7

32,7 руб. - это 32 руб. 70 коп.

Задача 5.6. С клавиатуры вводятся три числа. Напишите программу, которая вычисляет среднее арифметическое и среднее геометрическое этих чисел.

Задача 5.7. Напишите программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах.

Рекомендуемый вид экрана:

Введите величину временного интервала (в минутах)

- > 150

150 минут - э т о 2 ч . 30 мин.

Задача 5.8. Напишите программу вычисления величины дохода по вкладу. Процентная ставка (в % годовых) и время хранения (в днях) задаются во время работы программы.

Рекомендуемый вид экрана:

Вычисление дохода по вкладу. Введите исходные данные: Величина вклада (руб.) -> 2500 Срок вклада (дней) -> 30 Процентная ставка (годовых) - >20

Доход: 41,10 руб.

Сумма по окончании срока вклада: 2541,10 руб.

Задача 5.9. Напишите программу, которая выводит введенный с клавиатуры текст. При этом пользователь задает цвет и положение текста на экране.

Задача 5.10. Напишите программу, которая рисует окружность, радиус которой вводится

с клавиатуры.

s

Задача 5.11. Напишите программу, которая рисует грузовик, и закрашивает его цветом, введенным с клавиатуры. При этом размеры груза (длина и высота) вводятся с клавиатуры.

Гпава 6

Условные операторы

Если наша цель не намокнуть под дождем, то мы должны взять с собой зонт, когда на небе тучи. Другое дело, если небо ясное - зонт можно не брать.

В математике тоже встречаются условия: если х > 0, то у = х2;

если х < 0, то у = 2х + 1. , Это же условие можно записать короче:

если х > 0, то у = х ; иначе у = 2х + 1.

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

Вязыке С++ для программирования таких ситуаций существует условный оператор if. Полная форма записи этого оператора выглядит так:

if ( у с л о в и е )

о л е р а т о р _ 1 ;

else

о п е р а т о р _ 2 ;

Здесь if (если), else (иначе) - ключевые слова, оператор_1 и оператор_2 - простые или составные операторы. Если выполняется условие, записанное в круглых скобках, тЪ работает оператор_1, иначе (если условие не выполняется) - оператор_2. Иногда говорят так: "Если условие истинно, то выполняется оператор_1, иначе (если условие ложно) - оиератор_2". В качестве операторов 1 и 2 могут стоять также условные операторы. Обратите внимание на то, что условие в с е г д а заключается в скобки.

Для рассмотренного примера, запись на языке С++ будет следующей:

i f (х > 0)

у = х * х ;

else

у = 2 * х + 1;

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

условие. Далее от него идут две стрелочки: одна с надписью "Да" - по этой ветке идем в случае, если условие истинно, и "Нет" - когда условие ложно.

Для примера о том, нужно ли брать с собой зонт, создаем такую конструкцию:

Для сравнения чисел доступны следующие операции:

Знак операции

Назначение операции

Пример

>

Больше

х >7

>=

Больше или равно

х>=8

<

Меньше

х <7

<=

Меньше или равно

х<=8

= =

Равно

х = = 9

и

Не равно

х !=8

 

 

 

 

Пример 6.1. С клавиатуры вводится длина шеи трех жирафов, цель программы - найти самого высокого жирафа.

/* Самый

высокий жираф */

 

 

 

 

f l o a t

а ,

Ь , с , max;

 

 

 

 

p r i n t f

("Жирафы ! Введите каждый длину своей

шеи: \ п " ) ;

»

scanf

("%f

%f %f ", &a, &b, &c);

 

 

 

i f ( a > b && a > с )

 

 

 

 

 

p r i n t f ( " П е р в ы й жираф самый высокий !

V n " ) ;

 

else

 

 

 

 

 

 

 

 

i f

(b

> c )

 

 

 

 

 

 

p r i n t f ( " В т о р о й жираф

самый высокий

!

\ n " ) ;

 

 

else

 

 

 

 

 

 

 

 

p r i n t f ( " Т р е т и й жираф

самый высокий

! \ п " ) ;

 

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

Акак записать такое условие: "Если х > 10 и х < 40, то надо подсчитать х3, иначе - 2

*х + 3"? Для этого существуют логические операции. Наиболее часто используемые операции - это логическое "и", "или", "не". Записываются они с помощью специальных

символов: && - операция "и", || - операция "или", ! - операция "не". Традиционно эти операции должны давать одно из двух значений: истину или ложь. В языке С++ принято следующее правило: истина - это любое ненулевое значение, ложь - это нулевое значение. Выражения, использующие логические операции, возвращают 0 для ложного значения и 1 - для истинного.

Условие «все х находятся в промежутке от 5 до 10», можно записать так «х > 5 и

х

< 10». Или на языке С++: х > 5 && х < 10.

 

 

Условие «все

х находятся

вне промежутка от 5 до 10»

можно записать

так:

«х < 5 или х > 10».

Или на языке

С++: х < 5 || х > 10 , или так !(х

> 5 && х < 10)

 

1

Пример 6.2. Проверить истинность выражений х > 5 && х < 10, х < 5 || х > 10, !(х<5), если известно, что х=5.

int х=5; printf("%i\n",х>5&&х<10); printf("%i\n",x < 5 | | x > 10);

printf("%i\n",!(x<5));

Результат выполнения программы:

0

0

1

Теперь условие "Если х > 10 и х < 40, то надо подсчитать xJ, иначе - 2 * х + 3" мы можем написать так:

i f ( х > 1 0 & & х < 4 0 ) у = х * х * х ; else у = 2 * х + 3;

Условие не обязательно должно иметь форму операции отношения (>, <, = и т.д.). Оно может принимать вид любого выражения, вырабатывающего результат. Если он отличен от нуля, то условие, как уже говорилось, будет истинным. Если 0, то ложным.

Например, запись

if (х + 1) оператор1; else оператор2;

вполне допустима. Если х + 1 отлично от нуля, то работает оператор1, иначе - оператор2. Правила составления программы позволяют программисту записывать операторы >в свободной форме. Однако для удобства восприятия программы рекомендуется слово else

писать под тем словом if, к которому оно относится, например:

if (а == Ь)

if (с < d) х = 5; else х = 12;

else х = 34;

Этот пример соответствует следующей алгебраической записи:

Действие условного оператора может быть расширенно использованием составного оператора. Когда в ответ на истинность условия должны быть выполнены два и больше

операторов, то их заключают в фигурные скобки:

ь

if ( у с л о в и е )

 

 

 

{// э т и

о п е р а т о р ы

выполняются,

е с л и у с л о в и е

и с т и н н о

о п е р а т о р _ 1 ;

 

 

 

о п е р а т о р

2;

 

 

 

о п е р а т о р _ Ы ;

 

 

 

}

 

 

 

 

else

 

 

 

 

{ / / э т и о п е р а т о р ы

выполняются,

е с л и у с л о в и е

ложно .

оп е р а т о р _ 1 ;

оп е р а т о р _ 2 ;

оператор__К;

}

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