Flow Chart ภาษา c

ภาษา c           
          flow chart เป็นอัลกอริทึมรูปแบบสัญญาลักษณ์ ที่ได้รับความนิยมมากที่สุด และนิยมใช้มากที่สุดในโลกเลยก็ว่าได้ สำหรับนักออกแบบ โปรแกรมเพื่อจะสื่อสารบอกต่อให้กับโปรแกรมเมอร์ได้เขียนโปรแกรมได้ตรงตามความต้องการของผู้ออกแบบโปรแกรม โดย รูปแบบของ flow chart รูปแต่ละรูปจะมีความหมายเฉพาะตัว ใช้ลูกศรกำหนดทิศทางการทำงานในแต่ละขั้นตอน

ตารางแสดงสัญญษลักษณ์ Flow Chart

สัญญาลักษณ์รูปภาพ
ความหมาย
ภาษา c จุดเริ่มต้น(start) หรือ จุดสิ้นสุด (stop)
ภาษา c รับข้อมูล(input) หรือ แสดงผลข้อมูล(output)
ภาษา c รับข้อมูลนำเข้าจากคีย์บอร์ด(in put from keyboard)
e5 การคำนวน
ภาษา c การตัดสินใจ(decision)หรือ การเปรียบเทียบ(compare)
ภาษา c แสดงผลออกทางเครื่องพิมพ์(printer)
ภาษา c การทำงานย่อย(supprogram)
e8
จุดเชื่อมต่อ
ภาษา c
ทิศทาง(flow)
ตารางนี้เป็นการแสดง สัญญาลักษณ์ Flowchart เพียงบ้างส่วนเท่านั้น เพราะเป็นส่วนที่ใช้งานบ่อยๆมาก ซึ่งสัญญาลักษณ์รูปภาพของ flowchart ยังมีอีกมาก แต่จะยังไม่กล่าวถึงเพราะนี้ยังอยู่ในการใช้งานเบื่องต้นอยู่ และเพื่อให้ผู้อ่านบทความนี้เข้าใจในการเขียนอัลกอริทึมแบบ Flowchart มากขึ้น ผมจะขอลองสมมุติ ตัวอย่างโจทย์เพื่อแสดง เป็นตัวอย่างเพื่อใช้เป็นแนวทางต่อไปนะครับ
ตัวอย่างที่1 : จงเขียน Flowchart โปรแกรมรับค่ารัศมี 1 ค่าหลังจากนั้นให้คำนวนหาพื้นที่ส่วนที่แรงเงาดังรูป ภาษา c
วิเคราะห์ปัญหา :
1.ปัญหาคือ : จากรูปที่กำหนดมาให้ เราต้องรูปสูตร พ.ท. วงกลม กับ พ.ท สื่เหลียมจตุรัส สูตร พ.ท.วงกลม คือ πr^2 โดยที่ π=3.14 สูตร พ.ท. สี่เหลียม จตุรัส ด้าน คณ ด้าน จากโจทย์เข้าให้เรารับค่ารัศมี 1 ค่า เพราะฉนั้นเราจะได้ เส้นผ่าศูยน์กลางวงกลม = ความยาวของด้านสี่เหลียมจตุรัส 1 ด้าน เราจะได้ 2r เป็นด้านของสี่เหลียม และหา พ.ท. ในส่วนที่แรงเงา
2.ตัวแปรที่ใช้ : r ใช้เก็บค่ารัศมี Area_Circle เก็บค่า พ.ท วงกลม Area_Square เก็บค่า พ.ท. สี่เหลียมจตุรัส Area_Shade ใช้เก็บค่า พ.ท. ที่แรงเงา
3.ข้อมูลนำเข้า: ค่าของ radius
4.ผลลัพธ์ คือ คำนวนหาค่าของ พ.ท. ที่แรงเงา ได้จาก การเอา พ.ท. สี่เหลียมจตุรัส มาลบกับ พ.ท.วงกลม Area_Square=2r*2r Area_Circle=3.14*(r*r) Area_Shade= Area_Square - Area_Circle
ขั้นตอนการทำงาน
ภาษา c1.รับค่า r เข้ามาในโปรแกรม
2.คำนวนหาค่า พ.ท. สี่เหลียมจตุรัส(Area_Square)จาก สูตร Area_Square = 2r*2r
 3.คำนวนหนค่า พ.ท. วงกลม(Area_Circle) จากสูตร Area_Circle = 3.14*(r*r)
 4.คำนวนหาค่า พ.ท.ส่วนที่แรงเงา (Area_Shade) จากสูตร Area_Shade = Area_Square - Area_Circle
