このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1269438098/744
#  [1]プログラミング演習 
#  [2]asciiコード表を出力しなさい。(main関数、プロトタイプ宣言、関数定義を全て書くこと。) 
#  [3]windowsでコンパイラはborland C++ 5.5.1、C言語です。 
#  [4]火曜日まで 
#   
#  よろしくお願いします。 
# 

asciiコード表 :-
        asciiコード表先頭見出し,
        for(0,M,15),
        二進数(4,M,[_m1,_m2,_m3,_m4]),
        write_formatted('%01d%01d%01d%01d %4d ',[_m1,_m2,_m3,_m4,M]),
        for(0,N,7),
        asciiコード表行表示(M,N),
        N = 7,
        write('\n'),
        M = 15.

asciiコード表先頭見出し :-
        asciiコード表文字列最大byte長(_asciiコード表文字列最大byte長),
        _asciiコード表文字列最大byte長_2 is _asciiコード表文字列最大byte長 + 2,
        for(0,N1,7),
        二進数(4,7,[_n1,_n2,_n3,_n4]),
        asciiコード表先頭見出し_1(_asciiコード表文字列最大byte長_2,N1,_n1,_n2,_n3,_n4),
        N1 = 7,
        write('\n'),
        for(0,N2,7),
        asciiコード表先頭見出し_2(N2),
        N1 = 7,
        write('\n'),!.

asciiコード表先頭見出し_1(_欄の枠,N,_n1,_n2,_n3,_n4) :-
        N >= 0,N =< 1,
        write_formatted_atom('%01d%01d%01d%01d',[_n1,_n2,_n3,_n4],A),
        文字列を欄の中心に据えて表示(_欄の枠,A),!.        
asciiコード表先頭見出し_1(_,N,_n1,_n2,_n3,_n4) :-
        N > 1,
        write_formatted_atom('%01d%01d%01d%01d',[_n1,_n2,_n3,_n4],A),
        文字列を欄の中心に据えて表示(8,A),!.        

asciiコード表先頭見出し_2(N) :-
        N >= 0,N =< 1,
        write_formatted_atom('%1d',[N],A),
        文字列を欄の中心に据えて表示(35,A),!.        
asciiコード表先頭見出し_2(N) :-
        N > 1,
        write_formatted_atom('%1d',[N],A),
        文字列を欄の中心に据えて表示(8,A),!.        

asciiコード表行表示(M,N) :-
        M >=0,M =<1,
        _アスキーコード is 16 * M + N,
        asciiコード表(_アスキーコード,_,_文字列),
        文字列を欄の中心に据えて表示(35,_文字列),!.
asciiコード表行表示(M,N) :-
        M > 1,
        _アスキーコード is 16 * M + N,
        asciiコード表(_アスキーコード,_,_文字列),
        文字列を欄の中心に据えて表示(8,_文字列),!.

文字列を欄の中心に据えて表示(_欄の桁,_文字列) :-
        name2(_文字列,L),
        length(L,_文字列長),
        _頭部の空白数 is (_欄の桁 - _文字列長) // 2,
        _尾部の空白数 is (_欄の桁 - _文字列長 - _頭部の空白数),
        concat_atom(['%',_頭部の空白数,s,'%s%',_尾部の空白数],F),
        writef(F,[' ',_文字列,' ']),!.

asciiコード表文字列最大byte長(_asciiコード表文字列最大byte長) :-
        findmax(Byte長,(asciiコード表(_,_,_文字列),name(_文字列,L),length(L,Byte長)),_asciiコード表文字列最大byte長).

