Thursday, March 22, 2012

UNIX TOOLS - commad grep utility find match content in files

Unix Tools and Programming

Finding matching pattern using grep utility

Syntax:
grep "word-to-find" {file-name}
 
Create text file as follows:

$vi emo-file
hello world!
cartoons are good
especially toon like tom (cat)
what
the number one song
12221
they love us
I too


After saving file, issue following command,
$ grep "too" demofile
cartoons are good
especially toon like tom (cat)
I too
grep will locate all lines for the "too" pattern and print all (matched) such line on-screen. grep prints too, as well as cartoons and toon; because grep treat "too" as expression. Expression by grep is read as the letter t followed by o and so on. So if this expression is found any where on line its printed. grep don't understand words.

UNIX TOOLS - Conditional : if else fi

Unix Tools and programming :
if else fi

Syntax:
           if condition
           then
                       condition is zero (true - 0)
                       execute all commands up to else statement

           else
                       if condition is not true then
                       execute all commands up to fi
           fi

For e.g. Write Script as follows:
$ vi isnump_n
#!/bin/sh
#
# Script to see whether argument is positive or negative
#
if [ $# -eq 0 ]
then
echo "$0 : You must give/supply one integers"
exit 1
fi

if test $1 -gt 0
then
echo "$1 number is positive"
else
echo "$1 number is negative"
fi
Try it as follows:
$ chmod 755 isnump_n

$ isnump_n 5

5 number is positive

$ isnump_n -45

-45 number is negative

$ isnump_n

./ispos_n : You must give/supply one integers

$ isnump_n 0

0 number is negative
Detailed explanation
First script checks whether command line argument is given or not, if not given then it print error message as "./ispos_n : You must give/supply one integers". if statement checks whether number of argument ($#) passed to script is not equal (-eq) to 0, if we passed any argument to script then this if statement is false and if no command line argument is given then this if statement is true. The echo command i.e.
echo "$0 : You must give/supply one integers"
         |              |
         |              |
        1             2
1 will print Name of script
2 will print this error message
And finally statement exit 1 causes normal program termination with exit status 1 (nonzero means script is not successfully run).
The last sample run $ isnump_n 0 , gives output as "0 number is negative", because given argument is not > 0, hence condition is false and it's taken as negative number. To avoid this replace second if statement with if test $1 -ge 0.

UNIX TOOLS - String compare in Shell Script

For string Comparisons use
OperatorMeaning
string1 = string2string1 is equal to string2
string1 != string2 string1 is NOT equal to string2
string1 string1 is NOT NULL or not defined 
-n string1 string1 is NOT NULL and does exist
-z string1 string1 is NULL and does exist

UNIX TOOLS - Operator conditional in Shell Script

For Mathematics, use following operator in Shell Script

Mathematical Operator in  Shell Script MeaningNormal Arithmetical/ Mathematical StatementsBut in Shell
   For test statement with if commandFor [ expr ] statement with if command
-eqis equal to5 == 6if test 5 -eq 6if [ 5 -eq 6 ]
-ne is not equal to5 != 6if test 5 -ne 6if [ 5 -ne 6 ]
-lt is less than5 < 6if test 5 -lt 6if [ 5 -lt 6 ]
-le is less than or equal to5 <= 6if test 5 -le 6if [ 5 -le 6 ]
-gt is greater than5 > 6if test 5 -gt 6if [ 5 -gt 6 ]
-ge is greater than or equal to5 >= 6if test 5 -ge 6if [ 5 -ge 6 ]
NOTE: == is equal, != is not equal.

Monday, March 19, 2012

UNIX TOOLs - Version Control with Mercurial (using single-user local repository)

  * Version Control

    + Gives the ability to pull out any version ever created
    + Allows tracking WHO made each change (committer id)
    + Allows tracking WHAT each change was (diffs)
    + Allows tracking WHY each change was made (commit comments)
    + Allows seeing history (log of commits)
    + Less disk space than many backups, easier to use
    + file-based (old school, SCCS, RCS, CVS)
    + FOSS centralized vs. distributed
      * CVS, SVN                     (centralized)
      * git, hg, bzr, mtn, darcs, arch, fossil     (distributed)
    + proprietary names you may know (non-free, closed source)
      * Visual SourceSafe            (single-user)
      * ClearCase, Perforce          (centralized)
      * Bitkeeper                    (distributed)

  * Version Control with Mercurial (using single-user local repository)

    + Home site is http://mercurial.selenic.com/
    + Based on 'changeset' concept with named tag support
    + Example usage for single developer
      * hg init       (initialize)
      * hg add        (add a file to be tracked)
      * hg remove     (stop tracking a file)
      * hg rename     (rename a file, maybe with -A)
      * hg stat       (report current status)
      * hg diff       (see changes between working copy and repository)
        can use -r to specify revisions
      * hg commit     (permanently save changes in repository)
        Must use -u and -m, optionally can specify path list
      * hg tag        (create a tag)
      * hg tags       (display tags)
      * hg log        (show changelog)
      * hg update     (change to revision with -r)
      * hg revert     (for those OOPS! moments...)
      * hg help       (get online help)
      * hg cat -r X f (dump specific version of file f to stdout)
    + backing up repository to USB stick on BLS2
    + backing up repository to another machine with rsync

UNIX TOOLs - Basic vi editor and some advance key commands

Basic vi editor and some advance key commands

In vi editor , three are contented 3 kinds of mode : 
  1.Insert Mode : to be able edit or insert more word contents by press i or a from Esc Mode.
  2.Esc Mode : to be able in using key commands as navigation, modification, change mode to ex mode etc... 
  3.Ex Mode : a kind of using ":" for more experts.

1.INSERT MODE:
 This mode you can use left side of your keyboard (Unix like this).
 Change to Esc Mode : pree esc button.

2.Esc Mode: 
 a.Navigation
   # Moving cursor
    h = left     j = down     k = up     l = right
   # Big moving cursor
    w = forward by each word
    b = backward by each word
    0 = move to the end of current line of cursor
    $ = move to the beginning of current line of cursor

    gg = move to the first line of text
    G =  move to the end line of text
    12G = move to line 12 of text
    ctrl+f = page down
    ctrl+b = page up
    ctrl+g = to see where am I ? what I am doing ?
 b.Modification
   # Deleting

    x = delete what cursor is standing on

    D = delete everything after cursor is standing on til end of current line
    dd = delete current line cursor standing on
    d4d = delete 4 lines from cursor standing on

   # Editing

    r = change only one _ which cursor is standing on then ESC MODE is being

    cw = change only one word which cursor is standing on but Will change to INSERT MODE

    O = insert text in the front of current line and change to INSERT MODE

    A = insert text at the end of current line and change to INSERT MODE
   # Copying & Pasting
    yy = copy to current line cursor standing on
    y5y = copy 5 lines from the cursor standing on
    p = past what you have copied before to the next line cursor standing on
   # Undo
    u = revert what you have done once . ( undo )
   # How to cut / move text
    ESC MODE : press v (VISUAL) then move your cursor with ( h,j,k,l ) to make a  
    selection then press c after pressed it will be changed to INSERT MODE then 
    return ECS MODE and move to where you want to place the text you have selected 
    before then press p.
c.Exit editing session

    ZQ = exit without saving

    ZZ = exit with saving
3.EX MODE:
  Enter EX MODE by being in ESC MODE then press : and following <command>
 a.Exit editing session
   :q   =  quit editing without saving
   :wq  =  save then quit
   :q!  = force to quit
   :w!  = force to save
   :wq! = save then force to quit
b.Saving to other file
   :w newfile.xx
c.Go to Line
   :0  = go to first line
   :$  = go to last line
   :123  = go to line 123
d.Bookmark
   :k a  = mark the current line as line a in bookmark
   :'a   = go to line a in bookmark
e.Line number display
   :set number  = display line number
   :set nu      = display line number
   :set nonumber  = hide line number
   :set nonu  = hide line number
f.Control code display
   :set list  = display code hidden
   :set nolist = hide code hidden
g.Search and replace
   :%s/Old/New/g  = search Old and replace New for all whole text
   :10,23s/Old/New/g  = search Old and replace New from Line 10 to 23
   :.s/Old/New/g  = search Old and replace New in current line cursor standing on
   :'a,'bs/Old/New/g = search Old and replace New from line a to line b (a,b in bookmark)
   :2,10s/^/   /g  = make space 3 spaces in front of line from line 2 to line 10
h.Block processing
   :3,4co10  = copy line 3 til line 4 to past in line 11 before line 10
   :1,5m11  = move line 1 til line 5 to past in line 12 before line 11
   :1,2w filename  = write text from line 1 til line 2 to save in a filename
   :2,3r filename  = read text from line 2 til line 3 and write on the current line
i.What dialect am I using ?
   :version
k.Split a file into pieces
   :split
   :split otherfile  = open new other file in the same window of current file opening
   :vsplit   =  more easy to see by side
   :vsplit otherfile 

Sunday, March 18, 2012

Book-Multiplicantion-Signed-Unsigned-Integer.pdf



Multiplication signed and unsinged integer in C++ Language with Decription -

Saturday, March 17, 2012

Programming - Converting Floats to Strings

Converting Floats to Strings



The sprintf() Function

You should already know that printf() function has vast formatting power built into it. What sprintf() does is let you use that formatting power not for output, but to create a string of text. So instead of displaying the text on the screen, which is what printf() does, sprintf() takes the text and puts it into a string buffer that you create. That's what the S in sprintf() stands for; it's a string-output version of printf(). Here is the format:
sprintf(string,"formatting string",vars);
sprintf() has the same basic format as printf(), but before the formatting string is the name of a character buffer into which the formatted output will be placed, string in the above example.
A typical sprintf() statement may look something like this:
sprintf(whoru,"You are %s.\n",name);
Assume that name is a string variable containing your name. If the contents were, Jacob then the resulting string would be:
You are Jacob.
(Complete with the \n newline). This entire string is then put into the character buffer specified by whoru. (So the whoru buffer contains You are Jacob.\n )
The sprintf() function is prototyped in the STDIO.H header, just like printf().
The following code is for TWOPIE.C, which shows how to save the floating point value of half-a-π to a string variable by using sprintf():

Name: TWOPIE.C

#include <stdio.h>

int main()
{
    float pi = 3.141596;
    char halfpie[80];
    pi/=2;

    sprintf(halfpie, "%f", pi);
    printf("Here is the result: %s\n", halfpie);
    return 0;
}

Type the above source code into your editor. Here's the output:
Here is the result: 1.570798
The sprintf() function works just like printf(), but the string produced is stored in the halfpie buffer. The next line, a regular printf(), prints the string to prove that it's a proper conversion of the floating point value.
Remember, any output from a printf() statement can be put into sprintf() to send the output to a string instead of the display.

Aha! But there is a catch!

The sprintf() function does provide a slight security risk. That's because there is no bounds checking on the buffer. So it's entirely possible that the buffer can overflow, and that's how Bad Things happen.
Instead of using sprintf(), get in the habit of using the snprintf() function. It's essentially the same thing but with an N. That N stands for number, or count, and it limits the amount of information that can be put into the buffer — an important safeguard. Here is the format:
snprintf(string,size,"format string",vars);
The snprintf() function only loads up to size characters into the buffer indicated by string. Any characters beyond that value are ignored. That way you add a safety shutoff valve to the convert-to-string operation.
Here is the second version of the TWOPIE.C program, this one more properly done with the snprintf() function:

Name: TWOPIE1.C

#include <stdio.h>

int main()
{
    float pi = 3.141596;
    char halfpie[80];
    pi/=2;

    snprintf(halfpie, 79, "%f", pi);
    printf("Here is the result: %s\n", halfpie);
    return 0;
}
Yeah, it's the same old program. In fact, only the snprintf() line was changed, first the N was added and then the size of 79 was added. The program's output is the same:
Here is the result: 1.570798
But the program runs a lot more securely because there is no chance of buffer overflow. Remember that!

Friday, March 9, 2012

สังคมเช่งบูรณาการณ์ - แนวข้อสอบปลายภาค Final examination

วิชา : 215101 - Integral Society  
สังคมเช่งบูรณาการณ์ - ปลายภาค
  • บทที่ 5 - มนุษกับการเมือง
    • สาเหตุสำคัญ 5 ประการที่มนุษย์มาอยู่ร่าวมกันเป็นสังคม แต่ละสาเหุตุมีสาระสำคัญอย่างไร
      • 1.ธรรมชาติของมนุษย์ (Human Social Nature)
        • มนุษย์ต้องผูกพันกับคนอื่นเพราะต้องอาศัยผู้อื่นในการเลี้ยงดู
      • 2.ความต้องการของมนุษย์ในเรื่องปัจจัยสี่ (Human needs)
        • มนุษย์ต้องอยู่ร่วมกันเป็นกลุ่มเป็นสังคม มนุษย์ต้องการเสื้อผ้าเครื่องนุ่งห่ม บ้านที่อยู่อาศัย ....
      • 3.มนุษย์เป็นสัตว์มีวัฒนธรรม (Cultural Creature)
        • วัฒนธรรมเป็นแบบอย่างการดำเนินชีวิตในเรื่องต่างๆของกลุ่มสังคง
      • 4.ความรู้สึกว่าเป็นพวกเดียวกัน (Consciousness of Kind)
        • เป็นอันหนึ่งอันเดียวกัน
      • 5.คามต้องการควาอบอุน ปลอดภัย (Security)
        • ต้องการให้มีความปลอดภัยในชีวิต และ ทรัพย์สิน
    •  เครื่องมือทางการปกครองของรัฐบาลได้แก่อะไร และ สถาบันใดเป็นผู้ใช้อำนาจปกครอง
      • การกำหนดเป้าหมายของสังคม
      • การระดมและจัดสรรทรัพยากรของสังคม
      • การกระจายทรัพยากรแก่สมาชิกของสังคม
      • การควบคุมสังคม
      • >>> การปกครองเริ่งต้นจากครอบครัวไปสู่รัฐ
    • หน้าทีของรัฐบาล
    • รูปแบบการระดมทรัพกรจากสมกชิกในสังคมในปัจจุบันใช้รูปแบบใดบ้าง เช่น การเสียภาษี การเกณฑ์ทหาร
    • สังคมมีวิวัฒนาการกี่ระดับ และมีสาระสำคัญอะไรบ้าง
    • การเกิดของสหภาพยโรป (EU) จัดเป็นวิวัฒนาการเหนือรัฐใช่หรือไม่
    • องค์ประกอบ 4 ประการของรัฐสมัยใหม่ (modern state) มีอะไรบ้าง
    • สาระสำคัญของการเมืองมีเรื่องเกี่ยวกับอะไร และ ใช้เพื่ออะไร
    • สาระสำคัญของผู้นำในทัศนะเดียววาลี่มีสาระสำคัญว่าอย่างไร
    • รูปแบบการปกครอง จำแนกตามจำนวนผู้ใช้ และวัตถุประสงค์ของการปกครอง
    • แหล่งที่มาของอำนาจทางการเมืองของระบอบประชาธิปไตย และ เผด็จการ
    • เหตุการณ์การเปลี่ยนแปลงการปกคลอง 2745
    • ความสำคัญของการเมืองในมิติต่างๆ
    • รากฐานของกิจกรรมทางการเมืองของ 4 ประการ
    • ลัษณะสภาพพลวัตรของกิจกรรมของการเมืองหมายความว่าอะไร
    • ความสำคัญของระบบกษัตริย์กับกฎหมายและรัฐธรรมนูญ
    • สาระสำคัญของรัญธรรมนุญไทยฉบับปัจจุบัน
    • หน้าที่ของอำนาจ นิติบัญญัต บริหาร และ ตุลาการ
    • ประมุขของ 3 อำนาจอธิปไตยได้แก่ตำแหน่งอะไร ใครใหญ่ที่สุด
    • รัฐสภาของไทยประกอบด้วยอะไรบ้าง มีสมาชิกเท่าใด ใครมาจากระบบใดบ้าง
    • รธน.ไทยระบุว่าอำนาจอธิปไตยที่แท้เป็นของผู้ใด
    • สาระสำคัญของนายกรัฐมนตรี และ คณะรัฐมนตรีตามบทบัญญัตแห่งรัฐธรรมนุญ 2550
    • ระบบตุลาการของไทยในปัจุจบัน
    • แบบแผนการเข้าไปมีมีส่วนร่วนทางการเมือง 2 ประเภทใหญ่
    • วัฒนธรรมทางการเมืองแบบผสมของคนไทยในปัจจุบันน่าจะตรงกับลักษณะใดมากที่สุด
    • วัฒนธรรมแบบประชาธิปไตยกับวัฒนธรรมแบบอุปถัมภ์ของไทยมีความขัดแย้งกันส่วนใด
  •  ความรู้ทั่วไปการเมือง
    • รัฐมนตรัว่าการกระทรวงที่สำคัญๆ
    • บุลคนที่เกี่ยวข้องกับการเมืองในสถานการณ์ปัจจุบัน
    • นายกรัฐมนตรั 5 คนในหลังสุดท้าย
    • พรรคร่วมรัฐบ้าล พรรคฝ่ายค้าน ในยุคปัจจุบัน
    • นายกรัฐมนตรีที่ดำรงตำแหน่งยาวนานเป็นลำดับต้ม และ ลั้นที่สุด
    • นายกรัฐมนตรัผลเรีอนที่ครองตำแหน่งยาวนาน อยู่ครบวาระ
  • บทที่ 6 - ระบอบราชการไทย
    • รัฐประศาสนศาสตร์มีสาระสำคัญเกี่ยวกับอะไร
    • หน้าที่หลักของฝ่ายการเมืองและข้าราชการประจำคืออะไรมีความสำคัญอย่างไร
    • องค์ประกอบของระบบราชการ 4 ประการมีอะไรบ้าง
    • องค์ประกอบของทฤษฎีระบบราชการของ Max Weber มีสาระสำคัญแต่ละข้ออะไรบ้าง
    • ภารกิจ 20 กระทรวงหลักต่างๆ ในปัจจุบัน
    • ภารกิจของระบบราชการคืองานเกี่ยวกับอะไร
    • ระเบียบบริหารราชาการแผ่นดิน 3 ส่วนกับแนวคิดทางการบริหารราชการ 3 แนวคิดมีความสัมพันธ์กันอย่างไร
    • ประเภทของข้าราชการไทย ทั้งข้าราชการประจำ และ ข้าราชการการเมืองมีที่มาและที่ไปแต่กต่างกันอย่างไร
    • ปัญหา 3 ประการของระบบราชการไทย
    • วัตถุประสงของการปฎิรูประบบราชการไทย
    • หน่วยงานที่เป็นพัฒนาระบบราชการไทยในปัจจุบันคือหน่วยงานใด
    • ลักษณะของระบบราชการยุคใหม่เป็นอย่างไร
  • บทที่ 7 - การประกอบธุรกิจ
    •  การจัดตั้งธุรกิจในรูปแบบต่างๆ 3 รูปแบบ มีสาระสำคัญอย่างไร มีข้อดีข้อเสียอย่างไร
    • คุณสัมบัติของผู้เริ่มต้นการประกอลธุรกิจ
    • แนวคิดเรื่องจริยธรรมในเรื่องทำธุรกิจ (CRS)
    • การลงทุนในหมวดสินทรัพย์ถาวน หมวดค่าใช้จ่ายคงที่ ค่าใช้จ่ายการดำเนินงาน ด้านการตลาด และ อื่นๆมีรายละเอียดอะไรบ้าง
    • ส่วนผสมการตลาด คือ 4'p และ ส่วนเพิ่มเติม
    • หลักเกณฑ์ที่ใช้ในการแบ่งส่วนตลาด 2 ข้อ
  • บทที่ 8 - ความรู้ในการบริหารจัดการ
    • งานขั้นตอนแรกของการบริหารได้แก่งานใด
    • ลักษณ์สำคัญของความหมายและองค์ประกอบขององค์การ
    • ทรัพยากรขั้นพื้นฐานตามหลัก 4M และ 6M
    • การบริหารทั้งฐานะเป็นทั้งศาสตร์และศิลป์ คืออะไร
    • หัวใจหลักและหน้าที่ของผู้บริหารคืออะไร
    • กระบวนการบริหาร และ หน้าที่ของนักบริหารแต่ละขั้นตอนเทียบได้กับอะไร
    • องประกอบของ POSDCoRB เป็นแนวคิดของ Luther Gulick
      • Planning - การวางแผน หมายถึง การกำหนดเป้าหมายขององค์การว่า ควรทำงานเพื่อวัตถุประสงค์ใด จะดำเนินการอย่างไร โดยคำนึงถึงเหตุการณ์ในอนาคต การวางแผนจึงเป็นการวางเค้าโครงกิจกรรมและวิธีการทำงานล่วงหน้าเพื่อบรรลุเป้าหมายที่กำหนด
      • Organizing – การจัดองค์การ หมายถึง การกำหนดโครงสร้างที่เป็นอำนาจหน้าที่ขององค์การ โดยยึดหลักการบางหน่วยงานและทำงานอย่างประสานร่วมมือกันระหว่างหน่วยงานต่างๆ ภายในองค์การ
      • Staffing – การบริหารงานบุคคล เริ่มตั้งแต่ การวิเคราะห์งาน การวางแผนบุคลากร การสรรหา การคัดเลือก การฝึกอบรม การพัฒนา และจูงใจ
      • Directing – การสั่งการ หมายถึง การที่ผู้บริหารต้องตัดสินใจอยู่ตลอดเวลา โดยการแปลงการตัดสินใจออกมาในรูปของคำสั่งหรือคำแนะนำ ซึ่งต้องอาศัยภาวะความเป็นผู้นำเพื่อการทำงานบรรลุผลสำเร็จตามเป้าหมายที่กำหนด 
      • Coordinating – การประสานงาน หมายถึง บทบาทที่ผู้บริหารต้องทำหน้าที่ในการประสานงานหน่วยงานต่างๆ ภายในองค์การ ซึ่งอาจเป็นเรื่องที่มีความเกี่ยวเนื่องกัน หรือเป็นเรื่องระหว่างหน่วยงานหลักและหน่วยงานสนับสนุน  
      • Reporting – การรายงาน หมายถึง กระบวนการและเทคนิคของการแจ้งให้ผู้บังคับบัญชาทราบถึงความก้าวหน้าของงานที่ได้รับมอบหมาย 
      • Budgeting – การงบประมาณ หมายถึงภารกิจเกี่ยวกับการวางแผน การทำบัญชี การควบคุมเกี่ยวกับ   
    • องประกอบของ POCCC  เป็นแนวคิดของ Henri Fayol
      •  Planning- การวางแผน คือ การคาดการณ์ล่วงหน้าถึงเหตุการณ์ต่างๆ ที่จะมีผลกระทบต่อธุรกิจ และกำหนดขึ้นเป็นแผนการปฏิบัติงาน หรือวิถีทางที่จะปฏิบัติขึ้นไว้เป็นแนวทางการทำงานในอนาคต 
      • Organizing-การจัดองค์การ คือ การจัดให้มีโครงสร้างของงานต่างๆ และอำนาจหน้าที่ให้อยู่ในส่วนประกอบที่เหมาะสมที่จะช่วยให้งานขององค์การบรรลุผลสำเร็จ
      • Commanding-การบังคับบัญชาสั่งการ คือ การสั่งงานต่างๆ แก่ผู้ใต้บังคับบัญชา ซึ่งผู้บริหารต้องกระทำตนเป็นตัวอย่างที่ดี และต้องเข้าใจผู้ปฏิบัติงานด้วยเข้าใจข้อตกลงในองค์การ รวมทั้งการติดต่อสื่อสารในองค์การด้วย 
      • Coordinating-การประสานงาน คือ การเชื่อมโยงงานของทุกคนให้เข้ากันได้และไปสู่เป้าหมายเดียวกันในที่สุด 
      • Controlling-การควบคุม คือ การที่จะต้องกำกับให้สามารถประกันได้ว่ากิจกรรมต่างๆ ที่ทำไปนั้น สามารถเข้ากับแผนที่วางไว้แล้ว 
    • เปรียบเทียบ POSDCoRB กับ POCCC
      • Directing ของ POSDCoRB เหมือนกับ Commanding ของ POCCC
    • การสื่อสารในองค์การ
    • การตัดสินใจในผู้บริหารในองค์การ
    • พฤติกรรมองค์การเกี่ยวกับอะไรบ้าง
    • อิทผลของผู้นำแต่ละรูปแบบ
    • มิติทางการบริหารของ มาร์ติน แกนนอน แต่ละมิติมีสาระสำคัญอะไรบ้าง

Thursday, March 8, 2012

How to call shell script program in C language program [ system(./xxxx.sh) ]

How to call shell script program in C language program [ system(./xxxx.sh) ]

Example :
In the same directory :

showMenu.sh
showMenu.c


showMenu.sh


#! /bin/sh
# Script to create simple menus and take action according to that selected
# menu item
#
while true
do
clear
  echo "-------------------------------------"
  echo " Main Menu "
  echo "-------------------------------------"
  echo "[1] Show Todays date/time"
  echo "[2] Show files in current directory"
  echo "[3] Show calendar"
  echo "[4] Show all socket man pages"
  echo "[5] Select this choice for submit"
  echo "[6] Exit/Stop"
  echo "======================="
  echo -n "Enter your menu choice [1-6]: "
  read yourch
  case $yourch in
    1) echo "Today is `date` , press a key. . ." ; read ;;
    2) echo "Files in `pwd`" ; ls -l ; echo "Press a key. . ." ; read ;;
    3) cal ; echo "Press a key. . ." ; read ;;
    4) man -k socket ; echo "Press a key. . ." ; read ;;
    5) echo -n "Enter your student ID : "; read id ;
      tar cvfz $id.tar.gz *.*
      mail -s $id -a $id.tar.gz twatchai.informatics@gmail.com < .; echo "Press a   key. . ." ; read ;; 6) exit 0 ;; *) echo "Opps!!! Please select choice 1,2,3,4,5, or  6"; 

     echo "Press a key. . ." ; read ;; 
  esac 
