Show ASCII table

From Rosetta Code
Revision as of 12:37, 9 August 2018 by Thundergnat (talk | contribs) (→‎{{header|Perl 6}}: Add a Perl 6 example)
Show ASCII table is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task

Show ASCII character set from values 32 to 127 in table format.


C

Translation of: Go

<lang c>#include <stdio.h>

int main() {

   int i, j;
   char k[4];
   for (i = 0; i < 16; ++i) {
       for (j = 32 + i; j < 128; j += 16) {
           switch (j) {
               default:  sprintf(k, "%c", j); break;
               case 32:  sprintf(k, "Spc"); break;
               case 127: sprintf(k, "Del"); break;                
           }
           printf("%3d : %-3s   ", j, k);
       }
       printf("\n");    
   }                    
   return 0;

}</lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Go

<lang go>package main

import "fmt"

func main() {

   for i := 0; i < 16; i++ {
       for j := 32 + i; j < 128; j += 16 {
           k := string(j)
           switch j {
           case 32:
               k = "Spc"
           case 127:
               k = "Del"
           }
           fmt.Printf("%3d : %-3s   ", j, k)
       }
       fmt.Println()
   }

} </lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Kotlin

Translation of: Go

<lang scala>// Version 1.2.60

fun main(args: Array<String>) {

   for (i in 0..15) {
       for (j in 32 + i..127 step 16) {
           val k = when (j) {
               32   -> "Spc"
               127  -> "Del"
               else -> j.toChar().toString()
           }
           System.out.printf("%3d : %-3s   ", j, k)
       }
       println()
   }

}</lang>

