Similar presentations:
Основы языка программирования RobotC
1. Основы языка программирования RobotC
2. Переменные и типы данных
Название (имя) - это идентификационная строка, которуюпрограммист использует для того, чтобы обратиться к переменной в
программе. Имена переменных в RobotC должны быть составлены по
следующим правилам:
имена записываются латинскими буквами, цифрами и знаком нижнего
подчеркивания;
имена не должны содержать пробелов;
имена не должны содержать специальные символы;
имя не может начинаться с цифры;
имя не может быть зарезервированным словом
имена чувствительны к регистру, например, имена apple и Apple
определяют две различных переменных.
3. Переменные и типы данных
Тип данныхДиапазон значений
bool
Логическое значение; или true или false.
Значение false соответствует нулю (0), а true соответствует
любому не нулевому значению
byte
Целые числа от -128 до 127
char
Целые числа от -128 до 127. Может интерпретироваться как
символьная переменная.
Например: 42 = 'B' и наоборот
float
Число с плавающей точкой (десятичное) со следующими
ограничениями длины и точности:
ТочностьДлинна
0.####от 0.0000 до +2048.0000
0.###от 0.000 до +32768.000
0.##от 0.00 до +262144.00
0.#от 0.0 до +2097200.0
4. Переменные и типы данных
Тип данныхДиапазон значений
long
Целое число от -2147483648 до 2147483647
int,
short,
word
Целое число от -32768 до 32767
string
Последовательность символов (строка)
ubyte
Unsigned byte (только положительное) от 0 до 255
void
Тип данных, обозначающий, что функция не возвращает никакого
значения
5. Пример программы
_ _task main () {
int n1; // под переменную n1 выделено 2 байта памяти
n1 = 10; // n1 инициализирована значением 10
{// внутренний блок, в этом блоке n1 имеет значение 10 }
{// второй внутренний блок
int n1;
n1 = -2;
// собственная декларация для n1, до конца блока n1 имеет значение -2 }
// этот блок использует первую декларацию
// n1 имеет значение 10
} }
6. Строки
Ст
р
о
к
а
с
и
м
в
о
'\0' — нуль-символ
''A'' — строка — 2 байта
'A' — символ — 1 байт
л
о
в
\0
7. Инкремент и декремент
_ _int c = 0;
int b = 5;
int a;
a = b – c++;
_ _
int a = 0;
int b,c;
b = a++; // b имеет значение 0, a – значение 1
с = --a; // c имеет значение 0, a – значение 0
a=++c;
// a имеет значение 1, c – значение 1
b=++c++; // b имеет значение 2, c – значение 3
8. Приоритет выполнения операций
№Операции
( )
1
!
2
~
[ ]
+
->
-
++
.*
3
*
4
/
%
-
+
5
.
--
->*
<<
<
>>
<=
>=
==
!=
>
9
&
10
^
11
|
12
&&
13
||
14
?: (условная операция)
16
=
*=
/=
%=
*
(аддитивные бинарные операции)
8
15
&
(мультипликативные бинарные операции)
6
7
::
+=
-=
&=
, (операция «запятая»)
^=
!=
<<=
>>=
9. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ Оператор присваивания
_ _task main () {
int n1 , n2;
string name = "Joe Strummer ";
string band = "The Clash ";
n1 = 3;
n2 = n1;
n1 = 4;
name = band;
}
10. Примеры присваиваний
_ _int count = 0;
count = count + 1;
_ _
int count = 0;
count += 1;
11. Варианты оператора
ОператорСинтаксис
Описание
=
a=b
Значение переменной b скопировать в a
+=
a += b
Результат операции a + b скопировать в a
-=
a -= b
Результат операции a - b скопировать в a
/=
a /= b
Результат операции a / b скопировать в a
*=
a *= b
Результат операции a * b скопировать в a
%=
a %= b
Результат операции a % b скопировать в a
12. Операторы сравнения
>= - результат будет истинным, если значение в левойчасти больше или равно значению в правой, ложным в
противном случае.
> - результат будет истинным, если значение в левой части
больше, чем в правой, иначе ложно.
== - результат будет истинным, если левая часть равна
правой, в противном случае ложно.
<= - результат будет истинным, если значение в левой
части меньше или равно значению в правой, иначе ложным.
< - результат будет истинным, если значение в левой части
меньше, чем в правой, иначе ложно.
!= - результат будет истинным, если левая сторона не
равна правой, в противном случае истинно.
13. Пример сравнения
_ _float x=5.2, y=0.0, z =10.0;
bool s;
s = (x >= y) && (x <= z);
Значение s в конце фрагмента – истина
(true).
14. Циклы
• Со счетчиком (for)• С предусловием (while)
• С постусловием (do while)
15. Цикл с предусловием
_ _while([predicate]){
// тело цикла
}
_ _
# pragma config(Sensor, S1, trigger, sensorTouch)
# pragma config(Sensor, S2, light, sensorLightInactive)
task main() {
while (!(SensorValue[ trigger ])) {
nxtDisplayCenteredBigTextLine(2,"%d", SensorValue[light]);
// пока кнопка не нажата,
// выводить значение датчика света
wait10Msec(5);
}}
16. Бесконечный цикл
# pragma config(Sensor, S1, trigger, sensorTouch)task main(){
int count =0;
nxtDisplayCenteredBigTextLine(3,"%d",count);
while(1){
while(!(SensorValue[trigger])){}
count++;
while((SensorValue[trigger])){}
eraseDisplay();
nxtDisplayCenteredBigTextLine(3,"%d",count);
}}
17. Цикл с постусловием
_ _do{statements} while(expression)
Особенность конструкции в том, что тело цикла всегда выполняется хотя бы
один раз.
__
int b = 0;
do
{
motor[rightMotor] = 50; //запуск правого мотора
motor[leftMotor]
= 50; //запуск левого мотора
b++;
wait1Msec(3000);
}while(b < 3); // проверка предиката
motor[rightMotor] = 0; // остановить правый мотор
motor[leftMotor] = 0; // остановить левый мотор
18. Цикл cо счетчиком
_ _for([initialization];[condition];[increment]){
// тело цикла}
_ _
task main(){
int i;
int m[10];
for (i=0;i<=9;i++){
m[i] = i*i;
}
}
19. Оператор прерывания
Если во время выполнения тела циклавстречается оператор break, используемый
также для прерывания выполнения условных
конструкций, выполнение программы сразу же
переходит к первой команде после цикла.
В случае использования вложенных циклов,
оператор break прерывает только самый
внутренний.