done

showMenu.c


#include <stdio.h>
#include <stdlib.h>

int main()
{
   system("./showMenu.sh");
   exit(EXIT_SUCCESS);
}



Compile showMenu.c
$gcc showMenu.c -o showMenu.o

showMenu.c   showMenu.o   showMenu.sh

Run execute showMenu.sh
$./showMenu.o
-------------------------------------
 Main Menu
-------------------------------------
[1] Show Todays date/time
[2] Show files in current directory
[3] Show calendar
[4] Show all socket man pages
[5] Select this choice for submit
[6] Exit/Stop
=======================
Enter your menu choice [1-6]:


Monday, March 5, 2012

Data Structure and Algorithm - Graph - Minimal Spanning Tree - Test Algorithm by sample processing

Data Structure and Algorithm
Graph - Minimal Spanning Tree

Alogrithm :

Definition:-
A tree is a connected graph without cycles.
Properties of Trees
° A graph is a tree if and only if there is one and only one path joining any two of its vertices.
° A connected graph is a tree if and only if every one of its edges is a bridge.
° A connected graph is a tree if and only if it has N vertices and N; 1 edges.


Definitions:- ° A subgraph that spans (reaches out to ) all vertices of a graph is called a spanning subgraph.
° A subgraph that is a tree and that spans (reaches out to ) all vertices of the original graph is called a spanning tree.
° Among all the spanning trees of a weighted and connected graph, the one (possibly more) with the least total weight is called a minimum spanning tree (MST).

