Home / 2018 / April

Monthly Archives: April 2018

পাইথন(Python) ইনপুট, আউটপুট এবং ইম্পোর্ট

এই অধ্যায়ে আপনি জানবেন পাইথন বিল্ট-ইন(নিজস্ব) ফাংশন print() এবং input() ব্যবহার করে কিভাবে ইনপুট এবং আউটপুট কার্য সম্পাদন করতে হয়। এছাড়া ইম্পোর্ট মডিউল সম্বন্ধেও সংক্ষিপ্ত ধারনা পাবেন।

পাইথন নানা ধরণের বিল্ট-ইন ফাংশন সরবরাহ করে যেগুলো আমরা আমাদের প্রয়োজনে নির্দিধায় ব্যবহার করতে পারি।

স্টান্ডার্ড ইনপুট এবং আউটপুটের জন্য যথাক্রমে input() এবং  print() ফাংশন ব্যবহৃত হয়। চলুন প্রথমেই আমরা আউটপুট সেকশনটি দেখে নেই।

 

print() ফাংশনের মাধ্যমে পাইথন আউটপুট

স্টান্ডার্ড আউটপুট ডিভাইসে(যেমন-স্ক্রিনে) আউটপুট নেওয়ার জন্য আমরা print() ফাংশন ব্যবহার করি।

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

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

print('This sentence will be displayed on the screen')
# Output: This sentence will be displayed on the screen

num= 10

print('The value of num is', num)
# Output: The value of num is 10

দ্বিতীয় print() স্টেটমেন্টে লক্ষ্য করলে দেখবেন স্ট্রিং(string) এবং ভ্যারিয়েবল num এর মধ্যে একটি স্পেস দেওয়া আছে এবং এটি ডিফল্টভাবে ব্যবহৃত হয়, কিন্তু আমরা ইচ্ছা করলে এটি পরিবর্তন করতে পারি।

print()  ফাংশনের প্রকৃত সিনট্যাক্স (syntax ) নিম্নরূপঃ


print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

 

সিনট্যাক্স এর ব্যাখ্যা

  • এখানে objects হচ্ছে ভ্যালু যা প্রিন্ট করতে হবে।
  •   sep সেপারেটর দুটি ভ্যালুর মধ্যে ব্যবহৃত হয়। এটার ডিফল্ট ভ্যালু হচ্ছে স্পেস ক্যারেক্টার।
  • সকল ভ্যালু প্রিন্ট হওয়ার পরে end  প্রিন্ট হয় যার ডিফল্ট ভ্যালু হলো নতুন লাইন(new line)।
  • file হলো অবজেক্ট যেখানে /যাতে ভ্যালু প্রিন্ট হয় এবং এটার ডিফল্ট ভ্যালু হলো sys.stdout(স্ক্রিন)। নিচের উদাহরণের সাহায্যে ব্যাখ্যা দেওয়া হলোঃ

print(1,2,3,4,5)
# Output: 1 2 3 4

print(1,2,3,4,sep='&')
# Output: 1&2&3&4&5

print(1,2,3,4,5,sep='#',end='&')
# Output: 1*2*3*4&

আউটপুট ফরম্যাটিং(Output formatting)

আউটপুটকে অধিক আকর্ষনীয় করে তোলার জন্য মাঝে মাঝে আমাদের আউটপুট বিন্যাস/ফরম্যাটিং এর প্রয়োজন হতে পারে। str.format() মেথড ব্যবহার করে এটি সম্পন্ন করা যায়। যেকোনো স্ট্রিং অবজেক্টে এই মেথডটি প্রয়োগ করা যায়।


>>> x = 3; y = 5
>>> print('The value of x is {} and y is {}'.format(x,y))
#Output: The value of x is 3 and y is 5