ตัวอย่างที่2 : จงเขียน Flowchart โปรแกรมเพื่อรับค่า x และ y โดยที่ผู้ใช้ป้อนค่า x และ y และให้คอมพิวเตอร์ทำการเปรียบเทียบโดย ถ้าได้ค่า x มากกว่า y ให้บอกว่าค่า x มากกว่า y แต่ถ้าค่า x น้อยกว่า y ให้บอกว่า ค่า x น้อยกว่า y
วิเคราะห์ปัญหา :
1.ปัญหาคือ : นำค่า x และ ค่า y ที่รับเข้ามาในโปรแกรมมาเปรียบเทียบกัน
2.ตัวแปรที่ใช้ : x ใช้เก็บค่า x และ y เก็บค่าของ y
3.ข้อมูลนำเข้า : ค่าของ x และ y
4.ผลลัพธ์ : ให้โปรแกรมแสดงคำว่า x more than y หรือ x less than y
ขั้นตอนการทำงาน
1.รับข้อมูล มาไว้ที่ตัวแปร x และ y
2.นำข้อมูลที่รับเข้ามาเปรียบเทียบกัน โดย สมการ x>y จริงหรือไม่ ถ้าจริง ให้แสดง x more than y แต่ถ้าไม่ ให้แสดง x more than y เราจะเขียน Flowchart ได้ดังนี้
ภาษา c

ตัวอย่างที่ 3 : ผมขอยกเอาโจทย์ตัวอย่างข้อที่1มาดัดแปลงหน่อยนะครับ เป็น จงเขียน Flowchart โปรแกรมรับค่ารัศมี 1 ค่าหลังจากนั้นให้คำนวนหาพื้นที่ส่วนที่แรงเงาดังรูป โดยที่ให้แยกส่วนของการรับค่าขอมูล ออกจากส่วนการคำนวนหา พ.ท. ส่วนต่างๆ (แนะนำ :ให้เขียน Flowchart แยกเป็นการทำงานของโปรแกรมย่อยที่เรียกว่า Subprogram ) ภาษา c
 วิเคราะห์ปัญหา :