Find the minimal spanning tree for this G graph below by algorithm below
Example :
Graph G

.We have Graph :    V(G) = {V1,V2,V3,V4,V5,V6}
V1 = 0 , V2 = 1 , V3 = 2 , V4 = 3 , V5 = 4 , V6 = 5            
1.V(T) = { V1 }
2.V(E) = null
3.for i=1 to 6 then
.(i=1)   3.1 minWeight = inf
.        3.2 for j=1 to 6 then
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf           inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? yes
.                                   T           7           inf
.                               endVertex = V2
.                               edge = (V1,V2)
.                               minWeight = 7
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? yes
.                                   T           3           7
.                               endVertex = V3
.                               edge = (V1,V3)
.                               minWeight = 3
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   T           inf           3
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                   T           inf           3
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   T           inf           3
.        (j=2)   if V2 in T ? no                   
.        (j=3)   if V3 in T ? no
.        (j=4)   if V4 in T ? no
.        (j=5)   if V5 in T ? no
.        (j=6)   if V6 in T ? no
.        3.3 V(T) = {V1} or {V3} ={V1,V3}
.        3.4 E(T) = {} or {(V1,V3)} = {(V1,V3)}


.(i=2)   3.1 minWeight = inf
.        3.2 for j=1 to 6 then
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf           inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? yes
.                                   T           7           inf
.                               endVertex = V2
.                               edge = (V1,V2)
.                               minWeight = 7
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? no
.                                   F           3           7
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   T           inf           7
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                   T           inf           7
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   T           inf           7
.        (j=2)   if V2 in T ? no
.        (j=3)   if V3 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V3,V1) < minWeight ? no
.                                   F           3           7
.                    (k=2)  if V2 not in T && w(V3,V2) < minWeight ? no
.                                   T           inf           7
.                    (k=3)    if V3 not in T && w(V3,V3) < minWeight ? no
.                                   F           inf           7
.                    (k=4)    if V4 not in T && w(V3,V4) < minWeight ? no
.                                   T           inf           7
.                    (k=5)    if V5 not in T && w(V3,V5) < minWeight ? no
.                                   T           8             7
.                    (k=6)    if V6 not in T && w(V3,V6) < minWeight ? yes
.                                   T           1           7
.                               endVertex = V6
.                               edge = (V3,V6)
.                               minWeight = 1
.        (j=4)   if V4 in T ? no
.        (j=5)   if V5 in T ? no
.        (j=6)   if V6 in T ? no
.        3.3 V(T) = {V1,V3} or {V6} ={V1,V3,V6}
.        3.4 E(T) = {(V1,V3)} or {(V3,V6)} = {(V1,V3),(V3,V6)}