এখানে কারলি ব্রাকেট{} স্থানধারক(placeholder) হিসাবে ব্যবহৃত হয়েছে। আমরা নাম্বার(টাপল ইনডেক্স) ব্যবহার করে এগুলোর অর্ডার ঠিক করে দিতে পারি।

</pre>
print('We love {0} and {1}'.format('SATT','founder of SATT'))
# Output: We love SATT and founder of SATT

print('We love {1} and {0}'.format('SATT','founder of SATT'))
# Output: We love founder of SATT and SATT
<pre>

স্ট্রিং ফরম্যাটের জন্য আমরা আর্গুমেন্টও ব্যবহার করতে পারি।

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


>>> print('Hello {name}, {asking}'.format(asking = 'How are you?', name = 'Tamjid'))
#Output: Hello Tamjid How are you?

সি প্রোগ্রামিং ভাষায় ব্যবহৃত পুরাতন স্টাইল   sprintf() ফাংশন ব্যবহার করেও আমরা স্ট্রিং ফরম্যাট করতে পারি।

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


>>> num = 10.35623906
>>> print('The value of num is %3.2f' %x)
#Output: The value of num is 10.36
>>> print('The value of num is %3.4f' %x)
#Output: The value of num is 10.3562


<h2>পাইথন ইনপুট(Python Input)</h2>
এতক্ষণ পর্যন্ত আমাদের প্রোগ্রাম ছিল স্ট্যাটিক(static)। অর্থাৎ ভ্যারিয়েবল এর ভ্যালু সোর্স কোডে ডিফাইন্ড(Defined) করা ছিল অথবা আমরা বলতে পরে এটি ছিল হার্ড কোডেড(Hard coded)।

প্রোগ্রামকে সহজ এবং ডাইনামিক করে তোলার জন্য আমাদেরকে অবশ্যই ইউজারদের কাছ থেকে ইনপুট নিতে হবে। পাইথনে এই কাজটি সম্পন্ন করতে <strong>input()</strong> ফাংশন ব্যবহৃত হয়। <strong>input()</strong>ফাংশনের সিনট্যাক্স নিম্নরূপঃ



input([prompt])

যেখানে prompt হচ্ছে স্ট্রিং যা স্ক্রিনে প্রদর্শিত হয় এবং যার মাধ্যমে ইউজারকে নির্দেশনা দেওয়া হয়। এটি ঐচ্ছিক(optional)।

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


>>> num = input('Enter a number: ')
Enter a number: 10
>>> num
#Output: '10'

এখানে আমরা 10 যে ভ্যালুটি দেখছি তা নাম্বার নয় বরং স্ট্রিং। এটাকে নাম্বারে রূপান্তর(convert) করার জন্য আমরা int() অথবা float() ফাংশন ব্যবহার করতে পারি।


>>> int('10')
#Output: 10
>>> float('10')
#Output: 10.0

একই কাজ আমরা eval() ফাংশনের মাধ্যমেও সম্পন্ন করতে পারি। বরং এটার সুযোগ-সুবিধা আরও বেশী। যদি ইনপুট ভ্যালু স্ট্রিং হয় তাহলে এটি এক্সপ্রেশন(expression) কেও নির্ণয়(evaluate) করতে পারে।


>>> int('3+7')
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '3+7'
>>> eval('3+7')
#Output: 10

পাইথন ইম্পোর্ট(Python Import)

যখন আমাদের প্রোগ্রাম অনেক বড় হতে থাকে তখন সবচেয়ে ভালো বুদ্ধি হলো প্রোগ্রামের বিভিন্ন অংশকে বিভিন্ন মডিউল(module)-এ বিভক্ত করা।

মডিউল হচ্ছে পাইথন এর বিভন্ন সংজ্ঞা এং স্টেটমেন্ট সম্বলিত একটি ফাইল। পাইথন মডিউলের একটি ফাইল নাম থাকে এবং এটি .py এক্সটেনশন এর মাধ্যমে শেষ হয়।

