What is Computer Programming

কম্পিউটার ও প্রোগ্রামিং

কম্পিউটার ও প্রোগ্রামিং ১ ভূমিকা

আজকের দিনে বহু ধরনের কম্পিউটার আমরা হরহামেশাই ব্যবহার করে চলেছি। আপনার বাড়িতে কিংবা কর্মক্ষেত্রে যেমন আপনি দৈনন্দিন নানা কাজে ব্যাবহার করছেন ডেস্কটপ কিংবা ল্যাপটপ, তেমনি আপনার পকেটে বা হাতের মুঠোয় যে মোবাইল ফোন বা ট্যাবলেট রয়েছে সেগুলোও কিন্তু এক একটি কম্পিউটার। আবার আপনি যে Mujtamae প্ল্যাটফর্মটি আপনার কম্পিউটারের ব্রাউজারে ইন্টারনেট এর মাধ্যমে ব্যাবহার করছেন এবং প্রোগ্রামিং শিখতে ও প্রাকটিস করতে যাচ্ছেন, সেই প্ল্যাটফর্মটিও কিন্তু একাধিক সার্ভার কম্পিউটার মিলে পরিচালনা করা হচ্ছে। সকল ডিজিটাল কম্পিউটারই আসলে একটি ইলেক্ট্রনিক ডিভাইস যা তথ্য বা ইনফরমেশন সংরক্ষণ করা, এক যায়গা থেকে অন্যত্র পাঠানো ও এই ইনফরমেশন প্রসেস করে নানা কাজ করে থাকে। বিভিন্ন ধরনের ডাটা এই কম্পিউটার প্রসেস করে থাকে। যেমনঃ সংখ্যা বা numeric data (গাণিতিক, বৈজ্ঞানিক উপাত্ত ইত্যাদি) টেক্সট বা character data (লিখালেখি, নাম-ঠিকানা, তথ্য ইত্যাদি) ভিসুয়াল বা graphic data (ভিডিও, ছবি, এনিমেশন, চার্ট ইত্যাদি) শব্দ বা audio data (গান ইত্যাদি) ইত্যাদি তবে একজন প্রোগ্রামারের জন্য সবচাইতে বহুল প্রচলিত ডাটা হল সংখ্যা ও টেক্সট, কেননা বৈজ্ঞানিক ও টেকনিক্যাল এপ্লিকেশন সমূহ অধিকাংশ ক্ষেত্রে সংখ্যা নিয়ে কাজ করে। এছাড়া অধিকাংশ ব্যবসায়িক কর্মকান্ড যেখানে কম্পিউটার সফটওয়ার ব্যবহৃত হয়, সেখানে সংখ্যা ও টেক্সট নিয়েই কাজ করতে হয়।

কম্পিউটার ও প্রোগ্রামিং ২ ভূমিকা

কম্পিউটার কিভাবে ডাটা প্রসেস করবে অথবা তা নিয়ে কি কাজ করে দিবে, তা কম্পিউটারকে বিশেষ সাংকেতিক ভাষায় কমান্ড হিসেবে লিখে দিতে হয়। আর এই কাজটিকেই বলা হয় প্রোগ্রামিং। যিনি এই কমান্ডগুলো কম্পিউটারের বোধগম্য ভাষায় লিখে দেন এবং এর মাধ্যমে কম্পিউটারকে দিয়ে কাজটি করিয়ে নেন বা অন্য সাধারণ মানুষ যেন ঐ কাজটি করে নিতে পারে তার জন্য প্রোগ্রামটি তৈরি করেন, তাকে বলা হয় প্রোগ্রামার। আর যে ভাষায় তিনি কম্পিউটারকে এই নির্দেশগুলো লিখে দেন, তাকে বলা হয় প্রোগ্রামিং ল্যাঙ্গুয়েজ বা প্রোগ্রামিং ভাষা। একজন প্রোগ্রামার চাইলে তার নির্দেশ বা কমান্ডগুলোর সমন্বয় যে প্রোগ্রাম সেটিকে কম্পিউটারেই সেভ করে রাখতে পারেন। যেন পরবর্তিতে যেকোন সময় সেটিকে ব্যবহার করা যায়। একটি সেভ করা প্রোগ্রামকে যখন চালানো হয় তখন তাকে বলা হয় রান করা (Run) বা এক্সিকিউট করা (execute)। একটি প্রোগ্রাম এক্সিকিউট করলে নিম্নের ঘটনাটি ঘটেঃ কম্পিউটার আপনার প্রোগ্রামটিতে লিখিত কমান্ডগুলো তার মেমরিতে একের পর এক সাজিয়ে নেয়। তারপর প্রয়োজনে আপনার কাছ থেকে ইনপুট নেয় যা আপনি কি বোর্ড, মাউস ইত্যাদির সাহায্যে আপনার প্রোগ্রামটিকে দেন তারপর আপনার প্রোগ্রামটি উক্ত ইনপুট ডাটা প্রসেস করে ও কিছু আউটপুট তৈরি করে তারপর আপনার আউটপুট টি কোন কাগজে অথবা কম্পিউটারের স্ক্রিনে প্রিন্ট করে দেখায়। একটি প্রোগ্রাম একবার লিখে অসংখ্যবার এক্সিকিউট করা যায়। সুতরাং একটি নির্দিষ্ট কাজের জন্য একটি প্রোগ্রাম একবার লিখে নিলেই যথেষ্ট, তারপর সেটিকে বারবার একই কাজ করতে ব্যাবহার করা সম্ভব।