.(i=3)   3.1 minWeight = inf
.        3.2 for j=1 to 6 then
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf         inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? yes
.                                   T           7           inf
.                               endVertex = V2
.                               edge = (V1,V2)
.                               minWeight = 7
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? no
.                                   F           3           7
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   T           inf         7
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                   T           inf         7
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   F           inf         7
.        (j=2)   if V2 in T ? no
.        (j=3)   if V3 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V3,V1) < minWeight ? no
.                                   F           3           7
.                    (k=2)  if V2 not in T && w(V3,V2) < minWeight ? no
.                                   T           inf           7
.                    (k=3)    if V3 not in T && w(V3,V3) < minWeight ? no
.                                   F           inf           7
.                    (k=4)    if V4 not in T && w(V3,V4) < minWeight ? no
.                                   T           inf           7
.                    (k=5)    if V5 not in T && w(V3,V5) < minWeight ? no
.                                   T           8           7
.                    (k=6)    if V6 not in T && w(V3,V6) < minWeight ? no
.                                   F           1           7
.        (j=4)   if V4 in T ? no
.        (j=5)   if V5 in T ? no
.        (j=6)   if V6 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V6,V1) < minWeight ? no
.                                   F           inf           7
.                    (k=2)  if V2 not in T && w(V6,V2) < minWeight ? yes
.                                   T           2             7
.                               endVertex = V2
.                               edge = (V6,V2)
.                               minWeight = 2
.                    (k=3)    if V3 not in T && w(V6,V3) < minWeight ? no
.                                   F           1             2
.                    (k=4)    if V4 not in T && w(V6,V4) < minWeight ? no
.                                   T           inf           2
.                    (k=5)    if V5 not in T && w(V6,V5) < minWeight ? no
.                                   T           3             2
.                    (k=6)    if V6 not in T && w(V6,V6) < minWeight ? no
.                                   F           inf           2
.        3.3 V(T) = {V1,V3,V6} or {V2} ={V1,V3,V6,V2}
.        3.4 E(T) = {(V1,V3),(V3,V6)} or {(V6,V2)} = {(V1,V3),(V3,V6),(V6,V2)}