পাইথনে এক মডিউলে থাকা সংজ্ঞা(কোড) অন্য মডিউলে ইম্পোর্ট করা যায়। এটি করার জন্য আমরা import কীওয়ার্ড ব্যবহার করি।

উদাহরণস্বরূপ, import math এর মাধ্যমে আমারা math মডিউলকে ইম্পোর্ট করতে পারি।


import math
print(math.pi)

এখন math মডিউলে থাকা সমস্ত সংজ্ঞা(কোড) আমাদের স্কোপেও বিদ্যমান অর্থাৎ আমরা এর সমস্ত কোড ব্যবহার করতে পারি। এছাড়া আমরা চাইলে   from কীওয়ার্ড ব্যবহার করে কোনো মডিউলের নির্দিষ্ট কোনো সংজ্ঞাকেও ইম্পোর্ট করতে পারি।

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


>>> from math import pi
>>> pi
#Output: 3.141592653589793

যখন একটি মডিউলকে ইম্পোর্ট করা হয় তখন এটি sys.path এ নির্ধারিত বিভিন্ন স্থানে খোঁজ করে। নিম্নে ডিরেক্টরি লোকেশন এর তালিকা তুলে ধরা হলোঃ


>>> import sys
>>> sys.path
['',
'C:\\Python36\\Lib\\idlelib',
'C:\\Windows\\system32\\python36.zip',
'C:\\Python36\\DLLs',
'C:\\Python36\\lib',
'C:\\Python36',
'C:\\Python36\\lib\\site-packages']

আপনি চাইলে আপনার নিজস্ব লোকেশনকেও এই তালিকায় যুক্ত করতে পারেন।

সি-প্রোগ্রামিং (পর্ব ০১) – প্রাথমিক ধারনা

সি সাধারণ উদ্দেশ্যে(general-purpose) ব্যবহৃত একটি শক্তিশালী(powerfull) প্রোগ্রামিং ভাষা যা দ্রুততর(faster), বহনযোগ্য(portable) এবং সব ধরণের প্লাটফর্মেই উপযোগী।

আপনি যদি প্রোগ্রামিং এ নতুন হোন, তাহলে সি দিয়ে প্রোগ্রামিং এ যাত্রা শুরু হবে আপনার জন্য দারুণ এক পছন্দের বিষয়।

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

সি প্রোগ্রামিং কি?

সি প্রোগ্রামিং শেখা শুরু করার পূর্বে চলুন সি প্রোগ্রামিং ভাষাটির সঙ্গে পরিচিত হয়ে নিই।

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

সি একটি অত্যন্ত কার্যকরী(highly efficient) প্রোগ্রামিং ভাষা । প্রায় ৪৪ বছরেরও বেশি সময় ধরে জনপ্রিয় থাকার এটাই হয়ত মূল কারণ।

স্টান্ডার্ড সি প্রোগ্রাম বহনযোগ্য(portable)। একটি সিস্টেমের জন্য লিখিত কোড কোনো ধরণের পরিবর্তন ছাড়াই অন্য অপারেটিং সিস্টেমে কাজ করে।

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

সি প্রোগ্রামিং এর ইতিহাস

ইউনিক্স অপারেটিং সিস্টেমের সাথে সি প্রোগ্রামিং অত্যন্ত সম্পর্কযুক্ত।

ইউনিক্স সিস্টেম ডেভেলপমেন্ট

ইউনিক্স সিস্টেমের ভার্সন-PDP-11 এসেম্বলি ল্যাঙ্গুয়েজ দিয়ে লেখা। এসেম্বলি ল্যাঙ্গুয়েজ হলো লো-লেভেল(low-level) প্রোগ্রামিং ল্যাঙ্গুয়েজ। যা শুধু নির্দিষ্ট কোনো প্লাটফর্মের জন্য লেখা হয়। ইহা লেখা এবং বুঝাও অনেক কঠিন।

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