asciiコード表(0,'0x00','NUL(null文字) ').
asciiコード表(1,'0x01','SOH(ヘッダ開始)').
asciiコード表(2,'0x02','STX(テキスト開始)').
asciiコード表(3,'0x03','ETX(テキスト終了)').
asciiコード表(4,'0x04','EOT(転送終了)').
asciiコード表(5,'0x05','ENQ(照会)').
asciiコード表(6,'0x06','ACK(受信OK)').
asciiコード表(7,'0x07','BEL(警告)').
asciiコード表(8,'0x08','BS(後退)').
asciiコード表(9,'0x09','HT(水平タブ)').
asciiコード表(10,'0x0a','LF(改行)').
asciiコード表(11,'0x0b','VT(垂直タブ)').
asciiコード表(12,'0x0c','FF(改頁)').
asciiコード表(13,'0x0d','CR(復帰)').
asciiコード表(14,'0x0e','SO(シフトアウト)').
asciiコード表(15,'0x0f','SI(シフトイン)').
asciiコード表(16,'0x10','DLE(データリンクエスケープ)').
asciiコード表(17,'0x11','DC1(装置制御1)').
asciiコード表(18,'0x12','DC2(装置制御2)').
asciiコード表(19,'0x13','DC3(装置制御3)').
asciiコード表(20,'0x14','DC4(装置制御4)').
asciiコード表(21,'0x15','NAK(受信失敗)').
asciiコード表(22,'0x16','SYN(同期)').
asciiコード表(23,'0x17','ETB(転送ブロック終了)').
asciiコード表(24,'0x18','CAN(とりけし)').
asciiコード表(25,'0x19','EM(メディア終了)').
asciiコード表(26,'0x1a','SUB(置換)').
asciiコード表(27,'0x1b','ESC(エスケープ)').
asciiコード表(28,'0x1c','FS(フォーム区切り)').
asciiコード表(29,'0x1d','GS(グループ区切り)').
asciiコード表(30,'0x1e','RS(レコード区切り)').
asciiコード表(31,'0x1f','US(ユニット区切り)').
asciiコード表(32,'0x20','(スペース)').
asciiコード表(33,'0x21',!).
asciiコード表(34,'0x22','"').
asciiコード表(35,'0x23',#).
asciiコード表(36,'0x24',$).
asciiコード表(37,'0x25','%').
asciiコード表(38,'0x26','&').
asciiコード表(39,'0x27','''').
asciiコード表(40,'0x28','(').
asciiコード表(41,'0x29',')').
asciiコード表(42,'0x2a',*).
asciiコード表(43,'0x2b',+).
asciiコード表(44,'0x2c',',').
asciiコード表(45,'0x2d',-).
asciiコード表(46,'0x2e','.').
asciiコード表(47,'0x2f',/).
asciiコード表(48,'0x30','0').
asciiコード表(49,'0x31','1').
asciiコード表(50,'0x32','2').
asciiコード表(51,'0x33','3').
asciiコード表(52,'0x34','4').
asciiコード表(53,'0x35','5').
asciiコード表(54,'0x36','6').
asciiコード表(55,'0x37','7').
asciiコード表(56,'0x38','8').
asciiコード表(57,'0x39','9').
asciiコード表(58,'0x3a',:).
asciiコード表(59,'0x3b',;).
asciiコード表(60,'0x3c',<).
asciiコード表(61,'0x3d',=).
asciiコード表(62,'0x3e',>).
asciiコード表(63,'0x3f',?).
asciiコード表(64,'0x40',@).
asciiコード表(65,'0x41','A').
asciiコード表(66,'0x42','B').
asciiコード表(67,'0x43','C').
asciiコード表(68,'0x44','D').
asciiコード表(69,'0x45','E').
asciiコード表(70,'0x46','F').
asciiコード表(71,'0x47','G').
asciiコード表(72,'0x48','H').
asciiコード表(73,'0x49','I').
asciiコード表(74,'0x4a','J').
asciiコード表(75,'0x4b','K').
asciiコード表(76,'0x4c','L').
asciiコード表(77,'0x4d','M').
asciiコード表(78,'0x4e','N').
asciiコード表(79,'0x4f','O').
asciiコード表(80,'0x50','P').
asciiコード表(81,'0x51','Q').
asciiコード表(82,'0x52','R').
asciiコード表(83,'0x53','S').
asciiコード表(84,'0x54','T').
asciiコード表(85,'0x55','U').
asciiコード表(86,'0x56','V').
asciiコード表(87,'0x57','W').
asciiコード表(88,'0x58','X').
asciiコード表(89,'0x59','Y').
asciiコード表(90,'0x5a','Z').
asciiコード表(91,'0x5b','[').
asciiコード表(92,'0x5c',\).
asciiコード表(93,'0x5d',']').
asciiコード表(94,'0x5e',^).
asciiコード表(95,'0x5f','_').
asciiコード表(96,'0x60',`).
asciiコード表(97,'0x61',a).
asciiコード表(98,'0x62',b).
asciiコード表(99,'0x63',c).
asciiコード表(100,'0x64',d).
asciiコード表(101,'0x65',e).
asciiコード表(102,'0x66',f).
asciiコード表(103,'0x67',g).
asciiコード表(104,'0x68',h).
asciiコード表(105,'0x69',i).
asciiコード表(106,'0x6a',j).
asciiコード表(107,'0x6b',k).
asciiコード表(108,'0x6c',l).
asciiコード表(109,'0x6d',m).
asciiコード表(110,'0x6e',n).
asciiコード表(111,'0x6f',o).
asciiコード表(112,'0x70',p).
asciiコード表(113,'0x71',q).
asciiコード表(114,'0x72',r).
asciiコード表(115,'0x73',s).
asciiコード表(116,'0x74',t).
asciiコード表(117,'0x75',u).
asciiコード表(118,'0x76',v).
asciiコード表(119,'0x77',w).
asciiコード表(120,'0x78',x).
asciiコード表(121,'0x79',y).
asciiコード表(122,'0x7a',z).
asciiコード表(123,'0x7b','{').
asciiコード表(124,'0x7c','|').
asciiコード表(125,'0x7d','}').
asciiコード表(126,'0x7e',~).
asciiコード表(127,'0x7f','DEL(削除)').

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
name2(X,Y) :-
    atom(X),
    strlen(X,Len),
    findall(N,(for(1,M,Len) , char_code1(X,M,N1) , (N1 < 0 , N is N1 + 256 ; N1 >= 0 , N = N1)),Y),!.
name2(A,[N]) :-
    atomic(A),
    name(A,[N]),!.
name2(A,L) :-
    var(A),
    name21(L,L2),
    atom_codes(A,L2),!.

name21([],[]) :- !.
name21([N1,N2|R],[N|R2]) :-
    N1 > 127,
    N2 > 127,
    N is N1 * 256 + N2,
    name21(R,R2),!.
name21([N1,N2|R],[N|R2]) :-
    N1 > 127,
    N2 < 128,
    N is N1 * 256 + N2,
    name21(R,R2),!.
name21([N1|R],[N1|R2]) :-
    name21(R,R2).