.(i=4)   3.1 minWeight = inf
.        3.2 for j=1 to 6 then
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf         inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? no
.                                   F           7           inf
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? no
.                                   F           3           inf
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   T           inf         inf
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                   T           inf         inf
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   F           inf         inf
.        (j=2)   if V2 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V2,V1) < minWeight ? no
.                                   F           7           inf
.                    (k=2)  if V2 not in T && w(V2,V2) < minWeight ? no
.                                   F           inf           inf
.                    (k=3)    if V3 not in T && w(V2,V3) < minWeight ? no
.                                   F           inf           inf
.                    (k=4)    if V4 not in T && w(V2,V4) < minWeight ? yes
.                                   T           5           inf
.                               endVertex = V4
.                               edge = (V2,V4)
.                               minWeight = 5
.                    (k=5)    if V5 not in T && w(V2,V5) < minWeight ? no
.                                   T           inf           5
.                    (k=6)    if V6 not in T && w(V2,V6) < minWeight ? no
.                                   F           2             5
.        (j=3)   if V3 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V3,V1) < minWeight ? no
.                                   F           3             5
.                    (k=2)  if V2 not in T && w(V3,V2) < minWeight ? no
.                                   F           inf           5
.                    (k=3)    if V3 not in T && w(V3,V3) < minWeight ? no
.                                   F           inf           5
.                    (k=4)    if V4 not in T && w(V3,V4) < minWeight ? no
.                                   T           inf           in5
.                    (k=5)    if V5 not in T && w(V3,V5) < minWeight ? no
.                                   T           8             5
.                    (k=6)    if V6 not in T && w(V3,V6) < minWeight ? no
.                                   F           1             5
.        (j=4)   if V4 in T ? no
.        (j=5)   if V5 in T ? no
.        (j=6)   if V6 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V6,V1) < minWeight ? no
.                                   F           inf           5
.                    (k=2)  if V2 not in T && w(V6,V2) < minWeight ? no
.                                   F           2             5
.                    (k=3)    if V3 not in T && w(V6,V3) < minWeight ? no
.                                   F           1             5
.                    (k=4)    if V4 not in T && w(V6,V4) < minWeight ? no
.                                   T           inf           5
.                    (k=5)    if V5 not in T && w(V6,V5) < minWeight ? no
.                                   T           3             5
.                               endVertex = V5
.                               edge = (V6,V5)
.                               minWeight = 3
.                    (k=6)    if V6 not in T && w(V6,V6) < minWeight ? no
.                                   F           inf           3
.        3.3 V(T) = {V1,V3,V6,V2} or {V5} ={V1,V3,V6,V2,V5}
.        3.4 E(T) = {(V1,V3),(V3,V6),(V6,V2)} or {(V6,V5)} = {(V1,V3),(V3,V6),(V6,V2),(V6,V5)}