কম্পিউটার ও প্রোগ্রামিং ৩ ভূমিকা

একটি উদাহরণ দিলে প্রোগ্রাম এর ব্যাপারটি স্পষ্ট হবে। ধরে নিন, একটি কম্পিউটার প্রোগ্রাম লিখা হয়েছে, যার কাজ হচ্ছে তাকে একটি বৃত্তের ব্যাসার্ধ ইনপুট দিলে সে বৃত্তের ক্ষেত্রফল আউটপুট দিবে। সুতরাং এই ক্ষেত্রে প্রোগ্রামটি নিম্নে বর্নিত স্টেপ গুলো সম্পন্ন করবেঃ ইনপুট থেকে বৃত্তের ব্যাসার্ধ পড়ে নিবে, প্রোগ্রামটির ব্যাবহারকারি কিবোর্ডের মাধ্যমে এই ইনপুটটি সংখ্যায় দেবেন প্রোগ্রামটি এখন বৃত্তের ব্যাসার্ধ থেকে ক্ষেত্রফল নির্নয়ের সূত্র a = π r2 ব্যবহার করে বৃত্তের ক্ষেত্রফল নির্নয় করবে এবং আউটপুট মেমরি তে সেভ করবে এবার এই নির্নিত ক্ষেত্রফল প্রোগ্রামটি স্ক্রিন এ প্রিন্ট করবে উপরোক্ত প্রতিটি স্টেপ এর জন্য আপনার প্রোগ্রামটিতে এক বা একাধিক কম্পিউটার ইন্সট্রাকশন লিখতে হবে। কম্পিউটারের ক্ষেত্রে সবচেয়ে বড় সুবিধা হল এই একবার প্রোগ্রাম লিখে সেটা বারবার ব্যাবহার করা যাবে এবং কম্পিউটার অনেক দ্রুত এরকম লক্ষ লক্ষ ইন্সট্রাকশন খুব ই অল্প সময়ের মধ্যে (অনেক ক্ষেত্রে এক সেকেন্ডের ও কম সময়ে) এক্সিকিউট করে দিতে পারে যেই একই কাজ একজন মানুষ করতে অনেক দিন এমনকি বছর খানেক সময় ও লেগে যেতে পারে।

কম্পিউটার ও বাইনারি সংখ্যা ১ ভূমিকা

কম্পিউটারে যত ইনফরমেশন সংরক্ষিত থাকে তার সবই কম্পিউটারের মেমরিতে ০ আর ১ এই দুই সংখ্যার মাধ্যমে প্রকাশ করা হয়। কারণ কম্পিউটার যেহেতু ইলেক্ট্রনিক সার্কিট দিয়ে তৈরি, তাই কম্পিউটার বোঝে মেমরির একটি সেল এ ভোল্টেজ আছে কি নেই। এই ভোল্টেজ থাকা না থাকার উপর ভিত্তি করে কম্পিউটার ধরে নেয় মেমরির ওই সেল এ একটি সংখ্যা রয়েছে যার মান হল ০ (অফ) অথবা ১ (অন)। যেহেতু কম্পিউটার ০ আর ১ ছাড়া আর কোন কিছু বোঝে না, তাই আমরা ০ ও ১ ছাড়া অন্য কোন সংখ্যা যদি কম্পিউটারকে বোঝাতে চাই, তাহলে তাকে ০ ও ১ এর সমন্বয়ে বুঝিয়ে দেই।

