Для начинающих путь программиста важно понять, что любая программа это последовательность изменения данных. Данные в языках программирования, которые можно изменять, называются переменными, а сами действия функциями, примитивные действия, такие как сложение, вычитание, умножение и так далее, называются операциями.
Чтобы работать с переменными их надо сначала объявить. Вот так будет выглядеть объявление в Dart:
var peremennaya;

Здесь
var – зарезервированное слово, означающее, что следующее слово будет именем новой переменной,
peremennaya – имя переменной, которое мы будем использовать, оно может состоять из латинских букв и символа подчеркивания, регистр имеет значение, т.е. perem и Perem это две разные переменные,
; — знак означающий конец строки кода.

После объявления переменной ей надо задать значение, эта операция называется присвоением. И выглядит она вот так:
peremennaya = 1;

Здесь
peremennaya – это имя одной из ранее объявленных нами переменных
= — знак, перед которым стоит одна и только одна переменная, которой мы хотим задать значение, а после него идёт значение, которое мы хотим дать.

Давайте попробуем написать программу, которая будет складывать два значения.
var yablokiPeti;
yablokiPeti = 8;
var yablokiVasi;
yablokiVasi = 9;
var vsegoYablok;
vsegoYablok = yablokiPeti + yablokiVasi;

Заметьте, что после знака "=" идёт целое выражение, а не просто значение, перед тем как присвоить значение переменной vsegoYablok, будет вычислено выражение справа от знака "=" и до знака ";", в нашем случае будет сделано следующее:
yablokiPeti заменится на 8,
yablokiVasi заменится на 9,
затем 8 + 9 будет вычислено,
и полученный результат 17 будет присвоен переменной vsegoYablok.
Мы могли бы записать эту программу иначе:
var vsegoYablok = 8 + 9;

Результат был бы тот же. Такие числа, программисты называют магическими, они взялись неизвестно откуда и неизвестно что означают, это считается плохой практикой. Вы же всегда должны давать осмысленные имена значениям.

Помимо чисел нам понадобятся строки, другими словами, текст. Строки записываются так:
"Всё, что внутри двойных кавычек, является строкой"

Эту строку мы можем присвоить переменной.
var stroka;
stroka = "Privet, eto stroka";


Строки тоже можно складывать, но нельзя вычитать, делить или умножать.
var nachalo;
nachalo = "Nachalo ";
var konec;
konec = "i konec";
var celaya;
celaya = nachalo + konec;

После того как эта программа сработает, celaya будет содержать строку «Nachalo i konec».

Теперь давайте воспользуемся функцией и напечатаем что-то в консоль.
var privet;
privet = "Privet konsol";
print(privet);

Здесь
print – имя функции, которую мы вызываем, именно эта функция описана создателями языка Dart, она уже создана и нам надо только ею пользоваться, нужно помнить только одно, эта функция работает только если ей передать переменную, значение которой строка, чтобы напечатать число, его надо сначала превратить в строку,
( — знак после которого через запятую перечислены переменные, которые мы отдаём в функцию для работы, эти переменные называются аргументами функции,
) — знак означающий конец списка переменных.

Следующим шагом мы опробуем на практике полученные знания. Для этого перейдите на сайт: dartpad.dartlang.org
и удалите весь код, что в левой части экрана.
Теперь введите туда следующие строки:
main()
{
}

Таким образом объявляется функция, это такие сгруппированные по смыслу действия.
main – это имя объявляемой функции, в данном случае это особое имя функции, оно говорит что именно с этой функции будет начинаться работа программы,
() — внутри скобок аргументы функции, в данном случае их нет,
{} — внутри фигурных скобок находится тело функции, это то место где описаны все действия, которые производит эта функция, ни одно действие не может быть совершено вне функции(за фигурными скобками), за фигурными скобками могут быть только объявления переменных и функций.
Можно нажать кнопку «Run», программа будет выполнена, но она ничего не делает.


В Dart есть одна хитрость, которая позволит сэкономить пару строк кода. Мы можем вместо:
var peremennaya;
peremennaya = 1;

написать следующее:
var peremennaya = 1;

Обе записи абсолютно эквивалентны.