১৯৭২ সালে ইউনিক্স সিস্টেম PDP-11-এ সি এর ডেভেলপমেন্ট শুরু হয়। তখন উনিক্স এর বিশাল অংশ পূনরায় সি দিয়ে লেখা হয়েছিল। ১৯৭৩ সালে ইউনিক্স কার্নেলে সি যথেষ্ট শক্তিশালি ভাষা হিসাবে ব্যবহৃত হয়েছিল। ডেনিশ রিচি এবং স্টেফেন সি. জনশন ভাষাটিকে ইউনিক্স অপারেটিং সিস্টেমে বহনযোগ্য করে তোলার জন্য কয়েক বছর ধরে ইহাতে আরোও কিছু পরিবর্তন এনেছিলেন।

সি প্রোগ্রামিং এর প্রথম বই

১৯৭৮ সালে সি প্রোগ্রামিং এর প্রথম বই “The C Programming Language” প্রকাশিত হয়েছিল। বইটির প্রথম সংস্করণ প্রোগ্রামারদের কাছে অনেক বছর যাবৎ ভাষাটির সাধারণ বর্ণনা সর্বরাহ করেছিল। ব্রায়ান কার্নিংহাম এবং ডেনিশ রিচি কর্তৃক লেখা এই বইটি “K&R” নামে অনেক জনপ্রিয়।

আনসি(ANSI) সি

সি ল্যাঙ্গুয়েজ কয়েক বছরের মধ্যেই দ্রুত বৃদ্ধি পাওয়ায় ভাষাটির জন্য কিছু নিয়ম(standard) ঠিক করে দেওয়ার প্রয়োজন হয়েছিল।

C89: ১৯৮৯ সালে আমেরিকান ন্যাশন্যাল স্টান্ডার্ড ইন্সটিটিউট(ANSI) কর্তৃক সি এর প্রথম স্টান্ডার্ড প্রকাশিত হয়েছিল। সি এর এই ভার্সনটি প্রোগ্রামারদের কাছে C89 নামে জনপ্রিয় ছিল।

C99:   ১৯৯৯ সালে সি স্টান্ডার্ডে আরো নতুন কিছু বৈশিষ্ট্য যেমন- নতুন ইনলাইন ফাংশন, নতুন ডাটাটাইপ ইত্যাদি সংযুক্ত করা হয়েছিল। ইহা প্রোগ্রামারদের কাছে C99 নামে পরিচিত ছিল।

C11: C11 এ নতুন কিছু বৈশিষ্ট্য যেমন- টাইপ জেনেরিক ম্যাক্রো,অটোমিক অপারেশন এবং এনোনিমাস স্ট্রাকচার যোগ করা হয়েছে যেগুলো C99 এ ছিল না।

এই সবগুলো স্টান্ডার্ড আনসি সি নামেও পরিচিত।

“স্টান্ডার্ড সি প্রোগ্রাম বহযোগ্য”. ইহার অর্থ হচ্ছে, আনসি সি অনুসরণ করে লেখা প্রোগ্রাম অপারেটিং সিস্টেম গুলোর মধ্যে স্থানান্তরযোগ্য।

আপনি যদি সি প্রোগ্রামিং এ নতুন হয়ে থাকেন তাহলে আমদের পরামর্শ হলো আনসি সি অনুসরণ করে প্রোগ্রামিং লেখার যা সকল ক্ষেত্রেই গ্রহণযোগ্য। ইহা আপনাকে ভাষাটি লেখার উদ্দ্যেশ্য বুঝতে সহায়তা করবে।

সি প্রোগ্রামিং ল্যাঙ্গুয়েজের বৈশিষ্ট্যসমুহ

একটি প্রোসিডিউরাল ল্যাঙ্গুয়েজ

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