আমরা সাধারণত যে সংখ্যা পদ্ধতি ব্যাবহার করি, তাতে ১০ টি ভিন্ন অংক রয়েছে, যার মাধ্যমে আমরা সকল সংখ্যাকে বুঝিয়ে থাকি। যেমন ০-৯ পর্যন্ত আমরা আলাদা অংক ব্যাবহার করি, কিন্তু এরপর ১০ বোঝাতে আমরা ১ এবং ০ এই দুটি সংখ্যাকে পাশাপাশি বসিয়ে লিখে থাকি। এমনি করে ০-৯ পর্যন্ত অংকগুলোকে আমরা পাশাপাশি লিখে একাধিক অংক ব্যাবহার করে অন্য সকল সংখ্যাকে লিখতে পারি। একে বলা হয় ডেসিমাল বা দশমিক পদ্ধতি। ঠিক তেমনি কম্পিউটার যেহেতু দুইটি অংক ০ ও ১ বোঝে, সুতরাং আমরা একাধিক ০ ও ১ অংক পাশাপাশি লিখে সকল সংখ্যাকে এভাবে বোঝাতে পারি। একে বলা হয় বাইনারি পদ্ধতি। সুতরাং আমরা যদি বাইনারিতে ২ লিখতে চাই, তাহলে ১ আর ০ পাশাপাশি লিখে দুই বোঝাতে পারি। অর্থাৎ বাইনারীতে ১০ = দশমিকে ২, বাইনারিতে ১১ = দশমিকে ৩, বাইনারিতে ১০০ = দশমিকে ৪, বাইনারিতে ১০১ = দশমিকে ৫ ইত্যাদি।

কম্পিউটার ও বাইনারি সংখ্যা ২ ভূমিকা

পুর্বের পাঠে আমরা দেখেছি কম্পিউটার কিভাবে সংখ্যাকে তার মেমরিতে সেভ করে রাখে শুধুমাত্র ০ ও ১ এর মাধ্যমে। আমরা দেখেছি আমরা যেকোন সংখ্যাকে এই বাইনারি ফরম্যাটে রাখতে পারি। এখন কথা হল, আমরা তো শুধু সংখ্যাই নয়, ইংরেজি বা অন্যান্য ভাষার অক্ষরগুলোও রাখতে চাই। সেটা কিভাবে করা যেতে পারে? উত্তরটা সহজ, একেকটি অক্ষরগুলোকে আমরা একেকটি বিশেষ সংখ্যা দিয়ে প্রকাশ করতে পারি। যেমন ইংরেজি অক্ষর A কে ধরে নেয়া হল তার মান হবে ৬৫, B এর মান ধরে নেয়া হল ৬৬ ইত্যাদি। এভাবে একটি আন্তর্জাতিকভাবে স্বীকৃত একটি স্ট্যান্ডার্ড তৈরি করা হল যাতে সকল ইংরেজি অক্ষরের জন্য একটি করে সংখ্যাভিত্তিক মান নির্ধারন করা হল। একে বলা হয় ASCII স্ট্যান্ডার্ড। পরবর্তীতে অন্যান্য ভাষাসহ আরেকটি স্ট্যান্ডার্ড তৈরি করা হয় যার নাম Unicode. এসব বিষয়ে বিস্তারিত আমরা পরে দেখবো।

আপাতত জেনে রাখি, কম্পিউটার সবকিছুকেই ০ আর ১ দিয়ে বোঝে।

সংক্ষিপ্ত ইতিহাস ভূমিকা

আপনি হয়তো ভাবছেন কিভাবে এই প্রোগ্রামিং ভাষার উৎপত্তি আর কেনই বা এর নাম C? ১৯৭২ সালের দিকে বেল টেলিফোন ল্যাবরেটরিতে ডেনিস রিচি নামের এক কম্পিউটার বিজ্ঞানী এই প্রোগ্রামিং ভাষা তৈরি করেন। এই প্রোগ্রামিং ভাষাটি তিনি তৈরি করেন ইউনিক্স নামের একটি অনন্য কম্পিউটার অপারেটিং সিস্টেম ডিজাইন করতে গিয়ে। বলে নেয়া ভাল যে বর্তমান পৃথিবীর অন্যতম নামকরা কম্পিউটার ও মোবাইল অপারেটিং সিস্টেমসমূহ মূলত এই ইউনিক্স অপারেটিং সিস্টেম এর উপর ভিত্তি করে তৈরি হয়েছে।

