ডাটা টাইপ কি?
যে সকল ঘটনা বা ফ্যাক্ট প্রক্রিয়াকরণের জন্য সংগ্রহ করা হয় তাকে বলা হয় ডাটা বা উপাত্ত। যেমন- ছাত্র ছাত্রীদের রেজাল্ট প্রস্তুত করার জন্য সংগৃহীত নাম, রােল নং, বিভিন্ন বিষয়ের প্রাপ্ত নম্বর হলাে এক একটি ডাটা। আর বিভিন্ন ধরনের ডাটার বিন্যাসই হলাে ডাটা টাইপ। সি প্রােগ্রামিং ভাষা ডাটা টাইপের জন্য বেশ সমৃদ্ধ। সাধারণত ডাটা টাইপ মেশিনের উপর নির্ভরশীল। ANSI C তে চার ধরনের ডাটা ব্যবহৃত হয়। যথা–
(১) মৌলিক বা প্রাইমারী বা ফান্ডামেন্টাল ডাটা টাইপ (Primary or Fundamental data type)
(২) ব্যবহারকারী কর্তৃক সংজ্ঞায়িত বা ইউজার ডিফাইন ডাটা টাইপ (User define data type)
(৩) ডিরাইভড ডেটা টাইপ (Derived data type) এবং
(৪) ফাঁকা বা এ্যামটি ডাটা টাইপ (Empty data type)
সাধারণত ডাটা টাইপ বলতে Primary (or fundamental) data type কেই বােঝানাে হয়। প্রাইমারী ডাটা টাইপকে আবার নিচের মত করে ভাগে ভাগ করা যায়:
(১) মৌলিক বা প্রাইমারী বা ফান্ডামেন্টাল ডাটা টাইপ (Primary or Fundamental data type)
(২) ব্যবহারকারী কর্তৃক সংজ্ঞায়িত বা ইউজার ডিফাইন ডাটা টাইপ (User define data type)
(৩) ডিরাইভড ডেটা টাইপ (Derived data type) এবং
(৪) ফাঁকা বা এ্যামটি ডাটা টাইপ (Empty data type)
সাধারণত ডাটা টাইপ বলতে Primary (or fundamental) data type কেই বােঝানাে হয়। প্রাইমারী ডাটা টাইপকে আবার নিচের মত করে ভাগে ভাগ করা যায়:
- Integer data
- Floating data
- Character data
- Double data
সি স্ট্যান্ডার্ড লাইব্রেরি ফাংশন কি?
বিশেষ কিছু কাজ করার জন্য সি ভাষায় বিল্ট-ইন কিছু ফাংশন আছে তাদেরকে লাইব্রেরি ফাংশন (Library Function) বলে। প্রােগ্রামরা যাতে অল্প সময়ে ভালাে প্রােগ্রাম লিখে দ্রুত ফলাফল পায় সেজন্য সি ভাষায় অনেক লাইব্রেরি ফাংশন আছে। যেমন কোন সংখ্যার ঘাত (power) নির্ণয় করার জন্য নিজে নিজে কোড লিখে বের করা যায়। কিন্তু সি ভাষায় pow ( ) ফাংশন নামে লাইব্রেরি ফাংশন আছে যেটি ব্যবহার করলেই অনেক সহজে ও দ্রুত কোন সংখ্যার ঘাত পাওয়া যায়।
scanf("%f%f", &a,&b) কি?
scanf("%f%f", &a, &b) কে সি-প্রোগ্রামিং ভাষায় ইনপুট স্টেটমেন্ট বলা হয়। প্রোগ্রামের মাধ্যমে কম্পিউটারকে কোনো তথ্য দেওয়ার জন্য scanf () স্টেটমেন্ট ব্যবহৃত হয়। এখানে, %f কে floating টাইপের মান ভগ্নাংশ পর্যন্ত প্রদর্শনের জন্য &a ও &b ব্যবহৃত হয়। অর্থাৎ চলক a ও b তে আলাদা আলাদা দুটি ভগ্নাংশ মান ইনপুট হিসাবে গ্রহণ হবে।
বিটওয়াইজ অপারেটর কি?
সি প্রোগ্রামে বাইনারি ডেটা, অর্থাৎ বিট/বাইট নিয়ে বিভিন্ন রকমের যৌক্তিক অপারেশন যেমন– অর, এন্ড, নট, এক্স-অর, লেফট, রাইট শিফট ইত্যাদি সম্পন্ন করার জন্য বিটওয়াইজ অপারেটর ব্যবহৃত হয়। এদের মধ্যে বিটওয়াইজ নট হলো ইউনারি অপারেটর, অন্যগুলো বাইনারি অপারেটর। তবে বিটওয়াইজ অপারেটর কেবল int টাইপের ডেটা নিয়ে কাজ করে। বিটওয়াইজ অপারেশনের পূর্বে কম্পাইলার উভয় অপারেন্ডের মান বাইনারিতে পরিবর্তন করে এবং অপারেন্ড দুইটির ডান দিক থেকে জোড়ায় জোড়ায় (বিট বাই বিট) অপারেশন সম্পন্ন করে।
Syntax Error কি?
প্রোগ্রাম তৈরির জন্য কোডিংয়ে ব্যবহৃত প্রোগ্রামিং ভাষার গঠনগত বা ব্যাকরণগত ভুলকে Syntax Error বলা হয়।
মডুলার প্রােগ্রামিং কি?
দীর্ঘ এবং জটিল প্রােগ্রাম, প্রােগ্রামারের পক্ষে রচনা, পরীক্ষা ও ভুল নির্ণয় করা কষ্টসাধ্য। সুতরাং দীর্ঘ ও জটিল প্রােগ্রামকে ছােট ছােট প্রােগ্রামে বিভক্ত করা হয়। এ ছােট প্রােগ্রামকে মডিউল বলে। একটা মডিউল নিজেই একটা প্রােগ্রাম যাকে পৃথকভাবে আবার সাব মডিউলে বিভক্ত করা হয়। মডিউলে বিভক্ত করে প্রােগ্রাম লেখার পদ্ধতিকে মডুলার প্রােগ্রামিং বলা হয়।
স্ট্রাকচার্ড প্রােগ্রামিং কি?
স্ট্রাকচার্ড প্রােগ্রামিং হলাে প্রসিডিউরাল প্রােগ্রামিং এর সাবসেট যা প্রােগ্রামকে সহজ করার জন্য লজিক্যাল স্ট্রাকচার প্রয়ােগ করে থাকে। এটি হলাে একটি টপ-ডাউন ডিজাইন মডেল যাতে ডেভলপাররা সম্পূর্ণ প্রােগ্রামকে পৃথক সাবসেকশনে বিভক্ত করতে পারে। এতে প্রােগ্রামের স্টেটমেন্টগুলাে ভিন্ন ভিন্ন শ্রেণিতে বিভক্ত করে লেখা হয়। স্টেটমেন্টের সংখ্যা এক এক শ্রেণির জন্য একেক রকম হতে পারে। এর প্রত্যেকটি শ্রেণি ভিন্ন ভিন্ন কাজ করে থাকে। এতে লুপিং স্ট্রাকচার যেমন- "for," "repeat," এবং "while" ইত্যাদি ব্যবহৃত হয়। কিন্তু "Go To" স্টেটমেন্ট ব্যবহারে অনুৎসাহিত করা হয়। এ প্রােগ্রাম সহজে অনুধাবনযােগ্য এবং ডিবাগিং করা সহজ। ইহা সহজে রচনা করা যায় এবং রক্ষণাবেক্ষণ সহজ।
উদাহরণঃ বেসিক, ফরট্রান, কোবল, প্যাস্কেল, সি ইত্যাদি।
উদাহরণঃ বেসিক, ফরট্রান, কোবল, প্যাস্কেল, সি ইত্যাদি।
কম্পাইলার কি কি কাজ করে?
১. উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে অনুবাদ করে।
২. প্রোগ্রামকে লিঙ্ক (Link) করে। অর্থাৎ প্রোগ্রামের সঙ্গে প্রয়োজনীয় রুটিন (Routine) যোগ করা। রুটিন হলো প্রোগ্রামের কোন ছোট অংশ যাতে কোন নির্দিষ্ট কাজ করার জন্য উপযুক্ত নির্দেশ দেওয়া থাকে।
৩. প্রোগ্রামে কোন ভুল থাকলে তা জানানো।
৪. মূখ্য স্মৃতিতে প্রয়োজনীয় স্মৃতি অবস্থানের ব্যবস্থা করা (Allocation)।
৫. প্রয়োজনে বস্তু বা উৎস প্রোগ্রামকে ছাপিয়ে বের করা।
২. প্রোগ্রামকে লিঙ্ক (Link) করে। অর্থাৎ প্রোগ্রামের সঙ্গে প্রয়োজনীয় রুটিন (Routine) যোগ করা। রুটিন হলো প্রোগ্রামের কোন ছোট অংশ যাতে কোন নির্দিষ্ট কাজ করার জন্য উপযুক্ত নির্দেশ দেওয়া থাকে।
৩. প্রোগ্রামে কোন ভুল থাকলে তা জানানো।
৪. মূখ্য স্মৃতিতে প্রয়োজনীয় স্মৃতি অবস্থানের ব্যবস্থা করা (Allocation)।
৫. প্রয়োজনে বস্তু বা উৎস প্রোগ্রামকে ছাপিয়ে বের করা।
ইউজার ডিফাইন্ড ফাংশন
সি কম্পাইলারে অনেক বিল্ট-ইন/লাইব্রেরি ফাংশন থাকা সত্ত্বেও প্রোগ্রাম রচনার সময় চাহিদা অনুযায়ী সব রকম ফাংশন পাওয়া যায় না। সেক্ষেত্রে প্রোগ্রামার তার নিজস্ব প্রয়োজন এবং প্রজ্ঞা অনুযায়ী যেসকল ফাংশন তৈরি করে প্রোগ্রাম তথা main() ফাংশনে ব্যবহার করেন সেগুলোকে ইউজার ডিফাইন্ড (User Defined) বা ব্যবহারকারী বর্ণিত ফাংশন বলা হয়। এই ফাংশন আকার আকৃতি ও সমস্যার ধরন, সমাধানের কৌশলের উপর নির্ভর করে। ফাংশনের অংশ/উপাদান হলো–
১. ফাংশন বর্ণনা (Function definition)
২. ফাংশন কল (Function call)
৩. ফাংশন প্রোটোটাইপ (Function prototype)
৪. ফাংশনের রিটার্ন টাইপ ও রিটার্ন স্টেটমেন্ট (Functions return type & return statement)
১. ফাংশন বর্ণনা (Function definition)
২. ফাংশন কল (Function call)
৩. ফাংশন প্রোটোটাইপ (Function prototype)
৪. ফাংশনের রিটার্ন টাইপ ও রিটার্ন স্টেটমেন্ট (Functions return type & return statement)
ভেরিয়েবল এবং কীওয়ার্ড এর মধ্যে পার্থক্য কি?
ভেরিয়েবল হলো প্রোগ্রামার কর্তৃক প্রদত্ত মেমোরি লোকেশনের নাম, যেখানে প্রোগ্রাম নির্বাহের সময় পরিবর্তনশীল মান বা ডেটা সংরক্ষণ করা হয়। আর কীওয়ার্ড হলো নির্দিষ্ট অর্থপূর্ণ কোন ওয়ার্ড, যা প্রোগ্রামে একটি নির্দিষ্ট কার্য সম্পাদন করে এবং প্রোগ্রাম কম্পাইলের সময় পূর্ব নির্ধারিত কিছু প্রোগ্রাম কোড উৎপন্ন হয়। ভেরিয়েবলের নাম হিসেবে কোন কীওয়ার্ড ব্যবহার করা যায় না।
রিকার্সিভ ফাংশন কি? এর বৈশিষ্ট্য, সুবিধা, অসুবিধা
একটি ফাংশন অন্য কোনাে ফাংশনকে কল করতে পারে। সি-তে রিকার্সিভ নামে এক বিশেষ ধরনের ফাংশন ব্যবহৃত হয় যা প্রয়ােজনে নিজেই নিজেকে কল করতে পারে। অর্থাৎ যখন কোনাে ফাংশন নিজেই নিজেকে কল করে তখন তাকে রিকার্সিভ ফাংশন বলা হয় এবং এই প্রক্রিয়াকে রিকার্সন বলা হয় এবং এইরূপ ফাংশন কলকে বলে রিকার্সিভ কল। রিকার্সিভ ফাংশন একটি নির্দিষ্ট অবস্থা পর্যন্ত নিজেকে কল করতে পারে এবং এর ফলে একটি একটি শিকল এর সৃষ্টি হয়। রিকার্সিভ ফাংশনের মধ্যে এমন একটি ব্যবস্থা থাকতে হবে যাতে এক পর্যায়ে গিয়ে রিকার্সন শেষ হয়। অর্থাৎ আর রিকার্সন কল না ঘটে। এই ব্যবস্থাকে বলে রিকার্সনের টার্মিনেটিং কন্ডিশন।
রিকার্সিভ ফাংশনের বৈশিষ্ট্য
রিকার্সিভ ফাংশনের বৈশিষ্ট্য
- রিকার্সিভ ফাংশন নিজেই নিজেকে কল করে।
- প্রতিটি রিকার্সিভ ফাংশনের একটি টার্মিনেটিং কন্ডিশন থাকতেই হবে; তা না হলে রিকার্সিভ কল চলতেই থাকে।
- মূলত রিকার্সিভ ফরমুলা বা সিরিজ সহজে রিকার্সিভ ফাংশন দিয়ে সমাধান করা যায়।
রিকার্সিভ ফাংশন ব্যবহারের সুবিধা
- প্রােগ্রামের জটিলতা অনেক কমে যায়।
- অনেক কম সংখ্যক ভেরিয়েবলের প্রয়ােজন হয় এবং প্রােগ্রাম সহজ ও সুন্দর হয়।
রিকার্সিভ ফাংশন ব্যবহারের অসুবিধা
- প্রােগ্রাম সম্পাদনের সময় অনেক বাড়িয়ে দেয়।
- রিকার্সিভ ফাংশন ব্যবহার করলে লুপের সংখ্যা বেড়ে যায়।
#include<stdio.h>
long int factorial(int n); /*function prototype*/
main()
{
int n;
printf(“Type the desire value : ”);
scanf(“%d”,&n);
printf(“Factorial value is %ld\n”,factorial(n));
}
long int factorial(int n)
{
if (n<=1)
return (1);
else
return (n*factorial(n-1));
long int factorial(int n); /*function prototype*/
main()
{
int n;
printf(“Type the desire value : ”);
scanf(“%d”,&n);
printf(“Factorial value is %ld\n”,factorial(n));
}
long int factorial(int n)
{
if (n<=1)
return (1);
else
return (n*factorial(n-1));
অ্যারে ও চলক এক নয়
ভেরিয়েবল বা চলক হলো মেমোরি লোকেশনের নাম বা ঠিকানা। প্রোগ্রামে ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি ভেরিয়েবল বা চলক ব্যবহার করা হয়। যেমন: প্রোগ্রামে একজন ছাত্রের রোল নম্বর রাখার জন্য roll নামে একটি চলক ব্যবহার করা হলে এর বিপরীতে একটি রোল নম্বর প্রোগ্রামে ব্যবহার করা যাবে। অপরদিকে, অ্যারে হচ্ছে একই ধরনের ডেটার জন্য ব্যবহৃত চলকের একটি সিরিজ। যেমন: roll[20] একটি অ্যারে যেখানে ২১ জন ছাত্রের রোল নাম্বার রাখা যাবে। অ্যারে একমাত্রিক, দ্বিমাত্রিক ও ত্রিমাত্রিক হতে পারে। তাই বলা যায় অ্যারে এবং চলক এক নয়।
ভেরিয়েবল কি?
ভেরিয়েবল হচ্ছে একটি মেমরি লােকেশন/এরিয়া, যা যেকোনাে ধরনের ভ্যালুকে সাময়িকভাবে সেভ করে রাখতে পারে। প্রতিটি প্রােগ্রামিং ল্যাঙ্গুয়েজেই ভেরিয়েবল ব্যবহার করা হয়ে থাকে। পাইথনে ভেরিয়েবল ব্যবহার করে বিভিন্ন ডাটাকে অস্থায়ীভাবে মেমরিতে সংরক্ষণ করা হয়। ভেরিয়েবলে কোনাে ভ্যালু অ্যাসাইন করা হলে তা প্রােগ্রামের রান টাইমে মেমরিতে লােড হয়। ভেরিয়েবলের ভ্যালু ডায়নামিক্যালি প্রােগ্রামের রানটাইমে পরিবর্তন হতে পারে। বিভিন্ন ধরনের ডাটা অপারেশনে ভেরিয়েবল ব্যবহার করা হয়ে থাকে। ভেরিয়েবলের সাথে তিনটি বিষয় সংশ্লিষ্ট থাকে। যেমন- ভেরিয়েবল নেম, ভেরিয়েবল ভ্যালু এবং মেমরি অ্যাড্রেস। সাধারণত প্রতিটি মেমরি লােকেশনেরই একটি করে ফিজিক্যাল অ্যাড্রেস থাকে। এই ফিজিক্যাল অ্যাড্রেস ব্যবহার করেই মেমরি লােকেশনকে খুঁজে বের করা হয়। মেমরি অ্যাড্রেস মনে রাখা কঠিন বলে মেমরি লােকেশনের অ্যাড্রেসের পরিবর্তে একটি নাম ব্যবহার করা হয়, যা হচ্ছে ভেরিয়েবল নেম। মেমরি লােকেশনে ভেরিয়েবলে যে ভ্যালু বা ডাটাকে স্টোর করা হয়, তাকে ভেরিয়েবল ভ্যালু।
ভেরিয়েবল ব্যবহারের কারণ কি?
ভেরিয়েবল ব্যবহারের কারণগুলো তুলে ধরা হলো-
- ডাটাকে অস্থায়ীভাবে সংরক্ষণ করা যায়।
- মেমরি লােকেশনের অ্যাড্রেস মনে রাখা প্রয়ােজন হয় না।
- বিভিন্ন ধরনের ডাটা অপারেশনে ভেরিয়েবল ব্যবহার করা যায়।
- বিভিন্ন ধরনের ডাটা টাইপের ডাটাকে সংরক্ষণ করতে পারে।
- রানটাইমে ভেরিয়েবলের ডাটা টাইপ ভ্যালুর ডাটা টাইপ অনুযায়ী পরিবর্তিত হতে পারে।
- প্রােগ্রামের রানটাইমে ডাটাকে পরিবর্তন করা যায়।
- একবার ভ্যালু অ্যাসাইন করার পর উক্ত ভেরিয়েবলকে প্রােগ্রামের বিভিন্ন স্থানে ব্যবহার করা যায় এবং এর ভ্যালুকে যেকোনাে সময় পরিবর্তন করা যায়।
প্রবাহচিত্র বলতে কী বােঝায়?
যে চিত্রের মাধ্যমে কোনাে সিস্টেম বা প্রােগ্রাম কীভাবে কাজ করবে তার গতিধারা নির্দেশ করা হয় তাকে ফ্লোচার্ট বা প্রবাহচিত্র বলে। প্রবাহচিত্র হচ্ছে অ্যালগরিদমের চিত্ররূপ। বড় প্রােগ্রামের ক্ষেত্রে অবশ্যই প্রবাহচিত্র অংকন করতে হবে। কারণ প্রবাহচিত্র থেকে প্রােগ্রাম রচনা সহজ হয়। তা ছাড়া প্রবাহচিত্র থেকে একটি প্রােগ্রাম সম্পর্কে সহজেই সামগ্রিক ধারণা পাওয়া যায়।
অ্যালগরিদম থেকে প্রােগ্রাম রচনা সহজ হয় কেন?
অ্যালগরিদমের মাধ্যমে কোনাে কাজের পরিকল্পনা লিখিত আকারে দেওয়া থাকে। আর পরিকল্পনা মাফিক কাজে অগ্রসর হলে কাজটি সুষ্ঠুভাবে সম্পন্ন হয়। কোনাে কাজের উপায়কে ছােট ছােট অংশে বিভক্ত করে সেই অংশগুলােকে যুক্তিসঙ্গতভাবে পর্যায়ক্রমে কম্পিউটার দিয়ে সম্পন্ন করা হয়। কম্পিউটারে সমস্যা সমাধানের এ যৌক্তিক ক্রমানুসারী পদ্ধতিকে বলা হয় অ্যালগরিদম। তাই অ্যালগরিদম থেকে প্রােগ্রাম রচনা সহজ হয়।
ইনপুট-আউটপুট স্টেটমেন্ট বলতে কী বােঝায়?
প্রােগ্রামে চলকের মান গ্রহণ করার জন্য ব্যবহৃত স্টেটমেন্টকে ইনপুট স্টেটমেন্ট বলে। অপরদিকে যেসকল স্টেটমেন্টের সাহায্যে প্রােগ্রামের ফলাফল মনিটরে প্রদর্শন করা হয়, তাদেরকে আউটপুট স্টেটমেন্ট বলে। কী-বাের্ড থেকে অক্ষর জাতীয় ডেটা ইনপুটের জন্য এবং মনিটরের পর্দায় প্রদর্শনের জন্য C-তে কয়েক ধরনের স্টেটমেন্ট ব্যবহার করা হয়।
ভিজুয়াল প্রােগ্রামিং বলতে কী বােঝায়?
স্ট্রাকচার্ড প্রােগ্রামিং-এর কাঠামাে ও ভাষাকে পরিবেশে রুপান্তরিত করে তৈরি করা প্রােগ্রামিংকে ভিজুয়্যাল প্রােগ্রামিং বলা হয়। ভিজুয়্যাল প্রােগ্রামিং হলাে GUI (Graphical User Interface) পরিবেশে তৈরি করার প্রােগ্রাম। এ পরিবেশে কাজের পরিবেশ দৃশ্যমান। ফলে ব্যবহারকারী বেশি সুবিধা ভােগ করতে পারে। তুলনামূলকভাবে কম নির্দেশ ও স্টেটমেন্ট ব্যবহার করে প্রােগ্রাম রচনা করা যায়।
ইভেন্ট ড্রাইভেন প্রােগ্রামিং বলতে কী বােঝায়?
যে প্রােগ্রামিং এর বিভিন্ন নির্দেশ বা ইনস্ট্রাকশন চিত্রের মাধ্যমে দেওয়া হয় তাকে ইভেন্ট ড্রাইভেন প্রােগ্রামিং বলে। কী-বাের্ডের কোনাে কী তে চাপ দেওয়া, কোনাে বিশেষ কন্ট্রোলের ওপর মাউসের পয়েন্ট দিয়ে ক্লিক করা ইত্যাদি হলাে ইভেন্ট। ব্যবহারকারী যখন কোনাে কমান্ড বাটনের ওপর ক্লিক করেন তখন সেই নির্দেশটি কার্যকর হয়। এক্ষেত্রে Command হচ্ছে ‘নিয়ন্ত্রণ’ বা ‘কন্ট্রোল’ এবং ক্লিক করা হচ্ছে ‘ইভেন্ট’
ফাংশন বলে
বড় কোনাে প্রােগ্রামকে ছােট ছােট অংশে ভাগ করার পদ্ধতিকে ফাংশন বলে। ফাংশন একটি নির্দিষ্ট নামে লাইব্রেরিতে জমা থাকে এবং প্রয়ােজনে সেই ফাংশনের জন্য নির্ধারিত কাজগুলাে করা যায়। C ভাষায় লাইব্রেরি ফাংশনের ব্যবহার আছে এবং এ ভাষায় অনেক ফাংশন সংরক্ষিত থাকে। প্রােগ্রামে ফাংশনগুলাে উল্লেখ করে দিতে হয়। C ভাষায় সবচেয়ে কমন একটি ফাংশন Main () ব্যবহার করা হয়
C প্রােগ্রাম বলতে কী বােঝ?
‘C’ হচ্ছে একটি হাই লেভেল প্রােগ্রামিং ভাষা। কম্পিউটার তার নিজের বােধগম্য ভাষায় নির্দেশনা দানের জন্য সুনির্দিষ্ট নিয়ম অনুযায়ী ব্যবহৃত বর্ণ, শব্দ সংকেত ইত্যাদি বিন্যাসই হচ্ছে প্রােগ্রাম। কম্পিউটারকে নির্দেশ প্রদানের জন্য আমরা যে ভাষা ব্যবহার করে থাকি তাকে প্রােগ্রামের ভাষা বলে। ‘সি’ প্রােগ্রামিং হলাে General purpose structured programming language, যার ফলে গঠিত হয় ফাংশন, এক্সপ্রেশন এবং কিছু সংখ্যক key, word (if, do, while etc) এর সমন্বয়ে।
অ্যারে চলকের সুবিধা কি?
অ্যারে হলাে এমন এক ধরনের ডেটা স্ট্রাকচার যাতে একই ধরনের ডেটা সংরক্ষিত হয়। এর ব্যবহার বেশ সুবিধাজনক। একটি অ্যারের মধ্যে অনেকগুলাে চলকের মান রাখা যায়। অ্যারের element গুলাে মেমােরিতে পাশাপাশি থাকে বলে খুব দ্রুত তাদের Access করা যায়। আবার অ্যারে Declare করলে প্রােগ্রাম খুব দ্রুত নির্বাহ করা যায়। অনেক জটিল প্রােগ্রাম অ্যারে ব্যবহার করে সমাধান করা যায়। তা ছাড়া অ্যারে ব্যবহার করলে প্রােগ্রামের আকার ছােট হয়।
প্রােগ্রামিং এনভায়রনমেন্টের প্রয়ােজনীয়তা কি?
প্রােগ্রাম তৈরির জন্য যে ধাপসমূহ রয়েছে তাই প্রােগ্রামিং এনভায়রনমেন্ট। প্রােগ্রামিং এনভায়রনমেন্ট সম্পর্কে সুস্পষ্ট ধারণা না থাকলে প্রােগ্রাম তৈরি করা সম্ভব নয়। প্রােগ্রাম তৈরির জন্য প্রথমেই সমস্যা চিহ্নিত করে তা বিশ্লেষণ করতে হয়। এরপর প্রােগ্রাম ডিজাইন করে প্রােগ্রামের জন্য কোডিং লিখতে হয়। কোডিং লেখা হলে প্রােগ্রামটি টেস্ট করতে হয়। এক্ষেত্রে ভুল থাকলে ডিবাগিং-এর প্রয়ােজন হয়। সবশেষে প্রােগ্রামটি সংরক্ষণ করতে হয়। এভাবে সবকটি ধাপ মিলেই অর্থাৎ প্রােগ্রামিং এনভায়রনমেন্ট-এর সম্পূর্ণতার মাধ্যমে একটি প্রােগ্রাম তৈরি হয়।
প্রােগ্রামে ইউজার ডিফাইন্ড ফাংশন ব্যবহারের সুবিধাগুলাে কি?
সিস্টেম বিশ্লেষণ বলতে একটি সিস্টেম সম্পর্কে বিস্তারিত পর্যালােচনা করাকে বােঝায়। সিস্টেম বিশ্লেষণ করতে হলে প্রথমে সিস্টেম সম্পর্কে বিস্তারিত জানতে হবে। সিস্টেমের কাজে কোন ধরনের সুবিধা এবং কোন ধরনের অসুবিধা রয়েছে তা খুঁজে বের করতে হবে। সিস্টেমের সুবিধা ও অসুবিধা তদারকি করার পর সমস্যা থাকলে সমাধান করতে হবে। সর্বশেষ সিস্টেমকে আরও আধুনিকায়ন করে তুলতে হবে। এভাবে যেকোনাে সিস্টেম বিশেষণ করা সম্ভব হয়।
সিস্টেম বিশ্লেষণ বলতে কী বােঝায়?
সিস্টেম বিশ্লেষণ বলতে একটি সিস্টেম সম্পর্কে বিস্তারিত পর্যালােচনা করাকে বােঝায়। সিস্টেম বিশ্লেষণ করতে হলে প্রথমে সিস্টেম সম্পর্কে বিস্তারিত জানতে হবে। সিস্টেমের কাজে কোন ধরনের সুবিধা এবং কোন ধরনের অসুবিধা রয়েছে তা খুঁজে বের করতে হবে। সিস্টেমের সুবিধা ও অসুবিধা তদারকি করার পর সমস্যা থাকলে সমাধান করতে হবে। সর্বশেষ সিস্টেমকে আরও আধুনিকায়ন করে তুলতে হবে। এভাবে যেকোনাে সিস্টেম বিশেষণ করা সম্ভব হয়।
Printf () ও Getch () ফাংশনের কাজ কি?
C ভাষায় আউটপুট স্টেটমেন্ট হিসেবে বহুল ব্যবহৃত ফাংশন হলাে printf (), যার সাহায্যে স্ট্রিং বা স্ট্রিংসহ বিভিন্ন টাইপের (যেমন - int, Char, float ইত্যাদি) ডেটার মান মনিটরে স্ক্রিনে প্রদর্শন করা যায়। প্রােগ্রামিংয়ের ক্ষেত্রে একটি করে ইনপুট দিতে getch () ফাংশন ব্যবহার করা হয়। অর্থাৎ C প্রােগ্রামিংয়ের জন্য print () ও getch () উভয়ই অপরিহার্য ফাংশন হিসেবে কাজ করে।
অ্যালগরিদম ও ফ্লোচার্ট এর মধ্যে সম্পর্ক কি?
একটি প্রােগ্রাম রচনা ও কার্যকর করতে প্রয়ােজনীয় পর্যায়ক্রমিক কার্যবিবরণীকে অ্যালগরিদম বলে। অ্যালগরিদমের সাহায্যে একটি সমস্যাকে কয়েকটি ধাপে ভেঙে প্রত্যেকটি ধাপ পরপর সমাধান করে সমগ্র সমস্যাকে সমাধান করা যায়। আর অ্যালগরিদমের ধাপসমূহের চিত্ররূপকে ফ্লোচার্ট বলা হয়। ফ্লোচার্ট হলাে এমন কতকগুলাে ছবি যা থেকে বােঝা যায় সমস্যা সমাধান করতে হলে পরপর কীভাবে অগ্রসর হতে হবে। ফ্লোচার্টে কতকগুলাে জ্যামিতিক ছবি বা অ্যাসেম্বলি চিহ্ন ব্যবহার করা হয়।
জাম্প বলতে কী বোঝায়?
প্রােগ্রামের সরল অনুক্রমকে ভঙ্গ করে প্রােগ্রামের মধ্যে এক লাইন থেকে পরবর্তী লাইনে না গিয়ে ওপরে বা নিচে অন্য কোনাে লাইন থেকে কাজ শুরু করলে, তাকে জাম্প বলা হয়। সরল অনুক্রমের পরিবর্তনের জন্য শাখা বা জাম্প ছাঁচ ব্যবহার করা যায়। অগ্র ও পশ্চাতে উভয় প্রকার জাম্প হতে পারে। তার চক্র আবর্তনের জন্য পশ্চাৎ জাম্প দরকার হয়। আর কিছু নির্দেশ বাদ দিয়ে সরল অনুক্রমে পরিবর্তন করে প্রােগ্রাম নির্বাহের জন্য অগ্র জাম্প প্রয়ােজন হয়।
প্রােগ্রামের মডেল বলতে কী বােঝায়?
সুন্দরভাবে প্রােগ্রাম লেখা ও সহজে বােঝার জন্য প্রােগ্রাম রচনার ক্ষেত্রে যেসব মডেল ব্যবহার করা হয়, তাদেরকে প্রােগ্রামের মডেল বলে। প্রােগ্রাম গঠন করতে কয়েকটি ক্ষেত্রে সুন্দর ও সহজভাবে মডেল ব্যবহার করা হয়। নির্দিষ্ট একটি বিশেষ মডেল ব্যবহার করে প্রােগ্রাম রচনা করলে তা সহজে অনুধাবন করা যায়। বর্তমানে জনপ্রিয় বেশ কয়েকটি প্রােগ্রামিং মডেল হচ্ছে স্ট্রাকচার্ড প্রােগ্রামিং, ভিজুয়াল প্রােগ্রামিং, ইভেন্ট ড্রিভেন প্রােগ্রামিং ইত্যাদি।
প্রােগ্রামের সংগঠন বলতে কী বােঝায়?
প্রােগ্রামের সংগঠন বলতে কোন প্রােগ্রামের গঠনশৈলীকে বােঝায়। প্রত্যেক প্রােগ্রামের তিনটি অংশ যথা- ইনপুট, আউটপুট এবং প্রসেসিং থাকা অপরিহার্য। ইনপুট হলাে ফলাফল লাভের জন্য প্রােগ্রামে যে ডাটা ও ইস্ট্রাকশন দেওয়া হয় তাই আউটপুট হলাে প্রক্রিয়াকরণের ফলে প্রাপ্ত ফলাফল। আর প্রসেসিং হলাে প্রােগ্রামে দেয়া নির্দেশ অনুসারে প্রদেয় ডেটাকে প্রক্রিয়াকরণ করে তথ্যে পরিণত করা। এগুলাের মধ্যে দিয়ে একটি প্রােগ্রাম গঠিত হতে পারে। আর এটিকেই প্রােগ্রামের সংগঠন বলা হয়।
Printf-এর স্থলে print f লিখলে এটা কী ধরনের ভূল এবং কেন?
Printf-এর স্থলে print f লিখলে সিনট্যাক্স ভুল হয়। সিনট্যাক্স ভুল হলাে যে ভাষায় প্রােগ্রাম লেখা হয় সেই ভাষার ব্যাকরণগত ভুল। দেখা যায়, Printf শব্দটি একসাথে অর্থাৎ Print ও f এর মধ্যে কোনাে Space নেই; কিন্তু Print f শব্দটির মধ্যে Space বিদ্যমান। তাই এটি একটি ব্যাকরণগত ভুল। কম্পাইলার দিয়ে অনুবাদের সময় এই ভুল সহজেই ধরা পড়ে এবং কম্পিউটারকে বার্তা দিয়ে ভুল জানিয়ে দেয়।
সুডােকোড বলতে কী বােঝায়?
ডকুমেন্টেশন বলতে অ্যালগরিদম, ফ্লোচার্ট, গ্রাফ, কোডিং, পরীক্ষার ফলাফল, ব্যবহারকারীর জন্য প্রয়ােজনীয় নির্দেশ ইত্যাদি বিষয়ে সমস্যা সম্পর্কিত লিখিত বিবরণকে বােঝায়। ডকুমেন্টেশন প্রােগ্রামারকে প্রােগ্রাম তৈরির প্রত্যেক ধাপে সাহায্য করে থাকে, যার ফলে প্রােগ্রামটি স্থায়ীভাবে রক্ষিত হয়। ডকুমেন্টেশন ছাড়া প্রােগ্রাম রিবর্তন করা যায় না। ঠিকভাবে ডকুমেন্টেশন করা না থাকলে পরে প্রােগ্রাম কোনােভাবে পরিবর্তন করা অসম্ভব হয়ে পড়ে। এজন্য ডকুমেন্টেশন অত্যন্ত গুরুত্বপূর্ণ।
প্রোগ্রাম টেস্টিং করা হয় কেন?
প্রােগ্রাম রচনার পর তা সঠিকভাবে হয়েছে কিনা তা জানার জন্য প্রােগ্রাম টেস্টিং করা হয়। প্রােগ্রাম টেস্টিং এর জন্য প্রােগ্রামে ডেটার কিছু মান বসিয়ে কম্পিউটারের সাহায্যে ছাড়া নিজেরা গণনা করে ফলাফল বের করতে হয়। তারপর সেই একই ডেটা কম্পিউটারে ইনপুট দিয়ে যে ফলাফল পাওয়া যায় তা নিজেদের ফলাফলের সাথে তুলনায় যদি মিলে যায় তবে ঠিক আছে। আর যদি ফলাফল না মিলে তবে বুঝতে হবে প্রােগ্রাম ভুল আছে। ভুল সংশােধনের জন্য প্রয়ােজনীয় পদক্ষেপ নিতে হবে।
ইনপুট/আউটপুট কন্ট্রোল প্রোগ্রাম কি?
ইনপুট/আউটপুট কন্ট্রোল প্রোগ্রাম ডেটা দ্রুত প্রসেস করার জন্য ইনপুট ডিভাইস দিয়ে গ্রহণ করা এবং ফলাফলকে আউটপুট ডিভাইসে দ্রুত দেয়ার জন্য এ ডিভাইসগুলোকে সিপিইউ এর সাথে মিল রেখে চালু রাখা এবং অসুবিধা হলে তা ব্যবহারকারীকে মেসেজ দেয়।
প্রোগ্রামে ভেরিয়েবল ব্যবহারের সুবিধা কি?
ভেরিয়েবল ব্যবহার না করেও প্রােগ্রামে বিভিন্ন ধরনের ডেটা নিয়ে কাজ করা যায়। তবে সেক্ষেত্রে ডেটার স্বয়ংক্রিয় মান নির্ধারণ, পুনঃব্যবহার প্রভৃতি সুবিধা পাওয়া যায় না। উদাহরণ হিসেবে বলা যায়, কারাে যদি লক্ষ লক্ষ বন্ধু থাকে, তবে যতই আন্তরিক হােক না কেন তারা কে কোন রুমে থাকে তা মনে রাখা সম্ভবপর নহে। কিন্তু তারা যদি তাদের নাম, রােল বা আইডি নাম্বারের অনুরুপ নামবিশিষ্ট রুমে থাকে তবে সহজেই তাদের খুঁজে বের করা সম্ভব হবে। মূলত প্রােগ্রামে ভেরিয়েবল ব্যবহারের মাধ্যমে মেমরিতে ভেরিয়েবলের নামবিশিষ্ট লােকেশনে ডেটা সংরক্ষণ করা হয়, ফলে পরবর্তী সময়ে সেগুলাে খুঁজে পাওয়া সহজ হয়।
continue স্টেটমেন্ট ও goto স্টেটমেন্টের মধ্যে পার্থক্য কি?
continue স্টেটমেন্ট
- শর্তযুক্ত অথবা শর্তবিহীনভাবে কোন স্টেটমেন্ট বা লুপের পুনরাবৃত্তি করার জন্য continue স্টেটমেন্ট ব্যবহৃত হয়।
- continue স্টেটমেন্ট ব্যবহার করলে কেবল উপরের দিকে জাম্প করা যায়।
- continue স্টেটমেন্ট if, else if, for while ইত্যাদি ছাড়া কাজ করতে পারে না।
goto স্টেটমেন্ট
- সাধারণত প্রোগ্রামের এক জায়গার কাজ আপাততঃ বন্ধ রেখে, অন্য জায়গার কোন কাজ করানোর জন্য goto স্টেটমেন্ট ব্যবহার করা হয়।
- goto ব্যবহার করে প্রোগ্রামের সামনে কিংবা পিছনে যে কোন স্থানে স্থানান্তর বা জাম্প করা যায়।
- goto স্টেটমেন্ট if, else if, for, while ইত্যাদি ছাড়া সরাসরি কাজ করতে পারে
একটি আদর্শ প্রোগ্রামের গুণাবলি কি কি
আদর্শ প্রােগ্রাম বলতে যে প্রােগ্রামে কম্পিউটার প্রােগ্রামের যাবতীয় বৈশিষ্ট্য বা গুণাবলি বর্তমান সে ধরনের প্রােগ্রামকে বুঝায়। সাধারণত সমস্যা সমাধানের জন্য প্রােগ্রাম রচনা করা হয়। একটি আদর্শ প্রােগ্রাম সমস্যা সমাধানের ক্ষেত্রে গুরত্বপূর্ণ ভূমিকা পালন করে। একটি আদর্শ প্রােগ্রাম রচনার ক্ষেত্রে ৭টি ধাপে রচনা কার্য সমাপ্ত করতে হয়। ধাপগুলাে এ অধ্যায়ের প্রথমে আলােচনা করা হয়েছে। এ ৭টি ধাপে প্রােগ্রাম রচনা করলে রচনাকার্যে ত্রুটি সম্ভাবনা কম থাকে। তাছাড়া একটি আদর্শ প্রােগ্রামের সাধারণত ৫টি পর্ব থাকে।
১. পরিচয় পর্ব
২. বর্ণনা
৩. ইনপুট
৪. প্রসেস
৫. আউটপুট
পরিচয় পর্বঃ এ পর্বে প্রােগ্রামের বিষয়বস্ত, প্রােগ্রামারের নাম, প্রােগ্রামের সময়কাল, প্রােগ্রামে ব্যবহৃত বিভিন্ন চলকের বর্ণনা ইত্যাদি লিপিবদ্ধ থাকে।
বর্ণনাঃ এ পর্বে প্রােগ্রামের সমস্যার বর্ণনা, সমাধানের কৌশল, সিদ্ধান্ত, যুক্তি ইত্যাদির উল্লেখ থাকে।
ইনপুটঃ একটি আদর্শ প্রােগ্রামের ভেতরে তথ্য ইনপুটের সুবিধা থাকবে অথবা প্রোগ্রাম চলাকালে বাইরে থেকে তথ্য যােগানের সুবিধা থাকবে।
প্রসেসঃ তথ্য প্রক্রিয়াকরণই প্রােগ্রামের মূল উদ্দেশ্য। অতএব একটি আদর্শ প্রােগ্রামে অবশ্যই তথ্য প্রক্রিয়াকরণের সুবিধা থাকবে।
আউটপুটঃ যেকোন প্রােগ্রামের জন্য ফলাফল অবশ্যই বাঞ্ছনীয়। একটি আদর্শ প্রােগ্রামে ফলাফল প্রাপ্তির ব্যবস্থা থাকবে।
এছাড়া নিম্নলিখিত বৈশিষ্ট্যের ভিত্তিতে একটি প্রােগ্রামকে আদর্শ বলা যায়।
১। প্রােগ্রামটি নির্ভুল।
২। যুক্তিপূর্ণ বিন্যাস।
৩। যতটা সম্ভব সরল ও সংক্ষিপ্ত।
৪। সহজে প্রােগ্রামটির পরিবর্তন পরিমার্জন ও ভুল সংশােধন করা যায়।
উপর্যুক্ত গুণাবলি থাকলে একটি প্রােগ্রামকে আদর্শ প্রােগ্রাম বলা যায়।
১. পরিচয় পর্ব
২. বর্ণনা
৩. ইনপুট
৪. প্রসেস
৫. আউটপুট
পরিচয় পর্বঃ এ পর্বে প্রােগ্রামের বিষয়বস্ত, প্রােগ্রামারের নাম, প্রােগ্রামের সময়কাল, প্রােগ্রামে ব্যবহৃত বিভিন্ন চলকের বর্ণনা ইত্যাদি লিপিবদ্ধ থাকে।
বর্ণনাঃ এ পর্বে প্রােগ্রামের সমস্যার বর্ণনা, সমাধানের কৌশল, সিদ্ধান্ত, যুক্তি ইত্যাদির উল্লেখ থাকে।
ইনপুটঃ একটি আদর্শ প্রােগ্রামের ভেতরে তথ্য ইনপুটের সুবিধা থাকবে অথবা প্রোগ্রাম চলাকালে বাইরে থেকে তথ্য যােগানের সুবিধা থাকবে।
প্রসেসঃ তথ্য প্রক্রিয়াকরণই প্রােগ্রামের মূল উদ্দেশ্য। অতএব একটি আদর্শ প্রােগ্রামে অবশ্যই তথ্য প্রক্রিয়াকরণের সুবিধা থাকবে।
আউটপুটঃ যেকোন প্রােগ্রামের জন্য ফলাফল অবশ্যই বাঞ্ছনীয়। একটি আদর্শ প্রােগ্রামে ফলাফল প্রাপ্তির ব্যবস্থা থাকবে।
এছাড়া নিম্নলিখিত বৈশিষ্ট্যের ভিত্তিতে একটি প্রােগ্রামকে আদর্শ বলা যায়।
১। প্রােগ্রামটি নির্ভুল।
২। যুক্তিপূর্ণ বিন্যাস।
৩। যতটা সম্ভব সরল ও সংক্ষিপ্ত।
৪। সহজে প্রােগ্রামটির পরিবর্তন পরিমার্জন ও ভুল সংশােধন করা যায়।
উপর্যুক্ত গুণাবলি থাকলে একটি প্রােগ্রামকে আদর্শ প্রােগ্রাম বলা যায়।
বিটওয়াইজ অপারেটর বলতে কী বোঝায়?
সি প্রোগ্রামে বাইনারি ডেটা, অর্থাৎ বিট/বাইট, নিয়ে বিভিন্ন রকমের যৌক্তিক অপারেশন যেমন— অর, এন্ড, নট,এক্স-অর, লেফট, রাইট শিফট ইত্যাদি সম্পন্ন করার জন্য বিটওয়াইজ অপারেটর ব্যবহৃত হয়। এদের মধ্যে বিটওয়াইজ নট হলো ইউনারি অপারেটর, অন্যগুলো বাইনারি অপারেটর। উল্লেখ্য, বিটওয়াইজ অপারেটর কেবল int টাইপের ডেটা নিয়ে কাজ করে। বিটওয়াইজ অপারেশনের পূর্বে কম্পাইলার উভয় অপারেন্ডের মান বাইনারিতে পরিবর্তন করে এবং অপারেন্ড দুইটির ডান দিক থেকে জোড়ায় জোড়ায় (বিট বাই বিট) অপারেশন সম্পন্ন করে।
এরে (Arrays) নিয়ে কাজ করা
এরে (Array) হলো এক প্রকার ভেরিয়েবল যার মাধ্যমে অনেকগুলো ডাটা একসাথে সংরক্ষণ করা যাবে। যেমন ধরুন, আপনার শোবার ঘরে একটি ড্রেসার রয়েছে যাতে ৩টি ড্রয়ার আছে। সবচেয়ে উপরের ড্রয়ারে রয়েছে আন্ডারওয়্যার, ২য় ড্রয়ারে রয়েছে প্যান্ট, তৃতীয় ড্রয়ারে আছে পায়জামা। এগুলো সবগুলোকেই ‘কাপড়’ বলা হয় কিন্তু প্রতিটির আবার নিজস্ব নাম রয়েছে। এরে (Array) ও একই রকম।
Array () ফাংশন দিয়েই আপনি এরে তৈরি করতে পারেন।
Array (name=>value, name=>value,...);
একটি এরের মাধ্যমে বছরের সব মাসের নাম আপনি সংরক্ষণ করতে পারেন:
$months=array(“January”, “february”, “March”, “Aprill”, “may”, “June”, “July”, “August”, “September”, “October”, “November”, “December”,)
এই এরেতে ১২ টি এলিমেন্ট রয়েছে এবং এদেরকে প্রতিটিকে তাদের এরের অবস্থান অনুসারে ডাকতে পারে যার শুরু হয় ০ দিয়ে।
Echo $months[0] বললে January প্রিন্ট হবে।
Echo $months[11] বললে November প্রিন্ট হবে।
একটি এরের সবগুলো ভেলু প্রিন্ট করতে চাইলে এরের সাইজ পেতে হবে এবং একটি লুপ সেট করতে পারেন।
For ($month_number=0;
$i<count($months);$1++)
{
echo $months [$month_number]“<br>\n”;
}
একটি সাধারণ এসাইনমেন্ট অপারেটরের মাধ্যমে এরেতে ভ্যালুও এসাইন করা যেতে পারে:
$dogs=array ();
$dogs [0]= “shepherd”;
$dogs [1]= “poodle”;
অনেক প্রোগামিং ল্যাঙ্গুয়েজের মতো PHP তেও এসোসিয়েটিভ এরে ব্যবহার করা যায়।
$person = array (
“first_name”=>”Jay”,
“last_name”=>”greenspan”,
“e-mail”=>”Jgreen1@yahoo.com”
);
Array () ফাংশন দিয়েই আপনি এরে তৈরি করতে পারেন।
Array (name=>value, name=>value,...);
একটি এরের মাধ্যমে বছরের সব মাসের নাম আপনি সংরক্ষণ করতে পারেন:
$months=array(“January”, “february”, “March”, “Aprill”, “may”, “June”, “July”, “August”, “September”, “October”, “November”, “December”,)
এই এরেতে ১২ টি এলিমেন্ট রয়েছে এবং এদেরকে প্রতিটিকে তাদের এরের অবস্থান অনুসারে ডাকতে পারে যার শুরু হয় ০ দিয়ে।
Echo $months[0] বললে January প্রিন্ট হবে।
Echo $months[11] বললে November প্রিন্ট হবে।
একটি এরের সবগুলো ভেলু প্রিন্ট করতে চাইলে এরের সাইজ পেতে হবে এবং একটি লুপ সেট করতে পারেন।
For ($month_number=0;
$i<count($months);$1++)
{
echo $months [$month_number]“<br>\n”;
}
একটি সাধারণ এসাইনমেন্ট অপারেটরের মাধ্যমে এরেতে ভ্যালুও এসাইন করা যেতে পারে:
$dogs=array ();
$dogs [0]= “shepherd”;
$dogs [1]= “poodle”;
অনেক প্রোগামিং ল্যাঙ্গুয়েজের মতো PHP তেও এসোসিয়েটিভ এরে ব্যবহার করা যায়।
$person = array (
“first_name”=>”Jay”,
“last_name”=>”greenspan”,
“e-mail”=>”Jgreen1@yahoo.com”
);
কম্পাইলার এবং ইন্টারপ্রেটার মধ্যে পার্থক্য কি?
কম্পাইলার কি?
উচ্চস্তরের ভাষায় লেখা উৎস প্রােগ্রামকে বস্তু প্রােগ্রামে রূপান্তরিত করার প্রােগ্রামকে কম্পাইলার বলে। কম্পাইলার সম্পূর্ণ প্রােগ্রামটিকে একসাথে পড়ে এবং একসাথে অনুবাদ করে। কম্পাইলার সহায়ক মেমরিতে থাকে। প্রয়ােজনের সময় তাদের র্যামে আনা হয়। ভিন্ন ভিন্ন হাই লেভেল ভাষার জন্য ভিন্ন ভিন্ন কম্পাইলার লাগে। কোনাে নির্দিষ্ট কম্পাইলার একটি মাত্র হাই লেভেল ভাষাকে মেশিন ভাষায় পরিণত করতে পারে। যেমন- যে কম্পাইলার বেসিককে মেশিন ভাষায় অনুবাদ করতে পারে তা কিন্তু কোবলকে মেশিন ভাষায় অনুবাদ করতে পারে না। কম্পাইলার পুরাে উৎস প্রােগ্রামের উপর একসাথে কাজ করে। এ কারণে কম্পাইলার চালনার জন্য বেশি পরিমাণ মেমরির প্রয়ােজন পড়ে। সাধারণত উচ্চস্তরের ভাষার একটি স্টেটমেন্ট যন্ত্রভাষার চার পাঁচটি নির্দেশে পরিণত হয়। কম্পাইলার অনুবাদ করা ছাড়াও উৎস প্রােগামের গুণাগুণ বিচার করতে পারে।
ইন্টারপ্রেটার কি?
উচ্চস্তরের ভাষায় লেখা কোনাে প্রােগ্রামকে সরাসরি নির্বাহের জন্য ব্যবহৃত হয় ইন্টারপ্রেটার। ইন্টারপ্রেটারের কাজ হলাে হাই লেবেল ভাষাকে মেশিন ভাষায় রূপান্তর করা। ইন্টারপ্রেটার উৎস প্রােগ্রামের প্রতিটি লাইন পড়ে এবং মেশিন ভাষায় অনুবাদ করে। একটি লাইন নির্বাহ শেষ হলে ইন্টারপ্রেটার উৎস প্রােগ্রামের পরবর্তী লাইনে যায়। এটি ব্যবহারে প্রােগ্রামের ভুল সংশােধন করা বা প্রােগ্রাম পরিবর্তন করা সহজ হয়। ইন্টারপ্রেটার প্রােগ্রাম আকারে ছােট বলে এর ব্যবহারে মেমরি অবস্থানে জায়গা বাঁচে। তাছাড়া ছােট কম্পিউটারে সাধারণত ইন্টারপ্রিটার ব্যবহৃত হয়।
কম্পাইলার বনাম ইন্টারপ্রেটার
উচ্চস্তরের ভাষায় লেখা উৎস প্রােগ্রামকে বস্তু প্রােগ্রামে রূপান্তরিত করার প্রােগ্রামকে কম্পাইলার বলে। কম্পাইলার সম্পূর্ণ প্রােগ্রামটিকে একসাথে পড়ে এবং একসাথে অনুবাদ করে। কম্পাইলার সহায়ক মেমরিতে থাকে। প্রয়ােজনের সময় তাদের র্যামে আনা হয়। ভিন্ন ভিন্ন হাই লেভেল ভাষার জন্য ভিন্ন ভিন্ন কম্পাইলার লাগে। কোনাে নির্দিষ্ট কম্পাইলার একটি মাত্র হাই লেভেল ভাষাকে মেশিন ভাষায় পরিণত করতে পারে। যেমন- যে কম্পাইলার বেসিককে মেশিন ভাষায় অনুবাদ করতে পারে তা কিন্তু কোবলকে মেশিন ভাষায় অনুবাদ করতে পারে না। কম্পাইলার পুরাে উৎস প্রােগ্রামের উপর একসাথে কাজ করে। এ কারণে কম্পাইলার চালনার জন্য বেশি পরিমাণ মেমরির প্রয়ােজন পড়ে। সাধারণত উচ্চস্তরের ভাষার একটি স্টেটমেন্ট যন্ত্রভাষার চার পাঁচটি নির্দেশে পরিণত হয়। কম্পাইলার অনুবাদ করা ছাড়াও উৎস প্রােগামের গুণাগুণ বিচার করতে পারে।
ইন্টারপ্রেটার কি?
উচ্চস্তরের ভাষায় লেখা কোনাে প্রােগ্রামকে সরাসরি নির্বাহের জন্য ব্যবহৃত হয় ইন্টারপ্রেটার। ইন্টারপ্রেটারের কাজ হলাে হাই লেবেল ভাষাকে মেশিন ভাষায় রূপান্তর করা। ইন্টারপ্রেটার উৎস প্রােগ্রামের প্রতিটি লাইন পড়ে এবং মেশিন ভাষায় অনুবাদ করে। একটি লাইন নির্বাহ শেষ হলে ইন্টারপ্রেটার উৎস প্রােগ্রামের পরবর্তী লাইনে যায়। এটি ব্যবহারে প্রােগ্রামের ভুল সংশােধন করা বা প্রােগ্রাম পরিবর্তন করা সহজ হয়। ইন্টারপ্রেটার প্রােগ্রাম আকারে ছােট বলে এর ব্যবহারে মেমরি অবস্থানে জায়গা বাঁচে। তাছাড়া ছােট কম্পিউটারে সাধারণত ইন্টারপ্রিটার ব্যবহৃত হয়।
কম্পাইলার বনাম ইন্টারপ্রেটার
- কম্পাইলার এবং ইন্টারপ্রেটার উচ্চ স্তরের উপস্থাপক ভাষাকে মেশিন ভাষায় পরিণত করে।
- কম্পাইলার সম্পূর্ণ প্রােগ্রামটিকে একসাথে পড়ে এবং অনুবাদ করে। কিন্তু ইন্টারপ্রেটার এক লাইন করে পড়ে এবং অনুবাদ করে। তাই কম্পাইলারের চেয়ে ইন্টারপ্রেটার প্রােগ্রাম নির্বাহে বেশি সময় লাগে।
- কম্পাইলার বড় ধরনের প্রােগ্রাম হওয়ায় এটি মেমােরিতে বেশি জায়গা নেয়। কিন্তু ইন্টারপ্রেটার প্রােগ্রাম আকারে ছােট হওয়ায় এটি সংরক্ষণে কম জায়গা লাগে।
- কম্পাইলারের মাধ্যমে রূপান্তরিত প্রােগ্রাম সম্পূর্ণরূপে মেশিন প্রােগ্রামে রূপান্তরিত হয়। কিন্তু ইন্টারপ্রেটারের মাধ্যমে রূপান্তরিত প্রােগ্রাম সম্পূর্ণরূপে মেশিন প্রােগ্রামে রূপান্তরিত হয় না।
- ইন্টারপ্রেটারে ভুল সংশােধন এবং পরিবর্তন করা কম্পাইলারের চেয়ে সহজ।
কেন সি প্রোগামিং শিখবেন?
‘সি’ একটি মধ্যমস্তরের ভাষা যা প্রােগ্রামারের জন্য বােঝা যেমন সহজ তেমনি এর সাহায্যে সরাসরি কম্পিউটারের হার্ডওয়্যারকেও নিয়ন্ত্রণ করা যায়। ‘সি’ ভাষার গঠন কাঠামাে স্ট্রাকচার্ড প্রােগ্রাম ডিজাইন মডেলের, যেখানে একটি বড় সমস্যাকে ছােট ছােট ভাগে ভাগ করে তার সমাধান করা হয়। স্ট্রাকচার্ড মডেলে পুরাে সমস্যাকে বিভিন্ন অংশ বা ম্যুউলে ভাগ করা হয়। প্রতিটি ম্যুউলকে ছােট আকারের সমস্যা ভাবা যেতে পারে। স্ট্রাকৰ্চাড প্রােগ্রামিং-এর সুবিধা হলাে-এতে বড় আকারের সমস্যা সহজে সমাধান করা যায়। একবার কোনাে কোড লিখে তা একাধিকবার ব্যবহার করা যায়। এতে সময় অপচয় রােধ করা যায়। প্রােগ্রামের নির্দিষ্ট কাঠামাে থাকায় ডিবাগিং বা প্রােগ্রামের ভুল সংশােধন করা সহজ হয়। স্ট্রাকচার্ড প্রােগ্রামিং-এ একটি মূল প্রােগ্রাম থাকে যা বিভিন্ন ম্যুউলকে কল করে। এক ম্যুউল আবার অন্য ম্যুউলকে কল করতে পারে।
প্রোগামিং কি? প্রােগ্রাম ডিবাগিং কি?
প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রাম পদ্ধতি বা প্রোগামিং বলে। আর যিনি প্রোগামিং করেন তাকে কম্পিউটার প্রোগ্রামার বলে। একজন ভালো কম্পিউটার প্রোগ্রামার হওয়ার জন্য গাণিতিক ও লজিক্যাল জ্ঞান সম্পর্কে সমান ধারণা থাকতে হবে।
স্ট্রাকচার্ড প্রােগ্রামিং
স্ট্রাকচার্ড প্রােগ্রামিং হলাে প্রসিডিউরাল প্রােগ্রামিং এর সাবসেট যা প্রােগ্রামকে সহজ করার জন্য লজিক্যাল স্ট্রাকচার প্রয়ােগ করে থাকে। এটি হলাে একটি টপ-ডাউন ডিজাইন মডেল যাতে ডেভলপাররা সম্পূর্ণ প্রোগ্রামকে পৃথক সাবসেকশনে বিভক্ত করতে পারে। এতে প্রােগ্রামের স্টেটমেন্টগুলাে ভিন্ন ভিন্ন শ্রেণীতে বিভক্ত করে লেখা হয়। স্টেটমেন্টের সংখ্যা এক এক শেলীর জন্য একেক রকম হতে পারে। এর প্রত্যেকটি শ্রেণী ভিন্ন ভিন্ন কাজ করে থাকে। এতে লুপিং স্ট্রাকচার যেমন- "for;" "repeat," এবং "while" ইত্যাদি ব্যবহৃত হয়। কিন্তু "Go To" স্টেটমেন্ট ব্যবহারে অনুৎসাহিত করা হয়।
উদাহরণঃ বেসিক, ফরট্রান, কোবল, প্যাস্কেল, সি ইত্যাদি।
স্ট্রাকচার্ড প্রােগ্রামিং
স্ট্রাকচার্ড প্রােগ্রামিং হলাে প্রসিডিউরাল প্রােগ্রামিং এর সাবসেট যা প্রােগ্রামকে সহজ করার জন্য লজিক্যাল স্ট্রাকচার প্রয়ােগ করে থাকে। এটি হলাে একটি টপ-ডাউন ডিজাইন মডেল যাতে ডেভলপাররা সম্পূর্ণ প্রোগ্রামকে পৃথক সাবসেকশনে বিভক্ত করতে পারে। এতে প্রােগ্রামের স্টেটমেন্টগুলাে ভিন্ন ভিন্ন শ্রেণীতে বিভক্ত করে লেখা হয়। স্টেটমেন্টের সংখ্যা এক এক শেলীর জন্য একেক রকম হতে পারে। এর প্রত্যেকটি শ্রেণী ভিন্ন ভিন্ন কাজ করে থাকে। এতে লুপিং স্ট্রাকচার যেমন- "for;" "repeat," এবং "while" ইত্যাদি ব্যবহৃত হয়। কিন্তু "Go To" স্টেটমেন্ট ব্যবহারে অনুৎসাহিত করা হয়।
উদাহরণঃ বেসিক, ফরট্রান, কোবল, প্যাস্কেল, সি ইত্যাদি।
কচার্ড প্রােগ্রামিংয়ের গঠন তিন ধরণের হয়ে থাকে। যেমন-
১। পর্যায়ক্রমিক গঠন (Sequential Structure)
২ । চক্র বা লুপ (Loop)
৩ । ডিশিসন স্টেটমেন্ট (Decision Statement)
স্ট্রাকচার্ড প্রােগ্রামিংয়ের বৈশিষ্ট্য
• ইহা সহজে অনুধাবন করা যায়।
• ডিবাগিং করা সহজ।
• ইহা সহজে রচনা করা যায়।
• সহজে রক্ষণাবেক্ষণ করা যায়।
অবজেক্ট অরিয়েন্টেড প্রোগামিং (Objet-Oriented Programming)
প্রোগ্রামের কোন সেগমেন্টকে একই প্রোগ্রামের অন্য জায়গায় অথবা অন্য প্রোগ্রামে ব্যবহার করার মাধ্যমে সময় এবং অর্থ সাশ্রয় করার জন্য গড়ে উঠেছে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming-OOP)। সাধারণভাবে প্রোগামিং কোড বা ইনস্ট্রাকশন এবং ডেটার সমন্বিত উপস্থাপনাই হচ্ছে অবজেক্ট। অবজেক্ট অরিয়েন্টেড প্রোগামিং এ প্রত্যেকটি অবজেক্টের এট্রিবিউট এবং ফাংশন রয়েছে যা অন্যান্য অবজেক্টকে ধারণ (Encapsulate) করে। একটি অবজেক্ট সম্পূর্ণ একটি ইউনিট হতে পারে অথবা অন্যান্য অবজেক্টের একটি উপাদান (কম্পোনেন্ট) হতে পারে। একটি অবজেক্টের মধ্যে অন্যান্য আরো অবজেক্ট থাকতে পারে। অবজেক্ট অরিয়েন্টেড প্রোগ্রাম মানেই হচ্ছে কতগুলো অবজেক্টের সমষ্টি যাদের প্রত্যেকের নিজস্ব ভিন্ন ভিন্ন এট্রিবিউট এবং বিহেইভিয়ার আছে। OOP এর প্রধান তিনটি ধারণা বা কনসেপ্ট রয়েছেঃ
১. পলিমরফিজম (Polymorphism)
২. ইনহেরিটেন্স (Inheritance)
৩. এনক্যাপসুলেশন (Encapsulation)
ভিজুয়াল প্রােগ্রামিং (Visual programming)
স্ট্রাকচার্ড প্রােগ্রামিংয়ের কাঠামাে ও ভাষাকে গ্রাফিক্যাল ইউজার ইন্টারফেসে রূপান্তরিত করে তৈরি করা হয়েছে ভিজুয়াল প্রােগ্রামিং। পিসিতে গ্রাফিক্যাল ইউজার ইন্টারফেস (জিইউআই) পরিবেশে (যেমন-উইন্ডােজ) কাজ করার প্রবণতা দ্রুত বৃদ্ধির পরিপ্রেক্ষিতে প্রোগ্রামিং-এর ক্ষেত্রেও এর প্রচলন শুরু হয়েছে। ভিজুয়াল প্রােগ্রামিং পদ্ধতিতে আইকন বা অবজেক্টসমূহ চোখে দেখা যায় বলে সেগুলাে সহজেই কাঙ্খিত রূপে এবং কাঙ্ক্ষিত স্থানে স্থাপন করা যায়। ভিজুয়াল প্রােগ্রামিং এর মাধ্যমে দ্রুত এবং সহজে প্রােগ্রাম উন্নয়ন করা যায়।
উদাহরণঃ ভিজুয়াল বেসিক, ভিজুয়াল সি++ ইত্যাদি জনপ্রিয় কয়েকটি ভিজুয়াল প্রোগ্রাম ভাষা।
ইভেন্ট ড্রিভেন প্রােগ্রামিং (Event Driven programming)
ব্যবহারকারী কর্তৃক কোন ঘটনায় যেমন- কোন কমান্ড বাটনে মাউস দিয়ে ক্লিকে (ইভেন্টে) সাড়া দিয়ে নির্বাহিত প্রােগ্রামকে ইভেন্ট চালিত প্রােগ্রাম বা ইভেন্ট ড্রাইভেন প্রােগ্রাম বলা হয়। এসব প্রােগ্রামিংয়ে বিভিন্ন নির্দেশ চিত্রের মাধ্যমে দেয়া হয়। ইভেন্ট ড্রাইভেন প্রােগ্রামে বিভিন্ন ইভেন্ট প্রসিডিউর যেমন- মাউস ক্লিক, মাউস ডাউন, মাউস মুভ কী বাের্ডের কোন কী চাপ দেয়া ইত্যাদি নির্দিষ্ট করা আছে। কোড লিখার সময় কোন কন্ট্রোলে কি ইভেন্ট ঘটিয়ে নির্দেশ দেয়া হবে তার জন্য ঐ ইভেন্ট প্রসিডিউরে কোড লিখতে হয়। অ্যাপ্লিকেশন রান করে কন্ট্রোলে ঐ ইভেন্ট ঘটালে কোড নির্বাহিত হয় অর্থাৎ ব্যবহারকারী কর্তৃক ইভেন্টে সাড়া দেয়।
প্রােগ্রাম ডিবাগিং
১। পর্যায়ক্রমিক গঠন (Sequential Structure)
২ । চক্র বা লুপ (Loop)
৩ । ডিশিসন স্টেটমেন্ট (Decision Statement)
স্ট্রাকচার্ড প্রােগ্রামিংয়ের বৈশিষ্ট্য
• ইহা সহজে অনুধাবন করা যায়।
• ডিবাগিং করা সহজ।
• ইহা সহজে রচনা করা যায়।
• সহজে রক্ষণাবেক্ষণ করা যায়।
অবজেক্ট অরিয়েন্টেড প্রোগামিং (Objet-Oriented Programming)
প্রোগ্রামের কোন সেগমেন্টকে একই প্রোগ্রামের অন্য জায়গায় অথবা অন্য প্রোগ্রামে ব্যবহার করার মাধ্যমে সময় এবং অর্থ সাশ্রয় করার জন্য গড়ে উঠেছে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (Object Oriented Programming-OOP)। সাধারণভাবে প্রোগামিং কোড বা ইনস্ট্রাকশন এবং ডেটার সমন্বিত উপস্থাপনাই হচ্ছে অবজেক্ট। অবজেক্ট অরিয়েন্টেড প্রোগামিং এ প্রত্যেকটি অবজেক্টের এট্রিবিউট এবং ফাংশন রয়েছে যা অন্যান্য অবজেক্টকে ধারণ (Encapsulate) করে। একটি অবজেক্ট সম্পূর্ণ একটি ইউনিট হতে পারে অথবা অন্যান্য অবজেক্টের একটি উপাদান (কম্পোনেন্ট) হতে পারে। একটি অবজেক্টের মধ্যে অন্যান্য আরো অবজেক্ট থাকতে পারে। অবজেক্ট অরিয়েন্টেড প্রোগ্রাম মানেই হচ্ছে কতগুলো অবজেক্টের সমষ্টি যাদের প্রত্যেকের নিজস্ব ভিন্ন ভিন্ন এট্রিবিউট এবং বিহেইভিয়ার আছে। OOP এর প্রধান তিনটি ধারণা বা কনসেপ্ট রয়েছেঃ
১. পলিমরফিজম (Polymorphism)
২. ইনহেরিটেন্স (Inheritance)
৩. এনক্যাপসুলেশন (Encapsulation)
ভিজুয়াল প্রােগ্রামিং (Visual programming)
স্ট্রাকচার্ড প্রােগ্রামিংয়ের কাঠামাে ও ভাষাকে গ্রাফিক্যাল ইউজার ইন্টারফেসে রূপান্তরিত করে তৈরি করা হয়েছে ভিজুয়াল প্রােগ্রামিং। পিসিতে গ্রাফিক্যাল ইউজার ইন্টারফেস (জিইউআই) পরিবেশে (যেমন-উইন্ডােজ) কাজ করার প্রবণতা দ্রুত বৃদ্ধির পরিপ্রেক্ষিতে প্রোগ্রামিং-এর ক্ষেত্রেও এর প্রচলন শুরু হয়েছে। ভিজুয়াল প্রােগ্রামিং পদ্ধতিতে আইকন বা অবজেক্টসমূহ চোখে দেখা যায় বলে সেগুলাে সহজেই কাঙ্খিত রূপে এবং কাঙ্ক্ষিত স্থানে স্থাপন করা যায়। ভিজুয়াল প্রােগ্রামিং এর মাধ্যমে দ্রুত এবং সহজে প্রােগ্রাম উন্নয়ন করা যায়।
উদাহরণঃ ভিজুয়াল বেসিক, ভিজুয়াল সি++ ইত্যাদি জনপ্রিয় কয়েকটি ভিজুয়াল প্রোগ্রাম ভাষা।
ইভেন্ট ড্রিভেন প্রােগ্রামিং (Event Driven programming)
ব্যবহারকারী কর্তৃক কোন ঘটনায় যেমন- কোন কমান্ড বাটনে মাউস দিয়ে ক্লিকে (ইভেন্টে) সাড়া দিয়ে নির্বাহিত প্রােগ্রামকে ইভেন্ট চালিত প্রােগ্রাম বা ইভেন্ট ড্রাইভেন প্রােগ্রাম বলা হয়। এসব প্রােগ্রামিংয়ে বিভিন্ন নির্দেশ চিত্রের মাধ্যমে দেয়া হয়। ইভেন্ট ড্রাইভেন প্রােগ্রামে বিভিন্ন ইভেন্ট প্রসিডিউর যেমন- মাউস ক্লিক, মাউস ডাউন, মাউস মুভ কী বাের্ডের কোন কী চাপ দেয়া ইত্যাদি নির্দিষ্ট করা আছে। কোড লিখার সময় কোন কন্ট্রোলে কি ইভেন্ট ঘটিয়ে নির্দেশ দেয়া হবে তার জন্য ঐ ইভেন্ট প্রসিডিউরে কোড লিখতে হয়। অ্যাপ্লিকেশন রান করে কন্ট্রোলে ঐ ইভেন্ট ঘটালে কোড নির্বাহিত হয় অর্থাৎ ব্যবহারকারী কর্তৃক ইভেন্টে সাড়া দেয়।
প্রােগ্রাম ডিবাগিং
প্রােগ্রাম তৈরি করার সময় প্রোগ্রামে কিছু না কিছু ভুল থেকে যায়। প্রােগ্রামের ভুলকে বাগ (Bug) বলে। প্রােগ্রামিং এর ভুল-ক্রটি খুজে বের করে তা দূর করাকে ডিবাগিং (Debugging) বলে। এর আক্ষরিক অর্থ পােকা বাছা। ১৯৪৫ সালে মার্ক-১ (Mark-1) কম্পিউটারের ভেতরে একটি মথপােকা ঢুকায় কম্পিউটারটি হঠাৎ বন্ধ হয়ে যায়। এ থেকে ডিবাগিং কথাটির উৎপত্তি। সব ভুল-ত্রুটি দূর না হওয়া পর্যন্ত কোন প্রোগ্রামই ব্যবহার করা যায় না। প্রােগ্রামে তিন ধরনের ভুল হতে পারে।
১. ডেটা ভুল (Data Error)
২. যুক্তিগত ভুল (Logical Error) ও
৩. সিনট্যাক্স ভূল (Syntex Error)
ডেটা ভুলঃ কম্পিউটারে ভুল ডেটা দিলে তাকে ডেটা ভুল বলে। যেমনঃ 30 এর স্থলে ভুল করে 03 ঢাইপ করা হলে কম্পিউটার কোন ভুলের বার্তা প্রদর্শন করে না।
যুক্তিগত ভুলঃ প্রােগ্রামে যুক্তির ভুলসমূহকে যুক্তিগত ভুল বলে। যেমন- M > N এর স্থলে M < N বা T = A + B এর স্থলে T = A – B লিখলে যুক্তিগত ভুল হয়। এক্ষেত্রেও কম্পিউটার কোন ভুলের বার্তা প্রদর্শন করে না।
সিনট্যাক্স ভুলঃ সিনট্যাক্স ভুল হলাে যে ভাষায় প্রােগ্রাম লেখা হয় সেই ভাষার ব্যাকরণগত ভুল। এ ভূল বিভিন্ন ধরনের হতে পারে। যেমন- বানান ভুল INPUT এর স্থলে INPOT, PRINT এর স্থলে PIRNT ইত্যাদি। কম্পাইলার দিয়ে অনুবাদকের সময় এ ভুল সহজেই ধরা পড়ে এবং কম্পিউটারকে এরর মেসেজ দিয়ে জানিয়ে দেয়।
১. ডেটা ভুল (Data Error)
২. যুক্তিগত ভুল (Logical Error) ও
৩. সিনট্যাক্স ভূল (Syntex Error)
ডেটা ভুলঃ কম্পিউটারে ভুল ডেটা দিলে তাকে ডেটা ভুল বলে। যেমনঃ 30 এর স্থলে ভুল করে 03 ঢাইপ করা হলে কম্পিউটার কোন ভুলের বার্তা প্রদর্শন করে না।
যুক্তিগত ভুলঃ প্রােগ্রামে যুক্তির ভুলসমূহকে যুক্তিগত ভুল বলে। যেমন- M > N এর স্থলে M < N বা T = A + B এর স্থলে T = A – B লিখলে যুক্তিগত ভুল হয়। এক্ষেত্রেও কম্পিউটার কোন ভুলের বার্তা প্রদর্শন করে না।
সিনট্যাক্স ভুলঃ সিনট্যাক্স ভুল হলাে যে ভাষায় প্রােগ্রাম লেখা হয় সেই ভাষার ব্যাকরণগত ভুল। এ ভূল বিভিন্ন ধরনের হতে পারে। যেমন- বানান ভুল INPUT এর স্থলে INPOT, PRINT এর স্থলে PIRNT ইত্যাদি। কম্পাইলার দিয়ে অনুবাদকের সময় এ ভুল সহজেই ধরা পড়ে এবং কম্পিউটারকে এরর মেসেজ দিয়ে জানিয়ে দেয়।
পিএইচপি সেশন ও এরর হ্যান্ডলার
আমরা এর আগের পর্বে জেনেছি পিএইপির কুকি সম্পর্কে। এই পর্বে আমরা জানব পিএইচপি সেশন ও এরর হ্যান্ডলার সম্পর্কে। যখন কোনাে অ্যাপ্লিকেশন নিয়ে কাজ করেন, ওপেন করেন, বন্ধ করেন বা কোনাে পরিবর্তন করার পর বন্ধ করেন- এটা একটা সেশনের মতাে। কম্পিউটার বােঝে আপনি কে? আপনি কখন কাজ শুরু করেছেন, কখন শেষ করেছেন, এসবের তথ্য তার কাছে থাকে। কিন্তু ইন্টারনেটে একটা সমস্যা হয়- ওয়েব সার্ভার বুঝতে পারে না আপনি কে, আর এতক্ষণ কী করলেন। পিএইচপি সেশন এই সমস্যার সমাধান দিয়েছে। পিএইচপি সেশন ইউজারের তথ্য পরে ব্যবহার করার জন্য সার্ভারে সংরক্ষণ করে রাখে। এই সেশন তথ্য অস্থায়ী এবং ইউজার সাইট ত্যাগ করার সাথে সাথে তা মুছে যায়। যদি স্থায়ীভাবে রাখতে চান, তাহলে ডাটাবেজে সেভ করে রাখতে পারেন। পিএইচপি সেশন প্রতিটি ইউজারের জন্য অনন্য পরিচয় unique id (UID) তৈরি করে। পিএইচপি সেশনে ইউজারের তথ্য সংরক্ষণ করার আগে সেশন শুরু করতে হবে। পিএইচপি সেশন session_start () ফাংশন দিয়ে শুরু করতে হয় এবং <html> tag - এর আগে রাখতে হয়।
<?php session_start(); ?>
<html>
<body>
</body>
</html>
এই কোডটি সার্ভারের সাহায্যে ইউজারের সেশন রেজিস্টার করবে এবং এই সেশনকে একটা আইডি দিয়ে তার তথ্য সেভ করা শুরু করবে। সেশন ভ্যারিয়েবল সংরক্ষণ করা, সেশন তথ্য সংরক্ষণ ও উদ্ধারের সঠিক উপায় হলাে সেশন ভ্যারিয়েবল $_SESSION ব্যবহার করা।
<?php
session_start();
// store session data
$_SESSION[‘views’]=1;
?>
<html>
<body>
<?php
//retrieve session data
echo “Pageviews=”. $_SESSION[‘views’];
?>
</body>
</html>
একটি সেশন ধ্বংস করা
সেশন ডাটা মুছে ফেলতে unset () or the session_destroy() function ব্যাবহার করা হয় ।]
nset() function নির্দিষ্ট একটা সেশন ভ্যারিয়েবল মুছে ফেলতে ব্যবহার হয়।
<?php
unset($_SESSION[‘views’]);
?>
একটা সেশনকে সম্পূর্ণভাবে ধ্বংস করতে session_destroy() function ব্যবহার হয়।
<?php
session_destroy();
?>
session_destroy() সেশনকে reset করবে এবং এতে সেভ করে রাখা সেশনের সব তথ্য হারাবেন।
নােট: এরর হ্যান্ডলিং বলতে মূলত কীভাবে এরর ব্রাউজারে দেখাবে, কোথায় এসব ঠিক করে দিতে হয়, কী কী এরর পিএইচপিতে আছে এগুলাে বােঝায়। কোড ডিবাগিংয়ের সাথে এর নিবিড় সম্পর্ক। কোড ডিবাগিং হচ্ছে এররের সমাধান করা। এই টিউটোরিয়ালে দুটো নিয়েই আলােচনা করা হয়েছে— কীভাবে কোডের এরর দেখে কিংবা বিভিন্ন কৌশল ব্যবহার করে এরর বের করা যায়, সাথে সাথে এররটিকে কীভাবে সমাধান করা যায়।
<?php session_start(); ?>
<html>
<body>
</body>
</html>
এই কোডটি সার্ভারের সাহায্যে ইউজারের সেশন রেজিস্টার করবে এবং এই সেশনকে একটা আইডি দিয়ে তার তথ্য সেভ করা শুরু করবে। সেশন ভ্যারিয়েবল সংরক্ষণ করা, সেশন তথ্য সংরক্ষণ ও উদ্ধারের সঠিক উপায় হলাে সেশন ভ্যারিয়েবল $_SESSION ব্যবহার করা।
<?php
session_start();
// store session data
$_SESSION[‘views’]=1;
?>
<html>
<body>
<?php
//retrieve session data
echo “Pageviews=”. $_SESSION[‘views’];
?>
</body>
</html>
একটি সেশন ধ্বংস করা
সেশন ডাটা মুছে ফেলতে unset () or the session_destroy() function ব্যাবহার করা হয় ।]
nset() function নির্দিষ্ট একটা সেশন ভ্যারিয়েবল মুছে ফেলতে ব্যবহার হয়।
<?php
unset($_SESSION[‘views’]);
?>
একটা সেশনকে সম্পূর্ণভাবে ধ্বংস করতে session_destroy() function ব্যবহার হয়।
<?php
session_destroy();
?>
session_destroy() সেশনকে reset করবে এবং এতে সেভ করে রাখা সেশনের সব তথ্য হারাবেন।
নােট: এরর হ্যান্ডলিং বলতে মূলত কীভাবে এরর ব্রাউজারে দেখাবে, কোথায় এসব ঠিক করে দিতে হয়, কী কী এরর পিএইচপিতে আছে এগুলাে বােঝায়। কোড ডিবাগিংয়ের সাথে এর নিবিড় সম্পর্ক। কোড ডিবাগিং হচ্ছে এররের সমাধান করা। এই টিউটোরিয়ালে দুটো নিয়েই আলােচনা করা হয়েছে— কীভাবে কোডের এরর দেখে কিংবা বিভিন্ন কৌশল ব্যবহার করে এরর বের করা যায়, সাথে সাথে এররটিকে কীভাবে সমাধান করা যায়।
আপনি যত বড় প্রােগ্রামার হন, যত বছর আপনার কোডিং অভিজ্ঞতা হােক, যত মনােযােগ দিয়েই আপনি কোড করেন না কেন কোডে এরর/ভুল থাকবেই। তবে কোডে ভুল থাকা খারাপ কিছু নয়। পৃথিবীতে সব কোডারের ভুল হয়। এই ভুল ঠিক করা তথা কোড ডিবাগিং করতে না পারলে সমস্যা। পিএইচপিতে বিভিন্ন কৌশল, ফাংশন ইত্যাদি আছে যেসব দিয়ে আপনি কোডের ভুল বের করতে পারবেন। কিছু কৌশল এবং ফাংশন নিয়ে নিচে আলােচনা করা হয়েছে। টিউটোরিয়ালটিতে লােকাল সার্ভারে (ডেভেলপমেন্ট সার্ভারে) কীভাবে এরর হ্যান্ডলিং করতে হয়, সেটা দেখানাে হয়েছে। প্রােডাকশন সার্ভার বা লাইভ সার্ভারে এরর হ্যান্ডলিং করতে হলে আপনাকে কনফিগারেশন ফাইল যেমন php.ini- তে অ্যাক্সেস পেতে হবে এবং এজন্য ডেডিকেটেড হােস্টিং প্রয়ােজন হবে। শেয়ারড হােস্টিংয়ে এসব সুবিধা থাকে না। ডেভেলপমেন্ট সার্ভারে কোড Ok থাকলে লাইভে কোনাে সমস্যা হওয়ার কথা নয়।
==> php.ini ফাইল: ব্রাউজারে যদি এরর দেখতে চান তাহলে php.ini ফাইলে display_errors on রাখতে হবে। এছাড়া এই ফাইলে ঠিক করে দেয়া যায় কোন ধরনের এরর দেখাবে আর কোন ধরনের দেখাবে না। পিএইচপিতে ১৬ ধরনের এরর আছে। প্রত্যেকটি এরর/ভুলের জন্য একটি নম্বর আছে, তবে এই নম্বর নিয়ে কাজ করা উচিত হবে না, কারণ পিএইচপি ভার্সন পরিবর্তনের সাথে এই নম্বরগুলাের মধ্যে অনেক সময় কিছু পরিবর্তন হতে পারে, তাই এগুলাের নাম (constant
name) নিয়ে কাজ করা উচিত।
E_ERROR: মারাত্মক (fatal error) রানটাইম (run time) ভুল/এরর। এই ধরনের এরর হলে কোড এক্সিকিউশন বন্ধ হয়ে যাবে। যেখানে এমন এরর হবে সেখানেই কাজ বন্ধ। রান টাইম এরর অর্থ প্রােগ্রাম/অ্যাপ্লিকেশন চলার সময় যে এররগুলাে হয়, প্রােগ্রাম চলার শুরুতে, মাঝে বা যেকোনাে সময় এরর হােক না কেন এটা রানটাইম এরর। যেমন- এমন একটি ফাইল খুলতে কোড লিখেছেন যেটার অস্তিত্ব নেই এরূপ যেকোনাে লজিক্যাল এরর।
E_WARNING: রানটাইম সতর্কতামূলক এরর, তবে মারাত্মক নয়। কোড এক্সিকিউশন বন্ধ হয় না।
E_PARSE: কমপাইল টাইম এরর। যেমন দ্বতীয় বন্ধনী (curly braces) শুরু করেছেন, কিন্তু শেষ করেননি এমন সিনট্যাক্স এরর।
E_NOTICE: রানটাইম এরর। কোড এক্সিকিউশন বন্ধ হবে না।
E_CORE_ERROR: কোর পিএইচপি থেকে এই এরর তৈরি হয়। এটা মারাত্মক এরর E_ERROR - এর মতাে। fatal error.
E_CORE_WARNING: E_WARN-
ING - এর মতােই, শুধু এটা কোর পিএইচপি থকে তৈরি হয়।
E_COMPILE_ERROR: মারাত্মক এরর (fatal error)। জেন্ড স্ক্রিপ্টিং ইঞ্জিন থেকে এই এরর তৈরি হয়। E_ERROR - এর মতাে।
E_COMPILE_WARNING: E_WARN ING - এর মতােই, তবে জেন্ড স্ক্রিন্টিং ইঞ্জিন থেকে তৈরি হয়।
E_USER_ERROR: E_ERROR - এর মতাে, তবে ইউজার কর্তৃক এই এরর তৈরি হয়। trigger_error() ফাংশন ব্যবহার করে এই এরর তৈরি করা যায়। ইউজার অর্থ এখানে প্রােগ্রামার।
E_USER_WARNING: E_WARNING এর মতাে, শুধু পার্থক্য হলাে প্রােগ্রামার তৈরি করুন।
E_USER_NOTICE: E_NOTICE - এর মতাে ইউজার তৈরি তা করেন।
E_STRICT: রানটাইম এরর। fatal error নয়। এই এরর দিয়ে মূলত একটা সাজেশন পাওয়া যায়, ফলে কোড আরেকটু উন্নত হয়। (PHP ৫ ভার্সনে এসেছে )।
E_RECOVERABLE_ERROR: প্রায় E_ERROR - এর কাছাকাছি।
E_DEPRECATED: এটা একটা রানটাইম নাটিশ। পিএইচপির ভবিষ্যতের ভার্সনে কাজ করবে না এমন কোড লিখলে এমন মেসেজ দেবে।
E_USER_DEPRECATED: E_DEPRE CATED - এর মতাে, তবে ইউজার তথা প্রােগ্রামারের মাধ্যমে তৈরি rigger_error() দিয়ে।
E_ALL: E_STRICT ছাড়া সব এরর এবং সতর্কতা ( warring )।
জাভা রিলেশনাল অপারেটর কি? কিভাবে রিলেশনাল অপারেটর তৈরি করবেন?
জাভায় ৯ ধরনের রিলেশনাল অপারেটর রয়েছে। এ অপারেটরগুলাে একটির সাথে আরেকটির রিলেশন বুঝাতে ব্যবহার হয়। প্রােগ্রামিংয়ে এসব অপারেটর গুরুত্বপূর্ণ ভূমিকা পালন করে থাকে। আমরা কোনাে ভেরিয়েবলে কোনাে মান বা সংখ্যা নিয়ে ওই ভেরিয়েবলের সাথে তুলনা করতে পারি। এখানে আমরা শর্ত জুড়ে দিতে পারি। যেমন যদি কখনও এই ভেরিয়েবলের মান সমান হয়, তাহলে এই কাজ কর, নয়ত ওই কাজ কর। এভাবে প্রােগ্রামিংয়ে অনেক সিদ্ধান্ত নেয়া যায়। রিলেশনাল অপারেটর ব্যবহারে কন্ডিশন সত্য কি না মূলত তাই যাচাই করা হয়। নিচে এ ধরনের একটি প্রােগ্রাম জাভায় কীভাবে লিখতে হয় তা দেখানাে হলাে।
RelationalOp.java
class RelationalOp
{
public static void main(String args[])
{
float a=10.0F;
double b =10.0;
if(a==b)
System.out.println(“a and b are equal”);
else
System.out.println(“a and b are not equal”);
}
}
RelationalOperators.java
class RelationalOperators
{
public static void main(String args[])
{
float a = 15.0F,b = 20.75F,c = 15.0F;
System.out.println(“ a = “ + a);
System.out.println(“ b = “ + b);
System.out.println(“ c = “ + c);
System.out.println(“ a < b is “ + (a<b));
System.out.println(“ a > b is “ + (a>b));
System.out.println(“ a == c is “ + (a==c));
System.out.println(“ a <= c is “ + (a<=c));
System.out.println(“ a >= b is “ + (a>=b));
System.out.println(“ b != c is “ + (b!=c));
System.out.println(“ b == a+c is “ + (b==a+c));
}
}
RelationalOp.java
class RelationalOp
{
public static void main(String args[])
{
float a=10.0F;
double b =10.0;
if(a==b)
System.out.println(“a and b are equal”);
else
System.out.println(“a and b are not equal”);
}
}
RelationalOperators.java
class RelationalOperators
{
public static void main(String args[])
{
float a = 15.0F,b = 20.75F,c = 15.0F;
System.out.println(“ a = “ + a);
System.out.println(“ b = “ + b);
System.out.println(“ c = “ + c);
System.out.println(“ a < b is “ + (a<b));
System.out.println(“ a > b is “ + (a>b));
System.out.println(“ a == c is “ + (a==c));
System.out.println(“ a <= c is “ + (a<=c));
System.out.println(“ a >= b is “ + (a>=b));
System.out.println(“ b != c is “ + (b!=c));
System.out.println(“ b == a+c is “ + (b==a+c));
}
}
নিজেকে গড়ে তুলুন সফল প্রোগ্রামার হিসেবে
স্বপ্ন যাদের আকাশ ছোঁয়ার, তাদের জন্য প্রোগ্রামিং হতে পারে একটি অন্যতম উপায়। প্রোগ্রামার হতে হলে কম্পিউটার সায়েন্সেই পড়তে হবে- এমন কোনো কথা নয়। পৃথিবীর অনেক নামীদামী প্রতিষ্ঠানে প্রোগ্রামার হিসেবে যারা আছেন, তাদের অনেকেরই কমপিউটার সায়েন্সে কোনো প্রাতিষ্ঠানিক ডিগ্রি নেই। তাদের অনেকেরই বিজ্ঞান বিষয়টি শিক্ষাজীবনে ছিল না। তবে গণিত বিষয়ে যেমন যোগ, বিয়োগ, গুণ ও ভাগ সম্পর্কে সাধারণ ধারণা থাকাটা অপরিহার্য, সেই সাথে লজিক বা যুক্তিবিদ্যা থাকতে হবে, মূলত যুক্তিবিদ্যাকে কাজে লাগিয়েই প্রোগ্রামিং করা হয়।
কম্পিউটার প্রোগ্রামিং কি?
অনেকেই মনে করেন, প্রোগ্রামিং একটি জটিল বিষয়। আসলে এটা অতটা জটিল নয়। কম্পিউটার প্রোগ্রামিংকে অনেকে প্রোগ্রামিং, কোডিং অথবা সফটওয়্যার ডেভেলপমেন্ট হিসেবে চেনে। এটি একটি লিখিত নির্দেশনা, যা কমপিউটার বুঝতে পারে। যেমন- মাইক্রোসফট এক্সেলে যদি কেউ ম্যাক্রো করে, তবে সে নিজেকে প্রোগ্রামার হিসেবে বলতে পারে। এইচটিএমএলে ওয়েব পেজ তৈরি করাও কোডিং লেখার মতো একটি কাজ (তবে অনেকেই এ বিষয়ে দ্বিমত পোষণ করবে, তবে সংজ্ঞা অনুযায়ী এটি সঠিক)। যদি কখনও মূলধারার প্রোগ্রামিং ল্যাঙ্গুয়েজে যেমন- বেসিক, প্যাসকেল, সি, জাভা, জাভাস্ক্রিপ্ট অথবা পিএইচপিতে কোডিং করে থাকেন, তবে প্রোগ্রামিংয়ের জগতে প্রবেশ করেছেন।
প্রোগ্রামিং কেন প্রয়োজন?
প্রোগ্রামিং দরকার কারণ, কম্পিউটার বেশি স্মার্ট নয়। কম্পিউটারকে কোনো নির্দেশনা না দিলে এটি হার্ডওয়্যার ছাড়া আর কিছুই নয়। হার্ডওয়্যারকে চালাতেই সফটওয়্যার অপরিহার্য। কমপিউটার প্রোগ্রামকে অনেকে অ্যাপ্লিকেশন অথবা কমপিউটার সফটওয়্যার হিসেবে চেনেন, যা একত্রিত কিছু নির্দেশনা অথবা কোড, যা এক বা একাধিক প্রোগ্রামার কম্পিউটারে তৈরি করে।
যদিও প্রোগ্রামিংয়ের প্রাথমিক কাজ নির্দিষ্ট কোনো এডিটরে কোডিং করা, তবে প্রোগ্রামারের কাজ শুধু কোডিং করা নয়। সফটওয়্যার ডেভেলপমেন্ট এমন একটি প্রক্রিয়া, যার মাধ্যমে প্রাথমিক ধারণা থেকে শুরু করে সম্পূর্ণ ব্যবহারোপযোগী প্রোডাক্ট তৈরি হয়। প্রোগ্রামিং যখন লিখিত কিছু নির্দেশনা, তখন সফটওয়্যার ডেভেলপমেন্ট সফটওয়্যার তৈরি করে বহুসংখ্যক কাজ একত্র করে, যেমন- ব্যবহারকারীদের সাথে কথা বলে (সম্ভাব্য ব্যবহারকারী) সফটওয়্যারের নতুন ফিচার ও ধারণা তৈরি করা।
কম্পিউটার প্রোগ্রামিং কি?
অনেকেই মনে করেন, প্রোগ্রামিং একটি জটিল বিষয়। আসলে এটা অতটা জটিল নয়। কম্পিউটার প্রোগ্রামিংকে অনেকে প্রোগ্রামিং, কোডিং অথবা সফটওয়্যার ডেভেলপমেন্ট হিসেবে চেনে। এটি একটি লিখিত নির্দেশনা, যা কমপিউটার বুঝতে পারে। যেমন- মাইক্রোসফট এক্সেলে যদি কেউ ম্যাক্রো করে, তবে সে নিজেকে প্রোগ্রামার হিসেবে বলতে পারে। এইচটিএমএলে ওয়েব পেজ তৈরি করাও কোডিং লেখার মতো একটি কাজ (তবে অনেকেই এ বিষয়ে দ্বিমত পোষণ করবে, তবে সংজ্ঞা অনুযায়ী এটি সঠিক)। যদি কখনও মূলধারার প্রোগ্রামিং ল্যাঙ্গুয়েজে যেমন- বেসিক, প্যাসকেল, সি, জাভা, জাভাস্ক্রিপ্ট অথবা পিএইচপিতে কোডিং করে থাকেন, তবে প্রোগ্রামিংয়ের জগতে প্রবেশ করেছেন।
প্রোগ্রামিং কেন প্রয়োজন?
প্রোগ্রামিং দরকার কারণ, কম্পিউটার বেশি স্মার্ট নয়। কম্পিউটারকে কোনো নির্দেশনা না দিলে এটি হার্ডওয়্যার ছাড়া আর কিছুই নয়। হার্ডওয়্যারকে চালাতেই সফটওয়্যার অপরিহার্য। কমপিউটার প্রোগ্রামকে অনেকে অ্যাপ্লিকেশন অথবা কমপিউটার সফটওয়্যার হিসেবে চেনেন, যা একত্রিত কিছু নির্দেশনা অথবা কোড, যা এক বা একাধিক প্রোগ্রামার কম্পিউটারে তৈরি করে।
যদিও প্রোগ্রামিংয়ের প্রাথমিক কাজ নির্দিষ্ট কোনো এডিটরে কোডিং করা, তবে প্রোগ্রামারের কাজ শুধু কোডিং করা নয়। সফটওয়্যার ডেভেলপমেন্ট এমন একটি প্রক্রিয়া, যার মাধ্যমে প্রাথমিক ধারণা থেকে শুরু করে সম্পূর্ণ ব্যবহারোপযোগী প্রোডাক্ট তৈরি হয়। প্রোগ্রামিং যখন লিখিত কিছু নির্দেশনা, তখন সফটওয়্যার ডেভেলপমেন্ট সফটওয়্যার তৈরি করে বহুসংখ্যক কাজ একত্র করে, যেমন- ব্যবহারকারীদের সাথে কথা বলে (সম্ভাব্য ব্যবহারকারী) সফটওয়্যারের নতুন ফিচার ও ধারণা তৈরি করা।
- সফটওয়্যার কীভাবে চলবে তার নির্দেশনা তৈরি করা।
- অন্যান্য প্রোগ্রামারের সাথে সফটওয়্যারের বৈশিষ্ট্য এবং নকশা তৈরি নিয়ে আলোচনা।
- কোড লেখা।
- কোড টেস্টিং বা পরীক্ষা।
- বাগ ফিক্সিং বা সমস্যা সমাধান।
- সফটওয়্যার রিলিজের জন্য প্রস্ত্তত করা।
- এবং অন্যান্য।
কেন প্রোগ্রামার হবেন?
প্রোগ্রামিং একটি চ্যালেঞ্জিং ও উচ্চ বেতনের পেশা। আপনার যদি সময়োপোযোগী প্রোগ্রামিং দক্ষতা থাকে, তাহলে প্রচুর চাকরি আপনার জন্য অপেক্ষা করছে। এই পেশায় আপনি চাইলে আপনার ইচ্ছে অনুযায়ী কাজের সময় এবং স্থান নির্বাচন করতে পারেন (বাসায় বসে, কফি শপে অথবা অন্য কোনো শহরে)।
ইউএস লেবার ডিপার্টমেন্টের হিসেবে অনুযায়ী, ২০০০ ও ২০১৪ সালের দ্রুততম ক্রমবর্ধমান ৮-১০টি চাকরিই কমপিউটার সম্পর্কিত। একটি ম্যাগাজিনের জরিপ অনুযায়ী, কমপিউটার সম্পর্কিত চাকরি ১০ নম্বরের মধ্যে। প্রোগ্রামিংয়ে চাকরি তাদের মধ্যে অন্যতম।
কিভাবে প্রোগামিং শুরু করবেন?
এ পেশায় ভালো করার একটিই উপায়- ধ্যান-জ্ঞান, চিন্তা-ভাবনা সব কিছুতে শুধু প্রোগ্রামিং থাকতে হবে। সর্বশক্তি নিয়ে প্রোগ্রামিং করতে নামতে হবে। কেউ যদি বলে, প্রোগ্রামিং শেখার কোনো শর্টকাট আছে কি না, সে ক্ষেত্রে খুব সহজেই ‘না’ বলে দেয়া যায়। অনেকে হয়তো মনে করতে পারেন, দিনে ১০-১২ ঘণ্টা কোডিং অনুশীলন করলে ভালো-দক্ষ প্রোগ্রামার হওয়া যাবে, আসলে ধারণাটি ভুল। মনোযোগের সাথে যদি কেউ ৩-৪ ঘণ্টা অনুশীলন করে, তবে সেটি বেশি কার্যকর হবে। অনেকেরই মনে-প্রাণে-ধ্যানে প্রোগ্রামিং শেখার ইচ্ছে আছে, কিন্তু কীভাবে শুরু করবেন, সে বিষয়টি নিয়ে একটু বিভ্রান্তি চলছে। তাদের জন্য অনলাইন হতে পারে একটি আদর্শ স্থান। যেমন- যারা সি দিয়ে প্রোগ্রামিং শুরু করতে চান, তারা সি বিষয়ে অনলাইনে খোঁজ করলে অসংখ্য টিউটোরিয়াল আসবে, যা দিয়ে প্রাথমিকভাবে শুরু করা যেতে পারে। প্রোগ্রামিং শেখার জন্য ইন্টারনেটের জগৎ বিশাল।
অনেকেরই একটি সাধারণ প্রশ্ন হচ্ছে, কোন ল্যাঙ্গুয়েজ দিয়ে শুরু করা ভালো। এই প্রশ্নের নির্দিষ্ট কোনো উত্তর দেয়া কঠিন। তবে যেকোনো প্রচলিত ল্যাঙ্গুয়েজ দিয়ে শুরু করা যেতে পারে। প্রাথমিক প্রোগ্রামিংয়ের জন্য সি, জাভা, পাইথন যেকোনো একটি দিয়ে শুরু করা যেতে পারে। তবে একটি বিষয় মনে রাখতে হবে, শুধু অনলাইনে ভিডিও টিউটোরিয়াল দেখে বা বই পড়ে একজন প্রোগ্রামার হওয়া যায় না। প্রোগ্রামার হতে হলে নিজে নিজে কোডিং লিখতে হবে এবং সমস্যা সমাধান করতে হবে।
পর্যালোচনা ও পরামর্শ
ভালো প্রোগ্রামার হতে হলে সবার আগে প্রয়োজন প্রচুর ধৈর্য। কোনো নির্দিষ্ট সমস্যা সমাধান করার মানসিকতা এবং সর্বোপরি প্রতিটি কাজে বিভিন্ন ধাপ অনুযায়ী সম্পন্ন করা। প্রোগ্রামিং শেখা মজার, আনন্দদায়ক এবং চ্যালেঞ্জিং একটি কাজ। এখানে আপনার অভিজ্ঞতাকে কাজে লাগিয়ে প্রোগ্রামিং ল্যাঙ্গুয়েজসহ অন্যান্য টেকনোলজি ব্যবহার করে অ্যাপ্লিকেশন বানাবেন। প্রোগ্রামার হওয়ার যে ইচ্ছেটুকু লালন করে আছেন, তা নিয়ে দৃঢ়সঙ্কল্পে এগিয়ে যেতে হবে সামনের দিকে, থাকতে হবে প্রযুক্তির সব নতুন নতুন আবিষ্কারের প্রতি প্রবল আকর্ষণ। একটি সময় আসবে, যখন দেখবেন আপনি সেরা প্রোগ্রামারের আসনে বসে আছেন।
জাভা বিটওয়াইজ অপারেটর কি? কিভাবে বিটওয়াইজ অপারেটর ব্যবহার করবেন?
জাভায় বিটওয়াইজ অপারেটর কোনাে ক্যারেক্টারকে রিপ্রেজেন্ট করার জন্য অ্যাকশন হিসেবে বাইট বা তার চেয়ে বড় মাপের কোনাে ডাটার পরিবর্তে বিট লেভেলে কাজ করার জন্য ব্যবহার হয়। আমরা জানি, কমপিউটার সব সময় বিট নিয়ে কাজ করে। বিট হলাে দুটি ক্যারেক্টার 0 ও 1। কমপিউটারে যত কাজ করা হয় বা যত ডাটা স্টোর করা হয়, সব কাজই এই দুটি ক্যারেক্টারের মাধ্যমে কমপিউটার বুঝে থাকে। বিটের চেয়ে আরেকটু বড় মাপের ডাটা টাইপ হলাে বাইট। প্রতি বাইটে ৮ বিট হিসেবে গণনা করা হয়। সব প্রােগ্রামিং ল্যাঙ্গুয়েজ বিটওয়াইজ অপারেটর সাপাের্ট করে না। তবে সি, জাভা, জাভাস্ক্রিপ্ট, পাইথন এবং ভিজুয়াল বেসিক এটাকে সাপাের্ট করে। কারণ, এ ভাষাগুলাে অধিক সুবিধা সংবলিত এবং কম রিসাের্স ব্যবহার করে থাকে। এ অপারেটরগুলাে কিছু কোড খুব দ্রুত ও সুন্দরভাবে তৈরি করে। উদাহরণস্বরূপ- এনক্রিপশন, কমপ্রেশন, গ্রাফিক্স, পাের্ট বা সকেটের মাধ্যমে কমিউনিকেশন এবং এমবেডেড সিস্টেম প্রােগ্রামিংয়ের জন্য এগুলাে ব্যবহার করা যায়।
bitwisetest.java
public class bitwisetest
{
public static void main(String args[])
{
int a = 60;
int b = 13;
int c = 0;
c= a & b;
System.out.println (“a & b = “ + c);
c= a | b;
System.out.println (“a | b = “ + c);
c= a ^ b;
System.out.println (“a ^ b = “ + c);
c= ~a;
System.out.println (“~a = “ + c);
c= a << 2;
System.out.println (“a << 2 =” + c);
c= a >> 2;
System.out.println (“a >> 2 =” + c);
c= a >>> 2;
System.out.println (“a >>> b = “ + c);
}
}
BitsetTester.java
import java.util.*;
public class BitsetTester
{
public static void main(String args[])
{
BitSet bits1 = new BitSet(10);
bits1.set(1);
bits1.set(4);
// create a BitSet and set items 4 and 5
BitSet bits2 = new BitSet(10);
bits2.set(4);
bits2.set(5);
// display the contents of these two BitSets
System.out.println(“Bits 1=” + bits1.toString());
System.out.println(“Bits 2=” + bits2.toString());
// Test for equality of the two BitSets
if(bits1.equals(bits2)) System.out.println(“bits1 == bits2\r\n”);
else System.out.println(“bits1 !== bits2\r\n”);
// create a clone and then test for equality
BitSet clonedBits = (BitSet)bits1.clone();
if(bits1.equals(clonedBits))
System.out.println(“bist1 == cloned Bits”);
else
System.out.println(“bits1 != cloned Bits”);
// Logically AND the first two BitSets
bits1.and(bits2);
System.out.println(“ANDing bits1 and bits2”);
// And display the resulting BitSet
System.out.println(“bits1=”+ bits1.toString());
}
}
bitwisetest.java
public class bitwisetest
{
public static void main(String args[])
{
int a = 60;
int b = 13;
int c = 0;
c= a & b;
System.out.println (“a & b = “ + c);
c= a | b;
System.out.println (“a | b = “ + c);
c= a ^ b;
System.out.println (“a ^ b = “ + c);
c= ~a;
System.out.println (“~a = “ + c);
c= a << 2;
System.out.println (“a << 2 =” + c);
c= a >> 2;
System.out.println (“a >> 2 =” + c);
c= a >>> 2;
System.out.println (“a >>> b = “ + c);
}
}
BitsetTester.java
import java.util.*;
public class BitsetTester
{
public static void main(String args[])
{
BitSet bits1 = new BitSet(10);
bits1.set(1);
bits1.set(4);
// create a BitSet and set items 4 and 5
BitSet bits2 = new BitSet(10);
bits2.set(4);
bits2.set(5);
// display the contents of these two BitSets
System.out.println(“Bits 1=” + bits1.toString());
System.out.println(“Bits 2=” + bits2.toString());
// Test for equality of the two BitSets
if(bits1.equals(bits2)) System.out.println(“bits1 == bits2\r\n”);
else System.out.println(“bits1 !== bits2\r\n”);
// create a clone and then test for equality
BitSet clonedBits = (BitSet)bits1.clone();
if(bits1.equals(clonedBits))
System.out.println(“bist1 == cloned Bits”);
else
System.out.println(“bits1 != cloned Bits”);
// Logically AND the first two BitSets
bits1.and(bits2);
System.out.println(“ANDing bits1 and bits2”);
// And display the resulting BitSet
System.out.println(“bits1=”+ bits1.toString());
}
}
প্রােগ্রামের ধারণা
আজকের কম্পিউটার নানাবিধ কাজে ব্যবহৃত হলেও মূলত হিসাব নিকাশের যন্ত্র আবিষ্কারের ধারাবাহিকতার ফসল এটি। হিসাব নিকাশের জন্য বিভিন্ন পদ্ধতির ব্যবহার সেই প্রাচীনকাল থেকেই শুরু। হিসাব নিকাশের জন্য তখন নুড়ি পাথর, ঝিনুক, মার্বেল ইত্যাদি ব্যবহৃত হত। পরবর্তীতে খ্রিষ্টপূর্ব ২৫০০ অব্দে শুরু হয় এক ধরনের যন্ত্রের ব্যবহার যা অ্যাবাকাস নামে পরিচিত। অ্যাবাকাস হচ্ছে কাঠের তৈরি আয়তাকার কাঠামাে। এতে কাঠের ফ্রেমের ভিতর আড়াআড়িভাবে সুতা বেঁধে বিভিন্ন রংয়ের গােলাকার বল সাজিয়ে রাখা হতাে এবং এর সাহায্যে বিশেষ পদ্ধতিতে যােগ, বিয়ােগ, গুণ, ভাগ ইত্যাদি গাণিতিক অপারেশন করা যেত। পরবর্তী বিভিন্ন সময়ে হিসাব নিকাশকে সহজ করার জন্য নানাবিধ যন্ত্র আবিষ্কৃত হতে থাকে। তবে দীর্ঘকাল ধরেই বিজ্ঞানীদের চেষ্টা ছিল যেন যন্ত্রের বাইরে থেকে নির্দেশ দিয়ে যন্ত্রকে পরিচালনা করা যায়। এই চেষ্টার অংশ হিসেবে ১৮২২ সালে ইংল্যান্ডের প্রকৌশলী ও গণিতবিদ চার্লস ব্যাবেজ লগারিদমসহ গাণিতিক হিসাব নিকাশের কাজ অধিক সহজ করার জন্য ব্রিটিশ সরকারের সহায়তায় ডিফারেন্স ইঞ্জিন নামে একটি যন্ত্র আবিষ্কার করেন। এ যন্ত্রটি থেকে আশানুরূপ সাফল্য না পেয়ে তার প্রায় একযুগ পর ১৮৩৩ সালে নিজ উদ্যোগে অ্যানালাইটিক্যাল ইঞ্জিন নামে অপর একটি যন্ত্র তৈরি করেন যা দুটি অংশে বিভক্ত ছিল। একটি অংশ ছিল প্রক্রিয়াকরণের জন্য, যা মিল নামে পরিচিত ছিলাে এবং অপর অংশ স্টোর নামে পরিচিত ছিল যা ডেটা সংরক্ষণ করতে পারত। তার আবিষ্কৃত যন্ত্রটির সফল ব্যবহারের জন্য বিখ্যাত ইংরেজ কবি লর্ড বাইরনের কন্যা অ্যাডা লাভল্যাস বারনােলি নম্বর ব্যবহার করে ধারাবাহিকভাবে হিসাবের জন্য প্রথম একটি প্রােগ্রাম রচনা করেন। তার লিখিত প্রােগ্রামটি প্রথম প্রােগ্রাম হিসেবে বিবেচিত হয় এবং এজন্য তাঁকে প্রথম প্রােগ্রামার বলা হয়। পরবর্তীতে তাঁর এ কাজের স্বীকৃতি স্বরূপ অ্যাডা লাভল্যাসের নামে একটি প্রােগ্রামিং ভাষার নামকরণ করা হয় যা এডা নামে পরিচিত।
অ্যাডা লাভল্যাস |
একটি আদর্শ প্রােগ্রামের বৈশিষ্ট্য
ভাষা জানা থাকলেও সবাই যেমন সাহিত্য রচনা করতে পারে না, তেমনি প্রােগ্রামিং ভাষা জানা থাকলেও ভালাে প্রােগ্রাম রচনা করা সহজ নয়। প্রােগ্রামিং এর শুরুটা গাণিতিক মনে হলেও এর সাথে শিল্পরস জড়িত থাকে। আদর্শ প্রােগ্রাম বলতে যে প্রােগ্রামে কম্পিউটার প্রােগ্রামের যাবতীয় বৈশিষ্ট্য বা গুণাবলী বর্তমান সে ধরনের প্রােগ্রামকে বুঝায়। একটি আদর্শ প্রােগ্রামে সাধারণত পাঁচটি পর্ব থাকে। যথা -
১. পরিচয় পর্ব; ২. বর্ণনা; ৩. ইনপুট; ৪. প্রসেস; ৫. আউটপুট।
একটি প্রােগ্রাম আদর্শ হতে হলে তাকে নিম্নলিখিত গুণাবলীর অধিকারী হতে হয়।
- প্রােগ্রামের এলগরিদম সরলভাবে প্রণয়ন করা যেন প্রােগ্রামের ধাপগুলাে সহজেই বুঝা যায়।
- প্রােগ্রামের প্রবাহচিত্র স্পষ্টভাবে উপস্থাপন করা যাতে প্রােগ্রাম নির্বাহের ধারা বুঝা যায়।
- প্রােগ্রামের শুরুতে প্রােগ্রামের উদ্দেশ্য, প্রােগ্রামারের নাম, ধুবক, চলক ইত্যাদির পরিচয় রাখা।
- এতে পরবর্তী প্রােগ্রামার সহজেই প্রােগ্রামের উদ্দেশ্য ও কাজ সম্পর্কে ধারণা পেতে পারে।
- চলক হিসাবে প্রতিনিধিত্বমূলক বা অর্থপূর্ণ শব্দ ব্যবহার করা যাতে চলকের উদ্দেশ্য বুঝতে অসুবিধা না হয়।
- প্রােগ্রামকে অকারণে দীর্ঘ না করা।
- নির্দিষ্ট সমস্যার জন্য প্রয়ােজনে উপযুক্ত প্রােগ্রামিং ভাষা নির্বাচন করা।
- প্রয়ােজনের অতিরিক্ত চক্র বাদ দিতে হবে।
- ভবিষ্যৎ-এ প্রয়ােজনে প্রােগ্রামের মধ্যে পরিবর্তন করা সহজ হবে।
- গুরুত্বপূর্ণ অংশ বা যে কোন ফাংশন লিখলে তার সাথে মন্তব্য দিতে হবে।
- তথ্য প্রদানের ব্যবস্থা থাকতে হবে।
- তথ্য প্রক্রিয়াকরণের ব্যবস্থা থাকতে হবে।
- অবশ্যই ফলাফল প্রাপ্তির সুবিধা থাকতে হবে।
অবজেক্ট-ওরিয়েন্টেড কি?
অবজেক্ট-ওরিয়েন্টেড বলতে একটি প্রোগ্রামিং ভাষা, সিস্টেম বা সফ্টওয়্যার প্রণালী বিজ্ঞান যা লজিক্যাল বস্তুর ধারণার উপর নির্মিত হওয়াকে বোঝায়। এটি নির্দিষ্ট টাস্ক, প্রক্রিয়া বা উদ্দেশ্য সম্পাদন করতে পুনঃব্যবহারযোগ্য বস্তুর সৃষ্টি, ব্যবহার এবং ম্যানিপুলেশন মাধ্যমে কাজ করে।
অবজেক্ট ক্লাস কি?
কম্পিউটার প্রোগ্রামিংয়ে অবজেক্ট ক্লাস বিভিন্ন অবজেক্টের গ্রুপ তৈরি করার জন্য ব্যবহৃত হয়। ক্লাস হলো অবজেক্ট তৈরি করার কোড টেমপ্লেট।
৮-বিট ইউনিকোড ট্রান্সফরমেশন ফরম্যাট (ইউটিএফ-8) কি?
৮-বিট ইউনিকোড ট্রান্সফরমেশন ফরম্যাট (UTF-8) বিভিন্ন অক্ষর এনকোড করার জন্য অপেক্ষাকৃত নতুন কোড কনভেনশন। এটি ক্যারেক্টার পরিচয় এবং কম্পিউটার, মোবাইল ডিভাইস সহ বিভিন্ন ধরণের প্রোগ্রামিং ভাষার রেফারেন্সের মান। UTF-8 প্রোটোকল অক্ষর, সংখ্যা এবং অন্যান্য ক্যারেক্টার প্রদর্শনে সহায়তা করে। এছাড়াও ইউটিএফ -৮ RFC 2279 নামেও পরিচিত।
আর (R) প্রোগ্রামিং ভাষা কি?
জে# একটি প্রোগ্রামিং ভাষা যা ডেভেলপারকে জাভা অ্যাপ্লিকেশন বিকাশের জন্য সরঞ্জামের একটি সেট সরবরাহ করে। এটি মাইক্রোসফট এর .NET রানটাইম প্ল্যাটফর্মে চলে। এই শব্দটি ভিজ্যুয়াল জে# হিসাবেও পরিচিত (প্রায়শই "জে-শার্প" হিসাবে উচ্চারিত)। জে# এ ব্যবহৃত নন-জাভা নিয়মাবলী .NET পরিবেশের জন্য বন্ধুত্বপূর্ণ ভাষা তৈরি করে। যদিও জাভা এবং জে# সাধারণ সিনট্যাক্স ব্যবহার করে, তবে J# .NET ফ্রেমওয়ার্ক সমর্থন কারার অ-জাভা কনভেনশন ব্যবহার করে। J# কম্পোনেন্ট অবজেক্ট-মডেল (COM) অবজেক্টস এবং জে /সরাসরি ইন্টারফেসকে মাইক্রোসফ্ট উইন্ডোজে সমর্থন করার ক্ষমতা আছে।
.NET ফ্রেমওয়ার্ক বেশ কয়েকটি বৈশিষ্ট্য প্রদান করে। সেজন্য J# দ্বারা অ্যাপ্লিকেশন ডেভেলপমেন্ট করা সহজতর। এই বৈশিষ্ট্যগুলির মধ্যে কয়েকটি হলঃ
.NET ফ্রেমওয়ার্ক বেশ কয়েকটি বৈশিষ্ট্য প্রদান করে। সেজন্য J# দ্বারা অ্যাপ্লিকেশন ডেভেলপমেন্ট করা সহজতর। এই বৈশিষ্ট্যগুলির মধ্যে কয়েকটি হলঃ
- কম্পাইলার জাভা ভাষার সোর্স কোডকে মাইক্রোসফ্ট ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ (MSIL) এ রূপান্তর করতে সহায়তা করে।
- এর ক্লাস লাইব্রেরি আছে।
- এর একটি জাভা ভাষা বাইটকোড কনভার্টার (বাইটকোডকে MSIL এ রূপান্তর করার জন্য) রয়েছে, জাভা সোর্স কোডটি উপলভ্য না হলে এটি উপযোগী করে তুলে।
- এটিতে com.ms.lang, com.ms.dll, com.ms.com এবং com.ms.win32 প্যাকেজ অন্তর্ভুক্ত।
- এর ফাইল এক্সটেনশান .Jsl
জে# কম্পাইলার বিস্তৃত অপশন সরবরাহ করে যা কমান্ড-লাইন সুইচের সাথে ব্যবহার করা যায়ঃ
- /o: কম্পাইলার অপ্টিমাইজেশান সক্ষম করে।
- /ডিবাগ: Emit ডিবাগিং তথ্য।
- /help: কমান্ড-লাইন অপশনের জন্য সহায়তা এবং বর্ণনা প্রদর্শন করে।
- /আউট: নির্দিষ্ট ফাইলের জন্য কম্পাইল আউটপুট লিখে।
সি# (সি শার্প) কি?
সি# একটি নেটওয়ার্কিং এবং ওয়েব ডেভেলপমেন্টের জন্য সাধারণ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) ভাষা। সি# কে কমন ল্যাংগুয়েজ ইনফ্রাস্ট্রাকচার (CLI) ভাষা হিসাবে নির্দিষ্ট করা হয়।
জানুয়ারী ১৯৯৯ সালে, ডাচ সফ্টওয়্যার প্রকৌশলী অ্যান্ডার্স হেজসবার্গের মাইক্রোসফটের নেট ফ্রেমওয়ার্কের পরিপূরক হিসাবে C# বিকাশের জন্য একটি দল গঠন করেন। প্রাথমিকভাবে, সি# সি-লাইক অবজেক্ট-ওরিয়েন্টেড ভাষা (কুল) হিসাবে বিকশিত হয়েছিল। প্রকৃত নাম সম্ভাব্য ট্রেডমার্ক সমস্যা এড়াতে পরিবর্তন করা হয়েছে। ২০০০ সালের জানুয়ারিতে, নেট সি# হিসাবে মুক্তি পায়। এর নেট ফ্রেমওয়ার্ক একাধিক ওয়েব প্রযুক্তি প্রচার করে।
শব্দটি কখনও কখনও সি শার্প বা সি-শার্প হিসাবে বানান করা হয়।
# অক্ষরটির নাম বাদ্যযন্ত্র শার্প কী থেকে উদ্ভূত হয়, যা একটি সেমিটোন পিচ বৃদ্ধি নির্দেশ করে। সি # উচ্চারিত হয় "see sharp"
জানুয়ারী ১৯৯৯ সালে, ডাচ সফ্টওয়্যার প্রকৌশলী অ্যান্ডার্স হেজসবার্গের মাইক্রোসফটের নেট ফ্রেমওয়ার্কের পরিপূরক হিসাবে C# বিকাশের জন্য একটি দল গঠন করেন। প্রাথমিকভাবে, সি# সি-লাইক অবজেক্ট-ওরিয়েন্টেড ভাষা (কুল) হিসাবে বিকশিত হয়েছিল। প্রকৃত নাম সম্ভাব্য ট্রেডমার্ক সমস্যা এড়াতে পরিবর্তন করা হয়েছে। ২০০০ সালের জানুয়ারিতে, নেট সি# হিসাবে মুক্তি পায়। এর নেট ফ্রেমওয়ার্ক একাধিক ওয়েব প্রযুক্তি প্রচার করে।
শব্দটি কখনও কখনও সি শার্প বা সি-শার্প হিসাবে বানান করা হয়।
# অক্ষরটির নাম বাদ্যযন্ত্র শার্প কী থেকে উদ্ভূত হয়, যা একটি সেমিটোন পিচ বৃদ্ধি নির্দেশ করে। সি # উচ্চারিত হয় "see sharp"
সি প্রোগ্রাম গঠন
আমরা সি প্রোগ্রামিং ভাষার মৌলিক বিল্ডিং ব্লকগুলি পড়ার আগে, চলুন একটি সি প্রোগ্রামের কাঠামো দেখি যাতে পরবর্তী অধ্যায়ের একটি রেফারেন্স হিসাবে এটি গ্রহণ করতে পারি।
হ্যালো ওয়ার্ল্ড উদাহরণ
একটি সি প্রোগ্রাম মূলত নিম্নলিখিত অংশ নিয়ে গঠিত -
হ্যালো ওয়ার্ল্ড উদাহরণ
একটি সি প্রোগ্রাম মূলত নিম্নলিখিত অংশ নিয়ে গঠিত -
- প্রিপপ্রসেসর কমান্ড (Preprocessor Commands)
- ফাংশন (Functions)
- ভেরিয়েবল (Variables)
- স্টেটমেন্ট এবং এক্সপ্রেশন (Statements & Expressions)
- কমেন্ট (Comments)
আসুন একটি সহজ কোড দেখি যা "হ্যালো ওয়ার্ল্ড" শব্দের প্রিন্ট করবে -
#include <stdio.h> int main() { /* my first program in C */ printf("Hello, World! \n"); return 0; }
উপরের প্রোগ্রামের বিভিন্ন অংশে নজর রাখি -
- প্রোগ্রামের প্রথম লাইন #include <stdio.h> একটি প্রিপপ্রক্সেসর কমান্ড যা প্রকৃত সংকলনে যাওয়ার আগে সিডি কম্পাইলারকে stdio.h ফাইলটি অন্তর্ভুক্ত করতে বলে।
- পরবর্তী লাইন int main () হল মূল ফাংশন যেখানে প্রোগ্রাম কার্যকর করা শুরু হয়।
- পরবর্তী লাইন /*...*/ কম্পাইলার দ্বারা উপেক্ষিত হয় এবং এটিতে প্রোগ্রামের অতিরিক্ত comment s যুক্ত করা হয়েছে। সুতরাং এই ধরনের লাইনকে প্রোগ্রামের কমেন্ট (Comments) বলা হয়।
- পরবর্তী লাইন printf (...) সি তে উপলব্ধ অন্য একটি ফাংশন যা "হ্যালো, ওয়ার্ল্ড!" বার্তাটি পর্দায় প্রদর্শিত করে।
- পরবর্তী লাইন return 0; main() ফাংশন বন্ধ (টার্মিনেট) করে এবং value 0 প্রদান করে।
কম্পাইল এবং সি প্রোগ্রাম চালানো
কিভাবে ফাইলটিতে সোর্স কোড সংরক্ষণ করতে হয় এবং কিভাবে কম্পাইল এবং রান করতে হয় তা দেখি। নিম্নলিখিত সহজ পদক্ষেপ -
- একটি টেক্সট এডিটর খুলুন এবং উপরে উল্লেখিত কোড এড করুন।
- Hello.c হিসাবে ফাইল সংরক্ষণ করুন।
- একটি কমান্ড প্রম্পট খুলুন এবং ডিরেক্টরিতে যান, যেখানে আপনি ফাইলটি সংরক্ষণ করেছেন।
- gcc hello.c টাইপ করুন এবং আপনার কোড কম্পাইল করার জন্য এন্টার চাপুন।
- যদি আপনার কোডে কোন ত্রুটি (errors) না থাকে তবে কমান্ড প্রম্পট আপনাকে পরবর্তী লাইনে নিয়ে যাবে এবং এটি আউটপুটযোগ্য ফাইল তৈরি করবে।
- এখন, আপনার প্রোগ্রাম চালানোর জন্য a.out টাইপ করুন।
- আপনি পর্দায় "হ্যালো ওয়ার্ল্ড"আউটপুট দেখতে পাবেন।
$ gcc hello.c
$ ./a.out
Hello, World!
gcc কম্পাইলারটি আপনার পথে রয়েছে নিশ্চিত করুন এবং যা আপনি সোর্স ফাইল hello.c ধারণকারী ডিরেক্টরির মধ্যে চালাচ্ছেন।
সি প্রোগ্রাম গঠন
আমরা সি প্রোগ্রামিং ভাষার মৌলিক বিল্ডিং ব্লকগুলি পড়ার আগে, চলুন একটি সি প্রোগ্রামের কাঠামো দেখি যাতে পরবর্তী অধ্যায়ের একটি রেফারেন্স হিসাবে এটি গ্রহণ করতে পারি।
হ্যালো ওয়ার্ল্ড উদাহরণ
একটি সি প্রোগ্রাম মূলত নিম্নলিখিত অংশ নিয়ে গঠিত -
হ্যালো ওয়ার্ল্ড উদাহরণ
একটি সি প্রোগ্রাম মূলত নিম্নলিখিত অংশ নিয়ে গঠিত -
- প্রিপপ্রসেসর কমান্ড (Preprocessor Commands)
- ফাংশন (Functions)
- ভেরিয়েবল (Variables)
- স্টেটমেন্ট এবং এক্সপ্রেশন (Statements & Expressions)
- কমেন্ট (Comments)
আসুন একটি সহজ কোড দেখি যা "হ্যালো ওয়ার্ল্ড" শব্দের প্রিন্ট করবে -
#include <stdio.h> int main() { /* my first program in C */ printf("Hello, World! \n"); return 0; }
উপরের প্রোগ্রামের বিভিন্ন অংশে নজর রাখি -
- প্রোগ্রামের প্রথম লাইন #include <stdio.h> একটি প্রিপপ্রক্সেসর কমান্ড যা প্রকৃত সংকলনে যাওয়ার আগে সিডি কম্পাইলারকে stdio.h ফাইলটি অন্তর্ভুক্ত করতে বলে।
- পরবর্তী লাইন int main () হল মূল ফাংশন যেখানে প্রোগ্রাম কার্যকর করা শুরু হয়।
- পরবর্তী লাইন /*...*/ কম্পাইলার দ্বারা উপেক্ষিত হয় এবং এটিতে প্রোগ্রামের অতিরিক্ত comment s যুক্ত করা হয়েছে। সুতরাং এই ধরনের লাইনকে প্রোগ্রামের কমেন্ট (Comments) বলা হয়।
- পরবর্তী লাইন printf (...) সি তে উপলব্ধ অন্য একটি ফাংশন যা "হ্যালো, ওয়ার্ল্ড!" বার্তাটি পর্দায় প্রদর্শিত করে।
- পরবর্তী লাইন return 0; main() ফাংশন বন্ধ (টার্মিনেট) করে এবং value 0 প্রদান করে।
কম্পাইল এবং সি প্রোগ্রাম চালানো
কিভাবে ফাইলটিতে সোর্স কোড সংরক্ষণ করতে হয় এবং কিভাবে কম্পাইল এবং রান করতে হয় তা দেখি। নিম্নলিখিত সহজ পদক্ষেপ -
- একটি টেক্সট এডিটর খুলুন এবং উপরে উল্লেখিত কোড এড করুন।
- Hello.c হিসাবে ফাইল সংরক্ষণ করুন।
- একটি কমান্ড প্রম্পট খুলুন এবং ডিরেক্টরিতে যান, যেখানে আপনি ফাইলটি সংরক্ষণ করেছেন।
- gcc hello.c টাইপ করুন এবং আপনার কোড কম্পাইল করার জন্য এন্টার চাপুন।
- যদি আপনার কোডে কোন ত্রুটি (errors) না থাকে তবে কমান্ড প্রম্পট আপনাকে পরবর্তী লাইনে নিয়ে যাবে এবং এটি আউটপুটযোগ্য ফাইল তৈরি করবে।
- এখন, আপনার প্রোগ্রাম চালানোর জন্য a.out টাইপ করুন।
- আপনি পর্দায় "হ্যালো ওয়ার্ল্ড"আউটপুট দেখতে পাবেন।
$ gcc hello.c
$ ./a.out
Hello, World!
gcc কম্পাইলারটি আপনার পথে রয়েছে নিশ্চিত করুন এবং যা আপনি সোর্স ফাইল hello.c ধারণকারী ডিরেক্টরির মধ্যে চালাচ্ছেন।
সি - পরিবেশ সেটআপ
স্থানীয় পরিবেশ সেটআপ
আপনি সি প্রোগ্রামিং ভাষার জন্য আপনার পরিবেশ সেট করতে চান তবে আপনার কম্পিউটারে উপলব্ধ দুটি সফটওয়্যার সরঞ্জাম দরকার, (ক) পাঠ্য সম্পাদক (Text Editor) এবং (খ) সি কম্পাইলার (C Compiler)
পাঠ্য সম্পাদক (Text Editor)
এটি আপনার প্রোগ্রাম টাইপ করতে ব্যবহার করা হবে। কয়েকটি সম্পাদকের উদাহরণগুলির মধ্যে উইন্ডোজ নোটপ্যাড (Windows Notepad), ওএস সম্পাদনা কমান্ড (OS Edit command), ব্রিফ (Brief), অ্যাপসিলন (Epsilon), ইএমএইচএস (EMACS) এবং ভিম বা ভিআই +vim or vi) রয়েছে।
টেক্সট সম্পাদকদের নাম ও সংস্করণ বিভিন্ন অপারেটিং সিস্টেমে পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, নোটপ্যাড উইন্ডোজে ব্যবহার করা হয়, এবং উইম বা ভিআই উইন্ডোজ এবং লিনাক্স বা ইউনিক্সে ব্যবহার করা করতে পারবেন।
আপনার সম্পাদকের দিয়ে আপনি যে ফাইলগুলি তৈরি করেন সেগুলিকে উৎস ফাইল বলা হয় এবং এতে প্রোগ্রাম উত্স কোডগুলি থাকে। সি প্রোগ্রামের জন্য উৎস ফাইলটি সাধারণত " .c " এক্সটেনশানটির সাথে নামকরণ করা হয়।
আপনার প্রোগ্রামিং শুরু করার আগে, নিশ্চয়ই আপনার কাছে একটি পাঠ্য সম্পাদক আছে এবং আপনার কম্পিউটার প্রোগ্রাম লিখতে যথেষ্ট পরিমাণ অভিজ্ঞতা রয়েছে, এটি একটি ফাইলে সংরক্ষণ করুন, এটি কম্পাইল করুন এবং অবশেষে এটি চালান।
সি কম্পাইলার
সোর্স ফাইলের মধ্যে লেখা সোর্স কোডটি আপনার প্রোগ্রামের জন্য মানব পাঠযোগ্য উৎস। এটি মেশিনের ভাষায় "কম্পাইল করা" দরকার যাতে আপনার CPU প্রকৃতপক্ষে প্রদত্ত নির্দেশাবলী অনুসারে প্রোগ্রামটি চালাতে পারে।
কম্পাইলার সোর্স কোডগুলিকে অবশেষে এক্সিকিউটেবল প্রোগ্রামে কম্পাইল করে। সবচেয়ে বেশি ব্যবহৃত এবং বিনামূল্যে উপলব্ধ কম্পাইলারটি হল জিএনইউ সি/সি++ কম্পাইলার।
টেক্সট সম্পাদকদের নাম ও সংস্করণ বিভিন্ন অপারেটিং সিস্টেমে পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, নোটপ্যাড উইন্ডোজে ব্যবহার করা হয়, এবং উইম বা ভিআই উইন্ডোজ এবং লিনাক্স বা ইউনিক্সে ব্যবহার করা করতে পারবেন।
আপনার সম্পাদকের দিয়ে আপনি যে ফাইলগুলি তৈরি করেন সেগুলিকে উৎস ফাইল বলা হয় এবং এতে প্রোগ্রাম উত্স কোডগুলি থাকে। সি প্রোগ্রামের জন্য উৎস ফাইলটি সাধারণত " .c " এক্সটেনশানটির সাথে নামকরণ করা হয়।
আপনার প্রোগ্রামিং শুরু করার আগে, নিশ্চয়ই আপনার কাছে একটি পাঠ্য সম্পাদক আছে এবং আপনার কম্পিউটার প্রোগ্রাম লিখতে যথেষ্ট পরিমাণ অভিজ্ঞতা রয়েছে, এটি একটি ফাইলে সংরক্ষণ করুন, এটি কম্পাইল করুন এবং অবশেষে এটি চালান।
সি কম্পাইলার
সোর্স ফাইলের মধ্যে লেখা সোর্স কোডটি আপনার প্রোগ্রামের জন্য মানব পাঠযোগ্য উৎস। এটি মেশিনের ভাষায় "কম্পাইল করা" দরকার যাতে আপনার CPU প্রকৃতপক্ষে প্রদত্ত নির্দেশাবলী অনুসারে প্রোগ্রামটি চালাতে পারে।
কম্পাইলার সোর্স কোডগুলিকে অবশেষে এক্সিকিউটেবল প্রোগ্রামে কম্পাইল করে। সবচেয়ে বেশি ব্যবহৃত এবং বিনামূল্যে উপলব্ধ কম্পাইলারটি হল জিএনইউ সি/সি++ কম্পাইলার।
নিম্নলিখিত বিভাগটি বিভিন্ন OS এ GNU C/C ++ কম্পাইলার ইনস্টল করার পদ্ধতি ব্যাখ্যা করে। আমরা সি/সি++ একসাথে উল্লেখ করি কারণ GNU gcc কম্পাইলার উভয় সি এবং সি ++ প্রোগ্রামিং ভাষার জন্য কাজ করে।
ইউনিক্স / লিনাক্সে ইনস্টল করুন
আপনি যদি লিনাক্স বা ইউনিক্স ব্যবহার করেন তবে কমান্ড লাইন থেকে নিম্নলিখিত কমান্ডটি দিয়ে আপনার সিস্টেমে GCC ইনস্টল করা আছে কিনা তা পরীক্ষা করুন -
$ gcc -v
যদি আপনার মেশিনে GNU কম্পাইলার ইনস্টল থাকে, তবে এটি নিম্নরূপ একটি বার্তা প্রিন্ট হবে -
Using built-in specs. Target: i386-redhat-linux Configured with: ../configure --prefix=/usr ....... Thread model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
GCC ইনস্টল করা না থাকলে, https://gcc.gnu.org/install/ এ উপলব্ধ আছে বিস্তারিত নির্দেশাবলী ব্যবহার করে আপনি এটি ইনস্টল করুন।
এই টিউটোরিয়ালটি লিনাক্সের উপর ভিত্তি করে লেখা হয়েছে এবং উদাহরণগুলি লিনাক্স সিস্টেমের ওএস সংকলিত হয়েছে।
ম্যাক অপারেটিং সিস্টেমে ইনস্টল করুন
আপনি যদি ম্যাক ওএস এক্স ব্যবহার করেন, তবে জিসিসি পাওয়ার সবচেয়ে সহজ উপায় হল অ্যাপল এর ওয়েব সাইট থেকে এক্সকোড ডেভেলপমেন্ট এনভায়রনমেন্ট ডাউনলোড করা এবং সহজ ইনস্টলেশন নির্দেশাবলী অনুসরণ করা। একবার Xcode সেটআপ করে আপনি C/C++ এর জন্য GNU কম্পাইলার ব্যবহার করতে পারবেন।
এক্সকোড বর্তমানে developer.apple.com/technologies/tools/ পাওয়া যায়।
উইন্ডোজে ইনস্টল করুন
উইন্ডোজ এ জিসিসি ইনস্টল করার জন্য, আপনাকে MinGW ইনস্টল করতে হবে। MinGW ইন্সটল করার জন্য, এর ওয়েবপেজে যান, www.mingw.org , এবং MinGW ডাউনলোড পেজের লিঙ্কটি অনুসরণ করুন। MinGW ইনস্টলেশন প্রোগ্রামের সর্বশেষ সংস্করণটি ডাউনলোড করুন, যা MINGW- <version> .exe নামে।
MinGW ইনস্টল করার সময়, আপনাকে অবশ্যই জিপিসি-কোর, gcc-g++, binutils, এবং MinGW রানটাইম ইনস্টল করতে হবে।
আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলে MinGW ইনস্টলেশনয়ের bin সাবডিরেক্টরিটি যোগ করুন, যাতে আপনি এই সরঞ্জামগুলি তাদের সাধারণ নামগুলির দ্বারা কমান্ড লাইনে নির্দিষ্ট করতে পারেন।
ইনস্টলেশন সম্পন্ন হওয়ার পরে, আপনি উইন্ডোজ কমান্ড লাইন থেকে gcc, g++, ar, ranlib, dlltool এবং অন্যান্য অন্যান্য GNU সরঞ্জাম চালাতে পারবেন।
সি প্রোগামিং টিটোরিয়াল
সি টিউটোরিয়াল
সি ১৯৭২ সালে ডেনিস এম. রিচি দ্বারা ইউনিক্স অপারেটিং সিস্টেম বিকাশের জন্য বেল টেলিফোন ল্যাবরেটরিতে একটি সাধারন উদ্দেশ্য, প্রসিডিউরাল, ইম্পারেটিভ কম্পিউটার প্রোগ্রামিং ভাষা তৈরি করেছিল। সি সবচেয়ে ব্যাপকভাবে ব্যবহৃত কম্পিউটার ভাষা। এটি জাভা প্রোগ্রামিং ভাষার মত জনপ্রিয় এক নম্বর স্কেলের ভাষা যা আধুনিক সফ্টওয়্যার প্রোগ্রামারদের মধ্যে সমানভাবে জনপ্রিয় এবং সর্বাধিক ব্যাপকভাবে ব্যবহৃত হয়।
পাঠকবর্গ
এই টিউটোরিয়ালটি স্ক্র্যাচ থেকে শুরু হওয়া সি প্রোগ্রামিং ভাষা বোঝার জন্য সফ্টওয়্যার প্রোগ্রামারদের জন্য ডিজাইন করা হয়েছে। এই টিউটোরিয়াল আপনাকে সি প্রোগ্রামিং প্রোগ্রামে পর্যাপ্ত সক্ষম করবে যেখানে আপনি নিজেকে উচ্চতর দক্ষতার সাথে নিয়ে যেতে পারেন।
পূর্বশর্ত
এই টিউটোরিয়ালটি চালিয়ে যাওয়ার আগে, আপনার কম্পিউটার প্রোগ্রামিং শব্দের মৌলিক জ্ঞান বা ধারণা থাকা উচিত। কোন প্রোগ্রামিং ভাষার মৌলিক ধারণা আপনাকে C প্রোগ্রামি শিখতে সহায়তা করবে।
এ প্রোগ্রামিং ভাষা (এপিএল) কি?
এ প্রোগ্রামিং ভাষা (এপিএল) প্রথম ১৯২৬ সালে একই নামে কেনেথ ই আইভারসনের বইয়ে বর্ণিত হয়েছিল। এপিএল একটি ইন্টারেক্টিভ এবং ব্যাখ্যাযুক্ত তৃতীয়-প্রজন্মের ভাষা (3GL)। এপিএলটিতে অ্যারে এবং অপারেটরের সংক্ষিপ্ত উপস্থাপনা রয়েছে, যা বিমূর্ত সমস্যার সমাধানের বাস্তবায়ন করার সময় তাদের কাজে লাগানো হয়। এটি বিভিন্ন ডোমেন থেকে করে এবং কম্পিউটিং প্ল্যাটফর্ম স্পেসিফিক্স থেকে অ্যালগরিদম প্রকাশ করে। এপিএল বিভিন্ন বাণিজ্যিক ও অ-বাণিজ্যিক বিক্রেতাদের দ্বারা ইন্টেগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্টে (আইডিই) সরবরাহ করা হয়। এপিএল নামে পরিচিত হওয়ার আগে, ভাষাটি কেবল আইভারসন ভাষা হিসাবে পরিচিত ছিল।
0 comments:
Post a Comment