3. কিমউটার োপাগািমং
তািমম শাহ্িরয়ার সিবন
গনসত : এ পুসক সৃজনী সাধারণ লাইেসেনর আওতায় পকািশত। অবািণিজযক
উেদেশ এর অংশ িবেশষ ফেটাকিপ বা পুনমুরদণ করা যােব।
পথম পকাশ : োফবয়াির ২০১১
তামিলিপ - ১৫০
পিরচালক
তাসেনাভা আিদবা োসঁজুিত
উৎসগর
পকাশক
এ োক এম তািরকল ইসলাম
তামিলিপ আমার মা ও বাবােক
৩৮/২ক, বাংলাবাজার, ঢাকা–১১০০
পচদ
মিশউর রহমান
মু দ ণ
এম আর িপিনটং োপস
১১ পযারীদাস োরাড, ঢাকা–১১০০
মূ ল য: ১৮০.০০
COMPUTER PROGRAMMING
by Tamim Shahriar (Subeen)
First Published : February 2011, by A K M Tariqul Islam
Director: Tasnova Adiba Shanjute, Tamralipi, 38/2ka, Banglabazar,
Dhaka–1100
Price : 180.00
ISBN : 984-70096-0150-7
4. ভূ ি মকা
কিমউটােরর জন হেয়িছল কিমউট বা িহসাব করার জন। এখন কিমউটাের
মানষ গান োশােন, িসেনমা োদেখ, িচিঠ োলেখ, োফসবুক কের, ইনটারেনট ঘঁাটাঘঁা িট
কের এমনিক চুিরচামাির পযরন কের িকন িহসাব কের না! অথচ কিমউটাের
কিমউট করার মেতা আনন আর িকছুেত নয়, োসিট করার জন োযিট জানা
দরকার, োসিট হেচ একটুখািন োপাগািমং।
ইউিনভািসরিটেত বা বড় বড় িশকাপিতষােন োপাগািমং োশখােনা হয় িকন সুল -
কেলেজর োছেলেমেয়রাও োয খুব সহেজ োপাগািমং করেত পাের, োসিট অেনেকই
জােন না। আিম অেনক িদন োথেকই ভাবিছলাম, সুেলর োছেলেমেয়েদর জন
এরকম একিট বই িলিখ; িকন িকছুেতই সময় কের উঠেত পারিছলাম না।
িঠক এরকম সময় আমার ছাত সিবেনর এই পাণুিলিপিট আমার োচােখ পেড়েছ।
আিম অবাক হেয় লক করলাম, আিম োয িজিনসিট করেত োচেয়িছলাম সিবন িঠক
োসিটই কের োরেখেছ! সুল-কেলেজর োছেলেমেয়েদর জন একিট োপাগািমংেয়র
বই িলেখেছ, খুব সহজ ভাষায়, খুব সনর কের গিছেয়।
আিম তার এই চমৎকার বইিটর সাফলয কামনা কির। োছেলেমেয়রা গান োশানা,
িসেনমা োদখা, িচিঠ োলখা, োফসবুক করা, ইনটারেনট ঘঁাটাঘঁা িট করার পাশাপািশ
আবার কিমউটােরর মূল জায়গায় িফের আসক – োসই পতযাশায় থাকলাম।
মু হ মদ জাফর ইকবাল
5. োলখেকর কথা সূ ি চপত
গিণত অিলিময়ােডর ভলািনটয়ার হবার কারেণ সুল-কেলেজর অেনক োছেলেমেয়র শরর আেগ
সােথ আমার পিরচয় আেছ এবং তারা পায়ই আমার কােছ জানেত চায় োয পথম োপাগাম
োপাগািমং োশখার জন োকান বই পড়েব? তােদর জনই বইিট োলখা। তেব ডাটা টাইপ, ইনপুট ও আউটপুট
ভািসরিটেতও অেনকেক আিম োদেখিছ, োপাগািমংেয়র ইংেরিজ বই পড়েত সাচনয কিনডশনাল লিজক
োবাধ কের না, তাই পথম বেষর োপাগািমংেয় িপিছেয় পেড় এবং োসই দবরলতা লুপ (Loop)
কািটেয় ওঠার সেযাগ পায় না। আিম িনিশত োয তারা যিদ োকান বাংলা বই িদেয় একটুখািন গিণত
শর করত তেব আেরা ভােলা োপাগামার হেত পারত। যারা জীবেন পথমবােরর অযাের
মেতা োপাগািমং িশখেব তােদর জন বইিট উপেযাগী। কাশ নাইন ও তার ওপেরর ফাংশন
কােসর ছাতছাতীেদর বইিট পড়েত োকান সমসা হওয়ার কথা নয়। বইেত 'িস' বাইনাির সাচর
োপাগািমং লযাঙুেয়জ বযবহার করা হেয়েছ। তেব এিট আসেল োপাগািমং িসং (String)
লযাঙুেয়েজর োকােনা বই নয়, বরং োপাগািমংেয়র োমৌিলক ধারনাগেলার ওপর োমৌিলক সংখযা
োজার োদওয়া হেয়েছ যােত ভােলা োপাগামার হওয়ার জন শক িভিত ৈতির হয়। আবারও অযাের
বাইনাির সংখযা পদিত
বইিট োলখায় অেনেকই আমােক নানাভােব সাহাযয কেরেছন তােদর গরতপূণর িকছু োপাগািমং সমসা
মতামত ও উৎসাহ িদেয় এবং িবিভন ধরেনর ভুল ধিরেয় িদেয়। যােদর নাম এ োশেষর শর
মুহূেতর না বলেলই নয়, তঁারা হেচন, জাফর ইকবাল সার, মুিনর হাসান,
শাহ্িরয়ার মঞুর, মিনকা আকবর, োমাসািফজুর রহমান, ওমর োশহাব, োতৌিহদল পিরিশষ ১: োপাগািমং পিতেযািগতা
ইসলাম, রহল আিমন, মাহমুদর রহমান, সািবর ইউসফ, তানভীরল ইসলাম, পিরিশষ ২: োপাগািমং কযািরয়ার
মানযুরর রহমান খান, তাসিকনর হাসান, রাইয়ান কামাল, আিসফ সােলিকন, পিরিশষ ৩: বই ও ওেয়বসাইেটর তািলকা
আনা ফািরহা, নািফজ ইশিতয়াক, আিবরল ইসলাম, বােয়িজদ ভুইয়া, আইয়ুব
ঁ
সরকার ও আলমগীর োহােসন।
এ বইিটর বযাপাের োকােনা পরামশর িকংবা মতামত জানােত ইেমইল করেত
পােরন book@subeen.com িঠকানায়।
তািমম শাহ্ ি রয়ার সিবন
6. অধযায় শূ ন ঃ শরর আেগ আমরা বিল োকািডং করা। এেকক ধরেনর কােজর জন এেকক লযাঙুেয়জ োবিশ
উপেযাগী।
কিমউটার োতা আসেল গণনা করার যন, তাই না? যিদও আমরা এিট িদেয় গান
শিন, িভিডও োদিখ, োগমস োখিল, আরও নানা কাজ কির। আসেল োশষ পযরন এই বইেত আমরা োপাগািমংেয়র োমৌিলক িকছু িজিনস োশখার োচষা করব এবং
কিমউটার োবােঝ শূন (0) আর এেকর (1) িহসাব। তাই বযবহারকারী (user) যা োপাগামগেলা আমরা িলখব িস লযাঙুেয়জ বযবহার কের। আিম ধের িনিচ, োতামরা
ই করক না োকন, কিমউটার িকন সব কাজ গণনার মাধযেমই কের। কিমউটার বযবহার কের অভযস এবং োপাগািমং িজিনসটার সেঙ সমূণর
কিমউটােরর বযবহার এত বযাপক হওয়ার োপছেন অনতম কারণ হেচ নানা অপিরিচত। আর িস লযাঙুেয়জ বযবহার করার োপছেন কারণ হেচ, এিট োবশ
রকম সফটওয়যার িদেয় নানা ধরেনর কাজ করা যায় কিমউটাের। এসব পুেরােনা হেলও অতযন শিকশালী ও জনিপয় লযাঙুেয়জ। োপাগািমংেয়র োমৌিলক
সফটওয়যার ৈতির করেত হয় োপাগাম িলেখ অথরাৎ কী হেল কী করেব এিট িজিনসগেলা োবাঝার জন িস ভাষা অতযন সহায়ক। আর জনিপয় সব োপাগািমং
োপাগােমর সাহােযয কিমউটারেক োবাঝােত হয়। পিতেযািগতায় োয অল কেয়কিট লযাঙুেয়জ বযবহার করা যায়, তার মেধয িস
অনতম। আমরা অবশ িস লযাঙুেয়েজর পুেরাটা এখােন িশখব না, োকবল
একসময় িকন োকবল 0 আর 1 বযবহার কেরই কিমউটােরর োপাগাম িলখেত োমৌিলক িবষয়গেলা িনেয় কাজ করেত যা দরকার োসিট োদখব। এই বইিট পড়ার
হেতা। কারণ কিমউটার োতা 0, 1 ছাড়া আর িকছু োবােঝ না, আর কিমউটারেক পের োতামরা োকবল িসএর জন োকান বই পড়েত পােরা অথবা অন োকােনা
িদেয় োকােনা কাজ করােত চাইেল োতা তার ভাষােতই কােজর িনেদরশ িদেত হেব। ভাষা (োযমন– িস পাস পাস, জাভা িকংবা পাইথন) োশখা শর কের িদেত পােরা।
0, 1 বযবহার কের োয োপাগািমং করা হেতা, তার জন োয ভাষা বযবহত হেতা, বইেয়র পিরিশষ অংেশ আিম িকছু বইেয়র নাম িদেয়িছ, যা োতামােদর কােজ
তােক বলা হয় োমিশন লযাঙুেয়জ। তারপর এল অযােসমিল লযাঙুেয়জ। এেত লাগেব।
োপাগামাররা িকছু ইনসাকশন োযমন ADD (োযাগ), MUL (গণ) ইতযািদ
বযবহােরর সেযাগ োপল। আর এই ভাষােক 0, 1এর ভাষায় িনেয় কাজ করাবার বইিট পড়েত োতামােদর িতনিট িজিনস লাগেব, কিমউটার (ইনটারেনট সংেযাগ
দািয়ত পড়ল অযােসমলােরর ওপর, োপাগামারেদর োস িবষেয় ভাবেত হেতা না। থাকেল ভােলা হয়), িস লযাঙুেয়েজর কমাইলার এবং যেথষ সময়। তাড়াহেড়া না
িকন মানেষর চািহদার োতা োশষ োনই। নতুন নতুন চািহদার ফেল নতুন নতুন কের দই োথেক িতন মাস সময় িনেয় বইিট পড়েল ভােলা হয়। োপাগািমং োশখার
িজিনেসর উদব হয়। একসময় োদখা োগল োয অযােসমিল লযাঙুেয়জ িদেয়ও কাজ জন োকবল পড়াই যেথষ নয়, পাশাপািশ োকািডং করেত হেব। বইেয়র পিতিট
করা ঝােমলা হেয় যােচ। তাই বড় বড় োপাগাম িলখার জন আরও সহজ ও উনত উদাহরণ িনেজ িনেজ োকাড কের কিমউটাের চািলেয় োদখেত হেব। যখনই আিম
নানা রকম োপাগািমং ভাষা ৈতির হেলা। োযমন ফরটান (Fortran), োবিসক োকােনা পশ করব, োসিট িনেয় িচনা করেত হেব। তার জন যিদ দিতন ঘণা বা দ
(Basic), পযাসেকল (Pascal), িস (C)। তেব এখােনই োশষ নয়, এরপর এল িতন িদন সময় লােগ লাগক, োকােনা কিত োনই, বরং দীঘর সময় োকােনা সমসার
আরও অেনক লযাঙুেয়জ, যার মেধয অনতম হেচ, িস পাস পাস (C++), সমাধান িনেয় িচনা করার অভযাসিট খুব জরির। োকােনা অধযায় পুেরাপুির োবাঝার
িভজুয য়াল োবিসক (Visual Basic), জাভা (Java), িস শাপর (C#), পালর (Perl), আেগ পেরর অধযায় পড়া শর করা যােব না। আবার োকােনা অংশ যিদ োতামার
িপএইচিপ (PHP), পাইথন (Python), রিব (Ruby)। এখেনা কিমউটার কােছ খুব সহজ মেন হয়, োসই অংশ িঠকভােব না পেড় এবং োপাগামগেলা না
িবজানীরা িনতযনতুন োপাগািমং ভাষা ৈতির কের যােচন। োপাগামাররা এসব ভাষা কের পেরর অংেশ চেল োযেয়া না িকন। সাধারণ পড়ািলখার সেঙ োপাগািমং
বযবহার কের োপাগাম োলেখন আর পিতিট ভাষার রেয়েছ আলাদা কমাইলার, যার োশখার অেনক পাথরকয। এখােন পড়ার সেঙ সেঙ কাজ করাও জরির। আর এই
কাজ হেচ ওই োপাগামেক কিমউটােরর োবাধগময ভাষায় রপানর করা, তাই এিট বই পেড়ই িকন তুিম োপাগামার হেয় যােব না, বইিট পেড় তুিম োপাগামার হওয়া
িনেয় োপাগামারেদর ভাবেত হয় না। শর করেব।
োপাগাম িলখার সময় োপাগামারেক িতনিট পধান কাজ করেত হয়। পথেম তার এবার আসা যাক, কমাইলার পােব োকাথায়? িসএর জন োবশ িকছু কমাইলার
বুঝেত হয় োয োস আসেল কী করেত যােচ, মােন তার োপাগামিট আসেল কী কাজ আেছ। তুিম যিদ িলনাক িকংবা মযাক বযবহারকারী হও, তেব সবেচেয় ভােলা হেচ
করেব। তারপর িচনাভাবনা কের এবং যুিক (logic) বযবহার কের অযালগিরদম gcc। অিধকাংশ িলনােকই এিট আেগ োথেক ইনসল করা থােক। োতামার
দঁাড় করােত হয়। মােন, লিজকগেলা ধােপ ধােপ সাজােত হয়। এর পেরর কাজিট কিমউটাের না থাকেল এিট ইনসল কের িনেত হেব। আর উইেনডাজ বযবহার
হেচ অযালগিরদমটােক োকােনা একিট োপাগািমং ভাষায় রপানর করা, যােক করেল তুিম Codeblocks (http://www.codeblocks.org/) বযবহার করেত
7. পােরা। এিট একিট িফ ও ওেপন োসাসর IDE (Integrated Development অধযায় একঃ পথম োপাগাম
Environment) এবং মযাক আর িলনােকও চেল। এমিনেত সাধারণ োকােনা
োটকট এিডটর (োযমন: োনাটপযাড, িজএিডট, োকরাইট) বযবহার কের োকাড িলেখ োপাগািমংেয়র জগেত সাগতম।
োসিট কমাইলার িদেয় কমাইল কের রান করা যায়। তেব অিধকাংশ আইিডই
(IDE) গেলােতই িনজস োটকট এিডটর ও কমাইলার থােক। োপাগাম রান করার আমরা এখন একিট োপাগাম িলেখ োফলব, োযিট োতামার কিমউটােরর িসেন
বযবসাও থােক। এ ছাড়াও নানা ধরেনর টুলস থােক। Hello World োদখােব বা িপনট করেব। এিট হেচ োপাগািমংেয়র একিট ঐিতহ।
পৃিথবীর অিধকাংশ োপাগামারই জীবেনর পথম োপাগাম িহেসেব এিট োলেখ।
Codeblocks টা সরাসির তুিম http://www.codeblocks.org সাইট োথেক
ডাউনেলাড ও ইনসল করেত পােরা। Downloads োপইেজ Binariesএ োগেল আিম এই বইেয়র োপাগামগেলা চালােনার জন Codeblocks বযবহার করব।
উইেনডােজর জন তুিম দিট অপশন োদখেব: codeblocks10.05setup.exe ও তেব োতামরা অন িকছু বযবহার করেলও োকােনা সমসা োনই, সবগেলােত কােজর
codeblocks10.05mingwsetup.exe। তুিম িদতীয়িট ডাউনেলাড করেব (74.0 ধারা োমাটামুিট একই রকম।
MB)। আর ইনসল করার কাজিট অন োযেকােনা সফটওয়যার বা োগমেসর
মেতাই। যারা উবুনটু বযবহার কেরা, তারা Ubuntu Software Center এখন চেলা োকাডবকস ইনসল করা যাক। বইেয়র সেঙ োযই িসিড আেছ োসখােন
(Applications > Ubuntu Software Center) োথেক এিট ডাউনেলাড করেত তুিম ইনসলার পােব। তারপর ইনসলারিট ডবল িকক কেরা এবং িনেচর
পােরা। ছিবগেলা অনসরণ কেরা।
োপাগািমং চচরার িবষয়। ইনটারেনেট োবশ িকছু ওেয়বসাইট আেছ, োযখােন পচুর
সমসা োদওয়া আেছ োযগেলা োপাগােমর সাহােযয সমাধান করেত হয়। সব
জায়গােতই তুিম িস লযাঙুেয়েজ োপাগািমং করেত পারেব। এর মেধয িকছু িকছু
ওেয়বসাইট আবার িনয়িমত োপাগািমং পিতেযািগতারও আেয়াজন কের। এসব
পিতেযািগতায় অংশগহণ িনঃসেনেহ োতামার োপাগািমংদকতা বৃিদ করেব আর
োসই সেঙ িবেশর নানা োদেশর োপাগামারেদর সেঙ োমশারও সেযাগ কের োদেব।
অবশ োপাগািমং পিতেযািগতায় ভােলা করেত হেল োকবল োপাগািমং জানেলই
চলেব না, গািণিতক দকতাও যেথষ গরতপূণর। পিরিশষ অংেশ োপাগািমং
পিতেযািগতা িনেয় আলাপ করব।
বইেয়র পিতিট োপাগােমর িনেচ আিম একিট নমর িদেয়িছ। োপাগােমর নমর যিদ
২.৫ হয়, তার মােন হেচ এিট িদতীয় অধযােয়র পঁাচ নমর োপাগাম।
এিট িকন োকােনা গেলর বই নয়। তাই িবছানায় শেয়বেস পড়া যােব না। বইিট
পড়ার সময় কিমউটার চালু রাখেত হেব এবং পিতিট উদাহরণ সেঙ সেঙ
োপাগাম িলেখ োদখেত হেব, োকােনা সমসা সমাধান করেত িদেল তখনই োসিট
সমাধােনর োচষা করেত হেব। মেন রাখেব, যত োবিশ োপাগািমং তত োবিশ আনন। ছিব ১.১
আশা করিছ, তুিম ৈধযর িনেয় বািক অধযায়গেলা পড়েব এবং সবগেলা োপাগাম
কিমউটাের চািলেয় োদখেব। োতামার জন শভ কামনা।
9. এখন File োমন োথেক New File সাবেমনেত িগেয় Empty Fileএ িকক কেরা।
িনেচর ছিবর (১.৮) মেতা উইেনডা আসেব।
ছিব ১.৬
ছিব ১.৮
ইনসল হেয় োগল। এখন উইেনডােজর Start োমনেত Programsএ িগেয়
Codeblocks চালু কেরা। উবুনটুেত এিট থাকেব Applications >
Programmingএর োভতর। এখন োতামরা োপাগামগেলা রাখার জন হাডরিডেসর োভতর একিট োফালার ৈতির
কের নাও। ওই োফালাের ফাইলগেলা োসভ (Save) করেব। ফাইেলর োযেকােনা
একিট নাম দাও। আর Save as type হেব C/C++ files (ছিব ১.৯)।
ছিব ১.৭
এখােন (ছিব ১.৭) োতামরা Show tips at startup োচকবেকর িটক (tick) িচহিট ছিব ১.৯
উিঠেয় িদেত পােরা।
10. িনেচর ছিবেত োদেখা ফাইেলর নাম হেচ hello.c। িস োপাগােমর সব ফাইেলর োতামরা হয়েতা িচনা করছ, আিম এই িহিজিবিজ কী িলখলাম? আেস ধীের সব
একেটনশন হেব .c। বযাখযা করব, িচনা োনই! আপাতত আমার কথামেতা কাজ কের যাও। এবার
Build োমনেত িগেয় Compile Current Fileএ িকক কেরা।
ছিব ১.১২
তুিম যিদ োপাগামিট িঠকভােব টাইপ কের থােকা তেব কমাইলার োতামােক বলেব
ছিব ১.১০
োয 0 errors, 0 warnings, মােন োপাগােম syntax িঠক আেছ। ১.১৩ নমর
ছিবিট োদেখা।
এখােন আমরা আমােদর োকাড বা োপাগাম িলখব। িনেচর োকাডিট টাইপ কের
োফেলা এবং ফাইলিট োসভ কেরা।
#include <stdio.h>
int main ()
{
printf("Hello World");
ছিব ১.১৩
return 0;
}
োপাগাম: ১.১ এখন আবার Build োমনেত িগেয় Runএ িকক কেরা (ছিব ১.১৪)। তাহেল
োতামার োপাগাম চালু হেয় যােব এবং তুিম ১.১৫ নমর ছিবর মেতা িসন োদখেত
পােব।
ছিব ১.১১
ছিব ১.১৪
11. োপাগােমর পেরর লাইন োখয়াল কেরা: printf("Hello World"); এিট একিট
োসটেমনট। এখােন printf() হেচ একিট ফাংশন যার কাজ হেচ িসেন িকছু িপনট
করা। ডবল োকােটশন িচেহর োভতের যা িলখেব তাই িসেন োস িপনট করেব।
এই ফাংশনিট িসেন িপনট কের কীভােব োসিট আসেল বলা আেছ stdio.h নােম
একিট ফাইেল। এই ফাইলগেলােক বেল োহডার (header) ফাইল (.h হেচ োহডার
ছিব ১.১৫
ফাইেলর একেটনশন)। stdio.h ফাইেল সযানডাডর ইনপুট আর আউটপুটসংকান
এখােন োদেখা, োতামার োপাগামিট িসেন Hello World িপনট কেরেছ। পেরর যাবতীয় ফাংশন োলখা আেছ, আমরা োকবল োসগেলা বযবহার করব, ফাংশনগেলা
লাইেন বলা আেছ Process returned 0 (0x0) (এিটর অথর িনেয় আমােদর এখন কীভােব কাজ কের োসিট এখন আমােদর জানার দরকার োনই। আর োযেহতু
মাথা না ঘামােলও চলেব) আর execution time : 0.031 s মােন োপাগামিট printf() ফাংশন বযবহার কেরিছ, তাই োপাগােমর শরেত #include <stdio.h>
চলেত 0.031 োসেকনড সময় োলেগেছ। তারপেরর লাইন হেচ, Press any key to িলখেত হেয়েছ। এই রকম আরও অেনক পেয়াজনীয় োহডার ফাইল আেছ, যার
continue. িকোবােডর Any key খুঁেজ না োপেল অন োযেকােনা িক চাপেলই িকছু আমরা পরবতরী সমেয় কােজর পেয়াজেন োদখব।
চলেব।
এখন একিট বযাপার োখয়াল কেরা। printf("Hello World");এর োশেষ একিট
তুিম যিদ োপাগামিট িঠকঠাকভােব রান করােত পােরা এবং Hello World োলখাটা
োসিমেকালন রেয়েছ। িস লযাঙুেয়েজ পিতিট োসটেমেনটর পেরই একিট
োদেখ থােকা তাহেল োতামােক অিভননন। তুিম োবশ গরতপূণর একিট কাজ কের
োসিমেকালন থােক। একিট োসটেমেনটর কাজ োশষ হেল পেরর োসটেমেনটর কাজ
োফেলছ।
শর হয়। return 0;ও একিট োসটেমনট, তাই এিটও োসিমেকালন িদেয় োশষ
আর িঠকঠাকভােব রান করােত না পারেল আবার শর োথেক োচষা কেরা। করেত হেয়েছ। শরর িদেক অেনেকই োসিমেকালন িদেত ভুেল যায়, তখন
পেয়াজেন অিভজ কারও সাহাযয নাও। কারণ এই োপাগাম না চালােত পারেল কমাইল এরর (compile error) হয়। োতামরা একিট োসিমেকালন মুেছ িদেয়
বইেয়র পেরর অংশ পেড় োতমন একিট লাভ হেব না। কমাইল করার োচষা কের োদখেত পােরা।
এবাের োদখা যাক আিম কী িলেখিছ োকােড। এবাের একিট খুব গরতপূণর কথা বেল রািখ। োতামরা োকাডিট োখয়াল করেল
পথম লাইন িছল: #include <stdio.h>, এিট োকন িলেখিছ একটু পের বলিছ। োদখেব োয আিম #include <stdio.h>, int main(), { ও } োযই লাইেন আেছ
িদতীয় লাইন ফঁাকা। োদখেত সনর লােগ তাই। োসিট এিডটেরর এেকবাের বঁা িদক োথেক শর কেরিছ। আর printf এবং return
তৃতীয় লাইন: int main()। এিটেক বেল োমইন ফাংশন। িস োপাগামগেলা োমইন 0এর আেগ চারিট োসস (ফঁাকা জায়গা) িদেয় িনেয়িছ। এিটেক বেল
ফাংশন োথেক কাজ করা শর কের, তাই সব োপাগােম একিট (এবং োকবল একিট) ইনেডেনটশন (Indentation)। এরকম না করেলও োপাগামিট চলত এবং তাই
োমইন ফাংশন থাকেত হয়। োমইন ফাংশেনর শরেত িদতীয় বননী িদেয় শর অেনেকই ইেনডেনটশেনর বযাপারিট গরত োদয় না এবং িঠকমেতা ইনেডেনটশন
করেত হয় আর োশষও করেত হয় একিট িদতীয় বননী িদেয়। োশষ করার আেগ কের না। োযেকােনা ভােলা অভযােসর মেতা ইেনডেনটশেনর অভযাস ৈতির করাটা
আিম return 0; িলেখিছ, োসিট োকন এখন বযাখযা না করেলই ভােলা হয়, ফাংশন একটু কিঠন, তেব িবষয়টা িকন দঁাত মাজার মেতাই গরতপূণর । ইনেডেনটশন
িনেয় যখন আলাপ করব তখন বলব। তাই আপাতত োতামরা োযেকােনা োপাগােম করার অভযাস িঠকমেতা ৈতির না হেল োপাগামারেদর সহকমরী বা বেসর বকা
িনেচর অংশটুক িলেখ োফলেব: শনেত হয়, অেনক জায়গায় োতা ইনটারিভউেতই বাদ পেড় োযেত হয়। আশা করিছ
োতামরা বযাপারিট োবশ গরত সহকাের োনেব। আিম বইেয়র সমস উদাহরেণই
int main() যথাযথভােব ইনেডেনটশন করার োচষা করব তেব ছাপার সময় একটু এিদক
{ ওিদক হেত পাের, োসিট োতামরা বুেঝ োনেব। ইেনডনটশেনর জন সাধারণত চারিট
এখােন োকাড থাকেব। োসস োদওয়াটাই এখন সযানডাডর। োতামরা এিডটের অপশন োসট করেত পােরা
যােত টযাব (Tab) চাপেল োসিট চারিট োসেসর সমান হয়। Codeblocksএ
return 0; Settings োমনেত Editorএ িকক কের TAB Optionsএ TAB indents োচক
} কেরা এবং TAB size in spaces 4 দাও (১.১৬ ছিবিট োদেখা)।
12. অধযায় দইঃ ডাটা টাইপ , ইনপু ট ও আউটপু ট
এ অধযােয় আমরা িকছু োছাট োছাট োপাগাম িলখব। সবগেলা োপাগাম অবশই
কিমউটাের চািলেয় োদখেব এবং একটু পিরবতরন কের কমাইল ও রান করার
োচষা করেব।
আমােদর পথম োপাগামিট হেব দিট সংখযা োযাগ করার োপাগাম। এখন কথা হেচ,
সংখযাগেলা োতা কিমউটােরর োমেমািরেত রাখেত হেব, োসই জিটল কাজিট
কীভােব করব? িচনা োনই! সব োপাগািমং লযাঙুেয়েজ োভিরেয়বল বেল একিট
িজিনস আেছ োযিট োকান িনিদরষ মান ধারণ করার জন বযবহার করা হয়।
োভিরেয়বেলর একিট নাম িদেত হয়, তারপর োভিরেয়বল = োকােনা মান
িলেখ িদেল োভিরেয়বেলর োভতর োসিট ঢুেক যায়। এিটর সেঙ গািণিতক
সমীকরেণর িকন োকােনা সমকর োনই।
ছিব ১.১৬ চেলা, োপাগামিট িলেখ রান করাই, তারপর বযাখযা করা যােব।
এবাের োতামােদর জন একিট কাজ। একিট োপাগাম োলেখা োযিট িসেন িপনট #include <stdio.h>
করেব: I love my country, Bangladesh।
int main()
{
োপাগামিট টাইপ করার পের অবশই কমাইল ও রান করেব। কমাইল করার int a;
আেগ োসভ করেত ভুলেব না। int b;
int sum;
a = 50;
b = 60;
sum = a + b;
printf("Sum is %d", sum);
return 0;
}
োপাগাম: ২.১
োপাগামিট রান করাও, তুিম িসেন োদখেব: Sum is 110।
এখােন a, b, sum িতনিট োভিরেয়বল (variable) আলাদা সংখযা ধারণ কের।
পথেম আমােদর বেল িদেত হেব োয a, b, sum নােম িতনিট োভিরেয়বল আেছ।
এবং এগেলােত কী ধরেনর ডাটা থাকেব োসিটও বেল িদেত হেব। int a; িদেয়
আমরা কমাইলারেক বলিছ a নােম একিট োভিরেয়বল এই োপাগােম আেছ োযিট
একিট পূণরসংখযা (integer)এর মান ধারণ করার জন বযবহার করা হেব। এই
13. কাজিটেক বেল োভিরেয়বল িডকােরশন। আর int হেচ ডাটা টাইপ, োযিট োদেখ {
int a, b, sum;
িসএর কমাইলার বুঝেব োয এেত ইিনটজার টাইপ ডাটা থাকেব। আরও োবশ
িকছু ডাটা টাইপ আেছ, োসগেলা আমরা আেস আেস োদখব। আমরা চাইেল একই a = 50;
টাইেপর োভিরেয়বলগেলা িডেকয়ার করার সময় আলাদা লাইেন না িলেখ একসেঙ b = 60;
কমা িদেয়ও িলখেত পারতাম, োযমন: int a, b, sum;। আর লক কেরা োয sum = a + b;
োভিরেয়বল িডকােরশেনর োশেষ োসিমেকালন বযবহার করেত হয়।
printf("Sum is %d", sum);
এরপর আিম দিট োসটেমনট িলেখিছ:
return 0;
a = 50; }
b = 60; োপাগাম: ২.২
এখােন aএর মান 50 আর bএর মান 60 বেল িদলাম (assign করলাম), যতকণ
না এিট আমরা পিরবতরন করিছ, কমাইলার aএর মান 50 আর bএর মান 60 আবার োভিরেয়বল িডেকয়ার করার সময় একই সেঙ অযাসাইনও করা যায়:
ধরেব।
#include <stdio.h>
পেরর োসটেমনট হেচ: sum = a + b;। এেত োবাঝায়, sumএর মান হেব a + b
int main()
এর সমান, অথরাৎ a ও bএর োযাগফল োয সংখযািট হেব োসিট আমরা sum নােমর {
োভিরেয়বেল োরেখ িদলাম (বা assign করলাম)। int a = 50, b = 60, sum;
sum = a + b;
এবাের োযাগফলিট মিনটের োদখােত হেব, তাই আমরা printf ফাংশন বযবহার
করব। printf("Sum is %d", sum);
printf("Sum is %d", sum);
return 0;
}
এখােন োদেখা printf ফাংশেনর োভতের দিট অংশ। পথম অংেশ "Sum is %d"
োপাগাম: ২.৩
িদেয় োবাঝােনা হেয়েছ িসেন িপনট করেত হেব Sum is এবং তার পের একিট
ইিনটজার োভিরেয়বেলর মান োযিট %dএর জায়গায় বসেব। তারপর কমা িদেয়
এখন োতামােদর জন একিট পশ। িনেচর োপাগামিটর আউটপুট কী হেব?
আমরা sum িলেখ বুিঝেয় িদেয়িছ োয %dোত sumএর মান িপনট করেত হেব।
ইিনটজােরর জন োযমন %d বযবহার করলাম, অন ধরেনর োভিরেয়বেলর জন #include <stdio.h>
অন িকছু িলখেত হেব, োযিট আমরা বযবহার করেত করেত িশখব। খুব ভােলা
int main()
হেতা যিদ আিম এখন একিট চাটর িলেখ িদতাম োয িস লযাঙুেয়েজ কী কী ডাটা {
টাইপ আেছ, োসগেলা কী িদেয় োলেখ এবং িপনট করার জন কী করেত হেব আর int x, y;
োতামরা োসই চাটর মুখস কের োফলেত। িকন শধু শধু মুখস করার োকােনা দরকার
x = 1;
োনই, মুখস করার পবণতা িচনাশিক কমায় আর োপাগামারেদর জন িচনা করার
y = x;
কমতা খুবই গরতপূণর। x = 2;
আমরা ওপেরর োপাগামিট চাইেল এভােবও িলখেত পারতাম: printf("%d", y);
return 0;
#include <stdio.h>
}
int main() োপাগাম: ২.৪
14. কী মেন হয়? আউটপুট 1 নািক 2? আউটপুট হেব 1, কারণ পথেম #include <stdio.h>
কমাইলার োদখেব, xএর মান 1 অযাসাইন করা হেয়েছ (x = 1;)। int main()
তারপর xএর মানিট আবার yএ অযাসাইন করা হেয়েছ (y = x;)। এখন {
yএর মান 1। তারপর আবার xএর মান 2 অযাসাইন করা হেয়েছ। িকন int a = 50.45, b = 60, sum;
তােত yএর মােনর োকােনা পিরবতরন হেব না। োপাগািমংেয় y = x; আসেল sum = a + b;
োকােনা সমীকরণ না োয এিট সবসময় সতয হেব। '=' িচহ িদেয় একিট
োভিরেয়বেল িনিদরষ োকােনা মান রাখা হয়। printf("%d + %d = %d", a, b, sum);
return 0;
এবাের িনেচর োপাগামিট োদেখা: }
োপাগাম: ২.৬
#include <stdio.h>
int main() এখােন aএর মান 50.45 বযবহার করলাম। এবাের োপাগাম চালাও, োদেখা কী
{ হয়। আবার মেন যিদ পশ আেস োয, main ফাংশেনর োশষ লাইেন return 0; না
int a = 50, b = 60, sum; িলখেল কী হয়? তাহেল return 0; ছাড়া োপাগাম চািলেয় োদেখা কী হয়।
sum = a + b;
আউটপুট হেব: 50 + 60 = 110।
printf("%d + %d = %d", a, b, sum);
িস কমাইলার aএর মান 50 ধেরেছ, যিদও আমরা 50.45 অযাসাইন কেরিছ। এই
return 0;
} বযাপারিটেক বেল টাইপ কাস (type cast)। বাসব সংখযা রাখার জন িস ভাষায়
োপাগাম: ২.৫ double নােমর ডাটা টাইপ রেয়েছ। টাইপ কাস কের double সংখযািটেক intএ
োনওয়া হেয়েছ, এিট অেটােমিটক হয়। আবার কমাইলারেক বেলও োদওয়া যায়:
োপাগামিট মিনটের কী িপনট কের? চািলেয় োদেখা। printf("%d + %d = %d", int a = (int) 50.45।
a, b, sum); না িলেখ printf("%d + %d = %d", b, a, sum); িলেখ োপাগামিট
আবার চালাও। এখন িজিনসিট িচনা কের বুেঝ নাও। int a = 50.99; এখােন aএর মান হেব 50। int a = 50.9; িলখেল aএর মান
হয় 50। এক কথায় বলেল double োথেক intএ টাইপ কাস করেল দশিমেকর
োলখাপড়া করার সময় আমােদর মেন নানা িবষেয় নানা পশ আেস, যার উতর পেরর অংশিট বাদ পেড় যােব।
আমরা বইেত খুঁিজ, িশককেক িজজাসা কির, ইনটারেনেট খুঁিজ বা িচনা কের যুিক আেরকিট কথা। োযই োভিরেয়বলেক টাইপ কাস করা হেচ, তার মান িকন
দঁাড় কিরেয় উতরিট োবর কির। আমােদর দভরাগয োয োবিশরভাগ োছেলেমেয়ই োশষ পিরবতরন হয় না। টাইপ কাস করা মানিট একিট োভিরেয়বেল রাখা যায়। িনেচর
কাজিট কের না, কারণ িনেজ িনেজ িচনা করেত একটু সময় লােগ ও পিরশম হয়, োপাগামিট কিমউটাের চালােলই বুঝেত পারেব।
োসই সময় আর শম তারা িদেত চায় না। আর আমােদর অিভভাবক, িশকক ও
#include <stdio.h>
িশকাবযবসা িচনা করার জন োকােনা পুরসার োদয় না, বরং মুখস করার জনই
পুরসৃত কের। int main()
{
যাোহাক, োপাগািমংেয়র বযাপাের যখনই মেন োকােনা পশ আসেব, সেঙ সেঙ int n;
double x;
একিট োপাগাম িলেখ োফলেব। োদেখা োতামার কমাইলার কী বেল। ধরা যাক,
আমরা যিদ int টাইেপর োভিরেয়বেল দশিমক যুক সংখযা (বাসব সংখযা বা real x = 10.5;
number) বযবহার করতাম, তাহেল কী হেতা? n = (int)x;
15. printf("Value of n is %dn", n); পরপর এতগেলা printfএর কারেণ োতামার কিমউটােরর িসেন িনশয়ই োদখেত
printf("Value of x is %lfn", x);
একটু অসিসকর লাগেছ। পিতিট printf োতামরা এভােব িলখেত পােরা:
return 0; printf("Value of a is %dn", a);। এখন printf ফাংশেন ""এর োভতর n
} িলখেল কী হয় োসিট আিম বলব না। োপাগামিট চালােলই বুঝেত পারেব।
োপাগাম: ২.৭
aএর সবগেলা মান িকন িঠকভােব োদখা যায়িন, োযসব মান 2146473648 োথেক
োপাগােমর আউটপুট োদেখা। x-এর মান িকন পিরবতরন হয়িন। আর বুঝেতই 2147483647 পযরন োকবল োসগেলাই িঠকঠাক িপনট হেব, কারণ এই োরেঞর
পারছ োয বাসব সংখযা রাখার জন িস-োত োয double টাইেপর োভিরেয়বল বাইেরর সংখযা int টাইেপর োভিরেয়বেল রাখা যায় না। এিট হেলা int টাইেপর
বযবহার করা হয়, তা িপনট করার সময় %lf (l এখােন ইংেরিজ োছাট হােতর L) সংখযার সীমা। িসোত int টাইেপর ডাটার জন োমেমািরেত চার বাইট (byte)
বযবহার করেত হয়। জায়গা বযবহত হয়। চার বাইট মােন বিতশ িবট (1 byte = 8 bit)। পিত িবেট
দিট িজিনস রাখা যায়, 0 আর 1। দই িবেট রাখা যায় চারিট সংখযা (00, 01, 10,
int ডাটা টাইেপ োতা োকবল পূণর সংখযা রাখা যায়। িকন োসিট কী োযেকােনা
11)। তাহেল 32 িবেট রাখা যােব: 232 টা সংখযা অথরাৎ 4294967296 িট সংখযা।
পূণরসংখযা? উতেরর জন একিট োপাগাম িলিখ:
এখন অেধরক ধনাতক আর অেধরক ঋণাতক যিদ রািখ, তাহেল 2146473648
#include <stdio.h> োথেক 1 পযরন োমাট 2146473648 িট সংখযা আবার 0 োথেক 2146473647 পযরন
োমাট 2146473648 িট সংখযা, সবরেমাট 4294967296 িট সংখযা। আশা কির,
int main() িহসাবটা বুঝেত োপেরছ।
{
int a;
এখন আমরা োযাগ করার োপাগামিট িলখব োযিট সব বাসব সংখযা (real number)
a = 1000; োযাগ করেত পারেব। োতামােদর মেন কিরেয় িদই, পূণরসংখযা হেচ, ... 3, 2, 1,
printf("Value of a is %d", a); 0, 1, 2, 3 ... ইতযািদ। আর বাসব সংখযা হেচ 5, 3, 2.43, 0, 0.49, 2.92
a = 21000; ইতযািদ (সংখযােরখার ওপর সব সংখযাই িকন বাসব সংখযা)।
printf("Value of a is %d", a);
#include <stdio.h>
a = 10000000;
printf("Value of a is %d", a); int main()
{
a = 10000000; double a, b, sum;
printf("Value of a is %d", a);
a = 9.5;
a = 100020004000503; b = 8.743;
printf("Value of a is %d", a);
sum = a + b;
a = 4325987632;
printf("Value of a is %d", a); printf("Sum is: %lfn", sum);
return 0; printf("Sum is: %0.2lfn", sum);
}
োপাগাম: ২.৮ return 0;
}
োপাগাম: ২.৯
এখােন আমরা aোত িবিভন সংখযা অযাসাইন করলাম। সব মান িক িঠকঠাক
আসেছ? আেসিন। োকন আেসিন োসিট বযাখযা করার আেগ একিট কথা বেল িনই।
16. োপাগামিট কমাইল এবং রান কেরা। আউটপুট হেব িনেচর দই লাইন: োতামরা িনশয়ই scanf ফাংশেনর বযবহার িশেখ োফেলছ। scanf("%d", &a);
এখােন ডবল োকােটশেনর োভতের %d িদেয় scanf-োক বেল োদওয়া হেচ োয
Sum is: 18.243000 একিট ইিনটজার বা int টাইেপর োভিরেয়বেলর মান পড়েত হেব (বযবহারকারী
Sum is: 18.24 িকেবাডর োথেক ইনপুট োদেব)। আর োদেখা a-এর আেগ এমপারেসনড (&) িচহ
বযবহার করা হেয়েছ, &a িদেয় োবাঝােনা হেয়েছ োয সংখযািট ইনপুট োদওয়া হেব
%lf বযবহার করায় পথম লাইেন দশিমেকর পের ছয় ঘর পযরন িপনট হেয়েছ। োসিট a োভিরেয়বেলর মােঝ অযাসাইন হেব। োতামরা যখন িস আেরকটু
আবার িদতীয় লাইেন দশিমেকর পের দই ঘর পযরন িপনট হেয়েছ, কারণ %0.2lf ভােলাভােব িশখেব, তখন &a-এর পকৃত অথর বুঝেত পারেব, আপাতত আমরা
িলেখিছ (িতন ঘর পযরন িপনট করেত চাইেল %0.3lf িলখতাম, আবার দশিমক বযবহােরর িদেকই মেনােযাগ িদই। a এবং b-এর মান একিট scanf ফাংশন
অংশ িপনট করেত না চাইেল %0.0lf)। double টাইেপর ডাটার জন 64 িবট িদেয়ও োনওয়া োযত এভােব: scanf("%d %d", &a, &b);। োভিরেয়বেলর
বযবহত হয় এবং 1.7E308 (1.7 x 10308) োথেক 1.7E+308 (1.7 x 10308) আেগ & িচহ না িদেল কী সমসা? িনেচর োপাগামিট রান করার োচষা কেরা, িকছু
পযরন ডাটা রাখা যায়। িবসািরত িহসাব বুঝেত হেল কিমউটার িবজানসংকান একিট এরর পােব। এই মুহূেতর এররটা বযাখযা করিছ না, কারণ বযাখযাটা একটু
আরও িকছু জানবুিদর দরকার, তাই আিম আর এখন োসিদেক যািচ না। জিটল আর এখন োবাঝােত োগেল োতামরা ভুল বুঝেত পােরা এবং পের আমােক
গালমন করেব।
এখন আমরা আমােদর োপাগােম এমন বযবসা রাখেত চাই, যােত োকান দিট সংখযা
োযাগ করেত হেব োসিট আমরা োকােডর োভতর িলখব না, বযবহারকারীর কাছ #include <stdio.h>
োথেক ইনপুট আকাের োজেন োনব। বযবহারকারীর (মােন োয োপাগামিট বযবহার
int main()
করেছ) কাছ োথেক ইনপুট োনওয়ার জন আমরা scanf ফাংশন বযবহার করব {
(িস-োত আরও ফাংশন আেছ এই কােজর জন)। তাহেল োদির না কের োপাগাম int a, b, sum;
িলেখ োফিল:
scanf("%d", &a);
scanf("%d", b);
#include <stdio.h>
sum = a + b;
int main()
{
printf("Sum is: %dn", sum);
int a, b, sum;
return 0;
scanf("%d", &a);
}
scanf("%d", &b);
োপাগাম: ২.১১
sum = a + b;
এখন আমরা যিদ ইনপুট িহেসেব ইিনটজার না িনেয় ডবল টাইেপর ডাটা িনেত
printf("Sum is: %dn", sum); চাইতাম তাহেল কী করেত হেতা? scanf-এ %d-এর বদেল %lf বযবহার
return 0; করেলই চলত। োতামরা োপাগামিট িলেখ োফেলা এবং োদেখা িঠকঠাক রান হয় িক
} না। তারপের বািক অংশ পড়া শর কেরা।
োপাগাম: ২.১০
আসেল িঠকঠাক রান হেব না, কারণ ডাটা টাইপও পিরবতরন করেত হেব। মােন
োপাগামিট রান করেল োদখেব ফঁাকা িসন (blank screen) আেস। তখন তুিম int না িলেখ double িলখেত হেব। োপাগামিট িঠক কের আবার চালাও।
একিট সংখযা িলখেব, তারপর োসস (space) বা এনটার (enter) িদেয়
আেরকিট সংখযা িলখেব। তারপর আবার এনটার চাপেল োযাগফল োদখেত পােব। বইেত যখনই আিম োকােনা োপাগাম োলখেত বলব োসিট যত সহজ িকংবা কিঠনই
মেন োহাক না োকন, োসিট কিমউটাের িলেখ কমাইল ও রান করেত হেব। এ
17. কাজ না কের সামেন আগােনা যােব না। মেন রাখেব, গািড় চালােনা োশখার জন এিট রান করাও। আেগর োপাগামিটর মেতা একই কাজ করেব। getchar ফাংশন
োযমন গািড় চালােনার োকােনা িবকল োনই, সঁাতার োশখার জন োযমন সঁাতার একিট অকর পেড় োসিট ch োভিরেয়বেলর োভতের অযাসাইন কের িদল। আর
কাটার িবকল োনই, োতমনই োপাগািমং োশখার জন োপাগািমং করার োকােনা সরাসির োকােনা িকছু char টাইপ োভিরেয়বেল রাখেত চাইেল োযই অকর বা িচহ
িবকল োনই, শধু বই পেড় োপাগামার হওয়া যায় না। রাখেব তার দই পােশ িসেঙল োকােটশন িচহ োদেব। োযমন: char c = 'A';
এবাের আমরা আেরক ধরেনর ডাটা টাইপ োদখব, োসিট হেচ char এখন িনেচর োপাগামিট োদেখা:
(character) টাইপ। োতা এই character টাইেপর চিরত হেচ এেক োমেমািরেত
রাখার জন মাত এক বাইট জায়গার দরকার হয়। সাধারণত োযেকােনা অকর বা #include <stdio.h>
িচহ রাখার জন এই টাইেপর ডাটা বযবহার করা হয়। তেব োসই অকরটা ইংেরিজ int main()
বণরমালার অকর হেত হেব, অন ভাষার অকর char টাইেপর োভিরেয়বেল রাখা {
যােব না। িনেচর োপাগামিট কিমউটাের িলেখ রান করাও: int num1, num2;
#include <stdio.h> printf("Please enter a number: ");
scanf("%d", &num1);
int main() printf("Please enter another number: ");
{ scanf("%d", &num2);
char ch;
printf("%d + %d = %dn", num1, num2, num1+num2);
printf("Enter the first letter of your name: "); printf("%d %d = %dn", num1, num2, num1num2);
scanf("%c", &ch); printf("%d * %d = %dn", num1, num2, num1*num2);
printf("The first letter of your name is: %cn", printf("%d / %d = %dn", num1, num2, num1/num2);
ch);
return 0;
return 0; }
} োপাগাম: ২.১৪
োপাগাম: ২.১২
এিট কমাইল ও রান করাও। এিট োদেখ িনশয়ই বুঝেত পারছ িবেয়াগ, গণ ও
োকাড োদেখ বুঝেতই পারছ, char টাইেপর জন printf এবং scanf ফাংশেনর ভােগর কাজ কীভােব করেত হয়। এবাের োতামােদর কাজ হেচ চারিট। এক,
োভতের %c বযবহার করেত হয়। আেরকিট ফাংশন আেছ getchar, এিট িদেয়ও num1 ও num2-এর মেধযকার োযাগ, িবেয়াগ, গণ, ভােগর কাজিট printf
char টাইেপর ডাটা িরড করা যায়। িনেচর োপাগামিট োদেখা: ফাংশেনর োভতের না কের আেগ করা এবং মানিট অন একিট োভিরেয়বেল োরেখ
োদওয়া। এর জন একিট োপাগাম িলেখ োফেলা। িদতীয় কাজ হেচ োপাগামিট
#include <stdio.h> ডবল টাইেপর োভিরেয়বল বযবহার কের কেরা। তৃতীয় কাজ হেচ, num2-এর
int main()
মান 0 িদেয় োদেখা কী হয়। চতুথর কাজিট হেচ printf ফাংশেনর োভতের ডবল
{ োকােটশেনর োভতের োযই +, -, *, / িচহ আেছ োসগেলা সরাসির বযবহার না কের
char ch; একিট char টাইপ োভিরেয়বেল োরেখ তারপর বযবহার করা। চারিট কাজ
printf("Enter the first letter of your name: ");
িঠকমেতা করার পের িনেচর োপাগামিট োদেখা:
ch = getchar();
printf("The first letter of your name is: %cn",
ch); #include <stdio.h>
return 0;
} int main()
োপাগাম: ২.১৩ {
int num1, num2, value;
18. char sign; কমাইল ও রান হেব।
printf("Please enter a number: ");
#include <stdio.h>
scanf("%d", &num1);
printf("Please enter another number: ");
int main()
scanf("%d", &num2);
{
// test program comment 1
value = num1 + num2;
printf("Hello ");
sign = '+';
/* We have printed Hello,
printf("%d %c %d = %dn", num1, sign, num2,
now we shall print World.
value);
Note that this is a multiline comment */
printf("World"); // printed world
value = num1 num2;
sign = '';
return 0;
printf("%d %c %d = %dn", num1, sign, num2,
}
value);
োপাগাম: ২.১৬
value = num1 * num2;
sign = '*'; এবাের একিট পশ, (োযিট িস-এর োটকট বইেয় এই চযাপােরর শরেতই বেল
printf("%d %c %d = %dn", num1, sign, num2, িদত), োভিরেয়বলগেলার নামকরেণর িনয়মকানন কী? োভিরেয়বেলর নাম এক বা
value);
একািধক অকেরর হেত পাের, অকরগেলা হেত পাের a োথেক z, A োথেক Z, 0
value = num1 / num2; োথেক 9 এবং _ (আনডারেসার বা আনডারবার)। তেব একািধক অকেরর োকেত
sign = '/'; পথম অকরটা অঙ (িডিজট) হেত পারেব না। তুিম একিট োপাগােম int 7d; িলেখ
printf("%d %c %d = %dn", num1, sign, num2,
value); োদেখা কমাইলার কী বেল। আর োভিরেয়বেলর নামগেলা অথরপূণর হেল ভােলা
হয়। োযমন, োযাগফল রাখার জন োভিরেয়বেলর নাম sum হেলই ভােলা, যিদও y
return 0; নাম িদেলও োপাগাম চেল। অথরপূণর নাম িদেল বুঝেত সিবধা হয়, োভিরেয়বলটা কী
}
উেদেশ বযবহার করা হেয়েছ।
োপাগাম: ২.১৫
োপাগামিট োদখেলই বুঝেত পারেব কী কাজ কের। তেব শধু োদেখ বুঝেলই হেব
না। োকাড কের কমাইল ও রান কেরা।
িস লযাঙুেয়েজ আরও োবশ িকছু ডাটা টাইপ রেয়েছ। ইনপুট ও আউটপুেটর জনও
রেয়েছ নানা পদিত, যা োতামরা আেস আেস িশখেব (সব হয়েতা এ বইেয় থাকেব
না, িস-এর অন বই পড়েল জানেত পারেব)। আপাতত যা িশেখছ, তা িদেয়ই
োতামরা অেনক োপাগাম িলেখ োফলেত পারেব।
এখন একিট মজার এবং দরকাির িজিনস বেল রািখ। োপাগােমর োকােডর োভতের
তুিম িনেজর ভাষাও বযবহার করেত পােরা। এিটেক বেল কেমনট (comment)
করা। কমাইলার কেমনটগেলােক োপাগােমর অংশ ধরেব না। এক লাইেনর
কেমনট হেল // িচহ িদেয় কেমনট শর করেত পােরা। আর একািধক লাইন থাকেল
/* িদেয় শর এবং */ িদেয় োশষ করেত হেব। িনেচর োপাগামিট িকন িঠকঠাক
19. অধযায় িতনঃ কিনডশনাল লিজক োভতের। if-এর োভতের োযই কিনডশনটা আেছ োসিট যিদ িমথযা হয়, তেব else-
এর োভতেরর (িদতীয় বননীর োভতের) অংেশর কাজ হয়। সব োপাগািমং
োতামরা অেনেকই হয়েতা জােনা োয 'চাচা োচৌধুরীর বুিদ কিমউটােরর োচেয়ও লযাঙুেয়েজই এিট আেছ, তেব িলখার ধরন হয়েতা আলাদা।
পখর'! এিট শেন পথম পথম চাচা োচৌধুরীর ওপর ভিক-শদা অেনক োবেড় োগেলও
একটু িচনা করেলই োতামরা বুঝেত পারেব োয আসেল োতামােদর সবার বুিদ এখন আমােদর োদখেত হেব, কিনডশনগেলা কীভােব িলখেত হেব? োতামরা
কিমউটােরর োচেয় পখর। আসেল কিমউটােরর োতা োকােনা বুিদই োনই। এতকেণ োজেন োগছ োয 'বড় িকংবা সমান' এই তুলনা করার জন >= িচহ
োপাগামাররা োযভােব োপাগাম িলেখ োদয় কিমউটার োসভােব কাজ কের। এখন বযবহার করা হয়। 'োছাট িকংবা সমান'-এর জন বযবহার কের <= িচহ। দিট
আমরা োপাগািমংেয়র সহজ অথচ খুব গরতপূণর একিট িবষয় িশখব। োসিট হেচ সংখযা একিট আেরকিটর সমান িক না োসিট পরীকার জন বযবহার কের == িচহ
কিনডশনাল লিজক। োকান শেতর কী করেত হেব োসিট োপাগাম িলেখ কিমউটারেক (লক কেরা এখােন দিট সমান িচহ আেছ। শরর িদেক অেনেকই সমান িক না
োবাঝােত হেব। কথা না বািড়েয় আমরা োপাগাম োলখা শর কের িদই। োতামরা পরীকার জন ভুল কের = (একিট সমান িচহ যা িদেয় আসেল োকােনা
িকন অবশই পিতিট োপাগাম কিমউটাের চািলেয় োদখেব। োভিরেয়বেল োকােনািকছু অযাসাইন করা হয়) বযবহার কের িবপেদ পেড় যায়)।
দিট সংখযা পরসর অসমান িক না, এিট পরীকার জন != িচহ বযবহার কের।
#include <stdio.h> আর োছাট িকংবা বড় পরীকার জন < আর > িচহ বযবহার করেত হয়। আরও
বযাপার-সাপার আেছ। একবাের সব না িশেখ চেলা আেস আেস োপাগাম িলেখ
int main()
{ োশখা যাক। এখােন ইেনডেনটশেনর বযাপারিটও িকন োখয়াল োকােরা। if িকংবা
int n; else-এর োভতেরর বেকর সব লাইন িকন if বা else োযখােন শর, তার চার ঘর
(চারিট োসস) ডান োথেক শর হেয়েছ।
n = 10;
আমরা ওপেরর োপাগামিট এভােবও িলখেত পারতাম:
if(n >= 0) {
printf("The number is positiven"); #include <stdio.h>
}
else { int main()
printf("The number is negativen"); {
} int n;
n = 10;
return 0;
} if(n < 0) {
োপাগাম: ৩.১ printf("The number is negativen");
}
else {
ওপেরর োপাগামিটর কাজ কী? n-এর িবিভন মান (োযমন: 0, -10, -2, 5, 988 printf("The number is positiven");
ইতযািদ) বিসেয় োতামরা োপাগামিট চালাও। োদখা যােচ োয এর কাজ হেচ n }
ধনাতক (positive) না ঋণাতক (negative) োসিট িনণরয় করা। োকান সংখযা
return 0;
ধনাতক হেত োগেল একিট শতর পূরণ করেত হয়। োসিট হেচ তােক শূেনর সমান }
বা তার োচেয় বড় হেত হয়। তাহেল আমােদর লিজকিট দঁাড়ােচ এ রকম োয, 'n োপাগাম: ৩.২
যিদ শূেনর সমান বা বড় হয়, তেব n ধনাতক, না হেল n ঋণাতক'। এই
বযাপারিট িস লযাঙুেয়েজ পকাশ করেত হয় if এবং তার সেঙ else বযবহার কের। এখােন আমরা পথেম পরীকা কেরিছ োয n শূেনর োচেয় োছাট িক না। যিদ োছাট
if-এর োভতর একিট শতর (কিনডশন) িলেখ িদেত হয় যা সিতয হেলই োকবল তার হয়, তেব n োনেগিটভ; আর োসিট না হেল (োসিট না হওয়া মােন n অবশই শূেনর
োভতেরর অংেশর কাজ হয় (মােন if-এর পর োয িদতীয় বননী { } বযবহার করা সমান বা বড়) n পিজিটভ।
হেয়েছ তার োভতেরর সব কাজ)। আর কিনডশনটা িলখেত হয় পথম বননীর
20. োতামােদর মেধয যারা একটু খুঁতখুঁেত সভােবর, তারা িনশয়ই ভাবছ োয শূন োতা int n = 10;
আসেল পিজিটভ বা োনেগিটভ োকােনাটাই না। শূেনর োচেয় বড় সব সংখযা হেচ if(n < 0) {
পিজিটভ আর োছাট সব সংখযা হেচ োনেগিটভ। কিমউটারেক োসিট োবাঝােত printf("The number is negativen");
োগেল আমরা িনেচর োপাগামিট িলখেত পাির: }
else if (n > 0) {
printf("The number is positiven");
#include <stdio.h>
}
else {
int main()
printf("The number is zero!n");
{
}
int n = 10;
return 0;
if(n < 0) {
}
printf("The number is negativen");
} োপাগাম: ৩.৪
else if (n > 0) {
printf("The number is positiven"); আবার সব সময় োয if বযবহার করেলই সেঙ else িকংবা else if বযবহার করেত
} হেব, এমন োকােনা কথা োনই। িনেচর োপাগামিট োদেখা:
else if (n == 0) {
printf("The number is zero!n");
} #include <stdio.h>
return 0; int main()
} {
int number = 12;
োপাগাম: ৩.৩
if(number > 10) {
োপাগামিট একটু বযাখযা করা যাক: printf("The number is greater than tenn");
if(n < 0): এখােন আমরা পথেম পরীকা কেরিছ n শূেনর োচেয় োছাট িক না । }
return 0;
োছাট হেল োতা কথাই োনই। আমরা বেল িদিচ োয সংখযািট োনেগিটভ। }
else if(n > 0): আর যিদ োছাট না হয়, তেব n শূেনর োচেয় বড় িক না োসিট োপাগাম: ৩.৫
পরীকা কেরিছ if(n > 0)। এই শতর সিতয হেল সংখযািট পিজিটভ।
else if(n == 0): আর n > 0 ও যিদ সিতয না হয় তেব োকান শতরিট বাদ রইল? এখােন োকবল োদখা হেচ োয সংখযািটর মান িক দেশর োচেয় বড় িক না।
দিট সমান িক না োসিট পরীকা করা। তাহেল আমরা পরীকা করিছ োয n শূেনর
সমান িক না এবং সমান হেল বেল িদিচ োয এিট শূন। িনেচর োপাগামিট োদেখ বেলা োতা আউটপুট কী হেব?
দিট সংখযা তুলনা করার সময় পথমটা যিদ িদতীয়িটর োচেয় বড় না হয়, োছাটও না #include <stdio.h>
হয়, তেব তারা অবশই সমান। তাই তৃতীয় কিনডশনটা আসেল আমােদর দরকার
int main()
োনই। আমরা পথম দিট কিনডশন িমথযা হেলই বেল িদেত পাির োয n-এর মান {
শূন। int n = 10;
if (n < 30) {
#include <stdio.h>
printf("n is less than 30.n");
}
int main()
else if(n < 50) {
{