প্রোগ্রামিং সি এর পরিচিতি?
প্রাথমিক ধারণা
যারা কম্পিউটার এর সাথে পরিচিত কিন্তু
প্রোগ্রামিং বা সি ল্যাংগুয়েজ সম্পর্কে খুব একটা ধারণা নেই, এই চ্যাপ্টার
টি মূলত তাদের জন্য। এখানে কম্পিউটার প্রোগ্রামিং এর পাশাপাশি সি
ল্যাংগুয়েজ এবং সি ল্যাংগুয়েজ তে প্রোগ্রামিং করতে গেলে যেসব সফটওয়্যার
লাগে সে সম্পর্কে ধারণা দেয়া হয়েছে।
সি এর সমন্ধে ।
- সি উদ্ভাবন করা হয় UNIX অপারেটিং সিস্টেম লিখার জন্য।
- সি হচ্ছে বি ল্যাংগুয়েজের (B Language) উত্তরাধিকারী, বি উদ্ভাবিত হয় ১৯৭০ সালে।
- সি ১৯৮৮ সালে American National Standard Institute (ANSI) দ্বারা ফরমালাইজ করা হয়।
- বর্তমানে জনপ্রিয় লিনাক্স ওস এবং অারডিবিএমএস মাইএসকিউএল (RDBMS MySQL) সি তে লিখা।
কেন সি ব্যবহার করব ।
সি প্রথমদিকে সিস্টেম ডেভলপমেন্ট এর জন্য
ব্যবহার করা হত। অন্যভাবে বলতে গেলে সি দিয়ে অপারেটিং সিস্টেম বানানোর জন্য
প্রোগ্রাম লিখা হত। সিস্টেম ডেভেলপমেন্টের জন্য সি ব্যবহার করা হয় কারন এর
দ্বারা লিখা প্রোগ্রাম, অ্যাসেম্বেলি প্রোগ্রামের মত দ্রুত কাজ করে। সি
দিয়ে লিখা কিছু সফটওয়্যারের উদাহরন :
- অপারেটিং সিস্টেম ।
- বিভিন্ন প্রোগ্রামিং ল্যাংগুয়েজের এর কম্পাইলার।
- অ্যাসেম্বেলার।
- টেক্সট ইডিটর।
- নেটওয়ার্ক ড্রাইভার।
- ডাটাবেজে।
- ল্যাংগুয়েজ ইন্টারপ্রিটার।
মজার ব্যাপর হল, সি এর কম্পাইলার ও সি তে লিখা।
সি প্রোগ্রাম
একটা সি প্রোগ্রাম ৩ লাইন থেকে কয়েক হাজার
লাইন হতে পারে। সি তে প্রোগ্রাম লিখা ফাইলের এক্সটেনসন হবে .c । অাপনি সি
প্রোগ্রাম লিখার জন্য নোটাপ্যাড, জি ইডিট , ভিম ইত্যাদি টেক্সট ইডিটর
ব্যাবহার করতে পারেন। অামরা পরবর্তিতে এ সমন্ধে অারো বিস্তারিত অালোচনা
করব।
কম্পিউটার প্রোগ্রামিং কি?
আমাদেরকে প্রতিদিনই কিছু না কিছু কাজ করতে হয়।
কিছু কাজ আমরা নিজেরা করি, আবার কিছু কাজ অন্যদেরকে দিয়ে করিয়ে নেই।
অন্যদের কে দিয়ে কোন কাজ করানোর সময় আমরা তাকে হয়ত মুখে বলে দেই যে কি কি
করতে হবে এবং কিভাবে করতে হবে অথবা লিখে দেই। এজন্য আমরা সাধারণত এমন ভাষা
ব্যবহার করি যেটা আমরাও বুঝতে পারি, আবার যাকে বলব সেও বুঝতে পারে। সেটা
হতে পারে বাংলা, ইংরেজী কিংবা অন্য কোন ভাষা।
একইরকম ভাবে আমরা যখন কম্পিউটার কে দিয়ে কোন
কাজ করিয়ে নিতে যাব তখন কম্পিউটার কেও জানাতে হবে কি কাজ সে করবে এবং
কিভাবে করবে। সেটা হতে পারে দুটি নাম্বার যোগ করার কাজ কিংবা একটি গান
বাজানোর কাজ। আমরা সাধারণত কম্পিউটারকে লিখে জানাই যে কি কি কাজ করতে হবে,
কিভাবে করতে হবে। কম্পিউটারকে এভাবে লিখে জানানোই কম্পিউটার প্রোগ্রামিং,
লেখার জন্য যে ভাষা গুলো ব্যবহার করা হয় সেগুলো কম্পিউটার এর ভাষা বা
প্রোগ্রামিং ল্যাংগুয়েজ এবং যা লেখা হয় সেগুলো প্রোগ্রাম বা কম্পিউটার
প্রোগ্রাম নামে পরিচিত। অ্যাসেম্বলি, সি, জাভা এরকমই কিছু প্রোগ্রামিং
ল্যাংগুয়েজ।
এবার আমরা দেখব কম্পিউটার কে দিয়ে দুটি
নাম্বার যোগ করিয়ে নিতে গেলে বিভিন্ন ভাষায় কি কি লিখতে হয়। এই মুহূর্তে এই
প্রোগ্রাম গুলো না বুঝলেও চলবে। এগুলো দেয়ার উদ্দেশ্য হল কম্পিউটার এর
ভাষা কেমন হয় সে সম্পর্কে ধারণা পাওয়া।
অ্যাসেম্বলি (Assembly) তে দুটি পূর্ণ সংখ্যা যোগ করা-
.MODEL SMALL
.STACK 100H
.DATA
number_1 DW 2
number_2 DW 3
result DW ?
message DB 'Summation of two number is $'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AX, number_1
ADD AX, number_2
MOV result, AX
LEA DX, message
MOV AH, 9
INT 21H
MOV AH, 2
MOV DL, result
INT 21H
MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN
সি (C) তে দুটি পূর্ণ সংখ্যা যোগ করা-
#include<stdio.h>
int main(){
int number_1, number_2, result;
number_1 = 2;
number_2 = 3;
result = number_1 + number_2;
printf("Summation of two number is %d", result);
return 0;
}
জাভা (Java) তে দুটি পূর্ণ সংখ্যা যোগ করা-
import java.lang.*;
class Adder
{
public static void main(String args[])
{
int number_1, number_2, result;
number_1 = 2;
number_2 = 3;
result = number_1 + number_2;
System.out.printf("Summation of two number is %d", result);
}
}
যেভাবে সি (C) প্রোগ্রামিং ল্যাঙ্গুয়েজ এর জন্ম হয়
সেই ১৯০০ শতকের দিকে চার্লস ব্যাবেজের হাত ধরে
প্রথম কম্পিউটার এর সূচনা। এরপর থেকে প্রতিদিন একটু একটু করে উন্নত হয়ে
আমরা পেয়েছি আজকের আধুনিক কম্পিউটার। এই কম্পিউটার আসলে একটা যন্ত্র বা জড়
বস্তু যেটা ০ আর ১ ছাড়া কিছুই বুঝে না। অর্থাৎ কম্পিউটার শুধুমাত্র বিদ্যুৎ
আছে অথবা নাই, এই দুইটা অবস্থা বুঝতে পারে। যে শুধুমাত্র দুইটা শব্দ বা
অবস্থা বুঝতে পারে তার সাথে ইন্টারেক্ট করা বা তাকে দিয়ে কাজ করানো সত্যিই
কঠিন।
এই জন্য সবাই সেই ১৯০০ শতক থেকেই চেষ্টা করে
যাচ্ছে এমন একটা ভাষা তৈরি করার যেটা ব্যবহার করে আমরা সহজেই কম্পিউটার এর
সাথে ইন্টারেক্ট করতে পারি। এই চেষ্টারই ফলস্বরূপ আজকের এত কম্পিউটার
প্রোগ্রামিং ল্যাঙ্গুয়েজ।
১৯৬৬ সালের দিকে ক্যামব্রিজ বিশ্ববিদ্যালয়ের
মার্টিন রিচার্ড ডিজাইন করেন বিসিপিএল (BCPL) নামের প্রোগ্রামিং
ল্যাঙ্গুয়েজ। এরপর ১৯৬৯ সালে আমেরিকার বেল ল্যাবরেটরিতে কেন থমসন ও ডেনিশ
রিচি মিলিত ভাবে ডিজাইন করেন বি (B) নামের আর একটি প্রোগ্রামিং
ল্যাঙ্গুয়েজ। এরপর আসে সেই মাহেন্দ্রক্ষণ যখন সি নামের একটি কম্পিউটার
প্রোগ্রামিং ল্যাঙ্গুয়েজ এর জন্ম হয়। ১৯৬৯ থেকে ১৯৬৩ সাল এর মাঝামাঝি।
আবারও সেই বেল ল্যাবরেটরিতে ডেনিশ রিচি সি ল্যাঙ্গুয়েজ এর সূচনা করেন। তখন
এটি মূলত ইউনিক্স কে টার্গেট করে ডিজাইন করা হয়েছিল এবং প্রায় ১৯৭৮ সাল
পর্যন্ত এর ব্যবহার বেল ল্যাবরেটরি এর মধ্যেই সীমিত ছিল। ১৯৭৮ সালে
কারনিহান (Kernighan) এবং রিচি (Ritchie) "The C Programming Language"
নামে সি ল্যাঙ্গুয়েজ এর বিস্তারিত বিবরণ দিয়ে একটা প্রকাশনা বের করেন, যা
"K & R C" নামেও পরিচিত। এর পরেই মূলত বেল ল্যাবরেটরি এর বাহিরে সি এর
ব্যবহার শুরু হয়।
কম্পিউটার প্রফেশনালরা সেই সময় সি ব্যাপক ভাবে
ব্যবহার করে শুরু করে। নির্দিষ্ট ও আন্তর্জাতিক কোন স্ট্যান্ডার্ড না
থাকার কারনে অনেকেই সি ল্যাঙ্গুয়েজ কে বিভিন্নভাবে ব্যবহার করতে থাকেন।
অনেক টা আমাদের বাংলা ভাষা ব্যবহারের মত। বিভিন্ন এলাকায় বিভিন্ন রকম।
এজন্য ১৯৮০ সালের মাঝামাঝি আমেরিকান ন্যাশনাল স্ট্যান্ডার্ড ইন্সটিটিউট
(ANSI X3J11 committee) সি ল্যাঙ্গুয়েজ এর জন্য একটা স্ট্যান্ডার্ড
ডেফিনিশন নির্ধারন করে দেয় যা ANSI C নামেই বেশি পরিচিত। এরপর ১৯৯৯ সালের
দিকে ইন্টারন্যাশনাল অর্গানাইজেশন অব স্ট্যান্ডারডাইজেশন সি এর নতুন
ডেফিনিশন বা স্ট্যান্ডার্ড (ISO/IEC 9899:1999) তৈরি করে দেয় যা C99 নামে
পরিচিত।এরপর প্রায় ১১ বছর পর সি এ জন্য ISO নতুন স্ট্যান্ডার্ডISO/IEC
9899:2011 ডিফাইন করে দেয় যা C11 নামেও পরিচিত।
আমরা চেষ্টা করব সি এর সর্বশেষ স্ট্যান্ডার্ড এর উপর বেস করে বইটা লেখা।প্রয়োজনীয় সফটওয়্যার
প্রোগ্রামিং করতে গেলে কি ধরনের সফটওয়্যার লাগে
আমরা কম্পিউটার ব্যবহার করে যাই করি না কেন তা
কোন না কোন সফটওয়্যার ব্যবহার করেই করি। যেমন গান শুনতে গেলে কোন না কোন
মিডিয়া প্লেয়ার ব্যবহার করি, তা হতে পারে উইন্ডোজ মিডিয়া প্লেয়ার কিংবা কে
এম প্লেয়ার। আবার কোন কিছু লেখা লেখির কাজে ব্যবহার করি মাইক্রোসফট ওয়ার্ড
কিংবা এ ধরনেরই কোন না কোন সফটওয়্যার।
একইভাবে প্রোগ্রামিং করার জন্যও বিভিন্ন ধরনের সফটওয়্যার ব্যবহৃত হয়।
ক) প্রোগ্রাম লেখার জন্য ব্যবহৃত সফটওয়্যার
খ) লিখিত প্রোগ্রাম চালানোর উপযোগী করার জন্য ব্যবহৃত সফটওয়্যার
ক) প্রোগ্রাম লেখার জন্য ব্যবহৃত সফটওয়্যারঃ
সি তে প্রোগ্রাম লেখার জন্য বিশেষ কোন সফটওয়্যার এর দরকার নাই। যে কোন
এডিটর সফটওয়্যার (যেমন- নোটপ্যাড, নোটপ্যাড++, জিইডিট) ব্যবহার করেই আমরা
কোড লিখতে পারি। তবে সহজে কোডিং করা অর্থাৎ কোড লেখার জন্য আরেক ধরনের
সফটওয়্যার ব্যবহার করতে পারি যেগুলো সাধারণত আইডিই (IDE) বা ইন্টিগ্রেটেড
ডেভ্লপমেন্ট এনভাইরনমেন্ট নামে পরিচিত। যেমন- কোডব্লোকস, ভিজুয়্যাল
স্টুডিও, টার্বো সি আইডিই।
খ) লিখিত প্রোগ্রাম চালানোর উপযোগী করার জন্য ব্যবহৃত সফটওয়্যারঃ
প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করে লেখা কোন প্রোগ্রাম চালানোর উপযোগী করার জন্য সাধারণত দুই ধরনের সফটওয়্যার ব্যবহার করা হয়-
১। কম্পাইলার (যেমন - জিএনইউ সি কম্পাইলার বা জিসিসি কম্পাইলার, মাইক্রোসফটের ভিজুয়্যাল সি কম্পাইলার এবং ইন্টারেক্টিভ সি কম্পাইলার)
২। ইন্টারপ্রিটার পিকক (picoc) সি ইন্টারপ্রিটার, জাভাস্ক্রিপ্ট তে ব্যবহৃত ইন্টারপ্রিটার )
কম্পাইলার টাইপের সফটওয়্যার গুলো সাধারণত পুরো
একটা প্রোগ্রাম কে ইনপুট হিসাবে নেয় সেগুলোতে কোন ইরর বা ত্রুটি আছে কিনা
দেখে, না থাকলে প্রোগ্রাম টাকে একটা ইন্টারমেডিয়েট অবজেক্ট কোডে রূপান্তরিত
করে। পরবর্তীতে সেই অবজেক্ট কোড টাকে এক্সিকিউটেবল কোডে রূপান্তরিত করা
হয়, যা রান করলে কোন একটা কাজ সম্পূর্ণ হয়।
অন্যদিকে ইন্টারপ্রিটার টাইপের সফটওয়্যার গুলো
সাধারণত প্রোগ্রাম এর এক একটা লাইন কে ইনপুট হিসাবে নেয়, তাতে কোন ভুল বা
ত্রুটি আছে কিনা দেখে, আর না থাকলে তা এক্সিকিউট করে।
সি প্রোগ্রামিং এর জন্য কি সফটওয়্যার ব্যবহার করব
সি মূলত একটা কম্পাইল্ড ল্যাঙ্গুয়েজ অর্থাৎ সি
তে প্রোগ্রামিং করতে হলে কোন না কোন কম্পাইলার ব্যবহার করতে হবে। আমরা
এক্ষেত্রে ব্যবহার করব জিসিসি কম্পাইলার। যেটি আমরা চাইলে ইন্টারনেট থেকে
ফ্রি ডাউনলোড করতে পারব নিচের ওয়েবসাইট থেকে। যদিও কোডব্লোক একটা আইডিই,
আমরা চাইলে এর সাথেই জিসিসি কম্পাইলারও প্যাকেজ হিসাবে ডাউনলোড করতে পারব।
আমরা যারা নতুন তাদের জন্য কোডব্লোক এবং জিসিসি কম্পাইলার প্যাকেজ আকারে
ডাউনলোড করাই সুবিধাজনক।
উপরের ওয়েবসাইট তে যাই। এখানে উইন্ডোজ
(Windows), লিনাক্স (Linux), ম্যাক (Mac OS X) এর জন্য বাইনারী ফাইল দেয়া
আছে যেগুলো ডাউনলোড করে সরাসরি ইন্সটল করা যাবে। যারা উইন্ডোজ ব্যবহার করি
তারা তিনটা ফাইল ডাউনলোড করার অপশন দেখতে পাব। i)
codeblocks-13.12-setup.exe, ii) codeblocks-13.12mingw-setup.exe iii)
codeblocks-13.12mingw-setup-TDM-GCC-481.exe । প্রতিনিয়ত সফটওয়্যার
যেহেতু আপডেট হয় সে জন্য ডাউনলোড করার সময় ফাইল গুলোর "13.12" সংখ্যাটা
নাও মিলতে পারে। না মিললে চিন্তিত হবার কোন কারণ নেই।
ডাউনলোড করার পর ইন্সটল করার পালা। এই ফাইল
গুলো বাইনারী ফাইল, মানে রান করার উপযোগী, সে জন্য ইন্সটল করার পদ্ধতিও আর
দশটা সফটওয়্যার ইন্সটল করার মত। ( ফাইল টাতে ডাবল ক্লিক করা, এরপর কয়েকবার
Next Button তে ক্লিক করা, সব শেষে Finish Button ক্লিক করা)
লিনাক্সে কমান্ড লাইন ব্যবহার করে কোডব্লোকস ইন্সটল করার পদ্ধতি।
প্রথমে অামরা সফটওয়্যার পেকেজলিস্ট অাপডেট করে নিব।
sudo apt-get update
তারপর কোডব্লোকস চালানোর জন্য একটি সাহায্যকারী পেকেজ ইন্সটল করব। এটি মুলত c++ ইন্সটল করে ।
sudo apt-get install build-essential
এখন অামরা কোডব্লোকস ইন্সটল করার জন্য নিচের কমান্ডটি চালাবো।
sudo apt-get install codeblocks
codeblocks
এই কমান্ডটি দিলেই কোডব্লোকস রান করবে । অাপনি চাইলে অ্যাপলিকেশন মেনু থেকেও কোডব্লোকস রান করতে পারবেন। প্রথম প্রোগ্রাম
প্রথমে কোডব্লোকস রান করি। তারপর নিচের কোডটুকু লিখি।
#include <stdio.h>
int main()
{
printf("Hello Programming");
return 0;
}
প্রোগ্রামটিকে first_program.c নামে সেভ করি। তারপর কোডব্লোকসের Build মেনু থেকে
Build and run
কমান্ডটিতে কিল্ক করি অথবা কিবোর্ড থেকে F9 বাটন চাপি। তাহলে নতুন একটা টার্মিনাল উন্ডোতে নিচের মত অাউটপুট দেখতে পাবো।
Output
Hello Programming
নোট: প্রতিটা সি
প্রোগ্রাম main() ফাংশন থেকে এক্সিকিউসন শুরু করে। printf() ফাংশনটি
কোটেশনের ভিতরে থাকা কনটেন্ট প্রিন্ট করে। ফাংশন নিয়ে পরবর্তিতে অামরা
অারও বিস্তারিত অালোচনা করব।