Output:
 32 : Spc    48 : 0      64 : @      80 : P      96 : `     112 : p     
 33 : !      49 : 1      65 : A      81 : Q      97 : a     113 : q     
 34 : "      50 : 2      66 : B      82 : R      98 : b     114 : r     
 35 : #      51 : 3      67 : C      83 : S      99 : c     115 : s     
 36 : $      52 : 4      68 : D      84 : T     100 : d     116 : t     
 37 : %      53 : 5      69 : E      85 : U     101 : e     117 : u     
 38 : &      54 : 6      70 : F      86 : V     102 : f     118 : v     
 39 : '      55 : 7      71 : G      87 : W     103 : g     119 : w     
 40 : (      56 : 8      72 : H      88 : X     104 : h     120 : x     
 41 : )      57 : 9      73 : I      89 : Y     105 : i     121 : y     
 42 : *      58 : :      74 : J      90 : Z     106 : j     122 : z     
 43 : +      59 : ;      75 : K      91 : [     107 : k     123 : {     
 44 : ,      60 : <      76 : L      92 : \     108 : l     124 : |     
 45 : -      61 : =      77 : M      93 : ]     109 : m     125 : }     
 46 : .      62 : >      78 : N      94 : ^     110 : n     126 : ~     
 47 : /      63 : ?      79 : O      95 : _     111 : o     127 : Del   

Perl 6

<lang perl6>constant \N = 16; constant \cell = 5; constant $top = join '─' x cell, '┌', '┬' xx N-1, '┐'; constant $mid = join '─' x cell, '├', '┼' xx N-1, '┤'; constant $bot = join '─' x cell, '└', '┴' xx N-1, '┘';

sub row (*@row) { '│' ~ (join '│', @row».&center) ~ "│\n" }

sub center ($s){

   my $c   = cell - $s.chars;
   my $pad = ' ' x ceiling($c/2);
   sprintf "%{cell}s", "$s$pad";

}

sub name ($n) {

   given $n {
       when * < 33 { (0x2400 + $n).chr }
       when 127  { '␡' }
       default   { $n.chr }
   }

}

my @rows = map -> @row {

   row(@row».fmt("%02X")) ~
   row(@row».fmt("%03d")) ~
   row(@row».&name)

}, ^128 .rotor: N;

say $top; print @rows.join: "$mid\n"; say $bot;</lang>

Output:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ 00  │ 01  │ 02  │ 03  │ 04  │ 05  │ 06  │ 07  │ 08  │ 09  │ 0A  │ 0B  │ 0C  │ 0D  │ 0E  │ 0F  │
│ 000 │ 001 │ 002 │ 003 │ 004 │ 005 │ 006 │ 007 │ 008 │ 009 │ 010 │ 011 │ 012 │ 013 │ 014 │ 015 │
│  ␀  │  ␁  │  ␂  │  ␃  │  ␄  │  ␅  │  ␆  │  ␇  │  ␈  │  ␉  │  ␊  │  ␋  │  ␌  │  ␍  │  ␎  │  ␏  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 10  │ 11  │ 12  │ 13  │ 14  │ 15  │ 16  │ 17  │ 18  │ 19  │ 1A  │ 1B  │ 1C  │ 1D  │ 1E  │ 1F  │
│ 016 │ 017 │ 018 │ 019 │ 020 │ 021 │ 022 │ 023 │ 024 │ 025 │ 026 │ 027 │ 028 │ 029 │ 030 │ 031 │
│  ␐  │  ␑  │  ␒  │  ␓  │  ␔  │  ␕  │  ␖  │  ␗  │  ␘  │  ␙  │  ␚  │  ␛  │  ␜  │  ␝  │  ␞  │  ␟  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 20  │ 21  │ 22  │ 23  │ 24  │ 25  │ 26  │ 27  │ 28  │ 29  │ 2A  │ 2B  │ 2C  │ 2D  │ 2E  │ 2F  │
│ 032 │ 033 │ 034 │ 035 │ 036 │ 037 │ 038 │ 039 │ 040 │ 041 │ 042 │ 043 │ 044 │ 045 │ 046 │ 047 │
│  ␠  │  !  │  "  │  #  │  $  │  %  │  &  │  '  │  (  │  )  │  *  │  +  │  ,  │  -  │  .  │  /  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 30  │ 31  │ 32  │ 33  │ 34  │ 35  │ 36  │ 37  │ 38  │ 39  │ 3A  │ 3B  │ 3C  │ 3D  │ 3E  │ 3F  │
│ 048 │ 049 │ 050 │ 051 │ 052 │ 053 │ 054 │ 055 │ 056 │ 057 │ 058 │ 059 │ 060 │ 061 │ 062 │ 063 │
│  0  │  1  │  2  │  3  │  4  │  5  │  6  │  7  │  8  │  9  │  :  │  ;  │  <  │  =  │  >  │  ?  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 40  │ 41  │ 42  │ 43  │ 44  │ 45  │ 46  │ 47  │ 48  │ 49  │ 4A  │ 4B  │ 4C  │ 4D  │ 4E  │ 4F  │
│ 064 │ 065 │ 066 │ 067 │ 068 │ 069 │ 070 │ 071 │ 072 │ 073 │ 074 │ 075 │ 076 │ 077 │ 078 │ 079 │
│  @  │  A  │  B  │  C  │  D  │  E  │  F  │  G  │  H  │  I  │  J  │  K  │  L  │  M  │  N  │  O  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 50  │ 51  │ 52  │ 53  │ 54  │ 55  │ 56  │ 57  │ 58  │ 59  │ 5A  │ 5B  │ 5C  │ 5D  │ 5E  │ 5F  │
│ 080 │ 081 │ 082 │ 083 │ 084 │ 085 │ 086 │ 087 │ 088 │ 089 │ 090 │ 091 │ 092 │ 093 │ 094 │ 095 │
│  P  │  Q  │  R  │  S  │  T  │  U  │  V  │  W  │  X  │  Y  │  Z  │  [  │  \  │  ]  │  ^  │  _  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 60  │ 61  │ 62  │ 63  │ 64  │ 65  │ 66  │ 67  │ 68  │ 69  │ 6A  │ 6B  │ 6C  │ 6D  │ 6E  │ 6F  │
│ 096 │ 097 │ 098 │ 099 │ 100 │ 101 │ 102 │ 103 │ 104 │ 105 │ 106 │ 107 │ 108 │ 109 │ 110 │ 111 │
│  `  │  a  │  b  │  c  │  d  │  e  │  f  │  g  │  h  │  i  │  j  │  k  │  l  │  m  │  n  │  o  │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 70  │ 71  │ 72  │ 73  │ 74  │ 75  │ 76  │ 77  │ 78  │ 79  │ 7A  │ 7B  │ 7C  │ 7D  │ 7E  │ 7F  │
│ 112 │ 113 │ 114 │ 115 │ 116 │ 117 │ 118 │ 119 │ 120 │ 121 │ 122 │ 123 │ 124 │ 125 │ 126 │ 127 │
│  p  │  q  │  r  │  s  │  t  │  u  │  v  │  w  │  x  │  y  │  z  │  {  │  |  │  }  │  ~  │  ␡  │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘


Ring

<lang ring>

  1. Project : Show Ascii table

load "guilib.ring" load "stdlib.ring"

decarr = newlist(16,6) ascarr = newlist(16,6)

new qapp

       {
       win1 = new qwidget() {
                 setwindowtitle("Show Ascii table")
                 setgeometry(100,100,800,600)
                 for n = 1 to 16
                      for m = 1 to 6
                           decarr[n][m] = new qpushbutton(win1) {
                                                 x = 150+m*60
                                                 y = 30 + n*30
                                                 ind = string((m-1)*16+n+31)
                                                 setgeometry(x,y,30,30)
                                                 settext(ind)
                                                 }
                      next
                 next
                 for n = 1 to 16
                      for m = 1 to 6
                           ascarr[n][m] = new qpushbutton(win1) {
                                                 x = 180+m*60
                                                 y = 30 + n*30
                                                 ind = (m-1)*16+n+31
                                                 setgeometry(x,y,30,30)
                                                 if ind = 32
                                                    settext("Spc")
                                                    loop
                                                 ok
                                                 if ind = 127
                                                    settext("Del")
                                                    loop
                                                 ok
                                                 settext(char(ind))
                                                 }
                      next
                 next
                 show()
       }
       exec()
       }

</lang> Output:

Show Ascii table