যাইহোক, এছাড়া প্রোগ্রামিং এর অন্যান্য কৌশলও(paradigm) রয়েছে। এদের মধ্যে সচারচর ব্যবহৃত একটি কৌশল হলো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং(OOP) যা কোনো কার্য সম্পাদনের জন্য ডেভেলপারদেরকে অবজেক্ট তৈরিতে অনুমতি দেয়।

সি প্রোগ্রাম দ্রুততর

সি এর তুলনায় নতুন ল্যাঙ্গুয়েজ জাভা এবং পাইথন অনেক ধরণের বৈশিষ্ট্য যেমন- গার্বেজ কালেকশন(garbage collection) এবং ডাইনামিক টাইপিং(dynamic typing) অফার করে। ইহা প্রোগ্রামারদের জন্য প্রোগ্রাম লেখাও সহজ করে দেয়। যাইহোক, অতিরিক্ত প্রোসেসিং এর কারণে সি এর তুলনায় এদের পারফর্মেন্স কম।

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

স্টান্ডার্ড সি প্রোগ্রাম বহনযোগ্য

“একবার লিখে সকল প্লাটফর্মে কম্পাইল করা যায়”। আনসি স্টান্ডার্ডে ভালভাবে লেখা সি প্রোগ্রাম বহনযোগ্য(portable), এই কথার অর্থ হলো, এক সিস্টেম(যেমন- উইন্ডোজ)-এর জন্য লেখা প্রোগ্রাম কোনো ধরণের পরিবর্তন ছাড়াই অন্য প্লাটফর্ম(যেমন- লিন্যাক্স)-এ কম্পাইল করা যায়।

মডিউলার(Modular)-এর ব্যবহার

আপনি সি প্রোগ্রামকে ভিন্ন ভিন্ন সেকশন বা ফাংশনে ভাগ করে লাইব্রেরীর মধ্যে রাখতে পারেন। প্রোগ্রামিং এর এই ধারনা মডিউলারিটি(modularity) নামে পরিচিত।

সি নিজে নিজে খুবই ছোট্ট একটি ভাষা। কিন্তু সি এর আসল শক্তি হলো এর বিশাল লাইব্রেরী আছে। সি এর কিছু স্টান্ডার্ড লাইব্রেরী আছে যা দিয়ে সাধারণ সমস্যাসমূহ সমাধান করা যায়। ধরুন, আপনি স্ক্রিনে কিছু প্রদর্শন করাতে চাচ্ছেন, তাহলে আপনি আপনার প্রোগ্রামে “stdio.h” লাইব্রেরী সংযোগ করতে পারেন যা আপনাকে স্ক্রিনে কিছু প্রদর্শনের জন্য printf() ফাংশন ব্যবহারের অনুমতি দেয়।

স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ

সি একটি স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ(statically typed language)। এর অর্থ হলো, ভ্যারিয়েবলের টাইপ রান টাইমে নয় বরং কম্পাইল টাইমে চেক হয়। ইহা সফটওয়্যার ডেভেলপমেন্ট সাইকেলের সময় error খুঁজতে সহায়তা করে। এছাড়া ডাইনামিক্যালি টাইপ ল্যাঙ্গুয়েজের তুলনায় স্টাটিক্যালি টাইপ ল্যাঙ্গুয়েজ সাধারণত দ্রুততর হয়।

সাধারণ উদ্দেশ্যে(General purpose)

পূর্ববর্তী বিষয়সমূহ ছাড়াও বিভিন্ন ধরণের এপ্লিকেশন যেমন- সিস্টেম সফটওয়্যার থেকে শুরু করে ফটো এডিটিং সফটওয়ারেও সি ল্যাঙ্গুয়েজ ব্যবহৃত হয়। সি ল্যাঙ্গুয়েজ ব্যবহৃত কিছু এপ্লিকেশন নিম্নে তুলে ধরা হলোঃ

  • এমবেডেড সিস্টেম(Embedded System)
  • অপারেটিং সিস্টেম – উইন্ডোজ, লিন্যাক্স, ওএস এক্স, এন্ড্রোয়েড, আইওএস
  • ডাটাবেজ – মাইএসকিউএল, অরাকল, এমএস এসকিউএল সার্ভার, পোস্টগ্রিএসকিউউএল
  • অন্যান্য ব্যবহার -নেটওয়ার্ক ড্রাইভার, কম্পাইলার, প্রিন্ট স্পুলার

