Your SlideShare is downloading. ×
07 Jo P Jul 07
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

07 Jo P Jul 07

156
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
156
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. The Joy of Programming Writing Beautiful Programs: ASCII Arts and Fractals—Part I S.G. GANESH Computer programs can be written for aesthetic purposes also. This column gives an introduction to the basics of computer art using C, and is meant for students and novice programmers. M ost of us associate C, or any other programming $ gcc tmp/hello.c ; ./a.out language for that matter, with serious coding. However, programs can also be written just for fun @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ or aesthetic purposes—like drawing interesting patterns or @ @ @ @ @ @ @ @ @ @ @ pictures. @ @ @ @ @ @ @ ASCII art refers to drawing pictures using only ASCII @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ code. (ASCII is the most widely used character-encoding scheme for computers, and is based on letters of the What the program does is very simple. The GUEST COLUMN English alphabet.) Much of ASCII art can be generated by “HELLO” character is encoded with hexadecimal computer programs. To give you an introduction to the characters in the h array. It is a two-dimensional, concept, I’ve written a small program that prints “HELLO” 5 x 5 array, with each character to represent a bit using the ‘@’ character: pattern of four bits each. The bit-mask array m has hex characters to int main() { represent the bits (fourth, third, second and first // encode the “Hello” string as hex numbers char h[5][5] = { { 0x9, 0xE, 0x8, 0x8, 0xF }, bits) set so that they can be used to check with { 0x9, 0x8, 0x8, 0x8, 0x9 }, the bit-pattern in the character. { 0xF, 0xE, 0x8, 0x8, 0x9 }, We have to print five rows, bit-patterns for { 0x9, 0x8, 0x8, 0x8, 0x9 }, five characters (one each for the letters in { 0x9, 0xE, 0xE, 0xE, 0xF } }; “HELLO”) and four bits read the bit-pattern using the mask. The three nested loops do exactly that. // mask for reading the characters This is a simple, straightforward program. If char m[4] = { 0x08, 0x04, 0x02, 0x01 }; you go through it, I’m sure you can easily decipher the logic. The basic idea in this program int i = 0, j = 0, k = 0; is to use a multi-dimensional array to represent the bit-pattern and a mask array to decode it. In // for five rows with five characters each, // decode the hex numbers using the mask and print @ this way, you can ‘programmatically’ represent do { // for five rows complicated ASCII art, and print it using simple j = 0; logic. do { // for five chars You may have already used the banner command that k = 0; prints posters in large letters. Maybe you would want to do { // for four points find out how it works? (h[i][j] & m[k]) ? printf(“ @”): In next month’s column, we’ll take a different approach printf(“ “); and do something little more complex. We’ll draw } while(++k < 4); ‘Sierpinksi triangle fractal’ using just a few lines of code } while(++j < 5); and simple logic using recursion/iteration. printf(“n”); } while(++i < 5); } S.G. Ganesh is an engineer in Hewlett-Packard’s C++ compiler team. He is also a member of the ANSI/ISO C++ When you execute the program, you’ll see the following Standardization committee (JTC1/SC22/WG21).You can “HELLO” banner on your screen: reach him at sgganesh@gmail.com www.linuxforu.com | LINUX FOR YOU | JULY 2007 87 CMYK