1.ปัญหาคือ : จากรูปที่กำหนดมาให้ เราต้องรูปสูตร พ.ท. วงกลม กับ พ.ท สื่เหลียมจตุรัส สูตร พ.ท.วงกลม คือ πr^2 โดยที่ π=3.14 สูตร พ.ท. สี่เหลียม จตุรัส ด้าน คณ ด้าน จากโจทย์เข้าให้เรารับค่ารัศมี 1 ค่า เพราะฉนั้นเราจะได้ เส้นผ่าศูยน์กลางวงกลม = ความยาวของด้านสี่เหลียมจตุรัส 1 ด้าน เราจะได้ 2r เป็นด้านของสี่เหลียม และ หา พ.ท. ส่วนที่แรงเงา แต่เราจะต้องแยกส่วนที่เป็นการคำนวนออก จากส่วนที่รับค่า
2.ตัวแปรที่ใช้ : r ใช้เก็บค่ารัศมี Area_Circle เก็บค่า พ.ท วงกลม Area_Square เก็บค่า พ.ท. สี่เหลียมจตุรัส Area_Shade ใช้เก็บค่า พ.ท. ที่แรงเงา
3.ข้อมูลนำเข้า: ค่าของ radius
4.ผลลัพธ์ คือ คำนวนหาค่าของ พ.ท. ที่แรงเงา ได้จาก การเอา พ.ท. สี่เหลียมจตุรัส มาลบกับ พ.ท.วงกลม Area_Square=2r*2r Area_Circle=3.14*(r*r) Area_Shade= Area_Square - Area_Circle
ขั้นตอนการทำงาน
1.รับค่า r เข้ามาในโปรแกรม
2.เรียกใช้โปรแกรมย่อยขึ้นมาทำงาน
3.โปรแกรมย่อยทำการ คำนวนหาค่า พ.ท. สี่เหลียมจตุรัส(Area_Square)จาก สูตร Area_Square = 2r*2r
4.โปรแกรมย่อยทำการ คำนวนหนค่า พ.ท. วงกลม(Area_Circle) จากสูตร Area_Circle = 3.14*(r*r)
5.โปรแกรมย่อยทำการ คำนวนหาค่า พ.ท.ส่วนที่แรงเงา (Area_Shade) จากสูตร Area_Shade = Area_Square - Area_Circle
6.กลับเข้าสู้โปรแกรมหลักอีกครั้งโดยโปรแกรมหลักจะแสดงผลลัพธ์ที่โปรแกรมย่อยได้ประมวลไว้
เราจะได้ Flow chart ดังนี้
ภาษา c
โจทย์ไปลองหัดทำนะครับไม่เข้าใจก็สอบถามโดยต้องได้ที่
facebook ulike fanpage
1.จงเขียน Flow chart แสดงขั้นตอนการทำงานของโปรแกรมตัดเกรด โดยเมื่อป้อนคะแนนสอบแล้ว โปรแกรมจะสามารถบอกได้ว่าได้เกรดอะไร โดยมีเกณฑ์ในการตัดเกรดดั้งนี้
คะแนน ได้
เกรด
90-100  
A
80-89  
B
70-79  
C
60-69  
D
ต่ำกว่า60  
F
 
2.จงเขียน Flow chart แสดงการหาผลบวกเลข คี่ที่มีค่าอยู่ในช่วง 1 ถึง 100 แค่สองตัวอย่างนะครับ หวังว่าทุกคนที่อ่านบทความนี้จะลองทำดู เพื่อจะได้เข้าใจยิ่งขึ้น

