C Programming
  • মডিউল ১: বেসিক সিন্টেক্স, ভেরিয়েবলস এবং ডেটা টাইপ
    • মডিউল ১-০: সূচনা
    • মডিউল ১-১: বেসিক স্ট্রাকচার
    • মডিউল ১-২ + মডিউল ১-৩: প্রথম সি প্রোগ্রাম + সি আউটপুট
    • মডিউল ১-৪: প্রোগ্রাম রান করি
    • মডিউল ১-৫+ মডিউল ১-৬:ভেরিয়েবল এবং ডেটা টাইপ
    • মডিউল ১-৭+ মডিউল ১-৮: সি ইনপুট + এস্কেপ সিকুয়েন্স
    • মডিউল ১-৯+ মডিউল ১-১০: ডেটা টাইপ লিমিটেশন
    • মডিউল ১-১১: ভেরিয়েবল নামকরণের নিয়মাবলি
  • মডিউল ২ঃ অপারেটরস, কন্ডিশনাল স্টেটমেন্টস
    • মডিউল ২-০: সূচনা
    • মডিউল ২-১ঃ এরিথমেটিক অপারেটরস
    • মডিউল ২-২ঃ রিলেশনাল অপারেটরস
    • মডিউল ২-৩ঃ লজিকাল অপারেটরস
    • মডিউল ২-৪, ২-৫ঃ ইফ এলস
    • মডিউল ২-৬, ২-৭ঃ ইফ এলস লেডার
    • মডিউল ২-৮, ২-৯ঃ নেস্টেড ইফ এলস
  • মডিউল ৩ঃ লুপ
    • মডিউল ৩-০: সূচনা
    • মডিউল ৩-১, ৩-২: ফর লুপ টাইপ-১
    • মডিউল ৩-৩, ৩-৪: ফর লুপ টাইপ-২
    • মডিউল ৩-৫: ১ থেকে এন পর্যন্ত যোগফল
    • মডিউল ৩-6: লুপের সাথে কন্ডিশন
    • মডিউল ৩-৭, ৩-৮: ব্রেক, কন্টিনিউ স্টেটমেন্ট
    • মডিউল ৩-৯: While & Do While লুপ
  • মডিউল ৫ঃ কন্ডিশনাল স্টেটমেন্ট রিকেপ
    • মডিউল ৫-০ঃসূচনা
    • মডিউল ৫-১ঃ I. Welcome for you with Conditions
    • মডিউল ৫-২ঃ J. Multiples
    • মডিউল ৫-৩ঃ N. Char
    • মডিউল ৫-৪ঃ P. First digit !
    • মডিউল ৫-৫ঃ M. Capital or Small or Digit
    • মডিউল ৫-৬ঃ K. Max and Min
  • মডিউল ৬ঃ লুপ রিকেপ এবং নেস্টেড লুপ
    • মডিউল ৬-০: সূচনা
    • মডিউল ৬-১: ইনক্রিমেন্ট ডিক্রিমেন্ট অপারেটর
    • মডিউল ৬-২: ইভেন নাম্বারস
    • মডিউল ৬-৩: ইভেন, ওড, পজিটিভ, নেগেটিভ
    • মডিউল ৬-৪: ফিক্সড পাসওয়ার্ড
    • মডিউল ৬-৫, ৬-৬: ম্যাক্স, মিন
    • মডিউল ৬-৭: মাল্টিপ্লিকেশন টেবিল
    • মডিউল ৬-৮: ডিজিটস
    • মডিউল ৬-৯, ৬-১০: নেস্টেড ফর লুপ
  • মডিউল ৭ঃ ইন্ট্রোডাকশন টু এরে
    • মডিউল ৭-০: সূচনা
    • মডিউল ৭-১, ৭-২: এরে কি? কেন আমাদের এরে প্রয়োজন?
    • মডিউল ৭-৩,৭-৪: এরে এক্সেস করা
    • মডিউল ৭-৫,৭-৬: এরে ইনপুট আউটপুট
    • মডিউল ৭-৭: এরে ইনিশিয়ালাইজ করা
    • মডিউল ৭-৮: এরে রিভার্স করা
    • মডিউল ৭-৯: এরেতে সবগুলো ভেলু যোগ করা
  • মডিউল ৯ঃ অ্যারে অপারেশন
    • মডিউল ৯-০: সূচনা
    • মডিউল ৯-১ + ৯-২: ইনসার্ট ইলিমেন্ট
    • মডিউল ৯-৩ + ৯-৪: ডিলিট ইলিমেন্ট
    • মডিউল ৯-৫ + ৯-৬: রিভার্স অ্যারে
    • মডিউল ৯-৭ + ৯-৮: কপি অ্যারে
  • মডিউল ১০ঃ ইন্ট্রোডাকশন টু স্ট্রিং
    • মডিউল ১০-০: সূচনা
    • মডিউল ১০-১: স্ট্রিং কি?
    • মডিউল ১০-২: স্ট্রিং ইনিশিয়ালাইজ এবং প্রিন্ট
    • মডিউল ১০-৩: স্ট্রিং ইনপুট
    • মডিউল ১০-৪: স্ট্রিং ইনপুট স্পেস সহ
    • মডিউল ১০-৫: স্ট্রিং এর লেন্থ
    • মডিউল ১০-৬: ক্রিয়েট এ নিউ স্ট্রিং
    • মডিউল ১০-৭: লেটস ইউজ গেটলাইন
    • মডিউল ১০-৮: কাউন্ট
  • মডিউল ১১ঃ স্ট্রিং অপারেশন এবং ফিকোয়েন্সি এরে
    • মডিউল ১১-০ঃ সূচনা
    • মডিউল ১১-১ঃ স্ট্রিং কপি
    • মডিউল ১১-২, ১১-৩ঃ স্ট্রিং লেক্সিকোগ্রাফিকাল কম্পারিসন
    • মডিউল ১১-৪ঃ স্ট্রিং কনকেটিনেশন
    • মডিউল ১১-৫ঃ কাউন্টিং এরে অর ফ্রিকুয়েন্সি এরে
    • মডিউল ১১-৬ঃ কাউন্টিং ক্যারেক্টার
  • মডিউল ১৩: নেস্টেড লুপ রিক্যাপ
    • মডিউল ১৩-০ঃ সূচনা
    • মডিউল ১৩-১ঃ প্যাটার্ন ১
    • মডিউল ১৩-২ঃ প্যাটার্ন ২
    • মডিউল ১৩-৩ঃ প্যাটার্ন ৩
    • মডিউল ১৩-৪ঃ প্যাটার্ন ৪
    • মডিউল ১৩-৫+১৩-৬ঃ Sum of Two Values Equal X
    • মডিউল ১৩-৭+১৩-৮ঃ সিলেকশন সর্ট
  • মডিউল ১৪ঃ ফাংশন এবং পয়েন্টার
    • মডিউল ১৪-০ঃ সূচনা
    • মডিউল ১৪-১ঃ ফাংশন কি?
    • মডিউল ১৪-২ঃ রিটার্ন + প্যারামিটার
    • মডিউল ১৪-৩ঃ রিটার্ন + নো প্যারামিটার
    • মডিউল ১৪-৪ঃ নো রিটার্ন + প্যারামিটার
    • মডিউল ১৪-৫ঃ নো রিটার্ন + নো প্যারামিটার
    • মডিউল ১৪-৬ঃ ইউজফুল বিল্ট-ইন ফাংশন
    • মডিউল ১৪-৭ঃ স্কোপ্স
    • মডিউল ১৪-৮ঃ পয়েন্টার
  • মডিউল ১৫ঃ ফাংশন উইথ পয়েন্টার
    • মডিউল ১৫-০ঃ সূচনা
    • মডিউল ১৫-১ঃ পয়েন্টারস ইন সি
    • মডিউল ১৫-২ঃ কল বাই ভেলু
    • মডিউল ১৫-৩ঃ কল বাই রেফারেন্স
    • মডিউল ১৫-৪ঃ এরে এবং পয়েন্টার
    • মডিউল ১৫-৫ঃ ফাংশন এবং এরে
    • মডিউল ১৫-৬ঃ ফাংশন এবং স্ট্রিং
    • মডিউল ১৫-৭ঃ ফাংশন ইউথ এরে এস রেফারেন্স
  • মডিউল ১৭ঃ Recursion
    • মডিউল ১৭-১ঃ Call Stack
    • মডিউল ১৭-২ঃ রিকার্সন
    • মডিউল ১৭-৩ঃ Print From 1 to n Using Recursion
    • মডিউল ১৭-৪ঃ Print From 5 to 1 using Recursion
    • মডিউল ১৭-৫ঃArray Printing using Recursion
    • মডিউল ১৭-৬ঃ Print From 5 to 1 in Reverse Way
    • মডিউল ১৭-৭ঃ Length of a String using Recursion
  • মডিউল ১৮ঃ 2D এরে
    • মডিউল ১৮-০ঃ সূচনা
    • মডিউল ১৮-১ঃ 2D এরে কি?
    • মডিউল ১৮-২ঃ 2D এরে ইনপুট আউটপুট
    • মডিউল ১৮-৩ঃ 2D এরে প্রিন্টিং বাই রো এন্ড কলাম
    • মডিউল ১৮-৪ঃ ম্যাট্রিক্স এর প্রকারভেদ
    • মডিউল ১৮-৫ঃ জিরো অথবা নাল ম্যাট্রিক্স
    • মডিউল ১৮-৬ঃ ডায়াগোনাল ম্যাট্রিক্স ইউজিং 2D এরে
    • মডিউল ১৮-৭ঃ স্কেলার ম্যাট্রিক্স ইউজিং 2D এরে
    • মডিউল ১৮-৮ঃ ইউনিট ম্যাট্রিক্স ইউজিং 2D এরে
  • মডিউল ১৯ঃ রিকারশন রিকেপ
    • মডিউল ১৯-০ঃ সূচনা
    • মডিউল ১৯-১ঃ মিরর এরে
    • মডিউল ১৯-২ঃ সাম অফ এ ম্যাট্রিক্স
    • মডিউল ১৯-৩ঃ প্রিন্ট ডিজিটস ইউজিং রিকারশন
    • মডিউল ১৯-৪ঃ কাউন্ট ভাওয়েলস
    • মডিউল ১৯-৫ঃ ফেক্টরিয়াল
    • মডিউল ১৯-৬ঃ ম্যাক্স নাম্বার
    • মডিউল ১৯-৭ঃ পেলিনড্রোম