.(i=5)   3.1 minWeight = inf                                                                  
.        3.2 for j=1 to 6 then                                                               
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf         inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? no
.                                   F           7           inf
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? no
.                                   F           3           inf
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   T           inf         inf
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                  F           inf         inf
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   F           inf         inf
.        (j=2)   if V2 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V2,V1) < minWeight ? no
.                                   F           7           inf
.                    (k=2)  if V2 not in T && w(V2,V2) < minWeight ? no
.                                   F           inf           inf
.                    (k=3)    if V3 not in T && w(V2,V3) < minWeight ? no
.                                   F           inf           inf
.                    (k=4)    if V4 not in T && w(V2,V4) < minWeight ? yes
.                                   T           5           inf
.                               endVertex = V4
.                               edge = (V2,V4)
.                               minWeight = 5
.                    (k=5)    if V5 not in T && w(V2,V5) < minWeight ? no
.                                   F           inf           5
.                    (k=6)    if V6 not in T && w(V2,V6) < minWeight ? no
.                                   F           2             5
.        (j=3)   if V3 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V3,V1) < minWeight ? no
.                                   F           3             5
.                    (k=2)  if V2 not in T && w(V3,V2) < minWeight ? no
.                                   F           inf           5
.                    (k=3)    if V3 not in T && w(V3,V3) < minWeight ? no
.                                   F           inf           5
.                    (k=4)    if V4 not in T && w(V3,V4) < minWeight ? no
.                                   T           inf           5
.                    (k=5)    if V5 not in T && w(V3,V5) < minWeight ? no
.                                   F           8             5
.                    (k=6)    if V6 not in T && w(V3,V6) < minWeight ? no
.                                   F           1             5
.        (j=4)   if V4 in T ? no
.        (j=5)   if V5 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V5,V1) < minWeight ? no
.                                   F           inf           5
.                    (k=2)  if V2 not in T && w(V5,V2) < minWeight ? no
.                                   F           inf           5
.                    (k=3)    if V3 not in T && w(V5,V3) < minWeight ? no
.                                   F           8             5
.                    (k=4)    if V4 not in T && w(V5,V4) < minWeight ? no
.                                   T           5             5
.                    (k=5)    if V5 not in T && w(V5,V5) < minWeight ? no
.                                   F           inf           5
.                    (k=6)    if V6 not in T && w(V5,V6) < minWeight ? no
.                                   F           3             5
.        (j=6)   if V6 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V6,V1) < minWeight ? no
.                                   F           inf           5
.                    (k=2)  if V2 not in T && w(V6,V2) < minWeight ? no
.                                   F           2             5
.                    (k=3)    if V3 not in T && w(V6,V3) < minWeight ? no
.                                   F           1             5
.                    (k=4)    if V4 not in T && w(V6,V4) < minWeight ? no
.                                   T           inf           5
.                    (k=5)    if V5 not in T && w(V6,V5) < minWeight ? no
.                                   F           3             5
.                    (k=6)    if V6 not in T && w(V6,V6) < minWeight ? no
.                                   F           inf           5
.        3.3 V(T) = {V1,V3,V6,V2,V5} or {V4} ={V1,V3,V6,V2,V5,V4}
.        3.4 E(T) = {(V1,V3),(V3,V6),(V6,V2),(V6,V5)} or {(V2,V4)} = {(V1,V3),(V3,V6),(V6,V2),(V6,V5),(V2,V4)}


