Программирование в среде Robot C. Занятие 3

Содержание

Слайд 2

Взаимодействие с внешним миром

Задачи:
научиться выводить на экран значения, сохранённые в переменных,

Взаимодействие с внешним миром Задачи: научиться выводить на экран значения, сохранённые в
чтобы посмотреть результат работы программ;
научиться сохранять в переменные данные, которые поступили из внешнего мира.

Слайд 3

Взаимодействие с внешним миром

Данные можно получить:
через датчики,
ввести, используя кнопки на

Взаимодействие с внешним миром Данные можно получить: через датчики, ввести, используя кнопки
контроллере,
из других программ,
различных устройств, например, с web-камеры или микрофона, и др.
Но мы не предполагаем использования робота, поэтому ввод данных с внешних устройств рассматривать не будем!
Данные можно вывести:
на экран,
в другой файл.

Слайд 4

Операторы вывода

Существует более десяти операторов вывода данных на дисплей NXT. Сейчас

Операторы вывода Существует более десяти операторов вывода данных на дисплей NXT. Сейчас
мы рассмотрим наиболее частые
nxtDisplayTextLine
nxtDisplayBigTextLine
nxtDisplayCenteredTextLine
nxtDisplayBigCenteredTextLine
Мы в основном будем иметь дело с первой командой. Остальные команды отличаются только:
1) тем, что позволяют выводить данные шрифтом большего размера (Big);
2) тем, что выводимое располагается по центру (Centered).

Слайд 5

Оператор nxtDisplayTextLine

Давайте теперь подробнее разберемся, как устроена и как работает эта

Оператор nxtDisplayTextLine Давайте теперь подробнее разберемся, как устроена и как работает эта
команда.
Выводить информацию мы будем на дисплей NXT. Он имеет 8 строк, которые занумерованы от 0 до 7.
Команда позволяет выводить любой текст и тогда она выглядит так:
nxtDisplayTextLine (n, “string”);
n – обязательный параметр, указывающий номер строки
Команда позволяет выводить форматные данные:
nxtDisplayTextLine (n, “%d”,a);
n – номер строки,
“%d” – формат-строка,
a – данные для вывода.

Слайд 6

Оператор nxtDisplayTextLine

Любой символ в формат-строке относится к одной следующих групп:
символы,

Оператор nxtDisplayTextLine Любой символ в формат-строке относится к одной следующих групп: символы,
которые выводятся на экран без изменений. Например, “Hello!”, “a+b=c”, “ ” (пробел). Русский шрифт выводится не будет.
escape-последовательности. Начинаются с backslash и выглядят так:
\t – cдвигает выводимые данные вправо на одну позицию.
\” – вывод символа "
спецификаторы формата. Спецификаторы формата всегда начинаются с символа %, и предназначены для вывода на экран значений переменных и выражений. Для каждого типа данных есть свой спецификатор формата.

Слайд 7

Оператор nxtDisplayTextLine

Основные спецификаторы формата:
%d, %i  - целые числа %f, %g  - вещественные числа %c         -

Оператор nxtDisplayTextLine Основные спецификаторы формата: %d, %i - целые числа %f, %g
символы
Есть и другие спецификаторы формата. Сами спецификаторы формата на экран не выводятся. Вместо них выводятся данные, которые передаются в функцию nxtDisplayTextLine после строки форматирования.
Функция nxtDisplayTextLine работает следующим образом. Все символы, заключенные в двойные кавычки, кроме управляющих последовательностей и спецификаторов формата, выводятся на экран. Спецификаторы формата во время вывода заменяются на значения, указанные после формат-строки. Причем, если используется несколько спецификаторов формата, то первый спецификатор заменяется на первое значение, расположенное после формат строки, второй – на второе, и т.д.
Посмотрим на примерах.

Слайд 8

Примеры

Примеры

Слайд 9

Оператор nxtDisplayTextLine

Итак, в формат-строке (между кавычками) расположены 1) выводимые символы (sum,

Оператор nxtDisplayTextLine Итак, в формат-строке (между кавычками) расположены 1) выводимые символы (sum,
=, пробелы); 2) спецификаторы формата (%d %c %d %d); 3) escape-последовательности (\t).
По сути, формат строка задаёт некоторый трафарет (шаблон), в который подставляются данные для вывода, в том порядке, в котором они указаны.
Два основных правила, которые нужно соблюдать при работе с функцией nxtDisplayTextLine:
количество спецификаторов формата должно совпадать с количеством данных для вывода
спецификаторы формата должны точно соответствовать типам выводимых данных

Слайд 10

Примеры неправильного использования функции nxtDisplayTextLine