সি এমন একটি শক্তিশালী প্রোগ্রামিং ভাষা, যে এটি খুব দ্রুত জনপ্রিয় হয়ে উঠে। সি প্রোগ্রামিং ভাষা তৈরি করার পুর্বে বেল ল্যাবেরই আরেক কম্পিউটার বিজ্ঞানী তৈরি করেছিলেন প্রোগ্রামিং ভাষা যার নাম ছিল B. তো ডেনিস রিচি ভাবলেন B এর পরে যে ভাষা তার নাম হওয়া উচিত C, ব্যাস, এর নাম তিনি রাখলেন সি। আশা করছি পাঠক আপনি ইতোমধ্যেই ধরতে পেরেছেন, বেল ল্যাবের প্রথম ভাষাটির নাম B ছিল কেন :)

প্রোগ্রামিং ভাষার ক্রমবিকাশ ভূমিকা

একটি কম্পিউটারকে প্রোগ্রাম করতে অনেক রকমের ভাষা তৈরি করেছেন কম্পিউটার বিজ্ঞানীরা। এ সকল ভাষার মধ্যে সবচাইতে বেসিক ভাষা হচ্ছে মেশিন ল্যাঙ্গুয়েজ, যা হল বাইনারি সংখ্যার মাধ্যমে কম্পিউটারকে দেয়া কিছু ইন্সট্রাকশন যা কম্পিউটার এর সার্কিট কে নিয়ন্ত্রণ করে কিছু কাজ করে দেয়। কিন্তু মেশিন ল্যাঙ্গুয়েজ এ প্রোগ্রাম লিখা মানুষের জন্য অনেক সময়সাপেক্ষ ও কঠিন, কেননা একেকটি কাজের ইন্সট্রাকশনের জন্য একেকটি বাইনারি সংখ্যা মনে রাখা অনেকটা অসম্ভব ই বলা চলে। এছাড়া একেক কম্পিউটারের কর্মক্ষমতা ও সার্কিট ডিজাইন অনুসারে তার জন্য মেশিন ইন্সট্রাকশন গুলো একেক রকম হয়ে থাকে। তাই এক কম্পিউটারের জন্য লিখা একটি প্রোগ্রাম অন্য কম্পিউটারে ঠিকঠাক নাও চলতে পারে।

তাই কম্পিউটার বিজ্ঞানীরা ঠিক করলেন, প্রোগ্রাম লিখা হবে হাই লেভেল ল্যাঙ্গুয়েজ এ যেখানে সংখ্যার বদলে মনে রাখার সুবিধার্থে একেকটি ইন্সট্রাকশনের জন্যে একেকটি শব্দ তারা ঠিক করে নিলেন যাতে সেগুলো মনে রাখা সুবিধাজনক হয়। আর তারা আরেকটি প্রোগ্রাম লিখলেন মেশিন ল্যাঙ্গুয়েজ ব্যাবহার করে যেটি কিনা ওই শব্দগুলোকে কম্পিউটারের ভাষায় অর্থাৎ সংখ্যায় পরিবর্তন করে দেয়। এর নাম রাখলেন তারা অ্যাসেম্বলার আর প্রোগ্রামিং ল্যাঙ্গুয়েজ টির নাম রাখা হল এসেম্বলি (Assembly) ল্যাঙ্গুয়েজ। আর একেক ধরনের কম্পিউটার এর আর্কিটেকচারের জন্য একেকটি অ্যাসেম্বলার লিখা হল, যেন একই প্রোগ্রাম লিখে তাকে একেক কম্পিউটারে রান করা যায়। ব্যাস, এবার সবাই এসেম্বলি ল্যাংগুয়েজ এ কোড লিখতে শুরু করলেন। কিন্তু অচিরেই দেখা গেল, এসেম্বলি ল্যাঙ্গুয়েজ এ বড় কোন প্রোগ্রাম লিখতে গেলে সবকিছু কেমন যেন গোলমাল পেকে যাচ্ছে আর সাধারণ কিছু কাজ করতেও অনেক ইন্সট্রাকশন লিখতে হচ্ছে।