Зная эту хитрость, давайте заставим программу что-то делать:
main()
{
	var yablokiPeti = 7;
	var yablokiVasi = 5;
	var vsegoYablok = yablokiPeti + yablokiVasi;
}

Нажимаем Run и ничего не происходит, на самом деле программа работает и считает сколько всего яблок, но мы этого не видим. Исправим это:

main()
{
	var yablokiPeti = 7;
	var yablokiVasi = 5;
	var vsegoYablok = yablokiPeti + yablokiVasi;
	var vsegoYablokStroka = vsegoYablok.toString();
	print(vsegoYablokStroka);
}

Жмём Run и справа в консоли появляется число 12.

Заметьте, мы только что, перед тем как напечатать число, превратили его в строку. Поставив точку после переменной, перед точкой не должно быть никаких пробелов и других знаков, кроме имени самой переменной, мы получили доступ к тем функциям, которые относятся именно к этой переменной, все они написаны создателями Dart и нам остаётся только пользоваться ими. toString это имя функции, которую мы вызвали, а пустые скобки оставили потому, что этой функции не нужны агрументы.

Уже лучше, но давайте сделаем так, чтобы выведенное число имело хоть какой-то смысл для тех, кто не знает кода нашей программы.

main()
{
	var yablokiPeti = 7;
	var yablokiVasi = 5;
	var vsegoYablok = yablokiPeti + yablokiVasi;
	var strokaDlyaPechati = "U Peti " + yablokiPeti.toString() + " yablok, u Vasi " + yablokiVasi.toString() + " yablok, a vsego u nih " + vsegoYablok.toString() + " yablok";
	print(strokaDlyaPechati);
}


Заметьте, что числовые переменные надо превращать в строки перед тем как складывать со строками. На этом хотелось бы закончить первый урок.