task main()
{
int z = 4; float

Примеры неправильного использования функции nxtDisplayTextLine task main() { int z = 4;
b = 5.4;
nxtDisplayTextLine(1,"%f",z); // нарушено 2 правило
// переменная z целого типа, а команда форматирования %f
// предназначена для // вывода переменных типа float
nxtDisplayTextLine(2, "%d",z, b); //нарушено 1 правило нет
// команды форматирования для переменной b.
}

Слайд 11

Модификаторы формата

При выводе вещественных чисел через спецификатор %f на экране появятся числа

Модификаторы формата При выводе вещественных чисел через спецификатор %f на экране появятся
с шестью знаками после запятой. Обычно такая точность не нужна. К счастью, этим можно управлять. Для этого предназначены модификаторы формата.
Модификаторы формата записываются между символом % и буквой используемого типа: “%8.3f ”
Первое число обозначает ширину поля, выделяемого для записи числа. Второе число обозначает точность, с которой мы хотим вывести данное вещественное число. В примере под вещественное число мы выделяем 8 символов и хотим видеть 3 знака после запятой.
Если указанного в ширине количества позиций нам не хватает для вывода числа, то ширина поля увеличивается автоматически, до минимально-возможного количества позиций.
У первого числа может спереди еще стоять знак минус, например %-8.3f. Этот минус говорит о том, что необходимо выровнять число по левому краю используемой области.
Для иллюстрации описанных возможностей модификаторов формата, напишем небольшую программу.

Слайд 12

Пример: модификаторы формата

task main(){ int a=777; float b=150.5;
nxtDisplayTextLine(0,“*%d*", a);
// никаких

Пример: модификаторы формата task main(){ int a=777; float b=150.5; nxtDisplayTextLine(0,“*%d*", a); //
модификаторов нет, вывод использует минимальную ширину поля
nxtDisplayTextLine(1,“*%5d*", a);
// ширина 5 позиций, выравнивание по правому краю
nxtDisplayTextLine(2,“*%-5d*", a);
// ширина 5 позиций, выравнивание по левому краю
nxtDisplayTextLine(3,“*%f*", b);
// никаких модификаторов нет, выведет используя минимальную ширину поля и
// стандартную точность 6 знаков
nxtDisplayTextLine(4,“*%-8.3f*", b);
// ширина 8 позиций, выравнивание по левому краю, 3 знака после запятой
nxtDisplayTextLine(5,“*%8.2f*", b);
// ширина 8 позиций, 2 знака после запятой, выравнивание по правому краю
nxtDisplayTextLine(6,“*%4.3f*", b);
// число позиций 4,точность 3 знака после запятой, но этого мало поэтому ширина поля
// увеличивается до минимально-возможного значения
}
Знаки * стоят специально вокруг каждого числа, чтобы можно было увидеть, что означает ширина поля для вывода и как работает выравнивание по левому краю.

Слайд 13

Пример: модификаторы формата

Пример: модификаторы формата

Слайд 14

Первая программа

Теперь мы напишем первую программу на RobotC. Обычно, программу загружают на

Первая программа Теперь мы напишем первую программу на RobotC. Обычно, программу загружают
контроллер, но мы сейчас учимся программировать без использования робота. Поэтому мы будем эмулировать работу контроллера на компьютере.
Запускаем RobotC.
Заходим на вкладку File->New->New file. Перед нами чистый экран.
Не забываем перейти на английскую раскладку. Набираем программу из первого разобранного примера.
Когда всё набрали. Нажимаем F7 – компиляция программы. Среда просит придумать название программы и папку, куда будет сохраняться она.
После исправления ошибок, наконец программа написана правильно!

Слайд 15

Первая программа

Выбираем Robot->Compiler Target-> ставим галочку Virtual Worlds

Первая программа Выбираем Robot->Compiler Target-> ставим галочку Virtual Worlds

Слайд 16

Первая программа

После этого нажимаем F5 – запуск программы. Сейчас система, возможно, выдаст

Первая программа После этого нажимаем F5 – запуск программы. Сейчас система, возможно,
сообщения об ошибке. Игнорируем его.
Robot->Debugger Windows->NXT Remote Screen

Слайд 17

Первая программа

Снова переключаемся на эмулятор, но теперь после запуска программы у нас

Первая программа Снова переключаемся на эмулятор, но теперь после запуска программы у
будет появляться экран NXT

Слайд 18

Первая программа

Теперь можно запускать программу такую, как на слайде 8. Нажимаем F5.

Первая программа Теперь можно запускать программу такую, как на слайде 8. Нажимаем
Затем на появившемся окне Start. В результате должно появиться то, что на слайде 8.
В качестве задания надо набрать все программы, которые были на сегодняшнем уроке. Запустить их и убедиться, что на экране появляется тоже, что и в примерах.
Можно поэкспериментировать и попробовать выводить различные символы и числа.
Посмотрите как работают операторы nxtDisplayBigTextLine, nxtDisplayCenteredTextLine, nxtDisplayBigCenteredTextLine