.(i=6)   3.1 minWeight  =  inf                                                                              
.        3.2 for j=1 to 6 then             
.        (j=1)   if V1 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V1,V1) < minWeight ? no
.                                   F           inf         inf
.                    (k=2)  if V2 not in T && w(V1,V2) < minWeight ? no
.                                   F           7           inf
.                    (k=3)    if V3 not in T && w(V1,V3) < minWeight ? no
.                                   F           3           inf
.                    (k=4)    if V4 not in T && w(V1,V4) < minWeight ? no
.                                   F           inf         inf
.                    (k=5)    if V5 not in T && w(V1,V5) < minWeight ? no
.                                   F           inf         inf
.                    (k=6)    if V6 not in T && w(V1,V6) < minWeight ? no
.                                   F           inf         inf
.        (j=2)   if V2 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V2,V1) < minWeight ? no
.                                   F           7           inf
.                    (k=2)  if V2 not in T && w(V2,V2) < minWeight ? no
.                                   F           inf           inf
.                    (k=3)    if V3 not in T && w(V2,V3) < minWeight ? no
.                                   F           inf           inf
.                    (k=4)    if V4 not in T && w(V2,V4) < minWeight ? no
.                                   F           5           inf
.                    (k=5)    if V5 not in T && w(V2,V5) < minWeight ? no
.                                   F           inf           inf
.                    (k=6)    if V6 not in T && w(V2,V6) < minWeight ? no
.                                   F           2           inf
.        (j=3)   if V3 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V3,V1) < minWeight ? no
.                                   F           3           7
.                    (k=2)  if V2 not in T && w(V3,V2) < minWeight ? no
.                                   F           inf           7
.                    (k=3)    if V3 not in T && w(V3,V3) < minWeight ? no
.                                   F           inf           inf
.                    (k=4)    if V4 not in T && w(V3,V4) < minWeight ? no
.                                   F           inf           inf
.                    (k=5)    if V5 not in T && w(V3,V5) < minWeight ? no
.                                   F           8           inf
.                    (k=6)    if V6 not in T && w(V3,V6) < minWeight ? no
.                                   F           1           inf
.        (j=4)   if V4 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V4,V1) < minWeight ? no
.                                   F           inf           inf
.                    (k=2)  if V2 not in T && w(V4,V2) < minWeight ? no
.                                   F           5           inf
.                    (k=3)    if V3 not in T && w(V4,V3) < minWeight ? no
.                                   F           inf           inf
.                    (k=4)    if V4 not in T && w(V4,V4) < minWeight ? no
.                                   F           inf           inf
.                    (k=5)    if V5 not in T && w(V4,V5) < minWeight ? no
.                                   F           5           inf
.                    (k=6)    if V6 not in T && w(V4,V6) < minWeight ? no
.                                   F           inf           inf
.        (j=5)   if V5 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V5,V1) < minWeight ? no
.                                   F           inf           inf
.                    (k=2)  if V2 not in T && w(V5,V2) < minWeight ? no
.                                   F           inf           inf
.                    (k=3)    if V3 not in T && w(V5,V3) < minWeight ? no
.                                   F           8           inf
.                    (k=4)    if V4 not in T && w(V5,V4) < minWeight ? no
.                                   F           5           inf
.                    (k=5)    if V5 not in T && w(V5,V5) < minWeight ? no
.                                   F           inf           inf
.                    (k=6)    if V6 not in T && w(V5,V6) < minWeight ? no
.                                   F           3           inf
.        (j=6)   if V6 in T ? yes
.                    for k=1 to 6 then
.                    (k=1)    if V1 not in T && w(V6,V1) < minWeight ? no
.                                   F           inf           inf
.                    (k=2)  if V2 not in T && w(V6,V2) < minWeight ? no
.                                   F           2           inf
.                    (k=3)    if V3 not in T && w(V6,V3) < minWeight ? no
.                                   F           1           inf
.                    (k=4)    if V4 not in T && w(V6,V4) < minWeight ? no
.                                   F           inf           inf
.                    (k=5)    if V5 not in T && w(V6,V5) < minWeight ? no
.                                   F           3           inf
.                    (k=6)    if V6 not in T && w(V6,V6) < minWeight ? no
.                                   F           inf           inf
.        3.3 V(T) = {V1,V3,V6,V2,V5,V4} or {V4} ={V1,V3,V6,V2,V5,V4}
.        3.4 E(T) = {(V1,V3),(V3,V6),(V6,V2),(V6,V5),(V2,V4)} or {(V2,V4)} = {(V1,V3),(V3,V6),(V6,V2),(V6,V5),(V2,V4)}


Red edge will be the minimal spanning tree for Graph G
Minimal Spanning Tree T