Powered by GitBook
On this page
  1. মডিউল ১৪ঃ ফাংশন এবং পয়েন্টার

মডিউল ১৪-১ঃ ফাংশন কি?

ফাংশনকে আমরা একটি রোবট এর মতো চিন্তা করতে পারি। এই ফাংশনকে কিছু ইন্সট্রাকশন এবং ইনপুট দেওয়া হলে ফাংশন সেই অনুযায়ী কাজ করে আউটপুট রিটার্ন করতে পারে। আমাদের যদি কোডে কোন কাজ বারবার করতে হয় তাহলে আমরা সেই কাজটি একটি ফাংশনের মধ্যে লিখে রাখতে পারি। তাহলে যখনি আমরা সেই ফাংশনকে কল করব তখনি সেই কাজটি ফাংশন আমাকে করে আউটপুট রিটার্ন করে দিবে। তাহলে আমাদেরকে ওই কাজটি করার কোড বারবার লিখতে হবে না।

সি প্রোগ্রামিং এ একটি ফাংশনের রিটার্ন টাইপ থাকে। ফাংশনটি কোন টাইপের ডাটা রিটার্ন করবে তা বলা থাকে রিটার্ন টাইপে। ফাংশনের একটি ইউনিক ভেলিড নাম থাকে। একটি সি কোডে আমরা যেমন একই নামের ভেরিয়েবল দুইবার ডিক্লেয়ার করতে পারি না, প্রতিটি ভেরিয়েবল এর নাম ইউনিক হতে হয়। ফাংশন এর নামও ঠিক তেমনি ইউনিক হতে হয়। তারপর ফাংশনে কিছু প্যারামিটার থাকে। যেখানে আমরা ফাংশনের ইনপুটগুলো দেই ভেরিয়েবল হিসেবে। ফাংশন লিখতে হয় মেইন ফাংশনের উপরে। মেইন ফাংশনের নিচেও লিখা যায় কিন্তু সেক্ষেত্রে মেইন ফাংশনের উপরে ফাংশনটি ডিক্লেয়ার করে আসতে হয়। সি প্রোগ্রামিং এ একটি ফাংশন ডিক্লেয়ার করার সিন্টেক্সঃ return_type function_name ( parameters ) { // code return statement; }

ফাংশনটি যদি কোন কিছু রিটার্ন না করে তাহলে সেটির রিটার্ন টাইপ হিসেবে void লিখা হয়। যদি কোন প্যারামিটার না থাকে তাহলে প্যারামিটার এর জায়গাটি ফাঁকা রাখা যায় অথবা void লিখে রাখা যায়। যদি ফাঁকা থাকে তাহলে জোর করে প্যারামিটার দেওয়া হলেও সেটি ইগনোর করবে আর void লিখা থাকলে প্যারামিটার দেওয়া হলে এরোর দিবে।

এবার আমরা দুটি সংখ্যা যোগ করি ফাংশন ব্যাবহার করেঃ

#include<stdio.h>

int add(int a,int b)    // ফাংশন ডিক্লেয়ার করা হয়েছে যার নাম add, প্যারামিটার হিসেবে দুটি সংখ্যা নেওয়া হচ্ছে, তাই প্যারামিটারে দুটি int ভেরিয়েবল ডিক্লেয়ার করা হচ্ছে। এই ফাংশনটি প্যারামিটার হিসেবে নেওয়া দুটি সংখ্যা যোগ করে যোগফল রিটার্ন করবে তাই এটির রিটার্ন টাইপ হচ্ছে int 
{
    int ans = a+b;     // প্যারামিটার হিসেবে নেওয়া দুটি সংখ্যা যোগ করে যোগফলটি একটি ভেরিয়েবলে স্টোর করে রাখা হচ্ছে।
    return ans;        // যোগফলটি রিটার্ন করে দেওয়া হচ্ছে।
}

int main()
{
    int a,b;            
    scanf("%d %d",&a,&b);    // দুটি সংখ্যা ইনপুট নেওয়া হচ্ছে। 
    int sum = add(a,b);      // add ফাংশনকে কল করা হচ্ছে এবং প্যারামিটার হিসেবে ইনপুট নেওয়া দুটি সংখ্যা দিয়ে দেওয়া হচ্ছে। ফাংশনটি কল করার পর যা রিটার্ন করবে তা sum ভেরিয়েবলে স্টোর করা হচ্ছে।
    printf("sum = %d",sum);  // sum ভেরিয়েবলটি প্রিন্ট করা হচ্ছে যেটিতে দুটি সংখ্যার যোগফল স্টোর রয়েছে।
}

এখানে আমরা যোগ করার জন্য একটি ফাংশন লিখেছি। যেটি ইনপুট হিসেবে দুটি সংখ্যা নিবে। তারপর তাতে সেই দুটি সংখ্যা যোগ করার ইন্সট্রাকশন দেওয়া হয়েছে। যোগ শেষে যোগফলটি রিটার্ন করে দিবে। এই ফাংশনকে কল করে যেকোন দুটি সংখ্যা দেওয়া হলে সে তাদের যোগফল রিটার্ন করবে। এভাবে করে আমরা যেকোন ইন্সট্রাকশন দিয়ে ফাংশন লিখতে পারি।

ফাংশন মূলত ৪ প্রকার হয়ঃ ১। রিটার্ন + প্যারামিটার ২। রিটার্ন + নো প্যারামিটার ৩। নো রিটার্ন + প্যারামিটার ৪। নো রিটার্ন + নো প্যারামিটার

Previousমডিউল ১৪-০ঃ সূচনাNextমডিউল ১৪-২ঃ রিটার্ন + প্যারামিটার

Last updated 1 year ago