]]> ]]>

Dart

Реализация языка программирования Dart

Платформа Dart включает в себя:

  • dart — отдельную виртуальную машину
  • dart2js — компилятор в JavaScript
  • dartanalyzer — статический анализатор
  • pub — пакетный менеджер
  • dartdoc — генератор документации API
  • Dart Editor — среда разработки
  • Dartium — специальная версия Chromium, включающая в себя Dart VM

Примеры:

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

]]>

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