Основы языка программирования RobotC
Переменные и типы данных
Переменные и типы данных
Переменные и типы данных
Пример программы
Строки
Инкремент и декремент
Приоритет выполнения операций
УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ Оператор присваивания
Примеры присваиваний
Варианты оператора
Операторы сравнения
Пример сравнения
Циклы
Цикл с предусловием
Бесконечный цикл
Цикл с постусловием
Цикл cо счетчиком
Оператор прерывания
465.50K
Категория: ПрограммированиеПрограммирование

Основы языка программирования 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 прерывает только самый
внутренний.
English     Русский Правила