Блог им. stanislav_g_9yc
Как только вы поймете переменные и функции, вы узнаете, как работает сценарий. Точно так же, как объявляются переменные, вы должны объявить функции, прежде чем сможете их использовать. Вот небольшой пример объявления функции:
function addiere() { var a, b, c; a = 3; b = 5; c = a + b; }
Функция — это не что иное, как набор деклараций и инструкций, которые затем поочередно выполняются компьютером. Давайте рассмотрим некоторые свойства функций:
► Функция объявляется словом function, за которым следует имя функции и пара скобок ( ). Скобки используются для передачи дополнительных переменных в функцию; подробнее об этом позже. В нашем случае мы не передавали никаких переменных, поэтому скобки пусты.
► Тело функции (список инструкций) должно быть заключено в фигурные скобки { }. Тело состоит из одной или нескольких строк кода, которые могут содержать объявления переменных и утверждения. Для ясности программисты отступают от кода в теле функции на несколько пробелов, чтобы было понятно, что он находится внутри чего-то. Кстати, дополнительные пробелы игнорируются в C, поэтому вы можете поместить их в любом месте кода.
► К именам функций применяются те же соглашения, что и к именам переменных. Однако не следует давать одно и то же имя переменной и функции.
Если вы хотите взломать фондовый рынок, надеюсь, вы можете мысленно конвертировать евро в доллары по курсу 1,36. Что, вы не можете? Хорошо, тогда давайте напишем функцию, которая конвертирует 500 евро в доллары. Итак, мы пишем слово function, а затем имя функции; назовем ее euro_to_dollar:
function euro_to_dollar() { //Быстрая проверка: скобки после имени функции не забыты, и первая фигурная скобка уже есть. В функции нам понадобятся некоторые переменные, которые мы объявим сейчас: var Euro = 500; // Сумма в евро для конвертации var Kurs = 1.36; //Пока ничего нового. Мы объявили две переменные var и присвоили им начальные значения. Как мне теперь сказать компьютеру, чтобы он конвертировал евро в доллары? <br /> //Как бы я сделал это с помощью калькулятора? Я бы ввел что-то вроде этого: 500 * 1.36 //Если мы используем переменные вместо чисел, это будет выглядеть следующим образом: Euro * Kurs //Поэтому давайте закончим объявление нашей функции следующим образом: var Dollar = Euro * Kurs; printf("%.f Euro sind %.f Dollar.", Euro, Dollar); }
Мы также подумали о второй фигурной скобке, так что тело функции теперь находится между двумя скобками. Давайте проверим это прямо сейчас. Запустите Zorro и выберите [Новый сценарий] в самом низу окна прокрутки сценариев. Подождите, пока редактор не откроется с новым пустым файлом. Затем впишите в него следующие строки:
function euro_to_dollar() { var Euro = 500; // Сумма в евро для конвертации var Kurs = 1.36; var Dollar = Euro * Kurs; printf("%.f Euro sind %.f Dollar.", Euro, Dollar); }
Теперь сохраните файл (File/Save As) в папке Strategy в Zorro под новым именем, которое должно заканчиваться на ".c", например, «EuroDollar.c». Если теперь вы откроете окно прокрутки сценария Zorro, вы увидите ваш новый сценарий. Выберите его и нажмите [Test].
Что это значит сейчас? Всегда ли сценарию нужна функция main или run? Действительно, main — это предопределенное имя функции. Главная функция автоматически выполняется при запуске сценария. Функция с именем run, с другой стороны, является не обычной частью языка C, а особенностью Zorro; она содержит торговую стратегию и автоматически выполняется один раз за период бара. Если в сценарии нет ни функции main, ни функции run, Zorro предполагает, что вы допустили ошибку.
Поэтому дайте скрипту то, что ему нужно, и добавьте следующие строки в конце:
function main() { euro_to_dollar(); }
Эта функция main, очевидно, очень короткая — она содержит только один оператор для выполнения функции euro_to_dollar — или «call» на жаргоне программистов. Чтобы вызвать функцию из другой функции, очевидно, нужно написать только имя функции, за которым следуют две скобки и обычная точка с запятой для завершения. Доказательство:
С помощью функций можно добавлять в язык программирования любые новые команды — это все равно что придумывать новые слова для языка. Важный совет: объявляйте функцию перед строкой, в которой она вызывается. Это происходит потому, что компилятор читает код как страницу книги, сверху вниз. Если бы мы написали сценарий наоборот:
function main() { euro_to_dollar(); } function euro_to_dollar() { ... }
компилятор говорит следующее: Итак, вот функция main. Она будет выполняться каждый раз. Но что это говорит — вызов euro_to dollar()? Этого я еще не знаю. Я не могу вызвать то, чего не знаю. Я выдал сообщение об ошибке и на этом закончил.
Кстати, при написании скриптов вы часто будете видеть сообщения об ошибках компилятора — это случается постоянно даже с опытными программистами. Иногда забывается декларация, иногда — пропущенная точка с запятой или незакрытая скобка. Привыкайте к этому. Компилятор обычно прямо говорит вам, что именно и в какой строке неправильно. Вам не нужна докторская степень, чтобы разобраться с ошибками компилятора.
Краткое резюме:
► Мы определяем простые функции через "function Name (...) {...}".
► Если функция имеет имя main или run, она выполняется автоматически. Все остальные функции должны вызываться из уже запущенной функции.
► Не паникуйте из-за сообщений об ошибках компилятора — их почти всегда легко обнаружить и исправить в коде. Не круто просить помощи с ошибками компилятора на форуме программистов!
Продолжение следует...