এসব সমস্যা সমাধান করতে কম্পিউটার বিজ্ঞানীরা মননিবেশ করলেন কি করে কম্পিউটার প্রোগ্রামিং এর ভাষাকে আরও মানুষের ভাষার ন্যায় বোধগম্য করে তোলা যায় এবং মানুষ যেভাবে লজিক চিন্তা করে, সেভাবে প্রোগ্রামগুলো লিখতে পারা যায়। এসব গবেষণা থেকেই পরবর্তিতে কম্পিউটার বিজ্ঞানীরা বেশ কিছু কম্পিউটার ল্যাঙ্গুয়েজ এর উদ্ভাবন করেন। এ সকল ল্যাঙ্গুয়েজ এর মধ্যে সি (C) অন্যতম এবং আজ অবধি অত্যন্ত জনপ্রিয় ও হাই পারফরমেন্স ল্যাঙ্গুয়েজ, যা এখনো বড় বড় অপারেটিং সিস্টেম, সার্ভার কম্পিউটার এমনকি স্যাটেলাইট ও মহাশূন্য অভিযানের সিস্টেম কন্ট্রোল এর গুরুত্বপুর্ন কাজে বহুল ব্যাবহৃত একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ।

প্রোগ্রামিং ভাষা ও কম্পাইলার ভূমিকা

আপনার মনে এই প্রশ্ন আসা স্বাভাবিক যে, সি এর মত হাই লেভেল ল্যাঙ্গুয়েজে লিখা একটি প্রোগ্রাম কম্পিউটার কিভাবে বুঝতে পারে? কেননা কম্পিউটার তো শুধু ০ আর ১ ছাড়া কিছু বোঝেনা। নাহয় বুঝলাম সব সংখ্যা আর টেক্সট কেও ০ আর ১ দিয়ে বোঝানো হয়েছে ASCII কোডের মাধ্যমে। কিন্তু সি ভাষা তো শুনলাম নাকি অনেকটা মানুষের বোধগম্য ভাষার মত করে লিখা যায়। তো কম্পিউটার সেটা কিভাবে বোঝে?

ঠিক ধরেছেন। কম্পিউটার আসলে ০ আর ১ ছাড়া কিছু বোঝেনা। কিন্তু ওই যে এসেম্বলি ল্যাঙ্গুয়েজ যেভাবে একেকটা ইন্সট্রাকশন একেকটা শব্দ লিখে বোঝানো হত আর এসেম্বলার নামের মেশিন ল্যাঙ্গুয়েজ এ লিখা প্রোগ্রামটি সেটি ০ আর ১ এর ইন্সট্রাকশন সেট এ পরিবর্তন করে দিত, ঠিক তেমনি, সি ল্যাঙ্গুয়েজ এ আমরা অনেকটা বোধগম্য ভাষায় যেটা লিখে দেই, সেটাকে কম্পিউটারের ভাষায় ট্রান্সলেট করে দেয় আরেকটি এসেম্বলি ভাষায় লিখা প্রোগ্রাম যেটি লিখেছিলেন ডেনিস রিচি নামের এক কম্পিউটার বিজ্ঞানী, যার নাম দেয়া হয়েছিল কম্পাইলার। মূলত সি ভাষার মুল বেসিক অংশের জন্য কম্পাইলার লিখা হয়েছিল এসেম্বলি ভাষায়, তারপর বাকি অংশ লিখা হয়েছিল এই সি ভাষার বেসিক অংশ দিয়েই। মজার না?

সুতরাং আমরা জানলাম কম্পাইলার এর কাজ হল সি ভাষায় লিখিত প্রোগ্রামকে কম্পিউটারের বোধগম্য ভাষায় ট্রান্সলেট করে দেয়া। সি ভাষায় প্রোগ্রাম লিখতে গিয়ে আপনি যদি এই ভাষার নিয়ম কানুন ঠিকমত না মেনে লিখেন অথবা অজান্তে ভুল করে বসেন, তাহলে কম্পাইলার আপনাকে জানিয়ে দেবে আপনার প্রোগ্রাম বা কোডটির কোন লাইনে কোথায় ভুল হয়েছে। কম্পাইলার যে ভুল ধরতে পারে তাকে বলা হয় কম্পাইলেশন এরর (Compilation Error)

