[sape_tizer]
Чт. Июн 1st, 2023

Что и как строить на земельном участке или обо всем понемногу

Все о инструментах, строительстве, работах, АРДУИНО, электрика, электроника и многое другое

Урок 3. Переменные

Наконец добрались до одного из главных вопросов- переменные. Часть из них уже была описана в первом и втором уроках, настало время описать их все. Начнем по возрастанию.

byte

Первый тип переменных, занимает 1 байт памяти и может принимать целые значения от 0 до 255. Им хорошо описывать  номера пинов и вообще любые переменные, значения которых находятся в данных пределах. Преимущества- занимает мало места, недостатки- слишком малый диапазон значений.

Записывается как byte n1=100;— переменной n1 типа byte присваивается значение 100.

boolean

Второй тип, занимает 1 байт памяти и может принимать только два значения- TRUE или FALSE. Очень удобен для переключения цифровых входов/ выходов в логические состояния.

Записывается как boolean run = false;— переменной run типа boolean присваивается значение false.

 char 

Третий тип, занимает 1 байт на знак, предназначен для написания текста в нормальном виде или посредством ASCII- кодов. Принимает значения от -128 до 127. 

Таблица ASCII- кодов.

Значение  Буква

0  null
1
2
3
4
5
6
7
8
9   tab	
10  line feed	
11
12
13 carriage return
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Значение Буква

32	space
33	!
34	"
35	#
36	$
37	%
38	&
39	'
40	(
41	)
42	*
43	+
44	,
45	-
46	.
47	/
48	0
49	1
50	2
51	3
52	4
53	5
54	6
55	7
56	8
57	9
58	:
59	;
60	<
61	=
62	>
63	?
Значение Буква

64	@
65	A
66	B
67	C
68	D
69	E
70	F
71	G
72	H
73	I
74	J
75	K
76	L
77	M
78	N
79	O
80	P
81	Q
82	R
83	S
84	T
85	U
86	V
87	W
88	X
89	Y
90	Z
91	[
92	\
93	]
94	^
95	_
Значение Буква

