2013年11月9日土曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の10章(Cプリプロセッサ)、10.2(条件付きコンパイル)、10.3(インクルードファイル)、10.4(パラメータをとるマクロ)、10.5(高度な機能)、10.8(プログラミング実習)実習10-3をDartで解いてみる。

その他参考書籍

実習 10-3.

コード

sample.dart

import 'dart:html';

void main(){
  var run = querySelector('#run'),
      clear = querySelector('#clear'),
      pre0 = querySelector('#pre0');
  run.onClick.listen((MouseEvent event){
    var result = window.navigator.userAgent + '\n';
    try{
    numChars.forEach(
        (e) => result += isHex(e) ? '$e: 16進数。\n': '$e: 16進数ではない。\n');
    upperLetters.forEach((e) =>
        result += '$e: ${isHex(e) ? '16進数。': '16進数ではない。'}\n');
    lowerLetters.forEach((e) =>
        result += '$e: ${isHex(e) ? '16進数。': '16進数ではない。'}\n');
    } catch (e){
      result += e;
    } finally {
        pre0.text = result;
    }
  });
  clear.onClick.listen((MouseEvent event) => pre0.text = '');
}

List<String> numChars = new List.generate(10, (int index) => index.toString());
List<String> lowerLetters = new List.generate(10,
    (int index) => new String.fromCharCode('a'.codeUnitAt(0) + index));
List<String> upperLetters = new List.generate(10,
    (int index) => new String.fromCharCode('A'.codeUnitAt(0) + index));

bool isDigit(String s){
  if (s.length != 1){
    throw 'isDigit: 1文字';
  }
  return s.length == 1 && s.compareTo('0') >= 0 && s.compareTo('9') <= 0; 
}
bool isHex(String s){
  if (s.length != 1){
    throw 'isHex: 1文字';
  }
  return isDigit(s) || (s.compareTo('A') >= 0 && s.compareTo('F') <= 0) ||
      (s.compareTo('a') >= 0 && s.compareTo('f') <= 0);
}












						

0 コメント:

コメントを投稿