কেন সি প্রোগ্রামিং শিখবেন?

যদি শুধুমাত্র হ্যাঁ অথবা না দ্বারা এই প্রশ্নের উত্তর দেওয়া সম্ভব হত! দুর্ভাগ্যবশত, এই প্রশ্নের উত্তর দেওয়া খুব সহজ নয় কারণ ইহা ব্যক্তি থেকে ব্যক্তিতে ভিন্ন হয়।

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

সি শেখার মাধ্যমে আপনি কি অর্জন করবেন?

আপনি যদি সি প্রোগ্রামিং না জানেন, তাহলে প্রোগ্রামার হিসাবে আপনি কি করছেন তাই জানবেন না। । আপনার এপ্লিকেশন খুব সুন্দরভাবে এবং সব ধরণের কাজ করবে ঠিকই। কিন্তু আপনি যদি বলতে না পারেন কেন ইহা

(*s++ = *p++);

স্ট্রিং কপি করে, তাহলে আপনি অন্ধবিশ্বাসে প্রোগ্রামিং করেন।

১ । কম্পিউটার কিভাবে কাজ করে আপনি তা জানবেন

আপনি যদি সি জানেন, তাহলে আপনি শুধুমাত্র প্রোগ্রাম কিভাবে কাজ করে তাই জানবেন না। বরং আপনি মেমোরি ম্যানেজমেন্ট এবং বরাদ্দ(allotment)সহ কম্পিউটার কিভাবে কাজ করে তার একটি মানসিক মডেল তৈরি করতে পারবেন। প্রোগ্রামিং এ সি যে স্বাধীনতা দিয়ে থাকে আপনি তার তারিফ করবেন। কেননা অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন- পাইথন এবং জাভা এই সুবিধা দেয় না।

আপনি যদি একবার সি বুঝতে পারেন, তাহলে আপনি এমন এমন প্রোগ্রাম লিখতে পারবেন যে, আপনি ভেবেছিলেন কখনোই ইহা আপনার দ্বারা সম্ভব না । অথবা অন্ততপক্ষে, আপনি কম্পিউটার আর্কিটেকচার এবং প্রোগ্রামিং এর উপর বৃহত্তর ধারনা পাবেন।

২। সি হলো প্রোগ্রামিং এর মিশ্র ভাষা(lingua franca)

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

৩। ওপেন সোর্স প্রোজেক্টে কাজ করার সুযোগ পাবেন যা লক্ষ লক্ষ মানুষকে প্রভাবিত করে।

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

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

কিছু বড় বড় ওপেন সোর্স প্রোজেক্ট (যেমন- এসকিউলাইট ডাটাবেজ, লিনাক্স কার্নেল, পাইথন ইন্টারপ্রেটার) রয়েছে যেগুলোতে সি প্রোগ্রামিং ব্যবহৃত হয়।

অন্য আরেকটি ভাষা আছে যা বড় বড় ওপেন সোর্স প্রোজেক্টে ব্যবহৃত হয় তা হলো সি++। আপনি যদি সি এবং সি++ জানেন, তাহলে আপনি অনেক ওপেন সোর্স প্রোজেক্টে অবদান রাখতে পারবেন যা লক্ষ লক্ষ মানুষকে প্রভাবিত করবে।

৪। আপনি সেরা প্রোগ্রাম লিখতে পারবেন