কম্পাইলার ও লিংকার ভূমিকা

কম্পাইলার সাধারণত একটি হাই লেভেল প্রোগ্রাম ইনপুট হিসেবে নেয়, যাকে বলা হয় সোর্স কোড আর আউপুট দেয় একটি মেশিন ল্যাঙ্গুয়েজ প্রোগ্রাম যাকে বলা হয় অবজেক্ট কোড। এই অবজেক্ট কোডকে আবার আপনার অপারেটিং সিস্টেম এ রান করার জন্য উপযুক্ত করে দেয় আরেকটি প্রোগ্রাম যার নাম লিংকার (Linker)। এই লিংকার আপনার অবজেক্ট কোডটির সাথে কিছু প্রয়োজনীয় লাইব্রেরি ফাংশন ও অপারেটিং সিস্টেম এর জন্য কিছু প্রয়োজনীয় ইন্সট্রাকশন সংযুক্ত করে দেয় এবং তৈরি করে একটি এক্সিকিউটেবল প্রোগ্রাম বা exe ফাইল। এই লাইব্রেরি ফাংশন ও এক্সিকিউটেবল তৈরি প্রক্রিয়া নিয়ে আমরা পরে কোন এক সময় আলাপ করবো। আপাতত জেনে রাখুন, এই কম্পাইলেশন ও লিংকিং এর কাজগুলো এই ওয়েবসাইটের আপনার জন্য করে দেবে, যেন আপনি শুধুমাত্র প্রোগ্রামিং এ মনযোগ দিতে পারেন এবং শুধুমাত্র "রান করুন" বাটনে চাপ দিয়েই কাঙ্ক্ষিত প্রোগ্রামের আউটপুট দেখতে পারেন এবং সঠিক হয়েছে কিনা তা যাচাই করতে পারেন।

ব্যবহারের এর সুবিধা ভূমিকা

হাই লেভেল প্রোগ্রামিং ভাষা বলতে সাধারণত সেসব প্রোগ্রামিং ভাষাকে বোঝানো হয়, যেগুলো মানুষের ব্যবহৃত বিভিন্ন ভাষার (বাংলা, ইংরেজী ইত্যাদি) কাছাকাছি। সি, জাভা, প্যাসকেল ইত্যাদি হাই লেভেল প্রোগ্রামিং ভাষার কিছু উদাহরন।

সি এর ন্যায় হাই লেভেল প্রোগ্রামিং ভাষা ব্যবহার করার বেশ কিছু সুবিধা রয়েছে। সাধারণত সি ভাষায় লিখিত একটি ইন্সট্রাকশন মেশিন ল্যাঙ্গুয়েজ এ লিখিত একাধিক ইন্সট্রাকশনের সমতুল্য। এতে করে আমাদের প্রোগ্রাম লিখার কাজ অনেক সরল হয় এবং সঠিক প্রোগ্রাম লিখা সহজতর হয়ে উঠে। এছাড়া বিভিন্ন ধরনের কম্পিউটারের জন্য লিখা প্রোগ্রাম একই ধরনের হয় এবং খুব অল্প বা একেবারেই পরিবর্তন ছাড়া তা অন্য কম্পিউটারে চালানো যায়। এতে করে একই প্রোগ্রাম বিভিন্ন আর্কিটেকচারের কম্পিউটারে ব্যবহার করা যায়, অনেক সময় বাঁচে এবং একজন প্রোগ্রামারের তৈরি করা সফটওয়্যার অন্য অনেক সাধারণ মানুষ তাদের কম্পিউটারে ব্যবহার করতে পারেন।

প্রোগ্রাম তৈরি করার প্রস্তুতি ভূমিকা