5 ความคิดเห็น:

  1. #include
    void swap (char *a,char*b)
    {
    char num;
    num= *a;
    *a = *b;
    *b = num;
    }
    void permute(char *x,int i,int n)
    {
    int j;
    if(i==n)
    printf("%s\n",x);
    else
    {
    for (j = i; j <= n; j++)
    {
    swap((x+i), (x+j));
    permute(x, i+1, n);
    swap((x+i), (x+j));

    }
    }
    }
    int main()
    {
    char a[3];
    printf("Enter input:");
    gets(a);
    printf("Permutation\n");
    permute(a, 0, 2);
    getchar();
    return 0;
    }
    ช่วยเขียนโฟลชร์าตไห้หน่อยคาบ

    ตอบลบ
    คำตอบ
    1. ไม่ระบุชื่อ20 กันยายน 2557 เวลา 06:10

      ได้ยังครับเกียวผมเขียนให้

      ลบ
  2. #include
    int main()
    {
    int a,b,c;
    a=11;
    b=22;
    c=33;
    printf("a = %d\tb = %d\tc=%d\n",a,b,c);
    if (c<b)
    {
    printf("c < b is True.\n");
    }
    else if (b<a){printf("b < c is True.\n");
    }
    else
    {
    printf("c < b and b < a are False.\n");
    }
    getchar();
    return 1;
    }

    ช่วยเขียนflowchartให้หน่อยค่ะ

    ตอบลบ
  3. ไม่ระบุชื่อ30 สิงหาคม 2567 เวลา 22:33

    Sub BowlingScore_4()
    Dim frame As Integer
    Dim roll1 As Variant, roll2 As Variant, roll3 As Variant
    Dim score(1 To 10) As Integer
    Dim totalScore As Integer
    Dim ws As Worksheet

    Set ws = Worksheets.Add
    ws.Name = "Bowling Score_4"

    ws.Cells(1, 1).Value = "Frame"
    ws.Cells(1, 2).Value = "Roll 1"
    ws.Cells(1, 3).Value = "Roll 2"
    ws.Cells(1, 4).Value = "Roll 3 (Frame 10 only)"
    ws.Cells(1, 5).Value = "Frame Score"
    ws.Cells(1, 6).Value = "Total Score"

    For frame = 1 To 10
    roll1 = Application.InputBox("Enter score for Roll 1 in Frame " & frame & " (X for Strike)", Type:=2)

    If roll1 = "X" Or roll1 = "x" Then
    roll1 = 10
    roll2 = 0
    If frame = 10 Then
    roll2 = Application.InputBox("Enter score for Roll 2 in Frame " & frame, Type:=2)
    If roll2 = "X" Or roll2 = "x" Then roll2 = 10
    roll3 = Application.InputBox("Enter score for Roll 3 in Frame 10", Type:=2)
    If roll3 = "X" Or roll3 = "x" Then roll3 = 10
    Else
    roll3 = 0
    End If
    Else
    roll1 = CInt(roll1)
    roll2 = Application.InputBox("Enter score for Roll 2 in Frame " & frame & " (/ for Spare)", Type:=2)

    If roll2 = "/" Then
    roll2 = 10 - roll1
    ElseIf roll2 = "X" Or roll2 = "x" Then
    roll2 = 10
    Else
    roll2 = CInt(roll2)
    End If

    If frame = 10 And (roll1 + roll2 >= 10) Then
    roll3 = Application.InputBox("Enter score for Roll 3 in Frame 10", Type:=2)
    If roll3 = "X" Or roll3 = "x" Then
    roll3 = 10
    Else
    roll3 = CInt(roll3)
    End If
    Else
    roll3 = 0
    End If
    End If

    If frame < 10 Then
    If roll1 = 10 Then
    nextRoll1 = Application.InputBox("Enter score for Roll 1 in Frame " & (frame + 1), Type:=2)
    If nextRoll1 = "X" Or nextRoll1 = "x" Then nextRoll1 = 10
    nextRoll2 = Application.InputBox("Enter score for Roll 2 in Frame " & (frame + 1), Type:=2)
    If nextRoll2 = "X" Or nextRoll2 = "x" Then nextRoll2 = 10
    If nextRoll2 = "/" Then nextRoll2 = 10 - nextRoll1
    score(frame) = 10 + CInt(nextRoll1) + CInt(nextRoll2)
    ElseIf roll1 + roll2 = 10 Then
    nextRoll1 = Application.InputBox("Enter score for Roll 1 in Frame " & (frame + 1), Type:=2)
    If nextRoll1 = "X" Or nextRoll1 = "x" Then nextRoll1 = 10
    score(frame) = 10 + CInt(nextRoll1)
    Else
    score(frame) = roll1 + roll2
    End If
    Else
    score(frame) = roll1 + roll2 + roll3
    End If

    totalScore = totalScore + score(frame)

    ws.Cells(frame + 1, 1).Value = frame
    ws.Cells(frame + 1, 2).Value = IIf(roll1 = 10, "X", roll1)
    ws.Cells(frame + 1, 3).Value = IIf(roll1 <> 10 And roll1 + roll2 = 10, "/", roll2)
    ws.Cells(frame + 1, 4).Value = IIf(frame = 10 And roll3 = 10, "X", roll3)
    ws.Cells(frame + 1, 5).Value = score(frame)
    ws.Cells(frame + 1, 6).Value = totalScore
    Next frame
    End Sub

    เขียนเป็นโฟล์วชาร์ตยังไงหรอคะ

    ตอบลบ