]]> ]]>
Править | Обсудить | История

Dart

Дата создания:
2011
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
.dart
Реализации и версии (свернуть все | развернуть все):
Язык программирования

Dart — язык программирования для веб-разработки с открытым исходным кодом, созданный Google. Цель создания языка — заменить JavaScript в роли универсального языка веб-разработки.

В настоящее время существует три способа запустить программу на Dart:

  • скомпилировать в JavaScript при помощи dart2js и запустить результат в любом браузере.
  • выполнить код напрямую в Dartium — версии Chromium со встроенной поддержкой Dart.
  • использовать Dart VM — отдельную виртуальную машину, входящую в Dart SDK и позволяющую запускать программы в консольном режиме.

Элементы синтаксиса:

Комментарий до конца строки //
Комментарии, которые не могут быть вложенными /* ... */
Регистрозависимость да
Регулярное выражение идентификатора переменной [_a-zA-Z][_a-zA-Z0-9]*
Присваивание значения переменной varname = value
Объявление переменной type variable
Объявление переменной с присваиванием значения type variable = value
Группировка выражений ( ... )
Блок { ... }
Равенство ==
Неравенство !=
Сравнение < > <= >=
Определение функции returntype f(type1 p1, type2 p2, ...)
Вызов функции f(a, b, ...)
Вызов функции без параметров f()
Последовательность ,
Если - то if (condition) ...
Если - то - иначе if (condition) ... else ...
Бесконечный цикл while (true) ...
Цикл с предусловием while (condition) ...
Цикл с постусловием do ...while (!condition)
Цикл for - next для диапазона целых чисел с инкрементом на 1 for (int i = 1; i <= 10; i++) ...
Цикл for - next для диапазона целых чисел с декрементом на 1 for (int i = 10; i >= 1; i--) ...

Логотип Dart
Логотип Dart

Примеры:

Hello, World!:

Пример для версий Dart 1.1.1

=> expr — сокращение для { return expr; }

main() => print("Hello, World!");

Факториал:

Пример для версий Dart 1.1.1

Используется рекурсивное определение факториала. Тип данных int позволяет хранить целые числа произвольной величины.

int factorial(int n) => n == 0 ? 1 : n * factorial(n - 1);

main() {
  for (int i = 0; i <= 16; ++i) {
    print('$i! = ${factorial(i)}');
  }
}

Факториал:

Пример для версий Dart 1.1.1

Используется итеративное вычисление факториала.

main() {
  int fact = 1;
  for (int i = 0; i <= 16; ++i, fact *= i) {
    print('$i! = $fact');
  }
}

Числа Фибоначчи:

Пример для версий Dart 1.1.1

Используется рекурсивное определение чисел Фибоначчи.

int fibonacci(int n) => n <= 2 ? 1 : fibonacci(n - 2) + fibonacci (n - 1);

main() {
  String output = "";
  for (int i = 1; i <= 16; ++i) {
    output += fibonacci(i).toString() + ", ";
  }
  print(output + "...");
}

Квадратное уравнение:

Пример для версий Dart 1.1.1
import 'dart:io';
import 'dart:math' show sqrt;

int readInt() {
  String input = stdin.readLineSync();
  return int.parse(input);
}

main() {
  int A, B, C;
  try {
    A = readInt();
    B = readInt();
    C = readInt();
  }
  on FormatException {
    print("Coefficient is not a number.");
    return;
  }
  if (A == 0) {
    print("Not a quadratic equation.");
    return;
  }
  int D = B * B - 4 * A * C;
  double p1 = - B / 2.0 / A;
  double p2 = sqrt(D.abs()) / 2.0 / A;
  if (D == 0) {
    print("x = $p1");
  } else {
    if (D > 0) {
      print("x1 = ${p1 + p2}");
      print("x2 = ${p1 - p2}");
    } else {
      print("x1 = ($p1, $p2)");
      print("x2 = ($p1, ${-p2})");
    }
  }
}

CamelCase:

Пример для версий Dart 1.1.1

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

import 'dart:io';

main() {
  String text = stdin.readLineSync().toLowerCase();
  String capitalize(Match m) => m[0].substring(0, 1).toUpperCase() + m[0].substring(1);
  String skip(String s) => "";
  print(text.splitMapJoin(new RegExp(r'[a-z]+'), onMatch: capitalize, onNonMatch: skip));  
}

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам