Flowcharts (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံများ)
B1.1.4: Trace flowcharts for a range of programming algorithms using standard symbols.
မြန်မာလို: programming algorithm (အယ်လ်ဂိုရီသမ်၊ ပြဿနာကို အဆင့်ဆင့် ဖြေရှင်းတဲ့ နည်းလမ်း) အမျိုးမျိုးအတွက် စံ သင်္ကေတတွေကို သုံးထားတဲ့ flowchart (လုပ်ငန်းစဉ်ကို သင်္ကေတတွေနဲ့ ဆွဲပြတဲ့ ပုံ) တွေကို trace (တစ်ဆင့်ချင်း လိုက်ပြီး မှတ်) လုပ်နိုင်ရပါမယ်။ B1.1.4 က IB Computer Science (နိုင်ငံတကာ ကျောင်းတွေမှာ သင်တဲ့ ကွန်ပျူတာသိပ္ပံ သင်ရိုး) ရဲ့ သင်ရိုးထဲက အပိုင်း နံပါတ်ပါ။
ခြုံငုံ မိတ်ဆက်
Flowchart ဆိုတာ algorithm တစ်ခုကို ပုံနဲ့ ဖော်ပြထားတာ ပါ။ စံ သင်္ကေတတွေကို သုံးပြီး အဆင့်တွေရဲ့ အစဉ်၊ ဆုံးဖြတ်ချက်တွေနဲ့ loop (ထပ်ခါထပ်ခါ run တဲ့ code အပိုင်း) တွေကို ပြပါတယ်။ Flowchart တွေက algorithm တွေကို နားလည်ရ၊ trace လုပ်ရ၊ တခြားသူတွေကို ရှင်းပြရ ပိုလွယ်စေပါတယ်၊ အထူးသဖြင့် code မရေးခင်မှာပါ။
အရေးအကြီးဆုံး ကျွမ်းကျင်မှု နှစ်ခု ရှိပါတယ်: flowchart တစ်ခုကို trace လုပ်ခြင်း (output (program က ထုတ်ပြတဲ့ ရလဒ်) ကို ရှာဖို့ တစ်ဆင့်ချင်း လိုက်ကြည့်ခြင်း) နဲ့ ပေးထားတဲ့ algorithm တစ်ခုအတွက် flowchart ဆွဲခြင်း ပါ။
Flowchart ရဲ့ စံ သင်္ကေတများ
IB Computer Science မှာ စံ သင်္ကေတ ခြောက်ခုကို သုံးပါတယ်။ အားလုံးကို သိထားရပါမယ်။
| သင်္ကေတ | ပုံသဏ္ဌာန် | ရည်ရွယ်ချက် | ဥပမာ |
|---|---|---|---|
| Start/End (အစ/အဆုံး) | Rounded rectangle (ထောင့်ဝိုင်း စတုဂံ)၊ oval (ဘဲဥပုံ) | Algorithm ရဲ့ အစ ဒါမှမဟုတ် အဆုံးကို ပြတယ် | Start, End |
| Process (လုပ်ဆောင်ချက်) | Rectangle (စတုဂံ) | လုပ်ဆောင်ချက်၊ တွက်ချက်မှု ဒါမှမဟုတ် assignment (variable ထဲ တန်ဖိုး ထည့်ခြင်း) တစ်ခု | total = total + price |
| Decision (ဆုံးဖြတ်ချက်) | Diamond (စိန်ပုံ) | Branch (condition အရ run မယ့် code လမ်းကြောင်း) ခွဲထွက်စေတဲ့ yes/no မေးခွန်း | Is age >= 18? |
| Input/Output (ဒေတာ ထည့်ခြင်း/ရလဒ် ထုတ်ပြခြင်း) | Parallelogram (အနားပြိုင် စတုဂံ) | Input ဖတ်တာ ဒါမှမဟုတ် output ပြတာ | Read name, Print total |
| Flowline (စီးဆင်းမှု မျဉ်း) | Arrow (မြှား) | သင်္ကေတတွေကြား စီးဆင်းတဲ့ ဦးတည်ရာကို ပြတယ် | (ပုံတွေကို ဆက်ထားတဲ့ မြှားတွေ) |
| Connector (ဆက်သွယ်မှတ်) | Small circle (စက်ဝိုင်း အသေး) | Flowchart ရဲ့ အပိုင်းတွေကို ဆက်ပေးတယ် (chart က အပိုင်း အများကြီးကို ဖြတ်ကျော်တဲ့အခါ သုံးတယ်) | (label တပ်ထားတဲ့ စက်ဝိုင်း) |
Decision diamond တွေမှာ ထွက်ပေါက် နှစ်ခု အတိအကျ အမြဲ ရှိပါတယ်: Yes (ဟုတ်) နဲ့ No (မဟုတ်) (ဒါမှမဟုတ် True နဲ့ False)။ Branch နှစ်ခုလုံးမှာ label အမြဲ ရေးပါ။
Flowchart တစ်ခုကို ဖတ်ခြင်း
ဥပမာ 1: ရိုးရှင်းတဲ့ ဆုံးဖြတ်ချက်
ဒီ flowchart က လူ တစ်ယောက် မဲပေးခွင့် ရှိမရှိကို ဆုံးဖြတ်ပါတယ်။
flowchart TD
A([Start]) --> B[/"Read age"/]
B --> C{"age >= 18?"}
C -- Yes --> D[/"Print 'Can vote'"/]
C -- No --> E[/"Print 'Cannot vote'"/]
D --> F([End])
E --> F
ပုံထဲက English စာတွေက Start (အစ)၊ Read age (အသက်ကို ဖတ်)၊ age >= 18? (အသက်က 18 နဲ့ အထက်လား)၊ Yes (ဟုတ်)၊ No (မဟုတ်)၊ Print ‘Can vote’ (“မဲပေးလို့ရတယ်” လို့ ပြ)၊ Print ‘Cannot vote’ (“မဲပေးလို့ မရဘူး” လို့ ပြ) နဲ့ End (အဆုံး) လို့ ဆိုလိုပါတယ်။
Trace လုပ်ပုံ: age = 20 ဆိုရင် Yes branch ကို လိုက်ပါ။ Output: “Can vote”။ age = 15 ဆိုရင် No branch ကို လိုက်ပါ။ Output: “Cannot vote”။
ဥပမာ 2: Loop (ရေတွက်ခြင်း)
ဒီ flowchart က 1 ကနေ 5 အထိ ဂဏန်းတွေကို print ထုတ်ပါတယ်။
flowchart TD
A([Start]) --> B["count = 1"]
B --> C{"count <= 5?"}
C -- Yes --> D[/"Print count"/]
D --> E["count = count + 1"]
E --> C
C -- No --> F([End])
ပုံထဲက count = 1 က count ကို 1 နဲ့ စတယ်၊ count <= 5? က count က 5 ထက် ငယ်သလား ဒါမှမဟုတ် ညီသလား စစ်တယ်၊ Print count က count ရဲ့ တန်ဖိုးကို ပြတယ်၊ count = count + 1 က count ကို 1 တိုးတယ် လို့ ဆိုလိုပါတယ်။
Trace လုပ်ပုံ:
| အဆင့် | count | count <= 5? | Output |
|---|---|---|---|
| 1 | 1 | Yes | 1 |
| 2 | 2 | Yes | 2 |
| 3 | 3 | Yes | 3 |
| 4 | 4 | Yes | 4 |
| 5 | 5 | Yes | 5 |
| 6 | 6 | No | (exit) |
Output: 1, 2, 3, 4, 5
ဇယားထဲက Yes က ဟုတ်၊ No က မဟုတ်၊ (exit) က loop ကနေ ထွက်တယ် လို့ ဆိုလိုပါတယ်။
ဥပမာ 3: Sentinel Value (ဒေတာ ထည့်တာ ပြီးပြီလို့ ပြတဲ့ အထူး တန်ဖိုး) နဲ့ ပေါင်းခြင်း
ဒီ flowchart က user က -1 ထည့်တဲ့အထိ ဂဏန်းတွေကို ဖတ်ပြီး စုစုပေါင်းကို print ထုတ်ပါတယ်။ ဒီမှာ -1 က sentinel value ပါ: မှန်ကန်တဲ့ ဒေတာ အပိုင်းအခြားရဲ့ ပြင်ပကနေ ရွေးထားတဲ့ အထူး input တစ်ခုဖြစ်ပြီး သူ့ရဲ့ တစ်ခုတည်းသော အလုပ်က “loop ကို ရပ်ပါ” လို့ အချက်ပြဖို့ပါ။
flowchart TD
A([Start]) --> B["total = 0"]
B --> C[/"Read number"/]
C --> D{"number != -1?"}
D -- Yes --> E["total = total + number"]
E --> F[/"Read number"/]
F --> D
D -- No --> G[/"Print total"/]
G --> H([End])
ပုံထဲက total = 0 က စုစုပေါင်းကို 0 နဲ့ စတယ်၊ Read number က ဂဏန်း တစ်ခု ဖတ်တယ်၊ number != -1? က ဂဏန်းက -1 နဲ့ မညီဘူးလား စစ်တယ်၊ total = total + number က ဂဏန်းကို စုစုပေါင်းထဲ ပေါင်းထည့်တယ်၊ Print total က စုစုပေါင်းကို ပြတယ် လို့ ဆိုလိုပါတယ်။
Input 10, 20, 5, -1 နဲ့ trace လုပ်ပုံ:
| အဆင့် | number | number != -1? | total |
|---|---|---|---|
| စတင် | -- | -- | 0 |
| ဖတ် | 10 | Yes | 10 |
| ဖတ် | 20 | Yes | 30 |
| ဖတ် | 5 | Yes | 35 |
| ဖတ် | -1 | No | -- |
| Output | -- | -- | Print 35 |
Flowchart ဆွဲခြင်း: စည်းမျဉ်းများ
- Start တစ်ခု၊ End တစ်ခု: flowchart တိုင်းက Start နဲ့ စပြီး End နဲ့ ဆုံးရပါမယ်
- Flowline တွေက ဦးတည်ရာကို ပြတယ်: မြှားတွေကို သုံးပါ၊ ဖြစ်နိုင်ရင် အပေါ်ကနေ အောက်ကို ဒါမှမဟုတ် ဘယ်ကနေ ညာကို အမြဲ စီးဆင်းပါစေ
- Decision diamond တွေမှာ ထွက်ပေါက် နှစ်ခု ရှိတယ်: Yes/No ဒါမှမဟုတ် True/False လို့ label တပ်ပါ
- လမ်းကြောင်း တိုင်းက End ကို ရောက်ရပါမယ်: ဆုံးနေတဲ့ လမ်း ဒါမှမဟုတ် ဘယ်နေရာနဲ့မှ မဆက်တဲ့ branch တွေ မရှိရပါဘူး
- သပ်သပ်ရပ်ရပ် ထားပါ: flowline တွေ အချင်းချင်း မဖြတ်ပါစေနဲ့၊ လိုရင် connector တွေကို သုံးပါ
အဖြစ်များတဲ့ အမှား: label မတပ်ထားတဲ့ မြှား နှစ်ခုပါတဲ့ diamond က condition (မှန်လား မှားလား စစ်တဲ့ အခြေအနေ) မှန်တဲ့အခါ ဘယ်လမ်းကြောင်း run မလဲ ဆိုတာကို ဖတ်သူ ခန့်မှန်းနေရအောင် လုပ်ပါတယ်။ Diamond ကို ဆွဲပြီးတာနဲ့ သူ့အောက်မှာ ဘာမှ မဆွဲခင် မြှား တစ်ခုချင်းစီပေါ်မှာ Yes/No (ဒါမှမဟုတ် True/False) ကို ချက်ချင်း ရေးပါ။
Flowchart ကို Trace လုပ်တဲ့ လေ့ကျင့်မှု
Flowchart တစ်ခုကို trace လုပ်ဖို့:
- Start သင်္ကေတကနေ စပါ
- Flowline တွေကို လိုက်ပြီး process နဲ့ I/O (input/output) အဆင့် တစ်ခုချင်းစီကို လုပ်ဆောင်ပါ
- Decision တစ်ခုစီမှာ condition ကို စစ်ပြီး မှန်ကန်တဲ့ branch ကို လိုက်ပါ
- အဆင့်တိုင်းမှာ variable (တန်ဖိုး သိမ်းထားတဲ့ နာမည်ပေးထားတဲ့ နေရာ) တန်ဖိုးတွေနဲ့ output တွေကို မှတ်ပါ
- End ကို ရောက်တဲ့အထိ ဆက်လုပ်ပါ
Variable တန်ဖိုးတွေနဲ့ output တွေကို စနစ်တကျ မှတ်ထားဖို့ trace table (variable တန်ဖိုးတွေကို အဆင့်ဆင့် မှတ်တဲ့ ဇယား) ကို သုံးပါ။
Quick Check (အမြန် စစ်ဆေးမေးခွန်း)
Q1. ဘယ် flowchart သင်္ကေတက decision ကို ကိုယ်စားပြုသလဲ။
Q2. Flowchart မှာ parallelogram က ဘာကို ကိုယ်စားပြုသလဲ။
Q3. Decision diamond တစ်ခုမှာ ထွက်ပေါက် ဘယ်နှစ်ခု ရှိသလဲ။
Q4. ရေတွက်တဲ့ flowchart (ဥပမာ 2) မှာ နောက်ဆုံး print ထုတ်တဲ့ ဂဏန်းက ဘာလဲ။
Q5. Flowchart တစ်ခုကို စနစ်တကျ trace လုပ်ဖို့ ဘယ် tool ကို သုံးသင့်သလဲ။
Trace Exercise (code ကို တစ်ဆင့်ချင်း လိုက်ကြည့်ခြင်း)
ဒီ algorithm ကို trace လုပ်ပြီး output ကို ရှာပါ။
Trace: ဒီ flowchart က ဂဏန်းတွေကို ဖတ်ပြီး အပေါင်း ကိန်း (0 ထက် ကြီးတဲ့ ဂဏန်း) ဘယ်နှစ်ခု ရှိလဲ ရေတွက်ပါတယ်။ Input တွေက 5, -3, 8, 0, -1 (sentinel) ပါ။ အောက်က စာကြောင်းတွေထဲမှာ READ က ဂဏန်း တစ်ခု ဖတ်တာ၊ WHILE က condition မှန်နေသရွေ့ ထပ်လုပ်တာ၊ IF ... THEN က condition မှန်ရင် လုပ်တာ၊ PRINT က ထုတ်ပြတာ ဖြစ်ပြီး positives က အပေါင်း ကိန်း အရေအတွက်ပါ။ ဇယားထဲက Yes က ဟုတ်၊ No က မဟုတ် လို့ ဆိုလိုပါတယ်။
START
total = 0, positives = 0
READ number
WHILE number != -1:
total = total + number
IF number > 0 THEN positives = positives + 1
READ number
PRINT total, positives
END| number | number != -1? | total | number > 0? | positives |
|---|---|---|---|---|
| 5 | Yes | Yes | ||
| -3 | Yes | No | ||
| 8 | Yes | Yes | ||
| 0 | Yes | No | ||
| -1 | No | Output: total = , positives = | ||
Fill in the Blanks (ကွက်လပ် ဖြည့်ခြင်း)
Flowchart သင်္ကေတ တစ်ခုချင်းစီကို သူ့ ရည်ရွယ်ချက်နဲ့ တွဲပါ။ ရည်ရွယ်ချက်တွေကို English နဲ့ ရေးထားပြီး ကွက်လပ်တွေမှာ သင်္ကေတရဲ့ English နာမည်ကို (diamond၊ parallelogram၊ rectangle ဒါမှမဟုတ် oval) ရိုက်ထည့်ရပါမယ်။ Symbol: ဆိုတာ သင်္ကေတ လို့ ဆိုလိုပြီး စာကြောင်း တစ်ကြောင်းချင်းရဲ့ အဓိပ္ပာယ်က အောက်ပါအတိုင်းပါ:
- Branch နှစ်ခု ခွဲထွက်စေတဲ့ yes/no မေးခွန်း
- User ရဲ့ input ကို ဖတ်တာ ဒါမှမဟုတ် output ကို ပြတာ
- တွက်ချက်မှု ဒါမှမဟုတ် assignment (ဥပမာ total = total + 1)
- Algorithm ရဲ့ အစ ဒါမှမဟုတ် အဆုံးကို ပြတာ
ကွက်လပ် ဖြည့်ပါ: ရည်ရွယ်ချက် တစ်ခုစီအတွက် flowchart သင်္ကေတရဲ့ နာမည်ကို ရေးပါ။
// A yes/no question that creates two branches
// Symbol:
// Reading user input or displaying output
// Symbol:
// A calculation or assignment (e.g., total = total + 1)
// Symbol:
// Marks the beginning or end of the algorithm
// Symbol: Practice Exercises (လေ့ကျင့်ခန်းများ)
Core (အခြေခံ အဆင့်)
-
Flowchart တစ်ခုကို Trace (တစ်ဆင့်ချင်း လိုက်ပြီး မှတ်ပါ) လုပ်ပါ: ရေတွက်တဲ့ flowchart (ဥပမာ 2) ကို trace လုပ်ပါ၊ ဒါပေမယ့် condition ကို
count <= 3လို့ ပြောင်းပါ။ Output က ဘာလဲ။ -
Flowchart တစ်ခု Draw (label တွေ ပါတဲ့ ပုံကို တိတိကျကျ ဆွဲပါ) လုပ်ပါ: ကျောင်းသား တစ်ယောက်ရဲ့ အမှတ် (0-100) ကို ဖတ်ပြီး အမှတ်က 50 နဲ့ အထက် ဆိုရင် “Pass” (အောင်)၊ 50 အောက် ဆိုရင် “Fail” (ကျ) လို့ print ထုတ်တဲ့ flowchart တစ်ခု ဆွဲပါ။ မှန်ကန်တဲ့ သင်္ကေတတွေကို သုံးပါ။
-
သင်္ကေတကို ခွဲခြားခြင်း: အောက်ပါ လုပ်ဆောင်ချက် တစ်ခုစီအတွက် ဘယ် flowchart သင်္ကေတကို သုံးမလဲ State (ဖော်ပြပါ) လုပ်ပါ:
- (a) အပူချိန်က 30 ထက် ကျော်လား စစ်ပါ
- (b) total = price * quantity ကို တွက်ပါ
- (c) “Thank you” (ကျေးဇူးတင်ပါတယ်) ကို ပြပါ
- (d) Algorithm ကို စပါ
Extension (တိုးချဲ့ အဆင့်)
-
Loop flowchart: user က 0 ထည့်တဲ့အထိ ဂဏန်းတွေကို ဖတ်ပြီး ထည့်ခဲ့တဲ့ ဂဏန်း အားလုံးရဲ့ ပျမ်းမျှကို (0 ကို မထည့်ဘဲ) print ထုတ်တဲ့ flowchart တစ်ခု Draw လုပ်ပါ။ Input 10, 20, 30, 0 အတွက် trace table ကိုလည်း ထည့်ပါ။
-
Nested decision (ဆုံးဖြတ်ချက်ထဲမှာ ထပ်ပါတဲ့ ဆုံးဖြတ်ချက်): အမှတ်ပေး စနစ် တစ်ခုအတွက် flowchart တစ်ခု Draw လုပ်ပါ: 90+ = “A”၊ 80-89 = “B”၊ 70-79 = “C”၊ 60-69 = “D”၊ 60 အောက် = “F”။ Nested decision diamond တွေကို သုံးပါ။
Challenge (စိန်ခေါ်မှု အဆင့်)
- Algorithm ကနေ flowchart အဖြစ် ပြောင်းခြင်း: အောက်ပါ algorithm ကို flowchart အဖြစ် ပြောင်းပါ၊ ပြီးရင် input array (အရွယ်အစား ပုံသေ၊ အမျိုးအစားတူ ဒေတာစု) [4, 1, 7, 2] နဲ့ trace လုပ်ပါ:
max = arr[0] i = 1 WHILE i < length: IF arr[i] > max THEN max = arr[i] i = i + 1 PRINT max
ဆက်စပ် ခေါင်းစဉ်များ
- အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်: CT Concepts (computational thinking ရဲ့ အခြေခံ သဘောတရားများ): flowchart တွေက CT နဲ့ ဒီဇိုင်းဆွဲထားတဲ့ algorithm တွေကို ပုံနဲ့ မြင်သာအောင် ပြပါတယ်
- အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်: Problem Specification (ပြဿနာကို တိတိကျကျ ဖော်ပြချက်): ဖြေရှင်းချက်ကို ပုံမဆွဲခင် ပြဿနာကို နားလည်ထားရပါမယ်
- နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Selection (condition ပေါ်မူတည်ပြီး လမ်းကြောင်း ရွေးခြင်း): decision diamond တွေက code ထဲမှာ if/else ဖြစ်လာပါတယ်
- နောက်ထပ် လေ့လာမယ့် ခေါင်းစဉ်: Iteration (ထပ်ခါထပ်ခါ လုပ်ခြင်း): loop flowchart တွေက code ထဲမှာ for/while ဖြစ်လာပါတယ်
- ဆက်စပ် ခေါင်းစဉ်: Algorithms (အယ်လ်ဂိုရီသမ်များ): searching နဲ့ sorting (အစဉ်တကျ စီခြင်း) ကို flowchart တွေနဲ့ ဖော်ပြနိုင်ပါတယ်