ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Fundamentals lesson ထက် ဒီတစ်ခုက ခက်ပါတယ် - function decomposition, recursion, pointer manipulation, နဲ့ struct ကို တစ်ပြိုင်နက်တည်း အသုံးချရမှာပါ။ Task တွေကို ဖြေတဲ့အခါ function တစ်ခုချင်းစီကို prototype အရင်ရေးပြီးမှ implementation လုပ်တဲ့ habit ကို လေ့ကျင့်ကြမှာပါ။ Pointer တွေနဲ့ ကစားရတဲ့အခါ memory address ကို correct ဖြစ်အောင် dereference (*) လုပ်ဖို့ အထူးအရေးကြီးပါတယ်။ Struct ကို function parameter အနေနဲ့ pass လုပ်တဲ့အခါ value ဖြစ်မလား pointer ဖြစ်မလားဆိုတာကို ဆင်ခြင်တတ်အောင် ရည်ရွယ်ပါတယ်။
လေ့ကျင့်ခန်းများ
Task 1: int factorial(int n) function ကို recursion နဲ့ ရေးပြီး, main() ထဲက loop နဲ့ 1 ကနေ 10 ထိ number တစ်ခုချင်းစီရဲ့ factorial ကို print ပါ။ Task 2: int* findMax(int arr[], int size) function ရေးပြီး array ထဲက အကြီးဆုံး value ရဲ့ pointer (address) ကို return ပါ - main() ထဲမှာ dereference လုပ်ပြီး value ကို print ပါ။ Task 3: void swap(int *a, int *b) function ကို pointer parameters သုံးပြီး ရေးပါ - main() ထဲက variable နှစ်ခုကို swap ဖြစ်အောင် call လုပ်ကြည့်ပါ။ Task 4: struct Student { char name[30]; int age; float gpa; } ကို define လုပ်ပြီး, void printStudent(struct Student s) function တစ်ခုနဲ့ struct value ကို parameter အနေနဲ့ pass လုပ်ပြီး field တွေအားလုံးကို format ကျကျ print ပါ။
Code နမူနာ
// Task 3 starter skeleton
#include <stdio.h>
void swap(int *a, int *b) {
// TODO: *a နဲ့ *b ရဲ့ value ကို swap ပါ
}
int main() {
int x = 5, y = 10;
swap(&x, &y);
printf("x = %d, y = %d\n", x, y);
return 0;
}
// Task 4 starter skeleton
#include <stdio.h>
#include <string.h>
struct Student {
char name[30];
int age;
float gpa;
};
void printStudent(struct Student s) {
// TODO: s.name, s.age, s.gpa ကို print ပါ
}
int main() {
struct Student s1 = {"Aung Aung", 20, 3.75};
printStudent(s1);
return 0;
}Task 4 ခုလုံးမှန်ကန်စွာ run ပြီးရင် recursion, pointer swap, နဲ့ struct pass-by-value logic သုံးမျိုးလုံးကို ကိုယ်တိုင် implement နိုင်ပြီဆိုတာ သိရမှာပါ။၅ မိနစ် စမ်းကြည့်
Task 2 ကို 5 minutes ချိန်ပြီး ကိုယ်တိုင်ရေးကြည့်ပါ - int* return type နဲ့ array element ရဲ့ address ကို ဘယ်လို return မလဲဆိုတာ အာရုံစိုက်ပါ။
သတိလေးတစ်ချက်
Pointer နဲ့ struct ကို တွဲသုံးတဲ့အခါ NULL pointer ကို dereference မလုပ်မိအောင် အမြဲ သတိထားပါ - crash ဖြစ်စေနိုင်ပါတယ်။