Thuta Learning
ရှာဖွေရန်
ExercisesProgrammingbeginner

Exercises: Functions & Pointers Practice

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Exercises: Functions & Pointers Practice ကို ကိုယ်တိုင် လေ့ကျင့်ကြည့်မယ်
  • သင်ခဲ့ပြီးသား skill တွေကို practice လုပ်ပြီး ခိုင်မာအောင်လုပ်မယ်
  • အမှားရှာ၊ ပြင်တတ်၊ ကိုယ်တိုင် check လုပ်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 နမူနာ

c
// 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;
}
You should see
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 ဖြစ်စေနိုင်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Recursion base case ကို မထည့်ဘဲ (သို့) condition မှားပြီး stack overflow ဖြစ်အောင် ရေးမိတတ်ပါတယ်
  • Pointer parameter ကို function ထဲမှာ dereference (*) မလုပ်ဘဲ တိုက်ရိုက် value assign လုပ်လိုက်ရင် caller ဘက်က variable ပြောင်းသွားမှာ မဟုတ်ပါဘူး

အခု ကိုယ်တိုင် စမ်းကြည့်

Task 2 ကို 5 minutes ချိန်ပြီး ကိုယ်တိုင်ရေးကြည့်ပါ - int* return type နဲ့ array element ရဲ့ address ကို ဘယ်လို return မလဲဆိုတာ အာရုံစိုက်ပါ။

You'll know it worked when: Task 4 ခုလုံးမှန်ကန်စွာ run ပြီးရင် recursion, pointer swap, နဲ့ struct pass-by-value logic သုံးမျိုးလုံးကို ကိုယ်တိုင် implement နိုင်ပြီဆိုတာ သိရမှာပါ။

Exercises: Functions & Pointers Practice | Thuta Learning