Слайд 1Основы языка программирования RobotC
Слайд 2Переменные и типы данных
Название (имя) - это идентификационная строка, которую программист
использует для того, чтобы обратиться к переменной в программе. Имена переменных в RobotC должны быть составлены по следующим правилам:
имена записываются латинскими буквами, цифрами и знаком нижнего подчеркивания;
имена не должны содержать пробелов;
имена не должны содержать специальные символы;
имя не может начинаться с цифры;
имя не может быть зарезервированным словом
имена чувствительны к регистру, например, имена apple и Apple определяют две различных переменных.
Слайд 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 байт
Слайд 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Приоритет выполнения операций
Слайд 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;
Слайд 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 прерывает только самый внутренний.