Комментарии (18)


  1. Ashot
    23.10.2015 23:53
    +14

    Пост вообще не про Dart, а про самые-самые основы для первых шагов в программировании. Для первого занятия по программированию на уроке информатики может подойти, но никак не для поста на хабре.


    1. Vilyx
      24.10.2015 00:04
      -8

      Наверное поэтому в заголовке написано «для чайников». Если на хабре нельзя размещать посты для «чайников», администраторы добавят это в правила хабра, я там такого не видел. Если лично вам не нравятся подобные посты, пройдите мимо, никто же не заставляет читать.


      1. Ashot
        24.10.2015 00:09
        +7

        Может я как-то не так выразился, вы не подумайте, что я прям так уж с претензией.
        Просто хабр — сообщество ИТ специалистов. Вы правда думаете, что этому сообществу нужно объяснять что такое переменная, как её определить и присвоить значение, про оператор «+» и т.д.?


        1. Vilyx
          24.10.2015 01:02
          -3

          Я думал, что хабр читают не только IT специалисты, но и те, кто хочет ими стать. Спасибо, вы меня разубедили.


      1. saggid
        24.10.2015 00:12
        +7

        Вам правильное замечание сделали) Основы программирования знает любой программист. Думаю, хабраюзеров больше заинтересуют различия между Dart и нативным JS. Как решаются проблемы в Dart, чем помогает строгая типизация, и так далее)

        А то, что написали вы — это очень хорошо для новичка в программировании, безусловно. Но это 100% не аудитория хабра)


        1. Vilyx
          24.10.2015 01:07
          -3

          Как я уже сказал чуть ранее, я думал, что на этом ресурсе бывают и те, кто с такими основами не знаком. Если предположить, что аудитория хабра настолько высокообразованна, то странно предполагать, что она не знает в чем отличия строгой типизации от нестрогой или что она не знает английского языка достаточно чтобы комфортно прочитать об отличиях от JS на официальном сайте языка.


      1. k12th
        24.10.2015 00:25
        +5

        Если бы это был Haskell или там LISP или %имяЭзотерическогоЯзыка% «для чайников», было бы уместно, вполне можно быть крутым сишником, но чайником в ML. Если бы статья была «асинхронность в Dart для чайников», то опять же никаких претензий. Но разжевывать азы информатики на хабре смысла нет. Никто не запрещает, но смысла нет.
        Народ с претензией отнесся потому, что этим постом вы как намекаете, что хабравчанам надо разжевывать, что такое переменные и строки.
        А аргумент «не любо — не слушай» в данном случае не валиден. Давайте тогда постить на хабр котиков и тупак из МДК, а чо, никто ж не заставляет читать.


        1. Vilyx
          24.10.2015 01:13
          -4

          Котиков и тупаков запрещено постить правилами хабра. Разжевывать на хабре основы, возможно, не имеет смысла. Но я бы с вами поспорил, этот ресурс читают в том числе учителя информатики, друзья тех, кто хочет научиться программирования и при наличии таких статей им не придётся писать самим что-то подобное чтобы что-то объяснить, а можно будет отправить ссылку на хабр. В конце концов распечатать и принести на урок и прочитать в виде лекции. Пойду запостю эту статью на сайте с котиками, там уж точно сидит аудитория, которой нужны основы информатики.


  1. dixoNich
    24.10.2015 00:34
    +6

    var peremennaya;
    peremennaya = 1;


    Блин, и правда, хитрость! Нигде такого не видел.

    А если без сарказма, то просто не понимаю, как реагировать на такую статью. Статья о том, что мне рассказывали N лет назад в школе, просто вместо var было что-то другое и в место main было что-то другое.
    Причём тут Dart — непонятно.
    Статья ради статьи.


    1. Vilyx
      24.10.2015 01:20
      -2

      То, что вам кажется очевидным, для других может быть секретом. Знай вы только Pascal, не шутили бы так.


      1. dixoNich
        24.10.2015 02:55
        +2

        Ну, предположим, знаю я только Pascal, и? В чём подвох? В паскале как-то по-другому переменные объявляются? Функции? Ну, глобальное отличие в чём? Чем парадигма Pascal отличается от парадигмы Dart?


        1. Vilyx
          24.10.2015 03:00
          -2

          Блин, и правда, хитрость! Нигде такого не видел.

          Мне интересно, где вы в Pascal такое увидели.


  1. GDApsy
    24.10.2015 01:48

    Честно говоря больше интересует вопрос как у Dart с коммьюнити и поддержкой в браузерах\компиляцией в JS?


    1. Vilyx
      24.10.2015 01:53

      Комьюнити дарта в гуглплюс, отвечают, помогают, меня еще ни разу не игнорировали когда возникала проблема. Нативной поддрежки в браузерах не будет, это уже подтвердили, компиляция в JS идёт без проблем. У меня встретились только один раз, когда компилил проект с Polymer, но много воды с тех пор утекло, Polymer стал 1.0, но я не проверял.


  1. zxcabs
    24.10.2015 02:21
    +2

    Лучше бы сказали зачем он нужен когда сам js начинает сбрасывать костыли и шагать в верном направлении, плюс есть много его подмножеств, в том числе и со строгой типизацией.

    А рассказывать о том как объявить переменную и как сложить две переменные, это простите ничего не сказать про дарт. Причем «чайники» так и не поймут нафига он нужен, зачем что то компилировать, если все точно так же есть в нативном js без всякой там компиляции, а займет в 100 раз меньше кода.


    1. Vilyx
      24.10.2015 03:05

      Вам сюда: Зачем нужен Dart. В той статье я подробно написал что и зачем. А в этой я хотел заполнить пробел, потому как, в русскоязычном сегменте нет ни одного урока о Dart для тех, кто вообще программировать не умеет.


  1. StrangerInRed
    24.10.2015 06:56
    +1

    О, Сатана, зачем же транслит?
    Первое что надо выучить для программирования — английский.


  1. stranger777
    24.10.2015 10:27

    Понять замысел можно. Когда-то я был на хабре гостем (вообще не пользователем, ни в каком виде) и только и делал, что молча читал статьи. У хабра хорошие позиции в поисковиках, так что да, эта статья могла бы быть полезной в смысле популяризации языка. Но коли уж материалов по дарту в русскоязычном сегменте мало, то, на мой взгляд, начинать надо было с установки языка. JS, в отличие от дарта, установки не требует, посему с инм-то можно начинать с места в карьер.
    «Православная» установка дарта предполагает Chocolatey или Dartium. Внимание, вопрос: знает ли «абстрактный чайник», которому посвящена статья (и который, как предполагается, не знает про переменные), про Dartium или Chocolatey? Ответ очевиден.