সি প্রোগ্রামিং এইচটিএমএল সিএসএস জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল
ফোরাম
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি ইউজার ডিফাইন্ড ফাংশন


সি প্রোগ্রামিং ফাংশন ডিফাইন্ড করার অনুমতি দেয়। এই অধ্যায়ে আপনি সি প্রোগ্রামিং এ ইউজার ডিফাইন্ড(user defined) ফাংশন তৈরি করা শিখবেন।

ফাংশন হলো ব্লক অব কোড(block of code) যা কোনো নির্দিষ্ট কার্য সম্পাদন করে।

সি প্রোগ্রামিং আপনার প্রয়োজন অনুসারে ফাংশন ডিফাইন্ড করার অনুমতি দিয়ে থাকে। এই ফাংশনসমূহ ইউজার ডিফাইন্ড ফাংশন নামে পরিচিত। উদাহরনস্বরুপঃ

ধরুন, একটি গ্রাফিক্স প্রোগ্রাম তৈরি করতে একটি বর্গ, একটি বৃত্ত এবং কালারের প্রয়োজন যা ইউজার কর্তৃক যথাক্রমে দৈর্ঘ্য, ব্যাসার্ধ এবং কালারের উপর নির্ভর করে। এই সমস্যা সমাধান করতে আপনি তিনটি ফাংশন ব্যবহার করতে পারেন।

উদাহরনঃ ইউজার ডিফাইন্ড ফাংশন

নিচের উদাহরণে দুটি ইন্টেজার নাম্বারের গুণের প্রোগ্রাম দেখানো হলো। এই কাজ সম্পাদনের জন্য একটি ইউজার ডিফাইন্ড ফাংশন multiplyNumbers() ডিফাইন্ড করা হয়েছে।

#include <stdio.h>

int multiplyNumbers(int a, int b);   // ফাংশন প্রোটোটাইপ

int main()
{
    int num1,num2,multiplication;

    printf("Enters two numbers: ");
    scanf("%d %d",&num1,&num2);

    multiplication = multiplyNumbers(num1, num2);   //ফাংশন কল

    printf("multiplication = %d",multiplication);

    return 0;
}

int multiplyNumbers(int a,int b)    //ফাংশন ডেফিনিশন 
{
    int result;
    result = a*b;
    return result;            // return স্টেটমেন্ট
}

ফাংশন প্রোটোটাইপ

ফাংশন প্রোটোটাইপ দ্বারা সাধারণত ফাংশনের ডিক্লেয়ারেশনকে বুঝায় যাতে ফাংশনের নাম, প্যারামিটার এবং রিটার্ন টাইপ নির্ধারণ করা থাকে। এতে ফাংশনের বডি(body) অর্থাৎ ফাংশন ডেফিনিশন থাকে না।

ফাংশন প্রোটোটাইপ কম্পাইলারকে আগাম বার্তা দেয় যে, প্রোগ্রামে এই ফাংশনটি পরে কখনো ব্যবহার করা হতে পারে।


ফাংশন প্রোটোটাইপের সিনট্যাক্স

returnType functionName(type1 argument1, type2 argument2,...);

উপরের প্রোগ্রামে int multiplyNumbers(int a, int b); হলো ফাংশন প্রোটোটাইপ যা কম্পাইলারকে নিম্নোক্ত তথ্যসমূহ দিয়ে থাকেঃ

  1. multiplyNumbers() হলো ফাংশনের নাম
  2. int হলো ফাংশনের রিটার্ন টাইপ
  3. int টাইপের দুটি আর্গুমেন্ট ফাংশনের মধ্য দিয়ে অতিক্রম করবে।
ইউজার ডিফাইন্ড ফাংশন main() এর পূর্বে ডিফাইন্ড করা হলে ফাংশন প্রোটোটাইপের প্রয়োজন হয় না।

ফাংশনকে কল করা

কল করার মাধ্যমে প্রোগ্রামের নিয়ন্ত্রণ ইউজার ডিফাইন্ড ফাংশনের কাছে স্থানান্তরিত হয়।


