প্রথম পর্বে সি শার্প এবং ডট নেট সম্পর্কে ধারনা দেয়া হয়েছে এবং আপনাদের দেখানো হয়েছে কিভাবে একটি কনসোল এপ্লিকেশন তৈরী করতে হয়। প্রথম পর্বের লিংক দেয়া হলঃ
সি শার্প ও ডট নেট প্রোগ্রামিং ১ম পর্ব। ক্লিক করুন এখানে।
এই পর্বে আপনাদের আমি ডাটা টাইপ, ভ্যারিয়েবেল, অপারেটর, এবং কনসোল দিয়ে কিভাবে ইনপুট নেয়া হয় তা দেখাবো।
ভ্যারিয়েবেল হল প্রোগ্রামিং ল্যাঙ্গুয়েজে ব্যবহৃত ডাটা ধারন করার স্থান। আপনার কম্পিউটারের মেমোরির যে স্থানে ডাটা রাখার জন্য নির্দিষ্ট স্থাঙ্কেই ভ্যারিয়েবেল বলা হয়। প্রত্যেক ভ্যারিয়েবেলের বেশ কিছু ডাটা টাইপ থাকে যা নির্ধারন করে সেই ভ্যারিয়েবেল কি ধরনের ডাটা সংরক্ষন করবে। ডাটা টাইপ নিয়ে নিচে আলোচনা করা হয়েছে।
ডাটা টাইপ হল কোন প্রোগ্রামিং ল্যাঙ্গুয়েজের মৌলিক ভিত্তি যা নির্ধারন করে কোন ভ্যারিয়েবেল কোন ধরনের ডাটা ধারন করবে। সি শার্প এ ডাটা টাইপের কিছু আদর্শ নীতিমালা মেনে চলা হয়েছে এবং ডট নেট এর সাথে সি শার্পকে সামঞ্জস্যতা রাখা হয়েছে যাতে প্রোগ্রামারদের মধ্যে কোন ধরনের বিভ্রান্তীর সৃষ্টি না হয়।
নিচে ছক আকারে ডাটা টাইপের বিবরন দেয়া হলঃ
টাইপ (C#) | Declaration Alias | মেমরি বাইটস | সংরক্ষন ক্ষমতা (Range) |
System.SByte | sbyte | 1 | -128 to 127 |
System.Byte | byte | 1 | 0 to 255 |
System.Int16 | short | 2 | -32768 to 32767 |
System.Int32 | int | 4 | -2147483648 to 2147483647 |
System.UInt32 | uint | 4 | 0 to 4294967295 |
System.Int64 | long | 8 | -9223372036854775808 to 9223372036854775807 |
System.Single | float | 4 | 1.5 x 10-45 to 3.4 x 1038 |
System.Double | double | 8 | 5.0 x 10-324 to 1.7 x 10308 |
System.Decimal | decimal | 16 | 1.0 x 10-28 to 7.9 x 1028 |
System.Char | char | 2 | N/A |
System.Boolean | bool | 4 | N/A |
System.DateTime | date | 8 | Customized Data Type |
এখানে Declaration alias ব্যাবহার করে আপনি প্রোগ্রামে কোন ভ্যারিয়েবেল ঘোষনা করতে পারবেন। একিসাথে আপনাদের সুবিধার জন্য Range এবং Memory Bytes দেখানো হল।
অপারেটর হল যে কোন ভাষার খুব গুরুত্বপুর্ন অংশ। আপনি একটি প্রোগ্রামিং এক্সপ্রেশন তৈরী করতে অপারেটরের সাহায্য লাগবে। ধরুন, আপনি একটি প্রোগ্রাম বানাবেন যা ইউজারের কাছ থেকে দুইটি সংখ্যা ইনপুট নিয়ে তা যোগ করে দেখাবে। আপনি যদি শুধু ডাটা ভ্যারিয়েবেল ঘোষনা করেন তাহলে কি আপনি বলতে পারবেন আপনার প্রোগ্রাম সম্পূর্ন হয়েছে। অবশ্যই নয়। কারন শুধু ভ্যারিয়েবেল ডিক্লেয়ার করলেই কিন্তু সব কাজ হয়না। আর এই কাজের জন্য আপনাকে সাহায্য করবে অপারেটর।
উপরের উদাহরনে ইউজার যে দুই সংখ্যা ইনপুট দিবে সেটি দুটি ভ্যারিয়েবেলে সংরক্ষন করতে হবে এবং পরে সেই দুটি ভ্যারিয়েবেল নিয়ে যোগের কাজ করে তা ইউজারকে আউটপুট দেখাতে হবে।
মনে করুন, দুটি ভ্যারিয়েবেল a এবং b. এরপর a এবং b তে দুই সংখ্যামান রয়েছে। এবং এই দুই ভ্যারিয়েবেল যোগ করে আর একটি ভ্যারিয়েবেল এ রেখে সেটাই আউটপুট দেখাতে পারলেই কার্যত আমাদের প্রোগ্রাম সম্পূর্ন বলা যাবে। এক্ষেত্রে অপারেটর equal (=) এবং Add (+) ব্যাবহার করতে হবে।
নিচে ছক আকারে অপারেটরগুলো উল্লেখ করা হলঃ
Operator Type | Operators |
Primary | x.y f(x) a[x] x++ x--new typeof default checked unchecked delegate |
Unary | + - ! ~ ++x --x (T)x |
Multiplicative | * / % |
Additive | + - |
Shift | << >> |
Relational | < > <= >= is as |
Equality | == != |
Logical AND | & |
Logical XOR | ^ |
Logical OR | | |
Conditional AND | && |
Conditional OR | || |
Null Coalescing | ?? |
Ternary | ?: |
Assignment | = *= /= %= += -= <<= >>= &= ^= |= => |
একটি উদাহরনঃ
আপনি নিশ্চয় ভাবছেন এই ডাটা টাইপ ব্যাবহার করে কিভাবে ভ্যারিয়েবেল নিয়ে কাজ করব! সেই কারনেই, এখানে একটি উদাহরন স্ক্রিনশট সহ দেয়া হল।
উপরের উদাহরন থেকেই যদি আমরা প্রোগ্রাম তৈরী করতে পারি তাহলে কেমন হবে বলুনতো? অবশ্যই ভাল হবে। একিসাথে এই উদাহরনের মাধ্যমে আমরা দেখব কি করে ইউজারের কাছ থেকে ডাটা ইনপুট নিতে হয়।
১। প্রথমে Microsoft Visual Studio Open করি এবং New Project তৈরী করি। প্রজেক্টের নাম দেই MyCalculation (এই নাম পরিবর্তন করতে পারবেন)। New Project এর মাধ্যমে কিভাবে কন্সোল এপ্লিকেশন তৈরী করতে হয় সে সম্পর্কে বিশদ আলোচনা প্রথম পর্বে করা হয়েছে তাই এখন এ ব্যাপারে কিছু লিখলাম না। তবে মনে রাখবেন অবশ্যই কনসল এপ্লিকেশন হতে হবে।
২। প্রোগ্রামের কোড উইন্ডো (Code Window) আসলে আমরা কোড লিখব Main Function এর ভিতর।
৩। এবার কোড করার পূর্বে একটি কোড আউটলাইন দেখিঃ
৪। এবার দেখি কিভাবে কোড করতে হয়। প্রথমেই ভ্যারিয়েবেল ডিক্লেয়ার করতে হবে। কারন ভ্যারিয়েবেল ঘোষনা না করলে সেটা নিয়ে কাজ করতে পারবনা। এখন প্রশ্ন হল, কোন ডাটা টাইপ ব্যাবহার করবেন। যেহেতু ইউজার দুইটি যেকোন সংখ্যা ইনপুট দিবে তাই সংখ্যাগুলো দশমিক হতে পারে, তাই শুধু int অথবা short ব্যাবহার করা ঠিক হবেনা। আবার যেহেতু এটি খুব সাধারন প্রোগ্রাম তাই খুব বেশি বড় সংখ্যা ইনপুট দেয়ার প্রয়োজন হবে না তাই যোগ করার পর আউটপুট খুব বেশি বড় হবে না বলেই ধরে নিতে পারি। এক্ষেত্রে decimal ব্যাবহার করব না কারন এর Memory ১৬ বাইটস যার অধিকাংশ নষ্ট হবে। তবে আপনারা যখন প্রোগ্রাম করবেন তখন অবশ্যই প্রয়োজন অনুযায়ী ব্যবহার করবেন। আমি float ব্যাবহার করব। মেমরি বাইট হল ৪ বাইট যা আপাতত আমাদের জন্য যথেষ্ট।
float number1, number2, result;
এখানে তিনটি ভ্যারিয়েবেল নেয়া হয়েছে। number1, number2, result। প্রথম দুই ভ্যারিয়েবেল দুইটি সংখ্যা ধারন করবে এবং তৃতীয়টি ফলাফল ধারন করবে।
এরপর আমাদের কাজ হল, ইউজারের কাছ থেকে দুইটি সংখ্যা ইনপুট নেয়া। আসুন দেখি কিভাবে কাজটি করা যায়ঃ
Console.WriteLine("Input Your First Number: ");
number1 = Convert.ToSingle(Console.ReadLine());
Console.WriteLine("Input Your Second Number: ");
number2 = Convert.ToSingle(Console.ReadLine());
প্রথম লাইন এবং তৃতীয় লাইন শুধু ইউজারের কাছে নাম্বার ইনপুট দেয়ার জন্য জিজ্ঞেস করা হয়েছে যা করা হয়েছে আগের পর্বের মত করে। কিন্তু ইনপুট নেয়ার কাজটি কিভাবে করা হয়েছে সেটি ভাল করে বুঝতে হবে। প্রথম নাম্বার number1 এ সংরক্ষন করব। যেহেতু number1 float type এবং কনসোলের মাধ্যমে কোন ইনপুট নিলে সেটি String আকারে সংরক্ষিত হয় তাই এইখানে Type Conversion করতে হবে। অর্থাৎ কনসোল থেকে ইনপুট নিয়ে সেটি float type এ কনভার্ট করতে হবে। এখানে Convert class এর অধীনে ToSingle মেথড ব্যাবহার করেছি। ToSingle method System.Single ডাটা টাইপে কনভার্ট করে (লক্ষ করুন float কিন্তু System.Single ক্যাটাগরির। ডাটা টাইপ অনুচ্ছেদটি দ্রষ্টব্য)। ReadLine() method কন্সোল থেকে ইনপুট নেয়ার কাজে ব্যাবহৃত হয়। এক্ষেত্রেও Read() নামে একটি অনুরূপ মেথড আছে যেটি ব্যাবহার করতে পারেন। WriteLine() এবং Write() ও ReadLine() এবং Read() এর মধ্যে সামান্য পার্থক্য রয়েছে যা এই পর্বে পাদটীকায় আলোচনা করেছি।
result = number1 + number2;
Console.Write("Your Result: ");
Console.WriteLine(Convert.ToString(result));
এবার দেখুন number1 ও number2 যোগ করে result নামক ভ্যারিয়েবেলে সংরক্ষন করছি। মনে রাখবেন result কিন্তু float type ভ্যারিয়েবেল তাই এক্ষেত্রে কোন Type Conversion দরকার নেই।
কিন্তু ৩ নং লাইনে দেখুন আবার Type Conversion ব্যাবহার করেছি। কারন, WriteLine method String নিতে পারে কিন্তু Float type নিতে পারেনা। তাই এখানে ToString method ব্যাবহার করেছি।
এখন শুধু একটি ব্যাপার লক্ষ রাখুন এবং মনে রাখুন যে ২ নং লাইনে Console.Write() ব্যাবহার করেছি কিন্তু ৩ নং লাইনে Console.WriteLine() মেথড ব্যাবহার করেছি। পরবর্তি পাদটীকায় আলোচনা করব।
৫। এবার আপনার প্রোগ্রাম হয়ে গেছে। রান করুন প্রোগ্রাম। রান করার জন্য Debug>>Start Without Debugging Select করুন অথবা Ctrl+F5 চাপুন।
নিচের window দেখা যাবেঃ
এবার প্রথম নাম্বার ইনপুট দিন। ধরুন ইনপুট দিলেন 2.5
এবার একইভাবে দ্বিতীয় নাম্বার ইনপুট দিন। ধরুন ইনপুট দিলেন 2.5
এবার ফলাফল দেখার সময়। ফলাফল হবে 2.5+2.5=5
আপনার প্রোগ্রাম কিন্তু হয়ে গেছে। এবার এটি আপনার বন্ধু বা পরিবার পরিজন কে দেখিয়ে নিন। তাদের যেকোন সংখ্যা ইনপুট দিতে বলুন। যোগ করে তাদেরকে তাক লাগিয়ে দিন নিজের বানানো প্রোগ্রামে।
Console class এর অধীনে WriteLine(),Write(),ReadLine(),Read() এই চারটি মেথড আছে ইনপুট/আউটপুটের জন্য। তবে গতপর্বে আমরা WriteLine() এর ব্যাবহার দেখেছি, এই পর্বে Write(), ReadLine() মেথডের ব্যাবহার। কিন্তু WriteLine() মেথড এক লাইনে কোন String আউটপুট দেখায় এবং শেষে একটি New Line print করে। এর অর্থ, যদি WriteLine() মেথড ব্যাবহার করেন তাহলে একটি New Line ক্যারেক্টারের মাধ্যমে নতুন লাইন থেকে ইনপুট নেয়া শুরু হয়। কিন্তু Write() মেথডে কোন New Line প্রিন্ট হয় না।
এই প্রোগ্রামের প্রথমে যখন ইউজারের কাছে নাম্বার ইনপুট দেবার জন্য বলা হয়েছিল, লক্ষ করুন ইনপুট নেওয়া শুরু হয়েছে এর পরের লাইন থেকে। কারন আমি সেখানে WriteLine() ব্যাবহার করেছি। আপনারা
Write() ব্যাবহার করে চেষ্টা করেন এবং আমার প্রোগ্রামের সাথে পার্থক্য খুঁজে বার করলে ধারনা আরো স্বচ্ছ হবে। কিন্তু দেখুন যখন result দেখানো হচ্ছে, তখন Write() ব্যাবহার করেছি। তাই, 5 একি লাইনে Show করছে। এখানে WriteLine() ব্যাবহার করলে কিন্তু 5 একি লাইনে দেখাবে না বরং এর পরের লাইনে Show করবে।
তাহলে আজ এ পর্যন্ত। এর পরের পর্বে আমরা শিখব নতুন কিছু নতুন আঙ্গিকে। ধন্যবাদ।
আমি জ্যোতি। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 13 বছর 11 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 17 টি টিউন ও 98 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 2 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি জ্যোতি চৌধুরী। কম্পিউটার সাইন্স এন্ড ইঞ্জিনিয়ারিং এর ছাত্র। মিলিটারি ইন্সটিটিউট অফ সাইন্স এন্ড টেকনোলজি, মিরপুর ক্যান্টনমেন্ট এ পড়াশোনা করছি। ভাল লাগে বন্ধুদের সাথে আড্ডা দিতে, কম্পিউটার প্রযুক্তি সম্পর্কে জানতে। আগ্রহ আছে সফটওয়্যার ডেভেলপমেন্ট, প্রোগ্রামিং ও ওয়েব ডেভেলপমেন্টের প্রতি। স্বপ্ন দেখতে ভালবাসি। স্বপ্ন কে বাস্তবে রুপায়ন করতে পছন্দ করি।
দারুন! থামবেন না। চালিয়ে যান। up দিলাম