96	`
97	a
98	b
99	c
100	d
101	e
102	f
103	g
104	h
105	i
106	j
107	k
108	l
109	m
110	n
111	o
112	p
113	q
114	r
115	s
116	t
117	u
118	v
119	w
120	x
121	y
122	z
123	{
124	|
125	}
126	~
127

char myChar = ‘A’;

char myChar = 65; // обе записи эквивалентны — переменной myChar типа char присваивается значение A.

char errorMessage = «choose another option»;-  переменной errorMessage  присваивается значение choose another option.

unsigned char

Четвертый тип, это копия типа byte и в программировании предпочитают использовать именно тип byte. unsigned char используется крайне редко.

Записывается как unsigned char myChar = 240;— переменной myChar  типа unsigned char присваивается значение 240.

integer

Пятый тип, записывается как int,  может принимать целые значения от -32768 до 32768.  Размер  integer-2 байта (кроме ARDUINO DUE, в нем INT занимает уже 4 байта но значения принимает от -2147483648 до 2147483647 ). Занимает мало места но диапазон гораздо выше чем у переменных типа byte.

Записывается как int n1=100;— переменной типа integer присваивается значение 100.

В нормальном виде тип integer отображается в десятичном виде, но можно отображать и в бинарном, восьмеричном, шестнадцатиричном коде.

Примеры:

101 -десятиричный код, значение равно 101.

B101 -двоичный(бинарный) код, значение равно 5. Перед значением ставится буква B.

0101 -восьмеричный код, значение равно 65 ((1 * 8^2) + (0 * 8^1) + 1). Перед значением ставится 0 (ноль).

0x101 -шестнадцатиричный код, значение равно 257 ((1 * 16^2) + (0 * 16^1) + 1). Перед значением ставится 0x.

Кроме того константы типа integer можно преобразовывать в другие типы, если переменная не входит в диапазон integer:

  •  ‘u’ или ‘U’ преобразовывает в формат unsigned data. Например: 33u
  •  ‘l’  или ‘L’ преобразовывает в формат long. Например: 100000L
  •  ‘ul’ или ‘UL’ преобразовывает в формат unsigned long. Например: 32767ul

unsigned integer

Шестой тип, записывается как unsigned int, имеет размер 2 байта и принимает целые значения от 0 до 65535. В контроллере ARDUINO DUE занимает 4 байта и может принимать целые значения от 0 до 4294967295.

Записывается как unsigned int n1=100;— переменной n1 типа unsigned integer присваивается значение 100.

word

Седьмой тип, записывается так же, занимает 2 байта и принимает значения от 0 до 65535. Применяется редко, вместо него обычно используют unsigned integer.

Записывается как word w = 10000;— переменной w типа word присваивается значение 10000.

long

Восьмой тип, записывается так же, занимает 4 байта, принимает целые значения от -2147483648 до 2147483647.

Записывается как long var = 120000; переменной var типа long присваивается значение 120000.

Может использоваться в константах для преобразования типа integer в тип long, для этого в конце числа нужно дописать L и например

int n1=100000L; — преобразует  константу n1 типа integer в тип long и присваивает ей значение 100000.

unsigned long

Девятый тип, занимает как и long 4 байта но, в отличии от него, не может принимать отрицательные значения, хотя верхний предел выше в 2 раза. Принимает значения от 0 до 4294967295.

Записывается как unsigned long var = 120000;  переменной var типа unsigned long присваивается значение 120000.

short

Десятый тип, занимает 2 байта, принимает целые значения от -32768 до 32767.

Записывается как short var = 12000; переменной var типа short присваивается значение 12000.

 float

Одиннадцатый тип, занимает 4 байта, принимает значения с плавающей точкой в пределах от  -3.4028235E+38 до 3.4028235E+38.  Предпочтительно использовать тип double, вместо  float, тем более что занимает он такой же размер- 4 байта, т.к. этот тип выкидывает странные штуки, и если разделить 8.0/4.0, то это вовсе не означает что результат будет равен 2.0. Максимальная точность ограничивается 6-7 разрядами цифр вне зависимости от положения запятой.

Записывается как float var = 3.14157; переменной var типа float присваивается значение 3.14157.

double

Двенадцатый тип, занимает 4 байта (на ARDUINO DUE занимает 8 байт), не имеет ограничений по точности в сравнении с float, принимает значения с плавающей точкой в пределах от  -3.4028235E+38 до 3.4028235E+38.

Записывается как long var = 3.14157; переменной var типа long присваивается значение 3.14157.

 string

Тринадцатый тип. Вообще то встречается 2 типа string- string array (текстовый массив) и String (текстовая переменная).

char Str3[8] = {‘a’, ‘r’, ‘d’, ‘u’, ‘i’, ‘n’, ‘o’, ‘\0’}; — объявляет массив из 8 разрядов с 0 до 7, недостающий 7 разряд- присваивается null.

String stringOne = «Hello String»; — переменной stringOne типа String присваивается значение Hello String.

array

Четырнадцатый тип. Массив.  Можно указывать размер массива в квадратных скобках. Счет начинается с 0, недостающим значениям присваивается null.

int mySensVals[6] = {2, 4, -8, 3, 2}; — массив значений integer.

Можно не указывать разрядность массива, компилятор ARDUINO сам посчитает элементы и выставит правильный размер начиная с 0.

int myPins[] = {2, 4, 8, 3, 6}; — аналогично записи int myPins[4] = {2, 4, 8, 3, 6};


Область применения:

Где же можно применять переменные и где можно обойтись без них.

Прежде всего стоит определиться- сколько раз будет использована переменная. Если она будет использоваться один раз то не стоит ее вводить, гораздо проще просто вставить формулу в то место где должна быть эта переменная. МК просто просчитает формулу и двинется дальше. Если же переменная будет использоваться несколько раз- лучше ввести ее в программу один раз и зарезервировать под нее память нежели МК будет несколько раз высчитывать одни и те же значения- этим вы повысите скорость работы. Еще один совет: при определении переменных желательно указывать в названии ее тип- так вы будете сразу определять какой тип переменной вы используете. Например:

Объявили переменную:

int n1=10000;

Когда вы будете писать программу вы каждый раз будете думать- а какой тип имеет переменная n1? Каждый раз придется искать в коде  где она объявлена, это занимает время и поднимает нервы, в конце концов где нибудь закрадется ошибка, опять отлаживать и т.д. Поэтому гораздо проще было бы написать:

int intn1=10000;

Три первых буквы уже указали ее тип- integer, можете сами определить для себя- указывать только первые буквы типов, например in1— что значит integer n1. Так будет гораздо проще и считается хорошим тоном в программировании.

Основные ошибки при работе с переменными:

  • неправильное присваивание переменным одного типа значений другого типа. Например:

int x=12;

void loop{

x=«Hello String»; — Присваиваем переменной типа integer переменную типа String.

}

  • Выход за пределы значений переменной. Например:

int x= 12568+50000; — максимальное значение integer 32768.

  • Неправильное написание типа переменной. Например:

imt x= 12568; — imt вместо int.

Следующий урок>>

Добавить комментарий