ফাংশন কলের সিনট্যাক্স

functionName(argument1, argument2, ...);

উপরের উদাহরণে main() ফাংশনের মধ্য থেকে  multiplyNumbers(n1,n2);  স্টেটমেন্ট ব্যবহার করে ফাংশনকে কল করা হয়েছে।


ফাংশন ডেফিনিশন

নির্দিষ্ট কার্য সম্পাদনের জন্য ফাংশন ডেফিনিশন কিছু কোডের ব্লক নিয়ে গঠিত হয়। যেমন- উপরের উদাহরণে ফাংশনের রিটার্ন টাইপ এবং ফাংশন ডেফিনিশনের মধ্যে দুটি সংখ্যা গুণ করার জন্য কিছু কোড ব্যবহার করা হয়েছে।


ফাংশন ডেফিনিশনের সিনট্যাক্স

returnType functionName(type1 argument1, type2 argument2, ...)
{
    //ফাংশনের বডি(body)
}
ফাংশনকে যখন কল করা হয় তখন প্রোগ্রামের নিয়ন্ত্রণ ফাংশন ডেফিনিশনে স্তানান্তরিত হয়। কম্পাইলার ফাংশন বডির মধ্যে অবস্থিত কোডসমূহ এক্সিকিউশন করা শুরু করে।

ফাংশনের মধ্য দিয়ে আর্গুমেন্ট অতিক্রম করানো

প্রোগ্রামিং এ আর্গুমেন্ট দ্বারা ভ্যারিয়েবলকে বুঝায় যা ফাংশনের মধ্য দিয়ে অতিক্রম করে। উপরের উদাহরণে ফাংশন কলের সময় num1 এবং num2 ভ্যারিয়েবল দুটি ফাংশনের মধ্য অতিক্রম করে।

ফাংশন ডেফিনিশনের প্যারামিটার a এবং b অতিক্রান্ত আর্গুমেন্ট দুটি গ্রহণ করে। এই আর্গুমেন্ট সমূহকে ফাংশনের ফরমাল(formal) প্যারামিটার বলা হয়।

ফাংশনের মধ্য দিয়ে আর্গুমেন্ট অতিক্রম করান

ফাংশনের মধ্য দিয়ে অতিক্রান্ত আর্গুমেন্ট এবং ফরমাল প্যারামিটারকে অবশ্যই এক হতে হবে নতুবা কম্পাইলার এরর(error) নিক্ষেপ করবে।

যদি num1 ইন্টেজার টাইপের হয় তাহলে a কে অবশ্যই ইন্টেজার টাইপের হতে হবে। যদি num2 ডাবল টাইপের হয় তাহলে b ভ্যারিয়েবলকে অবশ্যই double টাইপের হতে হবে।

ফাংশনের মধ্য দিয়ে আর্গুমেন্ট অতিক্রম করানো ছাড়াও ফাংশনকে কল করা যায়।


Return স্টেটমেন্ট

return স্টেটমেন্ট ফাংশন এক্সিকিউশের সমাপ্তি ঘটায় এবং কল করা ফাংশনের কাছে ভ্যালু ফেরত পাঠায়। রিটার্ন স্টেটমেন্টের পরে প্রোগ্রামের কন্ট্রোল কলিং(calling) ফাংশনের কাছে স্থানান্তরিত হয়

উপরের উদাহরণে result ভ্যারিয়েবলের ভ্যালু main() ফাংশনের multiplication ভ্যারিয়েবলের এর কাছে ফেরত পাঠায়।

ফাংশনের রিটার্ন স্টেটমেন্ট


রিটার্ন স্টেটমেন্টের সিনট্যাক্স

return (expression);     

উদাহরণস্বরূপ

return sum;
return (x+y);

ফাংশন থেকে রিটার্নকৃত ভ্যালুর টাইপ এবং ফাংশন প্রোটোটাইপ ও ফাংশন ডেফিনিশনের রিটার্ন টাইপ অবশ্যই একই হতে হবে।