সততার সাথে বললে, ইহা সব সময় সত্য নাও হতে পারে। যাইহোক, আপনি যদি জানেন কম্পিউটার কিভাবে কাজ করে এবং কিভাবে মেমোরি ম্যানেজ করে তাহলে অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজেও যথার্থ কোড লিখতে পারবেন।

৫। অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখা সহজ হয়ে যাবে।

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

সি# এবং জাভা প্রোগ্রামিং সি এবং সি++ এর সাথে সম্পর্কযুক্ত। জাভাস্ক্রিপ্ট এবং পিএইচপি এর সিনট্যাক্স সি এর মতই।

আপনি যদি সি এবং সি++ প্রোগ্রামিং জানেন তাহলে অন্যন্য ভাষায় স্যুইচ করতে আপনাকে কোনো ধরণের বেগ পেতে হবে না।

সি প্রোগ্রামিং না শেখার কারণ

আপনি সি প্রোগ্রামিং না শিখেই অসাধারণ অসাধারণ সফটওয়্যার তৈরি করতে পারবেন। Stackoverflow.com এর প্রতিষ্ঠাতা জেফ আটওয়ার্ড মোটেও সি প্রোগ্রামিং জানতেন না। কিন্তু স্টেক অভারফ্লো নিঃসন্দেহে অনেক ভাল একটি ওয়েব এপ্লিকেশন।

আপনি যদি ব্যস্ত মানুষ হোন এবং ঐ সকল ক্ষেত্রে আপনি সময় বিনিয়োগ করতে না চান যার মাধ্যমে আপনার দৈনন্দিন কাজে প্রত্যক্ষ্য কোনো প্রভাব নেই। তাহলে সি প্রোগ্রামিং আপনার জন্য নয়।

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

সি প্রোগ্রামিং শিখবেন কি না সিদ্ধান্ত নিন!!

নতুনদের জন্যঃ

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

অভিজ্ঞ প্রোগ্রামারদের জন্যঃ

সি প্রোগ্রামিং শেখার অত্যন্ত প্রয়োজন নাই কিন্তু সি শেখার কিছু ভাল দিকও রয়েছে।

সি শেখার জন্য আপনি আপনার চলমান প্রোজেক্ট বন্ধ করে দিয়েন না। আমার বিশ্বাস, আপনি এটা করবেনও না। যদি আপনার ফ্রি সময় থাকে এবং প্রোগ্রামিং দক্ষতাকে সমৃদ্ধ করতে চান তাহলে আপনি সি শিখতে পারেন।

আমি বিশ্বাস করি, তাৎক্ষনিকভেবে এটা শেখার প্রয়োজন নাই। তবে কোনো না কোনোভাবে এটা আপনার শেখা উচিৎ।

ধন্যবাদ 🙂

জাভা ক্লাস(Class) এবং অবজেক্ট (Object)

জাভা ক্লাস :

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

  1. ফিল্ডস (fields)
  2. মেথডস (methods)
  3. কনস্ট্রাক্টরস (constructors)
  4. ব্লকস (blocks)
  5. নেস্টেড ক্লাস এবং ইন্টারফেস (nested class and interface)

ক্লাস ডিক্লেয়ার করার সিনটেক্সঃ

 
Access Modifier class ClassName {

    fields
    methods
}
public class ExampleClass {
 
}

জাভা ইন্সটেন্স ভেরিয়েবল:

একটি ভেরিয়েবল যা ক্লাসের ভিতর এবং মেথডের বাহিরে তৈরী বা ডিক্লেয়ার করা হয় তাকে ইন্সটেন্স ভেরিয়েবল বলে । ইন্সটেন্স ভেরিয়েবল, কম্পাইল টাইমে মেমরি পাওয়া যায় না । এই মেমোরি পাওয়া যায় রান-টাইমে যখন অবজেক্ট তৈরি করা হয় । এই কারণে একে ইন্সটেন্স ভেরিয়েবল বলে ।
জাভা অবজেক্ট:

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

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