আপনি যখন কোন সমস্যা সমাধান করবেন, তখন আপনাকে কিছু ধাপে ধাপে এগোতে হবে। প্রথমে আপনি সমস্যাটি কি, তা নির্ধারন করবেন। আপনি যদি সমস্যাটিই ঠিকমত না বোঝেন তাহলে তা সমাধান করা অসম্ভব। যখন আপনি জানবেন যে সমস্যাটি কি, তখনই কেবল আপনি তা সমাধান করার জন্য প্ল্যান করতে পারবেন। আর আপনার প্ল্যানের মাধ্যমেই আপনি সমাধানটি বাস্তবে প্রয়োগ করতে পারবেন। আর আপনার প্ল্যানের বাস্তব প্রয়োগ ঘটাবার পর এর ফলাফল আপনাকে পরীক্ষা করে দেখতে হবে যে আসলেই তা সমস্যাটি সমাধান করেছে কিনা। যদি না হয়, হয়তো আপনি খতিয়ে দেখবেন যে আপনার প্রয়োগ পদ্ধতিতে কোন সমস্যা ছিল নাকি আপনার প্ল্যানটি সঠিক ছিলনা। এভাবে সমস্যাটি সমাধান না হওয়া পর্যন্ত হয়তো আপনি আপনার পরিকল্পনা ও প্রয়োগ পদ্ধতিকে সংস্কার করে আবার চেষ্টা করবেন।

এমনি করে যেমন আপনি বাস্তব জীবনের অনেক ক্ষেত্রে নানান সমস্যার সমাধান করতে পারেন, ঠিক তেমনি প্রোগ্রামিং ও অনেকটা কোন সমস্যা সমাধানের মতই। যখন আপনি একটি সি প্রোগ্রাম (বা যেকোন কম্পিউটার প্রোগ্রাম) লিখবেন, আপনাকে অনেকটা একই রকম ধাপগুলো অনুসরণ করতে হবেঃ

প্রোগ্রামটি কি কাজ করবে তা যথাযথভাবে নির্ধারন করা

প্রোগ্রামটি লিখতে আপনি কি ধরনের পদ্ধতি অনুসরণ করবেন তা ঠিক করা

প্রোগ্রামটি তৈরি করা অর্থাৎ কোড লিখে ফেলা

প্রোগ্রামটি রান করানো এবং ফলাফল দেখে যাচাই করা যে প্রোগ্রামটি তার কাজটি সঠিকভাবে করতে পারছে কিনা

উদাহরণস্বরূপ, প্রোগ্রামটির নির্ধারিত কাজ হতে পারে এমন যে এটি আপনাকে অংক করে দেবে, অথবা স্ক্রিনে আপনার নাম দেখাবে, অথবা একটি রোবটকে পরিচালনা করবে, অথবা নিজে আপনার গাড়িটি ড্রাইভার ছাড়াই চালিয়ে দেবে, অথবা আপনার বন্ধুর সাথে বার্তা আদান প্রদান করতে সহায়তা করবে ইত্যাদি। সহজ অথবা কঠিন যাই হোক না কেন, আপনার প্রোগ্রামটির অবশ্যই একটি নির্ধারিত লক্ষ্য থাকা চাই। সুতরাং লক্ষ্য নির্ধারন করা হয়ে যাওয়া মানে আপনি অত্যন্ত গুরুত্বপুর্ন প্রথম ধাপটি শেষ করেছেন।

দ্বিতীয় ধাপ হল, আপনি প্রোগ্রামটি লিখতে কি পদ্ধতি অনুসরণ করবেন। কি কি তথ্য আপনার প্রয়োজন হবে, কি কি ফরমুলা আপনি ব্যবহার করবেন এবং কিভাবে তা প্রোগ্রামটিতে প্রয়োগ করবেন। উদাহরণস্বরূপ, ধরুন আপনি একটি প্রোগ্রাম লিখতে চাচ্ছেন, যা কিনা একটি বৃত্তের ক্ষেত্রফল বলে দিতে পারবে। প্রথম ধাপটি হয়ে গেছে, কেননা আপনি আপনার প্রোগ্রামের কাজটি কি তা নির্ধারন করে ফেলেছেন। দ্বিতীয় ধাপ হচ্ছে আপনার কি কি তথ্য জানতে হবে একটি বৃত্তের ক্ষেত্রফল বের করতে গেলে। এক্ষেত্রে ধরে নিন এই প্রোগ্রামটির ব্যবহারকারী বৃত্তের ব্যাসার্ধটি লিখে দেবেন, তাহলে বৃত্তের ব্যাসার্ধ থেকে ক্ষেত্রফল বের করবার সূত্রটি আপনার জানা থাকতে হবে যদি আপনি প্রোগ্রামটিকে দিয়ে সঠিক ক্ষেত্রফল বের করতে চান। এখন আপনার যা যা জানা প্রয়োজন তা আপনি জেনেছেন, সুতরাং আপনি ৩ ও ৪ নং ধাপের কাজ শুরু করতে পারেন।