osnovyiprogrammirovaniyanac
.pdffloodfill(x, |
у, |
border) |
м о ж н о |
залить |
любу ю |
замкнуту ю |
фигуру, |
г р а н и ц а которо й |
имее т цвет border, |
а точк а (х,у) находитс я |
внутри |
з а к р а ш и в а е м о й области . |
|||||
П о л н ы й |
перечень |
функций , |
описанны х в |
библиотеке |
graphics.h, |
можн о получить с |
||
п о м о щ ь ю встроенной справочной системы (клавиша F1). |
|
|
||||||
Пример 3.1.Написать программу, которая выводит на экран флаг Олимпийски х игр. |
||||||||
синий |
|
черный |
красный |
|
|
|
желтый |
зеленый |
Текст программ ы на С + + :
# i n c l u d e |
< g r a p h i c s . h > |
|
|
|
|
|
|
|
|
|
|||
# i n c l u d e |
< c o n i o . h > |
|
|
|
|
|
|
|
|
|
|
||
v o i d m a i n ( ) |
|
|
|
|
|
|
|
|
|
|
|||
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
int g d , g m ; |
|
|
|
|
|
|
|
|
|
|
|||
g d = D E T E C T ; |
|
|
|
|
|
|
|
|
|
|
|
||
i n i t g r a p h ( & g d , & g m , " z : W b g i " ) |
|
|
|
|
|
|
|||||||
s e t b k c o l o r ( 1 5 ) ; // у с т а н о в и т ь ц в е т ф о н а - б е л ь м |
|
||||||||||||
I / |
|
|
|
|
|
р и с у е м в е р х н и й р я д к о л е ц |
|
|
|||||
|
|
|
|
|
|
|
|||||||
s e t c o l o r ( l ) ; |
// |
у с т а н о в и т ь ц в е т |
к о л ь ц а , у к а з ы в а е т с я :-:г:/_ес ц в е т а |
|
|||||||||
c i r c l e ( 100 , 1 0 0 , 3 5 ) ; |
// н а р и с о в а т ь |
к о л ь ц о з а д а н н о г о ц в е т а |
|
||||||||||
s e t c o l o r ( O ) ; |
|
|
|
|
|
|
|
|
|
|
|||
c i r c l e ( 1 6 0 , 1 0 0 , 3 5 ) |
|
|
|
|
|
|
|
|
|
|
|||
s e t c o l o r ( 4 ) ; |
|
|
|
|
|
|
|
|
|
|
|||
c i r c l e ( 2 2 0 , 1 0 0 , 3 5 ) |
|
|
|
|
|
|
|
|
|
|
|||
/ / |
|
|
|
|
|
р и с у е м н и ж н и й р я д к о л е ц |
|
|
|||||
|
|
|
|
|
|
|
s e t c o l o r ( Y E L L O W ) ; / / у с т а н о в и т ь ц в е т к о л ь ц а , у к а з ы в а е т с я н а з в а н и е ц в е т а c i r c l e ( 1 3 0 , 1 4 0 , 3 5 ) ; / / н а р и с о в а т ь к о л ь ц о з а д а н н о г о ц в е т а
s e t c o l o r ( G R E E N ) ;
c i r c l e t 190 , 140 , 35 ) ;
g e t c h ( ) ;
c l o s e g r a p h ( ) ;
}
А н и м а ц и я |
|
|
|
|
|
|
|
|
|
|
|
» |
||
|
Как |
сделать |
так, |
чтобы изображение |
на экране |
монитора двигалось? |
||||||||
|
Д ля этого нужно сначала дать команду компьютер у отобразить объект, а через |
|||||||||||||
некоторо е время закрасить его цветом фон а и одновременн о нарисовать в другом месте - |
||||||||||||||
это |
создаст у пользователя |
иллюзи ю движени я изображени я по экрану. Процес с создания |
||||||||||||
т а к о й и л л ю з и и н а з ы в а е т с я |
анимацией . |
|
|
|
|
|
|
|
||||||
|
Приме р |
3.2. |
Н а п и с а т ь |
программу , |
котора я |
рисует |
светофо р |
и |
||||||
переключает его цвета от красного до зеленого . |
|
|
|
|
|
|
||||||||
|
Приступа я к |
р е ш е н и ю , следует |
учесть |
то, |
что |
компьюте р |
выполни т |
|||||||
все |
к о м а н д ы |
так |
быстро, |
что |
мы |
увидим |
только |
к о н е ч н ы й |
результат. |
|||||
Чтоб ы м о ж н о было видеть переключени е цветов, используется ф у н к ц и я |
||||||||||||||
delay(n) |
из |
б и б л и о т е к и |
ф у н к ц и й |
dos.h |
- в ы п о л н и в |
эту |
команду , |
|||||||
компьюте р остановит в ы п о л н е н и е программ ы на |
п |
миллисекун д |
(1 |
|||||||||||
секунда = 1000 миллисекунд) . |
|
|
|
|
|
|
|
|
|
|||||
Фрагмен т программ ы на С + + : |
|
|
|
|
|
|
|
|
|
s e t c o l o r ( W H I T E ) ; / / р и с у е м к о н т у р с в е т о ф о р а r e c t a n g l e ( 1 0 , 1 0 , 1 7 5 , 4 7 0 ) ;
c i r c l e ( 9 0 , 9 0 , 7 0 ) ; c i r c l e ( 9 0 , 2 3 5 , 7 0 ) ; c i r c l e ( 9 0 , 3 8 0 , 7 0 ) ;
B e t f i l l s t y l e ( 1 , R E D ) ; / / у с т а н а в л и в а е м ц в е т з а л и в к и - f l o o d f i l l ( 9 0 , 9 0 ( W H I T E ) ; / / з а к р а ш и в а е м в е р х н и й к р у г
к р а с н ы й к р а с н ы м ц в е т о м
d e l a y ( 2 0 0 0 ) ; / / п а у з а 2 с е к у н д ы |
|
s e t f i l l s t y l e ( 1 , B L A C K ) ; / / п е р е к р а ш и в а е м в е р х н и й к р у г в ц в е т ф о н а |
ч е р н ы й |
f l o o d f i l l ( 9 0 , 9 0 , W H I T E ) ; |
|
s e t f i l l s t y l e ( 1 , Y E L L O W ) ; f l o o d f i l l ( 9 0 , 2 3 5 , W H I T E ) ;
/ / у с т а н а в л и в а е м ц в е т з а л и в к и - ж е л т ы й / / з а к р а ш и в а е м с р е д н и й к р у г ж е л т ы м ц в е т о м
d e l a y ( 2 00 0 ) ; // п а у з а 2 с е к у н д ы
s e t f i l l s t y l e ( 1 , B L A C K ) ; / / п е р е к р а ш и в а е м с р е д н и й к р у г в ц в е т ф о н а - ч е р н ы й f l o o d f i l l ( 9 0 , 2 3 5 , W H I T E ) ;
s e t f i l l s t y l e ( 1 , G R E E N ) ; / / у с т а н а в л и в а е м ц в е т з а л и в к и - з е л е н ы й
f l o o d f i l l ( 9 0 , 3 8 0 , W H I T E ) ; / / з а к р а ш и в а е м н и ж н и й к р у г з е л е н ы м ц в е т о м
Пример 3.3. Н а п и ш и т е программу , котора я рисует на э к р а н е рыб у и двигает её слева направо .
s e t c o l o r ( R E D ) ; / / р и с у е м р ы б у к р а с н ы м ц в е т о м |
|
|
a r c ( 2 0 0 , 2 0 0 , 2 0 , 1 9 0 , 4 5 ) ; / / в е р х н я я |
с т о р о н а |
|
a r c ( 2 0 0 , 1 7 0 , 1 7 0 , 3 4 0 , 4 5 ) ; / / н и ж н я я с т о р о н а |
» |
|
c i r c l e ( 2 3 0 , 1 8 0 , 1 ) ; / / г л а з |
|
|
l i n e ( 2 2 0 , 2 1 0 , 2 2 0 , 1 6 0 ) ; / / л и н и я / |
в ы д е л я ю щ а я г о л о в у |
|
l i n e ( 1 5 4 , 2 0 5 , 1 5 4 , 1 6 3 ) ; / / л и н и я / |
з а в е р ш а ю щ а я х в о с т |
|
d e l a y ( 3 0 0 0 ) ; / / п а у з а 3 с е к у н д ы
Задания к главе 3. Практическое з н а к о м с т в о . Графика
Задача 3.1. |
Н а п и ш и т е программу, которая выводит |
на экран |
Г о с у д а р с т в е н н ы й флаг |
России . |
|
|
|
Задача 3.2. |
Н а п и ш и т е программу, к о т о р а я рисует дом |
следующего |
вида: |
Задача 3.3. |
Н а п и ш и т е программу, цель к о т о р о й - создать и л л ю з и ю у в е л и ч е н и я квадрата |
на э к р а н е : |
|
Задача |
3.4. |
Н а п и ш и т е программу, к о т о р а я рисует окружность, |
д в и ж у щ у ю с я |
по экрану . |
|
Задача |
3.5. |
Н а п и ш и т е программу, |
которая рисует сначала |
грустную |
р о ж и ц у , далее |
заменяет её |
на н е й т р а л ь н у ю , а потом |
на веселую . |
|
|
Гпава4
|
|
|
|
|
|
|
ь |
Типы |
данных |
|
|
|
|
|
|
К а к и е |
правила необходимо соблюдать при |
н а п и с а н и и программ? |
|
||||
Тело |
п р о г р а м м ы , |
н а п и с а н н о й на я з ы к е |
С + + , состоит |
из |
и н с т р у к ц и й . Каждая |
||
и н с т р у к ц и я |
вызывает |
некоторые |
действия |
на соответствующем |
шаге |
в ы п о л н е н и я |
|
п р о г р а м м ы . |
П р и н а п и с а н и и |
и н с т р у к ц и й |
п р и м е н я ю т с я |
определенные |
символы, |
с о с т а в л я ю щ и е |
алфавит языка . Алфавит я з ы к а С + + включает |
в себя: |
|
|
|
|
|
|
|||||||||||||||||||||||
• |
буквы л а т и н с к о г о алфавита: |
заглавные |
от А до |
Z |
и |
строчные |
|
от |
а до |
z; |
|
|
|||||||||||||||||||
• |
арабские ц и ф р ы : 0, 1,2, |
|
3, 4, |
5, |
6, |
7, |
8, |
|
9; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
с п е ц и а л ь н ы е с и м в о л ы : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
+ |
|
П л ю с |
|
|
|
|
|
|
|
|
|
|
|
К а в ы ч к и |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
- |
|
М и н у с |
|
|
|
|
|
|
|
|
С |
|
Апостроф |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
* |
|
Звездочка |
|
|
|
|
|
|
О |
|
Круглые |
скобки |
|
|
|
|
|
|
|
||||||||||
|
|
/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
П р я м о й |
слеш |
|
|
|
|
|
[] |
|
Квадратные |
скобки |
|
|
|
|
|
|
||||||||||||
|
|
= |
|
Равно |
|
|
|
|
|
|
|
|
{} |
|
Фигурные |
скобки |
|
|
|
|
|
|
|
||||||||
|
|
< |
|
М е н ь ш е |
|
|
|
|
|
|
|
% |
|
П р о ц е н т |
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
> |
|
Б о л ь ш е |
|
|
|
|
|
|
|
& |
|
Амперсант |
|
|
|
|
|
|
|
|
|
||||||||
|
|
! |
|
В о с к л и ц а т е л ь н ы й |
|
знак |
|
|
|
# |
|
Решетка |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
? |
|
В о п р о с и т е л ь н ы й |
знак |
|
|
|
~ |
|
Тильда |
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
Точка |
|
|
|
|
|
|
|
|
|
1 |
|
Вертикальная |
черта |
|
|
|
|
|
|
||||||||
|
|
? |
|
Запятая |
|
|
|
|
|
|
|
\ |
|
Обратный |
слеш |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
Двоеточие |
|
|
|
|
|
|
|
|
|
П о д ч е р к и в а н и е |
|
|
|
|
|
|
|
||||||||||
|
|
? |
|
Точка |
с запятой |
|
|
|
|
|
|
|
|
Пробел |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Л |
|
К р ы ш е ч к а |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
И с п о л ь з о в а н и е |
русски х |
|
букв |
(и |
других |
специфически х |
символов) |
в о з м о ж н о |
|||||||||||||||||||||||
только в строковых выражениях. |
К о л и ч е с т в о |
п р о б е л о в |
и |
н а ж а т и й |
к л а в и ш и < E n t e r > , |
||||||||||||||||||||||||||
используемых |
для |
визуального |
ф о р м а т и р о в а н и я |
текста, |
|
не |
имеет |
для |
к о м п и л я т о р а |
||||||||||||||||||||||
з н а ч е н и я . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Точка с запятой служит признаком конца оператора, |
и ч а щ е |
в с е г о и м е н н о э т о т |
|||||||||||||||||||||||||||||
знак забывают |
поставить н о в и ч к и . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Компилято р различает строчные и заглавные буквы, и в |
н е к о т о р ы х с л у ч а я х |
||||||||||||||||||||||||||||||
замена |
строчной |
буквы |
заглавной или |
наоборот может вызвать ошибку. |
|
|
|
|
|||||||||||||||||||||||
В |
качестве имени |
переменной и л и |
ф у н к ц и и |
м о ж е т |
служит ь |
н а б о р |
букв л а т и н с к о г о |
||||||||||||||||||||||||
алфавита, |
ц и ф р |
и |
|
символа |
п о д ч е р к и в а н и я , |
при |
|
этом |
начинаться |
это |
имя |
д о л ж н о |
|||||||||||||||||||
обязательно с |
буквы |
или знака |
п о д ч е р к и в а н и я |
(rt, |
first, |
huge, |
_ а ) . |
И м я п е р е м е н н о й не |
|||||||||||||||||||||||
д о л ж н о совпадать |
с |
л ю б ы м ключевым |
|
словом. |
Если |
п е р е м е н н а я |
или |
ф у н к ц и я |
с таким |
||||||||||||||||||||||
и м е н е м |
уже используются в системе, |
то |
может в о з н и к н у т ь |
о ш и б к а |
совпадения и м е н и еще |
||||||||||||||||||||||||||
на стадии |
к о м п и л я ц и и . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Длина имени не фиксируется (в |
р а з у м н ы х |
п р е д е л а х ) , |
но |
р а з н ы е к о м п и л я т о р ы |
|||||||||||||||||||||||||||
различают |
и м е н а |
по |
разному |
количеству |
начальных |
символов, |
что |
тоже |
может |
служить |
|||||||||||||||||||||
и с т о ч н и к о м о ш и б к и . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
В к а ч е с т в е |
и м е н и запрещено использовать |
с л е д у ю щ и е |
к л ю ч е в ы е |
слова: |
|
|
a sm |
do |
if |
s t a t i c |
a u t o |
d o u b l e |
int |
s t r u c t |
b r e a k |
e l s e |
long |
s w i t c h |
c a s e |
e n u m |
r e g i s t e r |
t y p e d e f |
c h a r |
e x t e r n |
r e t u r n |
u n i o n |
const |
float |
short |
u n s i g n e d |
c o n t i n u e |
for |
s i g n e d |
v o i d |
d e f a u l t |
g o t o |
s i z e o f |
|
v o l a t i l e |
_ d s |
|
w h i l e |
far |
|
_ s s |
p a s c a l |
|
i n t e r r u p t |
_ e s |
|
_ c s |
h u g e |
» |
c d e c l |
e x p o r t |
|
n e a r |
|
|
Переменная представляет собой данные, хранящиеся в определенных ячейках памяти; значение переменной, в отличие от константы, может быть изменено в ходе выполнения программы.
Вид данных (целые, дробные числа, строки и так далее) и способ их представления и хранения определяются типом переменной, который указывается при объявлении или определении переменной.
К а к уже отмечалось выше, идентификаторы переменных, т.е. их имена, не могут совпадать с ключевыми словами, поэтому являются неизвестными компилятору. В связи с этим до первого использования переменной ее обязательно нужно объявить. Если переменная просто объявляется, то ее начальное значение может быть либо нулем, либо каким-то произвольным, соответствующим тем байтам, которые были записаны в ячейках памяти, отведенных под переменную. Чтобы избежать неопределенности, мы будем либо
определять переменные, либо придавать |
им начальные значения до первого |
использования в качестве значений чего-либо. |
|
Общая структура объявления переменной |
может быть представлена так: |
тип_данных идентификатор;
Например: int а; ИЛИ long double b;
Если нужно объявить несколько переменных одного типа, то их идентификаторы можно
перечислять через запятую:
тип_данных идентификатор! , идентификатор2 ;
Например: int а,Ь,с;
Общая структура определения переменной отличается только тем, что идентификатору сразу же присваивается начальное значение, причем можно одновременно определять и объявлять переменные одинакового типа:
тип_данных идентификатор=значение;
Например: int а=5;
или
тип_данных идентификатор1=значение1, идентификатор2=значение2;
Например: i n t а = о^ = 9;
или
тип_данных идентификатор!, идентификатор2=значение;
Например: int а,с=10;
Ба з о в ы е т и п ы
Вкачестве базовых типов данных определены целые числа и дробные числа, а также ссылочный тип, с помощью которого, например, можно хранить строки.
Для хранения целых чисел применяются типы char и int, причем первый может
сохранять числа от -128 |
до |
127, |
то есть объем этого типа составляет один байт. Обычно |
||||||
тип char используют для хранения символов в кодировке |
ASCII |
(см. |
приложение |
1), |
|||||
поэтому он так и называется. |
|
|
|
|
|
|
|
||
Длина типа int равняется машинному |
слову и для 16-ти |
разрядных систем |
составляет |
||||||
2 байта, а для 32-х разрядных |
- 4 байта. Мы будем рассматривать |
16-ти |
разрядную |
||||||
систему, например, Borland С++ |
3.1, поэтому с его помощью можно представить числа от |
||||||||
-32768 до 32767. Это |
так |
называемые |
знаковые типы, |
в них для хранения числа |
|||||
используются не все биты, а только 7 и 15, и этот последний, |
старший бит равняется 0 для |
||||||||
положительных чисел и |
1 |
для |
отрицательных. Каждое число по |
модулю разлагается |
на |
|
|
|
|
|
|
|
|
|
|
4 |
|
3 |
|
2 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
с т е п е ни |
д в о й к и , н а п р и м е р , 25d |
|
= |
1*2 |
+ |
1*2 |
+ 0*2 |
+ |
0*2 |
+ |
1*2° |
= |
11001b. Д л я |
х р а н е н и я |
||||||||||||||
о т р и ц а т е л ь н ы х |
чисел используется |
д о п о л н и т е л ь н а я д в о и ч н а я |
а р и ф м е т и к а , |
то |
есть берется |
|||||||||||||||||||||||
п о л о ж и т е л ь н о е |
число, |
все его |
|
биты |
и н в е р т и р у ю т с я , |
и |
к |
нему |
добавляется |
1, |
тогда при |
|||||||||||||||||
с л о ж е н и и о д и н а к о в ы х |
по модулю, но разных по |
знаку чисел |
|
с |
и с п о л ь з о в а н и е м правил |
|||||||||||||||||||||||
д в о и ч н о й а р и ф м е т и к и |
получим |
|
0. |
Н а п р и м е р , |
для типа |
char |
127 |
записывается |
в |
д в о и ч н о й |
||||||||||||||||||
системе к а к 01111111, |
а - 127 |
к а к |
10000001. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Д л я |
целых чисел |
существует |
м о д и ф и к а т о р |
|
unsigned, |
|
к о т о р ы й |
|
позволяет |
|||||||||||||||||||
использовать базовые т и п ы для |
|
хранени я |
беззнаковых чисел . |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Например : |
u n s i g n e d char |
|
|
- |
диапазон |
от 0 до |
255 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u n s i g n e d |
i n t |
|
|
- |
диапазон |
от 0 до 65535. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Д л я х р а н е н и я д р о б н ы х |
(вещественных) |
ч и с е л |
и с п о л ь з у ю т с я т и п ы |
float |
и double. |
|||||||||||||||||||||||
В е щ е с т в е н н ы е |
числа |
могут |
быть |
представлен ы |
либо |
в о б ы ч н о й |
з а п и с и , н а п р и м е р , |
|||||||||||||||||||||
3956.768, либо |
в |
н а у ч н о й : 0.3956768е+4, |
то есть |
0.3956768* |
10 |
. |
Во |
втором |
случае |
число |
||||||||||||||||||
представляется |
в |
виде |
мантиссы, |
то есть |
о с н о в а н и я , |
и |
э к с п о н е н т ы , |
в д а н н о м |
случае |
- |
||||||||||||||||||
степени |
д е с я т к и , |
на которую |
у м н о ж а ю т |
мантиссу . |
Для |
х р а н е н и я м а н т и с с ы |
используют |
|||||||||||||||||||||
следующи й |
ф а к т : |
б е с к о н е ч н а я |
геометрическая |
прогрессия |
сходится |
к |
о п р е д е л е н н о м у |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
3 |
|
|
|
|
числу. Н а п р и м е р , |
если |
будем |
складывать |
1/2+1/4+1/8+... или 1/2 +1/2 |
+1/2 +..., то в итоге |
|||||||||||||||||||||||
получим в |
сумме |
1, п р и ч е м если мы |
будем |
складывать не до |
б е с к о н е ч н о с т и , а до |
к а к о й - т о |
||||||||||||||||||||||
о п р е д е л е н н о й |
степени |
п ( н а п р и м е р , |
10), |
то |
мы |
получим |
число, |
о т л и ч а ю щ е е с я |
от |
1 |
не |
|||||||||||||||||
более, |
чем |
на |
1/2 |
Если |
теперь |
мы |
|
будем |
в ы к и д ы в а т ь |
к а к и е - т о |
степени |
д в о й к и , |
подставляя в соответствующие биты д в о и ч н о г о представления 0, то получим число,
отличное |
от 1. Т а к и м |
образом, |
с |
п о м о щ ь ю |
п |
бит мы можем |
представить любую дробную |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 |
Л - ) П _ 1 |
|
|
|
|
|
|
|
|
|
|
|
часть в е щ е с т в е н н о г о |
числа |
с |
точностью |
l/2 |
, |
разлагая |
его |
по |
о т р и ц а т е л ь н ы м степеням |
||||||||||||||
д в о й к и |
2(-1) |
и так далее. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Т и п ы |
float и |
double |
отличаются |
к о л и ч е с т в о м |
б и т о в , |
о т в о д и м ы х |
д л я х р а н е н и я |
|
|||||||||||||||
м а н т и с с ы , |
то |
есть |
т о ч н о с т ь ю , |
и |
битов, |
отводимых на |
х р а н е н и е э к с п о н е н т ы , |
то |
есть |
||||||||||||||
д и а п а з о н о м |
от |
самых маленьки х до самых больших чисел . |
|
|
|
|
|
|
|
||||||||||||||
К п е р е ч и с л е н н ы м |
типа м |
|
могут |
|
п р и м е н я т ь с я |
м о д и ф и к а т о р ы |
short |
и |
long, |
||||||||||||||
у м е н ь ш а ю щ и е |
и у в е л и ч и в а ю щ и е |
количество |
байтов, |
отводимых |
для |
хранени я |
типа . |
||||||||||||||||
П р и ч е м м о д и ф и к а т о р |
short определен |
только |
для |
типа |
int и нужен в 32-х разрядных |
||||||||||||||||||
системах |
для |
совместимости , |
в |
|
16-ти |
|
р а з р я д н о й |
системе |
он |
л и ш е н |
смысла, |
хотя |
и |
||||||||||
определен, |
мы |
его |
не |
будем |
п р и н и м а т ь |
во |
в н и м а н и е . |
П е р е ч и с л и м |
о п и с а н н ы е |
т и п ы |
в |
||||||||||||
следующей |
т а б л и ц е : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
О т м е т и м , |
что |
слово |
int |
в д л и н н ы х с о ч е т а н и я х |
с |
м |
о д и ф и к а т о р а м и |
может |
||||
опускаться, |
н а п р и м е р , |
unsigned и |
unsigned |
int означают |
одно |
и |
то |
же. |
|
|||
К р о м е того, |
если нужно |
предотвратить |
и з м е н е н и е |
к а к о й - л и б о |
в е л и ч и н ы , н а п р и м е р , |
|||||||
п е р е м е н н о й , |
то |
она |
объявляется |
как константа с и с п о л ь з о в а н и е м м о д и ф и к а т о р а |
const. |
|||||||
Например: |
c o n s t |
i n t |
а = 5 ; |
|
|
|
|
|
|
|
|
П р и п о п ы т к е м о д и ф и ц и р о в а т ь з н а ч е н и е к о н с т а н т ы в п р о г р а м м е в о з н и к н е т о ш и б к а к о м п и л я ц и и .
Операции с переменными
И т а к , |
мы р а з о б р а л и с ь , |
что |
такое |
п е р е м е н н ы е , теперь |
п о с м о т р и м , |
что |
с |
н и м и |
м о ж н о |
||||||||||||||||||||||
делать. |
Н а п р и м е р , |
из |
них |
м о ж н о |
составлять |
в ы р а ж е н и я , |
используя |
м а т е м а т и ч е с к и е |
|||||||||||||||||||||||
о п е р а ц и и : |
сложение, |
вычитание, |
умножение, деление. |
Э т и |
о п е р а ц и и |
п р и м е н и м ы |
к |
|
|||||||||||||||||||||||
ц е л ы м |
и |
в е щ е с т в е н н ы м |
т и п а м д а н н ы х . |
Они |
используют |
|
два |
з н а ч е н и я |
или |
операнда, |
|||||||||||||||||||||
н а п р и м е р , |
два слагаемых |
и |
|
так |
далее, |
и |
если |
т и п ы |
операндов |
не |
совпадают, |
н а п р и м е р , |
|||||||||||||||||||
ц е л ы й |
и |
в е щ е с т в е н н ы й , |
то |
результат |
преобразуется |
автоматически |
|
к |
более |
д л и н н о м у |
и |
||||||||||||||||||||
общему типу, |
н а п р и м е р , |
к |
вещественному . Если т и п ы обоих |
операндов |
совпадают, |
то |
тип |
||||||||||||||||||||||||
результата |
|
совпадает |
с |
н и м и . |
И с к л ю ч е н и е |
составляет |
о п е р а ц и я |
взятия |
|
остатка |
от |
||||||||||||||||||||
деления |
по |
модулю |
- %. |
О н а |
п р и м е н я е т с я т о л ь к о |
к |
ц е л ы м |
ч и с л а м |
|
и выдает |
остато к от |
||||||||||||||||||||
д е л е н и я |
первого на |
второе . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
К а р и ф м е т и ч е с к и м |
о п е р а ц и я м т а к ж е |
о т н о с я т |
инкремент |
++ |
и |
декремент |
— , |
|
|||||||||||||||||||||||
к о т о р ы е |
п р и м е н я ю т с я |
к |
одному |
операнду |
целого |
типа . |
Эти |
о п е р а ц и и |
увеличивают |
и |
|||||||||||||||||||||
у м е н ь ш а ю т соответственно |
|
значение |
операнда |
на |
1. |
Различаются |
п р е ф и к с н а я |
ф о р м а |
|||||||||||||||||||||||
(+ + п е р е м е н н а я ) и |
п о с т ф и к с н а я |
( п е р е м е н н а я + + ). |
Для |
б о л ь ш и н с т в а |
случаев |
это |
не |
имеет |
|||||||||||||||||||||||
з н а ч е н и я , |
но |
иногда м е н я е т с я последовательность |
в ы п о л н е н и я . |
П р е ф и к с н а я |
всегда |
выдает |
|||||||||||||||||||||||||
з н а ч е н и е |
операнда |
уже |
и з м е н е н н о е , а |
п о с т ф и к с н а я |
сначала |
выдает |
з н а ч е н и е |
|
операнда, |
а |
|||||||||||||||||||||
потом его |
и з м е н я е т . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Важной |
о п е р а ц и е й |
является |
присваивание |
значения |
п е р е м е н н о й . |
Н а п р и м е р , |
если |
||||||||||||||||||||||||
мы хотим |
п р и с в о и т ь п е р е м е н н о й |
х |
значение |
п е р е м е н н о й |
у, |
то п и ш е м |
|
|
|
|
|
|
|
|
|
х= у;
ане наоборот .
М о ж н о присваивать |
п е р е м е н н о й |
результат |
в ы р а ж е н и й , |
математических |
||||
действий, н а п р и м е р : |
|
|
|
|
|
|
||
х =2 * |
у + 8 ; |
|
|
|
|
|
|
|
М о ж н о у с т р а и в а т ь |
множественное присваивание, |
н а п р и м е р : |
|
|
||||
х = у = 5; |
|
|
|
|
|
|
||
тогда сначала в у з а п и ш е т с я |
5, |
а потом в х - |
з н а ч е н и е у (в текущий м о м е н т |
5). |
||||
К р о м е |
того, д о в о л ь н о |
часто встречаются ситуации, когда |
в п е р е м е н н у ю нужно |
|||||
з а п и с а т ь |
ее |
же значение, |
н о , |
н а п р и м е р , умноженное |
на какое-то |
число. Тогд а нужнЪ |
||
н а п и с а т ь |
к о н с т р у к ц и ю вида: |
|
|
|
|
|
Х= х*3;
н о д л я э т о г о м о ж н о п р и м е н и т ь сокращенный вариант:
Х* = 3;
Эта запись обозначает то же самое . Такие |
с о к р а щ е н н ы е |
записи, |
или |
п р и с в а и в а н и я , |
||||||||||||||
с о п р я ж е н н ы е с |
о п е р а ц и е й , |
существуют для |
всех |
а р и ф м е т и ч е с к и х |
о п е р а ц и й . |
|
|
|
||||||||||
Все |
о п е р а ц и и |
обладают р а з л и ч н ы м |
п р и о р и т е т о м , |
то |
есть |
п о р я д к о м |
в ы п о л н е н и я . |
|||||||||||
С у щ е с т в о в а н и е |
п р и о р и т е т а |
надо |
всегда иметь |
в |
виду |
при |
с о с т а в л е н и и |
в ы р а ж е н и й , |
в |
|||||||||
к р а й н е м случае, |
для |
подстраховки |
расставлять с к о б к и ( ) . |
|
|
|
|
|
|
|
||||||||
К а к |
уже у п о м и н а л о с ь , |
результат |
в ы р а ж е н и я |
зависит |
от |
о п е р а н д о в , |
а |
о с о б е н н о |
от |
|||||||||
левого операнда в о п е р а ц и и |
п р и с в а и в а н и я . Тем |
не |
менее, |
иногда требуется |
я в н ы м образом |
|||||||||||||
преобразовать |
п е р е м е н н у ю |
одного |
типа |
к |
другому |
типу. |
П р и |
этом |
|
используется |
||||||||
следующая |
к о н с т р у к ц и я : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
( т р е б у е м ы й _ т и п ) |
п е р е м е н н а я ; |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
н а п р и м е р : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(int) |
х; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* |
|
П р е о б р а з о в а н и е |
более |
коротких |
|
типо в |
в |
более |
д л и н н ы е |
всегда |
происходит |
||||||||||
б е з б о л е з н е н н о . |
Обратное |
п р е о б р а з о в а н и е |
является |
к о р р е к т н ы м , |
если |
значени е |
|||||||||||||
п е р е м е н н о й |
не |
выходит за д и а п а з о н |
требуемого типа, |
в |
п р о т и в н о м |
случае может |
сильно |
||||||||||||
и з м е н и т ь с я значение , |
н а п р и м е р , смениться знак числа и даже его модуль. |
|
|
|
s |
||||||||||||||
П р о д е м о н с т р и р у е м |
с к а з а н н о е н а примере с л е д у ю щ е й п р о г р а м м ы . |
|
|
|
|
||||||||||||||
Ти п д а н н ы х |
char |
используется |
для х р а н е н и я символов, поэтому, прежде |
чем |
|||||||||||||||
з н а ч е н и е char |
будет выведено |
на экран, |
|
преобразуем |
его |
в |
ц е л о ч и с л е н н ы й тип |
int. |
Д л я |
||||||||||
о т о б р а ж е н и я |
результатов |
на |
экран е м о н и т о р а |
мы |
будем |
использовать |
ф у н к ц и ю |
cout |
из |
||||||||||
библиотеки iostream.h, |
которая |
имеет вид |
c o u t « |
< в ы в о д и м о е |
з н а ч е н и е > |
Перед |
тем |
||||||||||||
как выводить |
з н а ч е н и я |
на |
э к р а н , |
мы |
|
очистим |
его |
с |
п о м о щ ь ю |
ф у н к ц и и |
clrscr() |
из |
|||||||
библиотек и conio.h: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Пример 4.1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
#include <conio.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
ttinclude <iostream.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
void |
main() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ const int s=2; //определяем |
константу |
|
|
|
|
|
|
|
|
|
|||||||||
//определяем |
переменные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
int а=3; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
char |
с=4; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float |
z=3.14; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
clrscr();//очистить |
экран |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
z- z - a; t lx станет равно 6.14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
cout<<z<<endl; // << «end l |
» |
- |
означает «перейти |
на новую |
строку» |
|
|
с=а—s;//c станет равно 5 cout<<(int)c<<endl;
a»z-a; //а станет равно 9 cout<<a<<endl;
С + + ; / / с станет равно б cout<<(int)c<<endl ;
с = c/s;//c станет равно 3 cout<<(int)c<<endl ;
a=a%c;// а станет равно О cout<<a<<endl ;
a+=10;// а станет равно 10 cout<<a<<endl;
getch();
}
Задания |
к главе 4.Типы д а н н ы х |
||
Задача |
4.1 |
|
|
К а к о е и м я |
не может |
п р и н и м а т ь п е р е м е н н а я : |
|
Задача |
4.2 |
|
|
Определите з н а ч е н и я |
п е р е м е н н ы х а,Ь,с и F после в ы п о л н е н и я п р о г р а м м ы : |