ক িম উ টা র োপা গা িমং                        
কিমউটার োপাগািমং তািমম শাহ‍্‍িরয়ার সিবন
কিমউটার োপাগািমংতািমম শাহ‍্‍িরয়ার সিবনগনসত : এ পুসক সৃজনী সাধারণ লাইেসেনর আওতায় পকািশত। অবািণিজযকউেদেশ এর অংশ িবেশষ ফেটাকি...
ভূ ি মকাকিমউটােরর জন হেয়িছল কিমউট বা িহসাব করার জন। এখন কিমউটােরমানষ গান োশােন, িসেনমা োদেখ, িচিঠ োলেখ, োফসবুক কের, ইনটারে...
োলখেকর কথা                                                              সূ ি চপতগিণত অিলিময়ােডর ভলািনটয়ার হবার কারেণ সুল-ক...
অধযায় শূ ন ঃ শরর আেগ                                    আমরা বিল োকািডং করা। এেকক ধরেনর কােজর জন এেকক লযাঙুেয়জ োবিশ       ...
পােরা। এিট একিট িফ ও ওেপন োসাসর IDE   (Integrated   Development                        অধযায় একঃ পথম োপাগামEnvironment)  এ...
ছিব ১.২                               ছিব ১.৪ছিব ১.৩                               ছিব ১.৫          এবার No বাটেন িকক করেব...
এখন File োমন োথেক New File সাবেমনেত িগেয় Empty File­এ িকক কেরা।                                                           ...
িনেচর ছিবেত োদেখা ফাইেলর নাম হেচ hello.c। িস োপাগােমর সব ফাইেলর   োতামরা হয়েতা িচনা করছ,  আিম এই িহিজিবিজ কী িলখলাম?  আেস ...
োপাগােমর পেরর লাইন োখয়াল কেরা:   printf("Hello   World");  এিট একিট                                                       ...
অধযায় দইঃ ডাটা টাইপ , ইনপু ট ও আউটপু ট                                                               এ অধযােয় আমরা িকছু োছ...
কাজিটেক বেল োভিরেয়বল িডকােরশন। আর int  হেচ ডাটা টাইপ,  োযিট োদেখ       {                                                  ...
কী মেন হয়?  আউটপুট 1  নািক 2?  আউটপুট হেব 1,  কারণ পথেম                #include <stdio.h>কমাইলার োদখেব,  x­এর মান 1  অযাসা...
    printf("Value of n is %dn", n);                                 পরপর এতগেলা printf­এর কারেণ োতামার কিমউটােরর িসেন িনশয়...
োপাগামিট কমাইল এবং রান কেরা। আউটপুট হেব িনেচর দই লাইন:             োতামরা িনশয়ই scanf ফাংশেনর বযবহার িশেখ োফেলছ। scanf("%d...
কাজ না কের সামেন আগােনা যােব না। মেন রাখেব, গািড় চালােনা োশখার জন   এিট রান করাও। আেগর োপাগামিটর মেতা একই কাজ করেব। getcha...
    char sign;                                                    কমাইল ও রান হেব।    printf("Please enter a number: ");  ...
অধযায় িতনঃ কিনডশনাল লিজক                             োভতের। if-এর োভতের োযই কিনডশনটা আেছ োসিট যিদ িমথযা হয়, তেব else-     ...
োতামােদর মেধয যারা একটু খুঁতখুঁেত সভােবর, তারা িনশয়ই ভাবছ োয শূন োতা       int n = 10;                                    ...
Programming book sample
Programming book sample
Programming book sample
Upcoming SlideShare
Loading in …5
×

Programming book sample

449 views
333 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
449
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Programming book sample

  1. 1.  ক িম উ টা র োপা গা িমং                        
  2. 2. কিমউটার োপাগািমং তািমম শাহ‍্‍িরয়ার সিবন
  3. 3. কিমউটার োপাগািমংতািমম শাহ‍্‍িরয়ার সিবনগনসত : এ পুসক সৃজনী সাধারণ লাইেসেনর আওতায় পকািশত। অবািণিজযকউেদেশ এর অংশ িবেশষ ফেটাকিপ বা পুনমুরদণ করা যােব।পথম পকাশ : োফবয়াির ২০১১তামিলিপ - ১৫০পিরচালকতাসেনাভা আিদবা োসঁজুিত উৎসগরপকাশকএ োক এম তািরকল ইসলামতামিলিপ আমার মা ও বাবােক৩৮/২ক, বাংলাবাজার, ঢাকা–১১০০পচদমিশউর রহমানমু দ ণএম আর িপিনটং োপস১১ পযারীদাস োরাড, ঢাকা–১১০০মূ ল য: ১৮০.০০COMPUTER PROGRAMMINGby Tamim Shahriar (Subeen)First Published : February 2011, by A K M Tariqul IslamDirector: Tasnova Adiba Shanjute, Tamralipi, 38/2ka, Banglabazar,Dhaka–1100Price : 180.00ISBN : 984-70096-0150-7
  4. 4. ভূ ি মকাকিমউটােরর জন হেয়িছল কিমউট বা িহসাব করার জন। এখন কিমউটােরমানষ গান োশােন, িসেনমা োদেখ, িচিঠ োলেখ, োফসবুক কের, ইনটারেনট ঘঁাটাঘঁা িটকের এমনিক চুিরচামাির পযরন কের িকন িহসাব কের না! অথচ কিমউটােরকিমউট করার মেতা আনন আর িকছুেত নয়, োসিট করার জন োযিট জানাদরকার, োসিট হেচ একটুখািন োপাগািমং।ইউিনভািসরিটেত বা বড় বড় িশকাপিতষােন োপাগািমং োশখােনা হয় িকন সুল -কেলেজর োছেলেমেয়রাও োয খুব সহেজ োপাগািমং করেত পাের, োসিট অেনেকইজােন না। আিম অেনক িদন োথেকই ভাবিছলাম, সুেলর োছেলেমেয়েদর জনএরকম একিট বই িলিখ; িকন িকছুেতই সময় কের উঠেত পারিছলাম না।িঠক এরকম সময় আমার ছাত সিবেনর এই পাণুিলিপিট আমার োচােখ পেড়েছ।আিম অবাক হেয় লক করলাম, আিম োয িজিনসিট করেত োচেয়িছলাম সিবন িঠকোসিটই কের োরেখেছ! সুল-কেলেজর োছেলেমেয়েদর জন একিট োপাগািমংেয়রবই িলেখেছ, খুব সহজ ভাষায়, খুব সনর কের গিছেয়।আিম তার এই চমৎকার বইিটর সাফলয কামনা কির। োছেলেমেয়রা গান োশানা,িসেনমা োদখা, িচিঠ োলখা, োফসবুক করা, ইনটারেনট ঘঁাটাঘঁা িট করার পাশাপািশআবার কিমউটােরর মূল জায়গায় িফের আসক – োসই পতযাশায় থাকলাম। মু হ মদ জাফর ইকবাল
  5. 5. োলখেকর কথা সূ ি চপতগিণত অিলিময়ােডর ভলািনটয়ার হবার কারেণ সুল-কেলেজর অেনক োছেলেমেয়র শরর আেগসােথ আমার পিরচয় আেছ এবং তারা পায়ই আমার কােছ জানেত চায় োয পথম োপাগামোপাগািমং োশখার জন োকান বই পড়েব? তােদর জনই বইিট োলখা। তেব ডাটা টাইপ, ইনপুট ও আউটপুটভািসরিটেতও অেনকেক আিম োদেখিছ, োপাগািমংেয়র ইংেরিজ বই পড়েত সাচনয কিনডশনাল লিজকোবাধ কের না, তাই পথম বেষর োপাগািমংেয় িপিছেয় পেড় এবং োসই দবরলতা লুপ (Loop)কািটেয় ওঠার সেযাগ পায় না। আিম িনিশত োয তারা যিদ োকান বাংলা বই িদেয় একটুখািন গিণতশর করত তেব আেরা ভােলা োপাগামার হেত পারত। যারা জীবেন পথমবােরর অযােরমেতা োপাগািমং িশখেব তােদর জন বইিট উপেযাগী। কাশ নাইন ও তার ওপেরর ফাংশনকােসর ছাতছাতীেদর বইিট পড়েত োকান সমসা হওয়ার কথা নয়। বইেত িস বাইনাির সাচরোপাগািমং লযাঙুেয়জ বযবহার করা হেয়েছ। তেব এিট আসেল োপাগািমং িসং (String)লযাঙুেয়েজর োকােনা বই নয়, বরং োপাগািমংেয়র োমৌিলক ধারনাগেলার ওপর োমৌিলক সংখযাোজার োদওয়া হেয়েছ যােত ভােলা োপাগামার হওয়ার জন শক িভিত ৈতির হয়। আবারও অযাের বাইনাির সংখযা পদিতবইিট োলখায় অেনেকই আমােক নানাভােব সাহাযয কেরেছন তােদর গরতপূণর িকছু োপাগািমং সমসামতামত ও উৎসাহ িদেয় এবং িবিভন ধরেনর ভুল ধিরেয় িদেয়। যােদর নাম এ োশেষর শরমুহূেতর না বলেলই নয়, তঁারা হেচন, জাফর ইকবাল সার, মুিনর হাসান,শাহ‍্‍িরয়ার মঞুর, মিনকা আকবর, োমাসািফজুর রহমান, ওমর োশহাব, োতৌিহদল পিরিশষ ১: োপাগািমং পিতেযািগতাইসলাম, রহল আিমন, মাহমুদর রহমান, সািবর ইউসফ, তানভীরল ইসলাম, পিরিশষ ২: োপাগািমং কযািরয়ারমানযুরর রহমান খান, তাসিকনর হাসান, রাইয়ান কামাল, আিসফ সােলিকন, পিরিশষ ৩: বই ও ওেয়বসাইেটর তািলকাআনা ফািরহা, নািফজ ইশিতয়াক, আিবরল ইসলাম, বােয়িজদ ভুইয়া, আইয়ুব ঁসরকার ও আলমগীর োহােসন।এ বইিটর বযাপাের োকােনা পরামশর িকংবা মতামত জানােত ইেমইল করেতপােরন book@subeen.com িঠকানায়। তািমম শাহ‍্‍ ি রয়ার সিবন
  6. 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. 7. পােরা। এিট একিট িফ ও ওেপন োসাসর IDE   (Integrated   Development  অধযায় একঃ পথম োপাগামEnvironment)  এবং মযাক আর িলনােকও চেল। এমিনেত সাধারণ োকােনাোটকট এিডটর (োযমন: োনাটপযাড, িজএিডট, োকরাইট) বযবহার কের োকাড িলেখ োপাগািমংেয়র জগেত সাগতম।োসিট কমাইলার িদেয় কমাইল কের রান করা যায়। তেব অিধকাংশ আইিডই(IDE) গেলােতই িনজস োটকট এিডটর ও কমাইলার থােক। োপাগাম রান করার আমরা এখন একিট োপাগাম িলেখ োফলব,  োযিট োতামার কিমউটােরর িসেনবযবসাও থােক। এ ছাড়াও নানা ধরেনর টুলস থােক। Hello World োদখােব বা িপনট করেব। এিট হেচ োপাগািমংেয়র একিট ঐিতহ। পৃিথবীর অিধকাংশ োপাগামারই জীবেনর পথম োপাগাম িহেসেব এিট োলেখ।Codeblocks টা সরাসির তুিম http://www.codeblocks.org  সাইট োথেকডাউনেলাড ও ইনসল করেত পােরা। Downloads  োপইেজ Binaries­এ োগেল আিম এই বইেয়র োপাগামগেলা চালােনার জন Codeblocks  বযবহার করব।উইেনডােজর জন তুিম দিট অপশন োদখেব:  codeblocks­10.05­setup.exe  ও তেব োতামরা অন িকছু বযবহার করেলও োকােনা সমসা োনই, সবগেলােত কােজরcodeblocks­10.05mingw­setup.exe। তুিম িদতীয়িট ডাউনেলাড করেব (74.0  ধারা োমাটামুিট একই রকম।MB)। আর ইনসল করার কাজিট অন োযেকােনা সফটওয়যার বা োগমেসরমেতাই। যারা উবুনটু বযবহার কেরা,  তারা Ubuntu   Software   Center  এখন চেলা োকাডবকস ইনসল করা যাক। বইেয়র সেঙ োযই িসিড আেছ োসখােন(Applications > Ubuntu Software Center)  োথেক এিট ডাউনেলাড করেত তুিম ইনসলার পােব। তারপর ইনসলারিট ডবল িকক কেরা এবং িনেচরপােরা। ছিবগেলা অনসরণ কেরা।োপাগািমং চচরার িবষয়। ইনটারেনেট োবশ িকছু ওেয়বসাইট আেছ,  োযখােন পচুরসমসা োদওয়া আেছ োযগেলা োপাগােমর সাহােযয সমাধান করেত হয়। সবজায়গােতই তুিম িস লযাঙুেয়েজ োপাগািমং করেত পারেব। এর মেধয িকছু িকছুওেয়বসাইট আবার িনয়িমত োপাগািমং পিতেযািগতারও আেয়াজন কের। এসবপিতেযািগতায় অংশগহণ িনঃসেনেহ োতামার োপাগািমং­দকতা বৃিদ করেব আরোসই সেঙ িবেশর নানা োদেশর োপাগামারেদর সেঙ োমশারও সেযাগ কের োদেব।অবশ োপাগািমং পিতেযািগতায় ভােলা করেত হেল োকবল োপাগািমং জানেলইচলেব না,  গািণিতক দকতাও যেথষ গরতপূণর। পিরিশষ অংেশ োপাগািমংপিতেযািগতা িনেয় আলাপ করব।বইেয়র পিতিট োপাগােমর িনেচ আিম একিট নমর িদেয়িছ। োপাগােমর নমর যিদ২.৫ হয়, তার মােন হেচ এিট িদতীয় অধযােয়র পঁাচ নমর োপাগাম।এিট িকন োকােনা গেলর বই নয়। তাই িবছানায় শেয়­বেস পড়া যােব না। বইিটপড়ার সময় কিমউটার চালু রাখেত হেব এবং পিতিট উদাহরণ সেঙ সেঙোপাগাম িলেখ োদখেত হেব,  োকােনা সমসা সমাধান করেত িদেল তখনই োসিটসমাধােনর োচষা করেত হেব। মেন রাখেব, যত োবিশ োপাগািমং তত োবিশ আনন। ছিব ১.১আশা করিছ,  তুিম ৈধযর িনেয় বািক অধযায়গেলা পড়েব এবং সবগেলা োপাগামকিমউটাের চািলেয় োদখেব। োতামার জন শভ কামনা।
  8. 8. ছিব ১.২ ছিব ১.৪ছিব ১.৩ ছিব ১.৫ এবার No বাটেন িকক করেব (ছিব ১.৫)।
  9. 9. এখন File োমন োথেক New File সাবেমনেত িগেয় Empty File­এ িকক কেরা। িনেচর ছিবর (১.৮) মেতা উইেনডা আসেব।  ছিব ১.৬ ছিব ১.৮ইনসল হেয় োগল। এখন উইেনডােজর Start  োমনেত Programs­এ িগেয়Codeblocks  চালু কেরা। উবুনটুেত এিট থাকেব Applications   > Programming­এর োভতর। এখন োতামরা োপাগামগেলা রাখার জন হাডরিডেসর োভতর একিট োফালার ৈতির কের নাও। ওই োফালাের ফাইলগেলা োসভ (Save)  করেব। ফাইেলর োযেকােনা একিট নাম দাও। আর Save as type হেব C/C++ files (ছিব ১.৯)। ছিব ১.৭এখােন (ছিব ১.৭) োতামরা Show tips at startup োচকবেকর িটক (tick) িচহিট ছিব ১.৯উিঠেয় িদেত পােরা।
  10. 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. 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. 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. 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. 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. 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. 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.7E­308 (1.7 x 10­308) োথেক 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. 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, num1­num2);    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-এর মেধযকার োযাগ, িবেয়াগ, গণ, ভােগর কাজিট printfchar টাইেপর ডাটা িরড করা যায়। িনেচর োপাগামিট োদেখা: ফাংশেনর োভতের না কের আেগ করা এবং মানিট অন একিট োভিরেয়বেল োরেখ োদওয়া। এর জন একিট োপাগাম িলেখ োফেলা। িদতীয় কাজ হেচ োপাগামিট#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. 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 multi­line 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. 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. 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) {{ 

×