সুতরাং আমরা জানলাম, অবজেক্ট এর দুইটা জিনিস থাকে, স্টেট ( অর্থাৎ নিজের সম্পর্কে ধারণা) এবং মেথড (সে কি কি কাজ করতে পারে)।
একটি অবজেক্টের ৩টি বৈশিষ্ট্য থাকে :

  1. স্টেট
  2. বিহেভিয়ার
  3. আইডেন্টিটি

স্টেট :

স্টেট হল কিছু তথ্য যা দিয়ে অনেকগুলো অবজেক্ট থেকে প্রত্যেককে আলাদা করা যায় । এর বর্তমান অবস্থা জানা যায় । একে ভেরিয়েবলও বলা হয়

বিহেভিয়ার :

একটি অবজেক্ট দিয়ে নির্দিষ্ট কিছু কাজ করানো যায় । এটাই হচ্ছে অবজেক্ট বিহেভিয়ার । একে মেথডও বলা হয় ।
৩ টি উপায়ে অবজেক্ট ইনিশিলায়াইজ করা যায় :

  • রেফারেন্স ভেরিয়াবল দ্বারা
  • মেথড দ্বারা
  • কনস্ট্রাক্টর দ্বারা

জাভা new কিওয়ার্ড :

রান টাইমে মেমোরি বরাদ্দ করার জন্য new কিওয়ার্ড ব্যবহার করা হয় । সব অবজেক্ট এর মেমোরি হ্যাপ মেমরি (Heap Memory ) এলাকা থেকে পাই ।

অবজেক্ট তৈরী করা :

নতুন অবজেক্ট তৈরী করার জন্য জাভাতে new কিওয়ার্ড ব্যবহার করা হয় । একটি ক্লাস থেকে একটি অবজেক্ট তৈরি করার তিনটি ধাপ আছে ঃ

  1. ডিক্লারেশন (Declaration )
  2. ইনস্ট্যান্স (Instantiation )
  3. ইনিশিয়ালিজেশন (Initialization )

ডিক্লারেশন :

A variable declaration with a variable name with an object type.

ইনস্ট্যান্স :

The ‘new’ keyword is used to create the object

ইনিশিয়ালিজেশন:

The ‘new’ keyword is followed by a call to a constructor. This call initializes the new object
সিনট্যাক্স :

 className objectName = new className();
 MyClass object = new MyClass()

বিভিন্ন উপায়ে জাভার অবজেক্ট তৈরী করা যায় :

৪টি উপায়ে জাভার অবজেক্ট তৈরী করা যায়

1. new কিওয়ার্ড ব্যবহার করে
This is the most common way to create an object in java. I read somewhere that almost 99% of objects are created in this way.

MyObject object = new MyObject();

2. Class.forName() ব্যবহার করে
If we know the name of the class & if it has a public default constructor we can create an object in this way.

Employee emp2 = (Employee) Class.forName("org.Employee")
.newInstance();

3. clone() ব্যবহার করে
The clone() can be used to create a copy of an existing object.

Employee emp4 = (Employee) emp3.clone();

4. object deserialization ব্যবহার করে
Object deserialization is nothing but creating an object from its serialized form.

ObjectInputStream inStream = new ObjectInputStream(anInputStream ); 
MyObject object = (MyObject) inStream.readObject();

Now you know how to create an object. But its advised to create objects only when it is necessary to do so.
ক্লাস এবং অবজেক্ট ব্যবহার করে একটি জাভা প্রোগ্রাম :



    public class SimpleClass {

    // this is constructor

    public SimpleClass() { }

    // this is method

    public void printMessage() {

    System.out.println(“Java Object Oriented Programming”);

    }

    public void printState() {

    int n=2;

    System.out.println(n*n);

    }

    public static void main(String[] args) {

    // create object

    SimpleClass object=new SimpleClass();

    object.printMessage();

    object.printState();

    }
    }