You are on page 1of 442

for more videos https://youtube.

com/annaaba

িসিপিপ পিরগণনা
c++ programming

১ম খ ড বাংলা (English)
২য় খ ড English (বাংলা)

5g
in
am
al

িনউটন মু. আ. হািকম

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

সূচীপ

১ বাংলা (English) ১

১ িসিপিপেত মেলখ রচনা (Writing c++ Programs) ৩


১.১ হয়মান ম পািত (Online Software) . . . . . . . . . . . . . . . . . ৩
১.২ নয়মান ম পািত (Offline Software) . . . . . . . . . . . . . . . . ৭

২ মেলখেয়র কাঠােমা (Program Structure)


২.১ 5g
১.৩ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . .

েভ া বাতার মেলখ (Wishing Program) . . . . . .


২.২ নাম-ধাম-বৃ াে র মেলখ (Detailing Program) . . . .
.
.
.
.
.
.
.
.
.
.
.
.
১০

১৩
১৩
১৫
in
২.৩ মেলখেত টীকা িলখন (Writing Program Comments) . . . . . . ১৬
২.৪ মেলখেত ফাঁকা দওয়া (Spacing and Indentation) . . . . . . . . ১৮
২.৫ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ২০
২.৬ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ২৩
am

৩ চলক ও বক (Variables and Constants) ২৫


৩.১ চলেকর ব বহার (Using Variables) . . . . . . . . . . . . . . . . . ২৫
৩.২ বেকর ব বহার (Using Constants) . . . . . . . . . . . . . . . . ২৮
৩.৩ চলক ঘাষনা (Variable Declarations) . . . . . . . . . . . . . . . ৩০
৩.৪ আিদমান আেরাপণ (Initial Assignment) . . . . . . . . . . . . . . ৩১
al

৩.৫ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ৩৩


৩.৬ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ৩৬

৪ শনা েকর নামকরণ (Naming Identifiers) ৩৭


৪.১ গিঠত নাম (Well-formed Names) . . . . . . . . . . . . . . . . ৩৭
৪.২ অথেবাধক নাম (Meaningful Names) . . . . . . . . . . . . . . . ৩৮
৪.৩ িলিপ সংেবদনশীলতা (Case Sensitivity) . . . . . . . . . . . . . . . ৩৯
৪.৪ সংরি ত ও চািব শ (Reserved & Key Words) . . . . . . . . . . ৪০
৪.৫ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ৪২
৪.৬ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ৪৪

৫ যাগান ও আেরাপণ (Input and Assignment) ৪৫


৫.১ উপা যাগান (Data Input) . . . . . . . . . . . . . . . . . . . . . ৪৫
৫.২ যাগান যাচনা (Input Prompt) . . . . . . . . . . . . . . . . . . . ৪৮
৫.৩ মান আেরাপণ (Value Assignment) . . . . . . . . . . . . . . . . ৫০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৪ মান অদল-বদল (Value Swapping) . . . . . . . . . . . . . . . . . ৫১


৫.৫ আেরাপেণর বাম ও ডান (Assignment Left and Right) . . . . . . . ৫৩
৫.৬ আ -শরন আেরাপণ (Self-Referential Assignment) . . . . . . . ৫৪
৫.৭ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ৫৫
৫.৮ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ৫৮

৬ গািণিতক ি য়াকরণ (Mathematical Processing) ৫৯


৬.১ এিকক অণুি য়া (Unary Operators) . . . . . . . . . . . . . . . . ৫৯
৬.২ িয়ক অণুি য়া (Binary Operators) . . . . . . . . . . . . . . . . ৬০
৬.৩ ভাগফল ও ভাগেশষ (Division and Remainder) . . . . . . . . . . ৬১
৬.৪ আেরাপণ অণুি য়া (Assignment Operator) . . . . . . . . . . . . ৬৪
৬.৫ যৗিগক আেরাপণ (Compound Assignment) . . . . . . . . . . . . ৬৫
৬.৬ াস ও বৃি অণুি য়া (Increment and Decrement) . . . . . . . . ৬৬
৬.৭ িবিত অণুি য়া (Comma Operator) . . . . . . . . . . . . . . . . . ৬৮
৬.৮ অ গণ তার ম (Precedence Order) . . . . . . . . . . . . . . . ৬৯

5g
৬.৯ গািণিতক সম া (Mathematical Problems) . . . .
৬.১০ িশর নিথ cmath (Header File cmath) . . . . . . .
৬.১১ অ শীলনী সম া (Exercise Problems) . . . . . . .
৬.১২ গণনা পিরভাষা (Computing Terminologies) . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
৭১
৭২
৭৪
৮১
in
৭ শতািল পিরগণনা (Conditional Programming) ৮৩
৭.১ যিদ তাহেল নাহেল (If Then Else) . . . . . . . . . . . . . . . . . . ৮৩
৭.২ অ য়ী অণুি য়া (Relational Operators) . . . . . . . . . . . . . . ৮৫
am

৭.৩ যিদ-নাহেল মই (If-Else Ladder) . . . . . . . . . . . . . . . . . . ৮৭


৭.৪ অ াি যিদ-নাহেল (Nested If-Else) . . . . . . . . . . . . . . . . . ৮৮
৭.৫ ঝুল নাহেল (Dangling Else) . . . . . . . . . . . . . . . . . . . . ৯০
৭.৬ যৗিগক িববৃিত (Compound Statement) . . . . . . . . . . . . . . ৯২
৭.৭ িট শনা করণ (Error Detection) . . . . . . . . . . . . . . . . . ৯৪
৭.৮ বুলক সংেযাজক (Boolean Connectives) . . . . . . . . . . . . . . ৯৮
al

৭.৯ বুলক, পূণক, ভ ক (Boolean, Integer, Float) . . . . . . . . . . . ১০০


৭.১০ বুলক বীজগিণত (Boolean Algebra) . . . . . . . . . . . . . . . . ১০১
৭.১১ বুলক সমতুল (Boolean Equivalence) . . . . . . . . . . . . . . . ১০৪
৭.১২ সত ক সারণী (Truth Table) . . . . . . . . . . . . . . . . . . . . . ১০৫
৭.১৩ বুলক সরলীকরণ (Boolean Simplification) . . . . . . . . . . . . ১০৬
৭.১৪ মই, অ াি , সংেযাজক (Ladder,Nesting,Connectives) . . . . . . ১০৮
৭.১৫ যিদ-নাহেল অ লায়ন (If-Else Optimisation) . . . . . . . . . . . ১১১
৭.১৬ িতিনক অণুি য়া (Ternary Operator) . . . . . . . . . . . . . . . . ১১৩
৭.১৭ পি ব াপার (Switch Cases) . . . . . . . . . . . . . . . . . . . . ১১৫
৭.১৮ অ াি পি ব াপার (Nested Switch Cases) . . . . . . . . . . . . ১১৭
৭.১৯ পি ব াপার াি (Switch Cases Breaks) . . . . . . . . . . . . . ১২০
৭.২০ পি ব াপার যিদ-নাহেল (Swtich Cases If Else) . . . . . . . . . . . ১২২
৭.২১ ব াপীয় ও ানীয় চলক (Global & Local Variables) . . . . . . . . . ১২৩
৭.২২ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ১২৬
৭.২৩ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ১৪৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮ পুনািল পিরগণনা (Iterative Programming) ১৪৯


৮.১ জ ঘূণীর পুনরাবৃি (For Loop Repetition) . . . . . . . . . . . . ১৪৯
৮.২ জ ঘূণীর মহ া (For Loop Block) . . . . . . . . . . . . . . . . . ১৫২
৮.৩ পােকর সূচক ও পর রা (Loop Index and Succession) . . . . . . ১৫৪
৮.৪ ঘূণীেত াি র ব বহার (Using Breaks in Loops) . . . . . . . . . . ১৫৬
৮.৫ ঘূণীেত পাক িডঙােনা (Continue in Loops) . . . . . . . . . . . . . ১৫৯
৮.৬ জ ঘূণীেত ােসর ব বহার (For Loop and Decrement) . . . . . . ১৬০
৮.৭ জ ঘূণীেত ফাঁকা শত (For Loop Empty Condition) . . . . . . . . ১৬১
৮.৮ জ ঘূণীেত ফাঁকা হালায়ন (For Loop Empty Update) . . . . . . . ১৬৩
৮.৯ জ ঘূণীেত ফাঁকা িববৃিত (For Loop Empty Statement) . . . . . . ১৬৫
৮.১০ িববৃিত হালায়ন িমথি য়া (Statement and Update) . . . . . . . . ১৬৬
৮.১১ অদরকারী জ ঘূণী (Unnecessary For Loop) . . . . . . . . . . . ১৬৭
৮.১২ জ ঘূণীর সাধারণ ব বহার (General Purpose For Loop) . . . . . ১৬৯
৮.১৩ জ ঘূণীর নানান বাহার (For Loop Variations) . . . . . . . . . . . ১৭০

5g
৮.১৪ পূব শেতর ণ ঘূণী (Precondition in While Loop) . . .
৮.১৫ উ র শেতর কর ঘূণী (Post-condition in Do Loops) . . .
৮.১৬ আবার াি ও িডঙােনা (Break and Continue Again) . .
৮.১৭ ঘূণী যিদ িমথি য়া (Loop and If Interaction) . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
১৭২
১৭৪
১৭৬
১৭৭
in
৮.১৮ অ াি াধীন ঘূণী (Nested Independent Loops) . . . . . . . . . ১৮০
৮.১৯ অ াি িনভরশীল ঘূণী (Nested Dependent Loop) . . . . . . . . . ১৮২
৮.২০ গভীর অ াি ঘূণী (Deeply Nested Loops) . . . . . . . . . . . . . ১৮৪
am

৮.২১ অ াি ঘূণী াসকরণ (Deflating Nested Loops) . . . . . . . . . . ১৮৬


৮.২২ ছ েবেশর অ াি ঘূ্ণী (Nested Loop in Disguise) . . . . . . . . . ১৮৭
৮.২৩ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ১৮৯
৮.২৪ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ২১৩

২ English (বাংলা) ২১৫


al

৯ Program Writing in c++ (িসিপিপেত মেলখ রচনা) ২১৯


৯.১ Online Software (হয়মান ম পািত) . . . . . . . . . . . . . . . . . ২১৯
৯.২ Offline Software (নয়মান ম পািত) . . . . . . . . . . . . . . . . ২২৩
৯.৩ গণনা পিরভাষা (Computing Terminologies) . . . . . . . . . . . ২২৭

১০ Program Structure ( মেলখেয়র কাঠােমা) ২২৯


১০.১ Wishing Program ( েভ া বাতার মেলখ) . . . . . . . . . . . . ২২৯
১০.২ Detailing Program (নাম-ধাম-বৃ াে র মেলখ) . . . . . . . . . . ২৩১
১০.৩ Writing Program Comments ( মেলখেত টীকা িলখন) . . . . . . ২৩২
১০.৪ Spacing and Indentation ( মেলখেত ফাঁকা দওয়া) . . . . . . . . ২৩৪
১০.৫ Exercise Problems (অ শীলনী সম া) . . . . . . . . . . . . . . . ২৩৬
১০.৬ Computing Terminology (গণনা পিরভাষা) . . . . . . . . . . . . ২৩৯

১১ Variables and Constants (চলক ও বক) ২৪১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.১ Using Variables (চলেকর ব বহার) . . . . . . . . . . . . . . . . . ২৪১


১১.২ Using Constants ( বেকর ব বহার) . . . . . . . . . . . . . . . . ২৪৪
১১.৩ Variable Declarations (চলক ঘাষনা) . . . . . . . . . . . . . . . ২৪৬
১১.৪ Initial Assignment (আিদমান আেরাপণ) . . . . . . . . . . . . . . ২৪৭
১১.৫ Exercise Problems (অ শীলনী সম া) . . . . . . . . . . . . . . . ২৪৯
১১.৬ Computing Terminologies (গণনা পিরভাষা) . . . . . . . . . . . ২৫২

১২ Naming Identifiers (শনা েকর নামকরণ) ২৫৩


১২.১ Well-formed Names ( গিঠত নাম) . . . . . . . . . . . . . . . . ২৫৩
১২.২ Meaningful Names (অথেবাধক নাম) . . . . . . . . . . . . . . . ২৫৪
১২.৩ Case Sensitivity (িলিপ সংেবদনশীলতা) . . . . . . . . . . . . . . . ২৫৫
১২.৪ Reserved & Key Words (সংরি ত ও চািব শ ) . . . . . . . . . . ২৫৬
১২.৫ Exercise Problems (অ শীলনী সম া) . . . . . . . . . . . . . . . ২৫৮
১২.৬ Computing Terminologies (গণনা পিরভাষা) . . . . . . . . . . . ২৬০

5g
১৩ Input and Assignment ( যাগান ও আেরাপণ)
১৩.১ Data Input (উপা যাগান) . . . . . . . . . . . . . .
১৩.২ Input Prompt ( যাগান যাচনা) . . . . . . . . . . . .
১৩.৩ Value Assignment (মান আেরাপণ) . . . . . . . . .
১৩.৪ Value Swapping (মান অদল-বদল) . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
২৬১
২৬১
২৬৪
২৬৬
২৬৭
in
১৩.৫ Assignment Left and Right (আেরাপেণর বাম ও ডান) . . . . . . . ২৬৯
১৩.৬ Self-Referential Assignment (আ -শরন আেরাপণ) . . . . . . . ২৭০
১৩.৭ Exercise Problems (অ শীলনী সম া) . . . . . . . . . . . . . . . ২৭১
am

১৩.৮ Computing Terminologies (গণনা পিরভাষা) . . . . . . . . . . . ২৭৫

১৪ Mathematical Processing (গািণিতক ি য়াকরণ) ২৭৭


১৪.১ Unary Operators (এিকক অণুি য়া) . . . . . . . . . . . . . . . . ২৭৭
১৪.২ Binary Operators ( িয়ক অণুি য়া) . . . . . . . . . . . . . . . . ২৭৮
১৪.৩ Division and Remainder (ভাগফল ও ভাগেশষ) . . . . . . . . . . ২৭৯
al

১৪.৪ Assignment Operator (আেরাপণ অণুি য়া) . . . . . . . . . . . . ২৮২


১৪.৫ Compound Assignment ( যৗিগক আেরাপণ) . . . . . . . . . . . . ২৮৪
১৪.৬ Increment and Decrement ( াস ও বৃি অণুি য়া) . . . . . . . . ২৮৫
১৪.৭ Comma Operator (িবিত অণুি য়া) . . . . . . . . . . . . . . . . . ২৮৭
১৪.৮ Precedence Order (অ গণ তার ম) . . . . . . . . . . . . . . . ২৮৭
১৪.৯ Mathematical Problems (গািণিতক সম া) . . . . . . . . . . . . ২৮৯
১৪.১০ Header File cmath (িশর নিথ cmath) . . . . . . . . . . . . . . . ২৯০
১৪.১১ Exercise Problems (অ শীলনী সম া) . . . . . . . . . . . . . . . ২৯২
১৪.১২ Computing Terminologies (গণনা পিরভাষা) . . . . . . . . . . . ৩০০

১৫ Conditional Programming (শতািল পিরগণনা) ৩০১


১৫.১ If Then Else (যিদ তাহেল নাহেল) . . . . . . . . . . . . . . . . . . ৩০১
১৫.২ Relational Operators (অ য়ী অণুি য়া) . . . . . . . . . . . . . . ৩০৩
১৫.৩ If-Else Ladder (যিদ-নাহেল মই) . . . . . . . . . . . . . . . . . . ৩০৫
১৫.৪ Nested If-Else (অ াি যিদ-নাহেল) . . . . . . . . . . . . . . . . . ৩০৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৫ Dangling Else (ঝুল নাহেল) . . . . . . . . . . . . . . . . . . . . ৩০৮


১৫.৬ Compound Statement ( যৗিগক িববৃিত) . . . . . . . . . . . . . . ৩১০
১৫.৭ Error Detection ( িট শনা করণ) . . . . . . . . . . . . . . . . . ৩১৩
১৫.৮ Boolean Connectives (বুলক সংেযাজক) . . . . . . . . . . . . . . ৩১৭
১৫.৯ Boolean, Integer, Float (বুলক, পূণক, ভ ক) . . . . . . . . . . . ৩১৯
১৫.১০ Boolean Algebra (বুলক বীজগিণত) . . . . . . . . . . . . . . . . ৩২০
১৫.১১ Boolean Equivalence (বুলক সমতুল) . . . . . . . . . . . . . . . ৩২২
১৫.১২ Truth Table (সত ক সারণী) . . . . . . . . . . . . . . . . . . . . . ৩২৩
১৫.১৩ Boolean Simplification (বুলক সরলীকরণ) . . . . . . . . . . . . ৩২৫
১৫.১৪ Ladder, Nesting, Connective(মই, অ াি , সংেযাজক) . . . . . . . ৩২৭
১৫.১৫ If-Else Optimisation (যিদ-নাহেল অ লায়ন) . . . . . . . . . . . ৩২৯
১৫.১৬ Ternary Operator (িতিনক অণুি য়া) . . . . . . . . . . . . . . . . ৩৩১
১৫.১৭ Switch Cases (পি ব াপার) . . . . . . . . . . . . . . . . . . . . ৩৩৩
১৫.১৮ Nested Switch Cases (অ াি পি ব াপার) . . . . . . . . . . . . ৩৩৫
১৫.১৯ Switch Cases Breaks (পি ব াপার াি ) . . . . . . . . . . . . . ৩৩৮

5g
১৫.২০ Swtich Cases If Else (পি ব াপার যিদ-নাহেল) . . . . .
১৫.২১ Global & Local Variables (ব াপীয় ও ানীয় চলক) . . .
১৫.২২ Exercise Problems (অ শীলনী সম া) . . . . . . . . .
১৫.২৩ গণনা পিরভাষা (Computing Terminologies) . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
৩৪০
৩৪১
৩৪৫
৩৬৬
in
১৬ Iterative Programming (পুনািল পিরগণনা) ৩৬৯
১৬.১ For Loop Repetition (জ ঘূণীর পুনরাবৃি ) . . . . . . . . . . . . ৩৬৯
১৬.২ For Loop Block (জ ঘূণীর মহ া) . . . . . . . . . . . . . . . . . ৩৭২
am

১৬.৩ Loop Index and Succession (পােকর চক ও পর রা) . . . . . . ৩৭৪


১৬.৪ Using Breaks in Loops (ঘূণীেত াি র ব বহার) . . . . . . . . . . ৩৭৬
১৬.৫ Continue in Loops (ঘূণীেত পাক িডঙােনা) . . . . . . . . . . . . . ৩৭৯
১৬.৬ For Loop and Decrement (জ ঘূণীেত ােসর ব বহার) . . . . . . ৩৮০
১৬.৭ For Loop Empty Condition (জ ঘূণীেত ফাঁকা শত) . . . . . . . . ৩৮২
al

১৬.৮ For Loop Empty Update (জ ঘূণীেত ফাঁকা হালায়ন) . . . . . . . ৩৮৩


১৬.৯ For Loop Empty Statement (জ ঘূণীেত ফাঁকা িববৃিত) . . . . . . ৩৮৫
১৬.১০ Statement and Update (িববৃিত হালায়ন িমথি য়া) . . . . . . . . ৩৮৭
১৬.১১ Unnecessary For Loop (অদরকারী জ ঘূণী) . . . . . . . . . . . ৩৮৮
১৬.১২ General Purpose For Loop (জ ঘূণীর সাধারণ ব বহার) . . . . . ৩৮৯
১৬.১৩ For Loop Variations (জ ঘূণীর নানান বাহার) . . . . . . . . . . . ৩৯০
১৬.১৪ Precondition in While Loop (পূব শেতর ণ ঘূণী) . . . . . . . . ৩৯২
১৬.১৫ Post-condition in Do Loops (উ র শেতর কেরা ঘূণী) . . . . . . . ৩৯৪
১৬.১৬ Break and Continue Again (আবার াি ও িডঙােনা) . . . . . . . ৩৯৬
১৬.১৭ Loop and If Interaction (ঘূণী যিদ িমথি য়া) . . . . . . . . . . . ৩৯৮
১৬.১৮ Nested Independent Loops (অ াি াধীন ঘূণী) . . . . . . . . . ৪০১
১৬.১৯ Nested Dependent Loop (অ াি িনভরশীল ঘূণী) . . . . . . . . . ৪০৩
১৬.২০ Deeply Nested Loops (গভীর অ াি ঘূণী) . . . . . . . . . . . . . ৪০৫
১৬.২১ Deflating Nested Loops (অ াি ঘূণী াসকরণ) . . . . . . . . . . ৪০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২২ Nested Loop in Disguise (ছ েবেশর অ াি ঘূ্ণী) . . . . . . . . . ৪০৮


১৬.২৩ অ শীলনী সম া (Exercise Problems) . . . . . . . . . . . . . . . ৪০৯
১৬.২৪ Computing Terminologies (গণনা পিরভাষা) . . . . . . . . . . . ৪২৯

িফিরি তািলকা

২.১ েভ া জানােনার মেলখ (Wishing Program) . . . . . . . . . . . ১৪


২.২ নাম-ধাম-বৃ াে র মেলখ (Detailing Program) . . . . . . . . . . ১৫
২.৩ মেলখেত টীকা লখন (Commenting in Programs) . . . . . . . ১৭
২.৪
২.৫
২.৬
৩.১
৩.২
5g
মেলখেত ফাঁকা দওয়া (Spacing in Programs) . . . . . . . . . .
অণুে রণার মেলখ (Inspiring Programming) . . . . . . . . . .
নকশা আঁকার মেলখ (Program Drawing Designs) . . . . . . . .
মেলখেত চলেকর ব বহার (Variables in Programs) . . . . . . . .
মেলখেত বেকর ব বহার (Constants in Programs) . . . . . . .
১৮
২২
২৩
২৬
২৮
in
৩.৩ চলক ঘাষনার মেলখ (Program Declaring Variables) . . . . . . ৩৪
৩.৪ পািটগিণেতর অণুি য়ার মেলখ (Arithmetic Program) . . . . . . . ৩৫
৩.৫ সলিসয়াস থেক ফােরনহাইেট পা র (Celcius to Fahrenheit) . . . ৩৫
am

৩.৬ ফােরনহাইট থেক সলিসয়ােস পা র (Fahrenheit to Celcius) . . . ৩৬


৩.৭ সময়েক সেকে ড পা র (Convert Time to Seconds) . . . . . . . ৩৬
৫.১ উপা যাগােনর মেলখ (Programs with Data Input) . . . . . . ৪৬
৫.২ যাগান যাচনার মেলখ (Program with Input Prompt) . . . . . . ৪৮
৫.৩ যাগান ও ফলেনর মেলখ (Input Output Program) . . . . . . . . ৫৬
৫.৪ যাগান িকয়ন ফলন (Input Process Output) . . . . . . . . . . . ৫৭
al

৫.৫ যাগােনর িসধা ম উ া ম (Input Order Reverse Order) . . . . ৫৭


৫.৬ ফলাফল ি য়ার মেলখ (Result Processing Program) . . . . . ৫৮
৬.১ পািটগিণেতর ধনা ক ও ঋণা ক (Arithmetic Positive Negative) . ৫৯
৬.২ পািটগিণেতর যাগ িবেয়াগ ণ (Arithmetic Plus Minus Times) . . . ৬০
৬.৩ পািটগিণেতর ভাগফল অণুি য়া (Arithmetic Division Operation) . ৬১
৬.৪ পািটগিণেতর ভাগেশষ অণুি য়া (Arithmetic Remainder Operation) ৬২
৬.৫ িট িব র মেধ র দূর (Distance Between Two Points) . . . . . ৭১
৬.৬ সমা র ধারার সম া (Arithmetic Series Problem) . . . . . . . . ৭৬
৬.৭ িয়ক অণুি য়ার ফলাফল (Binary Operation Results) . . . . . . . ৭৭
৬.৮ ি ভুেজর বা হেত ফল (Triangle's Area From Sides) . . . . . ৭৮
৬.৯ সময়েক সেকে ড কাশ (Time in Seconds) . . . . . . . . . . . . . ৭৮
৬.১০ ি ভুেজর বা হেত কাণ (Triangle's Angles From Sides) . . . . . ৭৯
৬.১১ িট সমেয়র যাগ (Adding Two Times) . . . . . . . . . . . . . . . ৭৯
৬.১২ সহ সমীকরণ সমাধান (Simultaneous Equations) . . . . . . . . . ৮০
৬.১৩ গিতর সমীকরণ সমাধান (Solving Motion Equations) . . . . . . . ৮০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১৪ ছ সংেকত থেক মেলখ তরী (Program from Pseudocode) . . ৮১


৭.১ পাশ- ফল-তারকা ন র িনণয় (Pass Fail Star Marks) . . . . . . . . . ৮৩
৭.২ অিধবষ িনণয় (Leap Year Determination) . . . . . . . . . . . . ৮৭
৭.৩ ি ঘাত সমীকরণ সমাধান (Solving Quadratic Equations) . . . . . ৯৬
৭.৪ সৗভাগ ও ভােগ র সংখ া (Lucky & Unlucky Numbers) . . . . . ৯৯
৭.৫ াপণ সহ ি েকাণিমিত (Trigonometry with Menu) . . . . . . . . ১১৫
৭.৬ অ াি পি িদেয় াপণ (Menu with Nested Switch) . . . . . . . ১১৭
৭.৭ ানীয় ও ব াপীয় চলকের ব বহার (Using Local & Global Variables) ১২৩
৭.৮ িতনিট সংখ ার বড়- ছাট (Small and Big of Three Numbers) . . . ১৩৬
৭.৯ িতনিট সংখ ার মধ ক (Median of Three Numbers) . . . . . . . . ১৩৭
৭.১০ িতনিট সংখ ার উধ ম (Three Numbers in Ascending Order) . . ১৩৭
৭.১১ ন র হেত বণমান (Letter Grades from Numbers) . . . . . . . . ১৩৮
৭.১২ িব র চতুভাগ িনণয় (Quadrant of a Point) . . . . . . . . . . . . ১৩৮
৭.১৩ বাংলা মােসর নাম (Bengali Month Names) . . . . . . . . . . . . ১৪২
৭.১৪ পাঁচিট সংখ ার বৃহ ম (Largest of Five Numbers) . . . . . . . . . ১৪৫
৭.১৫
৮.১
৮.২
৮.৩
5g
স ােহর মজুির িহসাব (Weekly Wage Calculation) . . . . . . . . .
বারবার একই িজিনস দখােনা (Repeatedly Display the Same) . .
ণীেত গিণেতর পাশ ফল (Pass Fail in Mathematics Class) . . .
পািটগিণেতর ধারার সম া (Arithmetic Series Problem) . . . . .
১৪৬
১৫২
১৫২
১৫৪
in
৮.৪ দশ িবষেয়র পাশ ফল িনণয় (Pass Fail in Ten Subjects) . . . . . . ১৫৬
৮.৫ ভােগ র সংখ া উেপ া (Ignoring Unlucky Numbers) . . . . . . . ১৫৯
৮.৬ দশতলায় উঠা-নামা (Ten Floor Up Down) . . . . . . . . . . . . . ১৬১
৮.৭ িট সংখ ার গসা (HCF of Two Numbers) . . . . . . . . . . . . ১৭২
am

৮.৮ অ ত খলনা কলিন (Rudimentary Toy Calculator) . . . . . . . ১৭৬


৮.৯ ঘিড়র সময় দখােনা (Displaying Clock Time) . . . . . . . . . . . ১৮৬
৮.১০ মৗিলক সংখ া িকনা িনণয় (Whether a Number is Prime) . . . . . ১৯৫
৮.১১ গসা ও লসা িনণয় (Determining HCF and LCM) . . . . . . . . ১৯৬
৮.১২ উৎপাদক তািলকা দখাও (Display List of Factors) . . . . . . . . . ২০১
al

৮.১৩ িফেবানাি গমন িনণয় (Fibonacci Progression) . . . . . . . . . ২০৩


১০.১ Wishing Program ( েভ া জানােনার মেলখ) . . . . . . . . . . . ২৩০
১০.২ Detailing Program (নাম-ধাম-বৃ াে র মেলখ) . . . . . . . . . . ২৩১
১০.৩ Commenting in Programs ( মেলখেত টীকা লখন) . . . . . . . ২৩৩
১০.৪ Spacing and Indentation ( মেলখেত ফাঁকা দওয়া) . . . . . . . . ২৩৪
১০.৫ Inspiring Program (অণুে রণার মেলখ) . . . . . . . . . . . . . ২৩৮
১০.৬ Program to Design (নকশা আঁকার মেলখ) . . . . . . . . . . . . ২৩৯
১১.১ Variables in Programs ( মেলখেত চলেকর ব বহার) . . . . . . . . ২৪২
১১.২ মেলখেত বেকর ব বহার (Constants in Programs) . . . . . . . ২৪৪
১১.৩ Program Declaring Variables (চলক ঘাষনার মেলখ) . . . . . . ২৫০
১১.৪ Arithmetic Program (পািটগিণেতর অণুি য়ার মেলখ) . . . . . . . ২৫১
১১.৫ Celcius to Fahrenheit ( সলিসয়াস থেক ফােরনহাইেট পা র) . . . ২৫২
১১.৬ Fahrenheit to Celcius (ফােরনহাইট থেক সলিসয়ােস পা র) . . . ২৫২
১১.৭ Convert Time to Seconds (সময়েক সেকে ড পা র) . . . . . . . ২৫২
১৩.১ Programs with Data Input (উপা যাগােনর মেলখ) . . . . . . ২৬২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.২ Program with Input Prompt ( যাগান যাচনার মেলখ) . . . . . . ২৬৪


১৩.৩ যাগান ও ফলেনর মেলখ (Input Output Program) . . . . . . . . ২৭৩
১৩.৪ Input Process Output ( যাগান িকয়ন ফলন) . . . . . . . . . . . ২৭৩
১৩.৫ Input Order Reverse Order ( যাগােনর িসধা ম উ া ম) . . . . ২৭৩
১৩.৬ Result Processing Program (ফলাফল ি য়ার মেলখ) . . . . . ২৭৪
১৪.১ Arithmetic Positive Negative (পািটগিণেতর ধনা ক ও ঋণা ক) . ২৭৭
১৪.২ Arithmetic Plus Minus Times (পািটগিণেতর যাগ িবেয়াগ ণ) . . . ২৭৮
১৪.৩ Arithmetic Division Operation (পািটগিণেতর ভাগফল অণুি য়া) . ২৭৯
১৪.৪ Arithmetic Remainder Operation (পািটগিণেতর ভাগেশষ অণুি য়া) ২৮০
১৪.৫ িট িব র মেধ র দূর (Distance Between Two Points) . . . . . ২৮৯
১৪.৬ Arithmetic Series Problem (সমা র ধারার সম া) . . . . . . . . ২৯৫
১৪.৭ Binary Operation Results ( িয়ক অণুি য়ার ফলাফল) . . . . . . . ২৯৫
১৪.৮ Triangle's Area From Sides (ি ভুেজর বা হেত ফল) . . . . . ২৯৬
১৪.৯ Time in Seconds (সময়েক সেকে ড কাশ) . . . . . . . . . . . . . ২৯৭
১৪.১০ Triangle's Angles From Sides (ি ভুেজর বা হেত কাণ) . . . . . ২৯৭

5g
১৪.১১ Adding Two Times ( িট সমেয়র যাগ) . . . . . . . . . . . . . . . ২৯৮
১৪.১২ Simultaneous Equations (সহ সমীকরণ সমাধান) . . . . . . . . . ২৯৮
১৪.১৩ Solving Motion Equations (গিতর সমীকরণ সমাধান) . . . . . . . ২৯৯
১৪.১৪ Program from Pseudocode (ছ সংেকত থেক মেলখ তরী) . . ২৯৯
in
১৫.১ Pass Fail Star Marks (পাশ- ফল-তারকা ন র িনণয়) . . . . . . . . . ৩০১
১৫.২ Leap Year Determination (অিধবষ িনণয়) . . . . . . . . . . . . ৩০৫
১৫.৩ Solving Quadratic Equations (ি ঘাত সমীকরণ সমাধান) . . . . . ৩১৪
১৫.৪ Lucky & Unlucky Numbers ( সৗভাগ ও ভােগ র সংখ া) . . . . . ৩১৭
am

১৫.৫ Trigonometry with Menu ( াপণ সহ ি েকাণিমিত) . . . . . . . . ৩৩৩


১৫.৬ Menu with Nested Switch (অ াি পি িদেয় াপণ ) . . . . . . . ৩৩৫
১৫.৭ Using Local & Global Variables ( ানীয় ও ব াপীয় চলকের ব বহার) ৩৪২
১৫.৮ Small and Big of Three Numbers (িতনিট সংখ ার বড়- ছাট) . . . ৩৫৫
১৫.৯ Median of Three Numbers (িতনিট সংখ ার মধ ক) . . . . . . . . ৩৫৫
al

১৫.১০ Three Numbers in Ascending Order (িতনিট সংখ ার উধ ম) . . ৩৫৬


১৫.১১ Letter Grades from Numbers (ন র হেত বণমান) . . . . . . . . ৩৫৭
১৫.১২ Quadrant of a Point (িব র চতুভাগ িনণয়) . . . . . . . . . . . . ৩৫৭
১৫.১৩ Bengali Month Names (বাংলা মােসর নাম) . . . . . . . . . . . . ৩৬১
১৫.১৪ Largest of Five Numbers (পাঁচিট সংখ ার বৃহ ম) . . . . . . . . . ৩৬৩
১৫.১৫ Weekly Wage Calculation (স ােহর মজুির িহসাব) . . . . . . . . . ৩৬৪
১৬.১ Repeatedly Display the Same (বারবার একই িজিনস দখােনা) . . ৩৭২
১৬.২ Pass Fail in Mathematics Class ( ণীেত গিণেতর পাশ ফল) . . . ৩৭২
১৬.৩ Arithmetic Series Problem (পািটগিণেতর ধারার সম া) . . . . . ৩৭৪
১৬.৪ Pass Fail in Ten Subjects (দশ িবষেয়র পাশ ফল িনণয়) . . . . . . ৩৭৬
১৬.৫ Ignoring Unlucky Numbers ( ভােগ র সংখ া উেপ া) . . . . . . . ৩৭৯
১৬.৬ Ten Floor Up Down (দশতলায় উঠা-নামা) . . . . . . . . . . . . . ৩৮১
১৬.৭ HCF of Two Numbers ( িট সংখ ার গসা ) . . . . . . . . . . . . ৩৯২
১৬.৮ Rudimentary Toy Calculator (অ ত খলনা কলিন) . . . . . . . ৩৯৬
১৬.৯ Displaying Clock Time (ঘিড়র সময় দখােনা) . . . . . . . . . . . ৪০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১০ Whether a Number is Prime ( মৗিলক সংখ া িকনা িনণয়) . . . . . ৪১১


১৬.১১ Determining HCF and LCM (গসা ও লসা িনণয়) . . . . . . . . ৪১৩
১৬.১২ Display List of Factors (উৎপাদক তািলকা দখাও) . . . . . . . . . ৪১৭
১৬.১৩ Fibonacci Progression (িফেবানাি গমন িনণয়) . . . . . . . . . ৪১৯

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

খড১
5g
বাংলা (English)
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১

িসিপিপেত মেলখ রচনা


(Writing c++ Programs)

5g
কান পিরগণেকর (programmer) কােছ িনেজর লখা মেলখ (program) একদম স ােনর
মেতা। িতল িতল কের সময় িনেয় পিরগণক একিট মেলখ গেড় তােল। য সম ার জ
লখ তরী করেত হেব, সটা জানার পের পিরগণক থেম িচ া ভাবনা কের কী িলখেব, তারপর
সটা মেলখ রচনার যথাযথ িনয়ম মেন িলেখ ফেল, তারপর সটা চািলেয় দেখ িঠক ঠাক কাজ
ম-
in
কের িক না। যিদ ভুল িকছু থেক থােক, ভুলটা বর কের, সটা িঠক কের, তারপর আবার মেলখ
চািলেয় দেখ। এই চলেত থােক যত ণ না মন মেতা সম ািটর সমাধান পাওয়া যাে । আমরা
সারা বইেত পড়েবা মেলখেত কী িলখেবা আমরা, আর যথাযথ ভােব মেলখ রচনার িনয়ম কী।
am

তেব এইখােন আেলাচনা করেবা, মেলখ িলখেবা কাথায় আর সটা চালােবা কী কের।
গণিনেত (computer) িনবাহ (execution) করা জ আমরা যখন কান একিট মেলখ
(program) িলখেত চাই, তখন থেম আমরা সটা স াদনা (edit) কির সাধারণত কান একটা
পিরগণনা ভাষায় (programming language)। এই পিরগণনা ভাষা িঠক গণিনেত িনবাহেযা-
গ (executable) ভাষা নয়, আবার িঠক মা েষর াভািবক ভাষাও (natural language) নয়,
বরং এ েটার মাঝামািঝ িকছু একটা। পিরগণনা ভাষায় িলিখত আমােদর মেলখেক আমরা তাই
al

এরপের সংকলন (compile) কের য ভাষায় (machine language) পা র কির যােত গণিন
সটা বুঝেত পাের। তারপর পা িরত মেলখিটেক আমরা িনবাহ (execute) কির।

১.১ হয়মান ম পািত (Online Software)


হয়মান (online) স াদনা ও সংকলেনর (editing and compilation) জ আমরা এখােন
cpp.sh নামক জালপাতা (webpage) ব বহার করেবা। তুিম খুঁজেল এরকম আেরা অেনক জা-
লপাতা পেত পােরা। যাই হাক তামার আ জাল াজেক (internet browser) জাল িঠকানা
(web address) িলখবার জায়গায় cpp.sh িলেখ তুিম উপের উে িখত ওই জালপাতায় যেত
পােরা। তারপর াজেক (browser) ওই জালপাতা কমন দখা যােব সটা আমরা নীেচর ছিবেত
দখেত পােবা। খয়াল কেরা ওই ছিবেত িবিভ অংশ তীর িচ িদেয় িচি ত করা হেয়েছ। বড় সা-
দা অংেশ স াদন খানা (Editing Area) লখা হেয়েছ। স াদন খানার নীেচ বাম িদেক রেয়েছ
িতনিট পাট (tab): উপা পাট (options tab), সংকলন পাট (compilation tab), িনবাহ
পাট (execution tab), আর ডান িদেক রেয়েছ চালাও (run) বাতাম।

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.১. হয়মান ম পািত (Online Software)

5g
in
am

আমরা মুলত মেলখ রচনা ও স াদনা করেবা স াদন খানায় (Editing Area)। নমু-
না (sample) িহসােব স াদন খানায় আেগ থেক িকছু থাকেত পাের, তুিম স েলা মুেছ িদ-
ত পােরা বা তামার মেলখেয়র জ দরকার মেতা বদেল িনেত পােরা। cpp.sh জালপাতায়
(webpage) গেল সাধারণত নীেচ দখােনা মেলখিটই (program) সখােন থােক। আমরা
আপাতত উপা পােট (options tab) কান পিরবতন না কের সরাসির চালাও বাতােম (run
al

button) িটপ িদেয় নমুনা (sample) মেলখিটই চালােবা (run)।


/ / Example program
#i n c l u d e <iostream>
#i n c l u d e <s t r i n g>

i n t main ( )
{
std : : s t r i n g name ;
std : : cout << "What i s your name? " ;
g e t l i n e ( std : : c i n , name ) ;
std : : cout << " Hello , " << name << " ! \n" ;
}

মেলখ স াদনা শষ হেল অথবা মাঝামািঝ অব ােতও পরী া কের দখার জ আম-
রা সাধারণত চালাও বাতােম িটপ (click) দেবা। তােত এক িটেপই থেম মেলখ সংকলন

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.১. হয়মান ম পািত (Online Software)

(compile) হেব তারপর িনবাহ (execution) হেব। যখন মেলখ সংকলন হেত থাকেব তখন
স াদন খানার মাঝখােন দখেব "অেপ া কেরা সংকলন হে " "Please Wait Compiling"
লখা আসেব। আর একই সােথ চালাও বাতামিট বদেল িগেয় হেয় যােব বািতল বাতাম (cancel
button)। অেনক ে সংকলন হেত সময় লােগ, তুিম যিদ কান কারেণ সংকলন বািতল করেত
চাও তাহেল বািতল বাতােম িটপ িদেলই হেব। যখন সংকলন হেত থােক তখন বাম িদেকর পাট -
লা (tabs) খয়াল করেব, উপা পােটর (options tab) বদেল সংকলন পাট (compilation
tab) সামেন চেল আসেব। সংকলেনর সময় কান িট (error) পাওয়া গেল সংকলন পােট দ-
খা যােব। আর কান সংকলন িট না থাকেল সংকলন সফল Compilation successful বাতা
দখা যােব সংকলন পােট আর তারপর িনবাহ পাট (execution tab) সামেন আসেব। িনবাহ
চলাকালীন সমেয় যাগান ও ফলন (input and output) িনবাহ পােট চলেব আর বািতল বা-
তামিট (cancel button) বদেল হেয় যােব থামন বাতাম (stop button), যােত য কান
সময় িনবাহ থািমেয় দয়া যায়। থামন বাতাম িটপেল অথবা িনবাহ শষ হেয় গেল আবার উপা
পাট (option tab) সামেন আসেব আর চালাও বাতাম (run button) িফের আসেব।

5g
in
am
al

নমুনা মেলখিট আমােদর আপাতত িব ািরত বুঝার দরকার নাই, আমরা পের ব াপার েলা
িব ািরত িশখেবা। নমুনা মেলখিট চালােল উপেরর ছিবর মেতা থেম িনবাহ পােট (execution
tab) দখােব What is your name? তখন তুিম যিদ তামার নাম িলেখ দাও gonimia আর
তারপর ভুি (enter) চাপ দাও, তাহেল পেরর সািরেত লখা আসেব Hello, gonimia! না-
মটু নওয়ার আেগ What is your name? দখােনােক আমরা বিল যাগান যাচনা (input
prompt) আর নাম gonimia দওয়াটােক আমরা বিল যাগান (input) দওয়া আর পেরর
সািরেত Hello, gonimia! দখােনােক আমরা বিল ফলন (output) দওয়া।

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.১. হয়মান ম পািত (Online Software)

তা তুিম চালাও বাতােম (run button) িটপ িদেয় দেখা কী হয়। থেম সংকলন পাট হেয়
িনবাহ পােট (execution tab) িগেয় উপের য ভােব বলা হেলা স রকম হয় কী না দেখা।
তামার বাঝার িবধােথ িনবাহ পােট শষ পয কী থাকেব তা নীেচ দখােনা হেলা।
What i s your name? gonimia
Hello , gonimia !
এবার আমরা একটু দিখ সংকলেন (compilation) িট হেল কী ঘেট, আর আমােদর কী
করেত হয়! এটার জ আমরা ইে কের একটা িট (error) তরী কের দই। যমন ধেরা
std: : string name; লখা রেয়েছ য সািরেত সখােন একদম শষ হেত িদিত (semicolon)
; তুিম মুেছ দাও। আর তারপর চালাও বাতােম (run button) িটপ দাও। দখেব নীেচর মেতা
কের িট বাতা দখােব সংকলন পােট (compilation tab), আর সংকলন পাটই সামেন থাকেব,
িনবাহ পাট (execution tab) সামেন আসেব না।

5g
in
am
al

সংকলন পােট য বাতা েলা আসেব তা নীেচ দখােনা হেলা। ি তীয় সািরেত দেখা 8 : 3
মােন বুঝাে ৮ম সািরেত িট আেছ আর ৩য় অ ের, আর িটটা হেলা ; থাকেত হেব। আসেল
; দরকার আমােদর ৭ম সািরর শেষ। সাধারণত য সািরেত িট আেছ বলা হয়, িট সই সাির
বা আেগর সািরেত থােক। এখােন ; থাকায় সংকলক (compiler) আসেল িঠক ৭ম আর ৮ম সাির
িনেয় িকি ত িব াি েত রেয়েছ। মেলখ রচনার সময় আমরা নানান রকম ভুল িট কির, তুিম
মেলখ লখার চচা করেত থাকেল এই িট েলার সােথ পিরিচত হেয় যােব। তখন দখা মা ই
বুঝেত পারেব ভুলটু কী আর কী কের সটা িঠক করেত হেব। যাইেহাক িটটু বুঝেত পারেল
আমরা সিট িঠক কের আবার চালাও বাতােম িটপ িদেবা, আর তখন সফল ভােবই িনবািহত হেব।
I n f u n c t i o n ' i n t main ( ) ' :
8 : 3 : e r r o r : expected i n i t i a l i z e r before ' std '
9 : 22 : e r r o r : 'name ' was not declared i n t h i s scope
সবেশেষ আমরা উপা পাট (options tab) সংে েপ আেলাচনা করেবা। সখােন থাকা নানা
উপা েলার (option) কী কাজ মুলত সটাই জানা আমােদর উে । তেব এ েলা িনেয় আমরা

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.২. নয়মান ম পািত (Offline Software)

আপাতত পরী া-িনরী া করেবা না, বরং য রকম অব ায় আেছ স রকম অব ােতই মেলখ
(program) স াদনা (editing), সংকলন (compile) ও িনবাহ (execute) করেবা।
১. সবেচেয় বােমর ে (column) দেখা িমত (standard) উপা েলা রেয়েছ। িসিপিপ
ভাষার নানান সং রণ (version) রেয়েছ, তুিম চাইেল আেগর সং রণ ব বহার করেত
পােরা, সাধারণত এখােন C++14 সং রণ িনবাচন করা থােক।
২. বাম থেক ি তীয় ে আেছ সতকবাতার উপা েলা, অথাৎ সংকলন (compile) করার
সময় সংকলক (compiler) কতটা খুঁিট নািট িট ধরেব সটা এখােন বেল দয়া হয়।
সাধারণত এখােন সব Many (-Wall) উপা িনবািচত থােক।
৩. বামেথেক তৃতীয় ে আেছ অ লায়েনর(optimisation) উপা েলা। একই মেলখ
(program) সংকলক (compiler) চাইেল এমন ভােব সংকলন (compile) করেত পা-
র য মেলখিট অেনক ত িনবাহ (execute) হেব, আবার এমন ভােব সংকলন করেত
পাের য মেলখিট অেনক ধীের িনবাহ হেব। ত িনবাহ হেব এমন সংকলন করেত া-
ভািবক ভােবই বশী সময় লােগ, আর ধীের িনবাহ হেব সরকম সংকলন করেত সময় কম

5g
লােগ। এখােন সাধারণত পূণ Full (-O2) উপা িনবািচত থােক।
৪. সবেচেয় ডােনর ে আেছ িমত যাগান (standard input) উপা সমুহ। সাধারণত
এখােন িমথি য় (interactive) উপা িনবািচত থােক যার অথ চাপিন (keyboard)
ব বহার কের যাগান (input) দওয়া যােব। তামার মেলখেত কান যাগান না থা-
in
কেল তুিম িকছুনা (none) উপা িনবাচন করেত পােরা। অথবা তুিম যিদ আেগই যা-
গান িদেয় রাখেত চাও তাহেল পাঠিনক (text) উপা িনবাচন কের ওইখােন থাকা বাে
আেগ থেক তামার যাগান েলা িদেয় রাখেত পােরা। তােত মেলখ (program) চাপিন
am

(keyboard) থেক যাগান না িনেয় ওইখান থেক িনেয় িনেব।

১.২ নয়মান ম পািত (Offline Software)


কাড কস (Code::Blocks) একিট নয়মান ম পািত (offline software) যিট িলনা , উই-
ডাজ, ম াক ওএস, সব পিরচালনা তে ই (operating system) ব বহার করা যায়। কা-
al

ড কেস তুিম c/c++ মেলখ স াদনা ও সংকলন (editing and compilation) করেত
পারেব। কাড কস তামার গণিনেত (computer) সং াপন (install) কের িনেল তুিম আ -
জাল (internet) ব বহার করা ছাড়াই তামার মেলখ স াদনা ও সংকলন কের যেত পারেব।
কাড কস পাওয়া যায় http://www.codeblocks.org/ জালপাতা (webpage) হেত, এর
ম তুিম http://www.codeblocks.org/downloads/binaries সূ হেত নািমেয় িনেত
পােরা। তুিম উইে ডাজ ব বহারকারী হেল codeblocks-13.12mingw-setup.exe সং রণ
নািমেয় সং াপন (install) করেব। এই সং রেণ GCC সংকলক (compiler) আর GDB আপ-
দনাশক (debugger) আেছ। তুিম িলনা বা ম াক ব বহারকারী হেল দরকার মেতা তামার সং-
রণ নািমেয় সং াপন (install) করেব। গণিনেত (computer) কাড কস সং াপন (install)
িবষেয় সাহায পেত চাইেল নীেচর থম িট সূ হেত ছিবও (video) দখেত পােরা আর ব বহার
পুি কা (user manual) পেত চাইেল তা পেত পােরা তৃতীয় সূ হেত ।

উইে ডাজ: https://www.youtube.com/watch?v=zOGU8fC3bvU


িলনা : https://www.youtube.com/watch?v=3B4hPHZNtNw
ব বহার পুি কা: http://www.codeblocks.org/user-manual

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.২. নয়মান ম পািত (Offline Software)

এরপের তামার গণিনেত (computer) পিরচালনা ত (operating system) কী আেছ


তার জ দরকারী িনেদশনা মেন তুিম কাড কস িঠকঠাক মেতা সং াপন (install) কের নাও।
সং াপন হেয় গেল তারপর তুিম কাড কস মেলখিট (program) চালাও (run)। দখেব
নীেচর মেতা জানালা (window) খুেল যােব। তারপর তুিম াপণ (menu) থেক File এর
অধীেন Newএর (নতুন) িভতের Empty Fileএ (ফাঁকা নিথ) িটপ (click) দাও। নতুন নিথেত
আপাতত িকছু থাকেব না। তারপর আবার াপণ (menu) থেক Save Fileএ িটপ িদেয় দরকার
মেতা নিথর নাম (File Name) যমন example.cpp িদেয় তামার নতুন সৃ নিথিটেক সংর ণ
(save) কেরা। াপণ (menu) থেক এসব না কের নীেচর ছিবেত দখােনা মূিত বাতাম েলােত
(icon button) িটপ িদেয়ও তুিম তামার নিথ তরী ও তা নাম িদেয় সংর ণ করেত পােরা।

5g
in
am

এরপর example.cppেত নীেচর মেতা সংেকত (code) িলেখা। এই মেলখিট আমােদর


আপাতত িব ািরত বুঝার দরকার নাই, আমরা পের ব াপার েলা িব ািরত িশখেবা। তেব সংে েপ
বিল এই মেলখ (program) তামােক িজে স করেব What is your name? আর তুিম
তামার নাম ধেরা gonimia িলেখ িদেল তখন বলেব Hello, gonimia!
al

উপেরর ছিবেত ল কেরা আমরা য মেলখ িলেখিছ সটােত আসেল নীেচর সংেকত -
লাই িলেখিছ। এিট িঠক হয়মান ম পািত (online software) িহসােব cpp.sh জালপাতা
(webpage) ব বহার কের য মেলখ িলেখিছলাম সিটই। কাড কেস নমুনা িহসােব আেগ থ-
ক এই রকম মেলখ থােক না, তামােক িনেজ এটা িলেখ িনেত হেব। তারপর উপেরর ছিবেত দ-

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.২. নয়মান ম পািত (Offline Software)

খােনা বানাও+চালাও (Build+Run) বাতােম িটপ িদেয় তুিম মেলখিট চালােব। বানাও+চালাও
বাতােম িটপ িদেল আসেল থেম তামার লখা মেলখ সংকলন (compile) হেয় িনবাহেযাগ
(executable) মেলখ তরী হয়, আর তারপর সই িনবাহেযাগ মেলখ আসেল চেল (run)।
/ / Example program
#i n c l u d e <iostream>
#i n c l u d e <s t r i n g>

i n t main ( )
{
std : : s t r i n g name ;
std : : cout << "What i s your name? " ;
g e t l i n e ( std : : c i n , name ) ;
std : : cout << " Hello , " << name << " ! \n" ;
}

5g
তা বানাও+চালাও (Build+Run) বাতােম িটপ িদেল সাধারণত নীেচর ছিবর মেতা কের
একটা অিতির জানালা (window) আসেব। আর তােত লখা থাকেব What is your name
? তখন তুিম যিদ তামার নাম িলেখ দাও gonimia আর তারপর ভুি (enter) চাপ দাও, তা-
হেল পেরর সািরেত দখেব লখা আসেব Hello, gonimia!। নামটু নওয়ার আেগ What is
in
your name? দখােনােক আমরা বিল যাগান যাচনা (input prompt) আর নাম gonimia
দওয়াটােক আমরা বিল যাগান (input) দওয়া আর পেরর সািরেত Hello, gonimia! দখা-
নােক আমরা বিল ফলন (output) দওয়া।
am
al

তা তুিম বানাও+চালাও বাতােম (Build+Run button) িটপ িদেয় দেখা কী হয়। উপের
য ভােব বলা হেলা স রকম হয় কী না দেখা। তামার বাঝার িবধােথ িনবাহ (execution)
শেষ ওই অিতির জানালােত কী থাকেব তা নীেচ দখােনা হেলা।
What i s your name? gonimia
Hello , gonimia !

এবার আমরা দখেবা কাড কেস লখা আমােদর মেলখেত যিদ কান ভুল থােক তাহ-
ল বানাও+চালাও (build+run) বাতােম িটপ িদেল কী ঘটেব? বানাও+চালাও বাতােম িটপ

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.৩. গণনা পিরভাষা (Computing Terminologies)

দওয়ার আেগ তামােক াপণ (menu) থেক Viewএর (দৃি ) অধীেন Logsএ (ঘটচা) িটপ
িদেত বলেবা, অথবা F2 চাপিন (key) চাপেলও একই কাজ হেব। এর ফেল নীেচর ছিবেত দখা-
না বানাও বাতা পােটর (build messages tab) দখা যােব, যখােন আসেল সংকলেন কান
িট (error) থাকেল তা দখােনা হেব। এবার আমরা ইে কের একটা িট (error) তরী
কের দই। যমন ধেরা std: : string name; লখা রেয়েছ য সািরেত সখােন একদম শষ
হেত িদিত (semicolon) ; তুিম মুেছ দাও। আর তারপর বানাও+চালাও বাতােম (build+run
button) িটপ দাও। দখেব িট বাতা দখােব বানাও বাতা পােট (build messages tab)।

5g
in
am

বানাও বাতা পােট (build messages tab) য বাতা েলা আসেব তা নীেচ দখােনা হেলা।
ি তীয় সািরেত দেখা 8 মােন বুঝাে ৮ম সািরেত িট আেছ, আর িটটা হেলা ; থাকেত হেব।
আসেল ; দরকার আমােদর ৭ম সািরর শেষ। সাধারণত য সািরেত িট আেছ বলা হয়, িট সই
সাির বা আেগর সািরেত থােক। এখােন ; থাকায় সংকলক (compiler) আসেল িঠক ৭ম আর
৮ম সাির িনেয় িকি ত িব াি েত রেয়েছ। মেলখ রচনার সময় আমরা নানান রকম ভুল িট
al

কির, তুিম মেলখ লখার চচা করেত থাকেল এই িট েলার সােথ পিরিচত হেয় যােব। তখন
দখা মা ই বুঝেত পারেব ভুলটু কী আর কী কের সটা িঠক করেত হেব। যাইেহাক িটটু
বুঝেত পারেল আমরা সিট িঠক কের আবার বানাও+চালাও বাতােম (build+run button)
িটপ িদেবা, আর তখন মেলখ (program) সফল ভােবই িনবািহত হেব।
I n f u n c t i o n ' i n t main ( ) ' :
8 : e r r o r : expected i n i t i a l i z e r before ' std '
9 : e r r o r : 'name ' was not declared i n t h i s scope

১.৩ গণনা পিরভাষা (Computing Terminologies)


• পিরগণক (programmer) • ভাষা (language)

• পিরগণনা (programming) • াভািবক (natural)

১০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১.৩. গণনা পিরভাষা (Computing Terminologies)

• মেলখ (program) • ভুি (enter)


• মেলখক (programmer) • যাচনা (prompt)
• গণিন (computer) • িট (error)
• িনবাহ (execution) • (column)
• িনবাহেযাগ (executable) • িমত (standard)
• স াদনা (edit) • অ লায়ন (optimisation)
• সংকলন (compile)
• িমথি য়া (interaction)
• হয়মান (online)
• িমথি য় (interactive)
• নয়মান (offline)
• চাপিন (keyboard)
• ম , ম পািত (software)
• জালপাতা (webpage)
• আ জাল (internet)
• াজক (browser)
5g
• িকছুনা (none)

• পাঠিনক (text)
• পিরচালনা ত
(operating system)
in
• জাল িঠকানা (web address)
• সং াপন (install)
• স াদন খানা (editing area)
• আপদনাশক (debugger)
am

• পাট (tab)
• ছিবও (video)
• উপা (option)
• ব বহার পুি কা (user manual)
• উপা পাট (options tab)
• জানালা (window)
• সংকলন পাট (compilaiton tab)
al

• াপণ (menu)
• িনবাহ পাট (execution tab)
• নিথ (file)
• চালাও (run)
• ফাঁকা নিথ (empty file)
• বানাও (build)
• নতুন (New)
• নমুনা (sample)
• সংর ণ (save),
• িটপ (click)
• বাতাম (button) • মূিত (icon)

• বািতল (cancel) • সংেকত (code)

• যাগান (input) • িদিত (semicolon)

• ফলন (output) • দৃি (view)

• থামন (stop) • ঘটচা (log)

১১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ২

মেলখেয়র কাঠােমা
(Program Structure)

5g
গণিনেত (computer) িনবাহেযাগ (executable) এক িনেদেশর (instruction) ম-
ক মেলখ (program) বলা হয়। আমরা িসিপিপ (c++) ভাষায় মেলখ তরী করেবা। -
মেলখ সাধারণত একিট স াদনা (editor) ম (software) ব বহার কের তরী করা হয়।
আমরা একােজ আপাতত cpp.sh নােমর একিট জালপাতা (webpage) ব বহার করেবা। িস-
in
িপিপ ভাষায় তরী মেলখেক থেম একিট সংকলক (compiler) িদেয় সংকলন (compile)
কের গণিনেত িনবাহেযাগ সংেকত (code) তরী করা হয়। তারপর সই সংেকত চালােল (run)
বা িনবাহ (execution) করেল আমরা সাধারণত য ালেয়র (console) নজিরেত (monitor)
am

ফলন (output) দখেত পাই । মেলখ অেনক সময় আমােদর কাছ থেক য ালেয়র চাপিনর
(keyboard) বা িটপিনর (mouse) মাধ েম যাগান (input) িনেত পাের। জেন রেখা য া-
লয় (console) বলেত যাগােনর (input) জ চাপিন ও িটপিন (keyboard and mouse)
আর ফলেনর (output) জ নজির (monitor) বুঝােনা হয়। মেলখ িলখেত গেল য ালয়
(console) থেক যাগান (input) নয়ার ও য ালেয় (console) ফলন (output) দখােনার
কথা তুিম ায়শই নেত পােব। কােজই এ েলা কী বুঝায় সটা ভােলা কের মেন রেখা।
al

২.১ েভ া বাতার মেলখ (Wishing Program)


িসিপিপ (c++) ভাষায় এমন একিট মেলখ (program) রচনা কেরা যিট চালােল (run) তামার
মেলখ ব বহারকারীেক েভ া জানােব। আসেল এিটই হেব িসিপিপ ভাষায় তামার লখা থম
মেলখ। েত ক পিরগণনা ভাষায়ই এমন একটা কের মেলখ রচনা করা হয়।
নীেচ েভ া বাতা দখােনার জ একিট মেলখ রচনা করা হেয়েছ। আর মেলখিট সং-
কলন (compile) কের িনবাহ (execution) করেল বা চালােল (run) য ফলন (output)
পাওয়া যােব তাও দখােনা হেয়েছ। ওই মেলখেত মুল য িববৃিতিট (statement) আমােদর
shuvessa nin দখােব সিট হল cout << "shuvessa nin" << endl; এখােন cout হল
console out মােন য ালেয়র ফলন য (output device)। আর endl হল end line অথাৎ
যখােন endl বলা আেছ সখােন ফলেন ওই সাির শষ হেব। খয়াল কেরা আমরা নজিরেত যা
দখােত চাই তা ব উ ৃিত "" িচে র িভতের লখা হেয়েছ। আর << িদেয় আমরা "shuvessa
nin" ও endl কথা েলােক cout এর কােছ পাঠাই দখােনার জ ।

১৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.১. েভ া বাতার মেলখ (Wishing Program)

রণ রেখা cout এর িববৃিতিট (statement) ছাড়া আমােদর মেলখেত আেরা অ া-


িববৃিত য িল আেছ স িল আমােদর লখা ায় সকল মেলখেতই থাকেব। আমরা তাই
আপাতত ও েলা একরকম জার কের মেন রাখার চ া করেবা। তারপেরও অব আমরা নীেচর
আেলাচনা থেক সংে েপ জেন নব বাঁকী িববৃিত েলার কানটার কাজ মাটামুিট কী।

িফিরি ২.১: েভ া জানােনার মেলখ (Wishing Program)


#i n c l u d e <iostream>
using namespace std ;
i n t main ( )
{
cout << " shuvessa nin " << endl ;

ret ur n 0 ;
}

shuvessa nin 5g
ফলন (output)
in
একদম েত আমরা #include <iostream> ব বহার কেরিছ কারণ iostream নােম
একটা িশর নিথ (header file) আেছ যটা আমরা আমােদর মেলখেত অ ভু করেত চাই।
ওই িশর নিথেত নানান িবপাতক (function) আেছ য েলা আমরা পের জানব ও ব বহার কর-
am

বা। আপাতত জেন নই, ওই নিথেত cout আর endl আেছ। মুলত আমােদর মেলখেত cout
আর endl ব বহার করার জ ই আমরা iostream অ ভু কেরিছ। এরকম আেরা িশর নিথর
(header file) কথা আমরা পের িব ািরত জানেবা ও অব ই ব বহার করেবা।
using namespace std; আমরা ব বহার কেরিছ কারণ cout আর endl আসেল েটা
নাম, আর ওই নাম েটা িসিপিপেত আেগ থেক িবদ মান std (standard বা িমত) নামাধােরর
(namespace) অ গত। িসিপিপেত একই নাম িভ িভ নামাধাের অ গত হেত পাের। তা
al

কােনা নাম বলেল সিট কান নামাধার থেক আসেব সিট আমরা আেগই বেল িদি , যমন
আমােদর সকল নাম আসেল std নামাধার থেক আসেব। নামাধার কী তা আর একটু পির ার কের
বুঝেত হেল নীেচর পিরে েদর (para) ঢাকার বনাম ব ড়ার গাবতিল িনেয় আেলাচনা পেড়া।
গাবতিল নােম ঢাকায় একিট জায়গা আেছ আবার গাবতিল নােম ব ড়ায় আেরকিট জায়গা
আেছ। তা গাবতিল বলেত গেল আমােদর বলেত হেব 'ব ড়ার গাবতিল' অথবা 'ঢাকার গাবতিল',
কবল গাবতিল বলেল তা বুঝা যােব না কাথাকার গাবতিল। িবক িহসােব আমরা আেগই বেল
িনেত পাির য আমরা এখন ঢাকার কথা আেলাচনা করিছ। তখন কবল গাবতিল বলেলই আমরা
বুঝব এিট ঢাকার গাবতিল। আবার যিদ আেগই বেল নই য এখন থেক আমরা ব ড়ার কথা
আেলাচনা করেবা তাহেল গাবতিল বলেলই আমরা ব ড়ার গাবতিল বুঝব, ঢাকারটা নয়।
উপেরর মেলখেত using namespace std; বেল আমরা আেগই বেল িনেয়িছ য এরপর
থেক আমরা std নামাধার (namespace) িনেয় কাজ করেবা। কােজই পের যখন cout আর
endl ব বহার কেরিছ, তখন আর std এর কথা বলেত হয় িন। িক কউ যিদ তার মেলখেত
using namespace std; না লেখ, তাহেল তােক cout << "shuvessa nin" << endl
; এর বদেল িলখেত হেব std: : cout << "shuvessa nin" << std::endl; অথাৎ cout
আর endl েটার পূেবই std: : লািগেয় িনেত হেব, িঠক যমন গাবতিল বলার আেগ ঢাকা লািগেয়

১৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.২. নাম-ধাম-বৃ াে র মেলখ (Detailing Program)

বলেত হেব ঢাকার গাবতিল। cout আর endl এর আেগ std: : না িলখেল মেলখ সফল ভােব
সংকলন (compile) করা যােব না, নানান িট (error) বাতা (message) দখােব। সংকলন
সমেয় দখােনা িট েলােক সংকলন কালীন (compile-time) িট বলা হয়।
য কান িসিপিপ মেলখেত একিট মুল িবপাতক (function) থােক main যার নাম। এই
main িবপাতেকর কান পরািমিত (parameter) থাকেব না, কােজই main( ) এর পের গাল
ব নী েটার মেধ িকছু বলা হয় িন। আর িতিট িবপাতক চাইেল একিট মান ফরত দয়, main
িবপাতক সাধারণত একিট পূণক (integer) ফরত দয়, যা main লখার আেগ int িহসােব
উে খ করা হেয়েছ। িবপাতক িনেয় িব ািরত আেলাচনা আমরা পের করেবা। আপাতত সংে েপ
এইটু ই জেন রািখ। তা আমােদর মেলখেত return 0; িববৃিতিট আসেল বলেছ য আমােদর
main িবপাতকিট ফরত পাঠােব। কার কােছ ফরত পাঠােব? য আমােদর মেলখ চালাে
তার কােছ। main িবপাতক 0 পাঠােনা মােন হেলা, এিট সফল ভােব শষ হেয়েছ, কান িট
িবচু িত ঘেট িন। 0 ছাড়া অ িকছু ফরত পাঠােনা িনেয়ও আমরা পের আেলাচনা করেবা।
িসিপিপেত েটা বাঁকা ব িনর {} িভতের যা থােক তােক বলা হয় একিট মহ া (block)।
িতিট িবপাতেকর একিট শরীর (body) থােক যিট মহ ার িভতের থােক। ল কের দেখা
আমােদর main িবপাতেকর cout আর return িদেয় হওয়া িববৃিত িট একিট মহ ার

5g
িভতের রেয়েছ। আর একিট িবষয় খয়াল কেরা, আমােদর িববৃিত েলার শেষ িক একিট কের
িদিত (semicolon) ; রেয়েছ। িসিপিপেত বশীরভাগ িববৃিতর পেরই আমরা এইরকম িদিত ;
িদেয় িববৃিত শষ কির। িঠক বাংলা ভাষায় িতিট বােক র পের দাঁিড় । দয়ার মেতা ব াপার।
সব িমিলেয় এই হল আমােদর থম মেলখ, যটা ব বহারকারীেক েভ া জানােব।
in
২.২ নাম-ধাম-বৃ াে র মেলখ (Detailing Program)
am

িসিপিপেত এমন একিট মেলখ (program) রচনা কেরা যিট চালােল ব বহারকারীেক তা-
মার নাম-ধাম-বৃ া কেয়ক সািরেত মালা (string) আকাের বেল দয়। সােথ সংখ া (number)
িহসােব তামার বয়স ও তামার ফলাফেলর িজিপএও বেল দয়।

িফিরি ২.২: নাম-ধাম-বৃ াে র মেলখ (Detailing Program)


al

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
cout << " amar nam goni mia " << endl ;
cout << " amar b a r i bogra " << endl ;
cout << " ami t h a k i dhakai " << endl ;
cout << " amar boyos " << 20 << " bosor " << endl ;
cout << " amar f o l a f o l gpa " << 3 . 99 << endl ;

ret ur n EXIT SUCCESS ;


}

১৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৩. মেলখেত টীকা িলখন (Writing Program Comments)

ফলন (output)
amar nam goni mia
amar b a r i bogra
ami t h a k i dhakai
amar boyos 20 bosor
amar r e s u l t gpa 3 . 99

উপেরর মেলখেত আমরা নাম-ধাম-বৃ া কেয়ক সািরেত দিখেয়িছ। এই মেলখেয়র -


িতিট cout িদেয় িববৃিতর সােথ পের দখােনা ফলন িমিলেয় নাও। ল কেরা cout িদেয়
" " উ ৃিত অংশ েলার িভতের আমরা য মালা েলা (string) দখােত বেলিছ স েলাই ফলেন
ব সভােবই দখােনা হেয়েছ। আর িতবার endl অথাৎ end line পেল ফলন পেরর সািরেত
চেল গেছ। শেষর েটা cout িববৃিত েলা খয়াল কেরা। এই েটােত বয়স ও িজিপএ আমরা
সংখ া িহসােব দিখেয়িছ। তুিম চাইেল িক সংখ া িহসােব না দিখেয় মালার িভতেরই দখােত
পারেত যমন নীেচর মেতা, সে ে ফলন িক দখেত একই রকম হেতা।

5g
cout << " amar boyos 20 bosor " << endl ;
cout << " amar f o l a f o l gpa 3 . 99 " << endl ;

সবেশেষ একটা িবষয় খয়াল কেরা। আমরা এই মেলখেত return 0; এর বদেল িলেখিছ
return EXIT SUCCESS; আর এই EXIT SUCCESS আেছ cstdlib িশর নিথেত (header
in
file)। আমরা তাই #include <cstdlib> িলেখ cstdlib িশর নিথিটও আমােদর মেলখেত
অ ভু কেরিছ। মেন রাখেব EXIT SUCCESS এর মান আসেল 0 িক 0 তা একটা সংখ া
যটা দেখ সরাসির িঠক অ ধাবন করা যায় না আমরা কী বুঝােত চাইিছ, মােন মেলখ সফল
am

না িবফল হেয়েছ। আমরা তাই কের EXIT SUCCESS িলখেবা যােত চােখ দেখই আমরা
বুঝেত পাির ব াপারটা কী। বেল রািখ গণিনর (computer) জ িক 0 আর EXIT SUCCESS
একই ব াপার কারণ EXIT SUCCESS এর মান য 0 ওইটা তা cstdlib নিথেত বলা আেছ,
সংকলন করার পের EXIT SUCCESS আসেল 0 হেয় যােব, গণিন ওইটা ই দখেত পােব।
আমরা 0 এর বদেল EXIT SUCCESS আসেল িলখিছ কবল মা েষর বুঝার িবধার জ , -
মেলখ পেড় চােখ দেখই যােত সহেজ বুঝা যায় মেলখিট সফল না িবফল ভােব শষ হে ,
al

সটাই আমােদর উে । তাহেল এখন থেক মেলখেয়র main িবপাতেক return 0; না িল-
খ return EXIT SUCCESS; িলখেব আর cstdlib িশর নিথও অ ভু কের নেব!
তা তামরা এখন থেক কেয়ক সািরেত িকছু দখােনার মেলখ রচনা করেত চাইেল এই
মেলখেয়র মেতা কের রচনা করেব। দরকার মেতা সংখ া (number) ও মালা (string) িম ণ
কেরও িক যা দখােত চাও তা দখােত পারেব। চ া কের দেখা কমন?

২.৩ মেলখেত টীকা িলখন (Writing Program Comments)


এমন একটা মেলখ (program) রচনা কেরা যিট বতমান সাল ২০১৫ থেক তামার বয়স
২০বছর িবেয়াগ কের তামার জ বছর দখায়। এই মেলখেত দরকার অ যায়ী পযা টীকা
(comment) িলেখা, যােত অেনক িদন পের তুিম যখন মেলখিট ায় ভুেল যাওয়ার মেতা অব-
ায় যােব তখন মেলখিট আবার দখেত িগেয় ত চাখ বুিলেয়ই সহেজ বুঝেত পােরা য এিট
তামার কীেসর মেলখ িছল। মেলখেত টীকা থাকেল তুিম ছাড়া অ কউও তামার লখা -
মেলখ পেড় সহেজ বুঝেত পারেব। টীকা লখা হয় মা ষ য ভাষায় কথা বেল সই ভাষায় যমন

১৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৩. মেলখেত টীকা িলখন (Writing Program Comments)

বাংলায় বা ইংেরজীেত, িসিপিপ ভাষায়ও নয়, যে র ভাষায়ও নয়, কােজই টীকা িলখেল অেনক িদন
পেরও আমােদর মেলখ বুঝেত িবধা হয়।

িফিরি ২.৩: মেলখেত টীকা লখন (Commenting in Programs)


/ / l i s t of header f i l e s needed f o r t h i s program .

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ; / / use the std namespace

i n t main ( )
{
/ / Subt r a c t 20 years from 2015 to get b i r t h y e a r

}
ret ur n EXIT SUCCESS ; 5g
cout << " amar jonmoshal " << 2015 − 20 << endl ;

/ ∗ return with success ∗ /


in
ফলন (output)
amar jonmoshal 1995
am

উপেরর মেলখ খয়াল কেরা। কিঠন িকছু নয়। আেগর মেতাই iostream আর cstdlib
অ ভু (include) করা আেছ। তারপর বলা হেয়েছ using namespace std; তারপর মুল
িবপাতক (function) িহসােব int main() যিটর কান পরািমিত (parameter) নাই কারণ
( ) গাল ব নীর িভতের িকছু নাই আর যিট একিট পূণক (integer) ফরত দয় কারণ int বলা
আেছ েত। তারপর মুল িবপাতেকর শরীের েটা {} বাঁকাব নীর িভতেরর মহ ায় (block)
al

বলা আেছ cout << "amar jonomoshal " << 2015 − 20 << endl; অথাৎ ফলেন
amar jonomoshal দিখেয় তারপর 2015 থেক 20 িবেয়াগ করেল য 1995 পাওয়া যায় তা
দখােব। তারপর মহ ার িভতের শষ িববৃিত (statement) আেছ return EXIT SUCCESS;
যা আেগর মেতাই বলেছ য আমােদর মেলখ ওইখােন সফল ভােব শেষ হেয় বর হেয় যােব।
EXIT SUCCESS িনেয় আমরা আেগর পােঠ িব ািরত আেলাচনা কেরিছ, ওই পাঠ থেকই দেখ
িনেত পােরা, কােজই সটা আবার এখােন আেলাচনা করিছ না।
যাইেহাক, খয়াল কের দেখা ওপের বিণত িবষয় েলা ছাড়াও উপেরর মেলখেত আেরা
িকছু বাক ও সাির দখা যাে যমন থম সািরিটই হল // list of header files needed
for this ।program এই বাক িট আসেল আমােদর মেলখেয়র অংশ নয়, অথ াৎ মেলখ
যখন চালােনা (run) হেব তখন এই বােক র কান ভাব থাকেব না। মেলখ এমন ভােব চলেত
থাকেব যােত মেন হেব ওই বাক িট যন ওখােন নাই। এরকেমর বাক েলােক বলা হয় টীকা
(comment)। খয়াল কেরা টীকার বাক িটর একদম সামেন রেয়েছ // অথাৎ সামেনর িদেক
হলােনা েটা দাগ। ওই েটা দাগ হেত কের ওই সািরেত তারপের যাই থাকেব সব িমিলেয়
হেব একিট টীকা। এইরকম টীকা যেহতু কবল এক সািরেত সীমাব তাই এেক বলা হয় সাির
টীকা (line comment)। িসিপিপ ভাষায় অিধকাংশ সময়ই সাির টীকা ব বহার করা হয়।

১৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৪. মেলখেত ফাঁকা দওয়া (Spacing and Indentation)

সাির টীকা যিদ সািরর একদম েত লখা হয় তাহেল সাধারণত এিট টীকার িঠক নীেচ য
সংেকত (code) থােক তার জ লখা হয়। যমন // list of header files needed for
this program এই টীকািট একদম সািরর থেক লখা হেয়েছ, এিট তাই পেরর ই সা-
িরেত #include <iostream> আর #include <cstdlib> কন লখা হেয়েছ সিট ব াখ া
করেছ। সাির টীকা অেনক সময় সািরর শষ িদেকও লখা হয়। যমন // we will use the
std namespace টীকািট লখা হেয়েছ using namespace std; িদেয় হওয়া সািরর
শেষ। সািরর শষ িদেক লখা এইরকম সাির টীকা সাধারণত সািরর থেম য সংেকত (code)
লখা হেয়েছ তা ব াখ া করেত ব বহার করা হয়। অেনক সময় টীকা িলখা হয় েত /∗ আর শ-
ষ ∗/ িচ িদেয়, যমন return EXIT SUCCESS; এর সািরেত শেষ লখা হেয়েছ। এইরকম
টীকা একািধক সাির িমিলেয় হেত পাের, তাই এেদরেক সাির টীকা না বেল মহ া টীকা (block
comment) বলা হয়। িসিপিপেত আমরা অিধকাংশ সময় আসেল সাির টীকাই ব বহার কির।
তুিম যখন তামার মেলখেত টীকা িলখেব তখন হয়েতা ইংেরজীেতই টীকা িলখেব। অথবা
ইংেরজী অ ের বাংলায়ও টীকা িলখেত পােরা। আজকাল অেনক সংকলক (comiler) ও স াদক
(editor) ইউিনেকাড (unicode) সংেকত বুঝেত পাের। কােজই টীকা বাংলায়ও লখা স ব।
আমরা এরপর থেক িসিপিপেত লখা সকল মেলখেত টীকা বাংলায় িলখেবা, যােত আমরা আমা-

5g
দর িনেজর ভাষায় সহেজ বুঝেত পাির। এ েলা যেহতু িনবাহ execution) হেব না, কােজই
খােমাকা কন ক কের ইংেরজীেত িলখেত যােবা! আর িবেদশী কউ তা আমােদর মেলখেয়র
সংেকত দখেব না, কােজই আমরা আমােদর বাংলা ভাষােতই টীকা িলখেবা। তেব মেন রাখেব িব-
দশী কােরা পড়ার স াবনা থাকেল আমােদর টীকা সহ সবিকছু ইংেরজী ভাষােতই িলখেত হেব।
in
তাহেল সাির টীকা আর মহ া টীকা শখা হেলা। এখন থেক মেলখ লখার সময় যেথ পিরমােন
টীকা িদেব কমন? আিমও মেলখ েলােত টীকা দেবা, যােত তামােদর বুঝেত িবধা হয়।
am

২.৪ মেলখেত ফাঁকা দওয়া (Spacing and Indentation)


িসিপিপ মেলখ (program) িলখেত কখন নতুন সাির করেব? কখন ফাঁকা ফাঁকা কের
িলখেব? কখন সািরেত একটু ছাড়ন িদেয় িলখেব। একিট মেলখ িলেখ এই িবষয় েলা আেলাচনা
কেরা। চেলা আমরা আমােদর েভ া জানােনার ছাট মেলখিট িদেয়ই আেলাচনা কির।
al

িফিরি ২.৪: মেলখেত ফাঁকা দওয়া (Spacing in Programs)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
cout << " shuvessa nin " << endl ;
ret ur n EXIT SUCCESS ;
}

উপেরর মেলখেত আমরা আপাতত টীকা (comment) িলিখ নাই। এই মেলখেত # বা


কাটাকািট (octothorpe) িচ িদেয় হওয়া সাির েলা তামােক আলাদা আলাদা সািরেত
িলখেত হেব। আর এিট সািরর থেক হেলই ভােলা। তুিম অব সািরর শেষর িদেক চাইেল

১৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৪. মেলখেত ফাঁকা দওয়া (Spacing and Indentation)

সাির টীকা (line comment) িলখেত পােরা যােত বুঝা যায় ওই সািরর র িদেক তুিম আসেল
কী করেত চেয়েছা। তামার মেলখেত লখা কাটাকািট িচ # িদেয় হওয়া সাির েলা সা-
ধারণত সংকলক (compiler) িদেয় ি য়া করা হয় না। আলাদা একিট ম (software) যার
নাম পুব- ি য়ক (preprocessor) সটা িদেয় সংকলন করারও আেগ এই েলা ি য়া করা
হয়, কাজটা বশীর ভাগ সমেয় অব সংকলকই কিরেয় নয়। পূব- ি য়ক (preprocessor)
িবষেয় িব ািরত আেলাচনা আমরা পের করেবা।
#i n c l u d e <iostream> / / যাগান ফলন াত িশর নিথ অ ভু হেলা

কান িববৃিত পুব ি য়ক (preprocessor) না সংকলক (compiler) িদেয় ি য়াকরণ


হেব এটা বুঝার আেরকটা সহজ উপায় আেছ। এইরকম িদিত ; (semicolon) আর মহ ার
(block) জ য বাঁকা ব নী } ব ব ত হয় তা িদেয় শষ হওয়া িববৃিত েলা সাধারণত সংক-
লক িদেয় ি য়াকরন করা হেব, পূব- ি য়ক িদেয় নয়। যাইেহাক, সংকলক িদেয় য সংেক-
ত েলা (code) ি য়া করা হয় স েলা য িভ িভ সািরেতই িলখেত হেব, বা অেনক ফাঁকা
ফাঁকা (space) কেরই িলখেত হেব এ রকম কান কথা নই। তুিম চাইেল তামার পুেরা মেল-

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
5g
খেত থাকা সকল সংকলনেযাগ সংেকত এক সািরেত িলখেত পােরা। যমন উপেরর মেলখেয়র
সংকলনেযাগ অংশটু আমরা চাইেল নীেচর মেতা কের টানা এক সািরেত িলখেত পাির।

using namespace std ; i n t main ( ) { cout << " shuvessa


in
nin " << endl ; ret ur n EXIT SUCCESS ; }

উপের যিদও ই সািরেত দখা যাে আমরা আসেল using থেক কের } পয টানা
am

একসােথ িলেখিছ, িক এখােন পােশর িদেক ােনর তার কারেণ টানা সািরিট ভেঙ ই সাির
হেয় গেছ। তামার স াদেক (editor) এ যিদ পােশর িদেক অেনক জায়গা থােক তুিম এক
সািরেতই িলখেত পারেব। আসেল তম একিট ফাঁকা (space) দয়া বাধ তামুলক হেয় যায়
যখন পরপর েটা শ লখা হয়। যমন using, namespace, std, int, main এইরকম শ
পরপর েটা থাকেল তামােক কমপে একিট ফাঁকা (space) িদেত হেব। েটা িচ যমন ব নী
( ) বা িদিত ; বা আেরা অেনক তীক আেছ, এই েলা পরপর েটা থাকেলও কান সম া নাই।
al

অথ াৎ একািধক তীক কান ফাঁকা না িদেয়ও তুিম একসােথ িলখেত পারেব।


এখন করেত পােরা ফাঁকা দয়া যিদ ব াপার না হয়, তাহেল মেলখ িলখেত কন ফাঁকা
দেবা। বশী বশী ফাঁকা আসেল গণিনর (computer) জ দরকার নই িক দরকার মা েষর
জ । আেগর পােঠর কথা মেন কেরা। আমরা কন টীকা (comment) িলেখিছলাম? টীকা তা
আর িনবািহত হয় না। আমরা যােত অেনকিদন পের মেলখেয়র সংেকত (code) দেখ সহেজ
বুঝেত পাির, আমরা তাই টীকা িলেখিছলাম। তা মেলখ যিদ পুেরাটা একটা ল া সাির হয়,
আমােদর মা েষর পে সটা দেখ বুেঝ ওঠা খুবই ক কর হেব। মুলত আমােদর মা েষর বুঝার
িবধােথ আমরা মেলখ সািরেত সািরেত ভে ভে িলিখ বা দরকার মেতা একসােথ িলিখ।
মেলখেত ফাঁকা দয়ার ব াপারিট বাংলায় বা ইংেরজীেত রচনা লখার মেতাই, কখন তুিম
আলাদা বাক করেব, কখন তুিম আলাদা পিরে দ (para) করেব, কখন তুিম আলাদা অ ে দ
(section) করেব, এই রকম। কান িবষেয়র সােথ বশী স িকত িববৃিত েলা আমরা সাধারণত
পরপর সািরেত কান ফাঁকা (blank line) না িদেয় িলখেবা। আর েটা িবষেয়র সাির েলার মােঝ
হয়েতা এক সাির ফাঁকা িদেয় িলখেবা, আর িবষয় েলার মেধ খুব বশী যাগােযাগ না থাকেল
হয়েতা আমরা ই বা আেরা বশী সাির ফাঁকা িদেয় িলখেবা। তাহেল এখন থেক মেলখ লখার
সময় দরকার মেতা ফাঁকা িদেয় িদেয় িলখেব যােত তামার মেলখ পড়া সহজ হয়।

১৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৫. অ শীলনী সম া (Exercise Problems)

সবেচেয় উপের যভােব আমরা মেলখ িলেখিছ সখােন আেরা একটা ব াপার খয়াল কেরা,
আমরা cout বা return এর িববৃিত েলা লখার আেগ তােদর িনজ িনজ সািরেত বশ িকছুটা
ফাঁকা িদেয় িলেখিছ, একদম সািরর থেক িলিখ নাই। এিট কন করলাম? এিট করলাম এ
কারেণ য ওই েটা সাির আসেল আমােদর মহ ার িভতের আেছ। ল কেরা মহ ার বাঁকা ব নী
েটা কমন দেখই বুঝা যায় য এরা জেন জনার। আর মহ ার িভতেরর িববৃিত েটা কমন
একটু িভতেরর িদেক থাকায় পির ার বুঝা যায় য ওরা আসেলই ওই মহ ার িভতের। তা দরকার
মেতা কান িববৃিত এরকম সািরর একটু িভতেরর িদেক থেক লখার ব াপারিটেক বলা হয় ছাড়ন
দয়া (indentation)। মেলখ লখার সময় এখন থেক তামরা অব ই দরকার মেতা ছাড়ন
িদেয় িলখেব, তাহেল দখেব মেলখ পড়া ও বাঝা কত সহজ হেয় যায়।
এই পযােয় িজে স করেত পােরা, েত ক সািরেত এভােব অত লা কের ফাঁকা চাপেবা কম-
ন এইটা তা িবরি কর। আসেল তামার চাপিনমাঁচায় (keyboard) একটা ল (tab) চাপিন
আেছ, দেখা ওইটা চাপেল একসােথ ৪টা বা ৮টা ফাঁকা (space) এর সমপিরমান ফাঁকা একবাের
আেস। তা দরকার মেতা একবার বা বার ল চাপেলই হেয় গেলা। কােজই মেলখ লখার
সময় কখেনাই এই আলেসিম টু করেব না। ছাড়ন দয়া মেলখ লখার জ পূণ ব াপার,

5g
র দখা যাওয়া আর তাড়াতািড় পড়ার জ দরকারী, মেলখেত কান ভুল থাকেল আমরা
যখন ভুল বর করেত চাই তখনও খুব খুব দরকারী, বড় বড় মেলখ যখন িলখেব তখন ব াপারটা
খািনকটা ঠেক ঠেক িশেখ অিভ তা িদেয় ভােলা কের বুঝেত পারেব।

২.৫ অ শীলনী সম া (Exercise Problems)


in
ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।
am

১. মেলখ (program) বলেত কী বুেঝা? মেলখ িক কবল গণিনেতই িনবাহেযাগ ?

২. িসিপিপ ভাষায় মেলখ তরী হেত সটার ফলাফল দখা পয কী কী ঘটনা ঘেট?

৩. য ালয় (console) কী? এর যাগান (input) ও ফলন (output) য েলা কী কী?

৪. িসিপিপেত িশরনিথ (header file) বলেত কী বুেঝা? আমােদর মেলখ েলােত িশর
al

নিথ iostream ও cstdlib আমরা কন ব বহার কেরিছ?

৫. নামাধার (namespace) কী? বা ব জীবেন ও পিরগণনায় উদাহরণ সহ ব াখ া কেরা।

৬. িসিপিপেত main িবপাতক হেত ফরেতর সময় return 0; না িলেখ তার বদেল return
EXIT SUCCESS; িলখা কন উ ম? ব াখ া কেরা।

৭. মেলখেত ছাড়ন দয়া (indentation) মােন কী? ছাড়ন দয়ার পে -িবপে যুি
িলখ। মেলখ কন বশ ফাঁকা ফাঁকা কের িলখা উিচৎ?

৮. মেলখেত টীকা (comment) লখা কী? মেলখেত টীকা (comment) িলখার কেয়-
কিট কারণ ব াখ া কেরা? সাির (line) টীকা ও মহ া (block) টীকা কী?

৯. একিট িসিপিপ মেলখেত (program) নীেচর কান িবপাতকিট অব ই থাকেত হেব?

২০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৫. অ শীলনী সম া (Exercise Problems)

ক) start( ) খ) system() গ) main() ঘ) program()

১০. মেলখ সফল ভােব শষ হেল main িবপাতক হেত সাধারণত কত ফরত পাঠােনা হয়?

ক) −1 খ) 0 গ) 1 ঘ) িকছুই না

১১. িসিপিপেত মহ া (block) বুঝােনার জ নীেচর কান েলা ব বহার করা হয়?

ক) { } খ) < > গ) ( ) ঘ) begin end

১২. িসিপিপেত একিট িববৃিতর (statement) শেষ সাধারণত কান িচ ব বহার করা হয়?

ক) . খ) ; গ) : ঘ) ,

খ) ∗∗ টীকা ∗∗
5g
১৩. িসিপিপেত নীেচর কানিট সিঠক টীকা (comment)?

ক) ∗/ টীকা ∗/ গ) /∗ টীকা ∗/ ঘ) { টীকা }


in
পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয
ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
am

কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

১. নীেচর কথা েলা ফলেন (output) দখােনার জ িসিপিপেত একিট মেলখ িলেখা।
দখেত র লাগার জ তামার মেলখেত দরকার মেতা ফাঁকা ফাঁকা িদেব আর সহেজ
বুঝার জ দরকার মেতা টীকা (comment) িলখেব।
tomar boyosh noy bosor .
al

porigonona s h i k h t e chao ?
porigonona k i sohoj na !

২. িসিপিপেত একিট মেলখ রচনা কেরা যিট নীেচর নকশািটর মেতা নকশা তরী কের।
খয়াল কের দেখা নকশািট বাংলা অ 8 এর মেতা। তুিম চাইেল আেরা নানান নকশা,
নানান বণ বা অ িনেজর মেতা কের ভেব িনেয় সইমেতা নকশা তরী করেত পােরা।
যাইেহাক দখেত র লাগার জ তামার মেলখেত দরকার মেতা ফাঁকা ফাঁকা িদেব
আর সহেজ বুঝার জ দরকার মেতা টীকা (comment) িলখেব।
∗∗ ∗∗ ∗
∗ ∗
∗ ∗ ∗
∗ ∗
∗∗ ∗∗ ∗

২১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৫. অ শীলনী সম া (Exercise Problems)

পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন যােত
একটু সাহায কবল পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. নীেচর কথা েলা ফলেন (output) দখােনার জ িসিপিপেত একিট মেলখ িলেখা।
দখেত র লাগার জ তামার মেলখেত দরকার মেতা ফাঁকা ফাঁকা িদেব আর সহেজ
বুঝার জ দরকার মেতা টীকা (comment) িলখেব।
tomar boyosh noy bosor .
porigonona s h i k h t e chao ?
porigonona k i sohoj na !

িফিরি ২.৫: অণুে রণার মেলখ (Inspiring Programming)


#i n c l u d e <iostream> / / cout ব বহার করার জ
#i n c l u d e <c s t d l i b> / / EXIT SUCCESS এর জ

i n t main ( )
{
5g
using namespace std ; / / িমত নামাধার ব বহােরর জ
in
/ / দরকারী কথা েলা ফলেন দখাও
cout << " tomar boyosh noy bosor . " << endl ;
cout << " porigonona s h i k h t e chao ? " << endl ;
am

cout << " porigonona k i sohoj na ! " << endl ;

ret u rn EXIT SUCCESS ; // সফল সমাি


}
al

২. িসিপিপেত একিট মেলখ রচনা কেরা যিট নীেচর নকশার মেতা নকশা তরী কের। খ-
য়াল কের দেখা নকশািট বাংলা অ 8 এর মেতা। তুিম চাইেল আেরা নানান নকশা, নানান
বণ বা অ িনেজর মেতা কের ভেব িনেয় সইমেতা নকশা তরী করেত পােরা। যাইেহাক
দখেত র লাগার জ তামার মেলখেত দরকার মেতা ফাঁকা ফাঁকা িদেব আর সহেজ
বুঝার জ দরকার মেতা টীকা (comment) িলখেব।
∗∗ ∗∗ ∗
∗ ∗
∗ ∗ ∗
∗ ∗
∗∗ ∗∗ ∗

এই মেলখিট িক অেনক মজার তাই না। তুিম িক বণমালার িতটা বণ আর ০-৯ দশটা
অে র জে ই এরকম নকশা তরী করেত পারেব? রা াঘােট বা িবেয় বািড়েত অেনক সময়
ছাট ছাট বািত িদেয় নানান িকছু লখা হয়, আসেল এই নকশা েলার মেতা কের নকশা
বািনেয়ই স েলা করা হয়। গণিনেত (computer) এর নজিরর (monitor) পদায়ও

২২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৬. গণনা পিরভাষা (Computing Terminologies)

অেনক িকছু এভােব দখােনা হয়। আসেল য কান ছিবই এরকম অসংখ িব র সম েয়
তরী, িকছু িব ালােনা, িকছু িব নভােনা। য িব েলা ালােনা স েলা হেলা ∗
আর য েলা নভােনা স েলা ফাঁকা। তা চেলা আমরা মেলখিট দিখ।

িফিরি ২.৬: নকশা আঁকার মেলখ (Program Drawing Designs)


#i n c l u d e <iostream> / / cout ব বহার করার জ
#i n c l u d e <c s t d l i b> / / EXIT SUCCESS এর জ

using namespace std ; / / িমত নামাধার ব বহােরর জ

i n t main ( )
{
/ / দরকার মেতা ∗ ও ফাঁকা িদেয় নকশা
cout << " ∗∗ ∗∗ ∗ " << endl ;
cout << " ∗ ∗ " << endl ;
cout << " ∗ ∗ ∗ " << endl ;
cout << " ∗ ∗ " << endl ;
cout << " ∗∗ ∗∗ ∗ " << endl ;

ret ur n EXIT SUCCESS ;


5g
// সফল সমাি
in
}
am

২.৬ গণনা পিরভাষা (Computing Terminologies)


• কাটাকািট (octothorpe) # • নজির (monitor)

• মেলখ (program) • নামাধার (namespace)


al

• গণিন (computer) • িনেদশ (instruction)

• চাপিন (keyboard) • িনবাহ (execution)

• চালােনা (run) • িনবাহেযাগ (executable)

• ছাড়ন দয়া (indentation) • পরািমিত (parameter)

• জালপাতা (webpage) • পিরে দ (para)

• িটপিন (mouse) • পুব- ি য়ক (preprocessor)

• টীকা (comment) • পূণক (integer)

• িট (error) • িমত (standard)

• িদিত (semicolon) ; • ফলন (output)

২৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

২.৬. গণনা পিরভাষা (Computing Terminologies)

• ফলন য (output device) • শরীর (body)


• বাতা (message) • িশর নিথ (header file)
• িবপাতক (function) • সংকলক (compiler)
• িববৃিত (statement)
• সংকলন (compile)
• ম (software)
• সংকলন কালীন (compile-time)
• মহ া (block)
• সংেকত (code)
• মহ া টীকা (block comment)
• মালা (string) • সংখ া (number)

• য ালয় (console) • স াদনা (editor)

• যাগান (input)

5g • সাির টীকা (line comment)


in
am
al

২৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৩

চলক ও বক
(Variables and Constants)

5g
চলেকর (variable) মান (value) বদলােনা যায় িক বেকর (constant) মান বদলােনা যায়
না। মেলখেত উপা (data) সরাসির (directly) না িলেখ চলক বা বেকর মাধ েম ব বহার
করেল একরকেমর পেরা তা (indirection) তরী হয়। ফেল উপা িঠক কেতা সটা না ভেব
উপা িট কীেসর আর তার ি য়াকরণ কমন সটা ভেব মেলখ তরী সহজ হেয় যায়।
in
৩.১ চলেকর ব বহার (Using Variables)
am

একিট আয়েতর দঘ ৫ িমটার, ৩ িমটার। িসিপিপ ভাষায় এই প আয়েতর ফল ও পির-


সীমা বর করার মেলখ (program) রচনা কেরা। এই মেলখেত তামােক চলক (variable)
ব বহার করেত হেব, সরাসির সূ থেক ফলন (output) দয়া যােব না।
আমরা আেগ এই সম ার জ সংি মেলখটা দিখ যটােত চলক ব বহার না কের
একদম সরাসির সূ ব বহার কের ফল ফলেন (output) দখােনা হেব। আমরা জািন দঘ
আর ে র ণফল হল ফল আর দঘ ও ে র যাগফেলর ি ণ হেলা পিরসীমা।
al

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
cout << " k h e t r o f o l holo " << 5 ∗ 3
<< " borgometer " << endl ;
cout << " porishima holo " << 2∗ ( 5+ 3 )
<< " meter " << endl ;

ret ur n EXIT SUCCESS ;


}

২৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.১. চলেকর ব বহার (Using Variables)

উপের আমরা য মেলখ িলখলাম আমরা িক ওইটা চাই না। ওইখােন সংখ া েলা সরাসির
ে বিসেয় িহসাব কের ফলন (output) দখােনা হেয়েছ। আমরা চাই ফল আর পিরসীমার
সূ েলা চলেকর নাম িদেয় িলখেত আর সূ িলখার আেগ চলক েলার মান িদেয় িদেত। চলক
ব বহােরর নানান িবধা আেছ। যমন একিট িবধা হেলা ে চলেকর নাম থাকায় সূ দেখই
সহেজ বুঝা যায় কীেসর সূ , যমন নীেচর মেলখ দেখা। আর একিট িবধা হেলা কউ যিদ
বেল ৫ না দঘ হেব ৬, উপেরর মেলখেত িক ইখােন 5 বদলাইয়া 6 করেত হেব। ছাট
একটা মেলখেতই যিদ ইখােন বদলােত হয়, তাহেল বড় একিট মেলখেয়র কথা িচ া কেরা,
সটােত আেরা কত জায়গায় য বদলােত হেব ইয় া নাই। আমরা এ কারেণ চলক ব বহার করেবা।
িফিরি ৩.১: মেলখেত চলেকর ব বহার (Variables in Programs)
#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
5g
i n t doirgho ; / / এই চলেক থাকেব বেগর দঘ ।
i n t prostho ; / / এই চলেক থাকেব বেগর
i n t k h e t r o f o l ; / / এই চলেক থাকেব বেগর

ফল।
in
i n t porishima ; / / এই চলেক থাকেব বেগর পিরসীমা।

doirgho = 5 ; // দেঘ র এই মান বেল দয়া আেছ


am

prostho = 3 ; // ে র এই মান বেল দয়া আেছ।

// ফল বর করার সূ হল দঘ আর ে র ণফল।
k h e t r o f o l = doirgho ∗ prostho ;

/ / পিরসীমা বর করার সূ হল দঘ ও ে র যাগফেলর ি ন


al

porishima = 2∗ ( doirgho + prostho ) ;

/ / এবার ফল আর পিরসীমা ফলন দয়া হেব


cout<< " k h e t r o f o l holo " << k h e t r o f o l
<< " borgometer " << endl ;
cout << " porishima holo " << porishima
<< " meter " << endl ;

ret ur n EXIT SUCCESS ;


}

ফলন (output)
k h e t r o f o l holo 15 borgometer
porishima holo 16 meter

২৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.১. চলেকর ব বহার (Using Variables)

উপেরর মেলখেত খয়াল কেরা আমরা দঘ , , ফল, আর পিরসীমার জ চারটা চলক


িনেয়িছ যােদর নাম হেলা doirgho, prostho, khetrofol, porishima। তুিম িক চাইেল
এই নাম েলা ইংেরজী শে ও িদেত পারেত যমন length, width, area, perimeter। তু-
িম চাইেল আবার শ েলার থম অ র িনেয় এক অ েরর নামও িদেত পারেত যমন l , w, a
, p। তেব আমরা সবসময় চাই এমন নাম িদেত যােত নাম েলা দখেলই বুঝা যায় ওই চলকটা
কী কােজ ব বহার হেব। এক অ েরর নাম িদেল অেনক সময় বুঝা যায় িক একই অ র িদেয়
যিদ একািধক চলেকর নাম হয়, তাহেল মুশিকল হেয় যায়। অেনেক আবার খািল x, y, z,
অথবা a, b, c এই রকম নাম দয়। ওই রকম নাম িদেল পের মেলখ বুঝেত তামার িনেজর
বা অ কউ য পড়েব তার খুবই সম া হেব। সময় ন কের বর করেত হেব কান চলক আস-
ল কী কােজ ব বহার করা হেয়েছ। কােজই সবসময় অথেবাধক আর যেথ বড় নাম িদেত চ া
করেব, যােত নাম দেখই তার উে বুঝা যায়। িসিপিপেত চলেকর অথেবাধক (semantic) ও
গঠনিস (syntax) নাম দয়ার িবষেয় আমরা পেরর কান পােঠ িব ািরত আেলাচনা করব।
এখন একটা িবষয় খয়াল কেরা আমরা এখােন চলক েলার নােমর আেগ িলেখিছ int য-
টা আসেল integer এর সংি । integer হল পূণক বা পূণ সংখ া। আমরা চলেকর নােমর

5g
আেগ এই রকম int িলেখ বুিঝেয়িছ য আমােদর এই চলক েলার মান হেব পূণক, আমরা কান
ভ াংশ ব বহার করেবা না। তুিম যিদ ভ াংশ ব বহার করেত চাও তাহেল তামােক int এর বদেল
float িলখেত হেব। float হল একরকেমর ভ াংশ। আমরা সই আেলাচনা পের আেরা িব ািরত
করেবা। তেব int এর বদেল float িলখেল আমােদর মেলখেত িক আর কাথাও কান িকছু
বদলােত হেব না, িঠক কাজ করেব। আমরা আপাতত int রেখই এই পােঠর আেলাচনা চালাই।
in
তা উপেরর মেলখেত আমরা যখন িলখলাম int doirgho; এর মােন হেলা doirgho
নােমর আমােদর একটা চলক আেছ আর তার মান হেব পূণক। এইেয int doirgho; িলেখ এই
িবষয় েলা বুঝাইলাম এটােক বলা হয় চলক ঘাষনা (variable declaration)। চলক ঘাষ-
am

না করেল তারপর থেকই চলকিট পরবতী যেকান িববৃিতেত (statement) ব বহার করা যায়,
িক ঘাষনা করার সােথ সােথ ওইখােন চলেকর মান কত সইটা িক আমরা জািননা, সাধারনত
চলেক তখন একটা উ াপা া মান থােক। এইটা িনেয় আমরা পের আেরা আেলাচনা করেবা।
এই মেলখেত আমরা দখিছ এর পের doirgho = 5; িলেখ অথাৎ = িচ ব বহার কের আমরা
doirgho চলেকর মান আেরাপ (value assign) কেরিছ 5। তরাং এরপর থেক doirgho
চলেকর মান হেব 5। একই ভােব prostho চলেকর মানও আমরা 3 আেরাপ কেরিছ।
al

এবার খয়াল কেরা, চলেকর মান আেরাপণ শষ হেল আমরা ফল আর পিরসীমার সূ -


েলা িলেখিছ, সখােন িক এবার মান েলা সরাসির িলিখ নাই, তার বদেল চলক েলা ব বহার
কেরিছ। এইখােন িহসাব করার সময় চলেকর য মান থাকেব সইটাই আসেল ব বহার হেব। উপ-
র যিদ doirgho চলেকর মান থােক 5 তাহেল 5 ধের িহসাব হেব, আর যিদ পের doirgho এর
মান 5 এর বদেল 6 কের দয়া হয়, তাহেল 6 ব বহার হেব। এই পিরবতন কবল মান আেরাপেণর
ওইখােন করেলই কাজ হেয় যােব, সারা মেলখেত করেত হেব না। তেব একটা পূণ িবষয়
বিল এখােন doirgho আর prostho চলক িটেত মান আেরাপণ িক ফল আর পিরসীমার
ে র ব বহােরর আেগই করেত হেব। না করেল সংকলন করার সময় সতক বাতা (warning
message) আসেত পাের, আর মেলখ চালােনার সময় উে াপা া ফলও আসেত পাের।
সবেশেষ খয়াল কেরা ফলন (output) দওয়া হেয়েছ যখােন সখােন উ ৃিত িচ "" এর
িভতের যা আেছ তা িক মালা (string)। কােজই ওইটা িক ওইভােবই ফলেন এেসেছ এমনিক
khetrofol কথাটাও ব এেসেছ যটা িকনা চলেকর নােমর ব একই রকম। িক "" উ ৃিতর
বাইের যখন khetrofol লখা হেয়েছ একই সািরেত পেরর িদেক সখােন িক আর khetrofol
ফলেন আেস িন, এেসেছ সটােক চলক ধরেল য মান হওয়ার কথা সই 15। কােজই এটা মেন
রাখেব য চলেকর নাম "" উ ৃিতর িভতের মালা আকাের থাকেল ওইটা আসেল চলকটােক বুঝায়

২৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.২. বেকর ব বহার (Using Constants)

না। নামটা যখন উ ৃিতর বাইের থােক তখন ওইটা একটা নাম হয়, এইে ে একটা চলেকর নাম
হয় আর ওইটার মান িনেয় কাজ হয়। একই অব া porishima এর ে ও। উ ৃিত িচে র
িভতের থাকা porishima কথািট ব ফলেন এেসেছ িক উ ৃিতর বাইের থাকা porishima
কথািটর বদেল ওিটেক চলক ধরেল য মান পাওয়া যােব তা ফলেন এেসেছ।

৩.২ বেকর ব বহার (Using Constants)


একিট বৃে র ব াসাধ দয়া আেছ ৫ সিম, বৃ িটর ফল িনণেয়র জ িসিপিপেত একিট ম-
লখ (program) রচনা কেরা। তামার মেলখেত তুিম ব াসােধর জ একিট পূণক (integer)
ব বহার করেব। আর ফেলর জ থেম পূণক ব বহার কের দখেব কী হয়, তারপর ভ ক
(fraction) অথাৎ সচলিব সংখ া (floating-point number) বা float ব বহার করেব।
তুিম তা জােনা বৃে র ফল িহসাব করার জ আমােদর পাইেয়র মান লাগেব। আমরা ওইটা
সরাসির সংখ ায় না িদেয় একটা বক (constant) িহসােব ব বহার করেবা, কারণ পাইেয়র মান

িফিরি ৩.২:
5g
তা কখেনা বদলােব না, সব সময় বক থাকেব। পাইেয়র মান যেহতু ভ ক আমােদর বকিট
তাই হেব float বক। চেলা আমরা এবার তাহেল মেলখিট দিখ।

মেলখেত বেকর ব বহার (Constants in Programs)


#i n c l u d e <iostream>
in
#i n c l u d e <c s t d l i b>

using namespace std ;


am

i n t main ( )
{
i n t bashardho = 5 ; / / এিট বৃে র ব াসােধর জ চলক

f l o a t const p a i = 3 . 1415 ; / / পাইেয়র মােনর জ বক


al

/ / নীেচ আমরা বৃে র ফেলর সূ িলখিছ


i n t k h e t r o f o l = p a i ∗ bashardho ∗ bashardho ;

/ / এবার আমরা পদায় ফলন দখােবা।


cout << " b r i t t e r k h e t r o f o l " << k h e t r o f o l
<< " borgo cm" << endl ;

ret ur n EXIT SUCCESS ;


}

ফলন (output)
b r i t t e r k h e t r o f o l 78 borgo cm

২৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.২. বেকর ব বহার (Using Constants)

তা হেয় গল আমােদর বৃে র ফল িনণেয়র মেলখ। এই রকম চলক (variable) আর


বক (constant) ব বহার না কেরই তুিম িক মেলখ িলখেত পারেত, তাই না! আমরা িক
সটা আেগর পােঠ এটা আেলাচনা কেরিছ। সে ে main() িবপাতেকর {} ব নী েটার মেধ
return EXIT SUCCESS; এর আেগ মা এক সািরেত cout << "britter khetrofol "
<< 3.1415 ∗ 5 ∗ 5 << " borgo cm" << endl; িলখেলই আমােদর কাজ হেয় যেতা।
িক আমরা সটা না কের কন চলক ব বহার করিছ সটাও ওই একই পােঠ আেলাচনা কেরিছ।
এবার আিস আমরা য মেলখিট িলখলাম সটার িব ািরত আেলাচনায়। আমরা #include
, using namespace, int main(), return ইত ািদ স েক ইত মেধ জেনিছ আেগর পাঠ-
েলা থেক, কােজই আমােদর আেলাচনা সীমাব থাকেব main() িবপাতেক আর যা যা িলেখিছ
সই িবষয় েলােত। তা চেলা আমরা এবার সািরর পের সাির ধের আেলাচনা কির।
উপের যমন বলা হেয়েছ, সই অ যায়ী আমরা থেম ব াসােধর জ একটা চলক িনেয়িছ
bashardho নােম যিট হেব int ধরেনর অথাৎ পূণক বা পূণ সংখ া। বৃে র ব াসাধ যিদ তামার
ভ ক হয়, তুিম চাইেল int ব বহার না কের float ব বহার করেত পােরা। আেগর পােঠর সােথ
এই পােঠ একটা িবষয় খয়াল কেরা, আমরা িক ব াসাধ bashardho চলেকর মান আলাদা

5g
সািরেত না িদেয় যখােন চলক ঘাষনা (variable declare) কেরিছ সখােনই = িচ িদেয় মান
আেরাপ কেরিছ অথাৎ bashardho এর মান সরাসির 5 হেয় গেছ। এটােক বলা হয় চলেকর
আিদ মান আেরাপণ (initial value assignment)। এটা করার েটা িবধা: একটা হেলা
আমােদর ইটা আলাদা সািরেত ইবার িলখেত হেলা না, আেরকটা হেলা চলেক উ াপা া মান
থাকার কারেণ মেলখেয় ভুল িহসাব করার স াবনা কেম গল। জেন রােখা চলক ঘাষনার সােথ
in
সােথ কান মান না িদেয় না িদেলও ওখােন উ া পা া একটা মান থােক, কী মান থাকেব আমরা
িক কান ভােবই আেগ থেক সটা জািননা, পুরাই উ াপা া একটা মান হেত পাের সটা। আর
ভুল েম ওই চলেক যিদ পের আর মান আেরাপ (assign) করা না হয়, অথবা যিদ আেরাপ করার
am

আেগই অ কান িহসােব চলকিট ব বহার করা হয়, তাহেল স ত কারেণই উ াপা া মানিট
কােজ লািগেয় একটা উ াপা া ফলাফল আসেব, যটা আমরা কখেনাই চাই না।
ব াসােধর জ চলক নয়ার পের আমরা পাইেয়র মান রাখার জ একিট float const
ধরেনর বক নেবা যার নাম pai। পাইেয়র মান যেহতু ভ সংখ া আমােদর তাই float িনেত
হেব, আর পাইেয়র মান যেহতু সব সময় বক তাই আমরা float এর পের const িলেখ িদেত
চাই। তুিম যিদ const না িলেখা তাহেল িক এটা একটা চলেকর মেতা কাজ করেব।
al

i n t cholok = 15 ; / / একটা চলক ঘাষনা কের যার মান িদলাম 15


i n t const dhrubok = 20 ; / / একটা বক ঘাষনা করলাম মান 20

/ / এখন পয চলক cholok এর মান 15 , নীেচ নতুন মান দেবা 23


/ / আবার মান আেরাপ না করা পয cholok এর মান থাকেব 23

cholok = 23 ; / / এটা করা যােব

// এখন পয বক dhrubok এর মান 20 , নীেচ নতুন মান দেবা 25


// িক মেলখ সংকলন ( compile ) করার সময় আমরা িটবাতা পােবা।
// cpp . sh িদেয় সংকলন করেল িটবাতািট িন প হেত পাের
// e r r o r : assignment of read−only v a r i a b l e ' dhrubok '

dhrubok = 25 ; / / এটা করা যােব না , িট বাতা আসেব

২৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৩. চলক ঘাষনা (Variable Declarations)

উপেরর মেলখ ল কেরা। চলক আর বেকর মেধ তফাৎ হেলা চলেকর (variable)
মান ঘাষনার সময় একবার আেরাপ করা যায়, আর তারপেরও যতবার ই া ততবার নতুন নতুন
মান আেরাপ (assign) করা যায়। িক বেক (constant) একটা মান কবল ঘাষনা করার
সময় বেল দওয়া যায়, মেলখেত পের আর কাথাও ওই বেকর মান বদেল নতুন মান আেরাপ
(assign) করা যায় না। যিদ কেরা তাহেল সংকলক (compiler) িট বাতা (error message)
দখােব। তা আমরা যেহতু জািন য পাইেয়র মান সবসময় বক, এটার মান আমােদর কখেনা
বদল হেব না, আমরা তাই এটােক চলক িহসােব ঘাষনা না কের বক িহসােব ঘাষনা করেবা।
আশা করা যায় চলক আর বেকর পাথক পির ার হেয়েছ। এবার দেখা আমােদর বৃে র
ফেলর মেলখেত আমরা ফেলর জ khetrofol নােম একটা চলক িনেয়িছ, যার -
করণ হল int বা পূণক. যিদও আমরা জািন পাইেয়র মান ভ ক হওয়ার কারেণ আমােদর ফলাফল
আসেল একিট ভ ক হেব। এইটা আমরা মুলত পরী ামুলক করিছ। তা int নয়ার কারেণ আমরা
আমােদর মেলখেয়র ফলন দখেত পােবা 78 আসেল হওয়ার কথা 78.5375। এইটা কন হেলা
কারণ হেলা থেম 78.5375 িঠক মেতা িভতের িভতের িহসাব হেয় যােব, িক যখন khetrofol
চলেকর মেধ মানটা আেরাপ (assign) হেব তখন যেহতু পূণ সংখ া বেল ভ াংশটু ঢুকােনা যা-
ব না, তাই ওইটা বাদ পের যােব (truncation)। আর মান যটা আেরাপ হেব সটা হেলা বাঁকী

5g
পূণাংশটু বা 78। তা ভ াংশ সহ সিঠক ফল পাওয়ার জ khetrofol এর সামেন int না
িলেখ float িলেখ দাও তাহেল দখেব িঠক িঠক 78.5375 ই ফলন িহসােব চেল আসেব।
উপেরর আেলাচনায় আমরা িতনটা ব াপার িশখলাম: ১) আমরা চলক (variable) না বক
(constant) ব বহার করেবা সটা; তারপর ২) ঘাষনা করার সােথ সােথ একটা আিদ মান িদেয়
in
দয়া যােক বলা হয় আিদ মান আেরাপণ (initial assignment), আর ৩) কান চলক বা বেকর
করণ কমন হেব, int না float হেব, পূণক না ভ ক হেব সটা আেগ থেক ধারনা করেত
পারেত হেব, আর সই অ যায়ী চলক বা বেকর কার বেল িদেত হেব, না হেল সিঠক ফলাফল
am

নাও পাওয়া যেত পাের, যমন 78.5375 এর বদেল 78 পাওয়া যেত পাের।

৩.৩ চলক ঘাষনা (Variable Declarations)


এই পােঠ িসিপিপেত একািধক চলক (variable) আমরা কী ভােব সহেজ ঘাষনা (declaration)
al

করেত পাির তা আেলাচনা করেবা। আমরা আেগ দেখিছ িতিট চলক আলাদা আলাদা কের, এম-
নিক আলাদা আলাদা সািরেত ঘাষনা করেত। তা িবধার জ আমরা চাইেল একািধক চলক
এক সািরেতই একটা িববৃিতেতই ঘাষনা করেত পাির, যিদ তােদর সকেলর উপা করণ (data
type) একই হয়, যমন ওই চলক েলার সবই যিদ int ধরেনর হয় অথবা float ধরেনর হয়।
উদাহরণ িদেয় ব াপার েলা পির ার করা যাক। ধেরা doirgho, prostho, porishima নােম
আমরা িতনিট চলক িনলাম, িতনটা চলেকর করণই int অথাৎ পূণক বা পূণসংখ া।
i n t doirgho ; / / দেঘ র জ চলক যা i n t ধরেনর অথাৎ পূণক
i n t prostho ; / / ে র জ চলক যা i n t ধরেনর অথাৎ পূণক
i n t porishima ; / / পিরসীমার জ চলক যা i n t ধরেনর অথাৎ পূণক

উপেরর িতনিট চলকই যেহতু int ধরেনর, কােজই আমরা ওই িতনিট চলকেক চাইেল একিট
িববৃিতেতই (statement) ঘাষনা করেত পাির। সে ে আমােদর int একবার িলখেত হেব,
আর চলক েলার নাম একটার পর একটা িবিত , (comma) িদেয় িলখেত হেব।
i n t doirgho , prostho , porishima ; / / সব েলাই i n t ধরেনর

৩০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৪. আিদমান আেরাপণ (Initial Assignment)

এবার আর একিট উদাহরণ দিখ, যখােন বৃে র ব াসাধ আর ফল বর করেত হেব। তা


ব াসাধ যিদ int ধরেনর বা পূণক হয় আর ফল তা float ধরেনর বা ভ ক হেবই। কােজই
আমরা এ েটােক একটা িববৃিত (statement) িদেয় ঘাষনা করেত পারেবা না।
i n t bashardho ; / / ব াসােধর জ চলক i n t ধরেনর।
float khetrofol ; // ফেলর জ চলক f l o a t ধরেনর

িক যিদ porishima এর মেতা bashardho টাও float বা ভ ক ধরেনর হেতা তাহেল


আমরা এক িববৃিত িদেয়ই েটােক এক সােথ ঘাষনা করেত পারতাম।
f l o a t bashardho , k h e t r o f o l ; / / ব াসাধ ও ফেলর চলক

তাহেল একটা মেলখেতই (program) যিদ আমরা আয়েতর পিরসীমা আর বৃে র ফল


বর করেত চাই, আমরা দরকারী সব েলা চলক নীেচর মেতা কের ঘাষনা করেত পাির, যখােন
int চলক েলা একটা িববৃিতেত (statement) থাকেব আর float চলক েলা আলাদা আের-
কটা িববৃিতেত থাকেব। মেন রেখা আমরা িক এই পাঁচিট চলেকর েত কেক আলাদা আলাদা

5g
িববৃিতেত িলখেতই পারতাম। এখােন আমরা বরং সটা না করা িনেয়ই আেলাচনা করিছ।
i n t doirgho , prostho , porishima ; / / দঘ ,
f l o a t bashardho , k h e t r o f o l ; / / ব াসাধ ও ফল
, পিরসীমা
in
৩.৪ আিদমান আেরাপণ (Initial Assignment)
am

আেগর পােঠ আমরা একািধক চলক (variable) ঘাষনা (declaration) িনেয় আেলাচনা কের-
িছ। এখন আমরা এেদর আিদ মান (initial value) আেরাপ (assign) করার িদেক নজর দই।
আিদমান হল থমবােরর মেতা য মান িদেয় দওয়া হয় সই মানিট। ঘাষনা দয়ার পের চলেক
আলাদা কের আিদ মান আেরাপ করেত চাইেল আমরা নীেচর মেতা কের করেবা।
doirgho = 6 ;
prostho = 3 ;
al

bashardho = 5 ;

অথবা চাইেল এক িববৃিতেত এক সােথও করা স ব, িবিত , (comma) িদেয়।


doirgho = 6 , prostho = 3 , bashardho = 5 ;

আমরা িক চাইেল আিদমান েলা নীেচর মেতা ঘাষনার সােথ সােথই িদেত পারতাম।
i n t doirgho = 6 , prostho = 3 , porishima ;
f l o a t bashardho = 5 , k h e t r o f o l ;

ঘাষনার সােথ সােথ চলেকর আিদমান িদেল মেলখেয়র (program) দ তা অ একটু


বাড়েত পাের। কারণ ঘাষনার সােথ সােথ আিদমান না িদেলও একটা উ াপা া মান তা িভতের
িভতের দয়াই হয়, পের যখন আমরা আবার মান দই, তখন আেরকবার দওয়া হেলা, থমবােরই
দওয়া হেলা না। আর ঘাষনার সােথ সােথ আিদমান িদেল, একদম থমবােরই মানিট চলেক
দওয়া হেয় গেলা। বেকর ে িক আিদ ও একমা মান ঘাষনার সােথ সােথই িদেত হেব,
পের দয়ার কান েযাগ নাই, সংকলক (compiler) িট বাতা দখােব।

৩১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৪. আিদমান আেরাপণ (Initial Assignment)

কান চলক ঘাষনার সােথ সােথ তােত কান আিদমান না িদেলও য উ াপা া মান থােক
সটা কত তা যিদ জানেতা চাও তেব পরী া কের দখেত পােরা। ধেরা তামার চলক doirgho।
এখন ঘাষনার পেরই cout << "doirgho holo " << doirgho << endl; িলেখ ম-
লখ সংকলন (compile) কের চািলেয় (run) দখেত পােরা। িক মেন রাখেব িতবার চালােল
য একই মান আসেব তার কান িন য়তা নাই, যিদ আেস সটা নহােয়ত কাকতাল।
আমরা আেগই জািন বৃে র ফল িনণেয়র জ আমােদর পাইেয়র মান দরকার হেব, যিট
একিট বক (constant) আর পাইেয়র মান আসেলই ভ ক বা float। িক float হওয়া সে ও
আমরা িক পাইেয়র জ pai নামক চলকিটেক bashardho আর khetrofol এর সােথ একই
িববৃিতেত ঘাষনা করেত পারেবা না। কারণ bashardho ও khetrofol হল চলক (variable)
যােদর মান পের যতবার ই া বদলােনা যােব আর pai হল বক (constant) যার মান একবার
দওয়ার পের আর বদলােনা যােব না। পাইেয়র মান তাই আলাদা কের ঘাষনা করেত হেব।
i n t doirgho = 6 , prostho = 3 , porishima ;
f l o a t bashardho = 5 , k h e t r o f o l ;
f l o a t const p a i = 3 . 1415 ; / / পাইেয়র মােনর জ বক

5g
আমােদর যিদ একািধক float constant থােক স েলােক আবার এক িববৃিতেতই ঘা-
ষনা করেত পারেবা, যমন পাই আর g এর মান ঘাষনা করিছ নীেচ। তামরা জােনা িজ হল
মাধ াকষেনর রেণর মান, যা িনিদ ােন মাটামুিট একটা বক।
in
f l o a t const p a i = 3 . 1415 , g = 9 . 81 ;

পিরসীমা আর ফেলর জ আমােদর সূ িলখেত হেব, স েলােক িবিত , (comma)


িদেয়ই এক িববৃিতেত লখা স ব, যমন নীেচ িলখলাম।
am

i n t doirgho = 6 , prostho = 3
i n t porishima = doirgho ∗ prostho ;
f l o a t bashardho = 5 ;
f l o a t k h e t r o f o l = p a i ∗ bashardho ∗ bashardho ;
f l o a t const p a i = 3 . 1415 ;
al

উপের যা িলখলাম তােত িক একটা িট আেছ, সংকলন (compile) করেত গেলই িট


ধরা পড়েব। িটিট হল আমরা pai ঘাষনা কেরিছ প ম িববৃিতেত, িক pai ব বহার কেরিছ চতুথ
িববৃিতেত khetrofol এর সূ িলখেত িগেয়ই। কান চলক ঘাষনা করার আেগ সটা ব বহার
করা যােব না, সংকলক যখন চেল (run) তখন স এেক এেক িববৃিত েলা উপর থেক নীেচ আর
বােম থেক ডােন পড়েত থােক। তা কান চলক বা বক ঘাষনার আেগই যিদ সংকলক তােদর
ব বহারটা পেড় ফেল যমন pai, তাহেল স বুঝেত পারেব না pai টা কী িজিনস, এইটা িক চলক
নািক বক, এটা িক int ধরেনর নািক float ধরেনর। আমােদর তাই ঘাষনা অব ই আেগ
করেত হেব, ব বহার করেত হেব পের। তা চেলা নীেচ আমরা পাইেয়র ঘাষণা আেগ িলিখ।
i n t doirgho = 6 , prostho = 3 ;
i n t porishima = doirgho ∗ prostho ;
f l o a t const p a i = 3 . 1415 ; / / ঘাষনা আেগ করা হেলা
f l o a t bashardho = 5 ;
f l o a t k h e t r o f o l = p a i ∗ bashardho ∗ bashardho ;

৩২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৫. অ শীলনী সম া (Exercise Problems)

ল কেরা doirgho, prostho, bashardho এর জ িক উপেরর ওই িট ঘেট িন,


কারন ে ব বহােরর আেগই তা ও েলা ঘাষনা হেয়েছ, যিদও একই সািরেত িক বােমর িব-
ষয় েলা যেহতু ডােনর েলার থেক আেগ, তাই ঘাষনা আেগই হেয়েছ। আমরা অব উপেরর
মেতা কের সূ ও একই িববৃিতেত না িদেত বলেবা। তােত পড়ারও িবধা হয়, আবার আেগ িলখেবা
না পের িলখেবা সই সম াও র হয়। তাহেল পুেরা ব াপারিট দাঁড়াে নীেচর মেতা:
i n t doirgho = 6 , prostho = 3 , porishima ;
f l o a t const p a i = 3 . 1415 ;
f l o a t bashardho = 5 , k h e t r o f o l ;

porishima = doirgho ∗ prostho ;


k h e t r o f o l = p a i ∗ bashardho ∗ bashardho ;

৩.৫ অ শীলনী সম া (Exercise Problems)


ধারণাগত

১.
: নীেচ িকছু ধারণাগত রেয়েছ।
5g
েলার উ র িনেজ িনেজ বর করেব।

মেলখেত (program) চলক ও বক কন ব বহার করা হয়? কারণ েলা উে খ কেরা।


in
২. মেলখেত (program) চলক ঘাষনা বলেত কী বুঝ, যথাযথ উদাহরণ িদেয় দখাও।

৩. চলেক (variable) মান আেরাপণ (value assign) বলেত কী বুঝ? ব াখ া কেরা।


am

৪. কখন তুিম চলক (variable) ব বহার না কের বক (constant) ব বহার করেব?

৫. িসিপিপেত কী ভােব চলক ও বক ঘাষনা করেত হয়। যথাযথ উদাহরণ িদেয় দখাও।

৬. িসিপিপেত কী ভােব পূণক ও ভ ক ধরেনর চলক ঘাষনা করেত হয় উদাহরণ িদেয় দখাও।

৭. িসিপিপেত এক সািরেত কখন একািধক চলক ঘাষনা করা যায়? উদাহরণ িদেয় দখাও।
al

৮. চলেক (variable) আিদমান আেরাপণ (initial value assignment) কী?

৯. চলেক (variable) আিদমান আেরাপণ না করেল স াব কী ফলাফল ঘটেত পাের?

১০. বেক (constant) কন আিদমান আেরাপ করেত হয়, িক পের আেরাপ করা যায় না?

১১. ফলাফল ভ ক (float) িক int ধরেনর পূণক চলেক আেরাপ করেল কী ঘেট?

পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয


ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

১. এমন একিট মেলখ রচনা কেরা যিট িট পূণক int ধরেনর, আর একিট ভ ক float
ধরেনর চলক ঘাষনা কের। মেলখিট তারপর চলক িতনিটর মান যথা েম 10, 15, 12.6
আেরাপণ কের। পিরেশেষ মেলখিট চলক েলার মান পদায় দখায়।

৩৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৫. অ শীলনী সম া (Exercise Problems)

২. ধেরা েটা পূণ সংখ া 89 আর 56। এই িটেক তুিম েটা চলেক িনেব, আর তারপর ইিট
চলেক তােদর যাগফল, িবেয়াগফল িনণয় করেব। সবেশেষ সব েলা চলেকর মান ফলেন
দখােব। সব িমিলেয় এই রকম একিট মেলখ রচনা কেরা।

৩. যিদ তাপমা া সলিসয়ােস c িড ী হয় আর ফােরনহাইেট হয় f িড ী, তাহেল আমরা সূ


িলখেত পাির f = 9c/5+32। ধেরা তাপমা া 30 িড ী সলিসয়াস, তাহেল ফােরনহাইেট
এিট কত হেব? তামার মেলখেত তুিম ভ ক float ধরেনর চলক ব বহার করেব।

৪. যিদ তাপমা া ফােরনহাইেট হয় f িড ী আর সলিসয়ােস হয় c িড ী, তাহেল আমরা


সূ িলখেত পাির c = 5(f − 32)/9। ধেরা তাপমা া 76 িড ী ফােরনহাইট, তাহেল
সলিসয়ােস এিট কত হেব? তুিম এখােন ভ ক float ধরেনর চলক ব বহার করেব।

৫. ধেরা একটা কাজ করেত তামার 7 ঘ টা 15 িমিনট 39 সেক ড লেগেছ। এই সময়েক


সেকে ড পা র কেরা। তামার মেলখেত তুিম 60 সেকে ড এক িমিনট আর 60 িমিনেট
এক ঘ টা এই িট িবষয় বুঝােনার জ েটা বক ব বহার করেব।

5g
পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন কবল
একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।
in
১. এমন একিট মেলখ রচনা কেরা যিট িট পূণক int ধরেনর, আর একিট ভ ক float
ধরেনর চলক ঘাষনা কের। মেলখিট তারপর চলক িতনিটর মান যথা েম 10, 15, 12.6
আেরাপণ কের। পিরেশেষ মেলখিট চলক েলার মান পদায় দখায়।
am

িফিরি ৩.৩: চলক ঘাষনার মেলখ (Program Declaring Variables)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;


al

i n t main ( )
{
i n t purnok1 , purnok2 ; / / পূণক িট এক সােথ ঘাষনা
f l o a t vognok ; / / ভ কিট আলাদা ঘাষনা

purnok1 = 10 , purnok2 = 15 ; / / পূণেক মান আেরাপণ


vognok = 12 . 6 ; / / ভ েক মান আেরাপণ

cout << " purnok d u t i " ; / / এখােন endl দই নাই


cout << purnok1 << " " << purnok2 << endl ;
cout << " vognok holo " << vognok << endl ;

ret u rn EXIT SUCCESS ; // সফল সমাি


}

৩৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৫. অ শীলনী সম া (Exercise Problems)

ফলন (output)
purnok d u t i 10 15
vognok holo 12 . 6

২. ধেরা েটা পূণ সংখ া 89 আর 56। এই িটেক তুিম েটা চলেক িনেব, আর তারপর ইিট
চলেক তােদর যাগফল, িবেয়াগফল িনণয় করেব। সবেশেষ সব েলা চলেকর মান ফলেন
দখােব। সব িমিলেয় একিট মেলখ রচনা কেরা।
আমরা এই মেলখেত কবল দরকারী অংশটু দখাি । ধের িনি য তুিম দরকারী
িশর নিথ (header) অ ভু করা, নামাধার std ব বহার, main িবপাতক লখা ও মান
ফরত দয়া ইত মেধ ভােলা কের িশেখ ফেলেছা। তা তুিম যিদ সিত নীেচর লখা ম-
লখ সংকলন কের চালােত চাও, তামােক িক আেগ include, namespace, main,
return ওই েলা িলেখ িনেত হেব, তারপর main িবপাতেকর িভতের return এর আেগ
তুিম আমােদর নীেচর অংশ েলা িলেখ িনেব। তারপর সংকলন কের মেলখ চালােব।

িফিরি ৩.৪: পািটগিণেতর অণুি য়ার

5gমেলখ (Arithmetic Program)


i n t prothom = 89 , d i t i y o = 56 ;

i n t j o g f o l = prothom + d i t i y o ;
in
i n t b i y o g f o l = prothom − d i t i y o ;

cout << " prothom holo " << prothom ;


am

cout << " d i t i y o holo " << d i t i y o ;


cout << endl ;

cout << " j o g f o l holo " << j o g f o l ;


cout << " b i y o g f o l holo " << b i y o g f o l ;
cout << endl ;
al

৩. যিদ তাপমা া সলিসয়ােস c িড ী হয় আর ফােরনহাইেট হয় f িড ী, তাহেল আমরা সূ


িলখেত পাির f = 9c/5+32। ধেরা তাপমা া 30 িড ী সলিসয়াস, তাহেল ফােরনহাইেট
এিট কত হেব? তামার মেলখেত তুিম ভ ক float ধরেনর চলক ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম মেলখেয়র কাঠােমা দাঁড় করেত পারেব।

িফিরি ৩.৫: সলিসয়াস থেক ফােরনহাইেট পা র (Celcius to Fahrenheit)


f l o a t c = 30 , f = 9 ∗ c / 5 + 32 ;

৪. যিদ তাপমা া ফােরনহাইেট হয় f িড ী আর সলিসয়ােস হয় c িড ী, তাহেল আমরা


সূ িলখেত পাির c = 5(f − 32)/9। ধেরা তাপমা া 76 িড ী ফােরনহাইট, তাহেল
সলিসয়ােস এিট কত হেব? তুিম এখােন ভ ক f loat ধরেনর চলক ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম মেলখেয়র কাঠােমা দাঁড় করেত পারেব।

৩৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৩.৬. গণনা পিরভাষা (Computing Terminologies)

িফিরি ৩.৬: ফােরনহাইট থেক সলিসয়ােস পা র (Fahrenheit to Celcius)


f l o a t f = 76 , c = 5∗ ( f − 32) / 9 ;

৫. ধেরা একটা কাজ করেত তামার 7 ঘ টা 15 িমিনট 39 সেক ড লেগেছ। এই সময়েক


সেকে ড পা র কেরা। তামার মেলখেত তুিম 60 সেকে ড এক িমিনট আর 60 িমিনেট
এক ঘ টা এই িট িবষয় বুঝােনার জ েটা বক ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম মেলখেয়র কাঠােমা দাঁড় করেত পারেব।

িফিরি ৩.৭: সময়েক সেকে ড পা র (Convert Time to Seconds)


i n t ghonta = 7 , m i n i t = 15 , sekend = 39 ;
i n t const g h o n t a i M i ni t = 60 , miniteSekend = 60 ;

i n t motMin = ghonta ∗ g h o n ta i M i n i t + m i n i t ;
i n t motSek = motMin ∗ miniteSekend + sekend ;

5g
৩.৬ গণনা পিরভাষা (Computing Terminologies)
in
• আিদ মান (initial value) • ভ ক (fraction)

• আেরাপণ (assign) • মান (value)


am

• ঘাষনা (declaration) • মান আেরাপণ (value assign)

• চলক (variable) • সচলিব (floating-point)

• বক (constant) • চলক ঘাষণা (var declaration)


al

৩৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৪

শনা েকর নামকরণ


(Naming Identifiers)

5g
নােম কী আেস যায় কেম পিরচয়। আপনার কাজই িনধারণ কের দেব আপনার পিরচয়। আপনার
নাম পিরচয় হেব আপনার কােজর কারেণই। মেলখ (program) িলখেত িগেয় আমরা তাই
চলক (variable), বক (constant), িবপাতক (function) সহ য কান িকছুর নাম দই
in
তােদর কী কােজ লাগােনা হেব সটা মাথায় রেখ।
am

৪.১ গিঠত নাম (Well-formed Names)

িসিপিপেত চলক ও বেকর ব বহার তুিম ইত মেধ িশেখ ফেলেছা। আর চলেকর নাম কী রকম
িদেত হেব সটাও আেগ একটু জেনেছা। এখন আমরা িব ািরত ভােব িশখব িসিপিপেত কী ভা-
al

ব চলক বা বেকর নাম িদেত হয়, িবেশষ কের নােমর গঠনরীিত (syntax) কমন অথাৎ না-
ম কী রকম অ র থাকেত পারেব অথবা পারেব না। আমরা আপাতত কবল main িবপাতক
(function) িনেয় কাজ করিছ। িক ভিব েত আমরা যখন িনেজেদর জ নানান িবপাতক তরী
করেবা, তখন িবপাতেকর নামকরেণর জে ও চলক বা বেকর নাম তরীর িনয়ম েলাই কােজ
লাগেব। চলক বা বক বা িবপাতক যাইেহাক নাম ক বলা হয় শনা ক (identifier)।
িসিপিপেত কান শনা েকর (identifier) নােম কবল ১) ইংেরজী বণমালার বড় হােতর
অ র A-Z, ২) ইংেরজী বণমালার ছাট হােতর অ র a-z, ৩) ইংেরজী অংক 0-9 আর ৪) িন দাগ
(underscore) থাকেত পারেব। তেব শনা েকর নােমর থম অ র আবার অংক 0-9 হেত
পারেব না, থম অ র ছাড়া অ য কান অ র িহসােব অংক েলা ব বহার করা যােব। তরাং
বাঝাই যাে থম অ র য কান বণ A-Z বা a-z অথবা িন দাগ (underscore) হেত পা-
রেব। আর তারপেরর য কান অ র বণ বা অংক বা িন দাগ হেত পারেব। িসিপিপেত শনা েকর
নােমর দঘ িনেয় কান িবিধিনেষধ নই তেব মেলখ (program) সংকলেন (compile) কী
সংকলক ব বহার করা হে তার ওপর এটা িনভর করেত পাের। cpp.sh িদেয় সংকলন করেল
কান িবিধ িনেষধ নই, মাইে াসফট c++ িদেয় সংকলন করেল ২০৪৮ অ র পয হেত পাের।
যাইেহাক আমরা এখােন গঠনরীিত অ যায়ী বধ ও অৈবধ িকছু নাম দখেবা।

৩৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.২. অথেবাধক নাম (Meaningful Names)

অৈবধনাম কারণ
12 নােমর সব েলার অ র অংক হেত পারেব না
12cholok নােমর থম অ র অংক হেত পারেব না
amar cholok নােমর মাঝখােন কান ফাঁকা (space) থাকেত পারেব না
ama;cho+k বণ, অংক, িন দাগ ছাড়া অ কান তীক থাকেত পারেব না
মেলখেত (program) অৈবধনাম ব বহার করেল কী হয়? কের দেখা কী হয়! সংকলক
(compiler) িটবাতা (error message) িদেব, আর তামােক নামিট িঠক করেত হেব। তাহ-
ল এখন থেক তামার মেলখেত নাম দওয়ার সময় নােমর এই গঠনরীিত েলা মেন চলেব।
বধনাম কারণ
p একটাই অ র সিট ছাট হােতর বণ
P একটাই অ র সট বড় হােতর বণ
abc িতনটা অ র সব ছাট হােতর বণ
ABC িতনটা অ র সব বড় হােতর বণ
Abc িতনটা অ র ছাটহােতর বড়হােতর িমশােনা
bAc
a1bc
a1Bc
a bc
abc
5g
িতনটা অ র ছাটহােতর বড়হােতর িমশােনা
িতনটা ছাটহােতর অ র ও একটা অংক, অংকিট
িতনটা ছাটবড় হােতর অ র ও একটা অংক যিট
িতনটা ছাটহােতর অ র ও একিট িন দাগ
িতনটা ছাট হােতর অ র ও িতনিট িন দাগ
েত নয়
েত নয়
in
Abc িতনটা ছাটবড় হােতর অ র ও িতনিট িন দাগ
amar cholok ছাটহােতর অ র ও িন দাগ, নামিট অিধক বাধগম
amar Cholok ছাটবড় হােতর অ র ও িন দাগ, অিধক বাধগম
am

amarCholok123 ছাটবড় হােতর অ র, িন দাগ, ও অংক যিট েত নয়


amar125cholok ছাটহােতর অ র ও অংক, অংকিট েত নয়।

৪.২ অথেবাধক নাম (Meaningful Names)


al

িসিপিপেত শনা েকর (identifier) নাম কমন হেত পাের আর কমন হেত পাের না, আমরা তা
আেগর পােঠ দেখিছ। এই পােঠ আমরা দখেবা নােমর অথেবাধকতা (semantic)। আমরা যখন
কান নাম দেবা, তখন নামিট অব ই অথবহ হওয়া চাই। আমরা আেগর একিট পােঠ অ একটু
আেলাচনা কেরিছ নােমর অথেবাধকতা িনেয়। এখন আেরা িব ািরত আেলাচনা করিছ নাম েলা
কমন হেল ভােলা হয় স স েক। চলক (variable) বা বক (constant) বা িবপাতেকর
(function) নাম সবসময় তার কাজ ও ব বহােরর িদেক খয়াল রেখ অথেবাধক হওয়া উিচৎ।
অথেবাধক না হেল মেলখ (program) বাঝা আমােদর জ কিঠন হেয় যায়।
অেনেক অিতির আ েহ য ত িনেজর নােম বা ি য় কােরা নােম শনা েকর নামকরণ কের
থােক যমন gonimia1, gonimia2, ইত ািদ। তা এই চলক েটার একটা যিদ ব াসােধর জ
আেরকটা যিদ ফেলর জ ব বহার করা হয়, তাহেল চলেকর নাম থেক মােটও বুঝা যােব
না কান নামিট কী কােজ ব ব ত হে । ব াসােধর জ বরং radius বা bashardho অথবা
িনেদনপে r বা b ব বহার করা যেত পাের। এক অ েরর নাম দয়া অেনেক পছ কের, কারণ
তাড়াতািড় লখা যায়, িক একই আদ া র যু একািধক চলক থাকেল তখন মুশিকল হেয় যায়।
সে ে ওই অ েরর সােথ আেরা অ র লািগেয় অথবা সংখ া লািগেয় িতিট নামেক আলাদা
করেত হেব, যােত অ ত বুঝা যায় কান চলকিট কী উে ে ব বহার করা হেয়েছ।

৩৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৩. িলিপ সংেবদনশীলতা (Case Sensitivity)

আমরা যিদ েটা বৃ িনেয় কাজ কির তাহেল তােদর ব াসােধর জ িট চলক হেতই পাের
bashardho1 আর bashardho2 তােত কান সম া নাই। ব াপারটা দীপু ন র ২ চলি ে র
মেতা, একজেনর নাম দীপু ন র ১ আর একজন দীপু ন র ২। অথবা কউ চাইেল নাম িদেত
পাের bashardhoA আর bashardhoB। এভােব একই ধরেনর কােজ ব বহার হেব এরকম
অেনক েলা চলক লাগেল আমরা সংখ া লািগেয় বা বণ লািগেয় আলাদা আলাদা নাম তরী কের
িনেবা। এর জ অব সাজন (array) নােম আলাদা একটা ধারণা আেছ, যটা আমরা পের
জানেবা। সাজন ব বহার কের আমরা সংখ া লািগেয় যত ই া তত েলা একই ধরেনর নাম পাই।
অেনেক অিতির অলস হেয় অথবা য কান কারেণ শনা েকর নাম করণ করেত থােক a, b, c
, p, q, r , i , j , k, x, y, z ইত ািদ এেকর পর এক অ র িদেয়। এটা একটা খুবই বােজ
অভ াস। এইরকম শনা ক মােটও অথেবাধক নয়। এ েলা থেক বুঝার কান উপায় নই কান
চলকিট িঠক কী কােজ ব বহার করা হে । সবসময় এরকম নামকরণ থেক ের থাকেব।
এখােন করেত পােরা: নামকরেণ িক সবসময় একটা মা শ ই ব বহার করেবা? এেকর
অিধক শ ব বহার করেবা না? উ র হে অথেবাধক করার জ তুিম দরকার মেতা একািধক
শ অব ই ব বহার করেব, এইটা খুবই ভােলা অভ াস। আর সে ে যােত িতিট শ খুব
সহেজ বাঝা যায় স জ তামার িকছু কৗশল অবল ন করেত হেব। একটা কৗশল হেলা িট

5g
শে র মােঝ একিট িন দাগ দওয়া যমন amar cholok। আেরকিট কৗশল হল িতিট শে র
থম অ রিট বড়হােতর দওয়া আর অ েলা ছাট হােতর, যমন AmarCholok তেব চাইেল
একদম থম শে র থম অ রিট ছাটহােতরও রাখেত পােরা যমন amarCholok। নীেচর
সারণীেত আমরা িকছু অথেবাধক নােমর উদাহরণ দখেবা।
in
নাম যেথাপযু তার কারণ
sum যাগফেলর জ sum চলেকর ইংেরজী নাম
jogfol যাগফেলর জ jogfol চলেকর বাংলা নাম
am

bijor songkhar jogfol িন দাগ িদেয় অথেবাধক শ আলাদা হেয়েছ


odd number sum িন দাগ িদেয় অথেবাধক শ আলাদা হেয়েছ
Bijor Shongkhar Jogfol িন দাগ িদেয় আলাদা, বড়হােতর আদ া র
BijorShongkharJogfol বড়হােতর থম অ র িদেয় আলাদা আলাদা
bijorShongkharJogfol এিট অেনক চিলত ও অেনেকরই পছে র
al

৪.৩ িলিপ সংেবদনশীলতা (Case Sensitivity)


িসিপিপ ভাষা একিট িলিপ সংেবদনশীল (case sensitive) ভাষা। এই কথার অথ কী? িসিপিপেত
বড়হােতর ছাটহােতর অ র িক িভ িভ ধরা হয়, নািক ইংেরজীর মেতা একই ধরা হয়?
barek i s going home
BAREK I S GOING HOME
Barek I s Going Home

আেগর কেয়কিট পােঠ চলক (variable) বা বক (constant) বা িবপাতেকর (function)


নাম, এককথায় শনা েকর (identifier) নামকরণ িনেয় আমরা আেলাচনা কেরিছ। নামকরেণর
িনয়ম েলা আেলাচনা করার সময় দেখিছ য কান শনা েকর নামকরেণ আমরা চাইেল বড়হা-
তর বণ A-Z, ছাটহােতর বণ a-z, অংক 0-9, আর িন দাগ ব বহার করেত পারেবা। একই না-
ম বড়হােতর ছাটহােতর অ র িমিশেয়ও নামকরণ করেত পারেবা। এমতাব ায় হে কান
নাম ই ামেতা একবার বড়হােতর অ ের অথবা ছাট হােতর অ ের অথবা আেরকবার িকছু অ র

৩৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৪. সংরি ত ও চািব শ (Reserved & Key Words)

ছাটহােতর িকছু অ র বড় হােতর এইভােব িলখেত পারেবা িকনা। িবেশষ কের আমরা জািন ইং-
রজীেত আিম ছাট হােতরই িলিখ আর বড় হােতরই িলিখ শ টা আসেল একই থােক, িসিপিপেতও
িক তাই? আমরা বরং উদাহরণ িদেয় ব াপারটা দিখ। ইংেরজীেত ছাট হােতর বড় হােতর অ র
আলাদা হেলও ও েলা কবলই সৗ যবধন মুলক। উপেরর িতনেট ইংেরজী বাক তাই একই।
এবার আমরা িসিপিপ ভাষায় ছাট হােতর বড় হােতর অ েরর ব বহার দিখ। নীেচর নাম -
লার ত েকিট িসিপিপ ভাষায় আলাদা আলাদা নাম িহসােব ধরা হেব।
amarcholok , amarCholok , AmarCholok , amar cholok ,
Amar Cholok , amarChoLok , AmarChOlOk

িসিপিপেত উপেরর একটা নাম িদেয় য চলক বা বক বা িবপাতকেক বুঝােনা হেব অ নাম
িদেয় ওইটােক বুঝােনা যােব না, বরং অ একটা বুঝােনা হেয় যােব। মাট কথা েটা নােমর একটা
অ েরও যিদ এিদক সিদক থােক তাহেল নাম েটা আসেল আলাদা। েটােক একই িজিনেসর নাম
িহসােব ধের নয়া যােব না। তরাং মেলখ (program) লখার সময় খয়াল রাখেব যােত একটা
চলকেক বুঝােত িগেয় কবল বড়হােতর ছাটহােতর বেণর িভ তার কারেণ আেরকটােক বুিঝেয় না

5g
ফেলা, তােত সব ভজঘট লেগ যােব। তামার মেলখও উ াপা া ফলাফল িদেব। আবার ধেরা
তামার একটাই চলক যার নাম amarcholok, িক পের তুিম িলেখেছা amarCholok। এই
অব ায় সংকলন (compile) করেল তামােক "amarCholok is not declared" এইরকম
িটবাতা (error message) িদেব। তামােক তখন amarCholok এর বদেল amarcholok
িলেখ িঠক করেত হেব। মেলখ তরীর সময় আমরা ায়শই এইরকম ভুল কের থািক।
in
উপেরর এই িনয়ম জানার পের তুিম হয়েতা মেন করেব এইটা তা ভােলাই। আমার যিদ
ইটা বৃে র ব াসােধর জ চলক লােগ একটার নাম িদেবা bashardho আর একটার নাম িদেবা
Bashardho। াঁ, তুিম সটা িদেতই পােরা। িসিপিপ যেহতু ইটােক আলাদা আলাদা চলক
am

িহসােব ধের িনেব, তাই এই েটা হেলা েটা বধ আলাদা নাম। তেব অথেবাধকতার িদক ভেব
তুিম হয়েতা এরকম নাম করণ থেক দূের থাকার চ া করেব। একটা অ র বড় বা ছাটহােতর
কবল এই অ একটুখািন িভ তা িদেয় আসেল তমন বশী অথেবাধক পাথক তরী করা যায় না,
ফেল মেলখ (program) পড়া কিঠন হয়। আর একটা ব াপার: চলেকর নামকরেণ বড়হােতর
ছাটহােতর অ র িমশােত তা পােরাই যমন AmarCholok, িক এমন ভােব িমিশও না য
পড়াটা খুব কিঠন হেয় যায়, যমন AmArChOlOk, এই রকম নাম চট কের পড়া আসেল স ব
al

না, বরং এইরকম নাম য নাদায়ক। কােজই সবিমিলেয় সহজ ও র নাম িদেব, কমন!

৪.৪ সংরি ত ও চািব শ (Reserved & Key Words)


সংরি ত শ (reserved word) বা চািব শ (key word) কী? আিম িক চলক (variable),
বক (constant) বা িবপাতেকর (function) এর শনা ক (identifier) িহসােব সংরি ত
শ বা চািব শ ব বহার করেত পারেবা? িসিপিপেত সংরি ত শ বা চািব শ কান েলা?
সংরি ত শ িবষেয় আেলাচনার আেগ আমরা একটা গ বেল নই। এক বািড়েত থােক
জামাই-বউ আর তােদর সােথ থােক বড় টুম অথাৎ বউেয়র ভাই বা জামাইেয়র ালক। তা
সই ালেকর নাম হল লাল। একিদন জামাই বচারা তার বউেয়র ক লাঘব করার জ একজন
কােজর ছেল িনেয় আেস। বউ িজে স কের "এই ছেল তামার নাম কী?" কােজর ছেল বেল তার
নাম লাল। বউ তখন জামাইেক বেল ছেলিটর নাম বদলােত হেব। জামাই অবাক, অবাক কােজর
ছেলিটও। তার নাম লাল, ভােলাই তা নামিট, সটা বদলােত হেব কন। বউ জামাইেক বকেত
থােক "তুিম জােনা না আমার ভাই অথাৎ তামার ালেকর নাম লাল"। য বাসায় ালেকর

৪০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৪. সংরি ত ও চািব শ (Reserved & Key Words)

নাম লাল, সই বাসার কােজর ছেলর নাম লাল হয় কমেন, ালক হেলা বড় টুম, তার
কী এত বড় অস ান করা যায়! আর জামাইেয়র নাম হেলা কােদর। তা বউ আেরা এক কািঠ
বািড়েয় বলেত থােক িঠক আেছ কােজর ছেলর নাম বদেল কােদর রাখা হউক, দিখ জামাইেয়র
কমন লােগ। তারপর জামাইেয়র সামেনই কােজর ছেলেক বেল "এই এখন থেক তার নাম
িদলাম কােদর।" তারপর হঁেড় গলায় ডাকেত থােক "কােদর, এই কােদর, এই িদেক আয়।"
কমন একটা বড়ােছড়া অব া। শষ পয িঠক হয় এক বাসায় ইটা লাল তা হেত পােরনা,
একজেনর নাম বদলােত হেব। আর বাসার বড় টুেমর নাম তা আর বদলােনা যােব না কান
ভােবই, ওটা সংরি ত নাম, কােজই বদলােত হেব কােজর ছেলর নাম। তরাং কােজর ছেলর
নাম দয়া হয় লাল া। তাহেল ালেকর নাম লাল, আর কােজর ছেলর নাম লাল া।
িসিপিপ ভাষায় গঠন কাঠােমা িঠক রাখার জ িকছু িনিদ শ আেছ। আমরা ইত মেধ
এরকম িকছু শ ব বহার কেরিছ। যমন return, int , float। এই শ েলার অথ িসিপিপ
ভাষােত আেগ থেক িনিদ , যমন return মােন যখন িবপাতক (function) শষ হয়, int আর
float হল চলেকর মান কমন পূণক বা পূণ সংখ া না ভ ক বা ভ সংখ া এইরকম। এই িতনিট
ছাড়াও আেরা অেনক েলা এই রকম শ আেছ। এই শ েলা চাইেল আমরা িনেজরা আমােদর
চলক বা বক বা িবপাতেকর নাম িহসােব ব বহার করেত পারেবা না। এই েলা হে সংরি ত

5g
শ (reserved word)। এই শ েলােক অ কথায় চািব শ ও (key word) বলা হয়।
তাহেল তামার মেলখেত তুিম এই প সংরি ত শ বা চািব শ শনা েকর (identifier) নাম
িহসােব ব বহার করেব না। কারণ ও েলা বড় টুম লােলর নােমর মেতা। যিদ একা ই দরকার
হয় তাহেল লাল ক লাল া বানােনার মেতা িকছু যাগ-িবেয়াগ কের িভ শ বািনেয় ব বহার
in
করেব। যমন return না ব বহার কের returnValue ব বহার করেল, এইরকম। নীেচ আমরা
িসিপিপর সংরি ত শ েলার তািলকা িদি ।
am

• সংগিঠত পিরগণনায় (structured programming) ব ব ত শ :


break, case, char, const, continue, default, do, double, else,
enum, extern, float, for, goto, if , int , long, register, short,
signed, sizeof, static , struct, switch, typedef, union, unsigned,
return, void, volatile , while
al

• ব মুখী (object-oriented) পিরগণনায় ব ব ত শ :


class , explicit , delete, friend, inline , mutable, namespace,
new, opeator, private, protected, public, this , using, virtual

• িট সামলােনার (error handling) জ শ :


catch, noexcept, throw, try

• যুি ও িবট িত অণুি য়ার (logical and bit-wise operators) শ :


bool, and, and eq, bitand, bitor , compl, false, not, not eq,
or, or eq, true, xor, xor eq

• উপা করণ (data type) সং া শ :


auto, const cast, decltype, nullptr , dynamic cast,
reinterpret cast, static cast , typeid

• ছাঁচ (template) সং া শ :
export, template, typename

৪১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৫. অ শীলনী সম া (Exercise Problems)

• সংকলন সমেয় (compile-time) ব ব ত হওয়া শ :


static assert , constexpr

• পূব ি য়েকর (preprocessor) জ শ :


if , elif , else, endif, defined, ifdef , ifndef, define, undef,
include, line , error, pragma

• িবিভ আকােরর অ েরর জ শ : char16 t, char32 t, wchar t

• িবিবধ শ : alignas, alignof, asm, concept, requires, thread local

৪.৫ অ শীলনী সম া (Exercise Problems)


ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।

১. শনা ক (identifier) কী?

5g
মেলখেত শনা েকর ভুিমকা কী?

২. িসিপিপেত শনা েকর (identifier) নাম করেণর িনয়মাবলী বণনা কেরা।

৩. মেলখেত (program) গঠনগত ভােব অৈবধ নাম ব বহার করেল কী ঘেট?


in
৪. অথেবাধক নাম কী? মেলখেত অথেবাধক নাম ব বহার করা উিচৎ কন?

৫. িসিপিপ একিট িলিপ সংেবদনশীল (case sensitive) ভাষা, এর মােন কী ?


am

৬. সংরি ত ও চািব শ কী? এ েলা কন শনা ক িহসােব ব বহার করা যায় না?

চচামুলক : নীেচর শ েলা গঠনগত (syntactically) ভােব শনা েকর (identifier)


নাম িহসােব বধ নািক অৈবধ? যিদ বধ হয় তাহেল অথেবাধক (meaningful) নািক অথেবাধক
নয়? অথবা কান শ িক সংরি ত বা চািব শ (reserved or key word)? থেম িনেজ
al

িনেজ উ র বর করার চ া করেব, একা না পারেল নীেচর সমাধান দখেব।

১. void ৯. xyz123 ১৭. mutable

২. MAX−ENTRIES ১০. part#2 ১৮. max?out

৩. double ১১. "char" ১৯. Name

৪. time ১২. #include ২০. name

৫. G ১৩. a long−one ২১. name 1

৬. Sue's ১৪. xyz ২২. Int

৭. return ১৫. 9xyz ২৩. INT

৮. cout ১৬. main ২৪. SUM

৪২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৫. অ শীলনী সম া (Exercise Problems)

২৫. sum of numbers ২৮. printf ৩১. $sum

২৬. firstName ২৯. int ৩২. numˆ2

২৭. Identifier ৩০. pow ৩৩. num 1

চচামুলক উ র: উপেরর েলার উ র এখােন দয়া হে । থেম িনেজ িনেজ উ র বর


করার চ া করেব, একা না পারেল এই সমাধান দখেব।

১. void : সংরি ত শ , কান কােররই না এমন বুঝােনা হয়

২. MAX−ENTRIES : বধ শনা ক, অথেবাধক

৩. double : সংরি ত শ , বড় আকােরর ভ েকর জ

৪. time : বধ শনা ক, িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৫. G : বধ শনা ক, িক অথ বুঝা যাে

5g
না, যিদ না পািরপাি কতা পির ার থােক

৬. Sue's : অৈবধ শনা ক কারণ নােম ' ব বহার করা যায় না

৭. return : সংরি ত শ , িবপাতক থেক ফরত গমন


in
৮. cout : বধ শনা ক, িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৯. xyz123 : বধ শনা ক, িক অথেবাধক িকনা পির ার না


am

১০. part#2 : অৈবধ শনা ক কারণ নােম # ব বহার করা যায় না

১১. "char" : অৈবধ শনা ক কারণ নােম " ব বহার করা যায় না

১২. #include : পূব- ি য়েকর (preprocessor) জ সংরি ত শ

১৩. a long−one : বধ শনা ক, িক অথ সই ভােব পির ার নয়।


al

১৪. xyz : বধ শনা ক, িক অথ সই ভােব পির ার নয়

১৫. 9xyz : অৈবধ শনা ক, নােমর েত অ থাকেত পাের না, পের থাকেত পাের

১৬. main : সংরি ত শ নয়, িক পিরত াজ কারণ এিট েত ক মেলখেতই থােক

১৭. mutable : সংরি ত শ , কান বকও িবেশষ অব ায় পিরবতন যাগ হেল

১৮. max?out : অৈবধ শনা ক, নােম ? িচ থাকেত পারেব না

১৯. Name : বধ শনা ক, অথেবাধক, কীেসর নাম সটা পির ার নয়

২০. name : বধ শনা ক, অথেবাধক, কীেসর নাম সটা পির ার নয়

২১. name 1 : বধ শনা ক, অথেবাধক, কীেসর নাম সটা পির ার নয়

২২. Int : বধ শনা ক, তেব সংরি ত শ int এর সােথ িব াি দখা িদেত পাের

৪৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৪.৬. গণনা পিরভাষা (Computing Terminologies)

২৩. INT : বধ শনা ক, তেব সংরি ত শ int এর সােথ িব াি দখা িদেত পাের

২৪. SUM : বধ শনা ক, অথেবাধক, যাগফেলর জ

২৫. sum of numbers : বধ শনা ক, অথেবাধক

২৬. firstName : বধ শনা ক, অথেবাধক, অেনেকর পছে র

২৭. Identifier : বধ শনা ক, অথেবাধক, কীেসর শনা ক পির ার নয়

২৮. printf : বধ শনা ক, অথেবাধক, িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

২৯. int : সংরি ত শ , পূণক উপা ধারেনর জ উপা করণ

৩০. pow : বধ শনা ক, অথেবাধক, িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৩১. $sum : অৈবধ শনা ক, নােম $ িচ ব বহার করা যায় না

5g
৩২. numˆ2 : অৈবধ শনা ক, নােম ˆ িচ ব বহার করা যায় না

৩৩. num 1 : অৈবধ শনা ক, নােম ফাঁকা ব বহার করা যায় না


in
৪.৬ গণনা পিরভাষা (Computing Terminologies)
• শনা ক (identifier) • ব মুখী পিরগণন (object
am

oriented programming)
• িন দাগ (underscore)
• িট সামলােনা (error handling)
• সাজন (array)
• যুি অণুি য়া (logical operators)
• সংগিঠত (structured)
• িবট িত অণুি য়
al

• পিরগণনা (programming) (bit-wise operators)

• উপা করণ (data type)


• সংগিঠত পিরগণনা
(structured programming) • ছাঁচ (template)

• ব মুখী (object-oriented) • সংকলন সময় (compile-time)

৪৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৫

যাগান ও আেরাপণ
(Input and Assignment)

5g
মেলখেত (program) উপা (data) কাথা থেক আেস? হয় আমরা মেলখেয়র িভতের
সরাসির িলেখ দই, যমনিট আেগর পাঠ েলােত কেরিছ, আর না হয় আমরা উপা ব বহারকারী-
দর কােছ থেক যাগান (input) নই। উপা যাগান িনেয় সিটেক ধারন করার উে ে আমরা
চলেক (variable) আেরাপণ (assign) কির যােত ওই উপা পের কােজ লাগােনা যায়।
in
৫.১ উপা যাগান (Data Input)
am

িসিপিপেত এমন একিট মেলখ (program) িলেখা যিট য কান আয়েতর ফল ও পিরসী-
মা িনণয় করেত পাের। তামার মেলখ তুিম মা একবারই সংকলন (compile) করেত পারেব,
আর েত ক আলাদা আয়েতর জ তুিম মেলখিট বারবার কবল চালােত পারেব, িক ম-
লখেয়র িভতের দঘ ও বদেল িদেয় বারবার সংকলন করেত পারেব না। তারমােন তামােক
দঘ ও যাগান (input) িহসােব তামার মেলখ ব বহারকারীর কােছ থেক িনেত হেব।
al

উ মেলখ লখার আেগ চেলা আমরা িকছু দরকারী আেলাচনা সাির। আমরা যখন কান
গণনা সম ার (computing problem) সমাধান করেত চাই, যমন আেলাচ ে আমরা
আয়েতর দঘ ও জেন তার ফল ও পিরসীমা িনণয় করেত চাই, তখন আমরা মুলত
একিট মেলখ (program) ব বহার করেবা, মােন আমরা মেলখিট চালােবা (run)। এখন
এই মেলখ হয়েতা আমরা িনেজরা তরী করেবা অথবা অ কউ আমােদর তরী কের িদেব।
বশীর ভাগ ে মেলখিট অে র তরী করা দয়া, আমরা কবল ব বহারকারী।
ভেব দেখা মেলখ তরী করা (write) আর চালােনা (run) আসেল েটা িভ ঘটনা। এই
েটা ঘটনা পরপর একসােথ ঘটেব এরকম সবসময় হয় না। বরং বশীর ভাগ সমেয় এই ঘটনা
েটা আসেল িভ িট ােন িভ িট সমেয় িভ ই ব ি র ারা সংঘিটত হয়। তাছাড়া মেলখ
য চালােব স হয়েতা কবল একটা আয়েতর ফল ও পিরসীমা িনণয় করেত চায় না বরং তার
হােত হয়েতা অেনক অেনক আয়ত আেছ আর স সব েলা আয়েতর জ ই ফল ও পিরসীমা
িনণয় করেত চায়। তরাং িতটা আয়েতর জ তার একটা কের আলাদা মেলখ লাগেব যিদ
মেলখেয়র িভতের আয়েতর দঘ ও িদেয় দয়া হয়। অথবা তার এমন একটা মেলখ
লাগেব যটা কান না কান ভােব সব েলা আয়েতর জ ই কাজ করেব, আর সিঠক ভােবই করেব
অথাৎ মেলখিট মুলত ে র (formula) ওপর নজর দেব, উপাে র (data) ওপর নয়।

৪৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.১. উপা যাগান (Data Input)

আমরা উপের যসব অব া আেলাচনা করলাম সই সব অব ায় মেলখক (programmer)


মেলখ তরী করার সময় জানেবন না আয়েতর দঘ ও কী হেব, সিট জানা স ব হেব পের
ব বহারকারী যখন মেলখিট চালােবন কবল তখন। হে এমতাব ায় মেলখক উপা
(data) ছাড়া কী ভােব মেলখ তরী করেবন। সিত বলেত উ র তা গিণেতই আেছ: চলক
(variable) ব বহার কের। আর আমরা তা ইত মেধ মেলখেত চলক ব বহার কেরিছই। আমা-
দর কবল যটা করা দরকার তা হেলা মেলখেয়র িভতের দঘ বা সরাসির িলেখ না িদেয়
ওইটা যােত ব বহারকারী মেলখ চালােনার সময় িদেয় িদেত পাের সই ব ব া করা। নীেচর ম-
লখেত আমরা তাই কেরিছ। আমরা ব বহারকারীর কােছ থেক চলেকর মান উপা িহসােব যাগান
(input) িনেয়িছ। এবার আমরা ওই মেলখিটর সংি অংশটু িবে ষণ কির।

িফিরি ৫.১: উপা যাগােনর মেলখ (Programs with Data Input)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
5g
i n t doirgho ; / / আয়েতর দেঘ র জ চলক
in
c i n >> doirgho ; / / দঘ যাগান িহসােব নওয়া হেব

i n t prostho ; / / আয়েতর ে র জ চলক


am

c i n >> prostho ; / / যাগান িহসােব নওয়া হেব

// ফল ও পিরসীমার সূ
i n t k h e t r o f o l = doirgho ∗ prostho ;
i n t porishima = 2∗ ( doirgho + prostho ) ;
al

// ফল ও পিরসীমা ফলন
cout <<" k h e t r o f o l holo "<< k h e t r o f o l << endl ;
cout <<" porishima holo "<< porishima << endl ;

ret ur n EXIT SUCCESS ; / / সফল ভােব ফরত


}

যাগান-ফলন (input-output)
13
12
k h e t r o f o l holo 156
porishima holo 50

৪৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.১. উপা যাগান (Data Input)

উপেরর মেলখেত খয়াল কেরা আমরা দেঘ র জ একিট চলক doirgho ঘাষনা কের-
িছ, িক সােথ সােথ তার কান আিদমান আেরাপ (initial value assign) কির নাই। কারণ
আেগই যমন আেলাচনা করলাম, আমরা যখন মেলখ িলখিছ তখন আমরা আসেল জািননা য
doirgho এর মান কেতা। আমরা বরং ওইটা ব বহারকারীর কােছ থেক নেবা। আর স কার-
ণ আমরা cin >> doirgho; িলেখিছ। এখােন cin হল console in। সাধারণত যাগান য
(input device) চাপিন (keyboard) ও িটপিন (mouse) আর ফলন য (output device)
নজির (monitor) িমিলেয় হল আমােদর console বা য ালয়। তা console in বলেত আম-
রা এখােন যাগান য িবেশষ কের চাপিন (keyboard) থেক যাগান (input) নয়া বুঝাি ।
তাহেল cin ব বহারকারীর কােছ থেক চাপিনর মাধ েম সংখ াটা িনেয় সটা doirgho চলেকর
িভতের িদেয় িদেব। এেত ওই চলেক একরকেমর মান আেরাপণ (value assign) হেয় যােব।
ব বহারকারীর কােছ থেক দঘ নবার পের আমােদর ও িনেত হেব। উপেরর মেলখেত
খয়াল কেরা আমরা দেঘ র মেতা কেরই ে র জ ও prostho নােম একটা int ধরেনর চলক
ঘাষনা কেরিছ আর তার পেরর সািরেত cin ব বহার কের prostho এর মান ব বহারকারীর কােছ
থেক নয়ার কথা িলেখিছ। উপেরর মেলখেয়র বাঁকী অংশটু তা আেগর পােঠর মেলখ -
লােত যমন দঘ ও ব বহার কের ফল ও পিরসীমার সূ িলখা হেয়েছ আর তারপের

5g
ফলন (output) দখােনা হেয়েছ িঠক তমনই। আমরা স েলা আর আেলাচনা করিছ না।
এবার আমরা আর একটু আেলাচনা কির উপেরর মেলখিট সংকলন (compile) কের চা-
লােল কী ঘটেব তা িনেয়। উপেরর মেলখিট চালােল আমরা দখব পদায় (screen) িকছু আসেছ
না, চটুলটা (cursor) কবল লাফালািফ করেছ। আমরা এই অব ায় দেঘ র মান, ধরা যাক 13
in
চেপ ভুি (enter) চাপেবা। িভতের িভতের cin ওই মান িনেয় doirgho চলেকর মেধ রেখ
িদেব। চটুলটা (cursor) তারপরও লাফালািফ করেব। আমরা তখন 12 িদেয় ভুি (enter) চা-
পেবা, cin ওইটা prostho চলেক রেখ িদেব। তারপর পদায় আমরা ফলন দখেত পােবা। থম
সািরেত থাকেব khetrofol holo 156 আর পেরর সািরেত porishima holo 50।
am

উপের মেলখেত আমরা চাইেল িকছু সংি করণ করেত পাির। যমন দঘ ও ঘাষনা
(declaration) ও যাগান (input) নয়া চার সািরেত না কের আমরা ও েলােক মা ই সািরেত
সারেত পাির। থম সািরেত আমরা চলক েটা ঘাষনা করেবা। আর পেরর সািরেত আমরা চলক
েটার যাগান িনেবা। নীেচর মেলখেত (program) এই েলা দখােনা হেলা।
i n t doirgho , prostho ; / / আয়েতর দেঘ ও ে র জ চলক
al

c i n >> doirgho >> prostho ; / / দঘ ও যাগান নওয়া হেব

আর সে ে মেলখিট চালােনার সময় যাগান নয়ার অংশ িন প হেব। ল করেব চটুল


(cursor) যখন যাগান নবার জ লাফােত থাকেব, আমরা তখন 13 ও 12 সংখ া িট ফাঁকা
িদেয় এক সােথ িদেয়ই ভুি (enter) চাপেত পারেবা, অথবা চাইেল 13 িলেখ ভুি চেপ তারপর
12 িলেখ আবার ভুি চাপেত পারেবা। আর ফলেনর অংশ আেগর মেতাই হেব।
13 12

কউ যিদ চায় তাহেল িক ফলন অংেশও এরকম সংি করণ করেত পাের। যমন ফল
ও পিরসীমা চাইেল এক সািরেতই ফলন িদেত পাের।
cout << " k h e t r o f o l ar porishima holo " << k h e t r o f o l
<< " " << porishima << endl ; / / cout হেত এই পয
পুেরাটা আসেল এক সািরেত

তেব সবিকছু একবার cout িদেয় দওয়ার চেয় আমরা হয়েতা ইবাের িদেত চাইেবা।

৪৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.২. যাগান যাচনা (Input Prompt)

cout << " k h e t r o f o l ar porishima holo " ;


cout << k h e t r o f o l << " " << porishima << endl ;

উপেরর উভয় ে পদায় ফলন িক একসািরেতই আসেব।


k h e t r o f o l ar porishima holo 156 50

৫.২ যাগান যাচনা (Input Prompt)


িসিপিপেত এমন একিট মেলখ (program) রচনা কেরা যিট য কান আয়েতর ফল ও
পিরসীমা িনণয় করেত পাের। তামার মেলখ আয়েতর দঘ ও ব বহারকারীর কােছ থেক
যাগান (input) িনেব। আর দঘ ও যাগান নবার আেগ তামার মেলখ অব ই ব বহা-
রকারীেক দঘ ও ে র মান িজে স করেব অথাৎ যাচনা (prompt) করেব।

িফিরি ৫.২: যাগান যাচনার


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
5g
মেলখ (Program with Input Prompt)
in
using namespace std ;

i n t main ( )
am

{
i n t doirgho ; / / আয়েতর দেঘ র জ চলক
cout << " doirgho koto ? " ; / / মান যাচনা করা হে
c i n >> doirgho ; / / দঘ যাগান িহসােব নওয়া হেব

i n t prostho ; / / আয়েতর ে র জ চলক


al

cout << " prostho koto ? " ; / / মান যাচনা করা হে


c i n >> prostho ; // যাগান িহসােব নওয়া হেব

// ফল ও পিরসীমার সূ
i n t k h e t r o f o l = doirgho ∗ prostho ;
i n t porishima = 2∗ ( doirgho + prostho ) ;

// ফল ও পিরসীমা ফলন দয়া হেব


cout <<" k h e t r o f o l holo "<< porishima << endl ;
cout <<" porishima holo "<< porishima << endl ;

ret ur n EXIT SUCCESS ; / / সফল ভােব ফরত


}

৪৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.২. যাগান যাচনা (Input Prompt)

যাগান-ফলন (input-output)
doirgho koto ? 13
prostho koto ? 12
k h e t r o f o l holo 156
porishima holo 50

আেগর পােঠর মেলখেত আমরা চলেকর মান ব বহারকারীর কােছ থেক নয়ার জ cin
ব বহার কেরিছ। ওই মেলখিট যখন আমরা চালাই তখন দিখ পদায় (screen) িকছু নাই
আর চটুলটা (cursor) কেনা যেনা লাফালািফ করেছ। সই অব ায় আমরা থেম দেঘ র মান
13 িদেয় ভুি (enter) চেপিছ। চটুলটা তারপরও লাফালািফ করিছল। আমরা তখন 12 িদেয়
ভুি চেপিছ। তারপর পদায় ফলন এেসিছল থম সািরেত khetrofol holo 156 আর পেরর
সািরেত porishima holo 50। তা এই য চটুলটা (cursor) লাফালািফ করিছল দঘ ও ে র
মান নয়ার জ এইটা আমরা বুঝেত পাির কারণ আমরা িনেজরাই এে ে মেলখিট তরী
write) কেরিছ আর িনেজরাই সটা সংকলন (compile) কের চালাি (run)। আমরা এে ে
জািন য আমােদর মেলখিট থেম দঘ চাে আর সটা দবার পর চাে । এবার ভেব

5g
দেখা আমােদর লখা মেলখ যিদ আমরা ছাড়া অ কউ চালায় (run) তাহেল স কী ভােব
জানেব চটুলিট (cursor) ওই অব ায় কন লাফাে । স িক আসেলই দঘ বা
অেপ া করেছ নািক িভতের িভতের ঘটনা অ িকছু, স হয়েতা অ িকছু করেছ।
তা ওপেরর সম া সমাধােনর জ আমরা যিট করেবা সিট হেলা আমােদর মেলখেত
নয়ার জ
in
cin >> doirgho; লখার আেগ আমরা একটা বাতা দখােবা য আমরা দেঘ র মান চাই।
উপেরর মেলখ খয়াল কেরা cin >> doirgho; লখার আেগ আমরা cout << "doirgho
koto? "; িলেখ আসেল সটাই করেত চাইিছ। এই মেলখ যখন চালােনা হেব তখন থেম পদায়
am

doirgho koto? দখা যােব। আর cout এর শেষ আমরা যেহতু endl অথাৎ end line দই
নাই, চটুলটা (cursor) সেহতু ওই একই সািরেত লাফাইেত থাকেব, লাফাইেত থাকেব মুলত
cin >> doirgho; এর কারেণ doirgho এর মান নয়ার জ । আমরা তখন doirgho এর
মান িদেয় ভুি (enter) চাপেবা। তাহেল "চটুল কন লাফায়?" আমরা এই সম ার সমাধান
কের ফললাম কমন! এই য যাগান (input) নবার আেগ একটা বাতা িদেয় ব বহারকারীেক
জানােনা য আমরা কী যাগান চাই, এই ব াপারিটেক বলা হয় যাগান যাচনা (input prompt)।
al

উপেরর মেলখেত খয়াল কেরা আমরা ে র জে ও একই ভােব যাগান (input) নবার আেগ
"prostho koto? " বাতা িদেয় যাগান যাচনা (input prompt) কেরিছ। তাহেল এখন থেক
তামার মেলখেত যাগান নবার আেগ অব ই যাগান যাচনা করেব, কমন?
উপের মেলখেত আমরা চাইেল িকছু সংি করণ করেত পাির। যমন দঘ ও ঘাষনা
(declaration), যাগান যাচনা (input prompt) করা, ও যাগান (input) নয়া ছয় সািরেত
না কের আমরা ও েলাক মা িতন সািরেত সারেত পাির। থম সািরেত আমরা চলক েটা ঘাষনা
করেবা। আর পেরর সািরেত আমরা যাগান যাচনা করেবা তারপের সািরেত চলক েটার মান
যাগান িনেবা। নীেচ মেলখেত (program) এই েলা দখােনা হেলা।
i n t doirgho , prostho ; / / দেঘ ও ে র জ চলক
cout << " doirgho o prostho koto ? " ; / / একসােথ যাচনা
c i n >> doirgho >> prostho ; / / দঘ ও যাগান

আর সে ে মেলখিট চালােনার সময় যাগান নয়ার অংশ িন প হেব। অথাৎ মেলখ


চালােল doirgho o prostho koto? দখােনার পের চটুলটা (cursor) যাগান নবার জ
লাফােত থাকেব। আমরা 13 ও 12 সংখ া িট ফাঁকা িদেয় এক সােথ িদেয়ই ভুি (enter) চাপেত

৪৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৩. মান আেরাপণ (Value Assignment)

পারেবা, অথবা চাইেল 13 িলেখ ভুি চেপ তারপর 12 িলেখ আবার ভুি চাপেত পারেবা। আর
ফলেনর অংশ আেগর মেতাই হেব, কােজই আমরা সটা আর দখাি না।
doirgho o prostho koto ? 13 12

৫.৩ মান আেরাপণ (Value Assignment)


মেলখেত (program) চলক িনেয় তােত মান আেরাপণ (value assign) করেল আসেল কী
ঘেট? চলেক একটা মান আেগ থেক আেছই, এমতাব ায় আেরকটা মান আেরাপ করেল কী ঘেট?
একটা চলক থেক আেরকটা চলেক মান আেরাপ করেলই বা কী ঘেট?
i n t amar ;
i n t tomar = 5 ;

উপের আমরা েটা চলক ঘাষনা (variable declare) করলাম: একটার নাম amar আর

5g
আেরকটার নাম tomar, েটাই int ধরেনর অথাৎ পূণক, একটােত আিদমান (initial value)
িদেয় িদলাম আর একটােত িদলাম না। আমরা যখন চলক ঘাষনা কির তখন আসেল আমরা গণিনর
(computer) রিনেত (memory) িকছু জায়গা দখল কির। ধের িনেত পােরা রিন হল একটা
রা ার পােশ অেনক েলা একই রকম বাড়ী। কান চলক ঘাষনা করার সময় আমরা আসেল ওই
in
বাড়ী েলার একটা দখল কের সই বাড়ীটার নাম িদেয় দই আমােদর চলেকর নােম। তামরা
িন য় দেখেছা অেনেকরই বাড়ীর নাম থােক যমন "শাি নীড়"। আমােদর চলক বাড়ী েলার
নাম amar ও tomar। তা আমরা যখন উপেরর েটা চলক ঘাষনা করলাম তখন রিনেত ওই
রকম েটা জায়গা িনেয় তােদর নাম িদেয় িদলাম amar আর tomar। এখন কথা হে রিণেত
am

(memory) ওই জায়গায় আমরা আসেল রাখেবা কী? উ রটােতা সহজ আমরা রাখেবা চলকিটর
মান। যখন আমরা আিদমান িদেয় িদলাম তখন ওই জায়গােত আমােদর দয়া মানটা থাকেব, আর
যখন আিদমান িদেবা না, তখনও ওই জায়গািটেত আেগ থেক যাই িছল তাই থাকেব।
amar = tomar ;
al

এবার আমরা যিদ উপেরর মেতা কের tomar এর মান amar এ আেরাপ কির তাহেল কী ঘট-
ব? আসেল উপেরর এই িববৃিত (statement) চালােনার পের amar এর আেগর মান মুেছ িগেয়
সটার নতুন মান হেয় যােব tomar এর মােনর সমান অথাৎ amar এর মানও হেব 5। এখােন
একটা পূণ িবষয় বেল রাখেত হেব য এই য tomar থেক amar এ মান আেরাপ করা হেলা
এেত িক tomar এর মােন কান পিরবতন হেব না। অথাৎ tomar এর মান আেগর মেতা 5-ই
থাকেব। আেরাপেণ (assignment) সমান িচে র বােম যা থােক সটােক ল (target) আর
ডােন যটা থােক সটােক উৎস (source) বলা হয়, কারণ উৎস থেক মান িনেয় লে আেরাপ
করা হয়। উপেরর আেরাপেণ amar = িচে র বােম তাই এিট ল আর tomar ডানপােশ তাই
এিট উৎস। আেরাপেণর ফেল লে র মান বদেল িক উৎেসর মান বদেল না, একই থােক।
উপেরর মেলখ (program) আর ফলন (output) ল কেরা। আমরা থেম চলক x
ঘাষনা কের তার আিদ মান (initial value) িদেয়িছ 3, তারপর চলক y ঘাষনা কের তার
আিদমান িদেয়িছ x+5 অথাৎ 3 + 5 = 8। এই পযােয় ফলন দখােনা হেয়েছ x আর y েটার
মােনরই। ফলেন আমরা দখেত পাি x 3 y 8। তারপর মেলখেত আমরা িলেখিছ x = y
∗ 3; ফেল x এর মান হেব এখন 8 ∗ 3 = 24, আর y এর মান িক একই থাকেব, কারণ
y এর মান আমরা কবল ব বহার কেরিছ, y এ তা কান মান আেরাপ কির নাই। মেলখেত

৫০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৪. মান অদল-বদল (Value Swapping)

পেরর িববৃিতেত (statement) আমরা x ও y এর তখনকার মান দিখেয়িছ, ফলেন সটা িঠকই
x 24 y 8 দখাে । মেলখেত এরপেরর বােক আমরা আবার x এ মান আেরাপ কেরিছ x =
y + 3 ∗ 4; তা এর ফেল আেগর মেতাই y এর মান বদল হেব না, িক x এর নতুন মান হেয়
যােব 8 + 3 ∗ 4 = 20, যা পেরর cout এর মাধ েম ফলেন িঠকই দখােনা হেয়েছ x 20 y 8।
মেলখেত এরপর আমরা দিখ y = x ∗ 2; এর ফেল y এর নতুন মান হেব y = 20 ∗ 2 =
40, আর x এর মান এবার আেগ যা িছেলা তাই থাকেব, কারণ x এর মান কবল ব বহার করা
হেয়েছ, x এ কান মান আেরাপ করা হয় িন।
int x = 3 ; / / আিদ মান আেরাপ
int y = x + 5 ; / / আিদ মান আেরাপ
cout << " x " << x << " y " << y << endl ; / / মান দখাও

x = y ∗ 3; / / পুনরায় মান আেরাপ


cout << " x " << x << " y " << y << endl ; / / মান দখাও

x = y + 3 ∗ 4;

5g
/ / পুনরায় মান আেরাপ
cout << " x " << x << " y " << y << endl ; / / মান দখাও

y = x ∗ 2; / / পুনরায় মান আেরাপ


cout << " x " << x << " y " << y << endl ; / / মান দখাও
in
ফলন (output)
x 3 y 8
am

x 24 y 8
x 20 y 8
x 20 y 40

সবিমিলেয় একটা িবষয় দখা যাে আেরাপেণ = িচে র বােম থাকা ল চলেকর (target
variable) মান কবল পিরবতন হয়, আর = িচে র ডােন থাকা চলক (variable) বা রািশর
al

(expression) এর মান কান পিরবতন হয় না। আেরকিট ব াপার হেলা কান চলেক পের কান
নতুন মান আেরাপ না হওয়া পয আেগরবার য মান আেরাপ করা হেয়িছল সটাই থােক।

৫.৪ মান অদল-বদল (Value Swapping)


ধেরা তামার েটা চলক (variable) আেছ x আর y আর তােদর মান যথা েম 12 ও 13। তা
তামােক এমন িকছু িববৃিত (statement) িলখেত হেব যােত ওই িববৃিত েলা চালােনার (run)
পের আমরা x আর y এর মান যথা েম 13 আর 12 পাই অথাৎ মান েটা অদল-বদল হেয় যায়।
i n t x = 12 ; / / x এর মান আেরাপ করা হেলা
i n t y = 13 ; / / y এর মান আেরাপ করা হেলা

উপের আমরা কবল চলক x আর y ঘাষনা কের তােদর আিদমান িহসােব 12 ও 13 িদেয়
িদলাম। এখন আমরা এমন িকছু করেবা যােত x আর y মান অদল-বদল হেয় যায়। থেমই আমরা
একটা চটুল সমাধান কির। তামােদর মেধ যারা ু ধরেনর আর চটপেট তারা সাধারণত এই

৫১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৪. মান অদল-বদল (Value Swapping)

সমাধানিট করেত চাইেব। নীেচর িববৃিত েটা ল কেরা: আমরা ফ x এর মেধ সরাসির 13
আেরাপ কেরিছ আর y এর মেধ 12 আেরাপ কেরিছ। ব স হেয় গল x আর y এর মান অদল-বদল!
আসেল আমরা কী এইেট চেয়িছলাম? এখােন তা চলক েটার মেধ একটা থেক আেরকটােত
মান নয়ার মেতা কান ঘটনা ঘেট িন, কােজই কান অদল বদেলর িকছু ঘেট িন!
x = 13 ; / / x এর মান আেরাপ করা হেলা
y = 12 ; / / y এর মান আেরাপ করা হেলা

অদল-বদল বুঝার জ িচ া কেরা তামার িট পয়ালা আেছ: কাঁেচর পয়ালা আর কাঁসার


পয়ালা। কাঁেচর পয়ালায় আেছ আঙুেরর রস আর কাঁসার পয়ালায় কমলার রস। এখন তুিম এই
পয়ালা েটােত থাকা ফেলর রস অদল-বদল করেত চাও যােত কাঁেচর পয়ালায় থােক কমলার রস
আর কাঁসার পয়ালায় থােক আঙুেরর রস। তা এখন তুিম কী করেব। তুিম তা আর সরাসির এক-
টার ফেলর রস আেরকটােত ঢেল িদেত পােরা না। তামােক যটা করেত হেব তা হেলা আেরকটা
পয়ালা নয়া। ধেরা সটা কােঠর পয়ালা। এই কােঠর পয়ালািট তুিম একটা থেক আেরকটােত
ঢালাঢািলর কােজ ব বহার করেব। তাহেল এই অিতির কােঠর পয়ালা কােজ লািগেয় কীভােব

5g
তামার কাঁচ আর কাঁসার পয়ালার ফেলর রস অদল-বদল করা যায়, আমরা নীেচ তা দিখ।

১. একদম েত কাঁেচর পয়ালায় রেয়েছ আমােদর আঙুেরর রস আর কােঠর পয়ালা খািল।


তরাং কাঁেচর পয়ালা থেক আঙুেরর রস কােঠর পয়ালায় ঢােলা। ফেল কােঠর পয়ালায়
থাকেলা আঙুেরর রস আর কাঁেচর পয়ালা খািল হেয় গেলা।
in
২. কাঁেচর পয়ালা যেহতু এখন খািল আর কাঁসার পয়ালায় আেছ কমলার রস, আমরা তাই
কাঁসার পয়ালার কমলার রস কাঁেচর পয়ালায় ঢালেবা। ফেল কাঁেচর পয়ালায় থাকেলা
am

কমলার রস আর কাঁসার পয়ালা খািল হেয় গেলা।

৩. কাঁসার পয়ালা যেহতু এখন খািল আর কােঠর পয়লায় আেছ আঙুেরর রস, আমরা তাই
কােঠর পয়ালার আঙুেরর রস কাঁসার পয়ালায় ঢালেবা। ফেল কাঁসার পয়ালায় থাকেলা
আঙুেরর রস আর কােঠর পয়ালা খািল হেয় গেলা।
al

উপেরর ধাপ িতনিট স করেলই আমােদর এক পয়ালার ফেলর রস আেরক পয়ালায়


অদল-বদল হেয় যােব। তা পয়ালা েটার রস অদল-বদেলর মেতাই আসেল আমােদর চলক -
টার মান অদল-বদল করেত হেব। একটা অিতির পয়ালার মেতা আমােদর এখােনও লাগেব
একটা অিতির চলক। ধের নই আমােদর সই অিতির চলক হেলা z। আমরা তাহেল এই
অিতির চলক কােজ লািগেয় আমােদর x আর y চলেকর মান অদল-বদল কের ফিল।
z = x; / / z হেলা 12 আর x আেছ 12 , y আেছ 13
x = y; / / x হেলা 13 আর y আেছ 13 , z আেছ 12
y = z; / / y হেলা 12 আর z আেছ 12 , x আেছ 13

তা উপেরর িতনিট িববৃিত চালােলই আমােদর x আর y চলক েটার মান অদল-বদল হেয়
গেলা। তেব পয়ালা আর ফেলর রেসর অদল বদেলর সােথ চলক আর মােনর অদল-বদেলর িক
িকছুটা তফাৎ আেছ। তফাৎটা হেলা ফেলর রস এক পয়ালা থেক আেরক পয়ালয় ঢালেল যটা
থেক ঢালা হেলা সই পয়ালা খািল হেয় যায়। িক চলেকর ে z = x; করেল চলক x এর
মান চলক z এ আেরাপ হয় িঠকই, িক চলক x িকছুেতই খািল হয় না, বরং তার য মান িছেলা
সটাই থােক। চলেকর মান বদেল যায় কবল যখন এেত নতুন মান আেরাপ করা হয়।

৫২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৫. আেরাপেণর বাম ও ডান (Assignment Left and Right)

৫.৫ আেরাপেণর বাম ও ডান (Assignment Left and Right)


কান চলেকর (variable) বাম-মান (l-value) ও ডান-মান (r-value) বলেত কী বুেঝা? কান
চলেক মান আেরাপণ করেত গেল আমরা আেরাপ (assign) = িচ িদেয় বােম ও ডােন িকছু
িলিখ যমন y = x;। এখােন বােমরিটেক বলা হয় ল (target) আর ডােনরিটেক বলা হয়
উৎস (source)। আেরাপেণর ফেল ডান পােশর উৎস থেক মান বাম পােশর লে আেরািপত
হয়। কথা হে আেরাপ = িচে র বােম আমরা কী কী িদেত পারেবা বা পারেবা না, আর ডােনই
বা কী কী িদেত পারেবা বা পারেবা না? তাছাড়া একটা চলেকর নাম আেরাপ = িচে র বাম বা
ডানপােশ িলখেল এই ই ে চলেকর ভুিমকায় আসেল কান তফাৎ হয় িকনা?
এই আেলাচনায় যাওয়ার আেগ আমরা একটু পেরর উ ৃতাংশটু িবেবচনা কির। "ঢাকার মামা
হািলম িবখ াত। চল আমরা মামা হািলম খাই। তুিম খােব এক বািট, আিম খাব এক বািট। আমার
বািটটা পির ার নয়, তামার বািটটা পির ার।" তা এইখােন বািট মােন কখন আসেল হািলম আর
কখন আসেল সটা পা ? আমরা বুঝেত পাির "তুিম খােব এক বািট, আিম খাব এক বািট" এই
কথা েলােত বািট বলেত আসেল সিত সিত পা টােক কামেড় কামেড় খাওয়ার কথা বলা হে না,
বরং তুিম এক বািট পিরমান হািলম খােব আর আিম এক বািট পিরমান হািলম খােবা তাই বুঝােনা

5g
হে । এক বািট হািলম মােন একটা বািটেত থাকা হািলম। িবষয় েলােক চলক আর তার মােনর
সােথ িমলাও। বািট িঠক যন চলেকর মেতা আর হািলম হল তার মােনর মেতা। আবার "আমার
বািটটা পির ার নয়, তামার বািটটা পির ার।" এই অংেশ বািট মােন আসেল বািট নােমর পা টা,
সই পাে ঢালা হািলম নয় কান ভােবই। তাহেল দখা যাে বািট বলেত কখেনা কখেনা আসেল
in
পা টােক বুঝােনা হয় আর কখেনা কখেনা পা টােত থাকা হািলমেক বুঝােনা হয়। একই ভােব
চলেকর নাম উে খ করেল কখেনা কখেনা চলকিটর মানেক বুঝােনা হয়, কখেনা কখেনা আসেল
চলকিটর জ রিণেত (memory) বরা জায়গাটু বুঝােনা হয়।
am

x = 3; এখােন চলক x বলেত আমরা আসেল চলক x এর জ রিনেত (memory) নয়া জা-
য়গাটু বুিঝ যখােন মান 3 ক রাখা হেব। এখােন কান ভােবই চলক x এ আেগ থেক
িবদ মান মানেক বুঝােনা হে না। খয়াল কেরা এখােন চলক x আেরাপ = িচে র বাম পা-
শ আেছ। যখন চলক x আসেল রিনেত বরা কৃত জায়গােক বুঝায় তখন এটােক আমরা
ফ চলক না বেল আেরা কের বলেবা চলেকর বাম-মান (l-value)। তাহেল মেন
রেখা চলেকর বাম মান িদেয় আমরা বুঝােবা চলেকর জ রিনেত নয়া জায়গাটু ।
al

y = x; এখােন চলক y বলেত আমরা চলক y এর জ রিনেত বরা পাওয়া জায়গাটু েক বুিঝ।
আর চলক y আেরাপ = িচে র বােম আেছ তাই এখােন চলক y এর বাম-মান ব ব ত
হেয়েছ। তেব চলক x বলেত এখােন আমরা কবল তার মানটােক বুিঝ। খয়াল কেরা চলক
x এর মানটাইেতা চলক y এর রিনর জায়গাটােত জমা হেব, চলক x এর জ বরা
জায়গােতা আর িগেয় চলক y এর জায়গায় লখা হেব না। আমরা দখিছ এখােন চলক x
আেরাপ = িচে র ডােন রেয়েছ। যখন চলক x আসেল তার মানটােক বুঝায় তখন আমরা
এটােক বলব চলেকর ডান-মান (r-value)। চলেকর ডান মান িদেয় আমরা তাহেল বুঝােবা
চলেকর য মান সিটেক, রিণেত থাকা জায়গািটেক নয়।

উপেরর আেলাচনা থেক আমরা একটা িবষয়ই পির ার করেত চেয়িছ সটা হেলা, আেরাপ
= িচে র বােম আমরা কবল এমন িকছু িদেত পারেবা যার জ রিনেত জায়গা দখল করা আেছ,
অথাৎ যার বাম-মান (l-value) আেছ। আর আেরাপ িচে র ডান পােশ আমরা এমন িকছু িদেত
পারেবা যার মান আেছ অথাৎ ডান-মান (r-value) আেছ। একটা িবষয় খয়াল কেরা যার বাম-
মান আেছ অথাৎ রিনেত যার জায়গা আেছ তার একটা মানও থাকেবই অথাৎ তার ডান-মান

৫৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৬. আ -শরন আেরাপণ (Self-Referential Assignment)

থাকেবই, যমন য কান চলেকর। কথা হে এমন িকছু িক আেছ যার ডান মান আেছ িক বাম
মান নাই। উ র ধের িনেত পােরা আেছ। যমন x = 3; এইখােন 3 এর ডান মান আেছ িক বাম
মান নাই। কােজই কউ চাইেল 3 = x; িলখেত পারেব না, সংকলন (compile) করার সময়
িট দখােব, বলেব "error: lvalue required as left operand of assignment"।
একই ভােব কউ চাইেল আেরাপণ িহসােব y+3 = x;ও িলখেত পারেব না, একই িট (error)
দখােব, কারণ চলক y এর বাম মান স ব হেলও y + 3 করেল ওইটা আর চলক y থােক না হেয়
যায় একটা রািশ যার মান হেব y এর মান যাগ 3, কােজই সটার কবল মান থােক, তার জ
রিনেত কান জায়গা থােক না। বুঝাই যাে অ িদেক আেরাপণ িহসােব x = y + 3; িলখা
যােব কারণ y + 3 এর ডান-মান আেছ অপর িদেক চলক x এর বাম-মান আেছ।

৫.৬ আ -শরন আেরাপণ (Self-Referential Assignment)


মেলখ (program) দখেল আমােদর সাধারণত x = x + 1; বা এই জাতীয় অ ুত িকছু িবষয়
নজের আেস। মুল কথা হেলা এই সব ে একই চলক (variable) আেরাপ (assignment)

x = x + 1; / / িচ
5g
= িচে র বােমও রেয়েছ আবার ডােনও রেয়েছ। আমরা সকেল গিণত জািন কম বা বশী। সখােন
সমীকরণ িনেয় আমােদর য ধারনা আেছ সই অ যায়ী তা x কখেনা x + 1 এর সমান হেত পাের
না। তাহেল মেলখেত x = x + 1; এর মেতা অথহীন িবষয় কন থােক?
= গিণেতর সমান িচ নয় , এিট গণনার আেরাপণ।
in
আসেল = িচ িট গিণেত আমরা ব বহার কির েটা সংখ া তুলনা কের যিদ দিখ তারা এেক
অপেরর সমান তাহেল। আমরা তাই ওটােক গিণেত সমান (equal) িচ বেল থািক। িক গণনার
am

জগেত = িচ িটেক সমান িচ িহসােব ব বহার না কের বরং আেরাপণ (assignment) িচ


িহসােব ব বহার করা হয়। কােজই কান মেলখেত আমরা যখন x = x + 1; দিখ তখন আসেল
ওটা কান ভােবই গিণেতর সমীকরণ নয়, বরং ওইটা গণনার জগেতর আেরাপণ। তরাং গিণেতর
জগেত ওইটা কান অথ তরী না করেলও গণনার জগেত ওটার িনিদ অথ আেছ।
আমরা আেরাপণ (assignment) িনেয় আেগই আেলাচনা কেরিছ। ওই আেরাপণ েলার সব-
েলােত বাম আর ডান উভয় পােশ চলক থাকেলও আলাদা আলাদা চলক িছল। আর x = x + 1ও
al

আেরাপণ তেব এখােন একই চলক আেরাপ িচে র বােমও আেছ ডােনও আেছ। এইরকম আেরা-
পণ যখােন একই চলক বােমও আেছ ডােনও আেছ সটােক আমরা বলেবা আ শরন আেরাপণ
(self-referential assignment) অথাৎ যখােন একটা চলক িনেজর মােনর জ িনেজরই
শরনাপ হয়। আ শরণ আেরাপেণ ডানপােশ চলকিটর ডান-মান (r-value) ব ব ত হয়, আর
বামপােশ চলকিটর বাম-মান (l-value) ব ব ত হয়। এই রকম আেরাপেণ আসেল কী ঘেট?
int x = 3 ; / / চলক x এ আিদ মান আেরাপ করা হেলা
x = x + 1; / / এখােন আ −শরণ আেরাপণ করা হে
cout << x << endl ; / / চলক x এর মান ফলন দওয়া হে

এই রকম আেরাপণ বুঝেত গেল আমরা x = x + 1; িববৃিতিটেক ইিট ঘটনায় িবভ কের
িনেত পাির। একটা ঘটনা হল ডান পােশ x + 1 িহসাব করা অথাৎ x+1 এর মান বা আেরা পির-
ার কের বলেল ডান-মান িহসাব করা। আর অ ঘটনাটা হল বাম পােশ x এর বাম-মােন অথাৎ
রিনেত (memory) x এর জ বরা করা জায়গায় ডান পাশ থেক পাওয়া মানিট িলেখ দ-
ওয়া। তা এই েটা ঘটনার থমিট আেগ ঘটেব আর ি তীয়িট পের ঘটেব। উপের আমরা x এর
আিদ মান িনেয়িছ 3। এরপর যখন x= x+1; িনবািহত (execute) হেব তখন থম ঘটনািট ঘটেব

৫৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৭. অ শীলনী সম া (Exercise Problems)

আেগ অথাৎ x + 1 মান িহসাব হেব। x এর মান যেহতু এই অব ায় 3 তাই x + 1 হেব 4। মেন
কের দেখা এই 4 এর িক কবল ডান-মান আেছ এর জ রিনেত কান জায়গা দখল করা নই
বা এর কান বাম-মান নই। অথাৎ এই 4 কান ভােবই x চলেকর জায়গায় নই, অ কাথাও
আেছ। যাইেহাক এমতাব ায় এরপর ঘটেব ি তীয় ঘটনািট অথাৎ এই 4 মানিট িগেয় লখা হেয়
যােব x এর জ বরা জায়গােত। আমরা তাই x এর পুরেনা মান 3 বদেল সখােন পােবা এর
নতুন মান 4। তাহেল x = x + 1; আ -শরন আেরাপেণর ফেল চলেকর মান এক বেড় গেলা।
আ শরন আেরাপেণর আেরা নানারকম জিটল অব া আেছ যমন x = x ∗ 3; বা x = x∗
x + x + 1;। এ েলার িতিট ে আেগ ডানপােশর মান িহসাব করা হেব আর তারপর সই
মান বাম পােশ িলেখ দয়া হেব, ফেল চলকিটেত নতুন একট মান থাকেব।

৫.৭ অ শীলনী সম া (Exercise Problems)

ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।

১. সরাসির

5g
মেলখেয়র (program) িভতের উপা িদেয় িদেল সম া কী?

২. উপা (data) কেনা যাগান (input) িনেত হেব? িবধা-অ িবধা কী কী?

৩. যাগান যাচনা (input prompt) কী? যাগান নয়ার আেগ কন যাচনা করা উিচৎ?
in
৪. চলেক (variable) মান আেরাপেণ (assignment) ল ও উৎেস কী ঘেট বণনা কেরা।
am

৫. চলেকর বাম-মান আর ডান-মান বলেত কী বুেঝা? উদাহরণ িদেয় ব াখ া কেরা।

৬. আেরাপেণ = িচে র বােম কন এমন িকছু দয়া যায় না যার কবল ডান মান আেছ?

৭. আ -শরণ (self-referential) আেরাপণ কী উদাহরণ সহ ব াখ া কেরা।

৮. িট চলেক (variable) থাকা মান বদলাবদিল করেব কমেন ব াখ া কেরা।


al

পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয


ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

১. এমন একিট মেলখ (program) রচনা কেরা যিট একিট পূণক (int) ও একিট ভ ক
(float) যাগান (input) িনেয় স েলা আবার ফলেন (output) দখায়।

২. এমন একিট মেলখ (program) রচনা কেরা যিট িট ভ ক (float) সংখ া যাগান
(input) িনেয় সংখ া িট ও তােদর যাগফল ফলেন (output) দখায়।

৩. এমন একিট মেলখ (program) রচনা কেরা যিট িতনিট পূণক (int) যাগান (input)
িনেয় তােদরেক য েম যাগান নয়া হেয়েছ সই েম আবার উে া েম দখােব। যমন
ভু সংখ া িতনিট যিদ হয় পর পর 2 3 1 তাহল িসধা েম দখােব 2 3 1 আবার তােদর
উ া েম দখােব 1 3 2। খয়াল কেরা আমরা িক মােনর ম বলিছ না।

৫৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৭. অ শীলনী সম া (Exercise Problems)

৪. এমন একিট মেলখ (program) রচনা কেরা যিট একদম িঠক িঠক নীেচর মেতা যাগান
(input) ও ফলন (output) উৎপ কের। তুিম িক পরী ার ন র েলা যাগান িনেব,
আর আমরা এেককবার চালােনার সময় এক এক রকম সংখ া যাগান িদেবা।
f o l a f o l n i r n o y e r kromolekho
− − − − − − − − − − − − − −
prothom p o r i k k h a i koto ? 90
d i t i y o p o r i k k h a i koto ? 75
t r i t i y o p o r i k k h a i koto ? 91
− − − − − − − − − − − − − −
shorbo mot number holo 256

পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন কবল

5g
একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

আমরা ধের িনি য তুিম দরকারী িশর নিথ (header) অ ভু করা, নামাধার
(namespace) std ব বহার করা, main িবপাতেকর কংকাল লখা আর স-
টার শেষ return EXIT SUCCESS; িলেখ মান ফরত দয়া ইত মেধ ভােলা
in
কের িশেখ ফেলেছা। তা তুিম যিদ নীেচ লখা মেলখ েলা সংকলন (compile)
কের চালােত (run) চাও, তামােক িক আেগ include, namespace, main,
return এ েলা িলেখ িনেত হেব, তারপর main িবপাতেকর িভতের return এর
am

আেগ তুিম আমােদর নীেচর অংশ েলা িলেখ িনেব। তারপর সংকলন কের মেলখ
চালােব। আমরা এখন থেক মাটামুিট এইভােব মেলখ দখােবা।

১. এমন একিট মেলখ (program) রচনা কেরা যিট একিট পূণক (int) ও একিট ভ ক
(float) যাগান (input) িনেয় স েলা আবার ফলেন (output) দখায়।
al

িফিরি ৫.৩: যাগান ও ফলেনর মেলখ (Input Output Program)


i n t purnok ;
f l o a t vognok ;

cout << " purnok koto ? " ;


c i n >> purnok ;

cout << " vognok koto ? " ;


c i n >> vognok ;

cout << " puronok holo " << purnok << endl ;
cout << " vognok holo " << vognok << endl ;

২. এমন একিট মেলখ (program) রচনা কেরা যিট িট ভ ক (float) সংখ া যাগান
(input) িনেয় সংখ া িট ও তােদর যাগফল ফলেন (output) দখায়।

৫৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৭. অ শীলনী সম া (Exercise Problems)

িফিরি ৫.৪: যাগান িকয়ন ফলন (Input Process Output)


f l o a t prothom , d i t i y o ;

cout << " songkhya d u t i koto ? " ;


c i n >> prothom >> d i t i y o ;

f l o a t j o g f o l = prothom + d i t i y o ;

cout << " songkhya d u t i " ; / / কান endl নাই


cout << prothom << " " << d i t i y o << endl ;

cout << " tader j o g f o l " << j o g f o l << endl ;

৩. এমন একিট মেলখ (program) রচনা কেরা যিট িতনিট পূণক (int) যাগান (input)

5g
িনেয় তােদরেক য েম যাগান নয়া হেয়েছ সই েম আবার উে া েম দখােব। যমন
ভু সংখ া িতনিট যিদ হয় পর পর 2 3 1 তাহল িসধা েম দখােব 2 3 1 আবার তােদর
উ া েম দখােব 1 3 2। খয়াল কেরা আমরা িক মােনর ম বলিছ না।

িফিরি ৫.৫: যাগােনর িসধা মউ া ম (Input Order Reverse Order)


in
i n t prothom , d i t i y o , t r i t i y o ;

cout << " songkhya t i n t i koto ? " ;


am

c i n >> prothom >> d i t i y o >> t r i t i y o ;

cout << " s i d h a krome " << prothom << " " ;
cout << d i t i y o << " " << t r i t i y o << endl ;

cout << " u l t a krome " << t r i t i y o << " " ;


al

cout << d i t i y o << " " << prothom << endl ;

৪. এমন একিট মেলখ (program) রচনা কেরা যিট একদম িঠক িঠক নীেচর মেতা যাগান
(input) ও ফলন (output) উৎপ কের। তুিম িক পরী ার ন র েলা যাগান িনেব,
আর আমরা এেককবার চালােনার সময় এক এক রকম সংখ া যাগান িদেবা।
f o l a f o l n i r n o y e r kromolekho
− − − − − − − − − − − − − −
prothom p o r i k k h a i koto ? 90
d i t i y o p o r i k k h a i koto ? 75
t r i t i y o p o r i k k h a i koto ? 91
− − − − − − − − − − − − − −
shorbo mot number holo 256

ফলাফল ি য়াকরেণর মেলখিট আমরা নীেচ দখাি ।

৫৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৫.৮. গণনা পিরভাষা (Computing Terminologies)

িফিরি ৫.৬: ফলাফল ি য়ার মেলখ (Result Processing Program)


i n t prothom , d i t i y o , t r i t i y o ;

cout << " f o l a f o l n i r n o y e r kromolekho " << endl ;

cout << "− − − − − − − − − − − − − −" << endl ;

cout << " prothom p o r i k k h a i koto ? " ;


c i n >> prothom ;

cout << " d i t i y o p o r i k k h a i koto ? " ;


c i n >> d i t i y o ;

cout << " t r i t i y o p o r i k k h a i koto ? " ;


c i n >> t r i t i y o ;

5g
cout << "− − − − − − − − − − − − − −" << endl ;

i n t f o l a f o l = prothom + d i t i y o + t r i t i y o ;
in
cout << " shorbo mot number holo " ;
cout << f o l a f o l << endl ;
am

৫.৮ গণনা পিরভাষা (Computing Terminologies)


• সূ (formula) • বাম-মান (l-value)
al

• যাচনা (prompt) • ডান-মান (r-value)

• অদল-বদল (swap) • আ -শরণ (self-reference)

৫৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৬

গািণিতক ি য়াকরণ
(Mathematical Processing)

5g
গািণিতক ি য়াকরেণ রািশেত (expression) গািণিতক অণুি য়া (operator) ও িবপাতক
(function) সমুহ কী ভােব িহসাব করা হয় আমােদর তা জানেত হেব।

৬.১ এিকক অণুি য়া (Unary Operators)


in
িসিপিপেত এিকক (unary) অণুি য়ক ধনা ক (positive) + আর ঋণা ক (negative) − কী
ভােব কাজ কের? যথাযথ মেলখ িলেখ উদাহরণ সহ বুিঝেয় দাও। এিকক (unary) অণুি য়ক
am

(operator) একটা উপাদােনর (operand) ওপর যু হেয় ফলাফল উৎপ কের।


িফিরি ৬.১: পািটগিণেতর ধনা ক ও ঋণা ক (Arithmetic Positive Negative)
int a = 5; i n t const b = −9 ; / / a চলক b বক
cout << " +7 = " << +7 << " −7 = " << −7 << endl ;
cout << " +a = " << +a << " −a = " << −a << endl ;
al

cout << " +b = " << +b << " −b = " << −b << endl ;
cout << endl ;
cout << " + ( a∗b ) = " << + ( a∗b ) ; / / a∗b হল রািশ
cout << " −( a∗b ) = " << ( a∗b ) << endl ;
cout << " +abs ( b ) = " << +abs ( b ) ; / / abs ( ) িবপাতক
cout << " −abs ( b ) = " << −abs ( b ) << endl ;

ফলন (output)
+7 = 7 −7 = −7
+a = 5 −a = −5
+b = −9 −b = 9

+ ( a∗b ) = −45 −( a∗b ) = −45


+abs ( b ) = 9 −abs ( b ) = −9

৫৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.২. িয়ক অণুি য়া (Binary Operators)

কান সংখ া, চলক (variable), বক (constant), িবপাতক (function), বা রািশর


(expression) সামেন ধনা ক িচ থাকেল তার য মান সিটই থােক, িক ঋণা ক িচ থাক-
ল তার িচ বদেল যায় অথাৎ আেগ ধনা ক থাকেল পের ঋণা ক হেয় যায় আর আেগ ঋণা ক
থাকেল পের ধনা ক হেয় যায়। চলক ও বক আেগই জােনা। িবপাতক (function) হেলা এমন
একটা িজিনস য িকছু যাগান (input) িনেয় িকছু ফলন (output) দয়। যমন cstdlib না-
মক িশর নিথেত (header file) abs(x) নােম একটা িবপাতক আেছ যিট একিট সংখ া যাগান
িনেয় তার িচ টু বাদ িদেয় কবল মানটু ফলন িহসােব ফরত দয়। অথাৎ abs(3) হেলা
3 আবার abs(−3)ও 3। একই ভােব abs(3.5) হেলা 3.5 আবার abs(−3.5)ও 3.5। রািশ
(expression) হল সংখ া, বক, চলক, অণুি য়ক, িবপাতক িমেল যখন একটা িজিনস তরী
হয় যার মান িহসাব করা যায় যমন 3 + x ∗ abs(y) একিট রািশ যখােন x আর y হল চলক।

৬.২ িয়ক অণুি য়া (Binary Operators)

িসিপিপেত িয়ক (binary) অণুি য়ক েলা যাগ +, িবেয়াগ −, ণ ∗, কী ভােব কাজ কের?

cout
5g
যথাযথ মেলখ িলেখ উদাহরণ সহ বুিঝেয় দাও। িয়ক অণুি য়ক (operator) েটা উপাদােনর
(operand) ওপর যু হেয় ফলাফল উৎপ কের।

িফিরি ৬.২: পািটগিণেতর যাগ িবেয়াগ ণ (Arithmetic Plus Minus Times)


" 5 + 3 = " << 5 + 3 << endl ;
in
<<
cout << " 5 . 1 + 3 = " << 5 . 1 + 3 << endl ;
cout << " 5 . 1 + 3 . 2 = " << 5 . 1 + 3 . 2 << endl ;
cout << endl ;
am

cout << " 5 − 3 = " << 5 − 3 << endl ;


cout << " 5 . 1 − 3 = " << 5 . 1 − 3 << endl ;
cout << " 5 . 1 − 3 . 2 = " << 5 . 1 − 3 . 2 << endl ;
cout << endl ;
al

cout << " 5 ∗ 3 = " << 5 ∗ 3 << endl ;


cout << " 5 . 1 ∗ 3 = " << 5 . 1 ∗ 3 << endl ;
cout << " 5 . 1 ∗ 3 . 2 = " << 5 . 1 ∗ 3 . 2 << endl ;
cout << endl ;

উপেরর মেলখ (program) খয়াল কেরা। আর তার সােথ নীেচর ফলন (output) িম-
িলেয় নাও। ল কেরা আমরা িতনিট কের যাগ, িবেয়াগ, আর ণ কেরিছ। যাগ, িবেয়াগ, বা
ণ আমরা ভােলাই জািন, নতুন কের শখার িকছু নাই। তেব একিট িবষয় খয়াল করেত হেব।
সিট হেলা উপাে র ধরণ কমন? আর এ কারেণই আমরা িতিট অণুি য়ার (operator) জে
িতনিট কের উদাহরণ িনেয়িছ। িতিট অণুি য়ার উদাহরণ েলার থম সািরেত খয়াল কেরা।
সখােন উপাদান (operand) িহসােব আমরা েটা পূণেকর যাগ, িবেয়াগ বা ণ কেরিছ, যমন
5 + 3, 5 − 3 আর 5 ∗ 3। ফলাফল িহসােব যা পেয়িছ তাও একিট পূণক, যমন 8, 2, আর
15। এবার িতিট অণুি য়ার জ তৃতীয় সািরেত খয়াল কেরা। সখােন উপাদান (operand)
িহসােব আমরা েটা ভ ক যাগ, িবেয়াগ বা ণ কেরিছ, যমন 5.1 + 3.2, 5.1 − 3.2 আর 5.
1 ∗ 3.2। ফলাফল িহসােবও আমরা পেয়িছ একিট ভ ক যমন 8.3, 1.9, আর 16.32। তারপর

৬০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৩. ভাগফল ও ভাগেশষ (Division and Remainder)

িতিট অণুি য়ার জ ি তীয় সািরেত খয়াল কেরা। উপাদান িহসােব একিট ভ ক ও একিট পূ-
ণক যাগ, িবেয়াগ বা ণ করা হেয়েছ যমন 5.1 + 3, 5.1 − 3, আর 5.1 ∗ 3। আর ফলাফল
এেসেছ একিট ভ ক যমন 8.1, 2.1, আর 15.3, য েলার কানিটই পূণক নয়। উপাদান েটা
একটা ভ ক হওয়ায় ফলাফলও ভ ক হেয় গেছ।
ফলন (output)
5 + 3 = 8
5.1 + 3 = 8.1
5.1 + 3.2 = 8.3

5 − 3 = 2
5.1 − 3 = 2.1
5.1 − 3.2 = 1.9

5 ∗ 3 = 15
5 . 1 ∗ 3 = 15 . 3
5 . 1 ∗ 3 . 2 = 16 . 32
5g
তাহেল উপেরর আেলাচনা থেক আমরা দখলাম কান অণুি য়ার (operator) যিদ িট
উপাদানই (operand) একরকম হয় তাহেল ফলাফলও সই রকমই হয়। যমন উপাদান েটাই
in
int হেল ফলাফলও int; উপাদান েটাই float হেল ফলাফলও float। আর যিদ েটা উপাদান
রকম হয় যমন একিট পূণক বা int আর একিট ভ ক বা float তাহেল ফলাফল হেব ভ ক বা
float। গিণেত আমরা জািন পূণক সংখ া েলা একই সােথ ভ কও যমন 3 আসেল 3.0, িক
am

একিট ভ ক িক পূণক নাও হেত পাের যমন 5.1 ভ ক িক এেক পূণক িহসােব লখা স ব নয়।
আর এ কারেণ কান অণুি য়া (operator) েয়ােগর পূেব উপাদান (operand) েটা রকম
হেল থেম পূণকিটেক িভতের িভতের ভ েক পা র কের নয়া হয়, আর তারপর যাগ, িবেয়াগ
বা ণ করা হয় েটােক ভ ক িহসােব িনেয়ই। এই য িভতের িভতের পূণকিট ভ েক পা র করা
হয় এটা এক রকেমর উপা কারা র (type casting)। উপা কারা র িনেয় আমরা পের
আেরা িব ািরত জানেবা, আপাতত পূণক থেক ভ েক কারা র মেন রােখা।
al

৬.৩ ভাগফল ও ভাগেশষ (Division and Remainder)


িসিপিপেত িয়ক (binary) অণুি য়ক ভাগফল (division) ও ভাগেশষ (remainder) কী ভােব
কাজ কের? যথাযথ মেলখ িলেখ উদাহরণ সহ বুিঝেয় দাও। তুিম ইত মেধ জেনেছা িয়ক
অণুি য়ক (operator) েটা উপাদােনর (operand) ওপর যু হেয় ফলাফল উৎপ কের।
িফিরি ৬.৩: পািটগিণেতর ভাগফল অণুি য়া (Arithmetic Division Operation)
cout << " 13 / 5 = " << 13 / 5 << endl ;
cout << " 13 . 0 / 5 = " << 13 . 0 / 5 << endl ;
cout << " 13 / 5.0 = " << 13 / 5 . 0 << endl ;
cout << " 13 . 0 / 5.0 = " << 13 . 0 / 5 . 0 << endl ;

ভাগফেলর উপা করণ (data type) কমন হেব সই িনয়ম আসেল যাগ, িবেয়াগ, বা
েণর মেতা একই। যিদ েটা উপাদানই (operand) এক রকেমর হয় তাহেল ফলাফলও হেব

৬১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৩. ভাগফল ও ভাগেশষ (Division and Remainder)

সই রকেমরই। িক উপাদান েটার একিট যিদ হয় পূণক বা int আেরকিট ভ ক বা float


তাহেল ফলাফল হেব একিট ভ ক বা float। এখােনও িভতের িভতের int থেম float এ
কারা র (type casting) হেয় যােব, ভােগর কাজিট হেব উপা কারা র হবার পের। উপা
কারা র ছাড়াও ভােগর ে ভাগেশষ থাকেব িক থাকেব না সটার একটা ব াপার আেছ।
ফলন (output)
13 / 5 = 2
13 . 0 / 5 = 2.6
13 / 5.0 = 2.6
13 . 0 / 5.0 = 2.6

উপেরর ফলন ল কেরা, যিদ ভােগর উপাদান েটার যেকান একিটও ভ ক হয়, যমন
শেষর িতন সাির, তাহেল িক ভাগেশেষর কান ব াপার থােক না, ফেল আমরা সে ে ভাগফল
পাই 2.6। িক ভােগর ে যিদ েটা উপাদানই পূণক হয়, যমন থম সাির তাহেল ভাগিট
িক একটু আলাদা। যমন 13 / 5 করেল আমরা ফলাফল পাই 2 কারণ আমরা জািন এে ে
3 অবিশ থােক। ভােগর ে আেরা একিট

5g পূণ িবষয় আেছ তা হেলা উপাদােনর পূণক -


লা ধনা ক না ঋণা ক। কারণ ঋণা ক সংখ ার ভাগ একটু িবটেকেল হেত পাের। সব িমিলেয়
পূণ সংখ ার ভাগ আেরা িব ািরত কের আমরা ভাগেশেষর সােথ িমিলেয় নীেচ আেলাচনা করেবা।
তেব একটা কথা মেন রাখেব ভােগর ে যিদ ভাজক
মেলখ চালােনার (run) সময় divide by zero বা
হয় যমন 13 / 0 তাহেল তামার
িদেয় ভাগ নােম িটবাতা (error
in
message) দিখেয় ব হেয় যােব। এই রকম িট সংকলেনর (compile) সময় ধরা পেড় না,
কবল চালােনার (run) সময় বা িনবাহ (execute) করার সময় ধরা পেড়, তাই এেদরেক বলা
হয় চলা-কালীন (run-time) বা িনবাহ-কালীন (execution-time) িট।
am

িফিরি ৬.৪: পািটগিণেতর ভাগেশষ অণুি য়া (Arithmetic Remainder Operation)


cout << " 13 / 5 = " << 13 / 5 << " ";
cout << " 13 % 5 = " << 13 % 5 << endl ;

cout << " 13 / −5 = " << 13 / −5 << " ";


cout << " 13 % −5 = " << 13 % −5 << endl ;
al

cout << "−13 / 5 = " << −13 / 5 << " ";


cout << "−13 % 5 = " << −13 % 5 << endl ;

cout << "−13 / −5 = " << −13 / −5 << " ";


cout << "−13 % −5 = " << −13 % −5 << endl ;

// নীেচর সাির েলা সংকলন ( compile ) হেব না , ভ েক ভাগেশষ হয় না


// cout << " 13 . 0 % 5 = " << 13 . 0 % 5 << endl ;
// cout << " 13 . 0 % 5 . 0 = " << 13 . 0 % 5 . 0 << endl ;
// cout << " 13 . 0 / 5 . 0 = " << 13 . 0 / 5 . 0 << endl ;

যাইেহাক সবেশেষ আমরা ভাগেশষ দিখ। ভােগর ে আমরা আেলাচনা কেরিছ ভ ক


বা float এর জ ভাগেশেষর কান ব াপার নই। কােজই ভাগেশষ অণুি য়ার (operator)
উপাদান (operand) েটার য কান একিটও যিদ ভ ক হয়, তাহেল ভাগেশষ মাটামুিট অথহীন

৬২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৩. ভাগফল ও ভাগেশষ (Division and Remainder)

হেয় যায়। কােজই এমন িকছু আমােদর মেলখেত (program) িলখেল সংকলন (compile)
করার সময় িট (error) আসেব। নীেচর মেলখেয়র শেষর িতনিট সাির দখেত পােরা য েলা
টীকা িহসােব রাখা আেছ। ওই েলা টীকা না কের সামেনর // হলােনা দাগ েটা তুেল িদেল
মেলখেয়র অংশ হেয় যােব, আর তখন সংকলন করেল িট আসেব, কের দখেত পােরা।
একটা িবষয় খয়াল কেরেছা, এখােন আমরা িক টীকার (comment) হলােনা // িচ
েটার একরকেমর অপব বহার কেরিছ। উপেরর মেলখেয়র শষ িতনিট সাির আসেল কান ভা-
বই কৃত টীকা নয়। ও েলােতা বাংলায় বা ইংেরজীেত লখা নয়, ও েলা িসিপিপেত লখা আর
টীকা িচ তুেল িনেলই ও েলা মেলখেয়র অংশ হেয় যােব সহেজই। তবু কন এখােন আমরা
ও েলােক টীকার িভতের রাখলাম? এটা আসেল একটা খুবই উপকারী কৗশল। টীকার িভতের
রাখেল যেহতু সটা মেলখেয়র িঠক অংশ থােক না, সংকলন হয় না, কান িট আসার ব াপার
নাই, আমরা তাই মােঝ মােঝ িকছু িকছু িসিপিপেত লখা অংশও টীকার িভতের রািখ। মেলখ
(program) লখার সময় আমরা নানান িকছু পরী া িনরী া কির, এভােব কির, ওভােব কির।
তখন য অংশ েলা ওই সময় দরকার নাই, চাইেল স েলা তা মুেছ ফলা যায়, িক মুেছ ফল-
লই তা তামােক পের আবার ক কের িলখেত হেত পাের। এমতাব ায় তুিম যিদ ওই অদরকারী
অংশটু েত টীকা িদেয় (commenting) দাও, ব স হেয় গেলা। কান ঝােমলা নাই, পের ওই

13 / 5 = 2
5g
অংশটু আবার দরকার হেলই টীকা তুেল (uncomment) িনেব। কী চমৎকার কৗশল তাই না!
আমরা সবাই এিট হরদম ব বহার কির। এখন থেক এই কৗশল কােজ লাগােব, কমন!
ফলন (output)
13 % 5 = 3
in
13 / −5 = −2 13 % −5 = 3
−13 / 5 = −2 −13 % 5 = −3
−13 / −5 = 2 −13 % −5 = −3
am

এবাের ভাগেশেষর ফলাফেলর িদেক নজর দই। ভাগফল সহ আেলাচনার িবধার জ উপ-
রর মেলখ (program) আর ফলন (output) আমরা ভাগেশেষর সােথ সােথ ভাগফলও দ-
িখেয়িছ। আমরা আেগই আেলাচনা কেরিছ ভাগেশষ করা যায় কবল পূণেকর জ । ভাগ করেল
যা অবেশষ থােক তাই ভাগেশষ। িক পূণক তা ধনা কও (positive) হেত পাের, ঋণা কও
(negative) হেত পাের। আসেল ঋণা ক সংখ ার ভাগেশষ িনেয়ই যেতা জিটলতা সৃি হয়। ঋণা-
al

ক সংখ ার ভাগেশষ িনেয় নানান রকম িনয়ম আেছ, আমরা এখােন আেলাচনা করিছ cpp.sh
এ য িনয়েম ভাগেশষ হয়, সটা িনেয়। তুিম য সংকলক (compiler) িদেয় মেলখ সংকলন
(compile) করেব, জেন িনও সখােন কমন হয়। কােরা কােছ থেক জেন িনেত পােরা। অথবা
িনেজই উপেরর মেলখ (program) এর মেতা কের মেলখ তরী কের চািলেয় দেখ িনেত
পােরা। তমন কিঠন িকছু নয়।
যাইেহাক উপেরর ফলন খয়াল কেরা। সখােন িক কান ভ ক নই, সব েলাই পূণক, তেব
ধনা ক ও ঋণা ক আেছ। খয়াল কেরা ভাগফল ও ভাগেশষ উভয় ে মানটা িঠক পাওয়া যায়
িচ িবেবচনা না করেল। যমন চারটা ব াপােরর সব েলােতই িচ বাদ িদেল ভাজক (divisor)
আর ভাজ (dividend) হয় কবল 5 আর 13। 13 ক 5 িদেয় ভাগ করেল ভাগফল হয় 2 আর
ভাগেশষ হয় 3। এই পয সব েলা ব াপােরই িঠক আেছ, িক গালমাল বাঁেধ কবল িচ িনেয়,
ভাগফল বা ভাগেশষ কখন ধনা ক + হেব আর কখন ঋণা ক − হেব। ভাগফেলর ে খয়াল
কেরা যখনই সংখ া েটার িচ একই রকম তখন ভাগফল ধনা ক যমন থম ও চতুথ সাির,
আর যখনই তারা িবপরীত িচে র তখনই ভাগফল ঋণা ক যমন ি তীয় ও তৃতীয় সাির। ভাগ-
শেষর ে িচ িনভর কের ভাজ (dividend) এর ওপর, ভাজেকর ওপর নয়। ভাজ যখনই
ধনা ক যমন 13, ভাগেশষ তখন ধনা ক + হেয়েছ। আর ভাজ যখন ঋণা ক যমন −13 তখন

৬৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৪. আেরাপণ অণুি য়া (Assignment Operator)

ভাগেশষ ঋণা ক − হেয়েছ। ভাগেশেষর িচ 5 বা −5 এর িচে র ওপর িনভর কের নাই। একটা
িবষয় আেগই বেলিছ, ভাগফল ও ভাগেশেষর ে ভাজক যিদ হয় তাহেল তামার মেলখ
চালােনার সময় divide by zero বা িদেয় ভাগ নােম িটবাতা দিখেয় ব হেয় যােব। এই
রকম িট সংকলেনর (compile) সময় ধরা পেড় না, কবল চালােনার (run) সময় ধরা পেড়,
তাই এেদরেক বলা হয় চলা-কালীন িট (run-time error)।
উপেরর উদাহরণ েলােত আমরা যিদও কবল সংখ াই সরাসির ব বহার কেরিছ, তুিম িক
চাইেল কান চলক (variable) বা বক (constant) ব বহার করেত পারেত। তুিম চাইেল কান
রািশ (expression) বা িবপাতক (function) ও ব বহার করেত পারেত। আসেল ডান-মান
(r-value) আেছ এরকম য কান িকছুই এখােন ব বহার করা যেত পাের। এই আেলাচনা েলা
এিকক অণুি য়ার সময়ই আেলাচনা করা হেয়েছ, তবুও আবার বিল। িবপাতক (function) এমন
একটা িজিনস য িকছু যাগান (input) িনেয় িকছু ফলন (output) দয়। যমন cstdlib নামক
িশর নিথেত (header file) abs(x) নােম একটা িবপাতক আেছ যিট একিট সংখ া যাগান
িনেয় তার িচ টু বাদ িদেয় কবল মানটু ফলন িহসােব ফরত দয়। অথাৎ abs(3) হেলা
3 আবার abs(−3)ও 3। একই ভােব abs(3.5) হেলা 3.5 আবার abs(−3.5)ও 3.5। রািশ
(expression) হল সংখ া, বক, চলক, অণুি য়ক, িবপাতক িমেল যখন একটা িকছু তরী করা

i n t a = 4 , b = −3 ;
i n t const c = 5 ;
5g
হয় যার মান আেছ সিট, যমন 3 + x ∗ abs(y) একিট রািশ যখােন x আর y হল চলক।
in
a + 3, c / b, b ∗ c; / / চলক , বক , সংখ া
a = c % abs ( b ) ; / / abs ( b ) হল িবপাতক
a = a − ( b ∗ c) ; / / b ∗ c হল রািশ
am

৬.৪ আেরাপণ অণুি য়া (Assignment Operator)


আেরাপেণ (assignment) চলেকর জ রিণেত (memory) বরা কৃত ােন মান ভের দয়ার
ব াপারটা আমরা আেগ দেখিছ। িক আেরাপণ আসেল একটা অণুি য়াও (operator) বেট।
al

আেরাপণ একটা অণুি য়া এই কথার মােন কী? আমরা আেরাপণ িনয়া কী কী করেত পারেবা?
আেরাপণ (assignment) একটা অণুি য়া (operator) এই কথার মােন হেলা আেরাপণ
িকছু উপাদােনর (operand) ওপর যু হেয় একিট ফলাফল উৎপ কের। সিত বলেত গেল
যাগ, িবেয়াগ, ণ বা ভােগর মেতা আেরাপণও আসেল একটা িয়ক (binary) অণুি য়া। কােজই
এিট িট উপাদােনর (operand) ওপর যু হয়। আেরাপেণর বাম পােশ একটা উপাদান থােক
যার বাম-মান থাকেত হেব অথাৎ যার জ রিণেত (memory) জায়গা বরা থাকেত হেব,
যমন চলক। আর আেরাপেণর ডােন থাকেত হেব এমন িকছু যার ডান-মান বা মান আেছ, যমন
চলক (variable), বক (constant), িবপাতক (function) বা রািশ (expression)। কথা
হে আেরাপেণর ফেল উৎপ হওয়া ফলাফলটা কী? আসেল য মানিট আেরাপেণর বামপােশর
চলেক আেরািপত হয় সই মানিটই আেরাপণ অণুি য়ার ফলাফল িহসােবও িবেবচনা করা হয়।
int v = 3 , w = −5 , x , y , z ; / / ভ কও নয়া যেত পাের
x = v + 5; / / চলক x এর মান 8 , আেরাপেণর ফলাফলও 8
y = abs (w) ; / / চলক y এর মান 5 , আেরাপেণর ফলাফলও 5
z = x + y; / / চলক z এর মান 13 , আেরাপেণর ফলাফলও 13

৬৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৫. যৗিগক আেরাপণ (Compound Assignment)

উপের মেলখেত v + 5 বা 3 + 5 অথাৎ 8 আেরািপত হেয়েছ x এ। তারপর, abs(w)


িবপাতক w বা −5 এর মান হেত িচ ছাড়া 5 ফরত িদেয়েছ যা আেরািপত হেয়েছ y চলেক। আর
শেষ x + y বা 8 + 5 অথাৎ 13 আেরািপত হেয়েছ z চলেক।
তাহেল অ া অণুি য়ার মেতা আেরাপণ অণুি য়ারও যেহতু একিট ফলাফল আেছ কােজই
সই ফলাফলিট অ কান চলক যার বাম-মান আেছ তােত আবারও আেরাপন করা স ব!
int v = 3, w = −5 , x , y , z ; / / ভ কও নয়া যেত পাের
x = ( v + w) ; / / যাগ অণুি য়ার ফলাফল একিট চলেক আেরাপণ
z = (y = x) ; // ডােনর আেরাপেণর ফলাফল বােমরিটেত আেরাপণ
z = v ∗ w; / / ণ আেগ হেব , ণফল আেরাপণ তারপের হেব
z = y = x; // ডােনর আেরাপন আেগ , সই ফল িনেয় বােমর আেরাপন

তরাং কউ যমন অেনক েলা যাগ পরপর িলখেত পাের x + y + z + 3, িঠক তমিন
চাইেলই কউ অেনক েলা আেরাপণও পরপর িলখেত পাের যমন z = y = x = w। তেব কান
ব নী নাই ধের িনেল, যােগর ে সাধারণত সবেচেয় বােমর যাগিট থেক হেয় যাগ েলা

5g
পরপর বাম থেক ডােন এেক এেক হেত থােক। আর আেরাপেণর (assignment) ে সবেচেয়
ডােনর আেরাপণ হেত কের আেরাপণ েলা ডান থেক বােম এেক এেক হেত থােক।
int x = 1 , y = 2 ; z = 3 ; / / আিদ মান আেরাপণ
in
x + ( y = 3) ; / / y হেলা 3 , ফলাফল 1 + 3 বা 4
y = x + ( z = 4 ) ; / / z হেলা 4 , y হেলা 1 + 4 বা 5
z = 5 + ( y = z −3 ) ; / / y হেলা 4 − 3 বা 1 , z হেলা 5 + 1
am

উপেরর উদাহরেণর শষ িতনিট সাির খয়াল কেরা। চলক ঘাষনার পেরর সািরর িববৃিতেত
(statement) x + (y = 3) ; থেম ব নীর িভতের y এর মান 3 আেরাপণ (assign) হেব
আর আেরাপেণর (assignment) ফলাফলও হেব 3, যা x এর মান 1 সােথ যাগ হেয় যাগফল
হেব 4। এই 4 হেলা পুেরা রািশিটর মান। এরপেরর িববৃিতেত y = x + (z = 4) ; থেম ব নীর
িভতের z এর মান আেরাপ হেব 4 আর ফলাফল ও 4, আর তারপর 4 ও x এর মান 1 এর সােথ
al

যাগ হেয় হেব 5 যা িগেয় y চলেক আেরািপত হেব। এবাের আিস শষ িববৃিতেত z = 5 + (y
= z −3); থেম ব নীর িভতের z − 3 িহসাব হেব, z এর মান িঠক আেগর সািরেত হেয়েছ 4
সােথ 3 িবেয়াগ হেল হয় 1 যা y এ আেরািপত হেব আর আেরাপেণর ফলাফলও (result) হেব 1।
এরপর সই 1 আর 5 যাগ হেয় ফল হেব 6 যা z এর িভতের আেরািপত হেব।

৬.৫ যৗিগক আেরাপণ (Compound Assignment)


যৗিগক আেরাপণ (compound assignment) কী? িসিপিপেত যৗিগক আেরাপণ কী ভােব
আেরাপেণর সােথ অ একিট অণুি য়ার (operator) যাজন (composition) ঘটায়? আ -
শরণ (self referential) আেরাপেণর সােথ যৗিগক আেরাপেণর স ক কী?
যৗিগক আেরাপন হেলা আেরাপেনর সােথ আর একিট অণুি য়ার যাজন (composition)।
আেরাপন = এর সােথ যাগ + এর যাজন ঘটােনার ফেল নতুন য অণুি য়ক তরী হয় সিট যাগ-
আেরাপণ +=। একই ভােব আেরাপন = ও িবেয়াগ − যু হেয় তরী হয় িবেয়াগ-আেরাপণ −=,
তারপর একই ভােব ণ-আেরাপণ ∗=, ভাগফল-আেরাপণ /= আর ভাগেশষ-আেরাপণ %=।

৬৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৬. াস ও বৃি অণুি য়া (Increment and Decrement)

x += 13 ; // এর মােন আসেল x = x + 13 ;
x −= 7; // এর মােন আসেল x = x − 7 ;
y ∗= x; // এর মােন আসেল y = y ∗ x ;
z /= x + y; // এর মােন আসেল z = z / ( x + y ) ;
z %= abs ( 3 ) ; // এর মােন আসেল z = z % abs ( 3 ) ;

তাহেল উপেরর উদাহরণ েলা থেক দখা যাে িতিট যৗিগক আেরাপণ আসেল এক এক-
িট আ -শরণ আেরাপন (self-referential assignment)। যৗিগক আেরাপেণর বাম পােশ
য চলকিট থােক সিটর মােনর সােথ সংি পািটগিণতীয় অণুি য়া যমন যাগ, িবেয়াগ, ণ,
ভাগফল, বা ভাগেশষ িহসাব করা হয়, আর তারপর ফলাফলিট ওই চলকিটেতই আেরাপ করা হয়।
আসেল যৗিগক আেরাপণ েলা মেলখ রচনার সময় ক ফ িকি ত কমােনার জ তরী করা
হেয়েছ। অেনক সময় আেরাপেনর বাম পােশ যিট থাকেব সিট সহজ সরল চলক না হেয় অ িকছু
হেত পাের যিট হয়েতা খুবই বড়, সিটর অব ই বাম-মান (l-value) আেছ অথাৎ তার জ র-
িণেত (memory) জায়গা দখল করা আেছ। যমন ধেরা নীেচর উদাহরেণ আমরা সাজন (array)

5g
ব বহার করিছ, ণী (class) ব বহার করিছ, এ েলা কী এখনই তা জানেত চেয়া না, আমরা পের
িব ািরত কের িশখেবা ও েলা। খািল খয়াল কেরা থম সািরেত কী ভােব ল া একটা িজিনস
আেরাপ = িচে র বাম ও ডান উভয় পােশই আেছ। আর খয়াল কেরা শেষর সািরর িববৃিতিট:
যৗিগক আেরাপণ ব বহার কের ওই একই িবষয় কত চমৎকার কের সংে েপ লখা গেছ।
t h i s−>amarSajonCholok [ suchok ] =
in
t h i s−>amarSajonCholok [ suchok ] + amarbriddhi ;

t h i s−>amarSajonCholok [ suchok ] += amarbriddhi ;


am

তাহেল দখেল তা একই িজিনস আেরাপ = িচে র বাম পােশ একবার আবার পর েণই
আেরাপ = িচে র ডানপােশও একবার িলখেত হেব, এিট বশ িবরি কর, আর দখেতও কত
িবরি কর লােগ। তারেচেয় যৗিগক আেরাপণ সংি আর বুঝাটাও সহজ। ফলাফেলর িহসােব
উভয় ে িক আমরা একই ফলাফল পােবা। তেব মেন রেখা মেলখ (program) চালােত
সময় কম লাগেব নািক বশী লাগেব সইে ে িক যৗিগক আেরাপেণর কান ভুিমকা নই।
al

৬.৬ াস ও বৃি অণুি য়া (Increment and Decrement)

িসিপিপেত লখা মেলখেত (program) আমরা ++ বা −− ায়ই দখেত পাই। এই েলা কী?
একটা যাগ বা িবেয়াগ িচ দেখিছ িক েটা যাগ বা িবেয়াগ একসােথ তা আজব ব াপার!
েটা যাগ বা িবেয়াগ এক সােথ দয়ার িবধা-অ িবধা কী? মেলখ িক এেত ত চেল?
int x = 6 , y ; / / েটা চলক একটার আিদমান আেছ , আেরকটার নাই
++x ; / / এক বেড় x হেলা 7 , y জািননা কারণ আিদমান নই
x++ ; / / এক বেড় x হেলা 8 , y জািননা কারণ আিদমান নই
y = ++x ; / / এক বেড় x হেলা 9 , তারপর y এ 9 আেরািপত হেলা
y = x++ ; / / থেম y হেলা x এর সমান বা 9 , পের x হেলা 10

উপেরর মেলখ (program) খয়াল কেরা। েটা চলক (variable) নয়া হেয়েছ x আর y।
চলক x এর আিদমান (initial value) দয়া হেয়েছ 6, িক y এর আিদ মান দয়া হয় িন। এরপর

৬৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৬. াস ও বৃি অণুি য়া (Increment and Decrement)

ি তীয় আর তৃতীয় িববৃিতেত রেয়েছ ++x; আর x++;, খয়াল কেরা উভয় ে x এর মান এক
কের বেড়েছ, এ কারেণ অব ++ ক বলা হয় বৃি অণুি য়ক (increment operator)। বৃি
অণুি য়ক ++ চলেকর আেগই দয়া হউক আর পেরই দয়া হউক ফলাফল িক একই। অব
বৃি ++ আেগ ব বহার করেল এিটেক পূব-বৃি (pre-increment) আর পের ব বহার করেল
এিটেক উ র-বৃি (post-increment) বলা হয়।
তেব বেল রািখ বৃি অণুি য়েকর (increment operator) সােথ িক এমন িকছু ব ব-
হার করেত হেব যার বাম-মান (l-value) রেয়েছ অথাৎ রিণেত (memory) জায়গা দখল করা
আেছ। চলেকর (variable) যেহতু বাম-মান আেছ তাই আমরা চলক x ব বহার করেত পার-
লাম। িক তুিম যিদ চাও ++3 বা 3++ িলখেব যােত 4 পাওয়া যায় অথবা িলখেব (x+3)++ বা
++(x+3), তা িলখেত পারেব না, সংকলন (compile) িট হেব। িট হওয়ার কারণ 3 সংখ া
(number) বা x+3 রািশর (expression) ডান-মান (r-value) তথা মান (value) আেছ িক-
তােদর বাম-মান (l-value) তথা রিণেত (memory) জায়গা দখল করা নই। দরকার নই
তবুও বেল রািখ, তুিম িক ++ এর সােথ চলক x এর বদেল বক (constant) জাতীয় িকছু তা
এমিনেতই ব বহার করেত পারেব না, কারণ বেকর তা মান বদলােনা যায় না।

5g
যাইেহাক ++ আেগই দই আর পেরই দই ++x বা x++ আসেল x+=1; অথাৎ x = x+1;
এর সমতুল এবং সংি প বলেত পােরা। ল কেরা বৃি েত ++ য 1 বৃি ঘেট সই ব াপারটা
িক উ থােক। ফেল ++ কবল একটা উপাদােনর (operand) ওপর যু হয় বেল মেন হয়।
আর তাই ++ ক একিট এিকক (unary) অণুি য়ক (operator) বলা হয়। কথা হে এই এিকক
অণুি য়ার ফলাফলটা কী? ফলাফল তা আমরা আেগই দেখিছ, মান এক বেড় যাওয়া। সটা
in
িঠক, িক তাছাড়াও বৃি অণুি য়ার (increment operator) ফলাফেল িকছু পূণ িবষয়
আেছ য কারেণ পূব-বৃি (pre-increment) আর উ র-বৃি (post-increment) আলাদা।
পূব-বৃি (pre-increment) আর উ র বৃি (post-increment) য আলাদা তা পির ার
am

হেব উপেরর মেলখেয়র (program) শেষর সাির েটা দখেল। যখন y = ++x; করা হেয়েছ
তখন x এর মান আেগ বেড় হেয়েছ 9 আর তারপর xএর সই বেড় যাওয়া মান 9ই y এ আেরািপত
(assign) হেয়েছ। িক যখন y = x++; তখন িক খয়াল কেরা আেগ x এর মান y এ আেরািপত
হেয়েছ ফেল y হেয়েছ 9 আর তারপর x এর মান বেড়েছ 1 ফেল হেয়েছ 10। আ া y = ++x;
আর y = x++; এ েটােক যিদ আমরা বৃি ++ ব বহার না কের িলখতাম তাহেল কমন হেতা?
আমােদর অব ই েটা কের িববৃিত িলখেত হেতা। নীেচ ল কেরা y = ++x; এ আেগ মান
al

বাড়ােনা পের আেরাপণ, আর y = x++; এ আেগ আেরাপণ পের মান বাড়ােনা। আশা করা যায়
পূব-বৃি (pre-) ও উ র-বৃি র (post-increment) তফাৎ পির ার হেয়েছ।
x = x + 1; // y= ++x ; এ x এর মান বৃি আেগ ঘটেব
y = x; // y= ++x ; এ y ত x এর মান আেরাপন পের

y = x; // y= x++ ; এ y ত x এর মান আেরাপন আেগ


x = x + 1; // y= x++ ; এ x এর মান বৃি তার পের

পূব-বৃি (pre-increment) আর উ র-বৃি র (post-increment) আেরা একটা পাথ-


ক ও জানা দরকার অব । সটা হেলা পূব-বৃি র ফলাফল আসেল একটা বাম-মান (l-value)
এে ে চলকিটর বাম-মান, অ িদেক উ র-বৃি র ফলাফল আসেল একটা ডান-মান (r-value)।
আেগই বেলিছ বৃি অণুি য়ার সােথ ব ব ত উপাদােনর (operand) অব ই বাম-মান থাকেত
হেব। ফেল উ র-বৃি র ফলাফেলর ওপের আবার কান বৃি ই চালােনা যায় না, িক পূব-বৃি র
ফলাফেলর ওপর চালােনা যায়। তুিম যিদ পরী া করেত চাও তাহেল ++++x; বা (++x)++; চ-

৬৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৭. িবিত অণুি য়া (Comma Operator)

া কেরা, সংকলন (compile) হেয় যােব, িক x++++ বা ++(x++) চ া কেরা, সংকলন হেব
না, িট (error) আসেব পেরর বৃি টার জ "l-value required"। তুিম যিদ ফ ++x++;
িলেখা, এটা িক সংকলন হেব না, িট দখােব, কারণ হেলা পূব ও উ র বৃি র মেধ উ র বৃি র
অ গণ তা (precedence) আেগ, ফেল ++x++ আসেল ++(x++) এর সমতুল। অ গণ তার
েমর (precedence order) িনয়ম েলা আমরা পেরর এক পােঠ িব ািরত জানেবা।
এবাের আমরা বৃি ব বহাের মেলখেয়র গিতর ওপর ভাব িনেয় একটু আেলাচনা কির।
বৃি (increment) ++x বা x++ সাধারণত x+=1 বা x=x+1 এর চেয় তগিতর, এর কারণ
মুলত একদম য পযােয় x++ বা ++x িবেশষ ভােব িনবািহত হয় িক x+=1 বা x=x+1 সাধারণ
যােগর মেতা কের িনবািহত হয়। সাধারণেতা পূব-বৃি (pre-increment) আর উ র-বৃি র
(post-increment) মেধ পূব-বৃি ত গিতর। কারণ হেলা, উ র-বৃি র ফলাফল যেহতু x এর
মান বৃি করবার আেগর মান, তাই ওই আেগর মানিট থেম কাথাও ণ ায়ী (temporarily)
ভােব রেখ িদেত হয়, আর x এর মান বৃি টা তারপর ঘেট, আর তারপর ণ ায়ী ভােব রাখা মানটা
ফলাফল িহসােব আেস যিট y = x++; এর ে y এ আেরািপত হয়। িক পূব-বৃি র ে মান
বৃি আেগ ঘেট আর ফলাফলটাও সই বৃি া মানই, কােজই ণ ায়ী ভােব আেগর মান রেখ

5g
দওয়ার কান বাঝা (overhead) এখােন নই। মাটকথা পূব-বৃি সরাসির বাম-মােনর ওপরই
কাজ কের অথাৎ ++x এ সরাসির চলকটার ওপরই কাজ কের, আর কান ণ ায়ী িকছু দরকার
হয় না। এ কারেণ পূব-বৃি ++x; উ র-বৃি x++; এর চেয় বশী তগিতর হেয় থােক। কােজই
তুিম পারেতা পে ++x ব বহার করেব, x++ ব বহার করেব না।
in
মেলখেত বৃি ব বহাের এবাের একটা পরামশ দই। পূব-বৃি ও উ র-বৃি িনেয় অেনক
রকম খলা যায়, যমন তুিম চাইেল x = (++x)++ + ++x; এর মেতা অেনক েলা + িচ িদেয়
িকছু একটা িলখেত পােরা। এই রকম জিটল িববৃিত েলা হয়েতা সংকলন (compile) হেব। এর
am

ফেল ফলাফলও িকছু একটা আসেব, যটা চাইেল বুঝা স ব, িক বুঝেত গেল মাথা বশ গরম
হেয় যায়। আমার পরামশ হেলা এইরকম জিটল িববৃিত পারেতা পে লখেব না। সবসময় এমন
ভােব সংেকত (code) িলখেব যােত পের তুিম বা অ কউ তমন কান ক ছাড়াই তামার
সংেকত দেখ বুঝেত পাের। মেন রাখেব সংেকত যত জিটল, তার ভুল বর করাও তত কিঠন।
উপেরর পুেরা আেলাচনােত আমরা কবল বৃি (increment) িনেয় আেলাচনা কেরিছ। আস-
ল াস (decrement) −− িনেয় আেলাচনাটা একদম একই রকম। আমরা তাই পুনরাবৃি কর-
al

বা না। কবল জেন রােখা ােসর (decrement) ফেল মান 1 কেম যায়। তাই −−x বা x−−
হেলা x −= 1 বা x = x − 1 এর সমতুল। আমরা −−x ক পূব াস (pre-decrement) আর
x−− ক উ র- াস (post-decrement) বিল। পূব- ােসর তুলনায় উ র- ােসর অ গণ তা
(precedence) বশী। গিতর িদক িবেবচনায় পূব- াস, উ র- ােসর চেয় য়তর।

৬.৭ িবিত অণুি য়া (Comma Operator)


িসিপিপেত িবিত অণুি য়া (comma operator) কেয়কিট রািশ (expression) ক এক সােথ
পরপর লখায় সাহায কের। িবিত (comma) অণুি য়ার বামপােশর উপাদােনর (operand)
মান সব সময় নথক (void) হয় আর উেপি ত হয়। এর অথ হে ডান পােশর উপাদানিটর
(operand) মানই িবিত অণুি য়ার (comma operator) ফলাফল হয়।
একটা উদাহরণ দিখ x = (y=3, y+1); এই িববৃিতর ফেল ব নীর িভতের থেম িবিতর
বাম পােশর রািশ িহসােব y এর মান আেরািপত (assign) হেব 3। যিদও আেরাপেনর কারেণ
আমরা y এ 3 আেরাপেণর পাশাপািশ ফলাফলও পাই 3, িক িবিতর (comma) কারেণ সই

৬৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৮. অ গণ তার ম (Precedence Order)

ফলাফল বাদ িগেয় ফলাফল হেয় যােব নথক (void)। যাইেহাক এরপর িবিতর (comma) ডান
পােশর রািশ িহসােব y+1 এর মান 3+1 বা 4 হেব যিট আসেল যােগরও + ফলাফল। আর
যােগর এই ফলাফল 4 ই শষ পয x চলেক আেরািপত হেব। এখােন ব নী দরকার কারণ িবিত
(comma) , সাধারণত আেরাপেণর (assignment) = পের িহসাব করা হয়। আমরা ব নীর
িভতেরর আেরাপণিট y = 3 িবিতর (comma) আেগ করেত চাইেলও ব নীর বাইেরর চলক x এ
আেরাপণিট িবিতর পের করেত চাই, আর এ কারেণ ব নী জ রী। ব াপারিট আেরা পির ার বুঝেত
চাইেল একই িজিনস ব নী ছাড়া কী হেব দেখা x = y = 3, y + 1;। এখােন েটা আেরাপণই
(assignment) িবিতর (comma) আেগ িনবািহত (execute) হেব। ফেল থেম y এর মান
আেরািপত হেব 3, তারপর x এও মান 3ই আেরািপত হেব, তারপর y+1 িহসাব হেব 4। এই 4
িবিতর ফলাফল হেলও সিট িক এখােন িকছুেত আেরািপত হয় িন।
িবিত (comma) অণু্ি য়া (operator) িহসােব ব বহার হেলও এর আেরা নানান ব বহার
আেছ িসিপিপেত। যমন একািধক চলক (variable) একসােথ ঘাষণা (declare) করেত আমরা
িবিত (comma) িদেয় িলিখ int x, y, z = 3; িবিতর (comma) এই রকম ব বহার আসেল
অণুি য়া িহসােব নয়, বরং তািলকার পৃথকী (separator) িহসােব ব বহার। আমরা যখন পের
জ -ঘূণী (for-loop) ও পরািমিত (parameter) িনেয় আেলাচনা করেবা তখনও তািলকা পৃ-

৬.৮ অ গণ তার
5g
থকী (list separator) িহসােব িবিতর (comma) ব বহার দখেত পােবা।

ম (Precedence Order)
in
অ গণ তার ম (precedence order) কী? িসিপিপেত এ পয পিরিচত হওয়া অণুি য়া -
লার (operator) অ গণ তার ম (precedence order) আেলাচনা কেরা।
ধেরা তুিম 3 + 4∗5 + 6 এর মান িহসাব করেব। আেগকার িদেন এক রকম স া কলিন
am

(calculator) পাওয়া যেতা যিট করেতা কী, বাম থেক িহসাব করেতা এেকর পর এক। ফেল
সটা থম 3 ও 4 যাগ কের 7 বর করেতা, তারপর তার সােথ 5 ণ কের বর করেতা 35 আর
শেষ তার সােথ 6 যাগ কের ফল িদেতা 41। তুিম চাইেল উে া আেরক রকেমর অব া ভাবেত
পােরা, যখােন ডান িদক থেক এেকর পর এক িহসাব হেব। তরাং 5 ও 6 যাগ কের 11, তার-
সােথ 4 ণ কের 44, শেষ 3 যাগ কের 47। িক ছাটেবলা থেক সরেলর িনয়ম আমরা িশেখ
এেসিছ: ণ আেগ হেব যাগ পের হেব। আমরা তাই িহসাব কির 4 ও 5 এর ণ আেগ ফল 20
al

তার সােথ বােমর যাগ আেগ, তাই 3 আেগ যাগ হেলা 23, শেষ ডােনর যাগ তাই 6 যাগ কের
হেলা 29, যটােক আমরা সিঠক িহসাব বেল ধের নই। এই য বাম থেক ডােন বা ডান থেক
বােম িহসাব না কের ণ যােগর আেগ করেত হেব, আবার েটা যাগ পর পর থাকেল বােমর যাগ
আেগ করেত হেব। এই িনয়ম েলােক অ গণ তার ম(precedence order) বলা হয়।
সরল অংেক অ গণ তার ম িছল: ব ণী, এর, ভাগ, ণ, যাগ, িবেয়াগ। সেবেচেয় িভ-
তেরর ব নী সেবেচেয় আেগ। ভাগ আর ণ আসেল বাম থেক যটা আেগ আেস। একই ভােব
যাগ ও িবেয়াগ বাম থেক যটা আেগ আেস। িসিপিপেত আমরা এ পয অেনক েলা অণুি য়ার
(Operator) সােথ পিরিচত হেয়িছ। এ েলা হেলা এিকক + − ++ −− িয়ক + − ∗ / % =
+= −= ∗= /− %= , তা এেদর মেধ এিকক অণুি য়ার ম সবার আেগ, তারপর িয়ক অণু-
ি য়া েলার ম। আমরা আপাতত কবল এ েলার অ গণ তার ম (precedence order)
িবেবচনা করেবা। অ া অণুি য়া ও তােদর ম স েক আমরা পের জানেবা।

১. ++ −− ২িট এিকক অণুি য়া (unary operator) উ র-বৃি ও উ র- াস (post-


increment and post-decrement) x++, x−− এরা বাম-মােনর (l- value) ওপ-
র যু হেয় ডান-মান (r-value) ফল দয়। ফেল x++++ বা x−−−− করা যায় না।

৬৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৮. অ গণ তার ম (Precedence Order)

২. ++ −− + − ৪িট এিকক অণুি য়া (unary operator) পূব-বৃি (pre-increment)


++x ও পূব- াস (pre-decrement) −−x এরা বাম-মােনর (l-value) ওপর যু
হেয় বাম-মানই ফল দয়। ফেল ++++x বা −−−−x করা যায়, আর সেবেচেয় ডােনর
++ বা −− আেগ যু হয়। (পূব) এিকক অণুি য়া (unary operator) +x ধনা ক
(positive) −x আর ঋণা ক (negative) এরা ডান-মােনর (r-value) ওপর যু
হেয় ডান-মানই দয়। ফেল + + x বা − − x করা স ব, খয়াল কেরা েটা + বা েটা
− এর মেধ ফাঁকা িদেত হেয়েছ না হেল ও েলা বৃি বা াস িহসােব িচি ত হেয় যােব।

৩. ∗ / % ৩িট িয়ক অণুি য়া (binary operator) এরা িট ডান-মােনর (r-value)


উপাদােনর (operand) ওপর যু হেয় ডান-মানই ফল দয়। এই অণুি য়া েলা পরপর
অেনক েলা থাকেল বাম থেক ডােন এেক এেক িহসাব হেত থােক। যমন 10 / 2 ∗ 4
% 6 এ বাম থেক ডােন থেম ভাগফল, তারপর ণফল, তারপর ভাগেশষ িহসাব হেব।

৪. + − ২িট িয়ক অণুি য়া (binary operator) এরা িট ডান-মােনর (r-value) উপা-


দােনর (operator) ওপর যু হেয় ডান-মানই ফল দয়। এই অণুি য়া েলা পরপর

5g
অেনক েলা থাকেল বাম থেক ডােন এেক এেক িহসাব হেত থােক। যমন 10 − 2 + 5
এ বাম থেক ডােন থেম িবেয়াগফল, তারপর যাগফল িহসাব হেব।

৫. = += −= ∗= /= %= এই সব িয়ক অণুি য়া (binary operator) আেরাপণ েলার


(assignment) বামপােশ এমন িকছু থাকেত হেব যার বাম-মান (l-value) আেছ, আর
in
ডান পােশ এমন িকছু থাকেত হয় যার ডান-মান (r-value) আেছ। এই অণুি য়া েলা
পরপর অেন েলা থাকেল ডান থেক বােম এেক এেক িহসাব হেত থােক। যমন x += y
= z ∗= 3 ত থেম ডােনর ∗= এর কারেণ z এর সােথ 3 ণ হেব, তারপর মােঝর =
এর কারেণ z এর মান y আেরািপত হেব, শেষ y এর মান x এর সােথ যাগ হেব।
am

৬. , িবিত (comma) একিট িয়ক অণুি য়া (binary operator) যিটর ফলাফল কবল
ডানপােশর উপাদান (operand)। বাম পােশর উপাদানিট িহসাব হয়, িক তার ফলাফল
হেব নথক (void)। এই অণুি য়া একািধক পরপর থাকেল, বাম থেক ডােন এেক এেক
িহসাব হেত থােক। যমন x + 2, y ∗ 3, z / 4 থেম যাগ হেব, তারপর ণ আর
শেষ ভাগ, ফলাফল হেব একদম ডােনর ভাগফলিটই।
al

েটা একই বা একই েমর অণুি য়া পরপর থাকেল কান পােশরিট আেগ হেব এইিট িন-
ধারণ কের দয়ােক বলা হয় সহেযাজ তা (associativity)। যমন x−y−z থাকেল আমােদর
থেম বােমর িবেয়াগ করেত হেব, তারপর ডােনর িবেয়াগ, কােজই িবেয়াগ হল বাম সহেযাজ
(left associative) অথাৎ x − y − z আর (x −y) − z একই। খয়াল কেরা িবেয়াগ িক
ডান সহেযাজ (right associative) নয় কারণ x − y − z আর x − (y − z) এক নয়। যাগ
আবার বাম ও ডান উভয় সহেযাজ কারণ x + y + z, (x + y) + z ও x + (y + z) একই।
সাধারণত উভয় সহেযাজ েদর ে িবধােথ তােদর বাম-সহেযাজ িহসােব িবেবচনা করা হয়।
উপেরর তািলকায় আেলািচত অণুি য়া েলার ে একই রকম অণুি য়া পরপর থাকেল কান
পােশরিট আেগ হেব, সটাও িক আেলাচনা করা হেয়েছ। সখান থেক বুঝেতা পােরা কান অণু-
ি য়া বাম সহেযাজ (left associative), আর কানিট ডান সহেযাজ (right associative)?
সেবেশেষ একটা পূণ িবষয় মেন রাখেব ব নী ( ) এর শি িক সবেচেয় বশী। য
কান ােন কান রকেমর ি ধা থাকেল সখােন ব নী ব বহার কের ি ধা পির ার করেব। অণু-
ি য়া েলার (operator) অ গণ তার ম (precedence order) ব বহার কের নানা রকম
জিটল জিটল িববৃিত ও রািশ (statement and expression) তরী করা যায়, য েলা ম

৭০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.৯. গািণিতক সম া (Mathematical Problems)

িবেবচনায় িনেয় বুঝেত গেল মাথা গরম হেয় যেত পাের, ভুল হেল বর করা কিঠন হেয় যােব।
কােজই আমার পরামশ হে তামার িববৃিত বা রািশ অব ই সহেজ পাঠেযাগ হেত হেব, আর
এ কােজ যত দরকার ব নী ব বহার করেব। যমন ধেরা x += y − z এর চেয় x += (y − z)
বুঝা আমােদর জ বশী সহজ, কারণ এেত একদম পির ার িবেয়াগ আেগ হেব।

৬.৯ গািণিতক সম া (Mathematical Problems)


ি মাি ক ানা ব ব ায় (two dimensional coordinate system) িট িব র ানা
যাগান (input) িনেয় তােদর মােঝ দূর ফলন (output) িহসােব দখাও। ধেরা ানা েলা
ভ েক দয়া আেছ। তামার িন য় জানা আেছ য েটা িব র (x1 , y1 ) ও (x2 , y2 ) দূর হেলা

(x1 − x2 )2 + (y1 − y2 )2 অথাৎ ভুজ েয়র দূরে র বগ ও কািট েয়র দূরে র বেগর যা-
গফেলর বগমূল। বগমূল িনণেয়র জ cmath িশর নিথ (header file) থেক sqrt িবপাতক
ব বহার কেরা। আর বগ িনণেয়র জ তামােক একই িজিনস ইবার ণ করেত হেব।

#i n c l u d e <cmath> //
5g
িফিরি ৬.৫: িট িব র মেধ র দূর (Distance Between Two Points)
/ / নীেচর িশর নিথ main িবপাতেকর বাইের অ ভু

বগমূল িনণেয়র জ
কেরা

s q r t িবপাতক লাগেব
in
/ / নীেচর অংশ main িবপাতেকর িভতের return এর আেগ িলেখা

f l o a t x1 , y1 , x2 , y2 ; / / ানা েটা ( x1 , y1 ) , ( x2 , y2 )
am

cout << " prothom bindur x y : " ; / / যাগান যাচনা


c i n >> x1 >> y1 ; / / থম িব যাগান
cout << " d i t i y o bindur x y : " ; / / যাগান যাচনা
c i n >> x2 >> y2 ; / / ি তীয় িব যাগান
al

f l o a t xd = abs ( x1 − x2 ) ; / / ভুজ িটর দূর


f l o a t yd = abs ( y1 − y2 ) ; / / কািট িটর দূর

f l o a t dd = s q r t ( xd ∗ xd + yd ∗ yd ) ; / / দূর িহসাব কেরা


cout << " bindu dutor durotto : " << dd << endl ; / / ফলন

উপেরর মেলখ খয়াল কেরা। খুবই সাদামাটা। থেম main িবপাতেকর বাইের cmath
িশর নিথ অ ভু করেত হেব বেল দখােনা হেয়েছ। তারপর main িবপাতেকর িভতের িব
েটার ভুজ ও কািট ধারণ করার জ চারিট float ধরেনর ভ ক চলক (variable) নয়া হেয়-
ছ। এরপর যাগান যাচনা (input prompt) িদেয় িব েটার ানা যাগান (input) নয়া
হেয়েছ। তারপর ভুজ েয়র দূর abs(x1 − x2) বর কের xd নােমর আেরকিট চলেক নয়া
হেয়েছ, একই ভােব কািট েয়র দূর abs(y1 − y2) বর কের yd নােমর আেরকিট চলেক ন-
য়া হেয়েছ। মেন কের দেখা abs িবপাতকিট (function) কান সংখ ার পরম মান (absolute
value) অথাৎ িচ বাদ িদেয় কবল মানটু ফরত দয়। যাইেহাক তারপর xd এর বগ ও yd
এর বেগর যাগফল িনেয় তার বগমূল বর করা হেয়েছ sqrt িবপাতক ব বহার কের আর রাখা

৭১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১০. িশর নিথ cmath (Header File cmath)

হেয়েছ dd চলেক। সবেশেষ দূর dd চলক থেক ফলন (output) দয়া হেয়েছ। এখােন এক-
টা কথা বেল রািখ sqrt(xd ∗ xd + yd ∗ yd) এর বদেল cmath িশর নিথ (header file)
থেকই hypot নােমর িবপাতকও (function) আমরা ব বহার করেত পারতাম। সে ে আমা-
দর িলখেত হেতা hypot(xd, yd) আর সিট িঠক একই কাজ করেতা। িবপাতক hypot আসেল
সমেকাণী ি ভুেজর অিতভুেজর দঘ িনণয় কের, িক তার সূ আর েটা িব র দূর িনণেয়র
সূে র মেধ িমল রেয়েছ।

৬.১০ িশর নিথ cmath (Header File cmath)


িশর নিথ cmath এ গািণিতক ি য়াকরেণ ব ব তব নানান িবপাতক (function) আেছ। আম-
রা এখােন ওই িবপাতক েলার সােথ সংি আকাের পিরিচত হেবা। এই িবপাতক েলা কী তা
বুঝেত তামার উ মাধ িমক গিণেতর ধারণাবলী দরকার হেব। নীেচর পরাবৃ ীয় (hyperbolic)
িবপাতক েলা ছাড়া ায় সব েলা িবপাতকই আমােদর ায়শই কােজ লােগ।

5g
গািণিতক িবপাতক (Mathematical Functions)
• abs(x): কান সংখ া x এর পরম মান। abs(3) হেব 3 এবং abs(−3) হেব 3।
in
ি েকাণিমিতক িবপাতক (Trigonometric Functions)
• cos(x): ল া পাত (cosine) যখােন x হল রিডয়ােন।
am

• sin(x): ল া পাত (sine) যখােন x হল রিডয়ােন।

• tan(x): শা পাত (tangent) যখােন x হল রিডয়ােন।

• acos(x): িবল া পাত (arc-cosine) যখােন ফরত মান রিডয়ােন।

• asin(x): িবল া পাত (arc-sine) যখােন ফরত মান রিডয়ােন।


al

• atan(x): িব শা পাত (arc-tangent) যখােন ফরত মান রিডয়ােন।

• atan2(x,y): িব শা পাত (arc-tangent) যখােন xy এর x হল লব (numerator)


আর y হল হর (denominator) আর ফরত মান রিডয়ােন।

পরাবৃ ীয় িবপাতক (Hyperbolic Functions)

• cosh(x): পরাবৃ ীয় ল া পাত (hyperbolic cosine) যখােন x হল রিডয়ােন।

• sinh(x): পরাবৃ ীয় ল া পাত (hyperbolic sine) যখােন x হল রিডয়ােন।

• tanh(x): পরাবৃ ীয় শা পাত (hyperbolic tangent) যখােন x হল রিডয়ােন।

• acosh(x): পরাবৃ ীয় িবল া পাত (hyperbolic arc-cosine), ফরত রিডয়ােন।

• asinh(x): পরাবৃ ীয় িবল া পাত (hyperbolic arc-sine), ফরত রিডয়ােন।

৭২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১০. িশর নিথ cmath (Header File cmath)

• atanh(x): পরাবৃ ীয় িব শা পাত (hyperbolic arc-tangent), ফরত রিডয়ােন।

চক ও ঘাতা (Exponents and Logarithms)


• exp(x): ex বা চকীয় িবপাতক (exponential function)

• log(x): loge x বা ঘাতা িবপাতক (logarithmic function)

• log10(x): log10 x বা ১০-িভি ক ঘাতা (logarithm)

• exp2(x): 2x বা ২-িভি ক চকীয় (exponential) িবপাতক

• log2(x): log2 x বা ২-িভি ক ঘাতা (logarithm)

শি ও ঘাত (Power and Index)

5g
• pow(x,y): xy অথাৎ x এর y তম শি যমন pow(2,3) হল 23 বা 8

• sqrt(x): x অথাৎ x এর বগমূল যমন sqrt(16.0) হল 4.0

• cbrt(x): 3 x অথাৎ x এর ঘনমূল যমন cbrt(8.0) হল 2.0
in

• hypot(x,y): x2 + y 2 অথাৎ x ও y ক সমেকানী ি ভুেজর ল (perpendicular)
ও ভুিম (base) ধরেল অিতভুেজর (hypotenuse) দঘ
am

নকটায়েনর িবপাতক (Rounding Functions)


• round(x): নকটায়ন িবপাতক x এর িনকটতম পূণক।

• floor(x): মেঝ িবপাতক x এর সমান বা িঠক ছাট পূণকিট।


al

• ceil (x): ছাদ িবপাতক x এর সমান বা িঠক বড় পূণকিট।

• trunc(x): কতন িবপাতক x এর ভ াংশটু কেট ফলেব।

উপেরর িবপাতক েলার ফলাফল বুঝার জ নীেচর সারণী ল কেরা।


মান নকটায়ন মেঝ ছাদ কতন
x round(x) floor(x) ceil (x) trunc(x)
2.3 2.0 2.0 3.0 2.0
2.8 3.0 2.0 3.0 2.0
2.5 3.0 2.0 3.0 2.0
2.0 2.0 2.0 2.0 2.0
-2.3 -2.0 -3.0 -2.0 -2.0
-2.8 -3.0 -3.0 -2.0 -2.0
-2.5 -3.0 -3.0 -2.0 -2.0

৭৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

৬.১১ অ শীলনী সম া (Exercise Problems)


ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।

১. িবপাতক (function) ও রািশ (expression) বলেত কী বুেঝা? উদাহরণ দাও।

২. এিকক (unary) ও িয়ক (binary) অণুি য়া (operation) বলেত কী বুেঝা? কেয়কটা


কের এিকক (unary) ও িয়ক (binary) অণুি য়ার (operation) নাম বেলা।

৩. উপা কারা র (type casting) কী? িয়ক অণুি য়ায় (binary operation) কী
ভােব উপা কারা র (type casting) হয়?

৪. িনবাহ-কালীন িট (execution-time error) বলেত কী বুেঝা? ভাগফল ও ভাগেশষ


িনণেয়র সময় কান িনবাহকালীন িট ঘটেত পাের?

৫. মেলখেত অদরকারী সংেকত (code) মুেছ না িদেয় কীভােব আমরা টীকা (comment)

5g
ব বহার কের স েলােক অকাযকর কের রাখেত পাির, ব াখ া কেরা।

৬. ঋণা ক পূণেকর (integer) ভাগফল ও ভাগেশষ িনণেয়র িনয়ম বণনা কেরা।

৭. আেরাপণ অণুি য়ার (assignment operator) ফলাফল িঠক কী? যৗিগক আেরাপণ
in
(compound assignment) বলেত কী বুেঝা? কেয়কিট উদাহরণ দাও।

৮. সাধারণ যৗিগক আেরাপন (compound assignment) যমন x += 1 ব বহার না


am

কের কন বৃি (increment) x++ বা ++x কন ব বহার করা হয়?

৯. উ র-বৃি (post-increment) ও পূব-বৃি (pre-increment) এর মেধ পাথক েলা


আেলাচনা কেরা। তুিম কানিট ব বহার করেত চাইেব এবং কন?

১০. িবিত (comma) অণুি য়ার কাজ কী? এর ফলাফলই বা কী?


al

১১. অ গণ তার ম (precedence order) ও সহেযাজ তা (associativity) কী?

১২. িসিপিপেত এ পয শখা অণুি য়া েলার (operator) অ গণ তার ম (precedence


order) ও সহেযাজ তা (associativity) আেলাচনা কেরা।

পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয


ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

১. একিট সমা র ধারার (arithmetic series) থম পদ a সাধারণ অ র d হেল n-তম


পদ কেতা? n পেদর সমি ই বা কত? এর জ িসিপিপেত একটা মেলখ (program)
তরী কেরা যিট a, d, ও n যাগান (input) িনেব, আর n-তম পদ ও n পেদর সমি
ফলন (output) িদেব। এর জ তুিম সূ ব বহার করেব n-তম পদ = a + (n − 1) ∗ d
আর n পেদর সমি = n ∗ (2a + (n − 1) ∗ d)/2। দ িবিভ ধারার জে এই সূ
a আর d বসােল আমরা ওই ধারা েলার জ সরাসির সূ পেত পাির।

৭৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

• 1 + 2 + 3 + . . . ধারােত a = 1, d = 1। তরাং n-তম পদ = a + n − 1, n


পেদর সমি = n(n + 1)/2। যমন n = 10 হেল 10-তম পদ 10, সমি 55।
• 2 + 4 + 6 + . . . ধারােত a = 2, d = 2। তরাং n-তম পদ = 2n, n পেদর
সমি = n(n + 1)। যমন n = 10 হেল 10-তম পদ 20, সমি 110।
• 1 + 3 + 5 + . . . ধারােত a = 1, d = 2। তরাং n-তম পদ = 2n − 1, n পেদর
সমি = n2 । যমন n = 10 হেল 10-তম পদ 19, সমি 100।

২. নীেচর মেতা ফলন (output) দয় এরকম একিট মেলখ (program) তরী কেরা।
ফেলর িটেত তুিম িয়ক অণুি য়া েলা (binary operator) ব বহার করেব।
x=10 y=5

rashi fol
x=y+3 x= 8
x=y−2 x= 3
x=y∗5
x=x / y
x=x%y
x= 25
x= 2
x= 0 5g
in
৩. এমন একিট মেলখ (program) রচনা কেরা যিট একিট িতন অে র সংখ ােক উে া
কের যমন 326 হেয় যায় 623। এ কােজ তুিম ভাগফল, ভাগেশষ, ণ, যাগ ও িবেয়াগ
ব বহার করেব। 326 থেক অ েলা আলাদা কের তারপর 623 তরী করেব।
am

৪. একিট ি ভুেজর িতন বা র দঘ a, b, c যাগান (input)


√ িনেয় ি ভুজিটর ফল িনণয়
কেরা। তুিম হয়েতা জােনা ি ভুেজর ফল = s(s − a)(s − b)(s − c) যখােন s
হেলা অধ পিরসীমা অথাৎ s = (a + b + c)/2।

৫. এমন একিট মেলখ (program) রচনা কেরা যিট সেক ড যাগান িনেয় তােক ঘ টা-
িমিনট- সেকে ড পা র কের। এ কােজ তুিম ভাগফল ও ভাগেশষ ব বহার করেব।
al

৬. একিট ি ভুেজর িতন বা র দঘ a, b, c যাগান (input) িনেয় এর কাণ েলা িনণয়


কেরা। ধেরা ি ভুেজর কান িতনিট A, B, C। এখান A, B, C যথা েম a, b, c বা র
িবপরীত কাণ। তুিম হয়েতা জােনা কাণ C = cos−1 ((a2 + b2 − c2 )/(2ab)), কাণ
B = cos−1 ((c2 +a2 −b2 )/(2ca)) ও কাণ A = cos−1 ((b2 +c2 −a2 )/(2bc))।
তামার মেলখেত ি ভুেজর কান েলােক তুিম িড ীেত পা র কের ফলন িদেব।

৭. এমন একিট মেলখ (program) রচনা কেরা যিট েটা সময় ঘ টা, িমিনট, সেকে ড
িনেয় সময় িটেক যাগ কের। এ কােজ তুিম যাগ, ভাগফল ও ভাগেশষ ব বহার করেব।

৮. এমন একিট মেলখ রচনা কেরা যিট েটা সমীকরণ ax + by = c ও dx + ey = f


এর a, b, c, d, e, f যাগান িনেয় x ও y এর মান ফলন দয়।

৯. একিট বাস u আিদেবগ ও a সম রণ িনেয় যা া করেলা। সময় t সেক ড পের বােসর


গিতেবগ v িনণয় কেরা। t সময় পের বাসিট অিত া র sও িনণয় কেরা। এ কােজ তুিম
গিতিবদ ার সূ v = u + at ও s = ut + 21 at2 ব বহার করেব।

৭৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

১০. নীেচর ছ -সংেকেতর (pseudocode) জ একিট মেলখ (program) তরী কেরা।

ক) পেড়া (read) x ও y
খ) গেণা (compute) p = x ∗ y
গ) গেণা (compute) s = x + y
ঘ) গেণা (compute) t = s2 + p ∗ (s − x) ∗ (p + y)
ঙ) িলেখা (write) t

পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন কবল
একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. একিট সমা র ধারার (arithmetic series) থম পদ a সাধারণ অ র d হেল n-তম

5g
পদ কেতা? n পেদর সমি ই বা কত? এর জ িসিপিপেত একটা মেলখ (program)
তরী কেরা যিট a, d, ও n যাগান (input) িনেব, আর n-তম পদ ও n পেদর সমি
ফলন (output) িদেব। এর জ তুিম সূ ব বহার করেব n-তম পদ = a + (n − 1) ∗ d
আর n পেদর সমি = n ∗ (2a + (n − 1) ∗ d)/2। দ িবিভ ধারার জে এই সূ
a আর d বসােল আমরা ওই ধারা েলার জ সরাসির সূ পেত পাির।
in
• 1 + 2 + 3 + . . . ধারােত a = 1, d = 1। তরাং n-তম পদ = a + n − 1, n
পেদর সমি = n(n + 1)/2। যমন n = 10 হেল 10-তম পদ 10, সমি 55।
am

• 2 + 4 + 6 + . . . ধারােত a = 2, d = 2। তরাং n-তম পদ = 2n, n পেদর


সমি = n(n + 1)। যমন n = 10 হেল 10-তম পদ 20, সমি 110।
• 1 + 3 + 5 + . . . ধারােত a = 1, d = 2। তরাং n-তম পদ = 2n − 1, n পেদর
সমি = n2 । যমন n = 10 হেল 10-তম পদ 19, সমি 100।
al

আমরা এখােন কবল সাধারণ ে র জ মেলখ (program) তরী করেবা। দ


িবেশষ ধারার জ তুিম এই মেলখ (program) দরকার মেতা বদেল িনেত পারেব।

িফিরি ৬.৬: সমা র ধারার সম া (Arithmetic Series Problem)


int a , d , n ;
cout << " prothom pod ? " ; c i n >> a ;
cout << " sadharon ontor ? " ; c i n >> d ;
cout << " kototom pod ? " ; c i n >> n ;

i n t t = a + ( n − 1 ) ∗ d ; / / n−তম পদ
cout << n << "−tom pod = " << t << endl ;

i n t s = n ∗ ( 2∗a + ( n − 1 ) ∗d ) / 2 ; / / সমি
cout << n << " poder somosti = " << s << endl ;

৭৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

যাগান-ফলন (input-output)
prothom pod ? 1
sadharon ontor ? 1
kototom pod ? 10
10−tom pod = 10
10 poder somosti = 55

২. নীেচর মেতা ফলন (output) দয় এরকম একিট মেলখ (program) তরী কেরা।
x=10 y=5

rashi fol
x=y+3 x= 8
x=y−2 x= 3
x=y∗5 x= 25
x=x / y
x=x%y
x= 2
x= 0
5g
িফিরি ৬.৭: িয়ক অণুি য়ার ফলাফল (Binary Operation Results)
in
i n t x = 10 , y = 5 ;

cout << " x= " << x << " y= " << y << endl ;
am

cout << endl ; / / ফাঁকা সাির


cout << " r a s h i "<< " f o l " << endl ;
cout << " x=y+3 " << " x= " << y+3 << endl ;
cout << " x=y−2 " << " x= " << y−2 << endl ;
cout << " x=y∗5 " << " x= " << y∗5 << endl ;
cout << " x=x / y " << " x= " << x / y << endl ;
al

cout << " x=x%y " << " x= " << x%y << endl ;

৩. এমন একিট মেলখ (program) রচনা কেরা যিট একিট িতন অে র সংখ ােক উে া
কের যমন 326 হেয় যায় 623। এ কােজ তুিম ভাগফল, ভাগেশষ, ণ, যাগ ও িবেয়াগ
ব বহার করেব। 326 থেক অ েলা আলাদা কের তারপর 623 তরী করেব।
i n t s o j a = 326 ;

i n t daner = s o j a % 10 ; / / ভাগেশষ 6
i n t bamer = s o j a / 100 ; / / ভাগফল 3
i n t majher = s o j a / 10 % 10 ; / / ফল 2

i n t u l t a = bamer ; // উ া = 3
u l t a += majher ∗ 10 ; / / উ া = 23
u l t a += daner ∗ 100 ; / / উ া = 623

৭৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

৪. একিট ি ভুেজর িতন বা র দঘ a, b, c যাগান (input)


√ িনেয় ি ভুজিটর ফল িনণয়
কেরা। তুিম হয়েতা জােনা ি ভুেজর ফল = s(s − a)(s − b)(s − c) যখােন s
হেলা অধ পিরসীমা অথাৎ s = (a + b + c)/2।

িফিরি ৬.৮: ি ভুেজর বা হেত ফল (Triangle's Area From Sides)


/ / main িবপাতেকর বাইের
#i n c l u d e <cmath>

/ / main িবপাতেকর িভতের


float a , b , c ; / / বা েলা
cout << " bahu a b c : " ; / / যাগান যাচনা
c i n >> a >> b >> c ; / / যাগান নওয়া

f l o a t s = ( a + b + c ) / 2 ; / / অধ পিরসীমা
f l o a t k = s q r t ( s ∗ ( s−a ) ∗ ( s−b ) ∗ ( s−c ) ) ; / / ফল

5g
cout << " k h e t r o f o l = " << k << endl ;

যাগান-ফলন (input-output)
/ / ফলন
in
bahu a b c : 100 60 90
k h e t r o f o l = 2666
am

৫. এমন একিট মেলখ (program) রচনা কেরা যিট সেক ড যাগান িনেয় তােক ঘ টা-
িমিনট- সেকে ড পা র কের। এ কােজ তুিম ভাগফল ও ভাগেশষ ব বহার করেব।

িফিরি ৬.৯: সময়েক সেকে ড কাশ (Time in Seconds)


i n t motsekend = 38185 ;
al

i n t sekend = motsekend % 60 ; / / ফল 25
i n t motminit = motsekend / 60 ; / / ফল 636

i n t m i n i t = motminit % 60 ; / / ফল 36
i n t ghonta = motminit / 60 ; / / ফল 10

৬. একিট ি ভুেজর িতন বা র দঘ a, b, c যাগান (input) িনেয় এর কাণ েলা িনণয়


কেরা। ধেরা ি ভুেজর কান িতনিট A, B, C। এখান A, B, C যথা েম a, b, c বা র
িবপরীত কাণ। তুিম হয়েতা জােনা কাণ C = cos−1 ((a2 + b2 − c2 )/(2ab)), কাণ
B = cos−1 ((c2 +a2 −b2 )/(2ca)) ও কাণ A = cos−1 ((b2 +c2 −a2 )/(2bc))।
তামার মেলখেত ি ভুেজর কান েলােক তুিম িড ীেত পা র কের ফলন িদেব।
আমরা cmath িশর নিথ থেক িবল া পােতর (arccosine) জ acos িবপাতকিটেক
(function) ব বহার করেবা। িক এিট আমােদর রিডয়ােন কাণ ফরত িদেব। রিডয়ান
থেক িড ীেত িনেত চাইেল আমােদর 180/pi িদেয় ণ করেত হেব। কথা হে পাই

৭৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

কমেন পােবা। আমরা pai একটা বক ঘাষণা করেত পাির যার মান িদেয় িদব 3.1416
অথবা আেরা িনখুত মান পেত চাইেল acos(−1) থেকও মান বর কের িনেত পাির।
িফিরি ৬.১০: ি ভুেজর বা হেত কাণ (Triangle's Angles From Sides)
/ / main িবপাতেকর বাইের
#i n c l u d e <cmath>

/ / main িবপাতেকর িভতের


float a , b , c ; / / বা েলা
cout << " bahu a b c : " ; / / যাগান যাচনা
c i n >> a >> b >> c ; / / যাগান নওয়া

// কাণ িনণয় রিডয়ােন


float C = acos ( ( a∗a + b∗b − c ∗ c ) / ( 2∗a∗b ) ) ;
float B = acos ( ( c ∗ c + a∗a − b∗b ) / ( 2∗ c ∗a ) ) ;
float A

/ / িড ীেত পা র 5g
= acos ( ( b∗b + c ∗ c − a∗a ) / ( 2∗b∗ c ) ) ;

f l o a t const p a i = arc co s (−1 ) ; / / িবক হেলা 3 . 1416


C ∗= 180 / p a i ; B ∗= 180 / p a i ; A ∗= 180 / p a i ;
in
cout << " kon A B C= " ; / / ফলন
cout << A << " " << B << " " << C << endl ;
am

যাগান-ফলন (input-output)
bahu a b c : 145 60 90
kon A B C= 149 . 703 12 . 049 18 . 2475
al

৭. এমন একিট মেলখ (program) রচনা কেরা যিট েটা সময় ঘ টা, িমিনট, সেকে ড
িনেয় সময় িটেক যাগ কের। এ কােজ তুিম যাগ, ভাগফল ও ভাগেশষ ব বহার করেব।
িফিরি ৬.১১: িট সমেয়র যাগ (Adding Two Times)
i n t ghonta1 , minit1 , sekend1 ; / / ১ম সময় যাগান িনেব
i n t ghonta2 , minit2 , sekend2 ; / / ২য় সময় যাগান িনেব

i n t sekend = sekend1 + sekend2 ; / / সেক ড েটা যাগ


i n t m i n i t = minit1 + minit2 ; / / িমিনট েটা যাগ
i n t ghonta = ghonta1 + ghonta2 ; / / ঘ টা েটা যাগ

m i n i t += sekend / 60 ; / / মাট সেক ড 60 এর বশী হেল


sekend = sekend % 60 ; / / িমিনট হওয়ার পের অবিশ সেক ড
ghonta += m i n i t / 60 ; / / মাট িমিনট 60 এর বশী হেল
minit = minit % 60 ; / / ঘ টা হওয়ার পের অবিশ িমিনট

৭৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১১. অ শীলনী সম া (Exercise Problems)

৮. এমন একিট মেলখ রচনা কেরা যিট েটা সমীকরণ ax+by = c ও dx+ey = f এর
a, b, c, d, e, f যাগান িনেয় x ও y এর মান ফলন দয়। এরকম সহ সমীকরণ সমাধােনর
সূ হল x = (ce − bf )/(ae − bd) আর y = (af − cd)/(ae − bd)।
িফিরি ৬.১২: সহ সমীকরণ সমাধান (Simultaneous Equations)
float a , b , c , d , e , f ;

cout << " prothom somikoron a b c : " ;


c i n >> a >> b >> c ;

cout << " d i t i y o somikoron e f g : " ;


c i n >> d >> e >> e ;

f l o a t x = ( c ∗e − b∗ f ) / ( a∗e − b∗d ) ;
f l o a t y = ( a∗ f − c ∗d ) / ( a∗e − b∗d ) ;

5g
cout << " x = " << x << " " ;
cout << " y = " << y << endl ;

যাগান-ফলন (input-output)
in
prothom somikoron a b c : 2 1 4
d i t i y o somikoron e f g : 1 −1 −1
x = 1 . 33333 y = 1 . 33333
am

৯. একিট বাস u আিদেবগ ও a সম রণ িনেয় যা া করেলা। সময় t সেক ড পের বােসর


গিতেবগ v িনণয় কেরা। t সময় পের বাসিট অিত া র sও িনণয় কেরা। এ কােজ তুিম
গিতিবদ ার সূ v = u + at ও s = ut + 12 at2 ব বহার করেব।

িফিরি ৬.১৩: গিতর সমীকরণ সমাধান (Solving Motion Equations)


al

float u , a , t ;

cout << " adibeg toron somoy : " ;


c i n >> u >> a >> t ;

float v = u + a ∗ t ;
f l o a t s = u∗ t + a ∗ t ∗ t / 2 ;

cout << " beg : " << v << " " ;


cout << " durutto : " << s << endl ;

যাগান-ফলন (input-output)
adibeg toron somoy : 2 1 4
beg : 6 durotto : 16

৮০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৬.১২. গণনা পিরভাষা (Computing Terminologies)

১০. নীেচর ছ -সংেকেতর (pseudocode) জ একিট মেলখ (program) তরী কেরা।

ক) পেড়া (read) x ও y
খ) গেণা (compute) p = x ∗ y
গ) গেণা (compute) s = x + y
ঘ) গেণা (compute) t = s2 + p ∗ (s − x) ∗ (p + y)
ঙ) িলেখা (write) t

িফিরি ৬.১৪: ছ সংেকত থেক মেলখ তরী (Program from Pseudocode)


int x , y ; // কবল main িবপাতেকর িভতেরর অংশটু

cin >> x >> y; / / ধাপ ক


int p = x ∗ y; / / ধাপ খ
int s = x + y; / / ধাপ গ
int t = s∗s

cout << t << endl ;


+ p ∗ (s −

5g
x) ∗ (p + y ) ;

/ / ধাপ ঙ
// ধাপ ঘ
in
৬.১২ গণনা পিরভাষা (Computing Terminologies)
am

• ধনা ক (positive) • িনবাহ-কালীন (execution-time)

• ঋণা ক (negative) • টীকা দয়া (commenting)

• অণুি য়া (operator) • টীকা তালা (uncommenting)

• উপাদান (operand) • যাজন (composition)


al

• এিকক (unary) • নথক (void)

• িয়ক (binary) • পৃথকী (separator)

• উপা কারা র (type casting) • অ গণ তা (precedence)

• চলা-কালীন (run-time) • সহেযাজ তা (associativity)

৮১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৭

শতািল পিরগণনা
(Conditional Programming)

5g
আমােদর জীবনটা নাক বরাবর সাজা একটা পথ নয়, িতটা মােড় মােড় এটা শাখায় শাখায়
িবভ । তামােক একটা শাখায় যেত হেব, একসােথ এেকর বশী শাখায় যেত পারেব না। কা-
নটায় যােব তার জ ভাবেত হেব, তামার অব া ও ল িবেবচনা করেত হেব। শতািল পিরগণনায়
(conditional programming) আমরা শাখায় শাখায় ভাবা িশখেবা, আমােদর সামেনর গমন
in
পথ বাছাই করা িশখেবা, আমরা আমােদর জীবেনর িস া নয়া িশখেবা।
am

৭.১ যিদ তাহেল নাহেল (If Then Else)


ধেরা গিণত পরী ায় তুিম ৫০ বা বশী পেল পাশ করেব আর নাহেল করেব ফল। আর যিদ ৮০
বা বশী পাও তাহেল তুিম তারকা (star) পােব। এমন একিট মেলখ (program) তরী কেরা
যিট তামার গিণেত পাওয়া ন র যাগান (input) িনেয় তামােক পাশ না ফল ফলন (output)
িদেব। আর তুিম যিদ তারকা পেয় থােকা সটাও জানােব, তারকা না পেল িকছু জানােব না।
al

িফিরি ৭.১: পাশ- ফল-তারকা ন র িনণয় (Pass Fail Star Marks)


i n t nombor ; // চলক ঘাষণা

cout << "nombor? " ; // যাগান যাচনা


c i n >> nombor ; // যাগান নয়া

i f ( nombor >= 50) // যিদ পােশর ন র


cout << " pash " << endl ; // পাশ ফলন
else // না হেল
cout << " f e l l " << endl ; // ফল ফলন

i f ( nombor >= 80) // যিদ তারকা ন র


cout << " taroka " << endl ; // তারকা ফলন

৮৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১. যিদ তাহেল নাহেল (If Then Else)

উপেরর অংশটু কান মেলখেত (program) িনেয় সংকলন (compile) কের চািল-
য় (run) দেখা। যিদ 50 এর কম কান ন র যাগান (input) দাও যমন 45 তাহেল ফলন
(output) দখােব fell । আর যিদ 50 ও 79 এর মােঝর কান ন র যাগান (input) দাও য-
মন 65 তাহেল ফলন (output) দখােব pash। আর যিদ 80 বা বশী কান মান যাগান (input)
দাও যমন 85 তাহেল ই সাির ফলন (output) দখােব: থম সািরেত pash আর পেরর সা-
িরেত taroka। নীেচর যাগান-ফলেন (input-output) এই মেলখিট (program) িতন বার
চািলেয় বােম, মােঝ, ও ডােন এই িতনিট ব াপার দখােনা হেয়েছ।
যাগান-ফলন (input-output)
nombor? 45 nombor? 65 nombor? 85
fell pash pash
taroka

এবার মেলখিট (program) িবে ষণ কির। চলক ঘাষণা (variable declaration),


যাগান যাচনা (input prompt), ও যাগান নয়া (taking input) তা তুিম আেগই িশেখেছা।

5g
এর পের খয়াল কেরা আমরা িলেখিছ if (nombor >= 50) অথাৎ যিদ ন র 50 বা তার বশী
হয় তাহেল কী করেত হেব সটা িক তার পরপরই বেলিছ cout << "pash" << endl; অথাৎ
পাশ ফলন (output) দখােত হেব। তারপেরর সাির খয়াল কেরা else মােন হেলা না হেল অথাৎ
ন র যিদ 50 বা তার বশী না হয় মােন 50 এর কম হয়, আমােদর ফল ফলেন দখােত হেব যা
বলা হেয়েছ িঠক পেরর সািরেত cout << "fell" << endl;। য কান ন র হয় 50 এর কম
in
হেব না হয় বশী বা সমান হেব, এই েটা ছাড়া আর িভ িকছু হেত পাের না, এমনিক ওই েটা
একসােথও সিত হেত পাের না। কােজই আমােদর মেলখেত (program) হয় cout << "
pash" << endl; না হয় cout << "fell" << endl; িনবািহত (execute) হেব, েটাই
am

একসােথ হেত পারেব না। িঠক যন েটা শাখা তরী হেয় গেলা।
আমরা উপেরর মেলখ হেত দখেত পলাম া ন েরর ওপর িভি কের ফলাফল পাশ
না ফল দখােত হেব অথাৎ ফলন (output) দখােনার ওই েটা িববৃিতর মেধ কানটা িনবা-
িহত হেব সটা আমরা ন র 50 এর কম না বশী বা সমান এই শতিট পরী া কের বাছাই কর-
ত পারলাম। অেনক পিরগণনা ভাষায় (programming language) (nombor > 50) এর
পের cout << "pash" << endl; এর আেগ then িলখেত হয়, িক c++ এ এটা িলখেত
al

হয় না। এখােন বরং শত nombor >= 50 এটােক েটা ( ) ব নী িদেয় ব ী করেত হয়। ব নী
দয়ার ব াপারটা মেন রাখেব, কারণ থম থম তুিম এটা িনেয় ায়ই ভুল কের সংকলন িট
(compilation error) পােব, আর তামােক তখন এিট িঠক করেত হেব। ব নী েটা এখােন
আেশ পােশর শতেক পৃথক কের, যা সফল সংকলেনর (compile) জে জ রী।
উপেরর মেলখেত (program) খয়াল কেরা পাশ ফল দখােনার if এর পের আেরা
একটা if আেছ যিট িদেয় আমরা া ন রিট তারকা (star) িকনা তা দখাই। এই if এ শত
হে (nombor >= 80) অথাৎ ন র যিদ 80 বা এর বশী হয় তাহেল ফলন (output) দখােব
taroka। িক আর একটু সতক ভােব খয়াল কেরা এই শত িমথ া হেল বা পূরণ না হেল কী দখােব
সটা িক নাই। সাজা কথায় এই if এর সােথ কান else ব বহার করা হয় িন। মােন ন র যিদ
80 এর কম হয় তাহেল ফ িকছুই দখােনার দরকার নাই। তাহেল আমরা জানলাম if এর শত
পূরণ হেল আমােদর কী করেত হেব সটা িলখেত হেব, িক শত পূরণ না হেল আমরা দরকার মেতা
কী করেত হেব সটা িলখেবা, অথবা দরকার না হেল িকছুই িলখেবা না।
এবার নীেচ মেলখিট খয়াল কেরা। এখােন আমরা উপেরর পাশ- ফল দখােনা অংশিটই
আবার দিখেয়িছ, তেব একটু িভ ভােব। িভ তাটা হেলা উপের যমন else এর পের সরাসির
cout << "fell" << endl; িলেখিছলাম, এখােন তা না কের else এর পের if (nombor

৮৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২. অ য়ী অণুি য়া (Relational Operators)

< 50) িলেখিছ। তামােদর কােছ মেন হেত পাের, এটা তা র, বুঝেত িবধা কারণ িঠক যন
মা েষর ভাষায় আমরা য ভােব বিল যমন যিদ ন র 50 বা বশী হয় ফলন দখাও পাশ নাহেল
যিদ ন র 50 এর কম হয় ফলন দখাও ফল িঠক তার মেতা। কথা সত আমােদর বুঝা িবধা হয়
এ ভােব। িক আমরা এভােব িলখেবা না, কারণ else এর পের ওই if (nombor < 50) িলখা
আসেল অদরকারী আর স কারেণ তামার মেলখ (program) খােমাকা থ (slow) হেয়
যােব। ওই if (nombor < 50) লখাটা অদরকারী কারণটা আেগই খািনকটা জেনিছ তবুও
আেরকবার বিল else এর শাখায় আসা মােন হেলা nombor >= 50 এই শতিট িমথ া হেয়েছ।
আর এই শতিট িমথ া হওয়া মােন nombor < 50 শতিট অব ই সত । কােজই এিট আবার
আর একিট if লািগেয় পরী া করার কান েয়াজন নাই।
i f ( nombor >= 50) // যিদ পােশর ন র
cout << " pash " << endl ; // পাশ ফলন
e l s e i f ( nombor < 50) // না হেল
cout << " f e l l " << endl ; // ফল ফলন

অব
5g
তুিম যিদ একা ই মা েষর বুঝার িবধােথ ওই if (nombor < 50) টা িলখেত চাও, সটা
টীকার (comment) িভতের িলখেত পােরা। নীেচ যমন িলেখ দখালাম। এেত তামার মেল-
খও (program) ধীর গিতর হেলা না, আবার তামার পে মেলখ পড়েতও সহজ হেয় গেলা।
আমরা এ রকমই ায়ই কের থািক। তেব অেনক ে else এর পের ওইরকম একটা if দওয়া
াবীও হেয় যায়, এটা আমরা পেরর একটা পােঠই িব ািরত দখেবা।
in
i f ( nombor >= 50) // যিদ পােশর ন র
cout << " pash " << endl ; // পাশ ফলন
e l s e / / i f ( nombor < 50) // না হেল
am

cout << " f e l l " << endl ; // ফল ফলন

এই আেলাচনার শষ কির আেরকটা ব াপার িদেয়, সটা হেলা ছাড়ন দয়া (indentation)।
ছাড়ন িনেয় আেগ একবার আমরা আেলাচনা কেরিছলাম। খয়াল কেরা আমরা if (nombor
>=50) এর পের এই শত সত হেল য cout << "pash" << endl; টা িনবাহ (execute)
করেত হেব সটা পেরর সািরেত একটু িভতের থেক িলখেত কেরিছ। এটা করেল গণিনর
al

(computer) জ িক কান লাভ বা িত নই, িক আমরা সহেজ চােখ দেখই কমন বুঝেত
পাির য ওই cout এর সািরিট আসেল তার আেগর সািরর if এর সােথর শত সত হওয়ার ওপের
িনভরশীল। তারপর দেখা পেরর সািরেত থাকা else আবার একটু িভতর থেক না হেয় if
বরাবরই হেয়েছ। এটা িদেয় আমরা বুঝােত চাই এই else টা আসেল ওই if এর শতটা িমথ া
হেল েযাজ হেব। ল া মেলখেত যখন অেনক if আর অেনক else থাকেব তখন কান else
কান if এর সােথ তা িমলােনা (match) আমােদর পে চােখ দেখ কিঠন হেয় যেত পাের।
ওই িমলােনার িবধােথ if আর তার সােথর else এক বরাবর িলখা হয়। সবেশেষ খয়াল কেরা
else এর পেরর সািরর cout আবার একটু িভতর থেক লখা, কারণ এটা িনবাহ হেব িকনা তা
িনভর কের else এর ওপের। একটু িভতর থেক লখা কের সইটাই বুঝােনা হয়।

৭.২ অ য়ী অণুি য়া (Relational Operators)


অ য়ী অণুি য়া (relational operators) কী? িসিপিপ ভাষার ছয়িট অ য়ী অণুি য়া >= > =
= != < <= রেয়েছ েটা রািশর তুলনা করার জ । এই অ য়ী অণুি য়া েলা আেলাচনা কেরা।

৮৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২. অ য়ী অণুি য়া (Relational Operators)

cout << " x y x>=y x>y x==y x ! =y x<y x<=y " << endl ;

cout << 3 << " " << 4 << " ";


cout << ( 3>= 4 ) << " " << ( 3>4 ) << " ";
cout << ( 3== 4 ) << " " << ( 3 ! = 4 ) << " ";
cout << ( 3<4 ) << " " << ( 3<= 4 ) << endl ;

cout << 4 << " " << 4 << " ";


cout << ( 4>= 4 ) << " " << ( 4>4 ) << " ";
cout << ( 4== 4 ) << " " << ( 4 ! = 4 ) << " ";
cout << ( 4<4 ) << " " << ( 4<= 4 ) << endl ;

cout << 4 << " " << 3 << " ";


cout << ( 4>= 3 ) << " " << ( 4>3 ) << " ";
cout
cout
<<
<<
( 4== 3 ) << "
( 4<3 ) << "
5g
" << ( 4 ! = 3 ) << "
" << ( 4<= 3 ) << endl ;
";

উপেরর মেলখেত (program) থেম আমরা েটা অসমান সংখ ার তুলনা কেরিছ যখা-
ন আেগরিট পেরিট থেক ছাট। তারপের আমরা েটা সমান সংখ ার তুলনা কেরিছ। সবেশেষ
in
আবােরা েটা অসমান সংখ ার তুলনা কেরিছ িক এখােন আেগরিট বড়, পেররিট ছাট। উ -
মেলখেয়র ি েত ফলন (output) কী হেব তা নীেচ দখােনা হেয়েছ।
ফলন (output)
am

x y x>=y x>y x==y x ! =y x<y x<=y


3 4 0 0 0 1 1 1
4 4 1 0 1 0 0 1
4 3 1 1 0 1 0 0

এখােন ছয়িট অ য়ী অণুি য়া (relational operators) ব বহার করা হেয়েছ। এ েলা হল


al

>= বড় বা বশী (greater or equal), > বড় (greater), == সমান (equal), != অসমান


(unequal), < ছাট (smaller), <= ছাট বা কম (smaller or equal)। একটা িবষয় খয়াল
কেরা এখােন == সমান িচ িক েটা = িচ িদেয়, একটা িদেয় নয়। আেরাপণ (assignment)
হেলা একটা = িদেয়। মেলখ (program) িলখেত গেল আমােদর ায়শই এই ভুলিট হেয় যায়,
আর মেলখ িঠকঠাক কাজ কের না। তামরা এিদেক িবেশষ নজর রাখেব সব সময়।
যাইেহাক উপেরর ফলেন (output) দেখা, যখনই কান তুলনার ফলাফল সত হেয়েছ, ফল-
ন (output) সিট এেসেছ 1 িহসােব আর যখােন তুলনার ফলাফল িমথ া তখনই এেসেছ 0।
আসেল এই অ য়ী অণুি য়া েলা (relational operators) বুলক (Boolean) নােমর এক
কােরর মান ফলাফল িহসােব দয়। বুলক যটােক িসিপিপেত bool িহসােব লখা হয় সটা হেলা
এক রকেমর উপা করণ (data type)। বুলক মান কবল সত আর িমথ া হেত পাের। িস-
িপিপেত মান েটা হল িমথ া 0 ও সত 1। মেলখেয়র (program) িভতের অব িমথ া আর
সত েক 0 আর 1 িদেয় না বুিঝেয় আমরা চাইেল াকাের false ও true িদেয় বুঝােত পাির,
িক ফলেন (output) দখােল ওটা 0 আর 1 িহসােব দখােনা হেয় যােব।
উপেরর মেলখেত যিদও কবল পূণক (integer) ব বহার করা হেয়েছ, অ য়ী অণুি য়া -
লা (relational operators) আসেল ভ েকর (fractioner) সােথও একই ভােব কাজ কের।

৮৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৩. যিদ-নাহেল মই (If-Else Ladder)

চাইেল একটা ভ ক ও একটা পূণকও ওই অণুি য়া েলােত এক সােথ ব বহার করা যায়, আর স-
ে পূণকিট (int) থেম ভ েক (float) কারা িরত (type cast) হেয় যােব, তারপর তুল-
নািট হেব েটা ভ ক (float) এর মেধ । ফলাফল অব ই হেব একিট বুলক (bool) অথাৎ 0 বা
1। অ য়ী অণুি য়া েলা (relational operators) বুলক (bool) এর ওপরও কাজ কের। স-
ে false আর true ক ফ 0 আর 1 ধের পূণক িহসােব িবেবচনা করেল তুলনার য ফলাফল
আসার কথা তাই আসেব। উপেরর মেলখেত তুিম 3 ও 4 এর বদেল নানা রকম বুলক (bool)
বা পূণক (int) বা ভ ক (float) মান েটা উপাদানই (operand) একরকম বা েটা ইরকম
কের বিসেয় ফলাফল েলা পযেব ণ করেত পােরা।

৭.৩ যিদ-নাহেল মই (If-Else Ladder)


যিদ-নাহেল মই (If-Else Ladder) কী? যিদ-নাহেল মই ব বহার কের কান দ বছর অিধবষ
(leap year) িকনা তা িনণেয়র জ একিট মেলখ (program) তরী কেরা।
থেম আমরা দিখ একটা বছর কখন অিধবষ (leap year) হয়। একিট দ বছর যিদ ৪০০

5g
ারা িবভাজ হয় তাহেল এিট অিধবষ, যমন ১৬০০ ও ২০০০। তা নাহেল অথাৎ বছরিট যিদ ৪০০
িদেয় িবভাজ না হয় িক এিট যিদ ১০০ িদেয় িবভাজ হয় তাহেল এিট অিধবষ নয়, যমন ১৮০০
ও ১৯০০। তাও নাহেল অথাৎ বছরিট ১০০ ারাও িবভাজ নয় িক যিদ ৪ ারা িবভাজ তাহেল
এিট অিধবষ, যমন ২০১২ বা ২০১৬। তাও নাহেল অথাৎ বছরিট যিদ ৪ ারা িবভাজ না হয়
in
তাহেল এিট অিধবষ নয় অথাৎ সাধারণ বষ যমন ২০১৪ বা ২০১৫। এই কথা েলােক সংে েপ
িলখেল দাঁড়ায় "যিদ ৪০০ ারা িবভাজ হয় তাহেল অিধবষ, নাহেল যিদ ১০০ ারা িবভাজ হয়
তাহেল অিধবষ নয়, নাহেল যিদ ৪ ারা িবভাজ হয় তাহেল অিধবষ, নাহেল অিধবষ নয়।"
am

িফিরি ৭.২: অিধবষ িনণয় (Leap Year Determination)


i n t bosor ;
cout << " bosor koto ? " ;
c i n >> bosor ;

i f ( bosor % 400 == 0 ) / / ৪০০ িদেয় িবভাজ


al

cout << " odhiborsho hoy " << endl ;


e l s e i f ( bosor % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " odhiborsho noy " << endl ;
e l s e i f ( bosor % 4 == 0 ) / / ৪ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
else / / i f ( bosor % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
cout << " odhiborsho noy " << endl ;

cout << " kee chomotkar ! " << endl ;

এবার আমােদর মেলখেয়র (program) িদেক তাকাই। উপের সংে েপ িঠক য ভােব
অিধবষ িনণয় করার িনয়ম বণনা কেরিছ, আমােদর মেলখেত আমরা যন তাই িলেখিছ। িম-
িলেয় নাও। পািটগিণতীয় অণুি য়া েলার (arithmetical operators) পাঠ থেক মেন কেরা
দেখা % অণুি য়া আমােদর ভাগেশষ ফলাফল দয়। তা ভাগেশষ যিদ হয় তাহেল আমরা
িবভাজ তা বুঝেত পারেবা, আর ভাগেশষ না হেল অিবভাজ তা। আমরা থেম ৪০০ িদেয়

৮৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৪. অ াি যিদ-নাহেল (Nested If-Else)

িবভাজ তা পরী া কেরিছ, না হেল তারপর ১০০ িদেয় িবভাজ তা, তাও নাহেল তারপর ৪ িদেয়
িবভাজ তা পরী া কেরিছ। কমন ব একই রকম কের মেলখিট লখা গেছ!
খয়াল কেরা িবভাজ হওয়া bosor %400 == 0 আর অিবভাজ হওয়া bosor %400 !=
0 এই েটােতা িবপরীত শত। মেলখেত (program) থম শত ব বহার করেল ওই শত সত
(অথবা িমথ া) হেল যা করেত হেব, একই কাজ ি তীয় শত ব বহার করেল সই শত িমথ া (অথবা
সত ) হেল করেত হেব। হেলা পর র িবপরীত এই েটার মেধ কান শতটা ব বহার করা
িবধাজনক। তাছাড়া 400 িদেয় িবভাজ তাই বা আেগ কন করেবা, 4 বা 100 িদেয় িবভাজ তাও
তা আেগ করেত পাির? এসেবর উ র হল ব িত ম ও বশী ব িত ম েলা তাহেলেত রােখা,
আর বাঁদবাকী কম ব িত ম েলা সব রােখা নাহেলেত, তােত িচ া করা সহজ হেয় যায়, মেলখ
(program) তরীও সহজ হয়। যমন ৪০০ িদেয় িবভাজ হেল অিধবষ, এটা অেনক বশী ব -
িত ম, তুলনামুলক অ সংখ ক বছর ৪০০ িদেয় িবভাজ হেব। ১০০ িদেয় িবভাজ হওয়া আর
একটু কম ব িত ম মােন তুলনামুলক ভােব অেনক বছরই ১০০ িদেয় িবভাজ । ৪ িদেয় িবভাজ
হওয়া আেরা কম ব িত ম মােন তুলনামুলক ভােব অেনক বশী সংখ ক বছর ৪ িদেয় িবভাজ ।
আর ৪ িদেয় িবভাজ না হওয়া মাটামুিট সাধারণ ঘটনা ধরা যায়, বাদবাঁকী সব বছরই ৪ িদেয়
অিবভাজ । খয়াল কেরা মেলখ (program) সভােবই ব িত ম মাথায় রেখই লখা হেয়েছ।

5g
সব চেয় বশী ব িত মী ব াপার সবেচেয় আেগ, সবেচেয় কম ব িত ম সবেচেয় পের।
আমােদর মেলখেত ছাড়ন (indentation) দয়ার ব াপারটা একটু খয়াল কেরা। যিদও
আমরা জািন ছাড়ন দয়া না দওয়া অথবা ফাঁকা িদেয় িদেয় লখা বা না লখােত মেলখেয়র
(program) ফলাফেল কান পিরবতন হয় না। আমরা কবল মা েষর বাঝার িবধােথ ও েলা
in
কির। তারপরও খয়াল কেরা আমােদর বুঝার িবধােথ আমরা থেমর if , তারপেরর else if
েলা, সবেশেষর else আর তােদর শত সত হেল যা করেত হেব সব িমিলেয় কী র একটা ধাঁচ
(pattern) তরী কেরিছ। এই ধাঁচিট একিট মইেয়র মেতা কারণ আমােদর থম if িদেয়
কের শত পরী া করেত করেত নীেচর িদেক নামেত হেব। আর য কান একিট শত পূরণ হেলই
am

তার জ য কাজিট করেত হেব পােশর িদেক িগেয় সিট করেলই পুেরা ধাঁচিটর কাজই আসেল
শষ হেয় যােব। মােন একটা শত সত হেল নীেচর িদেকর আেরা কান শত আর পরী া করা হেব
না, পুেরা ধাঁেচর কাজ শষ হেয় যােব। আর িঠক এর পের য িববৃিত (statement) িনবািহত
(execute) হেব সিট হেলা এই পুেরা ধাঁেচর বাইের থাকা কান িববৃিত। যমন উপেরর মেলখ-
ত ল কেরা cout << "kee chomotkar!" << endl; হেলা পুেরা ধাঁেচর বাইের, তরাং
al

যিদ-নাহেল মই থেক বর হেয়ই ওইিট িনবািহত হেত করেব।

৭.৪ অ াি যিদ-নাহেল (Nested If-Else)


অ াি যিদ-নাহেল (nested if-else) কী? অ াি যিদ-নাহেল ব বহার কের কান দ বছর
অিধবষ (leap year) িকনা তা িনণেয়র জ একিট মেলখ (program) তরী কেরা।
একটা বছর কখন অিধবষ (leap year) হয়, সটা আেগর পােঠই জেনিছ, তবুও আেরকবার:
বছরিট যিদ ৪০০ ারা িবভাজ হয় তাহেল এিট অিধবষ, যমন ১৬০০ ও ২০০০। তা নাহেল অথাৎ
বছরিট যিদ ৪০০ িদেয় িবভাজ না হয় িক এিট যিদ ১০০ িদেয় িবভাজ হয় তাহেল এিট অিধবষ
নয়, যমন ১৮০০ ও ১৯০০। তাও নাহেল অথাৎ বছরিট ১০০ ারাও িবভাজ নয় িক যিদ ৪ ারা
িবভাজ তাহেল এিট অিধবষ, যমন ২০১২ বা ২০১৬। তাও নাহেল অথাৎ বছরিট যিদ ৪ ারা
িবভাজ না হয় তাহেল এিট অিধবষ নয় অথাৎ সাধারণ বষ যমন ২০১৪ বা ২০১৫। আেগর পােঠ
দখােনা আমােদর নীেচর মেলখিট স ভােবই যিদ-নাহেল মই ব বহার কের লখা।
i f ( bosor % 400 == 0 ) / / ৪০০ িদেয় িবভাজ

৮৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৪. অ াি যিদ-নাহেল (Nested If-Else)

cout << " odhiborsho hoy " << endl ;


e l s e i f ( bosor % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " odhiborsho noy " << endl ;
e l s e i f ( bosor % 4 == 0 ) / / ৪ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
else / / i f ( bosor % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
cout << " odhiborsho noy " << endl ;

উপেরর মেলখেয়র (program) দেখা ি তীয় if িববৃিতেত (statement) ১০০ িদেয়


িবভাজ তা পরী া করা হেয়েছ িক ৪০০ িদেয় অিবভাজ হওয়ার পের। তা আমরা যিদ bosor
% 400 == 0 িলেখ িবভাজ তা পরী া না কের তার উে াটা bosor % 400 != 0 িলেখ অিবভা-
জ তা পরী া করতাম তাহেল মেলখিট কমন হেতা? তাহেল সালিট য অিধবষ সটা দখােনার
cout চেল যেতা else এর সােথ। নীেচর মেলখেয়র সােথ িমিলেয় নাও।
i f ( bosor % 400 ! = 0 ) / / ৪০০ িদেয় অিবভাজ

5g
i f ( bosor % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " odhiborsho noy " << endl ;
e l s e i f ( bosor % 4 == 0 ) / / ৪ িদেয় িবভাজ

else
cout << " odhiborsho hoy " << endl ;
/ / i f ( bosor % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
in
cout << " odhiborsho noy " << endl ;
else / / i f ( bosor % 400 == 0 ) ৪০০ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
am

তুিম এবার িজে স করেত পােরা, আ া আিম িক একই ভােব ১০০ বা ৪ িদেয় িবভাজ হওয়ার
if েলােকও ১০০ বা ৪ িদেয় অিবভাজ তার if িদেয় িলখেত পারতাম? াঁ অব ই। নীেচর
মেলখ (program) খয়াল কেরা। আমরা িতিট if এর শতই বদেল এখন অিবভাজ তার
শত িদেয় িদেয়িছ। যিদ-নাহেলর মইেত আমরা if এর সােথ থাকা শত িমথ া হেল তার else
এর পরপরই একটা if দখেত পতাম। এখােন দেখা উে াটা, if এর শত সত হেল বরং তার
al

পরপরই আেরকটা if দখা যাে । এটােক আমরা বলেবা অ াি যিদ-নাহেল (nested if-else)
অথাৎ একটা যিদ-নাহেলর িভতের আেরকটা যিদ-নাহেল, তার িভতের আেরকটা!
i f ( bosor % 400 ! = 0 ) / / ৪০০ িদেয় অিবভাজ
i f ( bosor % 100 ! = 0 ) / / ১০০ িদেয় অিবভাজ
i f ( bosor % 4 ! = 0 ) / / ৪ িদেয় অিবভাজ
cout << " odhiborsho noy " << endl ;
e l s e / / i f ( bosor % 4 == 0 ) ৪ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
else / / i f ( bosor % 100 == 0 ) ১০০ িদেয় িবভাজ
cout << " odhiborsho noy " << endl ;
else / / i f ( bosor % 400 == 0 ) ৪০০ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;

অ াি যিদ-নাহেল লখায় ছাড়ন (indentation) দয়ার ব াপারিট খয়াল কেরা। সবেচেয়


িভতেরর else সবেচেয় িভতেরর if এর সােথ। মােঝর else মােঝর if এর সােথ আর সবেচেয়

৮৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৫. ঝুল নাহেল (Dangling Else)

বাইেরর else বাইেরর if এর সােথ। টীকার (comment) অংশ েলা দেখ িমিলেয় নাও। ম-
লখ (program) িলখেত ছাড়ন (indentation) দয়া য কতটা পূণ সটা এখান থেক
তামার বশ বুঝেত পারার কথা। ছাড়ন না থাকেল মেলখ বুঝা আমােদর জ রহ হেব।
উপেরর আেলাচনায় একটা িজিনস আমরা দেখিছ: যিদ-নাহেল মই (if-else ladder) আর
অ াি যিদ-নাহেল (nested if-else) খািনকটা পর েরর িবপরীত। তুিম িক চাইেল এ েটার
িম ণ ঘটােত পােরা মােন পুেরাটাই মই না কের বা পুেরাটাই অ াি না কের ইরকমটাই ব বহার
করেল! যমন ধেরা আমরা যিদ থেম ১০০ িদেয় িবভাজ তা পরী া কির। তাহেল শত সত হেলই
আমরা অিধবষ বলেত পাির না। আমােদর দখেত হেব ৪০০ িদেয় িবভাজ িকনা। আর ১০০ িদেয়
িবভাজ না হেল আমােদর দখেত হেব ৪ িদেয় িবভাজ িকনা। তা সই অ সাের নীেচর মেলখ
(program) খয়াল কেরা এখােন অ াি যিদ-নাহেলও (nested if-else) আেছ আবার যিদ-
নাহেল মইও (if-else ladder) আেছ। ছাড়ন (indentation) দেখ িচনেত পারেছা? তুিম িক
আেরা নানান ভােব অিধবষ (leap year) িনণয় িনেয় আর যিদ-নাহেল িনেয় খলেত পােরা। কান
শত আেগ, কানটা পের, কানটা মােঝ, কানটােক অ াি করেব, কানটােক মইেয় িদেব, চ া
কের দখেব, মজাও পােব, িবষয় েলা িশখেবও!

else
5g
i f ( bosor % 100 == 0 ) / / ১০০ িদেয় িবভাজ
i f ( bosor % 400 == 0 ) / / ৪০০ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
/ / ৪০০ িদেয় অিবভাজ
cout << " odhiborsho noy " << endl ;
in
e l s e i f ( bosor % 4 == 0 ) / / ৪ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;
else // ৪ িদেয় অিবভাজ
am

cout << " odhiborsho noy " << endl ;

৭.৫ ঝুল নাহেল (Dangling Else)


ডাক িবভাগ সারােদশেক অেনক অ েল ভাগ কের িতিট অ েলর একটা কের িমক ন র িদেয়
al

দয়। ঢাকার অ ল েলার িমক ন র ১০০ পয , তার মেধ ১৩ িদেয় িবভাজ ন র েলা হেলা
সংরি ত অ ল যমন ১৩, ২৬, ৩৯, ৫২, ৬৫, ৭৮, ৯১। ঢাকার িভতর থেক ডােক িচিঠ পাঠােনার
খরচ সারােদেশর য কান জায়গায় হেল ৪ টাকা। িক গ ব িঠকানা ঢাকার িভতেরই হেল খরচ
২টাকা, আর ঢাকার িভতেরই িক সংরি ত অ েল হেল খরচ ৩ টাকা। তুিম বশীর ভাগ সময়
ঢাকার িভতেরই কাথাও না কাথাও িচিঠ পাঠাও, তেব মােঝ মােঝ অ ও পাঠাও। তা তামােক
একিট মেলখ (program) িলখেত হেব যিট তামার িচিঠর গ ব কত ন র অ েল যাগান
(input) িনেয় তামােক িচিঠ পাঠােনার খরচ ফলেন (output) দখােব। তামার মেলখেত
(program) তুিম অব ই যিদ নাহেল (if-else) ব বহার করেব িক তােত যন কান ভােবই
ঝুল নাহেল (dangling else) িদেয় ভুল না কের বেসা, সটা খয়াল রাখেব।
এই মেলখ (program) লখা তা খুব সহজ। যিদ-নাহেল মই (if-else ladder) ব বহার
কের তুিম সহেজই িলেখ ফলেত পােরা। থেম পরী া করেব অ ল ১০০ এর চেয় বড় িকনা।
১০০ এর বড় হেল খরচ ৪ টাকা, কারণ অ লিট ঢাকার বাইের। আর নাহেল মােন অ লিট ঢাকার
িভতের হেল এবার পরী া কের দখেব ১৩ িদেয় িবভাজ িকনা। ১৩ িদেয় িবভাজ হওয়া মােন
সংরি ত অ ল তরাং খরচ ৩ টাকা, আর ১৩ িদেয় িবভাজ না হেল মােন অসংরি ত এলাকা
হেল খরচ ২ টাকা। নীেচর মেলখেয়র (program) সােথ িমিলেয় দেখা।

৯০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৫. ঝুল নাহেল (Dangling Else)

i n t onchol ;

cout << " onchol koto ? " ;


c i n >> onchol ;

i f ( onchol > 100) / / ঢাকার বাইের


khoroch = 4 ;
e l s e i f ( onchol % 13 == 0 ) / / সংরি ত অ ল
khoroch = 3 ;
else / / অসংরি ত অ ল
khoroch = 2 ;

এই মেলখিট আেরা নানান ভােবই লখা স ব তুিম স েলা িনেজ িনেজ চ া করেব। তেব
আমরা তা কবল এিট সমাধানই িশখিছ না, আমরা িশখেবা ঝুল নাহেল (dangling else)

5g
ধাঁচিট কমন সিট। তা আমােদর সম ার িববরেণ খয়াল কেরা একটা কথা আেছ তুিম বশীর
ভাগ িচিঠই পাঠাও ঢাকায়। আর সখােন অসংরি ত এলাকার সংখ ায় বশী। এ থেক আমরা ধের
িনেত পাির য খরচ বশীর ভাগ সময়ই ২ টাকা। কােজই আমরা khoroch চলকিটর মান েতই
২টাকা আিদ আেরাপণ (initial assignment) কের ফলেত পাির। তারপর শত পরী া কের
যিদ দিখ ঢাকার িভতের আর সংরি ত তাহেল খরচ কের িদেবা ৩ টাকা আর ঢাকার বাইের হেল
in
কের দেবা ৪ টাকা। নীেচর মেলখিট দেখা। আমরা স রকমিট করার চ া কেরিছ।
i n t khoroch = 2 ; // ঢাকার িভতের অসংরি ত
am

i f ( onchol <= 100) / / ঢাকার িভতের


i f ( onchol % 13 == 0 ) / / সংরি ত
khoroch = 3 ;
else / / দখেত মেন হয় ঢাকার বাইের
khoroch = 4 ;
al

উপেরর অংশটু ব বহার কের কান মেলখ (program) তরী কের চালােল সিট সিঠক
khoroch জানােব না। ঢাকার বাইেরর অ ল েলার জ যখােন খরচ ৪টাকা হওয়ার কথা,
তা না হেয় বরং ২টাকাই থাকেব। আর ঢাকার িভতেরর অসংরি ত এলাকার জ যখােন খরচ
হওয়ার কথা ২টাকা তা না হেয় খরচ ৪টাকা হেব। মেলখ (program) চােখ দেখ তা মেন
হে সব িঠক আেছ, তেব কন এই িবপি ! আসেল িবপি বাঁিধেয়েছ else অংশিট। আমরা
যভােব ছাড়ন (indentation) িদেয় িলেখিছ তােত মেন হে else অংশটু থম if সােথর
অথাৎ onchol <= 100 িমথ া হওয়ার সােথ জিড়ত। িক আসেল তা নয়। িতিট else তার
পূেবর িনকটতম স ীহীন if এর সােথ জিড়ত। তার মােন এইখােন else িট পেরর if এর সােথ
জিড়ত। অথাৎ onchol যিদ 13 িদেয় িবভাজ না হয় তার সােথ জিড়ত।
অ াি যিদ-নাহেল (nested if-else) আেলাচনায় আমরা দেখিছলাম সবেচেয় িভতেরর
else িঠক সবেচেয় িভতেরর if এর সােথ, মােঝর else িঠক মােঝর if এর সােথ, আর বাইেরর
else িঠক বাইেরর if এর সােথ। আসেল কান else কান if এর সােথ যােব এখােন ছাড়েনর
(indentation) কান ভাবই নই। য else এর জ if িমলােনা দরকার সখান থেক উপ-
রর িদেক যেত থাকেল থম য if পাওয়া যােব যার সােথ কান ইত মেধ else দওয়া হয়
নাই, সই if -ই হেলা আমােদর ওই else এর সােথর if । ছাড়ন কবল আমােদর চােখর দখার

৯১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৬. যৗিগক িববৃিত (Compound Statement)

জ , গণিনর (computer) কােছ এর কান অথ নই। তাহেল সিঠকভােব ছাড়ন িদেয় িলখেল
আমােদর উপেরর মেলখ আসেল নীেচর মেতা হেব। তরাং বুঝেতই পারেছা উ াপা া ছাড়ন
(indentation) দেখ তুিম ভাবেব তামার মেলখ এরকম কাজ করেব, িক আসেল সটা কাজ
করেব িভ রকম। আর ভুলটা কাথায় তা বর করেত তুিম গলদঘম হেয় যােব!
i n t khoroch = 2 ; // ঢাকার িভতের অসংরি ত

i f ( onchol <= 100) / / ঢাকার িভতের


i f ( onchol % 13 == 0 ) / / সংরি ত
khoroch = 3 ;
else / / অসংরি ত
khoroch = 4 ;

এরকেমর সম া যখােন else কার সােথ তা বুঝেত আমােদর ঝােমলা লােগ, সই সম ােক
বলা হয় ঝুল নাহেল (dangling else)। উপেরর সিঠক ছাড়ন (indentation) িদেয় আমরা
বুঝেত পারলাম সম া কাথায় িক সমাধান িক আমরা এখেনা জািননা, else িক আসেলই

5g
আমরা বাইেরর if এর onchol <= 100 িমথ া হেল কী হেব তার জ িলখেত চাই। উপায় কী?
উপায় খুবই সহজ। িভতেরর if এর জ একটা else লািগেয় দাও, আর সই else এর জ
তা আমােদর িকছু করার নাই। কারণ ওই else এর জ খরচ ২টাকা সটা তা আমরা আেগই
আিদমান আেরাপেণর সময় িদেয় এেসিছ। িকছু করার নাই বুঝােত আমরা সাধারণত িববৃিত
in
(empty statement) ব বহার কির। আর কান িকছু ছাড়া কবল িদিত (semicolon) ; িদেয়
আমরা িববৃিত বুঝাই। এবার তাহেল পির ার হেয় গেলা কান else কান if এর জে ।
i n t khoroch = 2 ; // ঢাকার িভতের অসংরি ত
am

i f ( onchol <= 100) / / ঢাকার িভতের


i f ( onchol % 13 == 0 ) / / সংরি ত
khoroch = 3 ;
else // অসংরি ত
; // িববৃিত
al

else / / ঢাকার বাইের


khoroch = 4 ;

৭.৬ যৗিগক িববৃিত (Compound Statement)

যৗিগক িববৃিত (compound statement) বলেত কী বুেঝা? যৗিগক িববৃিত ও যিদ-নাহেল (if-
else) ব বহার কের একিট মেলখ (program) িলেখা যিট থেম িট সংখ া যাগান (input)
িনেব। তারপর থম সংখ ািট 0 হেল পেরর সংখ ািটেক ব াসাধ ধের ফল ও পিরিধ ফলন
(output) িদেব। আর থম সংখ ািট 1 হেল ি তীয় সংখ ািটেক বেগর এক বা র দঘ ধের বগিটর
ফল ও পিরসীমা ফলন (output) িদেব। থম সংখ ািট 0 বা 1 ছাড়া অ িকছু হেল দখােব
"osomorthito akriti" অথাৎ এর জ আমােদর মেলখ কাজ করেব না।
f l o a t nombor1 , nombor2 ; // চলক ঘাষণা

৯২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৬. যৗিগক িববৃিত (Compound Statement)

cout << "nombor d u t i koto ? " ; / / যাগান যাচনা


c i n >> nombor1 >> nombor2 ; // যাগান নওয়া

i f ( nombor1 == 0 ) / / যিদ বৃ হয়
{
cout << " k h e t r o f o l holo : " ;
cout << 3 . 1416 ∗ nombor2 ∗ nombor2 ;
cout << " p o r i d h i holo : " ;
cout << 2 ∗ 3 . 1416 ∗ nombor2 ;
cout << endl ;
}
e l s e i f nombor == 1 ) / / যিদ বগ হয়
{
cout << " k h e t r o f o l holo : " ;
cout << nombor2 ∗ nombor2 ;

}
else
cout << " porishima holo : " ;
cout << 4 ∗ nombor2 ;
cout << endl ; 5g
in
cout << " osomorthito a k r i t i " << endl ;

cout << " bah hoye gelo . " << endl ;


am

এই মেলখিট লখা খুবই সহজ। কবল একটাই ঝােমলা আেছ সটা হল যিদ-নাহেলেত (if-
else) শত সত হাক বা িমথ া হাক আমােদর একটা িববৃিতর (statement) বদেল এক
িববৃিত িনবাহ (execute) করেত হেব। এর আেগর সব উদাহরেণ আমরা দেখিছ যিদ-নাহেল (if-
else) শত সত বা িমথ া হেল কবল একটা মা িববৃিত (statement) িনবাহ করেত। তা ঝােম-
লাটার সমাধানও আসেল সহজ। এক িববৃিতেক { } বাঁকা ব নীর (curly brackets) িভতের
al

ঢুিকেয় িদেলই হেলা। এর আেগ আমরা জেনিছলাম েটা বাঁকা ব নীর (curly brackets) { }
িদেয় আমরা একটা মহ া (block) তরী কির। তা বাঁকা ব নীর িভতের থাকা এক িববৃিতেক
আমরা বিল যৗিগক িববৃিত (compound statement)।
যৗিগক িববৃিত (compound statement) হেলই য তার িভতের একািধক িববৃিত থাকেত
হেব এমন কথা নই। মহ া তরী কের কবল একটা িববৃিতও তার িভতের িলখেত পােরা।
i f ( nombor % 2 == 0 )
{ cout << nombor << " holo j o r " << endl ; }
else
{ cout << nombor << " holo be jo r " << endl ; }

মহ া (block) তরীর ফেল অেনকসময় ঝুল নাহেলর (dangling else) ঝােমলা সহেজ
এড়ােনা স ব হয়। আেগর পােঠর িচিঠ পাঠােনার খরচ িনণেয়র সম ািট িবেবচনা কেরা। স-
খােন else িট কান if এর তা িনেয় ঝােমলা তরী হেয়িছল আর আমরা িববৃিত (empty
statement) িদেয় সটা সমাধান কেরিছলাম। িববৃিত হল ফ ; িদিত (semicolon)

৯৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৭. িট শনা করণ (Error Detection)

তার আেগ িকছু নই। নীেচর মেলখেত (program) আমরা ওই িভতেরর if িটেক একিট মহ-
ার (block) িভতের ঢুিকেয় িদলাম। তরাং মহ ার বাইের থাকা else িট কানভােবই মহ ার
িভতেরর if এর সােথ িমলােনা স ব হেব না, কােজই সটা আর ঝুল থাকেব না।
i n t khoroch = 2 ; / / ঢাকার িভতের অসংরি ত
i f ( onchol <= 100) / / ঢাকার িভতের
{
i f ( onchol % 13 == 0 ) / / সংরি ত
khoroch = 3 ;
}
else / / ঢাকার বাইের
khoroch = 4 ;

মহ া (block) তরী কের চাইেল তার িভতের িক আমরা কান িববৃিত একদমই না িদেত
পাির অথাৎ কবলই িট বাঁকা ব নী (curly brackets) পরপর { }। সে ে এটাও একর-
কেমর

5g
িববৃিত (empty statement) তরী হেব। কােজই িববৃিত তরীর েটা উপায়
আমরা িশখলাম একটা হেলা কবলই ; িদিত (semicolon) দয়া আেরকিট হেলা { } েটা বাঁ-
কা ব নীর (curly brackets) িভতের িকছু না লখা। থমিটর ব বহার আেগ দেখিছ আর নীেচ
ি তীয়িট ব বহার কের ঝুল নাহেলর (dangling else) আেরকিট সমাধান দয়া হেলা।
in
i n t khoroch = 2 ; // ঢাকার িভতের অসংরি ত

i f ( onchol <= 100) / / ঢাকার িভতের


i f ( onchol % 13 == 0 ) / / সংরি ত
am

khoroch = 3 ;
else // অসংরি ত
{} // িববৃিত
else / / ঢাকার বাইের
khoroch = 4 ;
al

তাহেল যখােনই তুিম একটা িববৃিত (statement) িদেত পােরা, সখােনই তুিম আসেল চা-
ইেল একটা িববৃিতর বদেল একটা যৗিগক িববৃিতও (compound statement) িদেত পােরা,
আবার একটা িববৃিতও (empty statement) িদেত পােরা। এখন থেক আমরা যখন িব-
বৃিত বলেবা তখন তুিম সটা মােন কবল একটা িববৃিত বুঝেব না, বরং দরকার মেতা সটা য
যৗিগক িববৃিতও হেত পাের বা িববৃিতও হেত পাের, তা বুেঝ িনেব কমন!

৭.৭ িট শনা করণ (Error Detection)


একটা ি ঘাত সমীকরণ ax2 + bx + c = 0 এর সহগ েলা (coefficient) a, b ও বক
(constant) c এর মান যাগান (input) িনেয় x এর মান িট িনণয় করার জ একিট মেলখ
(program) রচনা কেরা। এই মেলখেত তামােক সব রকেমর িনবাহকালীন (execution-
time) িট শনা (error detect) কের তা ব বহারকারীেক জানােত হেব।
#i n c l u d e <cmath> / / বগমূেলর জ s q r t িবপাতক লাগেব

৯৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৭. িট শনা করণ (Error Detection)

// ওপেরর অংশ main িবপাতেকর আেগ , নীেচর অংশ িভতের

float a , b , c ; // সহগ ও বক েলার জ চলক

cout << " somikoron ax ˆ2 + bx + c = 0 " << endl ;


cout << " a b c er man koto ? " ; / / যাগান যাচনা
c i n >> a >> b >> c ; // যাগান নয়া

f l o a t d = b∗b − 4∗a∗ c ; // িন ায়ক

f l o a t x1 = (−b + s q r t ( d ) ) / ( 2∗a ) ; // থম সমাধান


f l o a t x2 = (−b − s q r t ( d ) ) / ( 2∗a ) ; // ি তীয় সমাধান

cout << " prothom somadhan x1 = " << x1 << endl ;

5g
cout << " d i t i y o somadhan x2 = " << x2 << endl ;

ি ঘাত সমীকরণ ax2 + bx + c =√0 এর সহগ ও বেকর মান না জেনও আমরা সমাধােনর
সূ বর করেত পাির x = (−b ± b2 − 4ac)/(2a)। এই সূে র বগমূল বর করার জ
in
আমােদর cmath িশর নিথ (header file) থেক sqrt িবপাতক ব বহার করেত হেব। বাদ বাঁকী
অংশটু সহজ, উপেরর মেলখেত (program) দখােনা হেলা। থেম সমীকরণটা দখােনা
হেয়েছ। খয়াল কেরা xˆ2 িদেয় আমরা িক x এর বগ বুিঝেয়িছ। সহগ ও বক েলার মান
am

যাগান (input) নয়ার পের আমরা b∗b − 4∗a∗c িনণয় কের চলক d ত িনেয়িছ কারণ এিট
ইিট সমাধােনর জ ইবার ব বহার করেত হেব। যাইেহাক ওপেরর অংশটু ব বহার কের
লখা মেলখ (program) কাজ করেব যিদ সমীকরণটা সহজ সাজা হয়, তােত কান ঝােমলা
না থােক! কী রকেমর ঝােমলা থাকেত পাের, িকছু অ মান করেত পােরা্?
আসেল মেলখ (program) তরীর সময় আমােদর ধের িনেত হয় য ব বহারকারী সিঠক
যাগান (input) যমন িদেত পাের তমিন যা ই া তা বিঠক যাগানও িদেত পাের। এইটা স ভুল
al

কের করেত পাের, না জেন করেত পাের, ই া কেরও করেত পাের। তামার কাজ ন কের দয়ার
আেরা নানািবধ উে ও থাকেত পাের। তেব আমরা আপাতত ধের িনই ব বহারকারী ঝােমলা যা
করার তা কবল ওই সহগ ও বেকর মান যাগান (input) দওয়ার মাধ েমই করেব। আর ওই
ঝােমলা েলা করেল যা হেব তা হেলা উপেরর মেলখ আমােদর িনয় েণর বাইের িনবাহকালীন
(execution-time) িট দিখেয় ব হেয় (abort) যেত পাের। এরকম একটা িট হেলা
িদেয় ভাগ (divide by zero), আর একটা িট হেত পাের ঋণা ক সংখ ার বগমূল বর
করা! এই েটা িটই ি ঘাত সমীকরণ সমাধােনর ে ঘটেত পাের।
এই সব ে আমােদর আেগ থেক বুঝেত পারেত হেব য ওই রকম িটপূণ ঘটনা ঘটেব কী
না, যিদ ওইরকম িট সিত ই ঘেট সটা আমােদর ব বহারকারীেক জানােত হেব। আমােদর তর-
ফ জানােনাটা াভািবক। িক আমােদর অজাে যিদ িট ঘেট মেলখ (program) ব হেয়
যায় তাহেল সটা কানভােবই হণেযাগ নয়। সটা একটা বল পিরগণনার (programming)
উদাহরণ। আর আমরা িটটা ঘটবার আেগই ধরেত পারেল সটা ব বহারকারীেক জািনেয় চাই-
ল আমােদর মেলখেক (program) তারপেরও িনবাহ করা চািলেয় যেত িদেত পারেবা। তা
আমরা নীেচ ি ঘাত সমীকরণ সমাধােনর পুেরা মেলখিট (program) িলখেবা আর তােত সব
রকম িট ধের সটা ব বহার কারীেক জানােনার চ া করেবা। আর যখন িট হে তখন আমরা

৯৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৭. িট শনা করণ (Error Detection)

return EXIT SUCCESS; না কের return EXIT FAILURE; করেবা।

িফিরি ৭.৩: ি ঘাত সমীকরণ সমাধান (Solving Quadratic Equations)


#i n c l u d e <iostream> // cout ব বহার করার জ
#i n c l u d e <c s t d l i b> // EXIT SUCCESS / FAILURE এর জ
#i n c l u d e <cmath> // s q r t িবপাতক ব বহার করার জ

using namespace std ; // িমত নামাধার

i n t main ( )
{
float a , b , c ; // সহগ রাখার জ চলক।

cout << " somikoron ax ˆ2 + bx + c = 0 " << endl ;

c i n >> a >> b >> c ;

/ / a বা b যিদ
i f ( a == 0 )
5g
cout << " a b c er man koto ? " ; / /
//

হয় তখন কী হেব? c
// a
যাগান যাচনা
যাগান নওয়া

হেল সম া নই !
হেল সমীকরণ ি ঘাত নয় , একঘাত !
in
{
i f ( b == 0 ) / / b হেল কান বধ সমীকরণই নয় !
{
am

cout << " boidho somikoron noi ! " << endl ;


ret ur n EXIT FAILURE ; / / মেলখ িবফল
}

// b নয় , কােজই সমীকরণ কবলই একঘাত


cout << " dighat somikoron noi ! " << endl ;
al

cout << " ekghat somikoron dhora holo . " << endl ;
cout << "somadhan holo x = " << −c / b << endl ;
ret ur n EXIT SUCCESS ; / / মেলখ তবুও সফল ধরা যায়
}

// a নয় , কােজই বধ ি ঘাত সমীকরণ

f l o a t d = b∗b − 4∗a∗ c ; // িন ায়ক িহসাব কেরা

i f ( d < 0 ) / / ঋণা ক িন ায়েকর বগমূল করা যায় না !


{
cout << " nischayok r i n a t o k ! " << endl ;
cout << " bastob somadhan n a i ! " << endl ;
ret ur n EXIT FAILURE ; / / মেলখ িবফল
}

৯৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৭. িট শনা করণ (Error Detection)

i f ( d == 0 ) / / িন ায়ক হেল েটা সমাধান সমান


{
cout << " duto somadhan ashole ekoi ! " << endl ;
cout << " somapotito x = " << −b / ( 2∗a ) << endl ;
ret ur n EXIT SUCCESS ; / / মেলখ সফল
}

// েটা সমাধান আেছ , আর তারা অসমান

f l o a t x1 = (−b + s q r t ( d ) ) / ( 2∗a ) ; / / থম সমাধান


f l o a t x2 = (−b − s q r t ( d ) ) / ( 2∗a ) ; / / ি তীয় সমাধান

cout << " prothom somadhan x1 = " << x1 << endl ;


cout << " d i t i y o somadhan x2 = " << x2 << endl ;

}
ret ur n EXIT SUCCESS ; //
5gমেলখ সমাধান

যাগান (input) নবার পর থেম যিট আমােদর িবেবচনা করেত হেব তা হেলা সমীকরণিট
in
আসেল ি ঘাত সমীকরণ িকনা? যিদ a হয়, তাহেল সমীকরেণ কান x2 থােক না, এিট হেয়
যায় bx + c = 0 যিট একিট একঘাত সমীকরণ। এমন অব ায় আমরা আেরা পরী া কের দখব
bও িকনা। যিদ b হয় তাহেল থােক কবল c = 0, যখােন কান চলক (variable)
am

নই। কােজই আমােদর িট বাতা দিখেয় return EXIT FAILURE; বেল ফরত যেত হেব।
নীেচর যাগান-ফলন (input-output) খয়াল কেরা, a ও b হওয়ায় িট বাতা িদেয়েছ।
somikoron ax ˆ2 + bx + c = 0
a b c er man koto ? 0 0 3
boidho somikoron noi !
al

যিদ a হয় িক b না হয়, তাহেল আমরা if (a == 0) মহ ার (block) িভতেরই


আিছ, িক b না হওয়ায় সমীকরণিট আসেলই একঘাত হেয়েছ bx + c = 0। আমরা িক
ি ঘাত সমীকরণ সমাধান করেত চাই, িক আমােদর দয়া হেয়েছ একটা একঘাত সমীকরণ। তুিম
চাইেল এখােন িট বাতা (error message) দিখেয় িবফল হেয় ফরত যেত পােরা। আবার
উদারতা দিখেয় নীেচর মেতা ওই একঘাত সমীকরেণর সমাধানই ফলন (output) িদেত পােরা।
তেব সােথ সতক বাতাও (warning message) িদেয় িদেল য এটা ি ঘাত সমীকরণ নয়!
somikoron ax ˆ2 + bx + c = 0
a b c er man koto ? 0 2 1
dighat somikoron noi !
ekghat somikoron dhora holo .
somadhan holo x = −0 . 5

যিদ a না হয় তাহেল এটা একটা বধ ি ঘাত সমীকরণ। তরাং থেম আমরা িন ায়ক
(discriminant) িনণয় কের একটা চলেক নেবা। উপেরর মেলখেত খয়াল কেরা float
d = b∗b − 4∗a∗c; িলেখ তাই করা হেয়েছ। এখন িন ায়ক যিদ ঋণা ক (negative) হয়

৯৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৮. বুলক সংেযাজক (Boolean Connectives)

তাহেল তা বগমূল িনণয় করা স ব না, িক ি ঘাত সমীকরেণর সমাধােনর সূে িন ায়েকর
বগমূল আমােদর দরকার। কােজই িন ায়েকর মান ঋণা ক হেল আমােদর পে সমাধান করা
স ব নয়। একিট িট বাতা (error message) দিখেয় return EXIT FAILURE; ফরত
যাওয়া উিচৎ। নীেচর যাগান-ফলন (input-output) খয়াল কেরা, িঠক তাই ঘেটেছ।
somikoron ax ˆ2 + bx + c = 0
a b c er man koto ? 2 −5 2
nischayok r i n a t o k !
bastob somadhan n a i !

িন ায়ক (discriminant) যিদ ঋণা ক (negative) না হয়, তাহেল এবার দখেত হেব
এিট িকনা। কারণ হেল সে ে আমােদর সমাধান িটই হেব, িক সমাধান িট আবার
আলাদা আলাদা না হেয় একই হেব। এইরকম অব ােক বলা হয় সমাপিতত (coincidental)
সমাধান। নীেচর যাগান-ফলেন (input-output) এিট দখােনা হেলা।
somikoron ax ˆ2 + bx + c = 0
a b c er man koto ? 1 −2 1
duto somadhan ashole ekoi !
somapotito x = 1 5g
সবেশেষর য অব া সিট হেলা িন ায়ক ঋণা কও নয়, ও নয়, তাহেল সিট ধনা ক
in
(positive)। আর এিটই হেলা সই অব া আমরা যিট ধের িনেয় একদম েত একটা ছাট
মেলখ (program) দিখেয়িছলাম। কােজই আমরা সই কাজটু কের েটা সমাধান আমা-
দর জানা সূ া যায়ী িনণয় কের ফলন দিখেয় return EXIT SUCCESS; কের মেলখ শষ
am

করেবা। নীেচর যাগান-ফলেন (input-output) এই অব া দখােনা হেলা।


somikoron ax ˆ2 + bx + c = 0
a b c er man koto ? 2 −5 2
prothom somadhan x1 = 2
d i t i y o somadhan x2 = 0 . 5
al

উপেরর িব ািরত মেলখেত (program) খয়াল কেরা িতিট if এর শত সত হেল য


মহ ািট (block) িনবািহত হেব সই মহ া শষ হেয়েছ একিট return িদেয়। তার মােন ওই
শত েলা সত হেল মেলখেয়র (program) নীেচর কান অংশ আর িনবািহত হেব না। আর
একারেণ সংি if এর শত িমথ া হেল যা হেব সিট আর আমরা একিট else িলেখ তারপর
আেরকিট মহ ায় (block) ঢুিকেয় দই িন। কারণ if এর শত সত হেল য মহ া (block) তার
বাইের পুেরাটাইেতা এখন else এর জ , কােজই আলাদা কের মহ া করার দরকার নই।

৭.৮ বুলক সংেযাজক (Boolean Connectives)


একিট মেলখ (program) রচনা কেরা যিট একিট পূণক (integer) যাগান (input) িনেব।
তারপর সংখ ািট যিদ ৭ ও ১৩ উভয় ারা িবভাজ হয় তাহেল ফলন (output) িদেব "িম ভাগ
সংখ া", যিদ ৭ ারাও িবভাজ না হয় আবার ১৩ ারাও িবভাজ না হয় তাহেল ফলন িদেব "অভাগ
সংখ া", যিদ কবল ৭ ারা িবভাজ হয় িক ১৩ ারা িবভাজ নয় তাহেল ফলন িদেব " সৗভাগ
সংখ া", আর যিদ কবল ১৩ ারা িবভাজ হয় িক ৭ ারা নয় তাহেল ফলন িদেব " ভাগ সংখ া"।

৯৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৮. বুলক সংেযাজক (Boolean Connectives)

যিদ সংখ ািট ৭ বা ১৩ য কান একিট বা উভয়িট ারা িবভাজ হয় তাহেল ফলন িদেব "ভাগ
সংখ া"। একিট সংখ া একই সােথ উপেরর এক বা একািধক ভােগ পড়েতই পাের।

িফিরি ৭.৪: সৗভাগ ও ভােগ র সংখ া (Lucky & Unlucky Numbers)


i n t nombor ;
cout << " sonkhya koto ? " ;
c i n >> sonkhya ;

i f ( sonkhya % 7 == 0 && sonkhya % 13 == 0 )


cout << " missrovaggo sonkhya " << endl ;

i f ( sonkhya % 7 ! = 0 && sonkhya % 13 ! = 0 )


cout << " ovaggo sonkhya " << endl ;

i f ( sonkhya % 7 == 0 && sonkhya % 13 ! = 0 )

5g
cout << " souvaggo sonkhya " << endl ;

i f ( sonkhya % 13 == 0 && sonkhya % 7 ! = 0 )


cout << " durvaggo sonkhya " << endl ;
in
i f ( sonkhya % 7 == 0 | | sonkhya % 13 == 0 )
cout << " vaggo sonkhya " << endl ;
am

উপেরর মেলখেত (program) && হেলা "এবং" আর | | হেলা "অথবা"। তুিম চাইেল
িসিপিপেত && এর বদেল and আর | | এর বদেল or িলখেত পােরা। আর বাংলায় কখেনা কখেনা
আমরা "এবং" এর বদেল "ও" বা "আর" িলখেবা, আর "অথবা" এর বদেল িলখেবা "বা"। যাই
হাক মেন রােখা && এর ফলাফল সত হয় যখন এর পােশর উপাদানই (operand) সত হয়,
আর যেকান একটা িমথ া হেলই ফলাফল িমথ া। অ িদেক | | এর ফলাফল িমথ া হয় যখন এর
পােশর উপাদানই (operand) িমথ া, আর য কান একিট সত হেলই ফলাফল সত । তা
al

উপেরর মেলখ বুঝার চ া কেরা। খুব কিঠন িকছু নয়। সম ািট িঠক যমন কের বাংলায় বণনা
করা হেয়েছ, মেলখেতও যন িঠক স রকম কেরই লখা হেয়েছ।
এবার ওই মেলখেক আমরা িকছু উ য়েনর চ া কির। একটা িবষয় খয়াল কেরা িবভাজ
হওয়া বা িবভাজ না হওয়া আমরা বারবার িহসাব কেরিছ। এইটা তা হওয়া উিচৎ নয়। তাছাড়া
ভাগেশষ বর করা অ অেনক অণুি য়া (operator) তুলনায় মাটামুিট সময় সােপ কাজ।
আমােদর তাই একবার ভাগেশষ িহসাব কের সটাই বারবার ব বহার করা উিচৎ। তা সই অ যায়ী
আমরা মেলখেত িকছু পিরবতন করেত পাির। মুলত ভাগেশেষর জ আমােদর েটা পূণক
(integer) চলক িনেত হেব int vagshesh7 = sonkhya % 7; আর int vagshesh13
= sonkhya % 13; আর তারপর িতিট sonkhya % 7 এর বদেল vagshesh7 এবং িতিট
sonkhya % 13 এর বদেল vagshesh13 িলখেত হেব। খুবই সহজ পিরবতন।
িক আমরা আসেল এই পিরবতেনর কথা বলিছ না। আমরা ভাগেশষ েলা পূণক (integer)
চলেক না রেখ বরং সংখ ািট ৭ বা ১৩ ারা িবভাজ িকনা তার সত তা বুলক (boolean) চলেক
রাখেত চাই। এে ে আমরা bool bivajyo7 = sonkhya % 7 == 0; িলখেবা। তােত সংখ া-
িট ৭ ারা িবভাজ হেল bivajyo7 চলেকর মান হেব true বা 1 আর ৭ ারা িবভাজ না হেল ওই
চলেকর মান হেব false বা 0। একই ভােব bool bivajyo13 = sonkhya % 13 == 0; িলখ-

৯৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.৯. বুলক, পূণক, ভ ক (Boolean, Integer, Float)

ল bivajyo13 এর মান হেব true বা 1 যিদ সংখ ািট 13 ারা িবভাজ হয় আর মান হেব false
বা 0 যিদ সিট 13 ারা িবভাজ না হয়। নীেচ এই মেলখ দখােনা হেলা।
i n t nombor ;
cout << " sonkhya koto ? " ;
c i n >> sonkhya ;

bool b i v a j y o 7 = sonkhya % 7 == 0 ;
bool b i v a j y o 1 3 = sonkhya % 13 == 0 ;

i f ( b i v a j y o 7 && b i v a j y o 1 3 )
cout << " missrovaggo sonkhya " << endl ;

i f ( ! b i v a j y o 7 && ! b i v a j y o 1 3 )
cout << " ovaggo sonkhya " << endl ;

5g
i f ( b i v a j y o 7 && ! b i v a j y o 1 3 )
cout << " souvaggo sonkhya " << endl ;

i f ( b i v a j y o 1 3 && ! b i v a j y o 7 )
in
cout << " durvaggo sonkhya " << endl ;

i f ( bivajyo7 | | bivajyo13 )
am

cout << " vaggo sonkhya " << endl ;

উপেরর মেলখেত (program) খয়াল কেরা bivajyo7 (বা একই ভােব bivajyo13)
এর মান সত নািক িমথ া আমরা িক bivajyo7 == true অথবা bivajyo7 == 1 িলেখ কির
নাই, যিদও তা করেত পারতাম। আমরা বরং ফ চলকটা ব বহার কেরিছ কারণ চলকটার মানই
তা সরাসির সত বা িমথ া। আবার আলাদা কের == অণুি য়া (operator) িদেয় সত বা িম-
al

থ া পরী া করার দরকার নই। তেব খয়াল কেরা যখন িবভাজ নয় পরী া করেত হেব তখন
আমরা !bivajyo7 (বা একই ভােব !bivajyo13) িলেখ অথাৎ চলেকর নােমর সামেন ! লািগেয়
িদেয়িছ। এখােন ! হেলা নয় বা না অণুি য়া। তুিম চাইেল ! এর বদেল িসিপিপেত not িলখেত
পারেত। নয় অণুি য়া সত েক উপাদান (operand) িহসােব িনেয় িমথ া ফলাফল দয় আর িম-
থ ােক উপাদান িহসােব িনেয় সত ফলাফল দয়। আর স কারেণ bivajyo7 == false না িলেখ
আমরা !bivajyo7 িলখেলই আমােদর কাজ হেয় যায়।

৭.৯ বুলক, পূণক, ভ ক (Boolean, Integer, Float)

একিট সংখ া জাড় না িবেজাড় তা িনণেয়র মেলখ (program) রচনা কেরা। তামার মেলখ-
ত তুিম কান বুলক চলক (boolean variable) বা অ য়ী অণুি য়া (relational operator)
ব বহার করেত পারেব না। তামােক পূণক মানেকই বুলক িহসােব ব বহার করেত হেব।
i n t sonkhya = 41 ; / / তুিম চাইেল যাগান িনেত পােরা।

১০০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১০. বুলক বীজগিণত (Boolean Algebra)

i f ( sonkhya % 2 ! = 0 )
cout << " b e j o r " << endl ;
else
cout << " j o r " << endl ;

এই মেলখিট (program) তুিম চাইেল উপেরর মেতা কের িলখেত পােরা। কান সংখ া
২ িদেয় ভাগ িদেল যিদ ভাগেশষ না হয় তাহেল সংখ ািট িবেজাড়, আর ভাগেশষ হেল
সংখ ািট জাড়। কােজই মেলখিট সহেজই িলেখ ফলা যায়। িক এেত অসমান িনণেয়র জ
একিট অণুি য়া != ব বহার করেত হে , যিট চাইেল আমরা ব বহার না কেরও কাজ চালােত
পাির। এর কারণ হেলা য কান সময় েক আমরা িমথ া ধের িনেত পাির আর য কান অ -
মানেক, সটা ধনা ক হাক বা ঋণা ক হাক, আমরা সটােক সত ধের িনেত পাির। তােত
আমােদর মানিট আালাদা কির িকনা তা আর পরী া করার দরকার পেড় না। কােজই নীেচর
মেলখেয়র (program) মেতা কের != বাদ িদেয় ফ if (sonkhya % 2) লখা মােনই
হেলা if (sonkhya % 2 != 0) লখা।
i n t sonkhya = 41 ; / / তুিম চাইেল যাগান িনেত পােরা।

i f ( sonkhya % 2 ) / / ভাগেশষ অ
cout << " b e j o r " << endl ;
else / / ভাগেশষ
5g হেল

হেল
in
cout << " j o r " << endl ;

উপেরর উদাহরেণ আমরা কবল পূণক ব বহার কেরিছ। িক ভ ক সংখ ার ে ও একই


কথা েযাজ । যমন নীেচর মেলখেত ভ ক সংখ ািট িকনা তা িনণয় করা হেয়েছ। খয়াল
am

কের দেখা আমরা সংখ ািটেকই সরাসির শত িহসােব ব বহার কেরিছ। সংখ ািট না হেলই এিট
সত হেব shunyo noi ফলন আসেব, আর সংখ ািট হেল ফলন আসেব shunyo hoi।
f l o a t sonkhya = −3 . 5 ; / / তুিম চাইেল যাগান িনেত পােরা।

i f ( sonkhya ) / / সংখ ািট অ হেল


al

cout << " shunyo noi " << endl ;


else / / সংখ ািট হেল
cout << " shunyo hoi " << endl ;

তাহেল এখানকার আেলাচনায় আমরা দখলাম উপাদান (operand) িহসােব হেলা িম-
থ া (false) আর অ যেকান ধনা ক (positive) বা ঋণা ক (negative) পূণক (integer)
বা ভ ক (float) হেলা সত (true)। আর অ য়ী অণুি য়া (relational operators) আেলাচ-
নার সময় জেনিছ ফলাফল (result) িহসােব সবসময় false হেলা 0 এবং true হেলা 1। খয়াল
কেরা উপাদান (operand) িহসােব true 0 ছাড়া য কান িকছু হেলও ফলাফল (result) িহসােব
true কবল 1, false অব উভয় ে ই কবল 0।

৭.১০ বুলক বীজগিণত (Boolean Algebra)


দ তার সােথ যিদ নাহেল (if else) ব বহার করেত চাইেল আমােদর খািনকটা বুলক বীজগ-
িণত (boolean algebra) জানা দরকার। অেনক সময় এবং &&, অথবা | |, নয় ! অণুি য়া

১০১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১০. বুলক বীজগিণত (Boolean Algebra)

(operators) বশ কেয়কবার কের িনেয় তুিম হয়েতা জিটল একটা রািশ (expression) তরী
করেব যটা সরাসির মূল ায়ন (evaluate) করেত গেল ত কিট অণুি য়া (operator) ধােপ
ধােপ মূল ায়ন করেত হেব। িক বুলক বীজগিণত ব বহার কের সটা হয়েতা সরলীকরণ কের ছাট
কের অেনক কম অণুি য়া (operator) িদেয়ই কাশ করা স ব। অণুি য়ার সংখ া কম হওয়া
মােন সটা দ হেব, মেলখ িনবাহ (program execution) করেত সময় কম লাগেব।
বুলক বীজগিণেত (boolean algebra) সত েক মূতায়ন (representation) করা হয়
true বা 1 িদেয় আর িমথ ােক করা হয় false বা 0 িদেয়। িসিপিপেত অণুি য়াসমুহ (operator)
ফলাফেলর ে একদমএই প মূতায়নই (representation) মেন চেল, তেব উপাদােনর
(operand) ে িকছুটা উদার হেয় 0 ছাড়া যেকান মানেকই true িহসােব ধের নয়, false
ধের নয় যথারীিত কবল 0 ক। উপাদান ও ফলাফেলর ে true এর এই িভ তা মেন রাখেব।
অেনক সময় এিট িবধাজনক, আবার অেনক সময় এিট অেনক িটর (error) জ েদয়।
বুলক বীজগিণেতর (boolean algebra) থম য অণুি য়া (operator) তাহেলা নয়, না
যটা ! বা not িলেখ কাশ করা হয়। নয় অণুি য়ার উপাদান (operand) ও ফলাফল (result)
নীেচ খয়াল কেরা !true হেলা false আর ! false হেলা true। আমরা এখােন ≡ বা সমতুল
(equivalence) তীক ব বহার কের বুঝােবা য ওই তীেকর বাম ও ডানপাশ সমতুল।

• !true ≡ false
5g • ! false ≡ true

ধেরা েটা ! পরপর আেছ যমন ! !true বা ! ! false বা ! !x, তাহেল ফলাফল কী হেব।
এইসব ে আমােদর ডােনর ! আেগ িহসাব করেত হেব, তার ওপর বােমর ! ধের শষ ফলাফল
in
িহসাব করেত হেব। একারেণ ! হেলা ডান সহেযাজ (right associative)। তা এখােন ডােনর
! অণুি য়া true বা false ক উে িদেব আর বােমর ! সটােক আবার িসধা করেব। তরাং
! !true হেব true, ! ! false হেব false, আর ! !x হেব x। বুলক বীজগিণেত এই িবিধেক বলা
am

হয় েনা ঋণায়ন (double negation)। তুিম িক িতন বা বশী সংখ ক ! পরপর থাকেল কী
হেব বর করেত পারেব? অব ই পারেব, িত ইিট ! পর রেক বািতল কের িদেব।

• ! !x ≡ ! ( !x) ডান সহেযাজ • ! !true ≡ true েনা ঋণায়ন

• ! !x ≡ x েনা ঋণায়ন • ! ! false ≡ false েনা ঋণায়ন


al

বুলক বীজগিণেতর (boolean algebra) ি তীয় অণুি য়া (operator) এবং, ও যটা &&
বা and িলেখ কাশ করা হয়। ল কেরা এবং অণুি য়ার ফলাফল (result) সত যখন উভয়
উপাদানই (operand) সত , আর যেকান একিট উপাদান িমথ া হেলই ফলাফল িমথ া।

• true && true ≡ true • false && true ≡ false

• true && false ≡ false • false && false ≡ false

একিট উপাদান সত বা িমথ া ধের িনেল এবং && অণুি য়ার জে আমরা বশ িকছু সর-
লীকরণ কের ফলেত পাির য েলােক আমরা সেত র সরল (true simplification) ও িমথ ার
সরল (false simplification) বলেবা। কান একিট উপাদান আমরা যিদ আেগই বুেঝ ফিল
সিট সত না িমথ া তাহেল আমরা এই সরলীকরণ েলা কােজ লাগােত পারেবা।

১০২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১০. বুলক বীজগিণত (Boolean Algebra)

• x && true ≡ x সেত র সরল • x && false ≡ false িমথ ার সরল

• true && x ≡ x সেত র সরল • false && x ≡ false িমথ ার সরল

বুলক বীজগিণেতর (boolean algebra) তৃতীয় অণুি য়া (operator) অথবা, বা যটা | |


বা or িলেখ কাশ করা হয়। ল কেরা অথবা অণুি য়ার ফলাফল (result) িমথ া যখন উভয়
উপাদানই (operand) িমথ া, আর যেকান একিট উপাদান সত হেলই ফলাফল সত ।

• true | | true ≡ true • false | | true ≡ true

• true | | false ≡ true • false | | false ≡ false

একিট উপাদান সত বা িমথ া ধের িনেল অথবা | | অণুি য়ার জে আমরা বশ িকছু সর-
লীকরণ কের ফলেত পাির য েলােক আমরা সেত র সরল (true simplification) ও িমথ ার
সরল (false simplification) বলেবা। কান একিট উপাদান আমরা যিদ আেগই বুেঝ ফিল
সিট সত না িমথ া তাহেল আমরা এই সরলীকরণ েলা কােজ লাগােত পারেবা।

• x | | true ≡ true

• true | | x ≡ true
সেত র সরল

সেত র সরল 5g• x | | false ≡ x

• false | | x ≡ x
িমথ ার সরল

িমথ ার সরল

বুলক বীজগিণেত অণুি য়া েলার (operator) অ গণ তার ম (precedence order)


in
হেলা থেম নয় !, তারপর এবং &&, আর শেষ অথবা | |, এই েমর অ থা করেত চাইেল
েয়াজেন ব নী ব বহার করেত হেব। তাছাড়া থেবাধকতা এড়ােত ব নী ব বহার করা উিচৎ।
নীেচর উদাহরণ িট খয়াল কেরা। থমিটেত আেগ ! তারপর &&, শেষ | | করেত হেব, ব নী
am

ব বহার কের সটাই বুঝােনা হেয়েছ। ি তীয় উদাহরণিটেত ! আেগ করেলও && আেগ | | করায়
সটা সিঠক হয় িন। এখােন ̸≡ িদেয় বুঝােনা হেয়েছ ইপাশ পর েরর সমতুল নয়।

• x && !y | | z ≡ (x && (!y)) | | z আেগ !, মােঝ &&, পের | |


• x && !y | | z ̸≡ x && ((!y) | | z) আেগ !, মােঝ | | নয়, পেরও && নয়
al

গািণিতক অণুি য়া (mathematical operators) ও আেরাপেণর (assignment) সােথ


যিদ যৗি ক অণুি য়া েলা িমিলেয় দখা হয় তাহেল সব িমিলেয় অ গণ তার ম িন প:

১. ++ −− এিকক উ র (unary postfix) বাম থেক ডােন (left associative)


২. ++ −− + − ! এিকক পূব (unary prefix) ডান থেক বােম (right associative)
৩. ∗ / % িয়ক (binary) বাম থেক ডােন (left associative)
৪. + − িয়ক (binary) বাম থেক ডােন (left associative)
৫. && িয়ক (binary) বাম থেক ডােন (left associative)
৬. | | িয়ক (binary) বাম থেক ডােন (left associative)
৭. = += −= ∗= /= %= িয়ক (binary) ডান থেক বােম (right associative)
৮. , িয়ক (binary) বাম থেক ডােন (left associative)

১০৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১১. বুলক সমতুল (Boolean Equivalence)

৭.১১ বুলক সমতুল (Boolean Equivalence)


এবার আমরা বশ িকছু সমতুল িবিধ (equivalence law) দখেবা। এই িবিধ েলার বামপাশ
আর ডানপাশ সবসময় সমতুল। আমরা তাই এ েলা ব বহার কের িবিভ সমেয় আমােদর যৗি ক
রািশ (logical expression) সরল করার চ া করেবা।
নীেচর েটা িবিধ হেলা এবং, অথবার িবিনময় িবিধ (commutative law)। িবিনময় িবিধেত
অণুি য়ার (operator) উপাদান েলা পাশ পিরবতন করেলও ফলাফল একই থােক।

• x && y ≡ y && x িবিনময় • x || y ≡ y || x িবিনময়

নীেচর েটা িবিধ হেলা সহেযাজন িবিধ (associative law)। এই িবিধেত একই অণুি য়া
(operator) পরপর থাকেল আমরা য কানিট আেগ মূল ায়ন (evaluate) কের তার ফলাফেলর
সােথ অ অণুি য়ার মূল ায়ন করেত পাির, আর তােত ফলাফল একই হেব।

• x && y && z ≡ (x && y) && z ≡ x && (y && z) সহেযাজ

5g
• x | | y | | z ≡ (x | | y) | | z ≡ x | | (y | | z) সহেযাজ

নীেচর েটা িবিধ হেলা ব টন িবিধ (distributive law)। এই িবিধেত িট িভ অণুি য়া


(operator) পরপর থাকেল আমরা একিটেক আেরকিটর ওপর ব টন কের িদেত পাির। পািটগ-
িণেত ব টন িবিধর উদাহরণ হেলা x ∗ (y + z) = x ∗ y + x ∗ z।
in
• x && y | | z ̸≡ x && (y | | z) ≡ (x && y) | | (x && z) ব টন

• x | | y && z ̸≡ (x | | y) && z ≡ (x && z) | | (y && z) ব টন


am

• x | | y && z ≡ x | | (y && z) ≡ (x | | y) && (x | | z) ব টন

• x && y | | z ≡ (x && y) | | z) ≡ (x | | z) && (y | | z) ব টন

নীেচর িবিধ েলা হেলা শাষন িবিধ (absorption law)। থম চারিট িবিধেত খয়াল কেরা
al

x যিদ true হয় তাহেল x | | y বা y | | x এর মানও true আর ফেল && এর ফলাফলও


true। আবার x যিদ false হয় তাহেল && এর ফলাফল অব ই false। তাহেল বামিদেকর
রািশ েলার মান সবসময় x এর মান যা তাই। একই ভােব শেষর চারিট িবিধেত খয়াল কেরা x
যিদ false হয় তাহেল x && y বা y && x এর মানও false। আবার x যিদ true হয় তাহেল
| | এর ফলাফল অব ই true। তাহেল বামিদেকর রািশ েলার মান সব সময় x এর মান যা তাই।
কােজই এই িবিধ েলা তামাকের বুলক রািশেক কত সহজ ও ছাট কের ফেল!

• x && (x | | y) ≡ x শাষন • x | | (x && y) ≡ x শাষন

• x && (y | | x) ≡ x শাষন • x | | (y && x) ≡ x শাষন

• (x | | y) && x ≡ x শাষন • (x && y) | | x) ≡ x শাষন

• (y | | x) && x ≡ x শাষন • (y && x) | | x) ≡ x শাষন

নীেচর িবিধ েটােত অণুি য়া েলার (operator) উপাদান েটা একই। এবং && ও অথবা
| | উভেয়র ফলাফল এে ে সবসময় উপাদানিটর মান যা তাই হেব। একিট উপাদােনর িনেজর

১০৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১২. সত ক সারণী (Truth Table)

সােথ িনেজর ওপর কান অণুি য়া (operator) যু হেল ফলাফল যিদ উপাদানিটই হয় তাহেল
অণুি য়ািটর এই ধমেক বলা হয় অ ি য়তা (idempotence)। সব অণুি য়াই িক অ ি য়
নয়, যমন পািটগিণেত সবাব ায় x + x = x সত নয়, কােজই যাগ + অ ি য় নয়। বুলক
বীজগিণেত এবং && ও অথবা | | উভেয়ই অ ি য় (idempotent)।

• x && x ≡ x অ ি য়তা • x || x ≡ x অ ি য়তা

v
নীেচর িবিধ েটােত অণুি য়া েলার (operator) উপাদান েটা পর েরর িবপরীত। এবং
&& এর ফলাফল এে ে সবসময় false হেব, কারণ েটা উপাদােনর মেধ য কান একিট
তা িমথ া হেবই, আর য কান একিট িমথ া হেলই এবং এর ফলাফল িমথ া। তাই এই িবিধেক
বলা হয় অস িত (contradiction)। আর অথবা | | এর ফলাফল এে ে সবসময় true হেব,
কারণ েটা উপাদােনর মেধ য কান একিট তা সত হেবই, আর য কান একিট সত হেলই
অথবা এর ফলাফল সত । তাই এই িবিধেক বলা হয় নঞ মধ ম (excluded middle)।

• x && !x ≡ false অস িত

5g
• x | | !x ≡ true নঞ মধ ম

নীেচর িবিধ েটার নাম িড মরগােনর িবিধ (De Morgan's Law)। এই িবিধ েটা খুবই
পূণ এবং ায়শই বুলক রািশর সরলীকরেণ ব ব ত হয়। এই িবিধ অণুযায়ী এবং && এর
ফলাফেলর ওপর নয় ! করেল য ফলাফল পাওয়া যায় তা আেগ উপাদান েলার ওপের নয় ! কের
in
সই ফলাফেলর ওপর অথবা | | চািলেয় পাওয়া ফলাফেলর সমতুল। একই ভােব অথবা | | এর
ফলাফেলর ওপর নয় ! করেল য ফলাফল পাওয়া যায় তা আেগ উপাদান েলার ওপের নয় ! কের
সই ফলাফেলর ওপর এবং && চািলেয় পাওয়া ফলাফেলর সমতুল।
am

• ! (x && y) ≡ !x | | !y িড মরগান • ! (x | | y) ≡ !x && !y িড মরগান

৭.১২ সত ক সারণী (Truth Table)


al

সমতুেলর িবিধ েলা (equivalence law) য সিঠক, অথবা য কান েটা বুলক রািশ সমতুল
িকনা, এইটা তুিম কীভােব মাণ করেব। মাণ করাটা আসেল খুবই সহজ। উপাদান েলার মােনর
যত রকম সমােবশ (combination) স ব, িতিটর জ তামােক সমতুল িবিধর বাম ও ডান
পাশ সমান িকনা পরী া কের দখেত হেব। আমরা সাধারণত সত ক সারণী (truth table)
ব বহার কের সটা কের থািক। চেলা উদাহরণ িহসােব আমরা িড মরগােনর িবিধ েটার থমিট
মাণ কির। একই প িত অ সরণ কের তুিম িড মরগােনর অ িবিধিট মাণ করেত পারেব। আর
চাইেল উপেরর অ া য কান সমতুেলর িবিধ েলাও িনেজ িনেজ মাণ করেব।
িড মরগােনর থম সূ িটেত চলক (variable) আেছ ইিট x ও y, আর চলক িটর মান
স ব কবল true ও false। এখন িট চলেকর জে িট মান িনেয় আমরা চারিট সমােবশ
(combination) পেত পাির। এর িতিটর জ আমরা িবিধিটর বাম পাশ ও ডান পাশ মূল ায়ন
(evaluate) কের দখেবা। এখােন বেল রািখ কান সমতুল িবিধেত যিদ ৩িট চলক থােক তাহেল
সমােবশ হেব ৮িট, ৪িট থাকেল হেব ১৬িট, অথাৎ n িট চলক থাকেল সমােবশ হেব 2n িট। আর
এর িতিট সমােবেশর জ সত ক সারণীেত (truth table) একিট কের আিড় (row) থাকেব।
সত ক সারণীেত খািড় েলা (column) হেব িবিভ উপরািশর (subexpression) মান য -
লার মান আমােদর মূল ায়ন করেত হেব যিদ আমরা মুল রািশর (expression) মান পেত চাই।

১০৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৩. বুলক সরলীকরণ (Boolean Simplification)

যমন ! (x && y) মূল ায়ন করেত গেল আমােদর x && y আেগ মূল ায়ন করেত হেব, তমিন
ভােব !x | | !y মূল ায়ন করেত গেল !x ও !y মূল ায়ন করেত হেব।

সত ক সারণী (Truth Table)


x y x && y ! (x && y) !x !y !x || ! y
true true true false false false false
true false false true false true true
false true false true true false true
false false false true true true true

উপেরর সত ক সারণীেত (truth table) িতিট আিড় (row) খয়াল কেরা:

১. থম আিড়েত (row) x ও y উভেয়র মানই true। তরাং x && y ও true, ফেল ! (


x && y) হেব false। তারপর !x আর !y উভয়ই হেলা false, ফেল !x | | !y হেলা
false। কােজই ! (x && y) আর !x | | !y উভেয়র মান সমান।

5g
২. ি তীয় আিড়েত (row) x,y যথা েম true, false, ফেল x && y হেলা false আর ! (
x && y) হেলা true। তারপর !x ও !y হেব যথা েম false ও true, ফেল !x | | !y
হেলা true। তরাং ! (x && y) আর !x | | !y এর মান সমান।
in
৩. তৃতীয় আিড়েত (row) x,y যথা েম false , true, ফেল x && y হেলা false আর ! (
x && y) হেলা true। তারপর !x ও !y হেব যথা েম true ও false, ফেল !x | | !y
হেলা true। তরাং ! (x && y) আর !x | | !y এর মান সমান।
am

৪. চতুথ আিড়েত (row) x ও y উভেয়র মানই false। তরাং x && y ও false, ফেল !
(x && y) হেব true। তারপর !x আর !y উভয়ই হেলা true, ফেল !x | | !y হেলা
true। কােজই ! (x && y) আর !x | | !y উভেয়র মান সমান।

তরাং উপাদান েলার (operand) মান যাই হাক না কন সবাব ায় ! (x && y) আর !x | |


!y এর মান সমান, অথাৎ তারা এেক অপেরর সমতুল মাণ হেয় গেলা।
al

৭.১৩ বুলক সরলীকরণ (Boolean Simplification)


শতািল পিরগণনায় (conditional programming) বুলক বীজগিণত (boolean algebra)
িঠক কী কােজ লােগ? বুলক বীজগিণত ব বহার কের িকছু সরলীকরেণর উদাহরণ দখাও। আর
এই সরলীকরেণর কারেণ মেলখেত (program) কী ভাব পেড় সটাও দখাও।
ধেরা তামােক একিট মেলখ (program) িলখেত হেব যিট তুিম কান ণীেত পেড়া আর
তামার বয়স কত এই িট যাগান (input) িনেয় জানােব তুিম মারগ লড়াই খলেত পারেব িক
না। তুিম যিদ প ম ণীেত পেড়া তাহেল তুিম মারগ লড়াই খলেত পারেব। আর তুিম যিদ প ম
ণীেত নাও হও িক তামার বয়স যিদ ১০ বছর হয় তাহেলও তুিম মারগ লড়াই খলেত পারেব।
এই মেলখিট আমরা যিদ-নাহেল িদেয় খুব সহেজ িলেখ ফলেত পাির।
নীেচর মেলখ খয়াল কেরা। আমরা েটা চলক ব বহার করিছ shreni ও boyosh, য
েটা থেম ঘাষণা (declare) কের তারপর যাগান যাচনা (input prompt) দিখেয় যাগান
(input) িনেত হেব। ধের িনই তুিম ও েলা িনেজ িনেজ করেত পারেব। আমরা কবল াসি ক

১০৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৩. বুলক সরলীকরণ (Boolean Simplification)

অংশটু দিখ। থেম if (shreni == 5) িদেয় পরী া করা হেলা প ম ণী িকনা, হেল ফলন
(output) হেব "khelte parbe"। আর প ম ণী যিদ না হয় িক বয়স যিদ ১০ বছর হয় সটা
পরী া করার জ আমােদর লাগেব if (shreni != 5 && boyosh == 10) যিট আমরা
আেগর if এর else এর সােথ লািগেয় িদেবা। আর সবেশেষ কান if এর শতই সত না হেল
আমরা ফলন (output) দখােবা "khelte parbena"। একটা পূণ িবষয় খয়াল কেরা,
বাংলা ভাষায় যটা "িক " সটা িসিপিপেত িগেয় হেয় যাে "এবং" &&।
i f ( s h r e n i == 5 )
cout << " khelte parbe " << endl ;
e l s e i f ( s h r e n i ! = 5 && boyosh == 10)
cout << " khelte parbe " << endl ;
e l s e / / উপেরর কানিটই না হেল
cout << " khelte parbena " << endl ;

উপেরর মেলখেত েটা if এর শত সত হেলই আমােদর একই ফলন দখােত হয়। আমরা

5g
তাই চ া করেত চাই একটা if িদেয় িবষয়টা সামলােত। সটা করা খুবই সহজ যিদ তুিম সম াটা
উে া িদক থেক ভােবা। তুিম মারগ লড়াই খলেত পারেব যিদ তুিম ৫ম ণী পেড়া অথবা তুিম
৫ম ণীেত না িক তামার বয়স ১০ বছর হেল। তা এই থেক তুিম খুব সহেজ খলেত পারার
শত িলেখ ফলেত পােরা shreni == 5 | | shreni != 5 && boyosh == 10, তাই না!
i f ( s h r e n i == 5 | | s h r e n i ! = 5 && boyosh == 10)
in
cout << " khelte parbe " << endl ;
e l s e / / উপেরর শত সত না হেল
cout << " khelte parbena " << endl ;
am

এখন কথা হে এই য খািনকটা জিটল একটা শত আমরা িলেখ ফললাম, এটােক িক কান
ভােব সরলীকরণ করা যায়? সরলীকরণ করার জ চেলা ধের িনই p ≡ shreni == 5 আর q
≡ boyosh == 5। তাহেল shreni != 5 ক লখা যায় !p। ফেল আমােদর শতিট দাঁড়ােলা
p | | !p && q, আমরা এিটেক বুলক বীজগিণত (boolean algebra) িদেয় সরল করেবা।
al

p | | !p && q দ শত যা সরল করেত হেব

≡ (p | | !p) && (p | | q) ব টন িবিধ (distribution)

≡ true && (p | | q) নঞ মধ ম (excluded middle)

≡ p || q সেত র সরল (true simplification)

তরাং উপেরর সরেলর ফেল া রািশ (expression) অ যায়ী আমােদর মেলখ দাঁড়ােব
িন প, যখােন আমােদর একিট অিতির শত আর মূল ায়ন করেত হে না। আমরা p এর
বদেল shreni == 5 আর q এর বদেল boyosh == 10 িলখেবা।
i f ( s h r e n i == 5 | | boyosh == 10)
cout << " khelte parbe " << endl ;
e l s e / / উপেরর শত সত না হেল
cout << " khelte parbena " << endl ;

১০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৪. মই, অ াি , সংেযাজক (Ladder,Nesting,Connectives)

একই রকম আেরকিট উদাহরণ দেখা। ধেরা কান একটা মেলখেত (program) শত
দাঁড়াে ! (p && (!p | | q)) | | q। এখন কথা হে এিটেক সরল করেল কী দাঁড়ােব।
! (p && (!p | | q)) | | q দ শত যা সরল করেত হেব
≡ ! ( (p && !p) | | (p && q)) | | q ব টন িবিধ (distribution)
≡ ! (false | | (p && q)) | | q অস িত (contradiction)
≡ ! (p && q) | | q িমথ ার সরল (false simplification)
≡ ( !p | | !q) | | q িড মরগান (De Morgan)
≡ !p | | ( !q | | q) সহেযাজন (associative)
≡ !p | | true নঞ মধ ম (excluded middle)
≡ true সেত র সরল (true simplification)

5g
উপেরর সরলীকরেণর ফেল আমরা if ( ! (p && (!p | | q)) | | q) না িলেখ কবল if
(true) িলখেত পারেবা। িক একটা িবষয় দেখেছা, সরলীকরেণর ফলাফল একদম একটা বক
মান true হেয় গেছ। এর অথ দ শেতর মান কখেনা চলক p বা q এর ওপর িনভর কেরনা।
তরাং আমােদর আেদৗ কান if লাগােনার দরকার নাই। কারণ শত সত হেল যিট করেত হেতা
in
শত সবসময় সত হওয়ায় তুিম সিট এখন শত পরী ণ ছাড়াই করেব।
/ / i f ( true ) / / শত লখার দরকার নাই , টীকায় আটেক িদেয়িছ
cout << " kee moja " << endl ; / / কবল এিট িলখেলই হেব
am

তুিম এবার িজে স করেত পােরা সরলীকরেণর ফেল যিদ false আেস তাহেল কী হেব?
সিত ই তা কী হেব? সে ে আমােদর িলখেত হেব if (false) তাই না! িক সটা মােন তা
শত সব সময় িমথ া, শতিটর সত হওয়ার কান স াবনা নই। আর সে ে শত সত হেল যা
করার কথা িছেলা সটা কখেনাই করেত হেব না। ফেল তুিম এই if (false) আর তারপর শত
সত হেল যা করেত তার সব মেলখ (program) থেক মুেছ িদেত িদেত পােরা।
al

/ / i f ( f a l s e ) / / শত লখার দরকার নাই , টীকায় আটেক িদেয়িছ


/ / cout << " kee moja " << endl ; / / শত সব সময় িমথ া

৭.১৪ মই, অ াি , সংেযাজক (Ladder,Nesting,Connectives)


যিদ-নাহেলর মই (if-else ladder) ও অ াি যিদ-নাহেল (nested if-else) ব বহার না কের
কী ভােব সংেযাজক (connectives) এবং &&, অথবা | |, নয় ! ব বহার কের একই উে
বা বায়ন করা যায় তা আেলাচনা কেরা। অথবা উে াটা অথাৎ সংেযাজক ব বহার না কের কী
ভােব যিদ-নাহেলর মই বা অ াি যিদ ব বহার কের কাজ চালােনা যায় তা দখাও।
নীেচর উদাহরণ েলা খয়াল কেরা। এ েলােত েটা কের আেছ। বামপােশর ে যিদ-
নাহেল মই (if-else ladder) অথবা অ াি যিদ-নাহেল (nested if-else) িদেয় মেলখ লখা
হেয়েছ, আর ডান পােশর ে তার সমতুল (equivalent) মেলখ লখা হেয়েছ সংেযাজক
(connectives) এবং && অথবা | | না ! িদেয়। আমরা আসেল িবধামেতা কখেনা বামপােশর
মেতা কের িলিখ আবার কখেনা ডানপােশর মেতা কেরও িলিখ।

১০৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৪. মই, অ াি , সংেযাজক (Ladder,Nesting,Connectives)

i f ( shorto1 ) i f ( shorto1 | | shorto2 )


cout << " k i s u ekta " ; cout << " k i s u ekta " ;
e l s e i f ( shorto2 ) else
cout << " k i s u ekta " ; cout << " onno k i s u " ;
else cout << " koro " << endl ;
cout << "onno k i s u " ;
cout << " koro " << endl ;

উপেরর যিদ-নাহেল মইেয়র (if-else ladder) উদাহরেণ খয়াল কেরা shorto1 সত


হেলও "kisu ekta" ফলেন (output) যােব আবার shorto2 সত হেলও "kisu ekta" ফল-
ন (output) যােব। আর এ েটাই িমথ া হেল ফলেন যােব "onno kisu"। বাম ও ডান উভয়
পােশর মেলখেতই (program) এই একই ব াপার ঘটেব। একটা িবষয় উে খ করা দরকার:
shorto1 সত হেল বামপােশ দেখা shorto2 পরী ণই দরকার পের না। ডানপােশও আসেল
একই ঘটনা ঘটেব। অথবা | | এর ফলাফল যেহতু য কান একিট উপাদান সত হেলই সত হয়,

i f ( shorto1 )
i f ( shorto2 )
5g
সেহতু shorto1 সত হেলই shorto2 এর মুল ায়ন ছাড়াই | | এর ফলাফল সত হেয় যােব।
এই য ব াপারিট এটােক বলা আংিশক মুল ায়ন (partial evaluation), এেত অদরকারী কাজ
িকছুটা কেম, মেলখ (program) িকি ত তগিতর হয়।
i f ( shorto1 && shorto2 )
cout << " k i s u ekta " ;
in
cout << " k i s u ekta " ; else
else cout << " onno k i s u " ;
cout << " onno k i s u " ; cout << " koro " << endl ;
am

else
cout << "onno k i s u " ;
cout << " koro " << endl ;

উপেরর অ াি যিদ-নাহেলর (nested if-else) উদাহরেণ খয়াল কেরা shorto1 সত


হেল তারপর shorto2ও সত হেল "kisu ekta" ফলেন (output) যােব। আর শত েটার য-
al

কান একটা িমথ া হেলও ফলেন (output) যােব "onno kisu"। বাম ও ডান উভয় পােশ ম-
লখেতই (program) এই একই ব াপার ঘটেব। এখােনও সই একটা িবষয় উে খ করা দরকার:
shorto1 িমথ া হেল বামপােশ দেখা shorto2 পরী ণই দরকার পের না। ডানপােশও আসেল
একই ঘটনা ঘটেব। অথবা && এর ফলাফল যেহতু য কান একিট উপাদান িমথ া হেলই িমথ া
হয়, সেহতু shorto1 িমথ া হেলই shorto2 এর মুল ায়ন ছাড়াই && এর ফলাফল িমথ া হেয়
যােব। এই য ব াপারিট এটােক বলা আংিশক মুল ায়ন (partial evaluation), এেত অদরকারী
কাজ িকছুটা কেম, গিত িকছুটা বােড়।
i f ( shorto ) i f ( ! shorto )
cout << " k i s u ekta " ; cout << " onno k i s u " ;
else else
cout << "onno k i s u " ; cout << " k i s u ekta " ;
cout << " koro " << endl ; cout << " koro " << endl ;

উপেরর উদাহরেণ বামপােশ shorto ব বহার করা হেয়েছ আর ডানপােশ !shorto। ফেল
শত সত হেল যা করেত হেব আর িমথ া হেল যা করেত হেব এই েটা ান বদলাবদিল কেরেছ।

১০৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৪. মই, অ াি , সংেযাজক (Ladder,Nesting,Connectives)

i f ( shorto1 ) i f ( shorto1 | | ! shorto2 )


cout << " k i s u ekta " ; cout << " k i s u ekta " ;
e l s e i f ( shorto2 ) else
cout << "onno k i s u " ; cout << " onno k i s u " ;
else cout << " koro " << endl ;
cout << " k i s u ekta " ;
cout << " koro " << endl ;

উপেরর উদাহরেণ খয়াল কের দেখা "kisu ekta" ফলেন (output) যােব যিদ shorto1
সত হয় অথবা যিদ shorto2 িমথ া হয়, অ কথায় !shorto2 সত হয়। আর shorto1
িমথ া হেল তারপর shorto2ও িমথ া হেল ফলেন (output) যােব "onno kisu"। িঠক এই
ব াপারিটই উভয়পােশর মেলখেত (program) িতফিলত হেয়েছ।
i f ( shorto1 ) i f ( ! shorto1 | | shorto2 )
i f ( shorto2 ) cout << " k i s u ekta " ;

else

else
5g
cout << " k i s u ekta " ;

cout << " onno k i s u " ;

cout << " k i s u ekta " ;


else
cout << " onno k i s u " ;
cout << " koro " << endl ;
in
cout << " koro " << endl ;

উপেরর উদাহরণিট একটু জিটল। বামপােশ খয়াল কেরা "kisu ekta" ফলেন (output)
am

যােব যিদ shorto1 িমথ া হয় অথবা তা না হেল যিদ shorto2 সত হয়। কথায় বলেল িঠক
তাই-ই ডানপােশও িলখা হেয়েছ। আর একটু বশী গভীের বুঝেত চাইেল ধেরা বামপােশ "kisu
ekta" ফলেন যােব যিদ shorto1 && shorto2 || !shorto1 সত হয়। বুলক বীজগিণত িদ-
য় সরলীকরণ করেল এিট আসেব !shorto1 || shorto2, তুিম িনেজ চ া কের দেখা।
bool shorto = true ; i f ( shorto1 && shorto2 )
i f ( ! shorto1 ) cout << " k i s u ekta " ;
al

shorto = f a l s e ; else
i f ( ! shorto2 ) cout << " onno k i s u " ;
shorto = f a l s e ; cout << " koro " << endl ;
i f ( shorto )
cout << " k i s u ekta " ;
else
cout << "onno k i s u " ;
cout << " koro " << endl ;

উপেরর এই উদাহরণিট খয়াল কেরা। থম িট if এেকবাের আলাদা আলাদা, কউ কােরা


অ াি ও (nested) নয়, আবার মইও (ladder) নয়। ডানপােশ যমন খুব র কের সংে েপ
আমরা short1 && shorto2 িলেখিছ। অেনকসময়ই এটা করা স ব হয় না। কারণ শত েটা
আলাদা কের থেম মূল ায়ন করাটা হয়েতা বশ এক একটা কাজ। তা এইরকম ে আমরা
বামপােশ যিট কেরিছ আলাদা একটা চলক িনেয়িছ shorto যখােন মুলত আমরা && এর ফলা-
ফল চাই। আমরা জািন && ফলাফল য কান একিট উপাদান (operand) িমথ া হেলই িমথ া

১১০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৫. যিদ-নাহেল অ লায়ন (If-Else Optimisation)

হয়। তাই আমরা েত shorto এর মান িনেয়িছ true, এরপর shorto1 িমথ া হেল অথাৎ
!shorto1 সত হেল আমরা shorto ক িমথ া কের িদেয়িছ। একই ভােব shorto2 িমথ া হেল
অথাৎ !shorto2 সত হেলও আমরা shorto ক িমথ া কের িদেয়িছ। তাহেল েটা শেতর য
কানিট িমথ া হেলই shorto িমথ া হেয় যােব। িঠক && এর ফলাফেলর মেতা। শেষর if else
এ এবার shorto ব বহার কের ফলন দবার পালা। তেব একটা িবষয় খয়াল কেরা ডানপােশ য-
মন shorto1 িমথ া হেল আংিশক মূল ায়েনর কারেণ (partial evaluation) shorto2 আর
পরী ণই করা হেব না, বামপােশ িক তা হে না। তুিম যিদ এই উ য়ন টু করেত চাও তাহেল
তামােক if ( !shorto2) বদেল িলখেত হেব else if ( !shorto2)।
bool shorto = f a l s e ; i f ( shorto1 | | shorto2 )
i f ( shorto1 ) cout << " k i s u ekta " ;
shorto = true ; else
i f ( shorto2 ) cout << " onno k i s u " ;
shorto = true ; cout << " koro " << endl ;
i f ( shorto )
cout << " k i s u ekta " ;
else
cout << "onno k i s u " ;
cout << " koro " << endl ;
5g
in
এই উদাহরণিটও িঠক আেগর উদাহরণিট মেতা, তেব এখােন | | এর জ করা হেয়েছ। অথ-
বার | | ে যেকান একিট উপাদান (operand) সত হেলই ফলাফল সত হয়, আমরা তাই
shorto এর আিদ মান ধেরিছ false। আর তারপর শত েটার য কানিট সত হেলই shorto
am

ক সত করা হেয়েছ। তুিম যিদ আংিশক মূল ায়ন (partial evaluation) এখােনও কােজ লা-
গােত চাও তাহেল বামপােশ if (shorto2) বদেল else if (shorto2) িলখেব।

৭.১৫ যিদ-নাহেল অ লায়ন (If-Else Optimisation)


al

ধেরা তামার ইশ েল গিণত পরী ায় ৫০ বা বশী পেল পাশ, না হেল ফল। আর ৮০ বা বশী
পেল তারকা িনেয় পাশ। তামার ণীেত ১০০ জন িশ াথী আেছ, যােদর মেধ মাটামুিট ১০ জন
ফল করেব, ২০ জন তারকা সহ পাশ করেব আর বাঁকী ৭০ জন ফ পাশ করেব। তুিম এমন একিট
মেলখ (program) রচনা কেরা যিট একজন িশ াথীর ছাে র ন র যাগান (input) িনেয়
ফল, পাশ, বা তারকা সহ পাশ ফলন (output) িদেব। তামার মেলখিট ১০০ জন িশ াথীর
জ ১০০ বার আলাদা আলাদা কের চালােনা (run) হেব। তেব এই ১০০ বার চালােনােত মাট
সময় যােত কম লােগ মেলখটা সটা মাথায় রেখ রচনা করেত হেব।
i f ( nombor >= 50) // যিদ পােশর ন র
cout << " pash " << endl ; // পাশ ফলন
else // না হেল
cout << " f e l l " << endl ; // ফল ফলন

i f ( nombor >= 80) // যিদ তারকা ন র


cout << " taroka " << endl ; // তারকা ফলন

১১১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৫. যিদ-নাহেল অ লায়ন (If-Else Optimisation)

ধেরা উপেরর মেতা কের তুিম মেলখ তরী কেরেছা। য িশ াথী ফল করেলা বা পাশ
করেলা বা তারকা সহ পাশ করেলা, তার জ তা যা ফলন তা দখােতই হেব, সখােন সময় কম
লাগা বশী লাগার ব াপার নাই। সময় কম বা বশী লাগার হেলা তুিম কতবার শত পরী া কের
কাজটা করেত পারেছা সটােত। যমন ধেরা একজন ফল করা িশ াথীর জ উপেরর মেলখেত
(nombor >=50) শত পরী া হেব আবার মেলখ য ভােব লখা হেয়েছ তােত nombor
>= 80 শতিটও পরী া হেব। শত পরী ার ফলাফল সত হাক আর িমথ া হাক পরী া তা
করেতই হেব। ফেল মাট িট শত পরী া হেলা। য িশ াথীিট কবল পাশ করেব খয়াল কের
দেখা তার জে ও িটই শতই পরী া করেত হেব। একই হেব তারকাসহ পােশর ছাে র জে ও
িট শতই পরী া করেত হেব। তরাং উপেরর মেলখ িদেয় এই সম ার সমাধান করেল ১০০
জন িশ াথীর জ মাট শত পরী া হেলা ১০০ * ২ = ২০০ বার।
i f ( nombor >= 50) // যিদ পােশর ন র
{
cout << " pash " << endl ; // পাশ ফলন
i f ( nombor >= 80) / / যিদ তারকা ন র

}
else 5g
cout << " taroka " << endl ;

cout << " f e l l " << endl ;


//
//
/ / তারকা ফলন

না হেল
ফল ফলন
in
এবার একটু ভেব দেখা পাশ বা ফল িনণয় করার জ তা আমােদর একটা শত লাগেবই,
িক যখন আমরা জেন গলাম একজন িশ াথী ফল কেরেছ, তখন তার জে ও কন আমরা
nombor >= 80 শত পরী া করেবা? সটা তা অদরকারী কাজ হেব। তরাং তারকা দখােনা
am

অংশটু যিদ আমরা পােশর জ য অংশ সখােন একটা মহ া (block) তরী কের সই মহ ার
িভতের িনেয় যাই, তাহেল nombor >= 80 শতিট কবল পাশ করা িশ াথীেদর জ পরী া
হেব। উপেরর মেলখ দেখা। তা এই ে পাশ বা ফল িশ াথীর জ কবল ১ টা শত পরী া
হেলা আর তারকা পাওয়া ছাে র জ ২টা তরাং মাট শত পরী ণ হেলা ২০*২ + (৭০+১০)*১
= ১২০ বার মা । িনি তভােবই এই মেলখ আেগরিটর চেয় তাড়াতািড় ১০০ জন িশ াথীর
ফলাফল দখােনার কাজ শষ করেব! কমন মজার িবষয় না!
al

i f ( nombor >= 80) // যিদ তারকা ন র


{
cout << " pash " << endl ; // পাশ ফলন
cout << " taroka " << endl ; // তারকা ফলন
}
e l s e i f ( nombor >= 50) // যিদ পােশর ন র
cout << " pash " << endl ; // পাশ ফলন
else // না হেল
cout << " f e l l " << endl ; // ফল ফলন

তুিম হয়েতা ভাবেছা দিখ আেরক ভােব করা যায় িকনা যােত আেরা কম সময় লােগ। যমন
ধেরা তুিম থেম ৮০ বা বশী িকনা পরী া করেব, তারপর ৫০ এর বশী িকনা পরী া করেব,
অথাৎ উপেরর মেলখেয়র (program) মেতা কের। এখােন খয়াল কেরা তারকা পাওয়া িশ-
াথীেদর জ শত পরী া করা লাগেব ১বার সিট nombor >= 80 আর ফ পাশ বা ফল
করা িশ াথীেদর জ ২িট শতই পরী া করা লাগেব। ফেল মাট শত পরী ণ হেব ২০*১ +

১১২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৬. িতিনক অণুি য়া (Ternary Operator)

(৭০+১০)*২ = ১৮০ বার। তরাং উপেরর এই তৃতীয় মেলখ আমােদর লখা থম মেলখ-
য়র চেয় একটু তগিতর হেলও ি তীয়িটর চেয় যেথ ধীরগিতর হেব। তুিম আেরা নানান ভােব
চ া কের দখেত পােরা, তেব আমােদর ি তীয় মেলখিটই সবেচেয় তগিতর হেব, কারণ এেত
সবেচেয় কম সংখ ক বার শত পরী া করেত হেয়েছ।
আ া তুিম কী ধরেত পেরেছা কন ি তীয় মেলখিটেত সবেচেয় কম সংখ ক বার শত পরী-
া করেত হেব? উ রটা িক খুবই সহজ। আমােদর দখেত হেব সবেচেয় বশী সংখ ক িশ াথী
কান ভােগ পেড়। এে ে ফ পাশ কের সেবা ৭০ জন। আমরা চাইেবা এই ৭০ জেনর জ
ফলন (output) যােত কম সংখ ক, এে ে মা একটা শত পরী া কেরই িদেত পাির। উ া িদ-
ক য ভােগ িশ াথীর সংখ া যত কম তার জ তত বশী শত পরী া করা যেত পাের। আমােদর
তৃতীয় মেলখেত আমরা আসেল এই িনয়ম ভ কেরিছ। কারণ এটােত তারকা পাওয়া ২০ জেনর
ফলন আমরা দখাই মা ১বার শত পরী া কের, আর পাশ করা ৭০জেনর ফলন দখাই ২বার
শত পরী া কের। আর স কারেণ এিট ি তীয় মেলখ থেক ধীরগিতর হেব। তা এখন থেক
যিদ-তাহেল িনেয় কাজ করার সময় শতিদেয় সৃি হওয়া ডাল-পালা েলার কানটােত কত েলা
ব াপার (case) আসেত পাের সটা মাথায় রেখ দ মেলখ তরী করেব, কমন!

৭.১৬ িতিনক অণুি য়া (Ternary Operator) 5g


িসিপিপেত শতালী পিরগণনায় (conditional programming) িতিনক অণুি য়ািট (ternary
in
operator) কী? উদাহরণসহ িতিনক অণুি য়ািটর ব বহার দখাও।
িসিপিপ ভাষায় ? : এই তীক িট িবেশষ ভােব একসােথ ব বহার কের িতিনক অণুি -
য়ািট (ternary operator) পাওয়া যায়। িতিনক অণুি য়ািট যিদ-তাহেল-নাহেলর (if-then-
am

else) কাজ কের, তেব েটার মেধ তফাৎ হেলা িতিনক অণুি য়া একিট রািশর (expression)
অংশ িহসােব থােক, ফেল এর একটা ফলাফল তরী হেব। আর if-else একটা শতযু িববৃিত
(conditional statement) তরী কের যার কান ফলাফল নই।
i n t prothom , d i t i y o ; / / চলক িটর মান যাগান িনেত পােরা
al

i n t boro = prothom > d i t i y o ? prothom : d i t i y o ;

িতিনক অণুি য়া ব বহার কের আমরা উপের েটা সংখ ার বড়িট বর করার মেলখ দিখ-
য়িছ। এখােন থেম ? িচে র আেগ য শত পরী া আেছ সিট মূল ায়ন হেব। শত যিদ সত
হয় তাহেল ? আর দাঁটা : িচে র মােঝ য মানিট আেছ সিট হেব অণুি য়ািটর ফলাফল আর
শত যিদ িমথ া হয় তাহেল অণুি য়ািটর ফলাফল হেব দাঁটা : িচে র পের থাকা অংশটু । তাহ-
ল উপেরর মেলখেত prothom > ditiyo শতিট সত হেল ফলাফল হেব prothom অথাৎ
বড়িট আর শতিট িমথ া হেল ফলাফল হেব ditiyo কারন এিটই তখন বড় অ িটর চেয়। তরাং
আমরা ফলাফল িহসােব prothom ও ditiyo চলক িটর মেধ সবসময় বড়িটই পাি । তুিম
িন য় এখন েটা সংখ ার মেধ ছাটিট বর করার মেলখ এভােব িলখেত পারেব!
i n t prothom , d i t i y o ; / / চলক িটর মান যাগান িনেত পােরা
i n t boro ; / / বড় মানিট রাখার জ চলক ঘাষণা

prothom > d i t i y o ? boro = prothom : boro = d i t i y o ;

১১৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৬. িতিনক অণুি য়া (Ternary Operator)

তুিম িক চাইেল েটা সংখ ার বড়িট বর করার জ উপেরর মেতা কেরও িলখেত পারেত।
এইে ে চলক (variable) boro ত মান আেরাপণ (assign) আমরা িতিনক অণুি য়ার িভ-
তেরই কেরিছ খয়াল কেরা। আেরাপণ (assign) অণুি য়ার ফলাফল (result) তা আেরািপত
মানিটই হয়, তরাং এে ে ও িতিনক অণুি য়ার ফলাফল িহসােব আমরা বড়িটই পােবা, যিদও
boro চলেক মান আেরাপণ আেগই হেয় িগেয়েছ। তুিম িজে স করেত পােরা এই ে িত-
িনক অণুি য়ািটর যটা ফলাফল আসেব সটা আসেল কী কােজ লাগেব। এইখােন আসেল আমরা
ফলাফলিট কােজ লাগাি না। িক তুিম চাইেল int fol = prothom > ditiyo ? boro =
prothom : boro = ditiyo; িলখেতই পােরা। সে ে বড় মানিট boro চলেকর মেধ যমন
থাকেব তমিন fol চলেকর মেধ ও থাকেব। িতিনক অণুি য়ার ব বহার এভােব বশ সংি ।
i n t prothom , d i t i y o ; / / চলক িটর মান যাগান িনেত পােরা
i n t boro ; / / বড় মানিট রাখার জ চলক ঘাষণা

i f ( prothom > d i t i y o ) // থমিট বড় হেল


boro = prothom ;
else
boro = d i t i y o ;
5g/ / আর তা না হেল

িতিনক অণুি য়ার কাজ তা উপেরর মেতা কের যিদ-নাহেল িদেয়ও করা যেত পাের। তাহেল
কখন তুিম িতিনক অণুি য়া ব বহার করেব কখন যিদ-নাহেল ব বহার করেব? অত সংি
in
ধরেনর বেল িতিনক অণুি য়া (ternary) আসেল টুকটাক ছাটখাট িকছুর জ বশী ব বহার
করা হয়। আর যিদ-নাহেল হেলা একদম সব জায়গায় ব বহার করার জ , িবেশষ কের শত সত
বা িমথ া হেল যিদ একটা মহ া (block) িনবাহ (execute) করেত হয়।
am

i n t prothom , d i t i y o , t r i t i y o ; / / মান যাগান িনেত হেব

i n t boro = prothom > d i t i y o ? prothom : d i t i y o ;


boro = boro > t r i t i y o ? boro : t r i t i y o ;

তুিম িক িতিনক অণুি য়া (ternary operator) ব বহার কের িতনিট সংখ ার মেধ সবেচেয়
বড়িট বর করেত পারেব। িন য় পারেব, এ আর এমন কিঠন কী? উপেরর মেলখেয়র মেতা কের
al

থেম েটার মেধ বড়িট বর করেব। তারপর boro এর সােথ tritiyo িট তুলনা কের যিদ boro
িটই বড় হয় তাহেল ফলাফল boro আর যিদ tritiyo িট বড় হয় তাহেল ফলাফল tritiyo িট।
িক আমরা আসেল এই রকম আলাদা েটা িতিনক অণুি য়া চাি না। আমরা বরং একটা িতিনক
অণুি য়ােক আেরকিট িতিনক অণুি য়ার মেধ ঢুিকেয় িদেবা, আর যােক বলব অ াি (nested)
িতিনক অণুি য়া। নীেচর মেলখ খয়াল কেরা, আমরা একটু ছাড়ন (indentation) িদেয় িল-
খিছ। থেম prothom ও ditiyo তুলনা করা হেয়েছ। শত সত হওয়া মােন prothom বড়
যিটেক tritiyo এর সােথ তুলনা করা হেয়েছ। আর শত িমথ া হওয়া মােন ditiyo বড়, কােজই
এিটেক tritiyo এর সােথ তুলনা করা হেয়েছ। িতিনক অণুি য়া ব বহার কেরই আেরা নানান
ভােব এিট করা স ব, তুিম িনেজ িনেজ চ া কের দেখা।
i n t prothom , d i t i y o , t r i t i y o ; / / মান যাগান িনেত হেব

i n t boro = prothom > d i t i y o ?


( prothom > t r i t i y o ? prothom : t r i t i y o ) :
( ditiyo > tritiyo ? ditiyo : tritiyo ) ;

১১৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৭. পি ব াপার (Switch Cases)

৭.১৭ পি ব াপার (Switch Cases)


এমন একিট মেলখ (program) রচনা কেরা যিট একিট পূণক (integer) আর একিট ভ ক
(fractioner) যাগান (input) িনেব। পূণকিট ১ হেল মেলখিট পেরর সংখ ািটেক কােণর
পিরমান রিডয়ােন ধের িনেয় তার ল া পাত (sine) ফলন িদেব। আর পূণকিট ২ হেল ল া পাত
(cosine), ৩ হেল শা পাত (tangent) ফলন িদেব। তেব এই িতনিটর কানিটই না হেল
বলেব "অসমিথত পছ "। এই মেলখিটেত তুিম পি ব াপার (switch case) ব বহার করেব
আর যিদ-নাহেলর (if-else) ব বহােরর সােথ কী তফাৎ হয় সটাও আেলাচনা করেব।

িফিরি ৭.৫: াপণ সহ ি েকাণিমিত (Trigonometry with Menu)


i n t onupat ; // কান অ পাত s i n e , cosine , tangent
f l o a t kone ; // কােণর পিরমান রিডয়ােন

/ / থেম াপণ (menu) দখােনা হেব


cout <<
cout <<
cout <<
cout <<
5g
" onupat 1 : lombanupat ( s i n e ) " << endl ;
" onupat 2 : lognanupat ( cosine ) " << endl ;
" onupat 3 : sporshanupat ( tangent ) " << endl
endl ;
in
/ / তারপর অ পাত ও কাণ যাগান নয়া হেব
cout << " onupat : " << endl ; // যাগান যাচনা
c i n >> onupat ; // যাগান নওয়া
am

cout << " kone : " << endl ; // যাগান যাচনা


c i n >> kone ; // যাগান নওয়া

/ / পি ব াপার ব বহার কের ফলন দখােনা হেব


switch ( onupat ) / / এখােন চলক না হেয় কান রািশও হেত পাের
{
al

case 1 : / / ল া পাত ( s i n e ) cmath িশরনিথ লাগেব


cout << " lombanupat : " << s i n ( kone ) << endl ;
break ;
case 2 : / / ল া পাত ( cosine ) #i n c l u d e <cmath>
cout << " lognanupat : " << cos ( kone ) << endl ;
break ;
case 3 : // শা পাত ( tangent ) cmath িশরনিথ লাগেব
cout << " sporshanupat : " << tan ( kone ) << endl ;
break ;
default : / / অগত া িট বাতা ( e r r o r )
cout << " osomorthito posondo " << endl ;
break ;
}

cout << " kee chomotkar ! " << endl ; / / পি র বাইের অ িকছু

১১৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৭. পি ব াপার (Switch Cases)

উপেরর মেলখ (program) খয়াল কেরা। যমন বলা হেয়েছ তমন কের িট চলক নয়া
হেয়েছ: কান অ পাত তা রাখার জ চলক onupat আর কত রিডয়ান কান তা রাখার জ
চলক kone। এরপর একটা াপণ (menu) দখােনা হেয়েছ, কান সংখ া িদেয় কান অ পাত
বুঝােনা হে সটা ব বহারকারীেক জানােনার জ : 1 িদেল ল া পাত (sine), 2 িদেল ল া -
পাত (cosine), 3 িদেল শা পাত (tangent)। এরপের অ পাত ও কাণ যাগান (input)
নয়ার জ থেম যাগান যাচনা (input prompt) কের তারপর যাগান নওয়া হেয়েছ। তা-
রপর মুল অংশ যখােন পি ব াপার (switch case) ব বহার কের য অ পাত চাওয়া হেয়েছ
সিট দখােনা হেব। পি -ব াপােরর পের আেছ অ িকছু মেলখেয়র বাঁকী অংশ।
আমরা কবল পি ব াপার (switch case) অংেশ নজর দই। যেহতু onupat চলকিটর
(variable) মান ওপর িনভর করেব আমরা কান অ পাত ফলেন (output) দখােবা, আম-
রা তাই িলেখিছ switch(onupat) আর তারপর আমােদর একিট মহ া (block) তরী করেত
হেব { } বাঁকা ব নী (curly brackets) যুগল িদেয়। এবার অ পােতর মান কত হেল কী কর-
ত হেব তার সবিকছু আমরা রাখেবা মহ ার িভতের। খয়াল কেরা onupat এর মান 1, 2, 3
হওয়ার জ আমােদর িতনিট ব াপার (case) আেছ যমন case 1: case 2: case 3:; খ-
য়াল কেরা থেম case তারপের onupat চলকিটর কান মান সিট তারপর একটা : দাঁটা

5g
(colon)। িতিট ব াপােরর (case) পের দেখা আমরা cout িদেয় ি েকানিমিতর অ পাত
sine, cosine, tangent ব বহার কের ফলন দিখেয়িছ। তারপর িলেখিছ break; অথাৎ এই-
খােন পি -ব াপােরর াি (break) ঘটেব। এই াি েয়র (break) কাজ আমরা একটু পেরই
আেলাচনা করিছ। তার আেগ দেখা case 3: এর াি েয়র (break) পের রেয়েছ default:
in
যিট হেলা অগত া ব াপার অথাৎ ওপেরর কান case এর সােথই onupat এর মান না িমলেল
অগত া ব াপারিট ঘটেব বেল ধের নয়া হেব। তাহেল onupat এর মান যিদ 1, 2, 3 িভ অ
িকছু হয় তাহেল default: অগত া ব াপারিট ঘটেব। যথারীিত সখােন আমরা িটবাতা (error
message) দিখেয়িছ। এখােন িক break; আেছ শেষ।
am

মেলখ িনবাহ (program execution) করার সময় ধের িনেত পােরা অদৃ বাতােমর
মেতা একটা ব াপার আেছ যটােক বলা হয় িনয় ণ (control)। এই িনয় ণ বাতামিট মেলখ
িনবােহর েত main িবপাতেকর একদম থম সািরেত থােক। বাতামিট যই সািরেত থােক
সই সাির িনবািহত (executed) হয়। আর তারপর িনয় ণ বাতামিট পেরর সািরেত লাফ দয়,
তখন সই সািরিট িনবািহত হয়। এভােব িনয় ণ বাতােমর লাফালািফ ও সই সােথ সংি সািরর
al

িনবাহ এেক এেক চলেত থােক। যিদ-নাহেল (if-else) আেলাচনা করার সময় আমরা বেলিছলাম
শত সত হেল িকছু কাজ হয় আবার শত িমথ া হেল অ িকছু কাজ হয়। িঠক যন েটা শাখা
(branch) তরী হয়। শেতর ওপর িনভর কের িনয় ণ বাতামিট আসেল হয় এই শাখায় নাহয়
ওই শাখায় িগেয় লাফ িদেয় বেস। িনয় ণ য শাখায় বেস সই শাখা িনবািহত হয়, অ শাখা
িনবািহত হয় না। িনয় ণ বাতাম এরপর if-else এর পেরর অংেশ চেল যায়।
পি -ব াপােরর (switch-case) ে বলেতা িনয় ণ switch(onupat) এর পের লাফ
িদেয় কান সািরেত িগেয় বসেব? যিদ onupat এর মান হয় 1 তাহেল িগেয় বসেব case 1: এর
সািরেত, 2 হেল িগেয় বসেব case 2: এর সািরেত, আর 3 হেল বসেব case 3: এর সািরেত,
আর িতনেটর কানটাই না হেল িগেয় বসেব default: এর সািরেত। িনয় ন switch(onupat
) হেত লাফ িদেয় িগেয় সংি ব াপাের (case) বসার পের সািরর পর সাির এেক এেক যেত
থাকেব যত ণনা একিট break; পাে । অথাৎ break পাওয়ার আেগ পয ত কিট সািরই
এেকর পর এক িনবািহত হেত থাকেব। আর break; পাওয়ার পেরই িনয় ণ আর একিট লাফ
িদেয় পি -ব াপােরর (switch-case) মহ ার বাইের চেল যােব। াি না িদেল কী ঘটেব আমরা
সটা পরবতীেত আেলাচনা করেবা। তেব বেল রািখ িতিট ব াপােরর (case) শেষ আসেল াি
(break) দয়াটা আসেলই খুব পূণ, আর আমরা আবার না দয়ার ভুলটা ায়ই কির।

১১৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৮. অ াি পি ব াপার (Nested Switch Cases)

৭.১৮ অ াি পি ব াপার (Nested Switch Cases)


অ াি পি ব াপার (nested switch case) ব বহার কের এমন একিট মেলখ (program)
রচনা কেরা, যিট থেম াপণ (menu) দিখেয় জানেত চােব আমরা বেগর িহসাব করেত চাই,
নািক বৃে র িহসাব করেত চাই। সিট যাগান (input) নবার পের আমােদর পছ বগ হেল
মেলখিট যাগান িনেব দঘ আর কী দখেত চাই ফল নািক পিরসীমা তা, আর সই অ যায়ী
ফলন (output) দখােব। আর আমােদর পছ বৃ হেল মেলখিট ব াসাধ যাগান িনেব আর
িনেব ফল নািক পিরিধ দখেত চাই তা, আর স অ যায়ী ফলন িদেব।
নীেচর মেলখ (program) খয়াল কেরা। থেম আকৃিতর াপণ (menu) দখােনা হেয়-
ছ। তারপর akriti চলক ঘাষণা (variable declare) কের যাগান যাচনা (input prompt)
কের যাগান (input) নয়া হেয়েছ। এরপর akriti চলেকর মােনর ওপর পি (switch) যােত
িতনিট ব াপার (case) আেছ। চলক akriti এর মান 1 হেল case 1: বগ, 2 হেল case 2: বৃ ,
আর অ িকছু হেল অগত া ব াপাের default: িট বাতা দখােনা হেয়েছ।

িফিরি ৭.৬: অ াি পি
/ / আকৃিতর াপণ (menu)
5g
িদেয় াপণ (Menu with Nested Switch)

cout << " a k r i t i 1 borgo " << endl ;


cout << " a k r i t i 2 b r i t t o " << endl ;
in
int akriti ; / / চলক ঘাষণা
cout << " a k r i t i : " ; / / যাগান যাচনা
c i n >> a k r i t i ; / / যাগান নওয়া
am

/ / বাইেরর পি যার িভতের আবার পি থাকেব


switch ( a k r i t i ) / / আকৃিতর পি
{
case 1 : / / বাইেরর পি বগ হেল
/ / কী পছ তা দখােনা হেব
al

cout << " posondo b r i t t o " << endl ;

/ / বেগর দঘ যাগান িনেত হেব


i n t doirgho ; / / চলক ঘাষণা
cout << " doirgho : " ; / / যাগান যাচনা
c i n >> doirgho ; / / যাগান নওয়া

/ / কী চাই তার াপণ (menu)


cout << " 1 c h a i k h e t r o f o l " << endl ;
cout << " 2 c h a i porishima " << endl ;

i n t keechai ; / / চলক ঘাষণা


cout << " kee c h a i : " ; / / যাগান যাচনা
c i n >> keechai ; / / যাগান নওয়া

১১৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৮. অ াি পি ব াপার (Nested Switch Cases)

/ / িভতেরর পি যিট আেরকিট পি র িভতের


switch ( keechai ) / / পি কী চাই
{
case 1 : / / িভতেরর পি ফল হেল
cout << " k h e t r o f o l : " ;
cout << doirgho ∗ doirgho ;
cout << endl ;
break ;

case 2 : / / িভতেরর পি পিরসীমা হেল


cout << " porishima : " ;
cout << 4∗ doirgho ;
cout << endl ;
break ;

}
default :

5g
/ / িভতেরর পি অ িকছু হেল িটবাতা
cout << " osomorthito posondo " << endl ;
break ;
in
/ / এিট িভতেরর পি থেক বাইের
cout << " borger hisab shes " << endl ;
break ;
am

case 2 : / / িভতেরর পি বৃ হেল


/ / কী পছ তা দখােনা হেব
cout << " posondo b r i t t o " << endl ;

/ / বৃে র ব াসাধ যাগান িনেত হেব


i n t bashardho ; / / চলক ঘাষণা
al

cout << " bashardho : " ;


c i n >> bashardho ;

/ / কী চাই াপণ
cout << " 1 c h a i k h e t r o f o l " << endl ;
cout << " 2 c h a i p o r i d h i " << endl ;

i n t chaokee ; / / চলক ঘাষণা


cout << " chao kee : " ; / / যাগান যাচনা
c i n >> chaokee ; / / যাগান নওয়া

/ / িভতেরর পি যিট আেরকিট পি র িভতের


switch ( chaokee ) / / কী চাই পি
{

১১৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৮. অ াি পি ব াপার (Nested Switch Cases)

case 1 : / / িভতেরর পি ফল হেল


cout << " k h e t r o f o l : " ;
cout << 3 . 1416 ∗ bashardho ∗ bashardho ;
cout << endl ;
break ;

case 2 : / / িভতেরর পি পিরিধ হেল


cout << " p o r i d h i : " ;
cout << 2 ∗ 3 . 1416 ∗ bashardho ;
cout << endl ;
break ;

default : / / িভতেরর পি অ িকছু হেল িটবাতা


cout << " osomorthito posondo " << endl ;
break ;
}
/ / এিট িভতেরর পি থেক বাইের
5g
cout << " b r i t t e r hi sab shes " << endl ;
break ;
in
default : / / বাইেরর পি অ িকছু হেল িটবাতা
cout << " osomorthito posondo " << endl ;
break ;
am

// বাইেরর পি রও বাইের
cout << " kee chomotkar ! " << endl ;

যখন akriti এর মান 1 অথাৎ বগ বেছ নয়া হেয়েছ তখন থেম ফলেন (output) দখােনা
al

হেয়েছ য বগ পছ করা হেয়েছ। তারপর চলক doirgho ঘাষনা (declare) কের যাগান
যাচনা (input prompt) কের যাগান (input) নওয়া হেয়েছ। তারপর বেগর কী জানেত চাই
তার জ আেরকিট াপণ (menu) দখােনা হেয়েছ, যখােন ফল নািক পিরসীমা চাই সটা
দখােনা হেয়েছ। ব বহারকারীর পছ যাগান নয়ার জ এখােনও keechai নােম একিট চলক
ঘাষনা কের যাগান যাচনা কের মান যাগান নয়া হেয়েছ। তারপর চলক keechai এর মােনর
ওপর িনভর কের আেরকিট পি ব াপার (switch case) ব বহার কের ফল বা পিরসীমা
ফলেন (output) দখােনা হেয়েছ। এই পি ব াপারিট আেগর পি -ব াপােরর িভতের, আর
তাই এই িভতেররিটেক বলা হেব অ াি পি ব াপার (nested switch case)।
যখন akriti এর মান 2 অথাৎ বৃ বেছ নয়া হেয়েছ তখন থেম ফলেন (output) দ-
খােনা হেয়েছ য বৃ পছ করা হেয়েছ। তারপর চলক bashardho ঘাষনা (declare) কের
যাগান যাচনা (input prompt) কের যাগান (input) নওয়া হেয়েছ। তারপর বৃে র কী জান-
ত চাই তার জ আেরকিট াপণ (menu) দখােনা হেয়েছ, যখােন ফল নািক পিরিধ চাই
সটা দখােনা হেয়েছ। ব বহারকারীর পছ যাগান নয়ার জ এখােনও chaokee নােম এক-
িট চলক ঘাষনা কের যাগান যাচনা কের মান যাগান নয়া হেয়েছ। বেগর ে ব ব ত চলক
keechai থেক িভ একিট নাম নয়ার জ ই মুলত নাম দওয়া হেয়েছ chaokee। এই েটা

১১৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৯. পি ব াপার াি (Switch Cases Breaks)

চলকই বাইেরর পি -ব াপােরর য মহ া (block) তার িভতের। একই মহ ায় েটা চলেকর


(variable) নাম একই হেত পাের না। আর স কারেণ নােমর এই িভ তা, যিদও তােদর উে
এখােন একই রকম। যাইেহাক, চলক chaokee এর মােনর ওপর িনভর কের এরপর আেরক-
িট পি ব াপার ব বহার কের ফল বা পিরিধ ফলেন (output) দখােনা হেয়েছ। এই পি
ব াপারিট (switch case) বেগর পি -ব াপােরর মেতাই বাইেরর পি ব াপারিটর িভতের, তাই
এিটও একিট অ াি পি ব াপার (nested switch case)।
এই পযােয় িজে স করেত পােরা, break; পাওয়া মা িনয় ণ (control) সই পি ব া-
পার (switch case) থেক বর হেয় আেস বেল আমরা জািন, তা িভতেরর পি ব াপার থেক
break; পেল কাথায় যাে ? উ র হে িভতেরর পি ব াপার থেক বর হেয় যখােন আস-
ব সটা িক বাইেরর পি র মহ া। িভতেরর পি থেক বর হেয় কাথায় আসেব সটা বুঝার
জ বেগর পি ব াপােরর বাইের cout << " borger hisab shes" << endl; আর বৃে র
পি ব াপােরর বাইের cout << "britter hisab shes" << endl; লখা হেয়েছ। আর বা-
ইেরর পি ব াপােরর বাইের লখা হেয়েছ cout << "kee chomotkar!" << endl;।

৭.১৯ পি ব াপার

5g
াি (Switch Cases Breaks)
পি ব াপাের (switch cases) াি (break) না িদেল কী ঘেট, আর াি না দওয়া কাথায়
কােজ লাগেত পাের? যথাযথ উদাহরণ সহ মেলখ (program) িলেখ দখাও।
ধেরা তামার একজন অিতিথ আসেব। স যিদ সকাল ১০ বা ১১টায় আেস তােক তামার
in
সকােল না া, পুেরর খাবার, আর িবকােলর না া খাওয়ােত হেব। আর স যিদ ১২টায় বা ১৩টায়
আেস তেব তােক কবল পুেরর খাবার ও িবকােলর না া খাওয়ােত হেব, আর িতিন যিদ ১৪টা বা
১৫টায় আেস তাহেল তােক কবল িবকােলর না া খাওয়ােত হেব। এই সময় েলা িভ অ কান
am

সমেয় যিদ স আেস তাহেল তােক িকছুই খাওয়ােনার দরকার নাই।


switch ( somoy )
{
case 10 :
case 11 :
cout << " s o k a l e r nasta " << endl ;
al

case 12 :
case 13 :
cout << " dupurer khabar " << endl ;
case 14 :
case 15 :
cout << " b i k a l e r nasta " << endl ;
}

উপেরর মেলখেত আমরা াি (break) ছাড়া পি ব াপার (switch case) িলেখ -


মেলখ (program) তরী কেরিছ। এখােন চলক somoy এ আমরা অিতিথর আসার সময় রা-
খেবা, সটা যাগান (input) নয়া হেয় থাকেত পাের, বা কান ভােবা আেরািপত (assigned)
হেয় থাকেত পাের। সাধারণত পি েত য ব াপারটার সােথ িমেল যায় সখান থেক িববৃিত েলা
(statement) িনবািহত হেত কের আর াি (break) পাওয়া পয চেল। আর একবার
কান ব াপােরর সােথ িমেল গেল পের আর কান ব াপােরর সােথ িমলােনার চ া করাও হয় না,
বরং াি (break) না পাওয়া পয মাগত িববৃিত েলা িনবািহত হেত থােক।

১২০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.১৯. পি ব াপার াি (Switch Cases Breaks)

খয়াল কেরা উপেরর মেলখেত (program) সময় যিদ ১০টা হয়, িঠক সখােন িকছু না
থাকেলও পরপর য িববৃিত েলা আেছ স েলা এেক এেক িনবািহত হেব, ফেল যমন sokaler
nasta, dupurer khabar, bikaler nasta সব েলা এেক এেক ফলেন আসেত থাকেব।
সময় যিদ ১১টা হয় তাহেলও একই ঘটনা ঘটেব। সময় যিদ ১২ টা হয়, তাহেল sokaler nasta
ফলেন আসেব না, িক dupurer khabar ও bikaler nasta এেক এেক আসেত থাকেব।
পেরর সময় েলার জে ও একই রকেমর কথাবাতা েযাজ ।
আর একটা িবষয় খয়াল কেরা, উপেরর পি েত (switch) আমরা অগত া ব াপার default
: দই নাই। ফেল সময় যিদ তািলকায় না থােক তাহেল সিট কান ব াপােরর (case) সােথই
িমলেব না, আর এেত ফলেন (output) িকছুই আসেব না। আসেল পি েত (switch) অগত া
(default) ব াপার িদেতই হেব এমন কান কথা নই, দরকার না লাগেল িদেব না।

switch ( nombor )
{
case 4 :
case 0 :
case 2 :
cout << " j o r " << endl ;
break ;
case 1 :
case 5 :
5g
in
case 3 :
cout << " b e j o r " << endl ;
break ;
am

এবার িকছু : পি েত কী ব াপার েলা মােনর মা সােরই থাকেত হেব? মান েলা কী
ধারাবািহকভােব পরপর সংখ া হেত হেব? উভয় ে র উ র হে "না"। কােজই িঠক উপেরর
উদাহরেণর মেতা তুিম দরকার মেতা ব াপার েলা (case) পরপর না হেলও বা উে াপা া েম
হেলও িলখেত পারেব। আবার দেখা িকছু ব াপাের (case) াি (break) নাই, আবার িকছু
al

ব াপাের আেছ। মাট কথা যখােন াি দয়া দরকার সখােন break; না দরকার হেল নাই।
আেরা িকছু : পি েত (switch) ব াপার েলা (case) কী পূণক (integer) ছাড়া ভ ক
(fractioner) হেত পারেব? আর switch() এ চলক (variable) ছাড়া অ িকছু ব বহার করা
যােব? তুিম কান ভ ক (fractioner) ব াপার িহসােব ব বহার কের দখেত পােরা, তােত সং-
কলেন (compile) িট বাতা (error message) দখােব, তার মােন হেলা পারেব না। আর
switch(nombor) এখােন switch এ য কবল চলক হেত হেব তা নয়, য কান রািশ যিট
পূণক ফলাফল দয় সিটই তুিম ব বহার করেত পােরা, যমন নীেচর উদাহরণ দেখা, আমরা ২
িদেয় ভাগেশেষর ওপর পি ব বহার করিছ। ভাগেশষ ০ হেলা জাড়, আর ১ হেল িবেজাড়।

switch ( nombor % 2 )
{
case 0 : cout << " j o r " << endl ; break ;
case 1 : cout << " b e j or " << endl ; break ;
}

১২১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২০. পি ব াপার যিদ-নাহেল (Swtich Cases If Else)

পি েত অব তুিম একই ব াপার ইবার ব বহার করেত পারেব না, যমন case 1: িল-
খ একই পি র িভতের পের আবার case 1: িলখেত পারেব না। তেব পি র িভতের অ াি
(nested) পি থাকেল সখােন case 1: থাকেতই পাের।

৭.২০ পি ব াপার যিদ-নাহেল (Swtich Cases If Else)


পি ব াপার (switch cases) ব বহার না কের যিদ নাহেল (if else) ব বহার করেলই তা হয়।
তাহেল পি ব াপার কাথায় ব বহার করেবা, আর কাথায় যিদ নাহেল ব বহার করেবা?
switch ( nombor )
{
case −2 :
case −1 :
cout << " r i n a t o k " << endl ;
break ;

case 0 :
5g
cout << " shunyo " << endl ;
break ;
in
case 1 :
case 2 :
cout << " dhonatok " << endl ;
am

break ;
}

উপেরর উদাহরণিট খয়াল কেরা। এখােন আমরা একিট ন র ধনা ক (positive), ঋণা ক
(negative), নািক (zero) িনণয় করেত চাই। আমরা যিদ আেগ থেক জািন য ন রিট ক-
বল −2, −1, 0, 1, 2 এই পাঁচিট িনিদ সংখ ার একিট হেত পারেব, অ আর িকছু নয়, এ েলার
al

বাইের নয়, কবল তাহেলই আমরা উপেরর মেতা কের পি ব াপার (switch case) ব বহার
করেত পারেবা। আবার চাইেল আমরা নীেচর মেতা কের সমতুল আেরকিট মেলখও িলখেত পা-
রেবা, যখােন আমরা পি ব াপার ব বহার না কের যিদ নাহেল (if else) ব বহার করেবা। যিদ
না হেল ব বহার কের অব আেরা নানা ভােবই এিট করা স ব, এিট কবল একটা উদাহরণ।
i f ( nombor == −2 | | nombor == −1 )
cout << " r i n a t o k " << endl ;
e l s e i f ( nombor == 1 | | nombor == 2 )
cout << " dhonatok " << endl ;
e l s e / / i f ( nombor == 0 )
cout << " shunyo " << endl ;

িক আমােদর ন রিট যিদ উপেরর ওই পাঁচিট সংখ ার বাইের অিনিদ সংখ ক ন র েলার
একিট হয়, অথবা অেনক অেনক বশী সংখ েকর একিট হয়, তাহেল িঠক পি ব বহার কের আমরা
সামলােত পারেবা না। কারণ এ সব ে ব াপােরর সংখ া (number of cases) হেব অেনক
বশী বা অসংখ । আর একিট ব াপার হেলা পি েত ব াপার েলা মুলত মান সমান == হেল কী

১২২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২১. ব াপীয় ও ানীয় চলক (Global & Local Variables)

হেব তার ওপর িভি কের তরী, অ কান ধরেনর তুলনা যমন বড় >, ছাট < ইত ািদ ব বহার
করা যায় না। ফেল পি (switch) সাধারণত ব বহার করা হয় অ িকছু সংখ ক ও িনিদ
সংখ ক ব াপােরর ে , আর এ সব ে মেলখ পড়া সহজ হেয় যায়। অ া সকল ে
সাধারণত যিদ নাহেল (if else) ব বহার করা হয় কারণ যিদ নাহেলর সােথ য কান শত বা
সংেযাজক (connectives) &&, | | , ! ব বহার কের আেরা জিটল শত ব বহার করা যায়।
i f ( nombor < 0 )
cout << " r i n a t o k " << endl ;
e l s e i f ( nombor > 0 )
cout << " dhonatok " << endl ;
e l s e / / i f ( nombor == 0 )
cout << " shunyo " << endl ;

৭.২১ ব াপীয় ও ানীয় চলক (Global & Local Variables)

5g
ানীয় চলক (local variable) কী? এর িবপরীেত ব াপীয় চলকই (global variable) বা কী?
শতালী পিরগণনায় (conditional programming) ানীয় চলেকর ব বহার দখাও।
যখন কান চলক বা বক বাঁকা ব নী যুগেলর বাইের অথাৎ য কান মহ ার বাইের থােক
তখন তােক ব াপীয় চলক (global variable) বা ব াপীয় বক (global constant) বলা
in
হয়। নীেচর মেলখেত (program) খয়াল কেরা pai আর nimnoshima য কান মহ ার
(block) বাইের, তাই এ েলা যথা েম ব াপীয় বক (global constant) ও ব াপীয় চলক
(global variable)। ব াপীয় চলক বা বক ঘাষণা করার পর থেক মেলখেয়র য কান
am

জায়গায় ব বহার করা যায়। য কান বেকর মান তা ঘাষণার সময় অব ই িদেত হয়, ব াপীয়
বেকর (global constant) মানও ঘাষণার সময়ই িদেয় িদেত হয়। আর ব াপীয় চলেকর মান
ঘাষণার সময় না িদেয় িদেল এেত অগত া (default) থােক।

িফিরি ৭.৭: ানীয় ও ব াপীয় চলকের ব বহার (Using Local & Global Variables)
#i n c l u d e <iostream>
al

#i n c l u d e <c s t d l i b>

using namespace std ;

f l o a t const p a i = 3 . 1416 ; / / ব াপীয় বক , মান িদেতই হেব


f l o a t nimnoshima = 1 . 00 ; / / ব াপীয় চলক , মান না িদেল

i n t main ( void )
{
f l o a t bashardho ; // ানীয় চলক
f l o a t const two = 2 . 0 ; // ানীয় বক

cout << " bashardho : " ;


c i n >> bashardho ;

১২৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২১. ব াপীয় ও ানীয় চলক (Global & Local Variables)

i f ( bashardho < nimnoshima )


{
cout << " nimnoshimar cheyeo kom" << endl ;
ret ur n EXIT FAILURE ;
}

f l o a t p o r i d h i = two ∗ p a i ∗ bashardho ; / / ানীয় চলক


cout << " p o r i d h i : " << p o r i d h i << endl ;

ret ur n EXIT SUCCESS ;


}

যখন কান চলক (variable) বা বক (constant) কান বাঁকা ব নী যুগল {} বা মহ ার


(block) িভতের ঘািষত হয় তখন তােক ানীয় চলক (local variable) বা ানীয় বক (local
constant) বলা হয়। উপেরর মেলখেত (program) খয়াল কেরা চলক bashardho এবং

5g
বক two উভয়ই main িবপাতেকর মহ ার িভতের ঘািষত হেয়েছ, কােজই এ েটা যথা -
ম ানীয় চলক ও ানীয় বক। ানীয় চলক বা বক য কান মহ া (block) বা উপমহ ার
(subblock) িভতের ঘািষত হেত পাের। মহ ার িভতের আবার মহ া থাকেল িভতেরর মহ া-
ক উপমহ া (subblock) বলা হয় আর বাইেরর মহ ােক বলা হয় অিধমহ া (superblock)।
য কান বেকর মান তা ঘাষণার সময়ই িদেয় িদেত হয়, ানীয় বেকর মানও তাই ঘাষণার
in
সময়ই িদেয় িদেত হেব। আর ানীয় চলেকর মান িদেয় না িদেল এটােত উ া পা া একটা মান
থাকেব। তরাং ানীয় চলক ব বহােরর পূেব অব ই এেত মান আেরাপণ (assign) কের িনেত
হেব। ানীয় চলক ও বক ঘাষণা করার পর থেক ওই মহ ার িভতের য কান খােন ব বহার
am

করা যায়, এমনিক উপমহ া বা উপউপমহ ার িভতেরও ব বহার করা যায়।


i n t cholok = 2 ; / / ব াপীয় চলক

i n t main ( )
{
al

cout << cholok << endl ; / / ব াপীয় চলেকর মান 2

i n t cholok = 3 ; / / এখন থেক ানীয় চলক


cout << cholok << endl ; / / ানীয় চলেকর মান 3
{
cout << cholok << endl ; / / অিধমহ ার চলক মান 3

i n t cholok = 5 ; / / উপমহ ার ানীয় চলক


cout << cholok << endl ; / / উপমহ ার ানীয় চলক মান 5
}
cout << cholok << endl ; // ানীয় চলেকর মান 3

// অ া িকছু এখােন থাকেত পাের , আমরা িলখিছ না


}
i n t k i s u e k t a = cholok ; / / ব াপীয় চলেকর মান 2

১২৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২১. ব াপীয় ও ানীয় চলক (Global & Local Variables)

অেনক সময় একিট ানীয় (local) চলক বা বেক নাম একিট ব াপীয় (global) চলক বা
বেকর নােমর সােথ িমেল যেত পাের। থম কথা িতিট চলক বা বেকর নাম পুেরা ম-
লখ জুেড় একক (unique) হওয়া উিচৎ, িক িবধার িবচাের অেনক সময় সটা করা স ব হয়
না। এমতাব ায় কী কের বুঝেবা ব ব ত চলক বা বকিট ব াপীয় না ানীয়? উপেরর মেলখ
(program) খয়াল কেরা, সখােন cholok নাম বারবার ব বহার কের অেন েলা চলক ঘাষণা
করা হেয়েছ, যার একিট সকল মহ ার (block) বাইের তাই ব াপীয় (global) আর অ েলা
কান না কান মহ ার িভতের তাই ানীয় চলক। এখন cholok নােমর চলকেক নানান খােন
ফলেন (output) দখােনা হেয়েছ। কথা হে নাম যেহতু একই, তা আমরা নামিট িদেয় কখন
কান চলকিটেক বুঝেবা, কখন কান মানই বা ফলেন দখেত পােবা?
খয়াল কের দেখা যখােন ব াপীয় চলকিট ঘাষনা করা হেয়েছ আর মান দওয়া হেয়েছ 2
তারপর থেক এিটর কাযকারীতা বলবৎ আেছ, মহ ার বাইের তা অব ই আেছ যমন একদম
নীেচ যখােন int kisuekta = cholok; লখা হেয়েছ। আবার মহ ার (block) িভতের া-
নীয় চলক ঘাষণার আেগ পয এিটর কাযকারীতা রেয়েছ ফেল আমরা ব াপীয় চলকিটর মানিটই
অথাৎ 2ই দখেত পােবা। তারপর মহ ার িভতের যখন একই নাম িদেয় একিট চলক ঘাষনা করা
হেয়েছ আর মান দওয়া হেয়েছ 3, তখন cholok নােমর সােথ ানীয় এই চলকিটর কাযকারীতা

5g
বলবৎ হেয়েছ, আর তা জাির আেছ মহ া শষ হওয়া পয , তাছাড়া উপমহ ার িভতের একই না-
মর আেরকিট চলক ঘাষণার আেগ পয ও তা জাির আেছ। মেলখেত (program) টীকা েলা
(comment) খয়াল কেরা। কাথায় কান মান ফলেন আসেব তা িদেয় আমরা বুঝার চ া কর-
িছ, কাথায় কান চলকিটর কাযকারীতা বলবৎ আেছ। তাহেল কান নাম কান চলকিটেক বুঝাই,
সটার জ আমােদর দখেত হেব একই মহ ার িভতের ওই নােমর কান চলক আেছ িকনা? যিদ
in
থােক সই চলকিট কাযকর আেছ। আর একই মহ ার িভতের যিদ না থােক, তাহেল আমরা িঠক
বাইেরর মহ ািট দখেবা, সখােন একই নােম কান চলক আেছ িকনা? যিদ থােক সটা বলবৎ
হেব আর তাও না থাকেল তার িঠক বাইের আেরা কান মহ া আেছ িকনা তা দখেবা।
am

i n t nombor ;
c i n >> nombor ;

/ / নীেচর vagshesh হেলা ানীয় চলক


i f ( i n t vagshesh = nombor % 3 )
al

cout << " nisheshe b i v a j y o " << endl ;


else
cout << " vagshesh " << vagshesh << endl ;

িসিপিপেত যিদ নাহেল (if else) লখার সময় যিদ { } বাঁকা ব নী যুগল ব বহার কের কান
মহ া (block) তরী করা হয়, তাহেল সই মহ ার িভতের ঘািষত য কান চলক বা বক তা
ানীয় চলক বা বক হেব। আমরা সটা আর আলাদা কের দখােত চাই না। তেব উপেরর মেলখ
খয়াল কেরা if ( int vagshesh = nombor % 3) িলেখও আমরা vagshesh নােম একিট
চলক ঘাষণা কেরিছ। এই vagshesh নােমর চলকিটও একিট ানীয় চলক (local variable)
িহসােব পিরগিণত হয়, আর এটা কাযকর থােক কবল যখােন লখা হেয়েছ সখান থেক
হেয় ওই if else মই (ladder) বা অ াি (nesting) যত ণ শষ না হে তত ণ পয , এর
বাইের কান কাযকারীতা থাকেব না, ফেল ব বহার করেল িটবাতা পােব।
যিদ নাহেল (if else) এর ে ঘািষত ানীয় (local) চলকিটর মেতা আমরা পি ব াপা-
রর (switch cases) ে ও একই ভােব ানীয় চলক ঘাষণা করেত পাির। নীেচর মেলখেত
(program) খয়াল কেরা switch ( int vagshesh = nombor % 3) িলেখ আমরা একিট
ানীয় চলক vagshesh ঘাষণা কেরিছ। এই চলকিটর কাযকারীতাও কবল ওই পি র মহ া-

১২৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

িটর িভতেরই। বাইের কাথাও এই চলকিটেক ব বহার করবার জা নই। তুিম িক পি র মহ া-


িটর িভতের চাইেল আেরা ানীয় চলক (local variable) ঘাষণা ও ব বহার করেতই পারেত।
বেকর ে ও একইরকম আেলাচনা েযাজ ।
i n t nombor ;
c i n >> nombor ;

/ / নীেচর সািরেত vagshesh ানীয় চলক


switch ( i n t vagshesh = nombor % 3 )
{
case 0 :
cout << " shunya " << vagshesh << endl ;
break ;
case 1 :
cout << " ek " << vagshesh << endl ;

}
break ;
case 2 :
5g
cout << " dui " << vagshesh << endl ;
break ;
in
৭.২২ অ শীলনী সম া (Exercise Problems)
am

ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।

১. শতািল পিরগণনা (conditional programming) কী? অ কথায় আেলাচনা কেরা।

২. যিদ if এর সােথর শত িমথ া হেল সংি নাহেলেত else িগেয় আবারও শেতর িবপরীত
al

শতিট সত িকনা পরী া করা দরকার নই। ব াখ া কেরা।

৩. যিদ নাহেল (if else) িদেয় মেলখ (program) িলখেত ছাড়ন (indentation) দয়া
পূণ কন? কার জ পূণ মা েষর জ নািক গণিনর (computer) জ ?

৪. অ য়ী অণুি য়া (relational operators) কী? এ েলা কী ধরেনর ফলাফল দয়? িস-


িপিপেত থাকা কেয়কিট অ য়ী অণুি য়ার উদাহরণ দাও।

৫. যিদ নাহেল মইেত (if else ladder) শত েলা কী ভােব সাজােব, যিদ িচ ার িবধা িব-
বচনা কেরা অথবা মেলখেয়র দ তা িবেবচনা কেরা?

৬. অ াি যিদ নাহেল (nested if else) ও যিদ নাহেল মই (if else ladder) একটা থেক
আেরকিটেত পা র স ব, উদাহরণ সহ ব াখ া কেরা।

৭. ঝুল নাহেল (dangling else) সম ািট কী? এিটর সমাধান কী কী ভােব করা যেত
পাের, উদাহরণ িদেয় আেলাচনা কেরা।

১২৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

৮. িববৃিত (empty statement) কী? কত ভােব িববৃিত দওয়া যায়?

৯. বুলক সংেযাজক েলা (Boolean connectives) কী কী, কী ভােব ফলাফল দয়?

১০. পূণক (integer) ও ভ ক (fractioner) ক সরাসির বুলক িহসােব কী ভােব ব বহার


করা যায় আেলাচনা কেরা। এেত কী িবধা হয়?

১১. বুলক শেতর (Boolean condition) আংিশক মূল ায়ন কী ও কী ভােব কাজ কের?

১২. একািধক ব াপীয় চলক (global variable ও ানীয় চলেকর (local variable) নাম
একই হেল কানটা কাযকর তা কী ভােব িনধািরত হয়?

পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয


ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

int n ;
cout <<
5g
১. নীেচর মেলখেয়র (program) ফলন (output) কী তা থেম খাতা কলেম িনণয় কেরা,
আর তারপর গণিনেত চািলেয় তার সােথ িমলাও।
/ / আিদ মান আেরাপ করা হয় িন
( n = 4 ) << endl ;
in
cout << ( n == 4 ) << endl ;
cout << ( n > 3 ) << endl ;
cout << ( n < 4 ) << endl ;
cout << ( n = 0 ) << endl ;
am

cout << ( n == 0 ) << endl ;


cout << ( n > 0 ) << endl ;
cout << ( n && 4 ) << endl ;
cout << ( n | | 4 ) << endl ;
cout << ( ! n ) << endl ;
al

২. নীেচর মেলখেত (program) িকছু গঠনগত (syntactical) ভুল আেছ। ভুলটা কাথায়
বেল তুিম মেন কেরা? ভুলটা এমন ভােব িঠক কেরা যােত এিটর ছাড়ন (indentation)
দেখ যা করেত চাওয়া হেয়িছল বেল মেন হয়, মেলখিট (program) অথেবাধকতায়
(semantically) যন একদম তাই কের।

i f ( x >= y )
j o g f o l += x ;
cout << " x boro " << endl ;
else
j o g f o l += y ;
cout << " y boro " << endl ;

৩. নীেচর মেলখ (program) চালােল কী ফলন (output) পাওয়া যােব?

১২৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

int n , k = 5 ;
n = ( 100 % k ? k + 1 : k − 1 ) ;
cout << "n = " << n << " k = " << k << endl ;

৪. নীেচর মেলখ (program) চালােল কী ফলন (output) পাওয়া যােব?


i n t paowagese = 0 , gunti = 5 ;
i f ( ! paowagese | | ++ gunti == 0 )
cout << " bipod " << endl ;
cout << " g unti = " << gunti << endl ;

৫. নীেচর মেলখেত, স বত বলা যায় য শতািল িববৃিতর (conditional statement)


একদম থম সািরেতই একটা ভুল আেছ। মেলখিট য ভােব লখা আেছ সরকম অব া-

5g
য়ই যিদ িনবাহ (execute) করা হয় তাহেল ফলন (output) কী হেব? আর যটা করেত
চাওয়া হেয়িছল বেল মেন হয় যিদ সটা করা হয় তাহেল ফলন কী হেব?
int n = 5 ;
i f ( n = 0 ) / / অণুি য়ািট খয়াল কেরা
in
cout << "n holo shunyo . " << endl ;
else
cout << "n shunyo noy " << endl ;
cout << "n er borgo " << n ∗ n << endl ;
am

৬. নীেচর শতািল িববৃিত (conditional statement) ত অেনক অ েয়াজনীয় শত আেছ।


তা সই অ েয়াজনীয় শত েলা বাদ িদেয় শতািল িববৃিতিট আবার লেখা।
f l o a t uparjon ;
al

cout << "mashe uparjon koto : " ;


c i n >> uparjon ;

i f ( uparjon < 0 )
cout << " tomar dena aro barbe . " << endl ;
e l s e i f ( uparjon >= 0 && uparjon < 1200)
cout << " tumi d a r i d r o shimar niche . " << endl ;
e l s e i f ( uparjon >= 1200 && uparjon < 2500)
cout << " tumi k i n c h i t socchol aso . " << endl ;
e l s e i f ( uparjon >= 2500)
cout << " tumi j o t h e s t o socchol . " << endl ;

৭. যিদ িভ িভ বার চালােনার সময় ০, ১৫, বা ৭ যাগান (input) দয়া হয় তাহেল নী-
চর মেলখেয়র (program) ফলন (output) কান বাের কী হেব । কত যাগান িদেল
ফলেন "biroktikor!" আসেব?

১২৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

int n ;
cout << "nombor koto : " ;
c i n >> n ;

i f ( n < 10)
cout << " 10 er choto . " << endl ;
else i f ( n > 5)
cout << " 5 er boro . " << endl ;
else
cout << " b i r o k t i k o r ! " << endl ;

৮. নীেচর অ াি যিদ নাহেল (nested if else) খয়াল কেরা। ছাড়ন (indentation) য


ভােব দয়া হেয়েছ তােত মেন হে না যা িলখেত চাওয়া হেয়েছ তা লখা হেয়েছ।
i f ( n < 10)
i f ( n > 0)

else
5g
cout << " dhonatok . " << endl ;

cout << " . " << endl ;


in
যিদ n এর মান ৭ বা ১৫ বা -৩ যাগান (input) দয়া হয় তাহেল ফলন (output)
কী হেব? িববৃিতিটর (statement) গঠন (syntax) এমন ভােব িঠক কেরা যােত ছাড়ন
am

(indentation) দওয়া থেক যমনিট িলখেত চাওয়া হেয়েছ বেল মেন হয় ফলনও িঠক
স রকম আেস। আর সে ে ােন কী হেব বেল যৗি ক মেন হয় সটাও িঠক কেরা।
অ িদেক যা লখা হেয়েছ সটা িঠকই আেছ ধের িনেয় কবল ছাড়নটা (indentation)
িঠক কেরা, আর তােত ােন কী বসােনা যথাথ হেব তাও িনণয় কেরা।

৯. িতনিট সংখ া যাগান (input) িনেয় কানিট বড়, কানিট ছাট ফলেন (output) দখাও।
al

১০. িতনিট সংখ া যাগান (input) িনেয় তােদর মেধ মােঝরিট ফলেন (output) দখাও।

১১. িতনিট সংখ া যাগান (input) িনেয় তােদরেক উধ েম সািজেয় ফলন (output) দাও।

১২. গিণেত া ন র যাগান (input) িনেয় সটা থেক বণ মান (letter grade) ফলন
দাও। ধেরা ৯০ বা বশী হেল A, ৮০ বা বশী হেল B, ৭০ বা বশী হেল C, ৬০ বা বশী
হেল D, ৫০ বা বশী হেল E, আর তারও কম হেল F বণ মান পাওয়া যায়।

১৩. একিট ি মাি ক (two dimensional) িব র ানা দওয়া আেছ, িব িট চারিট চতু-
ভােগর (quadrant) িঠক কানিটেত পড়েব িনণয় কেরা।

১৪. একিট গমণ ১, ২, ৩, ..., ৯, ১১, ২২, ৩৩, ..., ৯৯ এর ১ম পদ ১, আর ১৮ তম পদ ৯৯।


কততম পদ দখােত হেব তা যাগান (input) িনেয় পদিট ফলেন (output) দখাও।

১৫. তামােক -১০০ ও ১০০ এর মেধ িট সংখ া যাগান (input) িহসােব দওয়া হেব, তুিম
ওই িট সংখ া সহ তােদর মােঝর সকল সংখ ার যাগফল ফলেন (output) দখাও।

১২৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

১৬. একিট দ বষ অিধবষ িক না তা িনণেয়র মেলখিট (program) তুিম যিদ-নাহেল মই


(if else ladder) ব বহার কের িলখেব। তেব মেলখিট রচনা করার সময় তামােক মেন
রাখেত হেব য এিট ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হেব। কােজই
তুিম মইেয়র শত েলা এমন ভােব সাজােব যােত মেলখ ততম হয়।
১৭. বাংলা বছেরর কততম মাস তা যাগান (input) িনেয় সই মােসর নাম ও ওই মােস কত িদন
তা ফলেন (output) দখাও। একােজ পি ব াপার (switch cases) ব বহার কেরা।
১৮. কতটা বােজ সই সময় ঘ টায় যাগান (input) িনেয় মাঝরাত (১-২), ভাত (৩-৬), সকাল
(৭-১১), পুর (১২-১৪), িবকাল (১৫-১৭), স া (১৮-১৯), রাত (২০-২৮) ফলেন দ-
খাও। একােজ পি ব াপার (switch cases) ব বহার কেরা।
১৯. এমন একিট মেলখ (program) িলেখা যিট ১-৫ পয ম অ যায়ী পাঁচটা কামল
পানীেয়র (পািন, কাক, াইট, ফানটা, পপিস) নােমর তািলকা দখােব, তারপর -
িমক ন র যাগান (input) িনেয় কামল পানীয়িটর নাম ফলেন (output) দখােব। আর
িমক ন রিট যিদ ১-৫ এর বাইের হয়, তাহেল স সং া একিট িট বাতা (error

5g
message) দখােব। তুিম এই মেলখিট একবার পি ব াপার (switch cases) ব -
বহার কের আবার যিদ নাহেল (if else) ব বহার কের কেরা।
২০. একিট সংখ ার পুরক সংখ া িনণয় কেরা। সংখ াট এক অে র হেল তার পুরক সংখ ৯ এর
সােথ িবেয়াগফল, ই অে র হেল ৯৯ এর সােথ িবেয়াগফল, িতন অে র হেল ৯৯৯ এর
in
সােথ িবেয়াগফল। িতেনর চেয় বশী অে র সংখ া যাগান (input) দওয়া হেব না।
২১. এমন একিট মেলখ (program) িলেখা যটা ৫ জন লাক যােদর িমক ১-৫ তােদর ক
কতটা কের পেরাটা খেয়েছ যাগান (input) িনেব। মেলখিট তারপর একজেন সেবা
am

কয়টা পেরাটা খেয়েছ সটা ফলেন (output) দখােব। আর কান লাক সেবা সংখ ক
পেরাটা খেয়েছ মেলখিট সটাও দখােব, তেব সেবা পেরাটা খাওয়া একািধক ব ি
থাকেল থমজেনর িমক ন র হেলই চলেব, পেরর জনেদর দরকার নাই।
২২. একজন লাক াভািবক িনয়ম অ যায়ী স ােহ ৪০ ঘ টা কাজ কের, ৪০ ঘ টার বশী কাজ
করেল অিতির সময়টু র জ াভািবক িনয়েমর চেয় ১.৫ ণ মজুির পায়। কান এক
স ােহ লাকিট কত ঘ টা কাজ কেরেছ আর াভািবক িনয়েম ঘ টা িত মজুির কত তা
al

যাগান (input) িনেয় ওই স ােহ তার মাট মজুির কত তা ফলেন (output) দখাও।
২৩. ধেরা তুিম চার টুকেরা কাগজ িনেয়েছা। তামার ১ম টুকেরােত লখা আেছ ১, ৩, ৫, ৭, ৯,
১১, ১৩, ২য় টুকেরােত আেছ ২, ৩, ৬, ৭, ১০, ১১, ১৪, ১৫, ৩য় টুকেরােত আেছ ৪, ৫,
৬, ৭, ১২, ১৩, ১৪, ১৫, ৪থ টুকেরােত আেছ ৮, ৯, ১০, ১১, ১২, ১৩, ১৪, ১৫। তামার
মেলখ (program) ব বহারকারী মেন মেন একিট সংখ া ধরেব, আর সিট ১ম, ২য়,
৩য়, ৪থ টুকেরার কান কানিটেত আেছ যাগান (input) িদেব, তারপর তামার মেলখ
ব বহারকারী মেন মেন য সংখ ািট ধেরেছ সিট ফলেন (output) দখােব। এিট খুব সহজ
একিট ব াপার। য য টুকেরােত সংখ ািট আেছ ওই টুকেরা েলার থম সংখ া েলা যাগ
করেলই ব বহারকারীর সংখ ািট পাওয়া যােব। যমন ব বহারকারীর সংখ ািট যিদ ১, ৩, ৪
ন র টুকেরােত থােক তাহেল সংখ ািট ১ + ৪ + ৮ = ১৩।

পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন কবল
একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১৩০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

১. নীেচর মেলখেয়র (program) ফলন (output) কী তা থেম খাতা কলেম িনণয় কেরা,
আর তারপর গণিনেত চািলেয় তার সােথ িমলাও।
int n ; / / আিদ মান আেরাপ করা হয় িন
cout << ( n = 4 ) << endl ;
cout << ( n == 4 ) << endl ;
cout << ( n > 3 ) << endl ;
cout << ( n < 4 ) << endl ;
cout << ( n = 0 ) << endl ;
cout << ( n == 0 ) << endl ;
cout << ( n > 0 ) << endl ;
cout << ( n && 4 ) << endl ;
cout << ( n | | 4 ) << endl ;
cout << ( ! n ) << endl ;

4
1
1
0
0
//
//
//
//
//
আেরাপণ হেব 4
মান আসেলই তা 4
কােজই 3 এর বশী 5g
4 এর সমান , কম তা নয়
আেরাপন হেব 0
in
1 // মান 0 এর সমান , সত
0 // মান তা 0 , বশী তা নয়
0 // 0 হেলা িমথ া তাই ফলাফল িমথ া
am

1 // 4 যেহতু সত , তাই ফলাফল সত


1 // 0 িনেজ িমথ া তাই ! 0 সত

২. নীেচর মেলখেত (program) িকছু গঠনগত (syntactical) ভুল আেছ। ভুলটা কাথায়
বেল তুিম মেন কেরা? ভুলটা এমন ভােব িঠক কেরা যােত এিটর ছাড়ন (indentation)
al

দেখ যা করেত চাওয়া হেয়িছল বেল মেন হয়, মেলখিট (program) অথেবাধকতায়
(semantically) যন একদম তাই কের।
i f ( x >= y )
j o g f o l += x ;
cout << " x boro " << endl ;
else
j o g f o l += y ;
cout << " y boro " << endl ;

উপেরর মেলখেত ছাড়ন দেখ মেন হয় যিদর শত সত হেল বা িমথ া হেল উভয় ে
িঠক তােদর পেরর ই সািরেত থাকা িববৃিত েলা িনবািহত (executed) হেব। িক একা-
িধক িববৃিত যিদ িনবাহ করেত হয় সে ে আমােদর নীেচর মেলখেয়র মেতা কের বাঁকা
ব নী িদেয় যৗিগক িববৃিত (compound statement) বািনেয় িনেত হেব। বাঁকা ব নী
না দয়ায় উপেরর মেলখিট সংকলন (compile) করেত গেল িট দখােব। িট টা

১৩১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

হল সংি if সােপে else টা িঠক জায়গায় নাই। যিদ else টা cout << "x boro"
<< endl; এর আেগ থােক তাহেল গঠনগত (syntactically) ভােব হয়, িক তােত
অব আমরা যা করেত চাই তা হেতা না।
i f ( x >= y )
{
j o g f o l += x ;
cout << " x boro " << endl ;
}
else
{
j o g f o l += y ;
cout << " y boro " << endl ;
}

৩. নীেচর
int n , k = 5 ;
5g
মেলখ (program) চালােল কী ফলন (output) পাওয়া যােব?

n = ( 100 % k ? k + 1 : k − 1 ) ;
cout << "n = " << n << " k = " << k << endl ;
in
উপেরর মেলখেয়র ফলন নীেচ দখােনা হেলা। েত k এর মান আেরাপণ (assign)
করা হেলা 5। তারপর 100 যেহতু 5 ারা িবভাজ তাই 100 % k হেব যাহা বুলক
(Boolean) িহসােব ধরেল িমথ া, ফেল িতিনক অণুি য়ার (ternerary operator)
am

শেষর অংশ k − 1 অথাৎ 4 হেব ফলাফল যা n চলেক (variable) আেরািপত (assign)


হেব। সবিমিলেয় n হেলা 4 আর k েত যা িছেলা তাই অথাৎ 5।
n = 4 k = 5

৪. নীেচর মেলখ (program) চালােল কী ফলন (output) পাওয়া যােব?


al

i n t paowagese = 0 , gunti = 5 ;
i f ( ! paowagese | | ++ gunti == 0 )
cout << " bipod " << endl ;
cout << " g unti = " << gunti << endl ;

উপেরর মেলখেয়র ফলন (output) নীেচ দখােনা হেলা। চলক paowagese এর


মান 0 অথ াৎ িমথ া, ফেল !paowagese হেলা সত , আর তাই অথবা | | এর ফলাফ-
লও সত । ল কেরা এই ফলাফল িনধারেণ আমােদর িক | | এর পেরর অংশ িনবাহ
(execute) করার দরকারই নাই। আংিশক মূল ায়েনর (partial evaluation) কার-
ণ এিট ঘটেব। তাহেল | | এর ফলাফল সত আসায় ফলেন আসেব "bipod"। আর ++
gunti যেহতু িনবািহতই হয় িন, তাই gunti এর মান 5 ই দখােবা।
bipod
g un t i = 5

১৩২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

৫. নীেচর মেলখেত, স বত বলা যায় য শতািল িববৃিতর (conditional statement)


একদম থম সািরেতই একটা ভুল আেছ। মেলখিট য ভােব লখা আেছ সরকম অব া-
য়ই যিদ িনবাহ (execute) করা হয় তাহেল ফলন (output) কী হেব? আর যটা করেত
চাওয়া হেয়িছল বেল মেন হয় যিদ সটা করা হয় তাহেল ফলন কী হেব?
int n = 5 ;
i f ( n = 0 ) / / অণুি য়ািট খয়াল কেরা
cout << "n holo shunyo . " << endl ;
else
cout << "n shunyo noy " << endl ;
cout << "n er borgo " << n ∗ n << endl ;

উপেরর মেলখেয়র ২য় সািরেত আেরাপন (assignment) = অণুি য়া ব বহার করা


হেয়েছ, সাধারণেতা শত পরী ার জ সমান (equal) == অণুি য়া ব বহার করা হয়।
তরাং এিট স বত একটা ভুল যটা ায়শই আমােদর হেয় থােক। যাই হাক মেলখিট

ি য়ার ফলাফলও হেব


5g
যমন আেছ তমিন চালােল আেরাপেণর ফেল n এর মান হেব আর আেরাপণ অণু-
, যা বুলক মান (Boolean value) িহসােব িমথ া। তরাং
else অংেশ থাকা িববৃিতটু িনবািহত হেব, আর আমরা ফলেন পােবা n shunyo noy।
িবষয়িট কমন যন গালেমেল তাই না, একিদেক n এর মান আসেলই
িদেক ফলন দখাে n নয়! যাইেহাক n এর মান
, িক অ
আেরাপেণর ফেল if else এর
in
পেরর সািরেত থাকা cout এর কারেণ ফলেন আসেব n er borgo 0। এই ফলন েলা
নীেচ বামিদেক দখােনা হেলা, আর ডান িদেক রেয়েছ আেরাপণ (assignment) = না
িলেখ আমরা যিদ সমান (equality) == িলিখ তাহেল ফলন (output) কী হেব তা। ল
am

এবাের n এর মান িক 5ই থাকেছ যা আিদ আেরাপণ করা হেয়েছ। ফেল n == 0 িমথ া


হওয়ায় আেগর মেতাই n shunyo noy দখােব আর পেরর সািরেত 5 এর বগ হেব 25,
কােজই ফলেন আসেব n er borgo 25।
n shunyo noy n shunyo noy
n er borgo 0 n er borgo 25
al

৬. নীেচর শতািল িববৃিত (conditional statement) ত অেনক অ েয়াজনীয় শত আেছ।


তা সই অ েয়াজনীয় শত েলা বাদ িদেয় শতািল িববৃিতিট আবার লেখা।
f l o a t uparjon ;
cout << "mashe uparjon koto : " ;
c i n >> uparjon ;

i f ( uparjon < 0 )
cout << " tomar dena aro barbe . " << endl ;
e l s e i f ( uparjon >= 0 && uparjon < 1200)
cout << " tumi d a r i d r o shimar niche . " << endl ;
e l s e i f ( uparjon >= 1200 && uparjon < 2500)
cout << " tumi k i n c h i t socchol aso . " << endl ;
e l s e i f ( uparjon >= 2500)
cout << " tumi j o t h e s t o socchol . " << endl ;

১৩৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

অদরকারী শত েলা ছাড়া মেলখ (program) কমন হেব তা নীেচ দখােনা হেলা। যিদ
uparjon < 0 এই শত িমথ া হয়, তাহেল অব ই uparjon >=0 সত হেব। কােজই
যিদ নাহেল মইেত (if else ladder) নাহেলর সােথ য যিদ থাকেব সখােন uparjon >
=0 আবার লখার কান দরকার নই। িনয় ণ (control) ওইখােন যাওয়া মােন ওই শত
অব ই সত আর এবং (and) && অণুি য়ার (operator) একিট উপাদান (operand)
সত হেল ফলাফল কবল ি তীয় উপাদােনর ওপর িনভর কের। তরাং আমরা সরলীকরণ
কের কবল && এর ি তীয় উপাদানিটেকই িলখেবা। এই একই ভােব uparjon >=
1200 আর uparjon >= 2500 লখার কান দরকার নাই।
f l o a t uparjon ;
cout << "mashe uparjon koto : " ;
c i n >> uparjon ;

i f ( uparjon < 0 )
cout << " tomar dena aro barbe . " << endl ;

5g
e l s e i f ( uparjon < 1200) / / >= 0 দরকার নই
cout << " tumi d a r i d r o shimar niche . " << endl ;
e l s e i f ( uparjon < 2500) / / >= 1200 দরকার নই

else
cout << " tumi k i n c h i t socchol aso . " << endl ;
/ / >= 2500 দরকার নই
in
cout << " tumi j o t h e s t o socchol . " << endl ;

৭. যিদ িভ িভ বার চালােনার সময় ০, ১৫, বা ৭ যাগান (input) দয়া হয় তাহেল নী-
am

চর মেলখেয়র (program) ফলন (output) কান বাের কী হেব । কত যাগান িদেল


ফলেন "biroktikor!" আসেব?
int n ;
cout << "nombor koto : " ;
c i n >> n ;
al

i f ( n < 10)
cout << " 10 er choto . " << endl ;
else i f ( n > 5)
cout << " 5 er boro . " << endl ;
else
cout << " b i r o k t i k o r ! " << endl ;

যাগান (input) িহসােব 0, 15, 7 িদেল, উপেরর মেলখ কী ফলন (output) দেব তা
নীেচ ৩ ে দখােনা হেলা। এই মেলখ n এর কান মােনর জ ই biroktikor! ফলন
িদেব না, িনয় ণ (control) কান অব ােতই সংি িববৃিতেত যােব না। তরাং else
cout << "biroktikor!" << endl; অংশটু পুেরাপুির অদরকারী আর স কারেণ
মুেছ দয়া যায়, তােত মেলখেয়র বিশে কান ভাব পড়েব না।
nombor koto : 0 nombor koto : 15 nombor koto : 7
10 er choto . 5 er boro . 10 er choto .

১৩৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

৮. নীেচর অ াি যিদ নাহেল (nested if else) খয়াল কেরা। ছাড়ন (indentation) য


ভােব দয়া হেয়েছ তােত মেন হে না যা িলখেত চাওয়া হেয়েছ তা লখা হেয়েছ।
i f ( n < 10)
i f ( n > 0)
cout << " dhonatok . " << endl ;
else
cout << " . " << endl ;

যিদ n এর মান ৭ বা ১৫ বা -৩ যাগান (input) দয়া হয় তাহেল ফলন (output)


কী হেব? িববৃিতিটর (statement) গঠন (syntax) এমন ভােব িঠক কেরা যােত ছাড়ন
(indentation) দওয়া থেক যমনিট িলখেত চাওয়া হেয়েছ বেল মেন হয় ফলনও িঠক
স রকম আেস। আর সে ে ােন কী হেব বেল যৗি ক মেন হয় সটাও িঠক কেরা।
অ িদেক যা লখা হেয়েছ সটা িঠকই আেছ ধের িনেয় কবল ছাড়নটা (indentation)
িঠক কেরা, আর তােত ােন কী বসােনা যথাথ হেব তাও িনণয় কেরা।
i f ( n < 10)
i f ( n > 0)
5g
cout << " dhonatok . " << endl ;
else
in
cout << " . " << endl ;

দ মেলখিট (program) লখার সময় এমন ভােব ছাড়ন (indentation) দয়া


am

হেয়েছ য মেন হে else অংশটু থম if এর শত n < 10 িমথ া হেল কাযকর হেব।


িক িসিপিপ ভাষায় ছাড়ন বা ফাঁকা দয়া না দয়া গণিনর (computer) জ কান ব াপার
নয়। আর ঝুল নাহেলর (dangling else) আেলাচনা থেক আমরা জািন এই else িট
তার িনকটতম পূববতী এমন একিট if এর সােথ সংি য if এর সােথ আর কান else
জুেড় দয়া হয় িন। কােজই, সই িহসােব িঠক উপের যমনিট দখােনা হেলা, সভােব এই
else িট ি তীয় if এর শত n > 0 িমথ া হেল কাযকর হেব।
al

dhonatok . কান ফলন নাই .

এমতাব ায় এই মেলখ চালােল আমরা ৭, ১৫, বা -৩ যাগান (input) িদেয় য ফলন


(output) পােবা তা উপেরর িতনিট ে দখােনা হেয়েছ। ল কেরা ১৫ যাগান িদেল
আমরা কান ফলন আসেল পােবা না, কারণ n < 10 শেতর কান else নই। আর -
ানিট ফলেন আেস যখন সংখ ািট ে র সমান বা কম হয় অথাৎ অধনা ক
হয়। আমরা তাহেল এর ােন িলখেত পাির odhonatok।
i f ( n < 10)
{
i f ( n > 0)
cout << " dhonatok . " << endl ;
}
else
cout << " . " << endl ;

১৩৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

ছাড়ন (indentation) দয়া দেখ যমন মেন হয়, মেলখিট (program) সই অ -


যায়ী সংেশাধন করেল িঠক উপেরর মেতা কের বাঁকা ব নী ব বহার করেত হেব। সে ে
ান অংশিট ফলেন আসেব যখন n সংখ ািট ১০ এর বড় বা সমান, যমন ধেরা ১৫।
এে ে আমরা তাই এর বদেল িলখেত পাির "10 ba boro"। এবার খয়াল
কেরা n এর মান যখন এর বশী িক ১০ এর কম যমন ৭, তখন িক আমরা ফলন
পােবা dhonatok, আর বা কম হেল কান ফলনই পােবা না।

৯. িতনিট সংখ া যাগান (input) িনেয় কানিট বড়, কানিট ছাট ফলেন (output) দখাও।

িফিরি ৭.৮: িতনিট সংখ ার বড়- ছাট (Small and Big of Three Numbers)
int a , b , c ; / / চাইেল ভ কও িনেত পােরা
cout << " sokhya t i n t i koto ? " ;
c i n >> a >> b >> c ; / / যাগান নাও

i n t boro , soto ; // চলক ঘাষণা


i f (a > b)

else 5g
boro = a , soto = b ;

boro = b , soto = a ;
i f ( boro < c )
//

//

//
a যিদ বড় হয় b এর চেয়

b যিদ বড় হয় a এর চেয়

c যিদ boro এর চেয় বড় হয়


in
boro = c ;
e l s e i f ( soto > c ) // c যিদ soto এর চেয় ছাট হয়
soto = c ;
am

cout << " boro " << boro << " " ;
cout << " soto " << soto << endl ;

উপেরর মেলখ খয়াল কেরা। থম িট সংখ া a ও b ক তুলনা কের বড় ও ছাট িনধারণ


করা হয়েছ। তারপর c ক তুলনা করা হেয়েছ সটা আেরা বড় িকনা দখেত, যিদ তা না
al

হয় তাহেল সটা আেরা ছাট িকনা সটা পরী া করা হেয়েছ। ল কেরা c ক তুলনা করা
সময় একটা else লাগােনা হেয়েছ, কারণ boroর বড় হেল তা আর sotoর ছাট িকনা
পরী া করার দরকার নই। তুিম িক চাইেল নীেচর মেতা কেরও মেলখ িলখেত পােরা।
থেম ধের নাও তামার সংখ া একটাই কােজই aই বড়, আবার aই ছাট। এরপর তােদর
সােথ b ক তুলনা কেরা। আর শেষ তােদর সােথ c ক তুলনা কেরা।
i n t boro = a , soto = a ; / / ধের নই a−ই বড় ও ছাট
i f ( boro < b ) / / b যিদ তার চেয়ও বড় হয়
boro = b ;
e l s e i f ( soto > b ) / / b যিদ তার চেয়ও ছাট হয়
soto = b ;
i f ( boro < c ) / / c যিদ তার চেয়ও বড় হয়
boro = c ;
e l s e i f ( soto > c ) / / c যিদ তার চেয়ও ছাট হয়
soto = c ;

১৩৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

১০. িতনিট সংখ া যাগান (input) িনেয় তােদর মেধ মােঝরিট ফলেন (output) দখাও।

িফিরি ৭.৯: িতনিট সংখ ার মধ ক (Median of Three Numbers)


/ / ধেরা চলক িতনিট a , b , c ঘাষণা কের যাগান নয়া হেয়েছ

i f (a > b) // ম হেলা a > b


if (c > a) // ম হেলা c > a > b
cout << a << endl ;
else i f (b > c ) // ম হেলা a > b > c
cout << b << endl ;
else // ম হেলা a >= c >= b
cout << c << endl ;
else // ম হেলা a <= b
if (c < a) // ম হেলা c < a <= b
cout << a << endl ;
else i f c > b)
cout << b << endl ;
else
cout << c << endl ;
5g
//

//
ম হেলা a <= b < c

ম হেলা a <= c <= b


in
উপেরর মেলখেত থেম a ও b তুলনা করা হেয়েছ। তারপর c তােদর বড়িটর চেয় বড়
িকনা, নাহেল ছাটিটর চেয় ছাট িকনা পরী া করা হেয়েছ, আর তাও না হেল সিট উভ-
য়র মাঝামািঝ। এভােব িতনিট সংখ ার ম জানা হেয় গেল মােঝরিট ফলেন (output)
am

দখােনা হেয়েছ। এিট অ াি (nesting) ও মইেয়র (ladder) চমৎকার উদাহরণ।

১১. িতনিট সংখ া যাগান (input) িনেয় তােদরেক উধ েম সািজেয় ফলন (output) দাও।

িফিরি ৭.১০: িতনিট সংখ ার উধ ম (Three Numbers in Ascending Order)


/ / ধেরা চলক িতনিট a , b , c ঘাষণা কের যাগান নয়া হেয়েছ
al

i f (a > b) // ম হেলা a > b


if (c > a) // ম হেলা c > a > b
cout << b << " " << a << " " << c << endl ;
else i f (b > c ) // ম হেলা a > b > c
cout << c << " " << b << " " << a << endl ;
else // ম হেলা a >= c >= b
cout << b << " " << c << " " << a << endl ;
else // ম হেলা a <= b
if (c < a) // ম হেলা c < a <= b
cout << c << " " << a << " " << b << endl ;
else i f c > b) // ম হেলা a <= b < c
cout << a << " " << b << " " << c << endl ;
else // ম হেলা a <= c <= b
cout << a << " " << c << " " << b << endl ;

১৩৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

উপেরর মেলখেত থেম a ও b তুলনা করা হেয়েছ। তারপর c তােদর বড়িটর চেয়
বড় িকনা, নাহেল ছাটিটর চেয় ছাট িকনা পরী া করা হেয়েছ, আর তাও না হেল সিট
উভেয়র মাঝামািঝ। এভােব িতনিট সংখ ার ম জানা হেয় গেল তােদর মােনর উধ েম
(ascending order) ফলেন (output) দখােনা হেয়েছ। এিট যিদ নাহেলর (if else)
অ াি (nesting) ও মইেয়র (ladder) এক সােথ ব বহােরর চমৎকার উদাহরণ।

১২. গিণেত া ন র যাগান (input) িনেয় সটা থেক বণ মান (letter grade) ফলন
দাও। ধেরা ৯০ বা বশী হেল A, ৮০ বা বশী হেল B, ৭০ বা বশী হেল C, ৬০ বা বশী
হেল D, ৫০ বা বশী হেল E, আর তারও কম হেল F বণ মান পাওয়া যায়।

িফিরি ৭.১১: ন র হেত বণমান (Letter Grades from Numbers)


cout << " gonite nombor koto ? " ;
i n t nombor ; c i n >> nombor ;

i f ( nombor >= 90)

5g
cout << "bornoman A"
e l s e i f ( nombor >= 80)
cout << "bornoman B"
e l s e i f ( nombor >= 70)
cout << "bornoman C"
<< endl ;

<< endl ;

<< endl ;
in
e l s e i f ( nombor >= 60)
cout << "bornoman D" << endl ;
e l s e i f ( nombor >= 50)
am

cout << "bornoman E " << endl ;


e l s e / / ৫০ এর ছাট
cout << "bornoman F " << endl ;

উপেরর মেলখ পি ব াপার (switch cases) িদেয় করা স ব নয়, কারন এখােন >=
তুলনা ব বহার করেত হেব। পি ব াপার কবল সমান == তুলনায় ব বহার করা যায়।
al

১৩. একিট ি মাি ক (two dimensional) িব র ানা দওয়া আেছ, িব িট চারিট চতু-
ভােগর (quadrant) িঠক কানিটেত পড়েব িনণয় কেরা।
এই মেলখেত (program) আমরা কবল চতুভাগ (quadrant) িবেবচনা না কের বরং,
িব িট কান অে র ওপের িকনা, হেল ধনা ক িদেক না ঋণা ক িদেক, অথবা ানাংকের
মূল িব েত িকনা তাও িবেবচনা করেবা। য কান একিট দ িব র x বা y েটাই
আলাদা আলাদা ভােব ধনা ক বা ঋণা ক বা এই িতন রকম হেত পাের। কােজই
একসােথ িবেবচনা করেল আমরা মাট নয় রকম সমােবশ (combination) পােবা।

িফিরি ৭.১২: িব র চতুভাগ িনণয় (Quadrant of a Point)


float x , y ;
cout << " bhuj x ? " ;
c i n >> x ;
cout << " k o t i y ? " ;
c i n >> y ;

১৩৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

i f ( x > 0)
i f ( y > 0)
cout << " prothom choturvag " << endl ;
else i f ( y < 0)
cout << " choturtho choturvag " << endl ;
else // y
cout << " dhonatok x okkher opor " << endl ;
else i f ( x < 0)
i f ( y > 0)
cout << " d i t i y o choturvag " << endl ;
else i f ( y < 0)
cout << " t r i t i y o choturvag " << endl ;
else
cout << " r i n a t o k x okkher opor " << endl ;
else // x
i f ( y > 0)
5g
cout << " dhonatok y okkher opor " << endl ;
else i f ( y < 0)
cout << " r i n a t o k y okkher opor " << endl ;
in
else // y
cout << " sthananker mul bindu " << endl ;
am

১৪. একিট গমণ ১, ২, ৩, ..., ৯, ১১, ২২, ৩৩, ..., ৯৯ এর ১ম পদ ১, আর ১৮ তম পদ ৯৯।


কততম পদ দখােত হেব তা যাগান (input) িনেয় পদিট ফলেন (output) দখাও।
cout << " kototom pod : " << endl ;
i n t n ; c i n << n ;
al

i f ( n < 0)
cout << " p a l l a r b a i r e " << endl ;
e l s e i f ( n <= 9 ) / / এক অে র সংখ া
cout << n << endl ;
e l s e i f ( n <= 18) / / ই অে র সংখ া
cout << ( ( n−9 ) ∗ 11) << endl ;
else
cout << " p a l l a r b a i r e " << endl ;

১৫. তামােক -১০০ ও ১০০ এর মেধ িট সংখ া যাগান (input) িহসােব দওয়া হেব, তুিম
ওই িট সংখ া সহ তােদর মােঝর সকল সংখ ার যাগফল ফলেন (output) দখাও।
নীেচর সংি মেলখ (program) দখােনা হেলা। য সংখ া িট যাগান (input) নয়া
হেব, স েলা অব ই -১০০ ও ১০০ এর িভতের হেত হেব। আমরা তাই আেগ পরী া
কের দখেবা। যিদ n1 বা n2 য কানিট −100 এর ছাট বা 100 এর বড় হয়, তাহেল

১৩৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

িট বাতা (error message) দিখেয় িবফল হেয় িনয় ণ ফরত যােব। খয়াল কেরা
আমােদর িক শত েলােক অথবা | | িদেয় যু করেত হেব।
cout << " sonkhya d u t i koto ? " ; / / যাচনা
i n t n1 , n2 ; c i n >> n1 >> n2 ; / / যাগান

/ / −১০০ ও ১০০ এর মেধ িকনা পরী া করেত হেব


i f ( n1 < −100 | | n1 > 100 | |
n2 < −100 | | n2 > 100)
{
cout << " sonkhya p a l l a r b a i r e " << endl ;
ret u rn EXIT FAILURE ;
}

int s , n ; / / ( থম পদ + শষ পদ ) আর পদসংখ া

s = n1 + n2 ;

i f ( n1 > n2 )
//
5g থম পদ + শষ পদ।

/ / কানটা ছাট কানটা বড়


n = n1 − n2 + 1 ; / / পদসংখ া
in
else
n = n2 − n1 + 1 ; / / পদসংখ া
am

cout << " j o g f o l " << s ∗n / 2 ; / / ফলন

এবার আমরা জািন কান সমা র গমেণর সংখ া েলার যাগফল হেলা ( থম সংখ া +
শষ সংখ া) * পদসংখ া / 2। সংখ া েটা যাগান নয়ার সময় ব বহারকারী য কানিটেক
আেগ যাগান িদেত পাের, মােন কানটা বড় কানটা ছাট আমরা িনি ত থাকেবা না।
( থম সংখ া + শষ সংখ া) এই যাগফল s বর করেত এেত কান সম া হেব না, তেব
al

পদসংখ া n বর করেত গেল আমােদর জানেত হেব কানটা বড় কানটা ছাট। ধেরা ৭
আর ১৩ িনেজেদর সহ তােদর মেধ কয়টা সংখ া আেছ সটা বর করা যায় ১৩ - ৭ + ১
িহসাব কের, যখােন ১৩ হেলা বড় আর ৭ হেলা ছাট। তা n1 আর n2 এর িনেজেদর সহ
তােদর মােঝ মাট কয়িট সংখ া আেছ তা বর করেত আমােদর জানেত হেব কানিট বড়।
তা আমরা একিট যিদ নাহেল (if else) ব বহার কের দখেবা n1 > n2 িকনা, যিদ হয়
তাহেল পদসংখ া n1 − n2 + 1 আর যিদ না হয় তাহেল পদসংখ া হেব n2 − n1 + 1।
সবেশেষ যাগফল হেলা s ∗ n / 2 আমরা যটা ফলেন (output) দখােবা।

১৬. একিট দ বষ অিধবষ িক না তা িনণেয়র মেলখিট (program) তুিম যিদ-নাহেল মই


(if else ladder) ব বহার কের িলখেব। তেব মেলখিট রচনা করার সময় তামােক মেন
রাখেত হেব য এিট ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হেব। কােজই
তুিম মইেয়র শত েলা এমন ভােব সাজােব যােত মেলখ ততম হয়।
যিদ ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হয় তাহেল আমরা থেম
েত ক রকেমর সােলর িহসাব কির। মাটামুিট িত চারিট সােলর িতনিট অিধবষ নয়,
একিট অিধবষ। কােজই সবেচেয় বশী সংখ ক ২০০০ / ৪ * ৩ = ১৫০০ িট সাল আেছ য

১৪০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

েলা ৪ িদেয় িবভাজ হয় না, এ েলার কানিটই অিধবষ নয়। বাঁকী ৫০০ িট সাল ৪ িদেয়
িবভাজ । এেদর মেধ য েলা ১০০ িদেয় িবভাজ নয় যমন ১৯৯৬ এমন ২০িট ছাড়া বাঁকী
৪৮০ িট অিধবষ। আর ওই ২০িট সােলর মেধ য ১৫িট ৪০০ িদেয় িবভাজ নয় স েলা
অিধবষ নয়, আর বাঁকী ৪িট সাল য েলা ৪০০ িদেয় িবভাজ স েলা অিধবষ।
i f ( bosor % 4 ! = 0 ) / / ৪ িদেয় িবভাজ নয়
cout << " odhiborsho noy " << endl ;
e l s e i f ( bosor % 100 ! = 0 ) / / ১০০ িদেয় িবভাজ নয়
cout << " odhiborsho hoy " << endl ;
e l s e i f ( bosor % 400 ! = 0 ) / / ৪০০ িদেয় িবভাজ নয়
cout << " odhiborsho noy " << endl ;
e l s e / / i f ( bosor % 400 = 0 ) ৪০০ িদেয় িবভাজ
cout << " odhiborsho hoy " << endl ;

ততম গিতর মেলখেয়র (program) জ য রকেমর সাল সবেচেয় বশী স েলা িন-

5g
ণয় করেত সবেচেয় কম সংখ ক শত পরী ণ ব বহার করেত হেব। কােজই আমরা ১৫০০
সাল য েলা ৪ িদেয় িবভাজ নয় স েলােক থম শত পরী া কেরই বর করেত চাই-
বা। উপেরর মেলখ খয়াল কেরা, আমরা তাই কেরিছ। এরপের রেয়েছ য ৪৮০িট বছর
য েলা ৪ িদেয় িবভাজ িক ১০০ িদেয় িবভাজ নয়। আমরা এ েলােক ইবার শত পরী-
া কের বর করেত চাই। একটা শত হে ৪ িদেয় িবভাজ নাহওয়া কােজই থম শেতর
in
else িহসােব থাকেব সটা, আেরকিট শত হেলা ১০০ িদেয় িবভাজ না হওয়া। উপেরর -
মেলখেয়র যিদ নাহেল মইেত (if else ladder) দেখা else if িদেয় এটা করা হেয়েছ।
এরপর থােক ১৫ িট সাল য েলা ১০০ িদেয় িবভাজ িক ৪০০ িদেয় িবভাজ নয় এই
am

১৫ িট সাল, এ েলা িনণয় করা হেয়েছ আেরকিট else if লািগেয় অথাৎ মাট িতনিট শত
পরী ণ শেষ। আর সবেশেষ ৪০০ িদেয় িবভাজ সই সাল েলা এেসেছ সবেশেষর else
িদেয়, এ েলার জ িতনিট শত পরী ণই লেগেছ, কারণ শেষর শত িমথ া হেলই তা
এ েলা িনণীত হেব। তাহেল মাট শত পরী া লাগেলা কত েলা? ১৫০০ * ১ + ৪৮০ *
২ + ১৫ * ৩ + ৫ * ৩ = ২৫২০ িট। তুিম আেরা নানান ভােব চ া কের দখেত পােরা, এর
চেয় কম শত পরী া কের করেত পােরা িকনা! পারেব না!
al

i f ( bosor % 4 ! = 0 | |
( bosor % 100 == 0 && bosor % 400 ! = 0 ) )
cout << " odhiborsho noy " << endl ;
else
cout << " odhiborsho hoy " << endl ;

একই মেলখ আমরা যিদ নাহেল মই (if else ladder) ব বহার না কের িঠক উপেরর -
মেলখেয়র মেতা বুলক সংেযাজক (Boolean connective) ব বহার কের করেত পাির।
বুলক সংেযাজেকর আংিশক মূল ায়ন (partial evaluation) মেন আেছ? অথবা | | -
য কান একিট উপাদান (operand) সিত হেলই অ িট মূল ায়ন ছাড়াই আমরা ফলা-
ফল সত বেল ধের িনেত পাির। আর && এর ে য কান একিট উপাদান (operand)
িমথ া হেলই ফলাফল িমথ া বেল ধের নয়া যায়। কান সাল অিধবষ নয় যখন সালিট ৪
ারা িবভাজ নয় অথবা ১০০ ারা িবভাজ হেলও ৪০০ ারা িবভাজ নয় তখন। যিদর
সােথ শত িহসােব সিটই লাগােনা হেয়েছ দেখা। অ িদেক কান সাল অিধবষ হেত গেল
| | এর ফলাফল িমথ া হেত হেব, তারমােন বাম ও ডােনর উভয় উপাদান (operand)

১৪১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

িমথ া হেত হেব অথাৎ bosor % 4 == 0 এবং (bosor % 100 == 0 && bosor %
400 != 0) িমথ া হেত হেব। এখােন bosor % 4 == 0 িমথ া হওয়া মােন বছরিট ৪ ারা
িবভাজ হওয়া আর (bosor % 100 == 0 && bosor % 400 != 0) িমথ া হেত গ-
ল && এর পােশর যেকান একিট িমথ া হেলই হেব। তা (bosor % 100 == 0 িমথ া
হওয়া মােন বছরিট ১০০ ারা িবভাজ না হওয়া আর bosor % 400 != 0 িমথ া হওয়া
মােন ৪০০ িদেয় িবভাজ হওয়া।

১৭. বাংলা বছেরর কততম মাস তা যাগান (input) িনেয় সই মােসর নাম ও ওই মােস কত িদন
তা ফলেন (output) দখাও। একােজ পি ব াপার (switch cases) ব বহার কেরা।

িফিরি ৭.১৩: বাংলা মােসর নাম (Bengali Month Names)


i n t mash ; c i n >> mash ; / / চাইেল যাচনা করেত পােরা

switch ( mash )
{

5g
case 1 : cout << " boishakh 31 " << endl ; break ;
case 2 : cout << " j o i s t h o 31 " << endl ; break ;
case 3 : cout << " ashar 31 " << endl ; break ;
case 4 : cout << " shrabon 31 " << endl ; break ;
case 5 : cout << " vadro 31 " << endl ; break ;
in
case 6 : cout << " a r s h i n 30 " << endl ; break ;
case 7 : cout << " k a r t i k 30 " << endl ; break ;
case 8 : cout << " ogrohayon 30 " << endl ; break ;
am

case 9 : cout << " poush 30 " << endl ; break ;


case 10 : cout << "magh 30 " << endl ; break ;
case 11 : cout << " falgun 30 " << endl ; break ;
case 12 : cout << " c h o i t r o 30 " << endl ; break ;
d e f a u l t : cout << " ojana mash" << endl ; break ;
}
al

১৮. কতটা বােজ সই সময় ঘ টায় যাগান (input) িনেয় মাঝরাত (০-২), ভাত (৩-৬), সকাল
(৭-১১), পুর (১২-১৪), িবকাল (১৫-১৭), স া (১৮-১৯), রাত (২০-২৪) ফলেন দ-
খাও। একােজ পি ব াপার (switch cases) ব বহার কেরা।
i n t somoy ; c i n >> somoy ; / / যাচনা করেত পােরা

switch ( somoy )
{
case 0 : case 1 : case 2 :
cout << " majhrat " << endl ; break ;
case 3 : case 4 : case 5 : case 6 :
cout << " provat " << endl ; break ;
case 7 : case 8 : case 9 : case 10 : case 11 :
cout << " shokal " << endl ; break ;

১৪২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

case 12 : case 13 : case 14 :


cout << " dupur " << endl ; break ;
case 15 : case 16 : case 17 :
cout << " b i k a l " << endl ; break ;
case 18 : case 19 :
cout << " shondhya " << endl ; break ;
case 20 : case 21 : case 22 : case 23
cout << " r a t " << endl ; break ;
default :
cout << " ojana somoy" << endl ;
}

১৯. এমন একিট মেলখ (program) িলেখা যিট ১-৫ পয ম অ যায়ী পাঁচটা কামল
পানীেয়র (পািন, কাক, াইট, ফানটা, পপিস) নােমর তািলকা দখােব, তারপর -

5g
িমক ন র যাগান (input) িনেয় কামল পানীয়িটর নাম ফলেন (output) দখােব। আর
িমক ন রিট যিদ ১-৫ এর বাইের হয়, তাহেল স সং া একিট িট বাতা (error
message) দখােব। তুিম এই মেলখিট একবার পি ব াপার (switch cases) ব -
বহার কের আবার যিদ নাহেল (if else) ব বহার কের কেরা।
cout " t a l i k a " << endl ;
in
<<
cout << " 1 pani " << endl ;
cout << " 2 coke " << endl ;
cout << " 3 s p r i t e " << endl ;
am

cout << " 4 fanta " << endl ;


cout << " 5 pepsi " << endl ;
cout << endl ;

cout << " posondo : " << endl ;


i n t posondo ;
al

c i n >> posondo ;

cout << " posondo " ;


switch ( posondo )
{
case 1 : cout << " pani " << endl ; break ;
case 2 : cout << " coke " << endl ; break ;
case 3 : cout << " s p r i t e " << endl ; break ;
case 4 : cout << " fanta " << endl ; break ;
case 5 : cout << " pepsi " << endl ; break ;
d e f a u l t : cout << " ojana " << endl ; break ;
}

উপেরর মেলখেয়র (program) পি ব াপার (switch case) অংশিট যিদ নাহেল (if
else) ব বহার কের িলখেল নীেচর মেতা হেব।

১৪৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

i f ( posondo == 1 )
cout << " pani " << endl ;
e l s e i f ( posondo == 2 )
cout << " coke " << endl ;
e l s e i f ( posondo == 3 )
cout << " s p r i t e " << endl ;
e l s e i f ( posondo == 4 )
cout << " fanta " << endl ;
e l s e i f ( posondo == 5 )
cout << " pepsi " << endl ;
else
cout << " ojana " << endl ;

২০. একিট সংখ ার পুরক সংখ া িনণয় কেরা। সংখ াট এক অে র হেল তার পুরক সংখ ৯ এর

5g
সােথ িবেয়াগফল, ই অে র হেল ৯৯ এর সােথ িবেয়াগফল, িতন অে র হেল ৯৯৯ এর
সােথ িবেয়াগফল। িতেনর চেয় বশী অে র সংখ া যাগান (input) দওয়া হেব না।
i n t nombor , purok ;
c i n >> nombor ;
in
// িট আেগই সামলােনা হেলা
i f ( nombor < 0 | | nombor > 1000)
am

{
cout << " onakankhito " << endl ;
ret u rn EXIT FAILURE ;
}

/ / এবার কবল বধ ব াপার েলা


al

i f ( nombor <= 9 ) / / এক অ মােন ৯ বা কম


purok = 9 − nombor ;
e l s e i f ( nombor <= 99) / / এক অ মােন ৯৯ বা কম
purok = 99 − nombor ;
e l s e i f ( nombor <= 999) / / এক অ মােন ৯৯৯ বা কম
purok = 999 − nombor ;

২১. এমন একিট মেলখ (program) িলেখা যটা ৫ জন লাক যােদর িমক ১-৫ তােদর ক
কতটা কের পেরাটা খেয়েছ যাগান (input) িনেব। মেলখিট তারপর একজেন সেবা
কয়টা পেরাটা খেয়েছ সটা ফলেন (output) দখােব। আর কান লাক সেবা সংখ ক
পেরাটা খেয়েছ মেলখিট সটাও দখােব, তেব সেবা পেরাটা খাওয়া একািধক ব ি
থাকেল থমজেনর িমক ন র হেলই চলেব, পেরর জনেদর দরকার নাই।
আমরা পাঁচজন লােকর জ িবধােথ পাঁচিট চলক িনেবা p1, p2, p3, p4, p5। তা-
রপর যথাযথ ভােব যাগান যাচনা (input prompt) কের কান লাক কতিট পেরাটা
খেয়েছ সটা যাগান (input) িনেবা। তারপর আমােদর আেরা িট চলক লাগেব: একিট

১৪৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

হেলা sorboccho সেবা কতিট পেরাটা খেয়েছ আর একিট হেলা kekheyese ক


খেয়েছ সেবা িট। তারপর আমরা একজন একজন কের লাক িবেবচনা করেবা। েত
মা একজন লাক ধের িনেল সই সেবা পেরাটা খেয়েছ, কােজই sorboccho = p1,
kekheyese = 1 আিদমান িহসােব আরপণ করা হেয়েছ। এর পেরর িতিট ব ি র জ
আমরা পরী া কের দখেবা স এ পয sorboccho এর মান যত তার চেয় বশী পেরা-
টা খেয়েছ িকনা। যিদ খেয় থােক তাহেল sorboccho এর মান বদেল যােব আর ক
খেয়েছ সটাও বদেল যােব। এরকম মেলখ (program) নীেচ দেখা।

িফিরি ৭.১৪: পাঁচিট সংখ ার বৃহ ম (Largest of Five Numbers)


int p1 ; cout << " p1 : "; cin >> p1 ;
int p2 ; cout << " p2 : "; cin >> p2 ;
int p3 ; cout << " p3 : "; cin >> p3 ;
int p4 ; cout << " p4 : "; cin >> p4 ;
int p5 ; cout << " p5 : "; cin >> p5 ;

i n t sorboccho
i f ( sorboccho
{ sorboccho
i f ( sorboccho
{ sorboccho
=
<
=
<
=
p1 ,
p2 )
p2 ;
p3 )
p3 ;
5g
kekheyese = 1 ;

kekheyese = 2 ; }

kekheyese = 3 ; }
in
i f ( sorboccho < p4 )
{ sorboccho = p4 ; kekheyese = 4 ; }
i f ( sorboccho < p5 )
am

{ sorboccho = p5 ; kekheyese = 5 ; }

cout << " porota " << sorboccho << endl ;


cout << " l o k t a " << kekheyese << endl ;

খয়াল কেরা আমরা > ব বহার কেরিছ >= ব বহার কির নাই। এর কারণ এ পয সেবা
al

যতিট খাওয়া হেয়েছ তার সমান কউ যিদ পেরর কউ খেয়ও থােক, আমরা িক সই লা-
কিটেক ফলেন (output) দখােত চাইনা, বরং আেগর জনেকই দখােত চাই। তুিম যিদ
সেবা পেরাটা খেয়েছ এরকম কেয়ক জন থাকেল তােদর মেধ র শেষর জনেক ফল-
ন (output) দখােত চাও, তাহেল < বদেল <= কের িদেব। আর একিট ব াপার হেলা
অেনক সময় sorboccho আর kekheyese চলক িটর আিদমান ১মজেনর পেরাটা খা-
ওয়া িবেবচনা কের না িদেয় নীেচর মেতা কের বরং আমরা একটা ছাট সংখ া ধের নই,
তারপর ২য়, ৩য়, ৪থ, ৫ম লােকর মেতা ১ম জেনর জ ও একই রকম যিদ নাহেল ব বহার
কির। এেত সব লােকর জ িচ া করাটা একই রকম হয়।
/ / সেবা একটা ছাট মান , ক খেয়েছ সটা জািননা
i n t sorboccho = 0 , kekheyese = 0 ;

i f ( sorboccho < p1 ) / / ১ম জেনর ে ও একই


{ sorboccho = p1 ; kekheyese = 1 ; }
/ / p2 , p3 , p4 , p5 এর যিদ নাহেল িঠকই থাকেব

১৪৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

২২. একজন লাক াভািবক িনয়ম অ যায়ী স ােহ ৪০ ঘ টা কাজ কের, ৪০ ঘ টার বশী কাজ
করেল অিতির সময়টু র জ াভািবক িনয়েমর চেয় ১.৫ ণ মজুির পায়। কান এক
স ােহ লাকিট কত ঘ টা কাজ কেরেছ আর াভািবক িনয়েম ঘ টা িত মজুির কত তা
যাগান (input) িনেয় ওই স ােহ তার মাট মজুির কত তা ফলেন (output) দখাও।

িফিরি ৭.১৫: স ােহর মজুির িহসাব (Weekly Wage Calculation)


f l o a t const shaShima = 40 . 0 ; / / াভািবক সীমা
f l o a t const o t i H a r = 1 . 5 ; / / অিতির হার

f l o a t ghontaProti ; / / ঘ টা িত কত হার
f l o a t kotoGhonta ; / / কত ঘ টা কাজ
f l o a t motMojuri ; / / মাট মজুির কত

cout << " ghonta p r o t i har : " ;


c i n >> ghontaProti ;

c i n >> kotoGhonta ;
5g
cout << " koto ghonta k a j : " ;

i f ( kotoGhonta <= shaShima )


in
motMojuri = kotoGhonta ∗ ghontaProti ;
e l s e / / অিতির সময় কাজ হেয়েছ
{
/ / াভািবক মজুির ৪০ ঘ টার
am

f l o a t shaMojuri = shaShima ∗ ghontaProti ;

/ / অিতির ঘ টা বর করেত হেব


f l o a t otiGhonta = kotoGhonta − shaShima ;

/ / অিতির সমেয়র মজুিরর হার


al

f l o a t o t i G h o n t a P r o t i = ghontaProti ∗ o t i H a r ;

/ / অিতির সমেয় মজুির


f l o a t o t i M o j u r i = otiGhonta ∗ o t i G h o n t a P r o t i ;

/ / মাট মজুির েটার যাগফল


motMojuri = shaMojuri + o t i M o j u r i ;
}

cout << "mot mojuri " << motMojuri << endl ;

২৩. ধেরা তুিম চার টুকেরা কাগজ িনেয়েছা। তামার ১ম টুকেরােত লখা আেছ ১, ৩, ৫, ৭, ৯,
১১, ১৩, ২য় টুকেরােত আেছ ২, ৩, ৬, ৭, ১০, ১১, ১৪, ১৫, ৩য় টুকেরােত আেছ ৪, ৫,
৬, ৭, ১২, ১৩, ১৪, ১৫, ৪থ টুকেরােত আেছ ৮, ৯, ১০, ১১, ১২, ১৩, ১৪, ১৫। তামার

১৪৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২২. অ শীলনী সম া (Exercise Problems)

মেলখ (program) ব বহারকারী মেন মেন একিট সংখ া ধরেব, আর সিট ১ম, ২য়,
৩য়, ৪থ টুকেরার কান কানিটেত আেছ যাগান (input) িদেব, তারপর তামার মেলখ
ব বহারকারী মেন মেন য সংখ ািট ধেরেছ সিট ফলেন (output) দখােব। এিট খুব সহজ
একিট ব াপার। য য টুকেরােত সংখ ািট আেছ ওই টুকেরা েলার থম সংখ া েলা যাগ
করেলই ব বহারকারীর সংখ ািট পাওয়া যােব। যমন ব বহারকারীর সংখ ািট যিদ ১, ৩, ৪
ন র টুকেরােত থােক তাহেল সংখ ািট ১ + ৪ + ৮ = ১৩।

সংখ া বলার খলা (Number Finding Game)


cout << " ekta sonkhya nao 0 theke 15 " << endl ;

cout << " tash 1: 1 3 5 7 9 11 13 15 " << endl ;


cout << " tash 2: 2 3 6 7 10 11 14 15 " << endl ;
cout << " tash 3: 4 5 6 7 12 13 14 15 " << endl ;
cout << " tash 4: 8 9 10 11 12 13 14 15 " << endl ;

5g
cout << " n i c h e r prosno gulor u t t o r dao " << endl ;
cout << " u t t o r ha hole 1 , na hole 0 " << endl ;

i n t tash1 , tash2 , tash3 , tash4 ;


in
cout << " tash 1 e tomar sonkhya ase ? " ;
c i n >> tash1 ;
cout << " tash 2 e tomar sonkhya ase ? " ;
am

c i n >> tash2 ;
cout << " tash 3 e tomar sonkhya ase ? " ;
c i n >> tash3 ;
cout << " tash 4 e tomar sonkhya ase ? " ;
c i n >> tash4 ;
al

i n t sonkhya = 0 ;

if ( tash1 ) sonkhya += 1;
if ( tash2 ) sonkhya += 2;
if ( tash3 ) sonkhya += 3;
if ( tash4 ) sonkhya += 4;

cout << " tomar sonkhya " << sonkhya << endl ;

উপেরর মেলখ (program) দেখা। থেম কাগেজর টুকেরা বা তাস েলােত কী কী


সংখ া লখা আেছ তা দখােনা হেয়েছ। এরপর বলা হেয়েছ পেরর দখােনার েলার
উ র া হেল ১ আর না হেল ০ িদেয় িদেত। আমরা চারিট চলক িনেয়িছ। আর উ র েলা
ওই চলক েলােত আেছ। ে যমন বলা হেয়েছ য তাস েলােত ব বহারকারীর মেন মেন
ধের নয়া সংখ ািট আেছ সই তাস েলার থম সংখ া েলা িনেয় আমােদর যাগ করেত
হেব। আমরা েত সংখ ািট ধের িনেয়িছ int sonkhya = 0; িলেখ। এরপর দেখা

১৪৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৭.২৩. গণনা পিরভাষা (Computing Terminologies)

িতিট if পরী া করেছ সংখ ািট ওই তােস আেছ িকনা, অথাৎ ব বহারকারীর দয়া উ র
সত িকনা, সত হেল ওই তােসর থম সংখ ািট তা আমরা জািনই, সটা sonkhya
চলেকর সােথ যাগ কের দয়া হেয়েছ। পিরেশেষ ফলন (output) ব বহারকারীর মেন
মেন ধের নয়া সংখ ািট দখােনা হেয়েছ।

৭.২৩ গণনা পিরভাষা (Computing Terminologies)


• শতািল (conditional) • সমতুল (equivalence)

• যিদ (if) • ব টন (distribution)

• নাহেল (else) • িবিনময় (commutative)

• অ য়ী (relational) • শাষণ (absorption)

• বুলক (Boolean)

• মই (ladder)

• অ াি (nested)
5g • অস িত (contradiction)

• নঞ মধ ম (excluded middle)

• সত ক সারণী (truth table)


in
• ঝুল (dangling) • অ লায়ন (optimisation)

• (empty) • িতিনক (ternary)


am

• যৗিগক (compound) • পি (switch)

• শনা করণ (detection) • ব াপার (case)

• সংেযাজক (connective) • িনয় ণ (control)

• এবং, ও (and) • াি (break)


al

• অথবা, বা (or) • অগত া (default)

• নয়, না (not) • ব াপীয় (global)

• সহেযাজ (associative) • ানীয় (local)

• সরল (simplification) • মহ া (block)

• অ গণ তা (precedence) • উপমহ া (subblock)

• ম (order) • অিধমহ া (superblock)

১৪৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৮

পুনািল পিরগণনা
(Iterative Programming)

5g
আমােদর জীবনটা এমন রামা কর নয় য একদম িতবারই তুিম অিভনব িকছু একটা করেব।
খয়াল কের দখেব তামােক ায়শই একই রকম কাজ বার বার করেত হে । তুিম হয়েতা এেত
একেঘঁেয়িম বাধ করেছা, িক িকছুই করার নই, নাক কান চাখ ব কের তামােক সই একই
কাজ বার বার কের যেত হেব, যত ণ না স েলা শষ হে । পুনািল পিরগণনায় (iterative
in
programing) আমরা িশখেবা কী কের বারবার একই কাজ কের যেত হয়।

৮.১ জ ঘূণীর পুনরাবৃি (For Loop Repetition)


am

িসিপিপ ভাষায় এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধণা ক পূণক যাগান
(input) িনেয় ওই পূণেকর সমান সংখ ক বার ফলেন (output) "cpp" দখায়।
cout << " cpp cpp cpp cpp cpp " << endl ;
al

তামােক যিদ খুবই অ সংখ ক বার যমন মা ৫ বার ফলেন (output) িসিপিপ দখােত
বলা হয়, ব াপারটা িক তামার কােছ খুবই সহজ লাগেব। ফ উপেরর মেতা কের একটা cout
ব বহার কেরই তুিম ৫ বার িসিপিপ ফলেন দখােত পারেব। অথবা তুিম চাইেল িক নীেচর মেতা
কের েত কবার আলাদা আলাদা cout িদেয় একটা কের cpp আলাদা আলাদা কের মাট ৫ বার
ফলন িদেত পােরা। আর তারপর একটা endl দখােলই হেলা।
cout << " cpp " ;
cout << " cpp " ;
cout << " cpp " ; / / cpp এর পের একটা ফাঁকা
cout << " cpp " ;
cout << " cpp " ;
cout << endl ;

উপেরর উপায় েলােত আমােদর িট সম া রেয়েছ। থম সম া হে মা ৫ বার না হেয়


যিদ আমােদর ১০০০ বার বা এই রকম অেনক বশী বার ফলন (output) িদেত বলা হয়, তাহেল
তুিম কী করেব? তুিম িক মেলখেয়র (program) িভতের এইভােব ১০০০ বার বা ওই রকম

১৪৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১. জ ঘূণীর পুনরাবৃি (For Loop Repetition)

অত বশী বার আলাদা আলাদা কের cpp িলখেব? িন য় না! আর ি তীয় সম া হে কত বার
ফলেন cpp দখােত হেব সটা যিদ আমরা ব বহারকারীর কােছ থেক যাগান (input) িনই,
তাহেল সংখ াটা তা মেলখ রচনার সময় জানা থাকেছ না, তরাং ওই ভােব িঠক কত বারই বা
আমরা মেলখেয়র িভতের cpp িলখেবা? ব াপারটার তা কান রাহাই নই!
f o r ( i n t gu n t i = 1 ; gunt i <= 1000 ; ++ gunti )
cout << " cpp " ;
cout << endl ;

আমরা আেগ থম সম ািটর সমাধান দিখ। যিদ আমরা মেলখ (program) লখার সম-
য়ই জািন কতবার cpp দখােত হেব, আর সংখ ািট যিদ বশ বড় হয় তাহেল দেখা আমরা অিত
সংে েপ িঠক উপের দখােনা মেলখেয়র মেতা কত সহেজ ১০০০ বার িসিপিপ দিখেয় ফলেত
পাির! এখন কথা হে উপেরর মা এই িতনিট সাির কী ভােব ১০০০ বার cpp িলখেব?
তামােক খাতা কলেম িলখেত িদেল তুিম িনেজ কী করেব? তুিম হয়েতা ১ থেক ১০০০
পয এক এক কের ধারাবািহকভােব নেত করেব। আর যখনই একটা সংখ া উ ারণ করেব

5g
তখনই তুিম একবার cpp িলখেব। তুিম তা বুি মান মা ষ তাই তুিম জােনা য তামােক ১০০০
এ িগেয় থামেত হেব। িক গণিন (computer) যেহতু বাকা তাই স যটা কের িতবার ১
বািড়েয় পেরর সংখ াটা বেল আর তার সােথ সােথই পরী া কেরও দেখ ১০০০ হেলা কী না।
আসেল তুিম মা ষ িহসােব বুি মান হেলও মেন মেন তুিম িক িতবার সই একই কাজই কেরা,
অথাৎ পরী া কের দেখা ১০০০ হেয় গেলা নােতা, নাহেল ১ যাগ কের পেরর সংখ ায় চেল যাও!
in
উপেরর মেলখ (program) িঠক এই কাজটাই কের।
এবার for( int gunti = 1; gunti<=1000; ++gunti) অংশটু ল কেরা। আমরা
একটা চলক (variable) িনেয়িছ gunti যার আিদ মান (initial value) ১, আমরা ১ থেক ন-
am

ত করেবা, তারপর শত পরী া (condition check) কের দখেবা gunti এখেনা ১০০০
বা ছাট িকনা, আর শত সত হেল gunti এর মান এক বাড়ােবা। তেব এই শত gunti <=
1000 আর হালায়ন (update) ++gunti এই েয়র মেধ আসেল for এর নীেচ য িববৃ-
িত (statement) আেছ cout << "cpp "; সটা িনবাহ করেবা। আর gunti বাড়ােনার পের
আবার শত পরী া করেবা, শত সত হেল gunti আবার বাড়ােবা, ইেয়র মােঝ অিত অব ই
coutএর িববৃিতটা িনবাহ করেবা, এইটা বারবার করেত থাকেবা যত ণ শতটা সত আেছ। শত
al

িমথ া হেয় গেল িববৃিতটাও িনবাহ করেবা না, guntiও বাড়ােবা না, শত পরী ার পরপরই িনয় ণ
(control) চেল যােব ঘূণীর বাইের ধেরা এইে ে যখােন আেছ cout << endl; সখােন।

i n t gunti = 1 ; / / এিট f o r এর ১ম অংশ মা একবার হেব

i f ( g u n t i <= 1000) / / ২য় অংশ শত বারবার হেব


{ cout << " cpp " ; ++ gunti ; } / / িববৃিত , ৩য় অংশ বারবার হেব
i f ( g u n t i <= 1000) / / িঠক উপেরর ই সািরই আেরকবার
{ cout << " cpp " ; ++ gunti ; }
/ / এইরকম মাট ১০০০ বার উপেরর ই সাির আেছ বেল আমরা ধের িনেত পাির
i f ( g u n t i <= 1000) / / ১০০০ তম বার ওই ই সািরই
{ cout << " cpp " ; ++ gunti ; }

cout << end ; / / ঘূণীর বাইের অ িকছু

১৫০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১. জ ঘূণীর পুনরাবৃি (For Loop Repetition)

কী চমৎকার না মা িতন সািরর মেলখ (program) কী ভােব বার বার একই কাজ কের
কত বড় একটা মেলখেয়র সমতুল কাজ কের দয়। ঘূণীর (loop) মুল িক এইখােনই।
এই পযােয় তুিম হয়েতা বলেত পােরা আিম ১ থেক ১০০০ বার না েন যিদ ০ থেক ৯৯৯ বার িন
তাহেল িক কাজ হেব। িন য় হেব কারণ ০ থেক ৯৯৯ পয েতা মাট ১০০০টা সংখ াই হয়। কউ
চাইেল ২ থেক ১০০১ পয ও নেত পাের, কারণ তােতও ওই ১০০০টা সংখ াই আেছ। আসেল
এই ে তা কত থেক আর কত ত িগেয় শষ সটা কান ব াপারই না, মুল ব াপার হেলা
মাট কতিট সংখ া আেছ তােদর মেধ ।
f o r ( i n t g u n t i = 1 ; gu n ti <= 1999 ; gu nti += 2 )
cout << " cpp " ;
cout << endl ;

তামােদর মেধ কউ কউ আবার বেল বসেত পােরা নাহ আিম ১ থেক এক এক কের বািড়েয়
১০০০ পয নেবা না, আিম নেবা ১ থেক ই ই কের বািড়েয় ১৯৯৯ পয । তােতও কান
সম া নাই ১, ৩, ৫, ..., ১৯৯৯ পয িক মাট ১০০০িট সংখ াই আেছ। আমরা িঠক উপের দিখ-

5g
য়িছ, এিট কী ভােব করেত হেব। তুিম চাইেল িক ৩ কেরও বাড়ােত পােরা, বা অ িকছু কেরও।
একটা ব াপার দেখা এক কের বাড়ােনার সময় ++gunti না িলেখ আমরা িক চাইেল gunti++
অথবা gunti += 1ও িলখেত পারতাম, একটু ধীর গিতর হেলও কাজ অ যায়ী সব েলা একই।
f o r ( i n t g u n t i = 0 ; gu n ti < 1000 ; ++ gunti )
in
cout << " cpp " ;
cout << endl ;

এবার একটা পূণ থা (custom) আেলাচনা কির। িসিপিপেত আমরা সাধারণ য কান
am

নিত কির ০ থেক। এিটর নানািবধ কারণ আেছ, কারণ েলা আমরা যথা সে পের জান-
বা। তেব মা া কথা বলেত পােরা সংখ া আসেল হয় থেক। তাহেল আমােদর নিত
হেব ০, ১, ২, ..., ৯৯৯ পয । িক এখােন য ১০০০িট সংখ া আেছ সিট বুঝােনার জ আমরা
শেত gunti <= 999 না িলেখ বরং িলখেবা gunti < 1000 যােত চােখ দেখ আমরা সহেজই
বুঝেত পাির য ১০০০ বার ঘূণীটা (loop) চলেব। তাহেল ধের িনেত পােরা আমরা সচরাচর িঠক
উপেরর মেতা কের ০ থেক ১০০০ এর ছাট পয ঘূণী িলখেবা, অ ভােব হয়েতা নয়।
al

i n t shuru = 0 ; // হেব ০ থেক


i n t barbe = 1 ; / / বাড়েব ১ কের
i n t mot = 1000 ; / / মাট কত বার
f o r ( i n t g u n t i = shuru ; gun ti < mot ; gunti += barbe )
cout << " cpp " ;
cout << endl ;

তুিম িক চাইেল কত থেক হেব, কতবার ঘূণী চলেব, িত পােক কত কের বৃি হেব,
এসব িবষয় উপেরর মেতা কের চলক (variable) ব বহার কেরও করেত পােরা। আর চলেকর
মান আিদ আেরাপণ (initial assignment) করেত পােরা, কান ভােব িহসাব কের আেরাপণ
করেত পােরা, অথবা নীেচর মেতা কের যাগানও (input) িনেত পােরা। চলেকর মান যিদ যা-
গান নাও তাহেল বুঝেতই পারেছা আমরা আর মেলখ (program) রচনার সময় আেগ থেক
জািননা ঘূণী (loop) িঠক কতবার ঘুরেব, সটা জানা যােব কবল মেলখ িনবাহ (execute)
করার সময়। তরাং সই অেথ চলক ব ব ত এই ঘূ্ণী েলােক িঠক িব ারণ করা যােব না। খয়াল

১৫১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২. জ ঘূণীর মহ া (For Loop Block)

কেরেছা আমরা িক এই আেলাচনার মাধ েম এই পােঠর র িদেক আেলািচত আমােদর ি তীয়


সম ািটর সমাধান পেয় গলাম। কমন চমৎকার ব াপার তাই না!
িফিরি ৮.১: বারবার একই িজিনস দখােনা (Repeatedly Display the Same)
i n t motgunti ;
cout << " kotobar ? " ;
c i n >> motgunti ;
f o r ( i n t gu n t i = 0 ; gunt i < motgunti ; ++ gunt i )
cout << " cpp " ;
cout << endl ;

তাহেল সব িমিলেয় আমরা দখলাম জ ঘূণীেত (for loop) চারিট অংশ আেছ: আদ া-
য়ন (initialisation), শত (condition), হালায়ন (update), িববৃিত (statement)। এর
মেধ আদ ায়ন (initialisation), শত (condition), আর হালায়ন (update) থােক ( ) গাল
ব নী (round brackets) যুগেলর মেধ , আর ; িদিত (semicolon) িদেয় পৃথক করা থা-

5g
ক। এছাড়া ব নীর সামেন থােক for আর ব নীর পের থােক িববৃিত (statement)। আদ ায়ন
(initialisation) একবার ঘেট, তারপর শত, িববৃিত, হালায়ন এই িতনিট এই েম বার বার
ঘটেত থােক যত ণ শত সত হয়, আর শত িমথ া হেল ঘূণী (loop) শষ হেয় যায়।
f o r ( আদ ায়ন ; শত ; হালায়ন )
in
িববৃিত
am

৮.২ জ ঘূণীর মহ া (For Loop Block)

এমন একিট মেলখ (program) রচনা কেরা যিট থেম ণীেত ছা সংখ া যাগান (input)
নেব। তারপর িতিট ছাে র গিণেত া ন র যাগান িনেয় ফলেন (output) ছা িটর ফলাফল
পাশ না ফল তা দখােব, যখােন পােশর মান ৫০ বা বশী।
al

িফিরি ৮.২: ণীেত গিণেতর পাশ ফল (Pass Fail in Mathematics Class)


cout << " chhatro sonkhya koto ? " ;
i n t sonkhya ; c i n >> sonkhya ;

cout << endl ;


f o r ( i n t suchok = 0 ; suchok < sonkhya ; ++suchok )
{ / / suchok চলকিট মহ ার িভতের একিট ানীয় চলক
cout << " kromik " << suchok + 1 ;
cout << " chhater nombor koto ? " ;
i n t nombor ; c i n >> nombor ;

cout << " f o l a f o l : " ;


cout << ( nombor >= 50 ? " pass " : " f a i l " ) ;
cout << endl << endl ;
}

১৫২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২. জ ঘূণীর মহ া (For Loop Block)

উপের মেলখেয়র (program) মুল অংশ দখােনা হেলা, আর নীেচ রেয়েছ মেলখিট
সংকলন (compile) কের চালােল (run) কমন যাগান-ফলন (input-output) হেত পাের
তার নমুনা। এখােন আমরা কবল মা িতনজন ছাে র জ মেলখিট চািলেয় ফলন দিখেয়িছ,
তুিম চাইেল আেরা বশী জেনর জে ও চালােত পােরা।

যাগান-ফলন (input-output)
chhatro sonkhya koto ? 3

kromik 1 chhater nombor koto ? 80


f o l a f o l : pass

kromik 2 chhater nombor koto ? 35


folafol : f a i l

kromik 3 chhater nombor koto ? 50


f o l a f o l : pass

5g
এবার আমরা মেলখিট (program) িবে ষণ কির। থেম ছা সংখ া কত সটার জ
যাচনা বাতা (prompt message) দিখেয় আমরা sonkhya চলক (variable) ঘাষণা কের
তােত ছা সংখ া যাগান (input) িনেয়িছ। তারপর আমরা জ ঘূণী (for loop) িলেখিছ যটা
in
চলেব suchok চলেকর মান ০ থেক sonkhya এর কম পয অথাৎ মাট sonkhya সংখ ক
বার। খয়াল কেরা িত পােক ঘূণীটায় কবল একটা সরল িববৃিত (simple statement) িনবাহ
(execute) করেলই হেব না, বরং িত পােক আমােদর দরকার অেনক েলা িববৃিত িনবাহ করা।
am

আমরা তাই {} বাঁকা ব নী (curly brackets) ব বহার কের একটা মহ া (block) িনেবা আর
তার িভতের দরকার মেতা যত েলা িববৃিত দরকার তা রাখেবা। এখােন বেল রাখা দরকার য
suchok চলকিট জ ঘূণীর (for loop) যখােন ঘাষণা করা হেয়েছ তােত এিট একিট ানীয়
চলক (local variable) যা কাযকর থাকেব কবল ওই মহ ার (block) িভতের।
মহ ার (block) িভতের আমরা যটা করেবা সটা হল েত ক ছাে র থেম িমক দিখেয়
al

তার গিণেত া ন র যাচনা (prompt) করেবা। ল কেরা থম পােক suchok চলেকর


মান ০ িক থম ছা িটর িমক হেব ১, ি তীয় পােকর সময় suchok চলেকর মান হেব ১ িক
ি তীয় ছাে র িমক হেব ২, এইভােব চলেব। এেত বুঝায় যায় কান পােক suchok চলেকর মান
যত সই পােকর ছা িটর িমক হেব তার চেয় এক বশী। যাইেহাক যাচনা (prompt) করার
পর আমরা ন র যাগান িনেয়িছ nombor চলেক। তারপর একিট িতিনক অণুি য়া (ternary
operator) ব বহার কের ৫০ এর বশী হেল পাশ আর নাহেল ফল ফলেন দিখেয়িছ। আমরা
চাইেল যিদ নাহেল (if else) ব বহার কেরও কাজিট করেত পারতাম।
ঘূণীেত (loop) মহ া (block) ব বহার করা যখন িশখলাম, তখন বেল রাখা দরকার য মহ-
ার (block) িভতের আমরা িক য রকম ই া িববৃিত (statement) যত েলা ই া িববৃিত
িলখেত পাির। আমরা আেগই জািন ; িদিত (semicolon) িদেয় শষ হওয়া কান িকছুই হেলা
একটা িববৃিত। তেব য কান সরল িববৃিতর (simple statement) পাশাপািশ আমরা যৗিগক
িববৃিতও (compound statement) ব বহার করেত পাির। যিদ নাহেল (if else), অ াঅি
যিদ নাহেল (nested if else), যিদ নাহেল মই (if else ladder), িতিনক অণুি য়া (ternary
operator), পি ব াপার (switch cases) এ েলা সব েলাই একক যৗিগক িববৃিত (unit
compound statement)। একক িববৃিত হওয়ায় এ েলার য কান একটা ব বহার করেল

১৫৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৩. পােকর সূচক ও পর রা (Loop Index and Succession)

মহ া (block) তরী করার দরকার নাই, করেলও সম া নাই, িক এ েলার একািধক ব বহার
করেল অব ই মহ া (block) তরী কের িনেত হেব। আমরা িক উপেরর মহ ায় িতিনক অণু-
ি য়া (ternery operator) সহ অ কেয়কিট সরল িববৃিত (simple statement) একসােথ
দিখেয়িছ। ঘূণীেত (loop) মহ া (block) ব বহােরর সােথ এটাও বেল রাখা দরকার য মহ ার
িভতের আবারও এক বা একািধক ঘূণী (loop) আমরা চাইেলই িলখেত পাির। তেব আমরা সই
আেলাচনা করেবা অ াি ঘূণী (nested loop) সংেগর সময়।

৮.৩ পােকর সূচক ও পর রা (Loop Index and Succession)

এমন একিট মেলখ (program) রচনা কেরা যিট একিট সমা র ধারার থম পদ a, সাধারণ
অ র d, ও পদ সংখ া n যাগান (input) িনেয় পদ েলােক নীেচর মেতা কের ফলন (output)
িদেব। খয়াল কেরা পদ েলা যাগ িচ িদেয় আর যাগফল সমান িচ িদেয় দখােনা হেয়েছ।
1 + 3 + 5 + 7 + 9 = 25

5g
আমরা জািন সমা র ধারার থম পদ a, সাধারণ অ র d হেল kতম পদ হল a + (k − 1)d,
আর n পেদর যাগফল হেলা n ∗ (2a + (n − 1)d)/2। তরাং একিট জ ঘূণী (for loop)
আমরা 1 থেক n পয চািলেয় কাজিট খুব সহেজই কের ফলেত পাির।
in
িফিরি ৮.৩: পািটগিণেতর ধারার সম া (Arithmetic Series Problem)
int a , d , n ; / / িতনিট চলক লাগেব
cout << " a d n koto ? " ; / / যাগান যাচনা কেরা
am

c i n >> a >> d >> n ; / / মান যাগান নাও

i f ( n <= 0 ) / / অধনা ক পদসংখ া হণেযাগ নয়


{
cout << "n er man dhonatok hote hobe " << endl ;
ret ur n EXIT FAILURE ; // এ ে মেলখ ব থ
al

/ / ঘূণী চালাও 1 হেত n পয


f o r ( i n t k = 1 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট িহসাব কেরা
cout << " + " << t ; / / ফাঁকা ও যাগ িচ সহ ফলন
}

i n t s = n ∗ ( 2∗a + ( n − 1 ) ∗ d ) / 2 ; / / যাগফল িহসাব


cout << " = " << s << endl ; / / ফাঁকা ও সমান িচ সহ

তেব উপেরর মেলখেয়র (program) ফলেনর (output) িদেক তাকােল একটা ছাট সম-
া দখেত পােব। একটু খয়াল করেল দখেব ফলেন একদম থম পদিটর সামেনও যাগ িচ
চেল এেসেছ, যিট আসেল চাওয়া হয় িন। এিট সমাধােণর উপায়ও খুব সহজ, একটা যিদ (if)

১৫৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৩. পােকর সূচক ও পর রা (Loop Index and Succession)

লািগেয় যাগ িচ টা k এর মান 1 ছাড়া অ য কান সময় দখােবা, আর পেদর মানটা তা


িতবারই দখােত হেব। নীেচর মেলখ দেখা।
/ / ঘূণী চালাও 1 হেত n পয
f o r ( i n t k = 1 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট
i f ( k ! = 1) / / থম পদ ছাড়া
cout << " + " ; / / ফাঁকা ও যাগ িচ
cout << t ; / / পদিট দখাও
}

িঠক উপেরর এই মেলখিট িঠক মেতা ফলন (output) িদেলও এটা আসেল সেবা ম নয়।
কারণ যাগ িচ না দওয়ার ব াপারিট কবল থম পেদর জ , বাঁকী সব েলার জ যাগ দ-
খােত হেব। িক ওই শত পরী ণিট িতবার িতিট পেদর জ করেত হে , কারণ শত পরী-

5g
ািটেতা ঘূণীর িভতের রেয়েছ। আমরা যিদ শত পরী াটা এড়ােত চাই, তাহেল আমােদর বুঝেত
হেব য থম পদ ছাড়া বাঁকী পদ েলা একরকেমর, তােদর সবার সামেন যাগ িচ আেছ, কােজই
কবল তারাই ঘূণীর িভতের থাকেব। আর থম পদিটেক সে ে আলাদা কের ফলেত হেব।
নীেচর মেলখ (program) দেখা শত পরী ণ আর করেত হয় িন, কারণ ঘূণী চেলেছ 2 হেত n
পয । আর থম পদিট ঘূণীরও আেগ দখােনা হেয়েছ।
in
cout << a ; // থম পদিট ঘূণীর বাইের , এর সামেন যাগ নাই
am

/ / k = 2 হেত n বাঁকী ( n−1 ) িট যাগওয়ালা পদ ঘূণীর িভতের


f o r ( i n t k = 2 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট িহসাব কেরা
cout << " + " << t ; / / ফাঁকা ও যাগ িচ সহ ফলন
}
al

উপেরর এই মেলখিটেত আেরকিট িবষয় ল করেত পােরা। ঘূণীর (loop) িত পােক


আমরা kতম পদ িহসাব করিছ a + (k − 1) ∗ d রািশিট (expression) হেত, যখােন একিট
যাগ, একিট িবেয়াগ ও একিট ণ করেত হে । আসেল এখােন আমরা িতিট পদ সরাসির িহসাব
করিছ কততম পদ সটা অথাৎ k থেক। িক তা না কের আমরা অ একটা কাজ করেত পাির।
/ / k = 2 হেত n বাঁকী ( n−1 ) িট যাগওয়ালা পদ ঘূণীর িভতের
f o r ( i n t k = 2 , t = a ; k <= n ; ++k ) / / আদ ায়েন t
{
t += d ; / / আেগর মােনর সােথ d যাগ
cout << " + " << t ; / / ফাঁকা ও যাগ িচ সহ ফলন
}

যেহতু সমা র ধারার য কান েটা পেদর মেধ ব বধান d, আমরা তাই কবল আেগর পেদর
সােথ d যাগ কেরই পেরর পদ পেয় যেত পাির। তােত িতিট পদ িহসাব করেত কবল একটা
যাগ করেলই চলেব। এে ে আমরা t চলকিটেক ঘূণীর আদ ায়েন (initialisation) ঘাষণা

১৫৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৪. ঘূণীেত াি র ব বহার (Using Breaks in Loops)

কের আিদ মান িদেত পাির থমপদিটর মােনর সমান। আর িত পােক আেগ t এর মান d পিরমান
বাড়ােনা হেব তারপর ফলন দওয়া হেব। াভািবক ভােব এই মেলখিট বশী দ হেয়েছ।
এবার একটু িভ আেলাচনা। জ ঘূণীর (loop) আদ ায়েন (initialisation) আমরা চাইেল
, িবিত (comma) িদেয় একািধক চলক ঘাষণা ও আিদ মান িদেত পাির। এই চলক েলা িক
ঘূণীর সােথ য িববৃিত (statement) বা মহ া (block) কবল সখােন ানীয় চলক (local
variable) িহসােব ব বহার করা যায়। কান চলকেক যিদ ঘূণীর িভতের ও বাইের উভয় ে
কান কারেণ দরকার হয়, সই চলকিটেক তাহেল ঘূণীর আেগই ঘাষণা (declare) কের ফলেত
হেব। আমরা স রকম একিট উদাহরণ দিখ নীেচ তেব এে ে আমরা যাগফলিটেক আর n ∗
(2a + (n − 1)d)/2 ব বহার কের করেবা না, বরং এিটেকও ঘূণী িদেয়ই করেবা, যিদও সটা
দ হেব না, ঘূণী ছাড়া িদেয় করেলই বরং দ (efficient) হেব।
int t = a , s = a ; / / থম পদ ও এক পেদর যাগফল।

cout << t ; // থম পদিট ঘূণীর বাইের , এর সামেন যাগ নাই

{
t += d ;
s += t ;
cout << " + " << t ;
5g
f o r ( i n t k = 2 ; k <= n ; ++k ) / / ঘূণী 2 হেত n

/ / আেগর মােনর সােথ d যাগ


/ / যাগফেলর সােথ এই পদ যাগ
/ / ফাঁকা ও যাগ িচ সহ ফলন
in
}
cout << " = " << s << endl ; / / ফাঁকা ও সমান িচ সহ
am

৮.৪ ঘূণীেত াি র ব বহার (Using Breaks in Loops)

িসিপিপ ভাষায় এমন একিট মেলখ (program) িলেখা যিট তামার মাধ িমক পরী ায় ১০ িট
িবষেয়র ন র যাগান (input) িনেব। তুিম যিদ িতিট িবষেয় ৫০ এর বশী কের পেয় থােকা
al

তাহেল তামার গড় ন র দখােব, আর যিদ য কান একিট িবষেয়ও ফল কের থােকা, তাহেল
বাঁকী িবষয় েলার ন র যাগান (input) নয়া বাদ িদেয়ই সরাসির ফলন (output) দখােব
অকৃতকায। এবার িভ একটা অব া িচ া কেরা যখােন তামােক সব েলা িবষেয়র ন র যাগান
িনেতই হেব, একটােত ফল করেল তুিম ফলেন অকৃতকাযও দখােব, তেব গড় ন র দখােব কবল
পাশ করা িবষয় েলার ন র িনেয়। এই নতুন মেলখিট (program) কমন হেব?

িফিরি ৮.৪: দশ িবষেয়র পাশ ফল িনণয় (Pass Fail in Ten Subjects)


i n t motnombor = 0 , suchok = 0 ; / / আিদমান

f o r ( ; suchok < 10 ; ++suchok )


{
cout << suchok << "tom bishoyer nombor koto ? " ;
i n t nombor ; c i n >> nombor ;

i f ( nombor < 50) break ; / / ঘূণী থেক বর হেয় যাও !

১৫৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৪. ঘূণীেত াি র ব বহার (Using Breaks in Loops)

motnombor += nombor ;
}

i f ( suchok < 10) / / ঘূণী থেক আেগই বর হেয় এেসেছ


cout << " o k r i t o k a r j o " << endl ;
else / / ঘূণী শষ কের তারপর এখােন এেসেছ
{
f l o a t gornombor = motnombor / 10 . 0 ;
cout << " gor nombor " << gornombor << endl ;
}

দ সম া িটর থমিটর সমাধান উপের দখােনা হেয়েছ। তমন কিঠন িকছু নয়। একটা
জ ঘূণী (for loop) ব বহার করা হেয়েছ যিদ suchok নামক চলকিটর (variable) মান ০
থেক ১ কের বািড়েয় বািড়েয় ১০ এর কম পয চলেব। ঘূণীর িত পােক বাঁকা ব নীর (curly

5g
brackets) িভতের থেম কততম িবষেয়র ন র যাগান (input) িনেত চাই সটা যাগান যাচনা
(input prompt) করেবা, তারপর nombor নামক চলেক (variable) সিট যাগান িনেবা।
ল কেরা suchok এর মান ০ হেল আমরা িক ০তম িবষেয়র ন র কত তা জানেত চেয়িছ।
অথাৎ আমরা নেত কেরিছ ০ থেক। যাইেহাক nombor চলেক মান যাগান নওয়ার পের
in
আমােদর সটা motnombor চলেকর সােথ যাগ করার কথা, কারণ সবেশেষ আমরা গড় বর
করেত চাই। তেব ে বলা হেয়েছ ৫০ বা বশী হেল গড় বর করেত হেব, ৫০ এর কম হেল আর
যাগান (input) না িনেয় অকৃতকায দখােত হেব। এই অংশটু করেত আমরা যিট কেরিছ তা
হেলা if (nombor < 50) break; এই অংশটু িলেখিছ।
am

আমরা পি -ব াপার (switch-case) আেলাচনা করার সময় াি (break) এর ব বহার


দেখিছলাম। এখােনও াি র (break) এর কাজ ায় একই। াি (break) পাওয়া মা ই ওই
াি য ঘূণীর (loop) িভতের, িনয় ণ (control) সই ঘূণী থেক বর হেয় তারপেরর অংেশ
চেল যায়। উপেরর মেলখেত (program) ৫০ এর কম ন র যাগান (input) হেলই িনয় ণ
ঘূণীর (loop) বাইের থাকা যিদ নাহেলেত (if else) চেল যােব, আমরা যা চাইিছলাম। এখন দেখা
al

আমরা এই যিদ নাহেলেত (if else) suchok চলেকর (variable) মান পরী া করিছ ১০ এর
কম িকনা। যিদ াি (break) হেয় িনয় ণ ঘূণী থেক বর হেয় এেস থােক তাহেল suchok
চলেকর মান অব ই ১০ এর কম হেব, সেবা ৯ হেব। আর যিদ ঘূণীর সব েলা পাক শষ কের
এেস থােক তাহেল অব ই suchok এর মান ১০ বা বশী, কারণ ঘূণী (loop) চলার শতই তা
হেলা suchok চলেকর মান ১০ এর কম হেত হেব। তা if else এ suchok < 10 হেল আমরা
অকৃতকায দিখেয়িছ, আর নাহেল motnombor ক থেম ১০ িদেয় ভাগ কের গড় বর কের
তারপর সটা ফলেন (output) দিখেয়িছ।
একটা িবষয় খয়াল কেরা এখােন গড় ন রিট ভ ক (fractioner) হেব তাই সটা ধারণ
করার জ আমরা float ধরেণর চলক gornombor িনেয়িছ। আর motnomor ক ফ
১০ িদেয় ভাগ করেল আমরা আসেল কান ভ ক পােবা না, বরং কারণ েটা পূণেকর (integer)
ভাগফলও পূণক আমরা জািন। িক একিট পূণক ও একিট ভ েকর ভাগফল আবার একিট ভ ক।
তাই কৗশল িহসােব আমরা 10 না িলেখ িলেখিছ 10.0 যােত ভাগফল আেস ভ ক (fractioner)
িহসােব। আর একিট িবষয় খয়াল কেরা, suchok চলকিটেক আমরা িক for( int suchok =
0; suchok < 10; ++suchok) িলেখ ঘূণীর (loop) িভতের ানীয় চলক (local variable)
িহসােব ঘাষণা কির নাই। আমরা বরং suchok ঘাষণা কেরিছ ঘূণীর (loop) বাইের আর আিদ

১৫৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৪. ঘূণীেত াি র ব বহার (Using Breaks in Loops)

মানও (initial value) িদেয়িছ ঘূণীর বাইের। এর কারণ হেলা suchok চলকিটেক যেহতু আমরা
জ ঘূণীর (for loop) বাইের যিদ নাহেলেত (if else) ব বহার করেত চাই, তাই এিটেক ঘূণীর
িভতের ঘাষণা করা যােব না, সে ে ঘূণীর বাইের সিট আর কাযকর থাকেব না বেল। তুিম িক
চাইেল কবল ঘাষণাটা ঘূণীর বাইের কের আিদমান দওয়াটা ঘূণীেতই করেত পারেত। আর একটা
িবষয়ও তাহেল ফাঁক তােল আমরা জানলাম সটা হেলা জ ঘূণীর (for loop) এর আদ ায়ন
(initialisation) অংেশ িকছু না থাকেলও কান সম া নই।

i n t motnombor = 0 , motbishoy = 0 , suchok ;


bool f e l l h o i s e = f a l s e ; / / আিদ মান

f o r ( suchok = 0 ; suchok < 10 ; ++suchok )


{
cout << suchok << "tom bishoyer nombor koto ? " ;
i n t nombor ; c i n >> nombor ;

else
{
motnombor += nombor ;
5g
i f ( nombor < 50) f e l l h o i s e = true ;
in
motbishoy += 1 ;
}
}
am

if ( fellhoise )
cout << " o k r i t o k a r j o " << endl ;
else
{
f l o a t gornombor = motnombor / motbishoy ;
al

cout << " gor nombor " << gornombor << endl ;
}

আমােদর যিদ সব েলা িবষেয়র ন র যাগান (input) িনেতই হয়, তাহেল আমরা উপেরর
মেলখেয়র মেতা কের াি (break) ছাড়া িলখেবা। তেব কান একটা িবষেয়র ন র ৫০ এর
কম িছেলা িকনা সটা মেন রাখার জ আমরা এখােন বুলক (boolean) ধরেণর একিট চলক
fellhoise িনেয়িছ। এই fellhoise চলকিটর মান আিদেত false, কারণ তখনও আমরা একটা
িবষয়ও পরী া কির নাই। তারপর ঘূণীর িভতের খয়াল কেরা যিদ নাহেলেত (if else) ন র ৫০
এর কম হেল আমরা fellhoise চলেকর মান কের িদেয়িছ true। একািধক িবষেয়র মান ৫০ এর
কম হেল স েলার িতবােরই fellhoise চলেকর মান true হেব, িক ঘূণীর (loop) িভতের
fellhoise চলেকর মান false হওয়ার কান পথ নাই। কােজই ঘূণীর শেষ fellhoise চলেকর
মান true মােন হেলা এক বা একািধক িবষেয়র ন র ৫০ এর কম, আর fellhoise চলেকর মান
তখনও false থাকা মােন হেলা কান িবষেয়র ন রই ৫০ এর কম িছেলা না। fellhoise ধরেনর
বুলক চলক (boolean variable) য েলা আমরা ঘূণীর িভতের কান দ শত কখেনা সত
হেয়িছেলা িকনা মেন রাখেত ব বহার কির স েলােক বলা হয় পতাকা চলক (flag variable)।

১৫৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৫. ঘূণীেত পাক িডঙােনা (Continue in Loops)

উপেরর মেলখেত (program) আমরা motnombor িহসাব কেরিছ কবল nombor


চলেকর মান ৫০ বা বশী হেল, আর এরকম িবষয় কয়িট সটাও মেন রাখার জ motbishoy
নােমর আেরকিট চলক িনেয় সটার মান িতবার ১ কের বািড়েয়িছ। খয়াল কেরা motnombor
ও motbishoy চলক িটর ঘাষণা ও আিদমান দয়া হেয়েছ ঘূণীর (loop) আেগ। এখােন
suchok চলকিট আমরা ঘাষণা কেরিছ ঘূণীর বাইের, িক এবার আিদ মান িদেয়িছ ঘূণীর (loop)
আদ ায়ন (initialisation) অংেশ। তামার ই ামেতা ও দরকারমেতা তুিম নানাভােবই এ েলা
করেত পােরা। এই পাঠ শষ কির আেরকিট িবষয় িদেয়। ল কেরা motbishoy িদেয় আমরা
যখােন motnombor ক ভাগ কেরিছ, সখােন motbishoy িকনা পরী া কির নাই।
তুিম জােনা িদেয় ভাগ করেল divide by zero বা িদেয় ভাগ বেল একিট িট (error)
দখা দয়। আমােদর motbishoy এর মান পরী া করা দরকার হয় নাই, কারণ সটা হওয়া
স ব যিদ ১০টা িবষেয়র সব েলােতই ন র ৫০ এর কম হয়। িক একটা িবষেয়ও যিদ ন র ৫০
এর কম হয় তাহেল তা fellhoise সত হেয় যােব আর অকৃতকায ফলেন (outout) আসেব,
গড় ন র নয়। কােজই কান িট আসার েযাগই তরী হেব না এখােন।

৮.৫ ঘূণীেত পাক িডঙােনা (Continue in Loops)


5g
এক ব বসায়ী তার খির ারেদর িহসাব সংর েণর জে একটা কের খাতা ন র িদেয় দয়। তেব
সং ার জিনত কারেণ স মেন কের কান খির ােরর খাতা ন র যিদ ১৩ বা এর িণতক হয়,
in
তাহেল সই খির ার তার জে িতর কারণ হেব, হয়েতা বাঁকী িনেব অথবা বাঁকী িনেয় পিরেশাধ
করেব না। এখন তামােক এমন একিট মেলখ (program) িলখেত হেব যটা র ন র আর
শেষর ন র যাগান (input) িনেয় ১৩ িদেয় িবভাজ ন র েলা বাদ িদেয় অ ন র েলা ফলন
am

(output) িদেব, যােত ওই ব বসায়ী ন র েলা খির ারেদর খাতার ওপর লাগােত পাের।

িফিরি ৮.৫: ভােগ র সংখ া উেপ া (Ignoring Unlucky Numbers)


i n t shuru , shesh ; / / চলক েলার মান যাগান িনেত হেব

f o r ( i n t nombor = shuru ; nombor <= shesh ; ++nombor )


al

{
i f ( nombor % 13 == 0 ) / / ১৩ িদেয় িবভাজ হেল
continue ; / / পেররটােত চেল যাও

cout << nombor << endl ; / / অ েলার জ


}

এই মেলখ (program) লখা খুবই সহজ। তামার েটা চলক (variable) shuru আর
shesh িনেত হেব। এই েটার মান তুিম ব বসায়ীর কােছ থেক যাগান (input) িনেব। তারপর
তুিম একিট জ ঘূণী (for loop) চালােব যিট nombor চলেকর মান shuru থেক shesh
পয এক এক কের বািড়েয় বািড়েয় যােব। আর ঘূণীর (loop) িভতের তুিম যিদ (if) ব বহার কের
পরী া কের দখেব nombor চলেকর (variable) মান ১৩ ারা িবভাজ িকনা। যিদ nombor
% 13 == 0 শত সত হয় তাহেল আমরা সখােন ওই ন র িডিঙেয় (continue) চেল যােবা
মােন আর িকছু না কের ঘূণীর পেরর পােক চেল যােবা, আর শত িমথ া হেল ওই পাক না িডিঙ-
য় পের যখােন ফলন (output) দওয়া হেয়েছ সটা করেবা। জ ঘূণীর (for loop) পাক

১৫৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৬. জ ঘূণীেত ােসর ব বহার (For Loop and Decrement)

িডিঙেয় (continue) পেরর পােক যাওয়া মােন িঠক যখােন continue; লখা হেয়েছ সখান
থেক িনয় ণ (control) ঘূণীর হালায়ন (update) অংেশ ++nombor করেত চেল যােব, তার
ফেল nombor এর মান ১ বাড়েব, আর তারপর িনয়মা যায়ী এর পের শত পরী ণ (condition
checking), পেরর পােকর িববৃিত িনবাহ (statement execution), এই ভােব চলেত থাক-
ব। জ ঘূণীেত (for loop) িডঙােনার (continue) এর কাজ মূলত এতটু ই।
i n t shuru , shesh ; / / চলক েলার মান যাগান িনেত হেব

f o r ( i n t nombor = shuru ; nombor <= shesh ; ++nombor )


{
/ / এই খােন এক গাদা কাজ থাকেত পাের , তাই মহ া নয়া হেয়েছ

i f ( nombor % 13 ! = 0 ) / / ১৩ িদেয় িবভাজ না হেল


{
cout << nombor << endl ;

}
}
5g
/ / এই খােন আেরা এক গাদা িববৃিত থাকেত পাের।
/ / এক গাদা িববৃিত না থাকেল মহ া {} লাগেব না।
in
উপেরর মেলখ (program) দেখা। য কাজ িডঙােনা (continue) ব বহার কের আম-
রা স কেরিছলাম, সটা িডঙােনা (continue) ছাড়াই করা হেয়েছ। যেহতু ১৩ িদেয় িবভা-
am

জ না হেল আমােদর ন র েলা ফলেন (output) দখােত হেব, আমরা তাই শতটা উে িদ-
য় nombor % 13 != 0 িলেখই কাজিট কের ফলেত পাির। ১৩ ারা িবভাজ হওয়ার ে
তা আমােদর তাহেল আর িকছু করার নাই, তরাং িনয় ণ (control) আপনা আপিনই হালায়ন
(update) অংেশ চেল যােব। তারমােন বলেত গেল িডঙােনা (continue) একটা অদরকারী
িবষয়। তাহেল এইটা আেছই বা কন? একটা িবষয় খয়াল কেরা ১৩ ারা িবভাজ না হেল এই
ে আমােদর কবল একটাই কাজ, ন রটা ফলেন দখােনা। আমােদর এইটােক কান মহ ার
al

(block) িভতের রাখার দরকার নাই, যিদও আমরা উপের আমরা সটা রেখিছ। মহ া (block)
মূলত দরকার যিদ ওইখােন আমােদর এক গাদা িববৃিত িনবাহ (execute) করেত হয়। তা এই
িবশাল এক গাদা িববৃিত ক একটা যিদ (if) এর মহ ার িভতের ঢুিকেয় দওয়ার চেয় িডঙােনা
(continue) ব বহার কের মেলখ (program) িলখেল বুঝেত িবধা হয়।

৮.৬ জ ঘূণীেত ােসর ব বহার (For Loop and Decrement)

তুিম দশতলা দালােনর ১ তলা থেক উে ালেক (elevator) কের দশ তলায় উঠেত ও নামেত
চাও। তা উে ালকেক এক তলা হেত আেরক তলায় যাওয়ার জ িতবার আলাদা কের িনেদশ
িদেত হয়। এবার এমন একিট মেলখ (program) রচনা কেরা যিট তামার হেয় উে ালকেক
এেকর পর এক উঠার ও তারপর নামার িনেদশ িদেব।
এই মেলখেয়র (program) উঠার অংশ তা খুবই সহজ। নীেচর মেলখ (program)
দেখা, মূলত জ ঘূণী (for loop) দখেব। ঘূণী tola চলেকর (variable) মান ১ হেত ৯ (বা
১০ এর কম) পয ১ বািড়েয় বািড়েয় চলেব আর িতবাের ফলেন (output) দখােব tola হেত

১৬০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৭. জ ঘূণীেত ফাঁকা শত (For Loop Empty Condition)

tola + 1 এ উঠেত হেব অথাৎ কান পােক tola চলেকর মান ৪ হেল দখােব ৪ হেত ৫। তলা
৯ হেত ১০ এ উেঠ আর উঠেত হেব না তাই ঘূণী িক tola = 10 এর জ ঘুরেব না।

িফিরি ৮.৬: দশতলায় উঠা-নামা (Ten Floor Up Down)


/ / উঠার অংশ
cout << " t o l a 1 " << endl ;
cout << " utha shuru " << endl ;
f o r ( i n t t o l a = 1 ; t o l a < 10 ; ++ t o l a )
cout << t o l a << " hote " << t o l a +1 << endl ;
cout << " utha shesh " << endl ;

cout << " t o l a 10 " << endl ;

/ / নামার অংশ
cout << "nama shuru " << endl ;

5g
f o r ( i n t t o l a = 10 ; t o l a > 1 ; −−t o l a )
cout << t o l a << " hote " << t o l a−1 << endl ;
cout << "nama shesh " << endl ;

cout << " t o l a 1 " << endl ;


in
এবার আসা যাক মেলখেয়র পেরর অংেশ। এখােন ১০ থেক নামা , থেম ১০ থেক
৯ এ, তারপর ৯ থেক ৮ এ, এইভােব ২ থেক ১ এ িগেয় শষ, ১ থেক আর নামার ব াপার নাই।
am

কােজই এইখােনও আমরা একটা ঘূণী (loop) ব বহার করেবা। এই ঘূণী চলেব tola চলেকর
মান ১০ হেত ২ (বা ১ এর বশী) পয , আর িতবাের tola চলেকর মান এক কমেব, অথাৎ জ
ঘূণীর (for loop) হালায়ন অংেশ ++tola না িলেখ িলখেবা −−tola। ব স হেয় গেলা।
এবার একটা খুচরা িবষয়। এখােন tola চলকিট (variable) আমরা ইবার ঘাষণা কের-
িছ, ই ঘূণীেত (loop) ইবার। যেহতু জ ঘূণীর (for loop) অংেশ চলক েলা ানীয় চলক
(local variable) িহসােব ঘাষণা (declare) করা হেয়েছ, সেহতু চলক িটর কাযকারীতা িক-
al

সংি ঘুণীর িভতেরই শষ। কােজই িতবার ঘািষত চলক আসেল নাম একই হেলও আলাদা
আলাদা চলক। তুিম যিদ কবল একবার চলক ঘাষণা কের কাজ সারেত চাও সটাও করেত পা-
রেব। থম ঘূণীরও (loop) আেগ int tola; িলেখ চলক ঘাষণা একবারই কের ফেলা আর
ঘূণী েটার আদ ায়ন (initialisation) অংেশ int tola = 1; না িলেখ ফ tola = 1; কের
দাও। তাহেল একই tola চলক উভয় ঘূণীেত ব ব ত হেলা।

৮.৭ জ ঘূণীেত ফাঁকা শত (For Loop Empty Condition)

জ ঘূণীেত (for loop) শত ফাঁকা রাখেল কী ঘেট? জ ঘূণীেত শত ফাঁকা রেখ এমন এক-
িট মেলখ (program) রচনা কেরা যিট দশিট ধনা ক পূণক (positive integer) যাগান
(input) িনেব। যিদ বা ঋণা ক (negative) পূণক যাগান দয়া হয়, সটা উেপ া করেব।
মেলখিট এরপর ধনা ক সংখ া দশিটর যাগফল ফলেন (output) দখােব।
নীেচর মেলখ (program) দেখা। এেত শত ফাঁকা রাখা হেয়েছ। আমরা gunti চলকিটেক
(variable) চাইেল জ ঘূণীেত (for loop) ঘাষণা (declare) করেত পারতাম, িক jogfol

১৬১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৭. জ ঘূণীেত ফাঁকা শত (For Loop Empty Condition)

চলকিটেক অব ই ঘূণীর বাইেরই ঘাষণা করেত হেব। ঘূণীর (loop) িভতের দেখা যাগান
যাচনা (input prompt) কের ন র যাগান নয়া হেয়েছ। যাগান নয়া ন রিট যিদ বা
ঋণা ক হয় তাহেল পাক িডঙােত হেব তাই continue; দয়া হেয়েছ, আর ধনা ক হেল যাগফল
বাড়েব, আর নিতও বৃি (increment) পােব। নিতর মান বাড়ােনার পেরই আমরা একিট যিদ
নাহেল (if else) লািগেয় পরী া কের দখেত পাির gunti চলেকর মান ১০ হেলা িকনা। যিদ
হেয় থােক তাহেল আমােদর আর ঘূণী (loop) চািলেয় যাওয়া উিচৎ হেব না। আমরা তাই break
; লািগেয় ঘূণীেত াি িদেবা। আর gunti চলেকর (variable) মান ১০ না হেয় থাকেল পের
িনয় ণ (control) জ ঘূণীর (for loop) হালায়ন (update) অংেশ যােব, সখােন তা িকছু
হেব না, কারণ সিট ফাঁকা। তারপর শত (condition) অংেশ যােব, সখােনও ফাঁকা। িক একটা
িবষয় মেন রাখেব ফাঁকা শত মােন সব সময় সত অথাৎ এই ে for ( ; ; ) আর for (
; true ; ) একই কথা। যাই হাক শতা সত হওয়ায় পেরর পাক যথারীিত হেব। তুিম যিদ
কান কারেণ if (gunti >= 0) break; এই শত যু াি এই জ ঘূণীেত না দাও তাহেল
িক ঘূণী থেক বর হেয় যাওয়ার আর কান পথ রইেলা না। ওিদেক ফাঁকা শত তা সবসময় সত
রেয়েছ। এমতাব ায় এই ঘূণী (loop) অসীম সংখ ক বার ঘূরেত থাকেব।

for ( ; ; )
{
5g
i n t gunti = 0 , jogf ol = 0 ;

/ / শত ফাঁকা
in
cout << "nombor koto ? " ;
i n t nombor ; c i n << mombor ;
am

i f ( nombor <= 0 ) / / ধনা ক না হেল


continue ; / / পাক িডঙাও

j o g f o l += nombor ; / / যাগফল

++ g un t i ; / / হালায়ন
al

/ / নীেচর শত যু াি না িদেল অসীম ঘূণী হেব


i f ( g u n t i >= 10) / / শত এখােন
break ; / / ঘূণীেত াি
}

cout << " j o g f o l " << j o g f o l << endl ;

য ঘূণী (loop) অসীম সংখ ক বার ঘুের, আর ঘূণী থেক বর হওয়ার কান েযাগ নাই, এ
রকম ঘূণীেক বলা হয় অসীম ঘূণী (infinite loop)। ফাঁকা শতা ছাড়াও অসীম ঘূণী তরী হেত
পাের, যিদ তামার শত এমন হয় য সটা সবসময় সত , যমন ধেরা gunti == gunti এই
শতিটও সবদা সত , কােজই এটাও অসীম ঘূণী তরী করেব। অসীম ঘূণী তরী হওয়া মােন এই
মেলখ কান িদনই থামেব না। মেলখেত (program) ঘূণী (loop) তরী করেলই আমােদর
তাই অিতির সতক থাকেত হয় যােত সটা কান ভােবই অসীম ঘূণী না হেয় যায়।

১৬২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৮. জ ঘূণীেত ফাঁকা হালায়ন (For Loop Empty Update)

৮.৮ জ ঘূণীেত ফাঁকা হালায়ন (For Loop Empty Update)

এমন একিট মেলখ (program) রচনা কেরা যিট দশিট ধনা ক পূণক (positive integer)
যাগান (input) িনেব। যিদ বা ঋণা ক (negative) পূণক যাগান দয়া হয়, সটা উেপ া
করেব। মেলখিট এরপর ধনা ক সংখ া দশিটর যাগফল ফলেন (output) দখােব।
এই মেলখিট লখা একদমই সাজা। এখােন মূলত আমরা দখেত চাই য জ ঘূণীেত
(for loop) আদ ায়ন (initialisation) অংেশর পাশাপািশ হালায়ন (update) অংশও ফাঁকা
রাখা যায়। নীেচর মেলখ (program) দেখা। এখান আমরা েটা চলক (variable) gunti
আর jogfol িনেয়িছ। েটারই আিদ মান (initial value) , কারণ এখন একটা সংখ াও
যাগান (input) নয়া হয় িন, আর তাই যাগফলও এই অব ায় । চলক gunti ক তুিম
চাইেল অব আদ ায়ন (initialisation) অংেশও ঘাষণা কের আিদ মান িদেত পারেত যমন
for ( int gunti = 0; gunti < 10; ) িক চলক jogfol ক অব ই ঘূণীর (loop) বাইের
ঘাষণা করেত হেব, কারণ আমরা ফলন (output) দখােবা তা ঘূণীর বাইের।
i n t gunti = 0 , jog f ol = 0 ;

{
cout << "nombor koto ? " ;
i n t nombor ; c i n << mombor ;
5g
f o r ( ; g u n t i < 10 ; ) / / ফাঁকা হালায়ন
in
i f ( nombor <= 0 ) / / ধনা ক না হেল
continue ; / / পাক িডঙাও
am

j o g f o l += nombor ;
++ g un t i ; / / হালায়ন
}

cout << " j o g f o l " << j o g f o l << endl ;


al

উপেরর মেলখেয়র জ ঘূণীেত (for loop) আমরা কবল শেতর (condition) অংশিট
রেখিছ, মাট ন র ১০ িট হেলা িকনা তা পরী া করেত। ঘূণীর (loop) িভতের যাগান যাচনা
(input prompt) কের ন রিট যাগান (input) নয়া হেয়েছ। তারপর nombor চলেকর মান
যিদ বা কম হয় তাহেল continue; িদেয় পাক িডঙােত বলা হেয়েছ। ধনা ক সংখ া ছাড়া
অ রকেমর সংখ া আসেল আমরা উেপ া করেত চাই, এ কারেণ এ ব ব া।
আমরা জািন জ ঘূণীেত (for loop) continue; করেল িনয় ণ (control) সরাসির হা-
লায়ন (update) অংেশ চেল যায়। তা আমােদর এই ঘূণীেত হালায়ন অংশেতা ফাঁকা রেখিছ,
কােজই gunti চলেকর মান যা িছেলা তাই থাকেলা। ফেল আবার যাগান যাচনা কের ন র যাগান
নওয়া হেব। যত ণ বা তার কম কান সংখ া যাগান (input) দয়া হে তত ণ এইভােব
চলেত থাকেব gunti চলেকর মান বাড়েব না। এবার ধেরা ধনা ক ন রিট যাগান দয়া হেলা,
তাহেল nombor <= 0 এই শতিট িমথ া হেব, ফেল িনয় ণ (control) আর পাক িডঙােব না,
পেরর সািরেত িগেয় ন রিটেক jogfol এর সােথ যাগ করেব, আর gunti চলেকর (variable)
মানও এক বাড়েব। এই ভােব দশিট ধনা ক সংখ া হেলই কবল gunti চলেকর মান বেড় দশ
হওয়া স র আর তােত ঘূণী (loop) থেক বর হেয় যাওয়া স র, ঋনা ক সংখ া বা িদেয়

১৬৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৮. জ ঘূণীেত ফাঁকা হালায়ন (For Loop Empty Update)

শত িমথ া করা স ব হেব না। তাহেল আমরা দখলাম ঘূণীর (loop) হালায়ন অংশেক ফাঁকা রেখ
শত সােপে হালায়ন করেত চাইেল সটা আমরা িববৃিত (statement) অংেশ িনেত পাির।
তেব একটা ব াপার এখােন রণ কিরেয় দয়া দরকার। ধেরা তেক খািতের ািম কের আমরা
কখেনাই ধনা ক সংখ া যাগান (input) না িদেয় কবলই বা ঋণা ক সংখ া যাগান িদেত
থাকলাম। এই অব ায় কী ঘটেব? তাহেল তা gunti চলেকর (variable) মান কখেনা বাড়েব
না, ফেল gunti < 10 শতিট িমথ া হওয়ার কান স াবনা থাকেছ না। এই অব ায় িক জ
ঘূণীিট (for loop) অসীম সংখ ক বার ঘুরেত থাকেব। য ঘূণী (loop) অসীম সংখ ক বার ঘুের,
আর ঘূণী থেক বর হওয়ার কান েযাগ নাই, এ রকম ঘূণীেক বলা হয় অসীম ঘূণী (infinite
loop)। অসীম ঘূণী তরী হওয়া মােন এই মেলখ কান িদনই থামেব না। ঘূণী (loop) তরী
করেলই আমােদর তাই সতক থাকেত হয় যােত সটা কান ভােবই অসীম ঘূণী না হেয় যায়।
যিদও এই মেলখেত (program) দশিট ধনা ক সংখ া যাগান (input) িদেয় িদেয় ঘূণী
থেক বর হওয়ার আমােদর েযাগ আেছ, তেব সটা কবল স ব যিদ যাগান দাতার (user
who is giving the input) সিদ া থােক আর আমরা তার ওপের আ া রাখেত পাির। তুিম
যিদ যাগান দাতার ওপের আ াশীল না হও তাহেল একটা কাজ করেত পােরা। সটা হেলা সেবা

যিদ ভুল কের ঋণা ক বা


5g
কত বার তুিম যাগান (input) চাইেব সটা িনিদ কের িদেত পােরা। যমন ১০ িট সংখ া যাগান
নয়ার জ ধেরা আমরা ধের িনলাম য সেবা ১৫ বার যাগান দয়া আমরা মেন নেবা। িনতা
কউ দয়, সই রকম ভুল আমরা এে ে ৫ বােরর বশী হেত
িদেবা না। তাহেল আমরা নীেচর মেতা কের মেলখ (program) িলখেত পাির।
in
i n t chesta = 0 , gunti = 0 , j o g f o l = 0 ;

f o r ( ; chesta < 15 && gunti < 10 ; )


{
am

cout << "nombor koto ? " ;


i n t nombor ; c i n << mombor ;

++ chesta ;

i f ( nombor <= 0 ) / / ধনা ক না হেল


al

continue ; / / পাক িডঙাও

j o g f o l += nombor ;
++ g un t i ; / / হালায়ন
}

i f ( g u n t i == 10)
cout << " j o g f o l " << j o g f o l << endl ;
else
cout << " sorboccho chesta shesh " << endl ;

উপেরর এই মেলখেত আমরা chesta নােমর আেরকিট চলক িনেয়িছ যিট িদেয় সবেমাট
কয়বার যাগান (input) দয়া হেলা সটা িহসাব রাখেবা। িতবার ন র যাগান দওয়া মা ই
chesta চলেকর (variable) মান এক বাড়েব, ন রিট ধনা ক, ঋণা ক, যাই হাক, এ
কারেণ এিট িক if (nombor <= 0) continue; এর আেগ দয়া হেয়েছ। আর chesta

১৬৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.৯. জ ঘূণীেত ফাঁকা িববৃিত (For Loop Empty Statement)

চলেকর মান যােত ১৫ হওয়া পয ঘূণী ঘুের তাই আমরা এবার ঘূণীর (loop) শত অংশিট বদেল
িলেখিছ chesta < 15 && gunti < 10। এর মােন হেলা য কান একিট শত ভ হেলই ঘূণী
আর ঘুরেব না, কােজই ১৫ বােরর বশী চ া করা স ব হেব না, আবার ১০ িটর বশী ধনা ক
ন রও যাগান (input) দয়া স ব হেব না। তাহেল একটা ব াপার আমরা দখলাম, ঘূণীর শত
(condition) অংেশ আমরা চাইেল একািধক শত (condition) বুলক সংেযাজক (boolean
connectives) যমন এবং &&, অথবা | |, নয় ! িদেয় সংযু কের িদেত পাির। সবেশেষ দেখা
ঘূণীর (loop) বাইের আমরা যাগফল ফলন (output) িদেয়িছ যিদ gunti চলেকর মান ১০ হেয়
থােক। আর না হেয় থাকেল মােন ১৫ বােরর চ ায়ও ১০ িট ধনা ক সংখ া নয়া স ব হয় নাই
সে ে একটা বাতা (message) দখােনা হেয়েছ য সেবা চ া শষ হেয় গেছ।

৮.৯ জ ঘূণীেত ফাঁকা িববৃিত (For Loop Empty Statement)

এমন একিট মেলখ (program) িলেখা যিট থেক িত পােক ৩ কের বািড়েয় সেবা ১০

i n t nombor = 0 ; / / নিত িদেয় ঘূণী 5g


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

f o r ( i n t g u n t i = 0 ; gu n ti < 10 ; ++ gunti )
{
in
i f ( nombor % 7 == 0 ) / / ন র িদেয় াি
break ;
nombor += 3 ;
am

}
cout << nombor << endl ;

াি (break) ব বহার কের এই মেলখিট লখা বশ সহজ। ঘূণী (loop) gunti চলেকর
(variable) মান থেক দেশর কম পয চালাও আর িত পােক nombor চলেকর মান ৭
ারা িবভাজ হেলা িকনা পরী া কের দেখা। ৭ ারা িবভাজ হেল ঘূণীেত াি (break) দাও।
al

আর না হেল nomborএর মান ৩ বাড়াও। তুিম িক চাইেল এই একই কাজ নীেচর মেতা কেরও
করেত পােরা যখােন আমরা ঘূণী (loop) চািলেয়িছ nombor চলক ব বহার কের। ল কেরা
nombor চলেকর মান থেক কের িতবাের ৩ কের বাড়েব, আর ঘূণী চলেব যত ণ
nombor ৭ ারা িবভাজ নয় তত ণ, ৭ ারা িবভাজ হওয়া মা ঘূণী শষ হেয় যােব। িববৃিত
অংেশ দেখা আমরা gunti চলেকর মান ১০ বা বশী হেল ঘূণীেত াি (break) িদেয়িছ, আর
না হেল gunti চলেকর মান এক বাড়েব।
i n t nombor , gu n t i = 0 ; / / ন র িদেয় ঘূণী
f o r ( nombor = 0 ; nombor % 7 ! = 0 ; nombor += 3 )
{
i f ( g u n t i >= 10) / / নিত িদেয় াি
break ;
++ g un t i ;
}
cout << nombor << endl ;

১৬৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১০. িববৃিত হালায়ন িমথি য়া (Statement and Update)

উপেরর িট মেলখেত আমরা একবার একটা চলকেক (variable) ঘূণীেত (loop) আর


অ চলকিটেক াি (break) এ ব বহার কেরিছ, আর আেরকবার িঠক উে াটা কেরিছ। আম-
রা িক চাইেল উভয় চলকেক ঘূণীেত ব বহার করেত পাির না। অব ই পাির। নীেচর মেলখ
(program) খয়াল কেরা। এখেনা nombor ও gunti েটা চলকেকই ঘূণীেত ব বহার করিছ।
আদ ায়ন (initialisation) অংেশ েটার মানই হেয়েছ থেক, আমরা িবিত (comma)
, ব বহার কেরিছ এখােন। শত (condition) অংেশ আমরা েটা শত িদেয়িছ এবং && িদেয় জা-
ড়া িদেয় যােত ঘূণী তত ণ চেল যত ণ উভয় শত সত হয়। য কান একিট শত িমথ া হেলই ঘূণী
শষ হেয় যােব। আর শত িট হেলা gunti < 10 ও nombor % 7 == 0, থম শতিট সেবা
দশ ধােপর জ আর ি তীয় শতিট ৭ ারা িবভাজ না হওয়া পয । আর ঘূণীর (loop) হালায়ন
(update) অংেশ দেখা আমরা gunti আর nombor েটােকই বািড়েয়িছ, একটােক এক কের,
আেরকটােক িতন কের। তা এ সেবর ফেল আমােদর িববৃিত (statement) অংেশ িক আর িক-
ছুই করার থাকেছ না। আমরা তাই িববৃিত অংেশ একটা ফাঁকা িববৃিত (empty statement)
িদেয়িছ কবল একটা িদিত (semicolon) ব বহার কের। তুিম চাইেল {} ফাঁকা মহ া (block)
িদেয়ও সটা করেত পােরা।
i n t nombor , gu n ti ;

5g
f o r ( g u n t i = 0 , nombor = 0 ;
g un t i < 10 && nombor % 7 ! = 0 ;
++ g un t i , nombor += 3 )
/ / আদ ায়ন
/ / শত
/ / হালায়ন
in
; / / ফাঁকা িববৃিত
cout << nombor << endl ;

তাহেল আমরা দখলাম, জ ঘূণীর (for loop) িববৃিতও (statement) ফাঁকা থাকেত পা-
am

র। আর আদ ায়ন (initialisation) ও হালায়ন (update) অংেশ একািধক চলক ব বহার করা


যােব, উপেরা বৃি বা াস য কবল এক কের করেত হেব তাও না, বরং অ য কান পিরমা-
ন করা যােব। এছাড়া শত (condition) অংেশও দরকার মেতা একািধক শত বুলক সংেযাজক
(boolean connectives) যমন এবং && অথবা | | িদেয় জাড়া দওয়া যােব।
al

৮.১০ িববৃিত হালায়ন িমথি য়া (Statement and Update)

সাধারণত জ ঘূণীর (for loop) চলকিটর (variable) মান আমরা িববৃিতেত (statement)
অথবা হালায়েন (update) পিরবতন কির। িক উভয় অংেশ পিরবতন করেল অব া কী দাঁড়ায়?
f o r ( i n t gu n t i = 0 ; gunt i < 10 ; ++ gunti )
{
cout << gu n t i << " " ;
i f ( g u n t i == 5 )
++ g un t i ;
}
cout << endl ;

উপেরর মেলখেত (program) আমরা জ ঘূণীর (for loop) চলক gunti এর মান
িববৃিত (statement) ও হালায়ন (update) উভয়খােন পিরবতন কেরিছ। হালায়েন িনয়িমত

১৬৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১১. অদরকারী জ ঘূণী (Unnecessary For Loop)

পিররতন িহসােব এক কের বাড়েব িতবার, আর িববৃিতেত যিদ চলিত মান (current value)
হয় তাহেল এক বাড়েব। এর ফেল কী হেব? খয়াল কেরা gunti এর মান ৫ ছাড়া অ িকছু হেল
কবল হালায়ন অংেশ এক বাড়েব, িক gunti এর মান ৫ হেল, তখন িববৃিতেত if (gunti
== 5) শত সত হওয়ায় সখােন gunti এর মান এক বাড়েব, আবার হালায়েন তা আেরা এক
বাড়েবই। ফেল পেরর পােক যখন gunti চলেকর মান ফলেন (output) আসেব তখন সটা ৬
না হেয় ৭ হেব। কােজই নীেচ যমন দখােনা হেলা আমরা ফলেন ৬ দখেত পােবা না।
0 1 2 3 4 5 7 8 9

জ ঘূণীর (for loop) হালায়ন (update) অংেশ বৃি টা ওরকমই থা ক, িক িববৃিত


(statement) অংেশ আমরা বৃি না কের যিদ াস (decrement) কির, তাহেল অব া কী
দাঁড়ােব? ধরা যাক নীেচর মেলখেয়র (program) মেতা িববৃিতেত gunti চলেকর মান ৫ হেল
এক না বািড়েয় আমরা বরং এক কমালাম। খয়াল কেরা এই ে gunti চলেকর মান ৫ হওয়ার
পের যিদর শত সত হওয়ায় এক কেম ৪ হেব, িক হালায়েন িগেয় আবার এক বেড় হেয় যােব ৫,
ফলেন (output) ৫ দখােনার পের আবার যিদর শত সত হওয়ায় এক কেম হেব ৪, হালায়েন

5g
িগেয় হেব ৫, ফেল আবার ফলেন ৫ দখােব। কােজই 0 1 2 3 4 5 কের একবার ৫ দখােনার
পের এই জ ঘূণী (for loop) তারপেরর িত পােকই কবল ৫ই দিখেয় যােব। আর এই ঘূণী-
ত (loop) বর হওয়ার কান উপায় নাই। কােজই এিট একিট অসীম ঘূণীেত (infinite loop)
পিরণত হেব। তুিম জােনা আমরা সবসময় চাই অসীম ঘূণী এিড়েয় যেত।
in
f o r ( i n t g u n t i = 0 ; gu n ti < 10 ; ++ gunti )
{
cout << gu n t i << " " ;
am

i f ( g u n t i == 5 )
−−g un t i ;
}
cout << endl ;
al

৮.১১ অদরকারী জ ঘূণী (Unnecessary For Loop)

এমন একিট মেলখ (program) রচনা কেরা যিট ০ থেক ৯ পয িতিট অ েক কথায় িলখ-
ব। আর অ েলােক পরপর অে ই িলখেল য মেলখ হেতা তার সােথ তফাৎটা কমন দাঁড়ায়?
0 1 2 3 4 5 6 7 8 9

অ েলােক উপেরর মেতা কের পরপর অে ই িলখেল ব াপারটা তা খুবই সহজ। এই রকম
মেলখ (program) আমরা নীেচ দখালাম। একটা জ ঘূণী (for loop) চলক (variable)
onkoএর মান ০ থেক ৯ পয এক কের বািড়েয় যােব, আর িত পােক আমরা cout ব বহার
কের onkoটােক দখােবা। এখােন cout জােন কান অ েক কীভােব িলখেত হয়!
f o r ( i n t onko = 0 ; onko <= 9 ; ++okno )
cout << onko << " " ;
cout << endl ;

১৬৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১১. অদরকারী জ ঘূণী (Unnecessary For Loop)

এবার অ েলােক যিদ অে না িলেখ আমরা কথায় িলিখ, তাহেল কী করেবা? এখােন যেহতু
আমরা ০ থেক ৯ পয অেনকবার কথায় িলখিছ, অেনেক তাই এখােন জ ঘূ্ণী (for loop)
ব বহার করেত উ ু হয়। ফেল তারা নীেচর মেতা কের মেলখ তরী কের। এখােন cout িক
কান অ েক কী ভােব িলখেত হেব তা জােননা, আমােদর তাই একিট পি ব াপার (switch
case) ব বহার কের িতিট অ েক আলাদা আলাদা কের বেল িদেত হেয়েছ।
f o r ( i n t onko = 0 ; onko <= 9 ; ++okno )
{
swtich ( onko )
{
case 0 : cout << " shunyo " ; break ;
case 1 : cout << " ek " ; break ;
case 2 : cout << " dui " ; break ;
case 3 : cout << " t i n " ; break ;
case 4 : cout << " char " ; break ;

5g
case 5 : cout << " panch " ; break ;
case 6 : cout << " soy " ; break ;
case 7 : cout << " shat " ; break ;
case 8 : cout << " aat " ; break ;
case 9 : cout << " noy " ; break ;
in
}
}
cout << endl ;
am

িক উপেরর মেলখেত (program) জ ঘূণী (for loop) ব বহার আসেল অদরকারী।


কারণ ঘূণীর (loop) িত পােক আসেল পি ব াপােরর (switch case) আলাদা আলাদা ব া-
পার িনবািহত (execute) হে । আমােদরেক তা িতিট পােকর জে সই আলাদা আলাদা
কাজই করেত হেলা, তাহেল আর ঘূণী কন ব বহার করেবা, কাজ েলা নীেচর মেতা কের সরাসির
এেকর পর এক িলখেলই তা হেয় যায়। মেন রাখেব আমরা ঘূণী তখনই ব বহার করেবা যখন িত
al

পােকর জ এই রকম আলাদা আলাদা িকছু করেত হয় না। যমন কথায় না দিখেয় অে দখা-
ল িক আমােদর জ ঘূণী ব বহার করেলই চলেতা কারণ cout ব বহােরর কারেণ িতিট অ
দখােনােত য িভ তা সটা আমােদর সরাসির সামলােত হয় না।
cout << " shunyo " ;
cout << " ek " ;
cout << " dui " ;
cout << " tin " ;
cout << " char " ;
cout << " panch " ;
cout << " soy " ;
cout << " shat " ;
cout << " aat " ;
cout << " noy " ;
cout << endl ;

১৬৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১২. জ ঘূণীর সাধারণ ব বহার (General Purpose For Loop)

৮.১২ জ ঘূণীর সাধারণ ব বহার (General Purpose For Loop)

জ ঘূণী (for loop) আমরা এ পয কবল ম (order), গমণ (progression), ধারা


(series) ইত ািদর ে ব বহার কেরিছ। জ ঘূণী (for loop) কী এ সব ছাড়া য কান শত
পরী ার মাধ েম সাধারণ ভােব একিট ঘূণী তরীেত ব বহার করা যায়?
িসিপিপ ছাড়া অ া অেনক ভাষায় জ ঘূণী (for loop) কবল ম (order), গমণ
(progression), ধারা (series) এসেবই ব বহার করা যায়। তেব িসিপিপর জ ঘূণী আসেল
অেনক শি শালী, এটােক য কান রকম ঘূণী তরীেত ব বহার করা যায়। ব ত িসিপিপেত জ
ঘূণী (for loop) িদেয়ই সকল রকেমর ঘূণী তরী করা যায়, কােজই অ কান ঘূণী দরকার হয়
না, যিদও িসিপিপেত আেরা িট ঘূণী (loop) আেছ, য েলা আমরা পেরর পাঠ েলােত দখেবা।
i n t nombor = 1 , g u n t i = 0 , j o g f o l = 0 ;

f o r ( ; nombor ! = 0 ; ) / / আদ ায়ন হালায়ন ফাঁকা


{
c i n >> nombor ;
i f ( nombor )
{
g un t i += 1 ;
// ন র

//
5g
/ / ন র যাগান নাও
না হেল

নিত এক বাড়েব
in
j o g f o l += nombor ; // যাগফেলও যাগ হেব
}
}
am

cout << " g u n t i " << g u nti << " " ;


cout << " j o g f o l " << j o g f o l << endl ;

উপেরর মেলখ (program) খয়াল কেরা। এখােন আমরা িকছু ন র যাগান (input)
িনেয় তােদর যাগফল বর করেত চাই। তেব কয়িট ন র যাগান িনেবা আমরা সটা আেগ থেক
জািননা । ব বহারকারী যত েলা ইে ন র যাগান িদেত থাকেব, যখন স আর কান ন র যাগান
al

িদেত চায় না তখন স একটা যাগান িদেয় সটা জানােব। আমরা তারপর কয়িট ন র যাগান
িনেয়িছ আর তােদর যাগফল কত সটা ফলেন (output) দখােবা।
তা এই মেলখিট (program) খুবই সহজ। আমরা একিট জ ঘূণী (for loop) িনেয়িছ,
িক এটােক আমরা কান চলেকর (variable) মান বািড়েয় বা কিমেয় ঘুরােবা না। আমরা মূলত
শতটা ব বহার করেবা ঘূণী (loop) তরীেত। িতনিট চলক (variable) nombor, gunti আর
jogfol নয়া হেয়েছ যােদর আিদমান (initial value) দওয়া হেয়েছ ঘূণীর বাইের। ঘূণীর পের
যেহতু gunti ও jogfol ফলেন (output) দখােনা হেব, তাই ও েলা অব ই ঘূণীর (loop)
বাইের ঘাষণা (declare) করেত হেব। িক nombor চলকিট ঘূণীর িভতের ঘাষণা ও আদ ায়ন
(initialisation) করা যেত পারেতা। যাইেহাক ঘূণীর িভতের ন রিট যাগান িনেয় যিদ না
হয় তাহেল নিত এক বািড়েয় যাগফেলর সােথ ন রিট যাগ করা হেয়েছ।
একটা িবষয় খয়াল কেরা আমােদর ঘূণীেত (loop) শত nombor != 0 অথাৎ nombor
এর মান ছাড়া অ িকছু হেল কবল ঘূণীর িববৃিত (statement) িনবািহত (execute)
হেব। তা থমবার আমরা তা অব ই ঘূণীর িভতের ঢুকেত চাই, িক nombor তা তখন
পয একটাও যাগান (input) নয়া হয় নাই। ঘূণীর িভতের যিদ আমােদর ঢুকেতই হয়, আমােদর

১৬৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৩. জ ঘূণীর নানান বাহার (For Loop Variations)

সে ে কান ভােব শত সত কের িদেত হেব, nombor চলকের আিদমান ছাড়া একটা িকছু
িদেয় রাখেত হেব। আমরা nombor এর আিদ মান িদেয়িছ 1, তুিম চাইেল ছাড়া অ য
কান িকছু িদেত পারেত। চলক gunti আর jogfol এর আিদমান তা ই িদেত হেব, সটা
বুঝেতই পারেছা, যেহতু তখনও আমােদর একটাও ন র যাগান নওয়া হয় নাই।
আসেল জ ঘূণীেত (for loop) শত পরী ণ হয় সাধারণত িববৃিতেত (statement) ঢুকার
আেগ, অথচ আমরা এখােন শত পরী া করেত চাই িববৃিত অংেশর পের, কারণ িববৃিতেত আমরা
য ন রিট যাগান িনেবা সটা আমরা পরী া করেত চাই পেরর পােক ঢুকার আেগ। পেরর পােকর
আেগ পরী ণ মােন আেগর পােকর পের আর কী! আর স কারেণ জার কের nombor চলেকর
আিদ মান 1 িদেয় থমবার শত সত বািনেয় আমরা খািনকটা চালািক কেরিছ!

৮.১৩ জ ঘূণীর নানান বাহার (For Loop Variations)

জ ঘূণী (for loop) কত ভােব লখা যায়? এর মেধ িন য় বুেঝ ফেলেছা for ( ; ; ) জ ঘূণীর
ব নীর (brackets) িভতেরর িদিত (semicolon) ; েটা কবল আবি ক। তাহেল আদ ায়ন

িববৃিত
5g
(initialisation), শত (condition), হালায়ন (update) কত ভােব িব াস করা স ব?
f o r ( আদ ায়ন ; শত ; হালায়ন ) আদ ায়ন
f o r ( ; শত ; হালায়ন )
িববৃিত
in
উপের বামপােশ জ ঘূণীর (for loop) সাধারণ অব া দখােনা হেয়েছ, আর ডান পােশ
দখােনা হেয়েছ য চাইেলই আদ ায়ন (initialisation) অংশিট ঘূণীর (loop) বাইের িনেয় যা-
am

ওয়া যায়। তােত ফলাফল একই থাকেব। তেব তফাৎ অ একটুই আেছ সটা হেলা বামপােশর
আদ ায়েন যিদ চলক ঘািষত হয় সিট কবল ঘূণীর জ ানীয় চলক (local variable), তাই
ঘূণীর পের আর ব বহার করা যায় না। িক ডানপােশর আদ ায়েন যিদ চলক ঘািষত (variable
declaration) হয় সটা ঘূণীর (loop) পেরও ব বহার করা যােব। আমরা এর পের থেক আদ া-
য়ন (initialisation) ঘূণীর (loop) িভতেরই হয়েতা িলখেবা, তেব আেরকবার বেলই িদি চলক
ঘাষণার ব াপারিটেত কান সম া না থাকেল তুিম চাইেলই সিট ঘূণীর আেগই িলখেত পারেব।
al

তরাং আদ ায়ন কাথায় থাকেলা স িবষেয় িভ তা এখােনর পের আর দখােবা না।


f o r ( আদ ায়ন ; শত ; হালায়ন ) f o r ( আদ ায়ন ; শত ; )
িববৃিত {
িববৃিত
হালায়ন
}

এরপর উপের দেখা আমরা কী ভােব হালায়েনর (update) অংশট যথা ােন না িলেখ িব-
বৃিত (statement) সােথ িদেয় িদেয়িছ। এেত ঘূণীর (loop) ফলাফল একই থাকেব, কারণ িব-
বৃিতর পরপরই তা হালায়ন িনবািহত (execute) হেতা, এখেনা তাই হে । কােজই তুিম চাইেল
য কান সময় এইটা করেত পােরা। আমরা এরপের হালায়ন (update) যথা ােনই রাখেবা, এ
সং া ভদন েলা (variation) আর দখােবা না।
f o r ( আদ ায়ন ; ; হালায়ন ) f o r ( আদ ায়ন ; true ; হালায়ন )
{ {

১৭০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৩. জ ঘূণীর নানান বাহার (For Loop Variations)

i f ( ! শত ) break ; i f ( ! শত ) break ;
িববৃিত িববৃিত
} }

এবার আমরা শত (condition) অংেশর িভ তা দখেবা। উপের দেখা আমরা শতিটেক


িববৃিতর (statement) অংেশ িনেয় িগেয়িছ। ফেল শত অংেশ বাম পােশর মেতা হয় ফাঁকা রাখা
হেব, না হয় ডানপােশর মেতা true িলেখ দওয়া হেব। েটা মূলত একই কথা কারণ ফাঁকা শত
মােন সত । শত যখন িববৃিত অংেশ গেছ তখন দেখা আমরা ! লািগেয় উে া শত িদেয় ঘূণীেত
(loop) াি (break) িদেয়িছ যােত শত িমথ া হেলই ঘূণী থেক িনয় ণ (control) বর হেয়
যায়। তরাং এই ভদন েলা (variation) জ ঘূণীর (for loop) সাধারণ অব ার সমাথক।
f o r ( আদ ায়ন ; শত১ ; হালায়ন ) f o r ( আদ ায়ন ; শত১ ; হালায়ন )
{ {
i f ( শত২ ) i f ( ! শত২ ) continue ;
িববৃিত িববৃিত
}

f o r ( আদ ায়ন ; ; হালায়ন )
{
i f ( ! শত১ ) break ;
5g}

f o r ( আদ ায়ন ; ; হালায়ন )
{
i f ( ! শত১ ) break ;
in
i f ( শত২ ) িববৃিত i f ( ! শত২ ) continue ;
} িববৃিত
}
am

উপের দেখা িববৃিত অংেশ আমরা আেরকিট শত ব বহার কের িববৃিত িনবাহ কেরিছ। তা
আমরা চাইেল এখােন উপেরর ডান পােশর মেতা কের শত২ এর িবপরীত শত িদেয় পাক িডঙােত
(continue) পাির। তােত িববৃিত আর যিদ (if) এর অধীেন থাকেছ না। উদাহরণ েলার শত১ ক
যিদ আমরা িববৃিত অংেশ নািমেয় দই তাহেল আমরা যা পােবা তাও উপের দখােনা হেয়েছ।
f o r ( আদ ায়ন ; ; ) f o r ( আদ ায়ন ; ; )
al

{ {
i f ( ! শত১ ) break ; i f ( ! শত১ ) break ;
i f ( শত২ ) িববৃিত i f ( ! শত২ )
হালায়ন {
} হালায়ন
continue ;
}
িববৃিত
হালায়ন
}

সবেশেষ আমরা উপের একটু দিখ হালায়নটু (update) যিদ িববৃিত (statement) অংেশ
ঢুেক যায় তাহেল াি (break) আর িডঙােনার (continue) সােথ কী িমথি য়া ঘেট। িবেশষ
কের ডানপােশ দেখা শত২ সত না হেল আমােদর থেম হালায়েনর (update) কাজটু করেত
হেব, তারপর আমরা িডঙােত (continue) পারেবা। এর কারণ for(আদ ায়ন; ; ) এখােন যেহতু

১৭১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৪. পূব শেতর ণ ঘূণী (Precondition in While Loop)

হালায়ন অংশটু ফাঁকা আর continue করেল াভািবক ভােব জ ঘূণীেত (for loop) হালা-
য়ন অংশটু েতই িনয় ণ (control) চেল যায়, সেহতু হালায়েনর কাজটু আমােদর continue;
এর আেগই সের ফলেত হেব। এ ছাড়া খয়াল কেরা হালায়েনর কাজটু আমরা িববৃিতর পেরও
কেরিছ, সটােতা াভািবক ভােবই হওয়ার কথা।

৮.১৪ পূব শেতর ণ ঘূণী (Precondition in While Loop)

িসিপিপেত একিট মেলখ (program) িলেখা যিট ব বহারকারীর (user) কােছ থেক িট ধনা-
ক পূণক (positive integer) যাগান (input) িনেয় তােদর গির সাধারণ ণনীয়ক বা গসা
িনণয় করেব। এই মেলখিট তুিম ণ ঘূণী (while loop) ব বহার কের িলখেব।
িফিরি ৮.৭: িট সংখ ার গসা (HCF of Two Numbers)
i n t purnok1 , purnok2 ; / / চলক ঘাষণা
cout << " duto dhonatok purnork : " ; / / যাগান যাচনা

5g
c i n >> purnok1 >> purnok2 ; / / যাগান নয়া

i f ( purnok1 <= 0 | | purnok2 <= 0 ) / / ধনা ক না হেল


{
cout << " shunyo ba r i n a t o k purnok ! " << endl ;
in
ret ur n EXIT FAILURE ;
}
am

/ / গসা িনণেয়র মুল অংশ


i n t vagshesh = purnok1 % purnok2 ; / / ভাগেশষ িনণয়
while ( vagshesh ) / / ভাগেশষ না হেল
{
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
al

vagshesh = purnok1 % purnok2 ; / / আবার ভাগেশষ


}

cout << " gosagu : " << purnok2 << endl ; / / ভাজকই গসা

ret ur n EXIT SUCCESS ;

উপের দখােনা মেলখ (program) খয়াল কেরা। আমরা থেম চলক ঘাষণা (variable
declare) কের যাগান যাচনা (input prompt) কের পূণক (integer) িট যাগান (input)
িনেয়িছ। এরপর আমরা যিদ (if) লািগেয় শত পরী া কেরিছ, দেখিছ পূণক িটর য কানিট
বা তার কম িকনা। কারণ বা ঋণা ক সংখ ার জ আমরা গসা িনণয় করেবা না, সে ে
বরং আমরা িট বাতা (error message) দিখেয় মেলখ (program) ব থতার (failure)
সােথ শষ করেবা। এরপের রেয়েছ ঘূ্ণী (loop) িদেয় আমােদর গসা িনণেয়র মুল অংশটু ।
গসা িনণয় করেত গেল আমােদর থেম দ সংখ া িটর একিটেক িদেয় আেরকিটেক
ভাগকের ভাগেশষ বর করেত হয়। ভাগেশষ হওয়া মােন আমােদর আর ভাগ করেত হেব

১৭২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৪. পূব শেতর ণ ঘূণী (Precondition in While Loop)

না, আর সে ে ভাজক য পূণকিট সিটই হেলা আমােদর গসা । তা খয়াল কেরা আমরা িক
purnok1 ক purnok2 িদেয় ভাগ কের ভাগেশষ িনেয়িছ vagshesh চলেক। এে ে আমরা
িসিপিপর % অ ি য়া ব বহার কের ভাগেশষ িনণয় কেরিছ। আমরা এখােন একিট নতুন ধরেণর
ঘূণী (loop) ব বহার কেরিছ যিট হেলা ণ ঘূণী (while loop)। এই ণ ঘূণীর শত দয়া হেয়েছ
vagshesh অথাৎ ভাগেশষ যত ণ সত (বা নয়) তত ণ ঘূণী (loop) চলেব। তুিম িক
চাইেল শত িহসােব (vagshesh) না িলেখ (vagshesh != 0) িলখেত পারেত, সটা একই কথা
হেতা। যাইেহাক শতিট সত না হেল অথাৎ vagshesh হেল ঘূণীর বাইের মহ ার (block)
{} পের দেখা আমরা purnok2 ক গসা িহসােব ফলন দিখেয়িছ।
এখন কথা হে ভাগেশষ না হেল আমােদর কী করেত হেব? সটা আমরা মহ ার
(block) িভতের িলেখিছ। আমােদর আেগর ভাজকিট হেব নতুন ভাজ , তাই আমরা থেম িলেখিছ
purnok1 = purnok2;, এেত িক আেগর ভাজ িট হািরেয় গেলা, আমােদর আসেল সিট আর
দরকার নাই। তারপর দেখা purnok2 = vagshesh; িলেখ আমরা ভাগেশষিটেক নতুন ভা-
জক িহসােব িনেয় িনলাম। তুিম িন য় বুঝেত পারেছা কন purnok1 = purnok2; আেগ আর
purnok2 = vagshesh; পের িলখেত হেয়েছ। যিদ উে াটা করা হেতা তাহেল িক purnok2
= vagshesh; এর কারেণ purnok2 যিট িকনা আমােদর নতুন ভাজ হেব সিটর মান হাির-

5g
য় যেতা, ফেল িঠক পরপরই purnok1 = purnok2; করেল আমরা য ভাজ িট পতাম সটা
আসেল vagsheshএরই মান। নতুন ভাজ ও নতুন ভাজক িঠক করার পের দেখা এবার আমরা
আবার ভাগেশষ িনণয় কেরিছ vagshesh = purnok1 % purnok2 িলেখ। এই ভাগেশষিট
হেল আমােদর ঘূণী (loop) থেক বর হেয় যেত হেব, আর না হেল আবারও ঘূণীর
in
(loop) মহ ার (block) িভতের যা আেছ তা করেত হেব। তা এই হেলা আমােদর মেলখ।

f o r ( i n t vagshesh = purnok1 % purnok2 ; / / আদ ায়ন


vagshesh ! = 0 ; / / শত
am

vagshesh = purnok1 % purnok2 ) / / হালায়ন


{
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
}
al

তুিম হয়েতা এবার করেত পােরা, আ া আমরা িক এই মেলখ জ ঘূণী (for loop)
িদেয় িলখেত পারতাম। কন নয়? উপের দেখা আমরা একই মেলখ জ ঘূণী (for loop)
ব বহার কের িলেখিছ, মূলত ণ ঘূণীর (while loop) বদেল জ ঘূণীটা (for loop) এখােন
দখােনা হেয়েছ। আদ ায়ন (initialisation) অংেশ আেছ থমবার ভাগেশষ িনণেয়র ব াপারটা,
শত অংেশ (condition) আেছ ভাগেশষ না হওয়ার শত যটা িকনা এখােন vagshesh
!= 0 িলখা হেয়েছ িক কবল vagshesh িলখেলও চলেতা। আর হালায়ন (update) অংেশ
আবার ভাগেশষ িনণেয়র অংশটু িদেয়িছ। জ ঘূণীর (for loop) নানান বাহার আমরা য েলা
দেখিছলাম তুিম স েলা এখােনও িনেজ িনেজ েয়াগ করেত পােরা।
এবার তাহেল করেত পােরা, জ ঘূণী (for loop) িদেয়ই যিদ এেতা র কাজ হয়
তাহেল ণ ঘূণীর (while loop) দরকার কী? সিত বলেত আসেল দরকার নাই। িসিপিপেত
জ ঘূণী (for loop) এতটাই শি শালী য আর কান ঘূণী দরকার নাই। তেব জ ঘূণীটা তবুও
বশীর ভাগ ে ম, গমন, ধারা ইত ািদর ে বশী ব বহার করা হয়, আর ণ ঘূণী ব বহার
করা সাধারণ ে । ণ ঘূণীেত (while loop) ঘূণীর অংশ িহসােব আদ ায়ন (initialisation)
নাই, তাই সরকম িকছু দরকার হেল ওই অংশটু েক রাখেত হেব ঘূণীরও আেগ। ণ ঘূণীেত

১৭৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৫. উ র শেতর কর ঘূণী (Post-condition in Do Loops)

(while loop) হালায়ন (update) অংশও আলাদা কের নাই, কােজই সিট চেল যােব িববৃিতর
অংশ িহসােব। এর মােন তামােক অব ই িববৃিতর িভতের হালায়েনর কাজ কের িদেত হেব যােত
ঘূণীটা অসীম ঘূণীেত পিরণত না হয়। একটা িবষয় খয়াল কেরা শত থেমই িমথ া হেল ণ ঘূণী
(while loop) একবারও না ঘুরেত পাের, এটা অব জ ঘূণীর (for loop) জে ও সত ।
এই উভয় ঘূণী থেম শত পরী া কের, শত সত হেল তারপর ঘুরেত যায়। তামােক যিদ তম
একবার কাজ করেতই হয় সটা তাহেল ঘূণীর আেগ বা পের কের ফলেত হেব। গসা িনণেয়র
ে আমােদর যমন কমপে একবার ভাগেশষ করেতই হেব, যিট আমরা ণ ঘূণীেত (while
loop) ঘূণীর আেগই আর জ ঘূণীেত (for loop) আদ ায়েন (initilisation) কের ফেলিছ।
f o r ( আদ ায়ন ; শত ; হালায়ন ) আদ ায়ন
িববৃিত while ( শত )
িববৃিত+হালায়ন

5g
৮.১৫ উ র শেতর কর ঘূণী (Post-condition in Do Loops)

েটা ধনা ক পূণ সংখ ার গসা িনণেয়র মেলখিট (program) তুিম আেরকবার িলেখা, িক
এবার তুিম ণ ঘূণী (while loop) বা জ ঘূণী (for loop) ব বহার না কের তার বদেল ব বহার
in
করেব কর ঘূণী (do loop)। কর ঘূণী হেলা িসিপিপেত তৃতীয় ও শষ কােরর ঘূণী।
আমরা আেগর পােঠই এই মেলখিট (program) আেলাচনা কেরিছ ণ ঘূণী (while
loop) ব বহার কের, এখােন আেগ সিট আেরকবার একটু দেখ নই। purnok1, purnok2
am

চলক েটা তুিম ঘাষণা কের স েলােত ধনা ক সংখ া যাগান (input) িনেব। দরকার হেল
আেগর পাঠ থেক যাগান (input) নয়ার ও তারপর পূণক িট ধনা ক িকনা পরী া করার
ব াপারিট দেখ িনেত পােরা। তাহেল আমরা এবার গসা িনণেয়র মুল অংশটায় যেত পাির।
i n t purnok1 , purnok2 ; / / ধনা ক মান তুিম যাগান িনেব
i n t vagshesh = purnok1 % purnok2 ; / / ভাগেশষ িনণয়
al

while ( vagshesh ) / / ভাগেশষ না হেল


{
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
vagshesh = purnok1 % purnok2 ; / / আবার ভাগেশষ
}

cout << " gosagu : " << purnok2 << endl ; / / ভাজকই গসা

উপেরর এই মেলখিটর (program) ঘূণীটােক (loop) যিদ আমরা িব ার কির, মােন ঘূণী
না িলেখ েত ক পােক যা হেতা স েলা যিদ বার বার িলিখ তাহেল কমন হেতা সটা আমরা নীেচ
দখালাম। খয়াল কেরা থম ভাগেশষ িনণয়টা িক উপেরর ঘূণীর বাইের িছেলা, আর তারপর
নতুন ভাজ , নতুন ভাজক, আর আবার ভাগেশষ িনণেয়র িববৃিত েলা (statement) িছেলা ঘূণীর
িভতের, তাই ও েলা নীেচর িব ারেণ বারবার এেসেছ।
vagshesh = purnok1 % purnok2 ; / / ভাগেশষ িনণয়

১৭৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৫. উ র শেতর কর ঘূণী (Post-condition in Do Loops)

purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ


purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
vagshesh = purnok1 % purnok2 ; / / আবার ভাগেশষ
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
vagshesh = purnok1 % purnok2 ; / / আবার ভাগেশষ
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক
vagshesh = purnok1 % purnok2 ; / / আবার ভাগেশষ
............................................

এখন উপেরর এই িব ারণ দেখ কােরা মেন িক অ রকম কের ঘূণী লখার সাধ জাগেত
পাের। কউ হয়েতা বলেত পাের ঘূণীটা (loop) কন থম ভাগেশষ িনণয়েক বাদ িদেয়
হেয়েছ। ঘূণীটােতা বরং থম ভাগেশষ িনণয় থেকই হেত পারেতা। কথা সত , আর তাইেতা

i n t vagshesh ;
do
5g
আমােদর নতুন ধরেনর একিট ঘূণীর (loop) উ ব হেয়েছ, যিট হেলা কর ঘূণী (do loop)।

i n t purnok1 , purnok2 ; / / ধনা ক মান তুিম যাগান িনেব


/ / এই চলক বাইেরই ঘাষণা করেত হেব !
in
{
vagshesh = purnok1 % purnok2 ; / / ভাগেশষ িনণয়
purnok1 = purnok2 ; / / ভাজকই হেব নতুন ভাজ
am

purnok2 = vagshesh ; / / ভাগেশষ হেব নতুন ভাজক


}
while ( vagshesh ) ;

/ / সতকতা : এখােন গসা িক purnok1 , purnok2 নয়


cout << " gosagu : " << purnok1 << endl ; / / ভাজকই গসা
al

উপেরর মেলখ (program) খয়াল কেরা আমরা গসা িনণয় কেরিছ কর ঘূণী (do loop)
ব বহার কের। এখােন থমবার ভাগেশষ িনণয় করা হেয়েছ ঘূণীর (loop) িভতেরই। আর তার-
পর নতুন ভাজ ও নতুন ভাজক িনধারণ করা হেয়েছ। ঘূণীর শত পরী ণ তারও পের while (
vagshesh); যখােন লখা হেয়েছ সখােন। শত যিদ সত হয় তাহেল ঘূণীর পেরর পাক
হেব, অথাৎ িনয় ণ (control) লাফ িদেয় doএর পের য মহ া (block) {} হেয়েছ সখা-
ন চেল যােব। তেব একটা পূণ িবষয় এখােন উে খ করেত হেব এখােন সটা হেলা ফলেন
(output) িক এখন গসা purnok2 হেব না, বরং গসা হেব purnok1। এর কারণ হেলা
মহ ার িভতের vagshesh চলেকর মান হাক বা না হাক আমরা িক ভাজকটােক নতুন
ভাজ িহসােব ধের িনেয়িছ, ফেল purnok2 এর মান এখন purnok1এ আেছ।
তাহেল ণ ঘূণী (while loop) আর কর ঘূণীর (do loop) তফাৎ হেলা আেগরিটেত শত
পরী া পােক ঢুকার আেগ হয়, শত সত হেল পােক ঢুেক, আর পেররিটেত শত পরী া পাক শষ
কের হয়, শত সত হেল পেরর পােক ঢুেক। এর মােন কর ঘূণীর (do loop) থম পাক বাদ িদেল
ওইটা ণ ঘূণী (while loop) হেয় যেত পাের অথবা উে াটা।

১৭৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৬. আবার াি ও িডঙােনা (Break and Continue Again)

৮.১৬ আবার াি ও িডঙােনা (Break and Continue Again)

এমন একিট মেলখ (program) তরী কেরা যিট ব বহারকারীেক িমক ন র অ যায়ী একিট
াপণ (menu) দখােব যাগ, িবেয়াগ, ণ, ভাগফল, বা ভাগেশষ কলন (calculate) করার
জ । ব বহারকারী যত ন েরর কলন করেত চাইেব তার জ িট পূণক (integer) যাগান
(input) িনেয় িহসাব কের ফলন (output) দখােব। ব বহারকারী যত ণ এেকর পর এক কলন
কের যেত চায় তুিম তত ণ াপণ দিখেয়, যাগান িনেয়, কলন কের যােব।

িফিরি ৮.৮: অ ত খলনা কলিন (Rudimentary Toy Calculator)


/ / একটা অসীম ঘূণী তরী করেবা
while ( true ) / / অথবা f o r ( ; ; )
{
/ / াপণ দখাও
cout << " khelna k o l o n i " << endl ;

5g
cout << " 0 . ber hou " << endl ;
cout << " 1 . jog + " << endl ;
cout << " 2 . biyog −" << endl ;
cout << " 3 . gun ∗ " << endl ;
cout << " 4 . v a g f o l / " << endl ;
in
cout << " 5 . vagshesh %" << endl ;

i n t posondo ; / / পছ চলক
am

c i n >> posondo ; / / যাগান নাও

i f ( posondo == 0 ) / / পছ হেল
break ; / / ঘূণী থেক াি

/ / উ াপা া পছ হেল পাক িডিঙেয় যাও


al

i f ( posondo < 1 | | posondo > 5 )


continue ;

/ / পূণক িট যাচনা িদেয় যাগান নাও


cout << " purnok duto : " ;
i n t purnok1 , purnok2 , f o l a f o l ;
c i n >> purnok1 >> purnok2 ;

/ / পছ অ যায়ী ফলাফল কলন কেরা


switch ( posondo )
{
case 1 : f o l a f o l = purnok1 + purnok2 ; break ;
case 2 : f o l a f o l = purnok1 − purnok2 ; break ;
case 3 : f o l a f o l = purnok1 ∗ purnok2 ; break ;
case 4 : f o l a f o l = purnok1 / purnok2 ; break ;

১৭৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৭. ঘূণী যিদ িমথি য়া (Loop and If Interaction)

case 5 : f o l a f o l = purnok1 % purnok2 ; break ;


}

/ / ফলন দখাও
cout << " f o l a f o l : " << f o l a f o l << endl ;
}

/ / িবদায় স াষণ
cout << "amake abar chalaben " << endl ;

উপেরর মেলখ (program) দেখা, আমরা একটা অসীম ঘূণী (infinite loop) িনেয়িছ
while (true) { } িলেখ তুিম চাইেল িক for ( ; ; ) { } িলেখ এমন িক do { } while
(true); িলেখও অসীম ঘূণী তরী করেত পারেত। অসীম ঘূণী তরী করেলই আমােদর অব ই
ঘূণীর (loop) িভতের কান ভােব ঘূণী থেক াি (break) দওয়ারও ব ব া রাখেত হেব।
যাইেহাক ঘূণীর (loop) িভতের দেখা আমরা থেম কত িমক ন র যাগান (input) িদেল

5g
কী করা হেব সিট দিখেয়িছ, যখােন ১ হেল যাগ, ২ হেল িবেয়াগ, ৩ হেল ণ, ৪ হেল ভাগ-
ফল, ৫ হেল ভাগেশষ, আর ০ হেল বর হেয় যাওয়া আেছ। ব বহারকারীর (user) পছ যাচনা
(prompt) কের posondo চলেক নয়া হেয়েছ। এবার দেখা posondo চলেকর মান ০ হেল
িনয় ণ (control) ঘূণী থেক break িদেয় াি িদেব, তাহেল অসীম ঘূণী (infinite loop)
in
আর হে না। আর posondo এর মান ০ না হেল তারপর আমরা পরী া কের দেখিছ সিট ১
এর কম বা ৫ এর বশী িকনা। যিদ সরকম হয় তাহেল এইরকম উ াপা া পছে র জ আসেল
আমােদর িকছু করার নই, আমরা কলন করেবা কবল ১ হেত ৫ পয িমক ন েরর জ । তাহ-
ল এই রকম ে আমােদর কলন করা বাদ িদেয় সরাসির পেরর পােক চেল যেত হেব, অথাৎ
am

আবার াপণ (menu) দিখেয় পছ যাগান িনেত হেব। আমরা এই কাজিট কেরিছ continue
ব বহার কের পাক িডিঙেয়। এরপের দেখ আমরা একিট পি -ব াপার (switch-case) ব বহার
কের পছ অ যায়ী ফলাফল কলন কেরিছ, তারপর ফলন (output) িদেয়িছ।
ণ ঘূণী (while loop) বা কর ঘূণীেত (do loop) াি (break) দয়া িঠক জ ঘূণীেত
(for loop) াি দয়ার মেতাই। িনয় ণ (control) ঘূণী (loop) থেক বর হেয় ঘূণীর বাইের
al

যা আেছ সখােন চেল যােব। তেব ণ ঘূণী (while loop) বা কর ঘূণীেত (do loop) পাক
িডঙােনার (continue) সােথ জ ঘূণীেত (for loop) পাক িডঙােনার (continue) িকি ত
তফাৎ আেছ। তফাৎটা হেলা continue এর পের জ ঘূণীেত (for loop) িনয় ণ (control)
হালায়ন (update) অংেশ চেল যায়। িক ণ ঘূণী (while loop) বা কর ঘূণীেত (do loop)
এ হালায়ন অংশেতা আলাদা কের নাই। হালায়ন সাধারণত িববৃিতর অংশ িহসােবই করা হয় যমন
িতবার এখােন posondo এর মান যাগান নয়া হেয়েছ।, কােজই িনয় ণ ণ ঘূণী বা কর ঘূণীর
ে সরাসির চেল যায় শত পরী া (condition) অংেশ।

৮.১৭ ঘূণী যিদ িমথি য়া (Loop and If Interaction)

এমন একিট মেলখ (program) িলেখা যিট একিট ধনা ক পূণক (positive integer) যা-
গান (input) িনেয় ১ থেক সই পূণক (integer) পয জাড় সংখ া েলা একিদেক আর িবেজাড়
সংখ া েলা আেরকিদেক যাগ করেব। এই মেলখেত (program) মূলত আমরা ঘূণীর (loop)
িভতের যিদ-নাহেল (if-else) ব বহার না করেত চ া করেবা।

১৭৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৭. ঘূণী যিদ িমথি য়া (Loop and If Interaction)

cout << " dhonatok purnok " ;


i n t purnok ; c i n >> purnok ;

int jorJogfol = 0 , bijorJogfol = 0 ;


f o r ( i n t suchok = 1 ; suchok <= purnok ; ++suchok )
{
i f ( suchok % 2 ! = 0 ) / / িবেজাড়
b i j o r J o g f o l += suchok ;
else / / জাড়
j o r J o g f o l += suchok ;
}
cout << j o r J o g f o l << " " << b i j o r J o g f o l << endl ;

উপেরর মেলখেত (program) আমরা থেম একিট ধনা ক পূণক (positive integer)

5g
যাগান (input) িনেয়িছ, তারপর জাড় সংখ া েলার যাগফেলর জ jorJogfol আর িবেজাড়
সংখ া েলার যাগফেলর জ bijorJogfol চলক (variable) িনেয়িছ। তারপর একিট জ
ঘূণী (for loop) চেলেছ চলক (variable) suchok এর মান ১ থেক পূণেকর মান পয । ঘূণীর
িভতের সূচক িবেজাড় হেল বা (suchok % 2 != 0) শত সত হেল সূচেকর মান bijorJogfol
এর সােথ যাগ হেব আর শত িমথ া হেল jorJogfolএর সােথ যাগ হেব।
in
উপেরর ওই মেলখ (program) আমােদর সিঠক ফলাফল িদেব তেব একটা িবষয় খয়াল
কেরা সূচেকর মান জাড় নািক িবেজাড় এইটা কন আমােদর ঘূণীর (loop) িত পােক (lap)
পরী া করেত হেব? এইটা তা আমরা আসেল আেগ থেক জািনই কান পােক সূচেকর মান জাড়
am

কান পােক সটা িবেজাড়। কােজই ঘূণীর (loop) িভতের য শত পরী ণ সটা আসেল আমােদর
অিতির হেয়েছ বেল মেন হে । এই রকেমর ে আমরা আসেল একটা ঘূূণীর (loop) বদেল
েটা ঘূণী িলেখ ফলেত পাির। নীেচ দেখা আমরা তাই কেরিছ। থম ঘূণীেত ১ থেক কের
িতপােক ২ কের বাড়েব, ফেল কবল িবেজাড় সংখ া েলাই হেব সূচেকর মান, আর ি তীয় ঘূণীেত
২ থেক কের িতপােক ই কের বাড়েব, ফেল কবল জাড় সংখ া েলাই হেব সূচেকর মান।
al

থম ঘূণীেত সূচেকর মান bijorJogfolএর সােথ আর ি তীয় ঘূণীেত সূচেকর মান jorJogfol
এর সােথ যাগ করা হেয়েছ। তা এই প িবভাজেনর ফেল আমােদর আর কান ঘূণীেতই (loop)
শত পরী া করেত হেলা না, অথচ একই ফলাফল পাওয়া গেলা।
cout << " dhonatok purnok " ;
i n t purnok ; c i n >> purnok ;

int jorJogfol = 0 , bijorJogfol = 0 ;


f o r ( i n t suchok = 1 ; suchok <= purnok ; suchok += 2 )
b i j o r J o g f o l += suchok ;

f o r ( i n t suchok = 2 ; suchok <= purnok ; suchok += 2 )


j o r J o g f o l += suchok ;

cout << j o r J o g f o l << " " << b i j o r J o g f o l << endl ;

১৭৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৭. ঘূণী যিদ িমথি য়া (Loop and If Interaction)

এবার একই রকেমর আেরকিট ব াপার দেখা নীেচর মেলখেত (program)। এিটেত সূ-
চেকর মান জাড় নািক িবেজাড় সটার ওপর িভি কের যাগ না কের, ঘূণীর (loop) িত পা-
ক একটা কের ন র যাগান (input) নয়া হেয়েছ। যাগান নয়া ন রিট যিদ জাড় হয় তাহেল
jorJogfolএর সােথ আর িবেজাড় হেল bijorJogfolএর সােথ যাগ করা হেয়েছ। এই মেল-
খেয়র (program) ঘূণীর (loop) িভতের থাকা যিদ-নাহেলেক (if else) চাইেলও েটা ঘূণীেত
িবভাজন করা স ব না। কারণ এখােন আমােদর আেগ থেক বুঝার উপায় নই যাগান নয়া ন রিট
জাড় হেব নািক িবেজাড় হেব! কােজই যিদ-নাহেল ঘূণীর িভতেরই থাকেব।
cout << " dhonatok purnok " ;
i n t purnok ; c i n >> purnok ;

int jorJogfol = 0 , bijorJogfol = 0 ;


f o r ( i n t suchok = 1 ; suchok <= purnok ; ++suchok )
{
i n t nombor ; c i n >> nombor ; / / যাগান

}
i f ( nombor % 2 ! = 0 ) / / িবেজাড়

else / / জাড়
j o r J o g f o l += nombor ;
5g
b i j o r J o g f o l += nombor ;
in
cout << j o r J o g f o l << " " << b i j o r J o g f o l << endl ;

তারপর আেরা একিট একইরকম ব াপার দখা যাক। এখােন আমােদরেক purnok চলেকর
am

মান ১০এর কম হেল আমরা সূচেকর মান েলা sotoJogfolএ যাগ করেত চাই, আর purnok
চলেকর মান ১০ বা বশী হেল সূচেকর মান েলা boroJogfol পেত চাই। তা নীেচর ম-
লখেত (program) আমরা একটা ঘূণী (loop) ব বহার কের িলেখিছ, আর ঘূণীর িভতের রেয়-
ছ শত পরী া (purnok < 10)। শত সত হেল sotoJogfolএ যাগ আর শত িমথ া হেল
boroJogfolএ যাগ। এখােনও আমােদর একই রকেমর সম া, শত পরী ণ িক ঘূণীর (loop)
al

িভতের দরকার আেছ? নািক এটােক ঘূণীর বাইের নয়া স ব?


i n t purnok ; c i n >> purnok ; / / চলেকর মান যাগান
i n t sotoJogfol = 0 , boroJogfol = 0 ;

f o r ( i n t suchok = 1 ; suchok <= purnok ; ++suchok )


i f ( purnok < 10)
sotoJogfol += suchok ;
else
boroJogfol += suchok ;

cout << sotoJogfol << " " << boroJogfol << endl ;

একটু খয়াল করেলই একটা িবষয় নজের আেস সটা হেলা purnok < 10 শতিট আসেল
কান ভােবই সূচেকর মােনর সােথ স িকত নয়, ফেল এই শত পরী ণ আসেল পােকর ওপর
িনভর কের না। তরাং আমরা চাইেল এই শতিটেক ঘূণীর (loop) বাইের িনেয় যেত পাির।

১৭৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৮. অ াি াধীন ঘূণী (Nested Independent Loops)

নীেচর মেলখ (program) খয়াল কেরা আমরা তাই কেরিছ। ঘূণীেত যাওয়ার আেগই আমরা
শত পরী া কেরিছ। শত (purnok < 10) সত হেল আমরা একটা ঘূণীেত sotoJogfol িনণয়
কেরিছ, আর শত িমথ া হেল আেরকিট ঘূণীেত (loop) boroJogfol িনণয় কেরিছ।
i n t purnok ; c i n >> purnok ; / / চলেকর মান যাগান
i n t sotoJogfol = 0 , boroJogfol = 0 ;

i f ( purnok < 10)


f o r ( i n t suchok = 1 ; suchok <= purnok ; ++suchok )
sotoJogfol += suchok ;
else
f o r ( i n t suchok = 1 ; suchok <= purnok ; ++suchok )
boroJogfol += suchok ;

cout << sotoJogfol << " " << boroJogfol << endl ;

5g
উপেরর এই মেলখেত (program) শত মা একবার পরী া হেলা, িতপােক একই শত
বারবার পরী া করার ব াপার আর রইেলা না। কােজই আমােদর মেলখ খািনকটা দ হেয়
গেলা, এটা চালােত সময় কম লাগেব, িঠক যটা আমরা করেত চেয়িছলাম।
in
৮.১৮ অ াি াধীন ঘূণী (Nested Independent Loops)

এমন একিট মেলখ (program) িলেখা যিট একিট ই-মা ার ছেকর বগ েলার িমক ন র
am

নীেচর মেতা কের িলখেব। খয়াল কেরা আিড়র (row) ম ১ থেক ৪, িক খািড়র (column)
ম উে া িদেক ৪ থেক ১। এই মেলখ (program) তুিম েটা অ াি াধীন ঘূণী (nested
independent loop) ব বহার কের অথাৎ ঘূণীর িভতের ঘূণী ব বহার কের িলখেব। চাইেল
জ ঘূণী (for loop), ণ ঘূণী (while loop), কর ঘূণী (do loop) ব বহার করেত পােরা।
( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1)
al

( 2 , 4) ( 2 , 3) ( 2 , 2) ( 2 , 1)
( 3 , 4) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)

তা চেলা আমরা থেম এই মেলখিট (program) জ ঘূণী (for loop) িদেয় িলিখ।
থেম চেলা আমরা থম আিড়র (row) িদেক নজর দই (1,4) (1,3) (1,2) (1,1)। এই
আিড়েত চারিট িমক দখােনা হেয়েছ, িতিট িমেক িট কের সংখ া আেছ, থমিট আিড়
ন র, আর ি তীয়িট খািড় (column) ন র। তা সব েলা িমেকর আিড় ন রই 1, কবল খািড়
ন র বদেল গেছ 4 থেক কের 1 পয , িতবার 1 কের কমেব। কােজই আমরা ঘূণী (loop)
চালােবা কবল খািড়র জ আর আিড়ন রিট েত ক ে সরাসির ফলেন (output) দখােবা।
f o r ( i n t k h a r i = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << 1 << " , " << k h a r i << " ) " ;

উপেরর এই মেলখেয়র ফলন যিদ দেখা, তাহেল নীেচর মেতা লাগেব।


( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1)

১৮০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৮. অ াি াধীন ঘূণী (Nested Independent Loops)

আমােদর য ফলন (output) িদেত বলা হেয়েছ সখােন যেহতু চারিট আিড় (row) আেছ,
সেহতু উপেরর মেলখেয়র (program) মেতা ঘূণী (loop) আমরা চারবার িলখেলই কাি ত
ফলন (output) পেয় যােবা। তেব িতটা ঘূণীেত কবল আিড় ন েরর জায়গায় নীেচর মেতা কের
1এর বদেল 2, 3, 4 িলেখ িনেত হেব। আর িতিট আিড়র পের পেরর আিড়েত ফলন (output)
যাওয়ার জ আমােদর cout << endl; িলখেত হেব।
for ( i n t khari = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << 1 << " , " << k h a r i << " ) " ;
cout << endl ;
for ( i n t khari = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << 2 << " , " << k h a r i << " ) " ;
cout << endl ;
for ( i n t khari = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << 3 << " , " << k h a r i << " ) " ;
cout << endl ;
for ( i n t khari =
cout << " ( "
cout << endl ;
5g
4 ; k h a r i >= 1 ; −−k h a r i )
<< 4 << " , " << k h a r i << " ) " ;

চারিট আিড়র (row) জ না হয় ায় একই রকম সংেকত (code) চারবার িলখলাম, িক


আেরা বশী সংখ ক আিড়র জ িন য় অতবার িলখেবা না। আমরা একই কাজ বার বার করার
in
জে ই তা ঘূণী (loop) ব বহার করা িশেখিছলাম, সটা িক আিড়র জে ও ব বহার করেত পাির
না? িন য় পাির। নীেচ দেখা আমরা তাই করলাম। আমরা থেম আিড়র জ একিট ঘূণী িনেয়িছ
যিট আিড় ১ থেক ৪ পয েত কবার ১ কের বািড়েয় চলেব। আর এই ঘূণীর (loop) মহ ার
am

(block) িভতের থাকেব আমােদর আেগর লখা ঘূণীটা যটা খািড়র জ ঘুের। মহ া (block)
ব বহার করেত হেলা কারণ একটা ঘূণী আর একটা cout মাট েটা িববৃিত (statement) িনবাহ
করেত হেব িতিট আিড়র জ । আর খািড়র জে লখা িভতেরর ঘূণীটােত যখােন আিড়র ন র
1, 2, 3, 4 সরাসির িলেখ িদেয়িছলাম, এবার সখােন ari চলক িলেখ িদেলই হেয় গেলা।
f o r ( i n t a r i = 1 ; a r i <= 4 ; ++ a r i )
al

{
f o r ( i n t k h a r i = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
cout << endl ;
}
এবার চেলা এই মেলখিটই (program) জ ঘূণী (for loop) ব বহার না কের আমরা
ণ ঘূণী (while loop) ব বহার কের িলেখ ফিল। তেব আিড় ও খািড় সংখ া িনিদ কের ৪
ধের না িনেয় আমরা এখােন ariSonkhya ও khariSonkhya নােম েটা চলক (variable)
ব বহার করেবা, যার মান তুিম চাইেল যাগান (input) িনেত পােরা। জ ঘূণী (for loop) থেক
ণ ঘূণী (while loop) লখা তা তমন কিঠন িকছু নয়। জ ঘূণীর (for loop) আদ ায়ন
(initialisation) অংশটােক ণ ঘূণীর (while loop) আেগ িলেখ ফেলা, আর জ ঘূণীর
হালায়ন (update) অংশটােক ণ ঘূণীর িববৃিত (statement) অংেশর শেষ িদেয় দাও। তুিম
চাইেল একটা ঘূণীেক জ ঘূণী রেখ আেরকটােক ণ ঘূণী কের িদেত পােরা। তা ছাড়া তুিম
চাইেল জ বা ণ ঘূণী বাদ িদেয় কর ঘূণীও (do loop) ব বহার করেত পােরা।

১৮১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৯. অ াি িনভরশীল ঘূণী (Nested Dependent Loop)

i n t ariSonkhya = 4 , khariSonkhya = 4 ;

int ari = 1 ;
while ( a r i <= ariSonkhya )
{
i n t k h a r i = khariSokhya ;
while ( k h a r i >= 1 )
{
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
−−k h a r i ;
}
cout << endl ;
++ a r i ;
}

5g
৮.১৯ অ াি িনভরশীল ঘূণী (Nested Dependent Loop)
in
ঘূণীর (loop) িভতের ঘূণী অথাৎ অ াি ঘূণী (nested loop) ব বহার কের এমন একিট ম-
লখ (program) িলেখা যিট নীেচর মেতা ফলন (output) িদেব। এইে ে িভতেরর ঘূণীিট
বাইেরর ঘূণীর ওপের িনভরশীল হেব: িভতেরর ঘূণীর সূচেকর মান বাইেররিটর সূচেকর মােনর
am

সােথ স িকত হেব। তুিম িতন রকম ঘূণীর (loop) য কানিটই ব বহার করেত পােরা।
( 1 , 1)
( 2 , 2) ( 2 , 1)
( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 3) ( 4 , 1)
al

আমরা থেম নীেচর মেতা কের েটা অ াি াধীন ঘূণী (nested independent loop)
িলেখ ফলেত পাির যটা আমরা িঠক আেগর পােঠই িশেখিছ। আেলাচনার ধারাবািহকতা বুঝার
জ তুিম চাইেল আেগর পাঠিট একটু দেখ িনেত পােরা। এখােন বাইেরর ঘূণী (loop) ৪ বার
চলেব, আর তার িত পােকর জ িভতেরর ঘূণীটাও ৪ বার চলেব।
f o r ( i n t a r i = 1 ; a r i <= 4 ; ++ a r i )
{
f o r ( i n t k h a r i = 4 ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
cout << endl ;
}

েটা অ াি াধীন ঘূণী (nested independent loop) লখার ফেল আমরা য ফলন
(output) পােবা তা নীেচর বাম পােশর মেতা। খয়াল কের দেখা ছেকর িতিট আিড়েত (row)
িতিট খািড়েতই (column) সংি বেগর িমক ন র লখা হেয়েছ। এখন এটার সােথ আমােদর
এই পােঠ য ফলন (output) চাওয়া হেয়েছ (ডান পােশরিট) তা িমলাও।

১৮২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.১৯. অ াি িনভরশীল ঘূণী (Nested Dependent Loop)

( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1) ( 1 , 1)
( 2 , 4) ( 2 , 3) ( 2 , 2) ( 2 , 1) ( 2 , 2) ( 2 , 1)
( 3 , 4) ( 3 , 3) ( 3 , 2) ( 3 , 1) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1) ( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)

এবার একটা ব াপার খয়াল কেরা য ডান পােশর য ফলন (output) চাওয়া হেয়েছ সখােন
ত ক আিড়েত (row) এমন একটা ঘর থেক লখা হেয়েছ যখােন আিড় (row) আর খািড়
(column) সমান, যমন (1,1), (2,2), (3,3), (4,4)। খািড়র িমক আিড়র িমক থেক বড়
হেল সই ঘের িকছু দখােনা হয় নাই। তা এটার জ আমরা আমােদর মেলখেত (program)
কবল িভতেরর ঘূণীিট (loop) িকি ত বদেল িনেবা। িভতেরর ঘূণীিট আেগ িছেলা for ( int
khari = 4; khari >= 1; −−khari), এখন সখােন নীেচর মেতা কের আিদমান 1 এর
বদেল ari িলেখ িদেবা। এর ফেল িভতেরর ঘূণীিট আর াধীন থাকেলা না, কারণ এিট কতবার
ঘুরেব সটা িনভর করেব বাইেরর ঘূণীেত ari এর মান কেতা তার ওপর।
f o r ( i n t a r i = 1 ; a r i <= 4 ; ++ a r i )
{

5g
f o r ( i n t k h a r i = a r i ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
cout << endl ;
in
}

উপেরর এই মেলখিটর (program) ফেল আমরা য রকম ফলন পােবা সিট নীেচর বাম
পােশর মেতা, িক আমরা য ফলন (output) পেত চাই তা ডান পােশর মেতা।
am

( 1 , 1) ( 1 , 1)
( 2 , 2) ( 2 , 1) ( 2 , 2) ( 2 , 1)
( 3 , 3) ( 3 , 2) ( 3 , 1) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1) ( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)
al

খয়াল কেরা এখনও িঠক হেয় ওেঠ িন। যথাযথ ভােব ফাঁকা িদেলই হেয় যােব। তা ফাঁকা
দওয়ার ে খয়াল কেরা আমরা ১ম আিড়েত ফাঁকা িদেয়িছ ৩িট, ২য়িটেত ২িট, ৩য়িটেত ১িট,
৪থিটেত ০িট। অথাৎ ari এর মান অ যায়ী 4−ari সংখ ক ফাঁকা িদেয়িছ। অথবা বলেত পােরা ৪
থেক গানা ও ফাঁকা িদেত কেরিছ, িক ariর চেয় বড় সংখ া পয ফাঁকা িদেয়িছ, আর সমান
হেল তা ঘেরর ানাংক দখােনা কেরিছ। তাহেল সব িমিলেয় আমরা নীেচর মেলখেয়র
(program) মেতা কের আেরকিট ঘূণী (loop) ব বহার করেত পাির ফাঁকা দওয়ার জ । এই
ঘূণীিটও কত বার ঘুরেব, সটা িক বাইেরর ঘূণীর ওপর িনভর করেব।
/ / িত আিড়র জ একটা কের পাক।
f o r ( i n t a r i = 1 ; a r i <= 4 ; ++ a r i )
{
/ / িত আিড়েত থেম ফাঁকা দওয়ার জ
f o r ( i n t k h a r i = 4 ; k h a r i > a r i ; −−k h a r i )
cout << " " ; / / মালার িভতের ছয়িট ফাঁকা

// িত আিড়েত ঘর েলার ানা লখার জ

১৮৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২০. গভীর অ াি ঘূণী (Deeply Nested Loops)

f o r ( i n t k h a r i = a r i ; k h a r i >= 1 ; −−k h a r i )
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
cout << endl ;
}

তুিম অব চাইেল কবল এই সম ািটর ে িভতেরর ঘূণী িটেক ঘূণী যিদ িমথি য়া
(Loop and If interaction) িবেবচনা কের একটা ঘূণী িদেয়ই সারেত পারেত। কারণ িভতেরর
িট ঘূণী িমিলেয় তা 4 হেত 1 নিত চেল, khariর মান ari হেত বড় হেল ফাঁকা দখােনা হয়
আর না হেল ঘেরর ানা দখােনা হয়। তরাং একটা যিদ-নাহেল (if else) লাগােলই হেব।
f o r ( i n t a r i = 1 ; a r i <= 4 ; ++ a r i )
{
f o r ( i n t k h a r i = 4 ; k h a r i >= 1 ; −−k h a r i )
i f ( khari > ar i )
cout << " ";

}
else

5g
cout << " ( " << a r i << " , " << k h a r i << " ) " ;
cout << endl ;
in
৮.২০ গভীর অ াি ঘূণী (Deeply Nested Loops)
am

ঘূণীর (loop) িভতের ঘূণী তার িভতের ঘূণী ব বহার কের িতনিট সংখ া 1, 2, 3 এর িব াস
(permutation) ফলন (output) দাও। িব াস েলােত একই সংখ া বারবার ব বহার করা
যােব হেল কী করেব, আর একই সংখ া এেকর অিধকবাব ব বহার না করা গেল কী করেব?
f o r ( i n t x = 1 ; x <= 3 ; ++x )
f o r ( i n t y = 1 ; y <= 3 ; ++y )
al

f o r ( i n t z = 1 ; z <= 3 ; ++z )
cout << x << " " << y << " " << z << endl ;

1 1 1 2 1 1 3 1 1
1 1 2 2 1 2 3 1 2
1 1 3 2 1 3 3 1 3
1 2 1 2 2 1 3 2 1
1 2 2 2 2 2 3 2 2
1 2 3 2 2 3 3 2 3
1 3 1 2 3 1 2 3 1
1 3 2 2 3 2 2 3 2
1 3 3 2 3 3 2 3 3

এই মেলখেয়র (program) জ আমরা এভােব িচ া কির: থম ানিটেত সংখ া িতনিট


এেক এেক বসােত হেব কােজই একটা ঘূণী (loop) লাগেব। তারপর ি তীয় ােনর জে ও সংখ া

১৮৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২০. গভীর অ াি ঘূণী (Deeply Nested Loops)

িতনিট এেক এেক বসােত হেব, তরাং আেরকটা ঘূণী লাগেব। আর একই ভােব তৃতীয় ােনর
জে ও আেরকিট ঘূণী িদেয় সংখ া িতনিট এেক এেক বসােত হেব। কােজই সব িমিলেয় আমােদর
ঘূণী লাগেব িতনিট, আর িব াস পাওয়া যােব সবেমাট ২৭ িট। তা এরকম একিট মেলখ আমরা
উপের দখালাম, খুবই সহজ মেলখ। আর ওই মেলখেয়র ফলন (output) কমন হেব সটাও
উপের দখােনা হেয়েছ। তেব ােনর ব বহার বাড়ােনার জ ২৭ িট িব াস নীেচ নীেচ না লেখ
িতন ে (column) দখােনা হেয়েছ, আসেল ও েলা এেকর পর এক নীেচ নীেচ আসেব।
উপেরর মেলখেত (program) িক একই সংখ া এেকর অিধকবার ব বহার করা হেয়েছ।
যিদ সটা করেত না দয়া হয়, তাহেল আমরা যটা করেত পাির তা হেলা যখনই িট সংখ া এক
হেয় যােব তখন আমরা ফলন (output) িদেবা না। অথাৎ x যিদ yএর সমান হয় অথবা x যিদ
zএর সমান হয়, অথবা y যিদ zএর সমান হয় তাহেল ফলন হেব না, আর না হেল ফলন হেব। তার
মােন ফলন দয়া হেব ! (x == y | | x == y | | y == z) শত সত হেল, আর দয়া হেব না
শত িমথ া হেল। বুলক বীজগিণেতর িড মরগ ােনর সূ া যায়ী আমরা এটােক সরলীকরণ করেত
পাির। তাহেল পােবা ! (x == y) && !(x == z) && !(y == z) বা (x != y && x != z &
& y != z)। সবিমিলেয় এমন মেলখ আর তার ফলন হেত পাের নীেচর মেতা।
f o r ( i n t x = 1 ; x <= 3 ; ++x )

5g
f o r ( i n t y = 1 ; y <= 3 ; ++y )
f o r ( i n t z = 1 ; z <= 3 ; ++z )
i f ( x ! = y && x ! = z && y ! = z )
cout << x << " " << y << " " << z << endl ;
in
1 2 3
1 3 2
am

2 1 3
2 3 1
3 1 2
3 2 1

একটা িবষয় খয়াল কেরা উপেরর মেলখেত (program) িতনিট ঘূণীই িক িতনবার কের
al

ঘুরেব, ফেল মাট ২৭ িট পাকই স হেব, তেব এই ২৭িট পােকর মা ৬িটেত ফলন (output)
আসেব, বাঁকী েলােত যিদ-নাহেলর (if else) শত িমথ া হওয়ায় ফলন আসেব না। কথা হে
ওই য ২১িট পাক য েলােত কান ফলন আসেব না, স েলা কমােনা স ব িকনা। িকছুটা তা
স ব। ি তীয় ঘূণীর কথা িবেবচনা কেরা, যখন আমরা জািনই য y এর মান x এর সমান, তখন
তা তৃতীয় ঘূণীিট ঘুিরেয় লাভ নই, আমােদর কান ফলন আসেব না। কােজই আমরা যিদ নাহেল
িমথি য়া (if else interaction) িবেবচনা কের নীেচর মেলখেয়র মেতা কের if (x != y)
ক তৃতীয় ঘূণীর উপের িনেয় আসেত পাির। এই মেলখেয়র ে কান ঘূণী কত বার ঘুরেব?
তুিম িক িনেজ িনেজ স েলা িহসাব করেত পারেব, চ া কের দেখা?
f o r ( i n t x = 1 ; x <= 3 ; ++x ) / / ৩ বার
f o r ( i n t y = 1 ; y <= 3 ; ++y ) / / ৩∗৩ = ৯বার
if (x != y) / / ৩∗১ = ৩ বার িমথ া
f o r ( i n t z = 1 ; z <= 3 ; ++z ) / / ৬∗৩ = ১৮বার
i f ( x ! = z && y ! = z ) / / ৬ বার সত
cout << x << " " << y << " " << z << endl ;

১৮৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২১. অ াি ঘূণী াসকরণ (Deflating Nested Loops)

আ া তামােক িতনিট সংখ া না িদেয় বরং চারিট বা পাঁচিট বা আেরা বশী সংখ ার িব-
াস (permutation) ফলন (output) িদেত বলা হয় তুিম কী পারেব তার জে মেলখ
(program) িলখেত? িন য় পারেব, যতিট সংখ া িনেয় িব াস করেত হেব ততিট ঘূণী (loop)
িনেলই হেয় গেলা। এই য ঘূণীর িভতের ঘূণী (loop inside loop), তার িভতের ঘূণী, তার
িভতের আেরা ঘূণী এ েলা হেলা গভীর অ াি ঘূণী (deeply nested loop), যতটা িভতের
একটা ঘূণী ততটা হেলা তার গভীরতা। যমন উপেরর মেলখেত সবেচেয় িভতেরর ঘূণীর গভীর-
তা হেলা ৩, মাঝখােনরটার গভীরতা হেলা ২ আর বাইেররটার গভীরতা হেলা ১। আমরা সাধারণত
খুব বশী গভীরতার অ াি ঘূণী তরী করেত চাই না। যমন আেরা বশী সংখ ার িব াস করেত
গেলই আমরা আর এ রকম গভীর অ াি ঘূণী ব বহার করেবা না, বরং আমরা অ কান প িতর
খাঁজ করেবা। তাছাড়া এরকম গভীর ঘূণী আেরা একটা ে ও অ িবধাজনক। যমন ধেরা তা-
মােক যাগান (input) িনেত হেব কয়টা সংখ ার িব াস করেত চাও। তা সটােতা আেগ থেক
মােন মেলখ লখার সময় জানা স ব না, কােজই মেলখ লখার সময় কত গভীরতা পয ঘূণী
িলখেবা সটাও জানা স ব না, আর তাই এরকম কের মেলখ লখা আসেলই স ব হেব না।

5g
৮.২১ অ াি ঘূণী াসকরণ (Deflating Nested Loops)

ধেরা তামােক এমন একটা মেলখ (program) িলখেত হেব যিট একিদেনর ২৪ ঘ টায় িত
সেকে ড সময় ফলন (output) িদেব ১০:৩৯:৪৬ এই ছাঁেচ। এই মেলখ তামােক অ াি ঘূণী
in
(nested loops) ব বহার না কের কবল একিট ঘূণী (loop) ব বহার কেরই িলখেত হেব।

িফিরি ৮.৯: ঘিড়র সময় দখােনা (Displaying Clock Time)


am

for ( i n t h = 0 ; h < 24 ; ++h )


for ( i n t m = 0 ; m < 60 ; ++m)
for ( i n t s = 0 ; s < 60 ; ++s )
cout << h << " : " << m << " : " << s << endl ;

থেম আমরা অ াি ঘূণী (nested loop) ব বহার কেরই মেলখিট (program) িলিখ।
আমােদর ঘ টা চলেব ০ হেত ২৩ পয , িমিনট চলেব ০ হেত ৫৯ পয , আর সেক ডও চলেব
al

০ হেত ৫৯ পয । তরাং ৩ গভীরতার অ াি ঘূণী হেলই আমােদর চলেব। উপেরর মেলখেত


দেখা িতনিট ঘূণী একটার িভতের আেরকটা িলেখ আমরা তা কেরিছ।
এবার আমরা অ াি ঘূণী (nested loop) ব বহার না কের একটা ঘূণী ব বহার কের ম-
লখিট (program) লখার চ া করেবা। সারািদেন আমােদর মাট সেক ড আেছ কতিট? ২৪ *
৬০ * ৬০ = ৮৬৪০০িট। তাহেল আমােদর একিট ঘূণী চালােত হেব ৮৬৪০০ বার। আর িতবাের
সেক ডেক ৬০ িদেয় ভাগ কের িমিনেট আর িমিনটেক ৬০ িদেয় ভাগ কের ঘ টায় কাশ করেত
হেব। তারপর অবিশ সেক ড, অবিশ িমিনট, ও কত ঘ টা হেলা তা ফলেন (output) দখােত
হেব। ভাগফল / আর ভাগেশষ % ব বহার কের আমরা এই মেলখ নীেচর মেতা কের িলখেবা।
f o r ( i n t k = 0 ; k < 86400 ; ++k )
{
i n t h , m , s = k ; / / k ক ঘ টা িমিনট সেক ড িনেত হেব

m = s / 60 ; / / িমিনেট পা র
s = s % 60 ; / / অবিশ সেক ড

১৮৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২২. ছ েবেশর অ াি ঘূ্ণী (Nested Loop in Disguise)

h = m / 60 ; / / ঘ টায় পা র
m = m % 60 ; / / অবিশ ঘ টা

cout << h << " : " << m << " : " << s << endl ;
}

তুিম িক চাইেল উপেরর মেতা কের িতবার সেক ডেক ৬০ িদেয় ভাগ কের িমিনেট, তারপর
আবার ৬০ িদেয় ভাগ কের ঘ টায় কাশ না কের অ ভােবও করেত পােরা। ধেরা সেক ড ঘূণীর
িত পােক ১ কের বাড়েলা। আর যখন ৬০ সেক ড হেয় গেলা তখন আমরা িমিনেট এক যাগ কের
িদলাম, আর সেক ডেক আবার ০ বািনেয় িদলাম। একই ভােব িমিনট যিদ ৬০ হেয় যায় তাহেল
ঘ টােক এক বািড়েয় িদলাম, আর িমিনটেক ০ বািনেয় িদলাম। আর যখন ঘ টা ২৪ হেয় গেলা
তখন মেলখ শষ কের িদলাম। তা এই রকম মেলখ (program) আমরা নীেচ দখালাম।
int h = 0 , m = 0 , s = 0 ; / / আিদ মান
while ( h < 24)
{

5g
cout << h << " : " << m << " : " << s << endl ;

i f ( ++s == 60) // সেক ড এক বািড়েয় ৬০ হেল


in
{
s = 0; / / সেক ড হেব
i f ( ++m == 60) / / িমিনট এক বাড়েব , আর ৬০ হেল
am

{
m = 0; / / িমিনট হেব
++h ; / / ঘ টা এক বাড়েব
}
}
}
al

আসেল য কান অ াি ঘূণীেক (nested loop) এই ভােব কবল একটা ঘূণী িদেয়ই িল-
খ ফলা যায়। অ াি ঘূণীেত সূচক েলার মান য েম বদল হেত থােক, উপেরর এই একটা
ঘূণীেতও চলক েলার মান সই একই েমই বদল হেত থােক।

৮.২২ ছ েবেশর অ াি ঘূ্ণী (Nested Loop in Disguise)

অ াি ঘূণী (nested loop) ব বহার কের এবং না কের (1) + (1 + 2) + (1 + 2 + 3)


+ . . . + (1 + 2 + . . . + n) ধারািটর যাগফল িনণেয়র মেলখ (program) রচনা কেরা।
এখােন তুিম 1 + 2 + . . . + n = n(n + 1)/2 এ রকম সূ ব বহার করেত পারেব না।
দ ধারািটেত ব নীর িভতের অংশ েলােক যিদ একটা কের পদ ধের নাও তাহেল থম
পদ (1), ি তীয় পদ (1 + 2), আর এই ভােব nতম পদ (1 + 2 + ... + n)। কােজই উপেরর
ধারািটেত আমােদর nিট পদ আেছ, তরাং আমােদর একিট ঘূণী (loop) লাগেব যিট 1 থেক
n পয ঘুরেব। এবার ব নীর িভতেরর িতিট পেদর িদেক তাকাই। ধরা যাক আমরা kতম পদ

১৮৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২২. ছ েবেশর অ াি ঘূ্ণী (Nested Loop in Disguise)

িবেবচনা করিছ, তাহেল বুঝেতই পারেছা পদিট হেব (1 + 2 + . . . + k)। এখােন এই পদিট
িনেজও একটা ধারা। কােজই আমােদর পুেরা ধারািট আসেল ধারার িভতের ধারা, বা অ াি ধারা
(nested series)। যাইেহাক, kতম পদ (1 + 2 + . . . + k) তা আমরা আেরকিট ঘূণী 1
থেক k পয ঘুিরেয় সহেজই িহসাব কের ফলেত পাির। তাহেল সব িমিলেয় দ ধারার জ
আমােদর ঘূণীর িভতের ঘূণী বা অ াি ঘূণী (nested loop) ব বহার করেত হেব।
i n t n = 10 ; / / যাগান িনেত পােরা
int s = 0 ; / / পুেরা ধারার যাগফল
f o r ( i n t k = 1 ; k <= 10 ; ++k )
{
i n t t = 0 ; / / ব নীেত পেদর যাগফল
f o r ( i n t l = 1 ; l <= k ; ++ l )
t += l ; / / ব নীর িভতের যাগফল
s += t ; / / পুেরা ধারার যাগফল
}
cout << s << endl ;

5g
উপেরর মেলখেত (program) েটা অ াি ঘূণী (nested loop) িমিলেয় িঠক কতবার
ঘুরেব? বাইেরর ঘূণীেত kএর মান যখন 1 তখন িভতেরর ঘূণী ঘুরেব 1 বা, বাইেরর ঘূণীেত kএর
মান যখন 2 তখন িভতেরর ঘূণী ঘুরেব 2 বার, এই ভােব বাইেরর ঘূণীেত kএর মান যখন n তখন
in
িভতেরর ঘূণী ঘুরেব n বার। কােজই বাইেরর ঘূণীর সব পাক িমিলেয় িভতেরর ঘূণী ঘুরেব 1 + 2
+ . . . + n = n(n+1)/2 বার। তার মােন nএর মান 10 হেল ই ঘূণী িমেল পাক খােব সবেমাট
10(10+1)/2 = 55 বার। কথা হে এই ধারািটর যাগফল বর করেত আসেলই িক এত পােকর
am

দরকার আেছ? িবেশষ কের ব নীর িভতেরর িতিট পদ কন আলাদা কের আবার নতুন কের
িহসাব করেত হেব? আেগর ব নীর িভতেরর পদ জানা থাকেল তা তার সােথ কবল পেরর পূণক
(integer) যাগ কেরই পেরর ব নীর িভতেরর পদ বর করা স ব।
i n t n = 10 ; / / যাগান িনেত পােরা
i n t s = 0 , t = 0 ; / / ধারা ও পেদর যাগফল
al

f o r ( i n t k = 1 ; k <= 10 ; ++k )
{
t += k ; / / ব নীর িভতের যাগফল
s += t ; / / পুেরা ধারার যাগফল
}
cout << s << endl ;

উপেরর মেলখেত (program) দেখা আমরা েত পদ tএর আিদ মান ধের িনেয়-
িছ। আর ঘূণীর িভতের ঢুেকই tএর সােথ k যাগ কের িদি , যােত ব নীর িভতের থাকা আেগর
পেদ t এর মান যত িছেলা, এই পােক যােত tএর মান তার চেয় যােত k বশী হয়, কারণ পেরর
ব নীর িভতের পেদ তা kটাই অিতির আেছ। তারপর t টােক sএর সােথ যাগ করেলই ধারার
যাগফল হেয় গেলা। তা এই মেলখেত ঘূণী কত বার ঘুরেব? বুঝেতই পারেছা মা 10 বার।
তাহেল আমরা দখলাম দখেত অ াি ঘূণী (nested loop) মেন হেলও অেনক সময় একটা
ঘূণী ব বহার কেরই দ মেলখ (program) রচনা করা যায়। অ াি ঘূণী িলখার সময় সটা
আসেলই অ াি ঘূণী নািক ফ ছ েবশী এ ব াপাের সতক থাকেব কমন!

১৮৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

৮.২৩ অ শীলনী সম া (Exercise Problems)


ধারণাগত : নীেচ িকছু ধারণাগত রেয়েছ। েলার উ র িনেজ িনেজ বর করেব।

১. পুনািল পিরগণনা (iterative programming) বলেত কী বুেঝা? আেলাচনা কেরা।

২. জ ঘূণীেত (for loop) চারিট অংশ আেছ। এ েলা হেলা আদ ায়ন (initialisation),
শত (condition), বৃি (update), িববৃিত (statement)। কান অংশ কখন িনবািহত
হয়, কানিট কতবার িনবািহত হয়, আর কার পের কানিট িনবািহত হয় আেলাচনা কেরা।

৩. সমা র ধারার বতমান পদিটেক ঘূণীর (loop) সূচেকর সােথ স িকত করা বনাম আেগর
পােকর সােথ স িকত করার মেধ পিরগণনায় কী তফাৎ ঘেট আেলাচনা কেরা।

৪. ঘূণীেত (loop) াি র (break) ব বহার উদাহরণসহ আেলাচনা কেরা।

৫. ঘূণীেত (loop) পাক িডঙােনা (continue) উদাহরণসহ আেলাচনা কেরা।

5g
৬. ঘূণীেত (loop) শত ফাঁকা (empty condition) হেল ঘূণী থামেব কী কের?

৭. অসীম ঘূণী (infinite loop) কী? অসীম ঘূণী িক কাি ত না অনাকাি ত?


in
৮. জ ঘূণীেক (for loop) কী ভােব সাধারণ (general) ঘূণী িহসােব ব বহার করা যায়?

৯. পােকর আেগ শত পরী ণ ও পােকর পের শত পরী ণ িবষেয় আেলাচনা কেরা।


am

১০. ঘূণী ও যিদর িমথি য়া (interaction) কী ভােব মেলখেয়র গিতেত ভাব ফেল?

১১. অ াি (nested) একািধক ঘূণীেক কী ভােব একটা ঘূণী ব বহার কেরই সামলােনা যায়?

পিরগণনার সম া: নীেচ আমরা িকছু পিরগণনার সম া দখেবা। এই সম া েলা আেগ ধয


ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না বেল মেন হয় তখনই
al

কবল সমাধান দেখ িনেত পােরা। সমাধান েলা পিরগণনার েলার শেষ আেছ।

১. নীেচর নকশার মেতা নকশা তরী কেরা। এই নকশার কানার িব েলােত + আেছ, এক-
দম বাম আর ডান পােশ আেছ |, আর অ সব েলা হেলা −, িতিট সািরেত − আেছ ২০িট
কের। েত ক সািরর − েলার জ তামােক একিট কের ঘূণী (loop) িলখেত হেব।
+−−−−−−−−−−−−−−−−−−−−+
|−−−−−−−−−−−−−−−−−−−− |
|−−−−−−−−−−−−−−−−−−−− |
+−−−−−−−−−−−−−−−−−−−−+

২. এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক (positive) পূণক
(integer) যাগান (input) িনেয় সটা মৗিলক (prime) সংখ া িকনা িনণয় করেব।

৩. এমন একিট মেলখ (program) িলেখা যিট েটা ধনা ক পূণক (integer) যাগান
িনেয় তােদর গসা (HCF) ও লসা (LCM) িনণয় কের।

১৮৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

৪. নীেচর মেলখেয়র (program) ফলন (output) কী হেব, গণিনেত (computer) না


চািলেয় বর কেরা। তারপর গণিনেত চািলেয় তামার িহসাব করা ফলাফল যাচাই কেরা।
যিদ কান অসীম ঘূণী (infinite loop) থেক থােক সটােক মরামেতা কেরা।
int n = 3 ;
while ( n >= 0 ) / / থম ঘূণী
{
cout << n ∗ n << " " ;
−−n ;
}
cout << n << endl ;

while ( n < 4 ) / / ি তীয় ঘূণী


cout << ++n << " " ;
cout << n << endl ;

while ( n >= 0 )
5g
/ / তৃতীয় ঘূণী
cout << ( n / = 2 ) << " " ;
cout << endl ;
in
৫. একজন অনিভ মেলখক নীেচর মেলখিট (program) িলেখেছ। মেলখিটর ছাড়ন
(indentation) দেখ যমন মেন হে মেলখিট িঠক তমন ফলন (output) িদে
না। অথাৎ মেলখক চেয়িছেলন ১০ থেক কের িতবার ২ িদেয় ভাগ করেবন আর
am

ভাগফেলর বগ দখােবন। ভাগ করেত িগেয় হেয় গেল থেম যােবন। তরাং তার কা-
ি ত ফলন হে 25 4 1 িক মেলখিট হেত সরকম ফলন আসেছ না। তা তুিম থেম
এই মেলখ যমন আেছ তমন রেখই এর ফলন িনণয় কেরা। আর সে ে ছাড়ন ক-
মন হেব সটাও দখাও। তারপর কাি ত ফলাফল পেত গেল মেলখেত কী পিরবতন
করেত হেব সটাও কের দখাও।
i n t n = 10 ;
al

while ( n > 0 )
n /= 2 ;
cout << n ∗ n << " " ;
cout << endl ;

৬. নীেচর মেলখিট (program) কী করেব বণনা কেরা। তারপর এিটেক এমন ভােব আবার
িলেখা যােত এেত ণ ঘূণীর (while loop) বদেল কেরা ঘূণী (do loop) ব ব ত হয়,
িক সব িমিলেয় মেলখেয়র বিশ একই থােক।
int n ;
cout << " dhonatok sonkhya : " ;
c i n >> n ;

while ( n <= 0 )
{

১৯০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

cout << " dhonatok noy . " << endl ;


cout << " dhonatok sonkhya : " ;
c i n >> n ;
}

৭. নীেচর মেলখিটর (program) ফলন কী? এিটেক এমন ভােব বদেল লেখা যােত মহ া
(block) ব বহার না কেরই একই ফলাফল পাওয়া যায়। তারপর মেলখিটেক ণ ঘূ্ণী
(while loop) ব বহার না কের জ ঘূণী (for loop) ব বহার কের িলেখা।
int i = 5 ;
while ( i > 0 )
{
i = i + 1;
cout << i << endl ;
}

5g
৮. এমন একিট মেলখ রচনা কেরা যিট একিট ঘূণীর (loop) িভতের ব বহারকারীর কােছ
থেক এেকর পর এক একিট কের পূণক (integer) যাগান িনেব। যাগান নওয়া সংখ ািট
ধনা ক না হেল মেলখ থেক বর হেয় যােব, আর ধনা ক হেল মােনর মা সাের সং-
in
খ ািটর উৎপাদক েলােক পরপর এক সািরেত ফলন (output) িদেব, আর পেরর সংখ া
যাগান িনেত চাইেব। নমুনা যাগান-ফলন (sample input output) িন প:
> 0 utpadok <= 0 shesh
am

sonkhya koto ? 36
utpadok t a l i k a : 36 18 12 9 4 3 2 1
> 0 utpadok <= 0 shesh
sonkhya koto ? −1
kromolekho shesh !
al

৯. এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক পূণ সংখ া যমন
23154 যাগান (input) িনেয় ফলন িদেব 45132।

১০. এমন একিট মেলখ (program) রচনা কেরা যিট এেক এেক সংখ া যাগান (input)
িনেব যত ণ ধনা ক সংখ া দওয়া হে , অধনা ক সংখ া হেল মেলখ শষ হেব। ম-
লখিটর ফলন (output) হেব যাগান নয়া সংখ া েলার মেধ সবেচেয় বড়িট আর সিট
কত ন ের যাগান দওয়া হেয়িছেলা সই িমক ন রিট।

১১. িফেবানাি (Fibonacci) গমন হেলা ০, ১, ১, ২, ৩, ৫, ৮, ...। ল কেরা এই গম-


নর থম িট পদ হেলা ০ আর ১। আর এর পর থেক িতিট পদ তার আেগর েটা পেদর
যাগফল। এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক পূণক n
যাগান (input) িনেয় nতম পদ িনণয় করেব।

১২. একিট ধনা ক পূণক n যাগান িনেয় থম n াভািবক সংখ ার (১, ২, ৩, ...) যাগফল ও
ণফল িনণেয়র মেলখ (program) রচনা কেরা। তুিম হয়েতা জােনা থম n াভািবক

১৯১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

সংখ ার ণফলেক উৎপাদকীয় (factorial) বলা হয়। উৎপাদকীয় খুবই বড় সংখ া হয়


যা intএ নাও ধরেত পাের, কােজই n বড় হেল আমরা উ াপা া ফল পেত পাির।

১৩. নীেচর ধারা েলার থম n পেদর সমি িননয় কেরা। তামার মেলখেত (program)
তুিম n যাগান (input) িহসােব িনেব, আর ধারািটর সমি ফলন (output) িদেব।
x3 x5 x7
ক) ল া পাত ধারা (sine series): sin(x) = x − 3! + 5! − 7! + ...
x2 x6 x4
খ) ল া পাত ধারা (cosine series): cos(x) = 1 − 2! + 4! − 6! + . . .
গ) ভািজত ধারা (harmonic series): Hn = 1 + 12 + 31 + . . . + n1
ঘ) অয়লার সংখ া (Euler number): en = 1 + 1!1 + 2!1 + . . . + (n−1)!
1

ঙ) েণা র ধারা (geometric series): 1


1−x = 1 + x + x2 + . . . + xn−1

১৪. দশটা সংখ া যাগান (input) িনেয় তােদর গড় (mean) ও িমত িবচু িত (standard
deviation) িনণয় কেরা। িমত িবচু িত √
হেলা সংখ া েলার বেগর গড় থেক গেড়র বগ

5g
িবেয়াগ কের িবেয়াগফেলর বগমূল অথাৎ

n
x2
−(

n
x 2
) ।

১৫. একিট ণীেত n সংখ ক িশ াথী আেছ আর তােদর েত েক m সংখ ক িবষেয় পরী া
িদেয়েছ। েত ক ছাে র েত ক িবষেয়র ন র যাগান (input) িনেয় েত ক ছাে র মাট
in
ন র ফলন (output) দাও।

১৬. ০ থেক ৯ পয নামতার সারণী (table) িলখার জ একিট মেলখ রচনা কেরা। সার-
ণীেক র কের সাজােনার জ তামােক এক অে র সংখ া ও ই অে র সংখ া মাথায়
am

রাখেত হেব। এক অে র সংখ ার জ তুিম থেম একিট অিতির ফাঁকা (space) িদেয়
িনেব। তােত সারণীেত আিড় ও খািড় (row and column) িঠক মেতা থাকেব। আর নাম-
তার সারণীেত সবেচেয় বােমর খািড়েত (column) আর উপেরর আিড়েত (row) অব ই
০ থেক ৯ পয সংখ া েলা থাকেব িশেরানাম িহসােব।

১৭. এমন একিট মেলখ (program) রচনা কেরা যিট ৫০ জন ছাে র ন র যাগান (input)
al

িনেব, আর ফলন িদেব কান পা ায় কতজন ছাে র ন র পেড়েছ তা। িত ১০ ন েরর


জ একিট কের পা া িচ া করেত পােরা, আর মাট ন র হেল ৩০ যখােন এক জন ছা
১ থেক ৩০ পয য কান ন র পেত পাের। কােজই মাটা পা া রেয়েছ ৩িট।

১৮. তারকা ব বহার কের নীেচর িবিভ রকম আকৃিত েলা ফলন দাও। িতিট ে তুিম দর-
কার মেতা তুিম পরািমিত (parameter) n যাগান (input) িনেব। পরািমিত মােন হে
সািরর সংখ া বা সািরেত সেবা কয়িট তারা থাকেব বা থাকেব না এ েলা n ওপর িনভর-
শীল। নীেচর িতিট ে nএর মান 5।
∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗
∗∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗

১৯২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗ ∗∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗
∗∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗
∗ ∗ ∗

১৯. ি পদী সহগ (binomial coefficient) হেলা n Cr = n1 ∗ n−1 2 ∗...∗


n−r+1
r । ি পদী
সহগ েলা িনেয় একটা ি ভুজ তরী করা যায় যােক বলা হয় প াসক াল ি ভুজ। প াসক াল
ি ভুজ নীেচ দখােনা হেলা। থম সািরেত মানিট হেলা 0 C0 , ি তীয় সািরেত মান েলা
হেলা 0 C1 ও 1 C1 , তৃতীয় সািরেত 0 C2 , 1 C2 ও 2 C2 । পরািমিত n যাগান (input) িনেয়

1
1 1
1 2 1
5g
তার জ প াসক াল ি ভুজ ফলন (output) দাও। নীেচর প াসক াল ি ভুেজর পরািমিত
৪। তুিম চাইেল উি েয় পাি েয় নানান রকেমর প াসক াল ি ভুজ তরী করেত পােরা।
in
1 3 3 1
1 4 6 4 1
am

২০. এমন একিট মেলখ (program) রচনা কেরা যিট তামার সােথ একিট খলা খলেব।
মেলখিট তামােক মেন মেন ০ থেক ১০২৩ এর মেধ একিট ন র মেন মেন ধরেত
বলেব। আর তারপর মেলখিট তামােক বশ িকছু করেব, এই যমন তামার ধেরন
নওয়া সংখ ািট অমুক সংখ ার চেয় বড় বা সমান নািক ছাট। তুিম মূলত সত না িম-
থ া উ র িদেব। উ র েলার িভি েত মেলখিট বেল িদেব তামার ধের নওয়া সংখ ািট
কেতা? এই খলায় আসেল িতবার অেধক কের পা া কমােত হয়। তাই এটােক ি খ ডন
al

প িত (bisection method) বলা হয়। এই প িতিটেক অেনক সময় িয়ক অ স ান


(binary search) ও বলা হয় অব ।

পিরগণনা সমাধান: এবার আমরা পিরগণনার সম া েলার সমাধান দখেবা। মেন রাখেব সমা-
ধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়, তখন কবল
একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. নীেচর নকশার মেতা নকশা তরী কেরা। এই নকশার কানার িব েলােত + আেছ, এক-
দম বাম আর ডান পােশ আেছ |, আর অ সব েলা হেলা −, িতিট সািরেত − আেছ ২০িট
কের। েত ক সািরর − েলার জ তামােক একিট কের ঘূণী (loop) িলখেত হেব।
+−−−−−−−−−−−−−−−−−−−−+
|−−−−−−−−−−−−−−−−−−−− |
|−−−−−−−−−−−−−−−−−−−− |
+−−−−−−−−−−−−−−−−−−−−+

১৯৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

এই মেলখ (program) রচনা করা খুবই সহজ। আমােদর চারিট সািরর জ চারিট
জ ঘূণী (for loop) লাগেব। েত ক সািরর ও শেষ সংি িবেশষ িচ েলা
িদেত হেব। আর ঘূণী লাগেব মাঝখােনর − িচ বারবার লখার জ ।
cout << " + " ; / / উপের বাম কানা
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / থম সাির মাঝ
cout << " + " << endl ; / / উপের ডান কানা
cout << " | " ; / / ি তীয় সাির
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / ি তীয় সাির মাঝ
cout << " | " << endl ; / / ি তীয় সাির শষ
cout << " | " ; / / তৃতীয় সাির
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / তৃতীয় সাির মাঝ
cout << " | " <<
cout << " + " ;
for ( i n t i = 0 ;
cout <<"−" ;
cout << " + " <<
5g
endl ;

i < 20 ; ++ i )

endl ;
/ / তৃতীয় সাির শষ
/ / নীেচ বাম কানা

/ / চতুথ সাির মাঝ


/ / উপের ডান কানা
in
২. এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক (positive) পূণক
am

(integer) যাগান (input) িনেয় সটা মৗিলক (prime) সংখ া িকনা িনণয় করেব।
এই মেলখিট (program) নানান ভােব করা যেত পাের। আমরা থেম সবেচেয় সহজ-
িট িক সবেচেয় ধীর গিতর উপায়িট দিখ। একিট সংখ া n মৗিলক িকনা সটার পরী া
হেলা একিট ঘূণী (loop) চািলেয় ২ থেক কের n − 1 পয িতিট িদেয় n িবভাজ
িকনা পরী া কের দেখা। যিদ একিট িদেয়ও িবভাজ হয় তাহেল n মৗিলক নয়, আর স-
ে ঘূণী আর চালােনা দরকার নই, াি (break) িদেয় বর হেয় আসেত হেব। আর
al

ঘূণী যিদ শষ পয চেল, মােন ঘূণীর সূচেকর (loop index) মান যিদ n হয়, তাহেল n
মৗিলক। নীেচ মেলখিট (program) দেখা।

int n , k ; / / n মুল সংখ , k সূচক


cout << "nombor : " ;
c i n >> n ;

i f ( n <= 0 ) / / ঋণা ক িকনা পরী া


{
cout << " r i n a t o k " << endl ;
ret u rn EXIT FAILURE ;
}

/ / ২ থেক n−1 পয কানিট িদেয় িবভাজ িকনা

১৯৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

f o r ( k = 2 ; k < n ; ++k )
i f ( n % k == 0 )
break ; / / িবভাজ হেল আেগই াি

i f ( k == n ) / / শষ পয ঘূণী চেলেছ
cout << " moulik hoy " << endl ;
else / / আেগই বর হেয় এেসেছ
cout << " moulik noy " << endl ;

একটু খয়াল করেলই বুঝেব কান সংখ া মৗিলক িকনা তার জ আসেল ২ থেক n পয
পরী া করা দরকার নই। আসেল n/2 পয অথবা আেরা ভােলা কের বলেত গেল n এর
বগমূল পয পরী া করেলই চেল। কােজই উপেরর মেলখিট চাইেল আমরা আর একট
দ কের িলখেত পাির। নীেচ আমরা কবল পিরবতন সংি অংশ দখালাম।

িফিরি ৮.১০: মৗিলক সংখ া িকনা িনণয় (Whether a Number is Prime)

i f ( n % k == 0 )
break ; 5g
f o r ( k = 2 ; k < s q r t ( n ) ; ++k ) / / s q a r t ( n ) পয

/ / িবভাজ হেল আেগই াি


in
i f ( k >= s q r t ( n ) ) / / শষ পয ঘূণী চেলেছ
cout << " moulik hoy " << endl ;
else / / আেগই বর হেয় এেসেছ
am

cout << " moulik noy " << endl ;

৩. এমন একিট মেলখ (program) িলেখা যিট েটা ধনা ক পূণক (integer) যাগান
িনেয় তােদর গসা (HCF) ও লসা (LCM) িনণয় কের।
িট সংখ া a ও bএর গসা হেলা এমন একিট সংখ া g যিট ারা a ও b উভয় সংখ া
al

িবভাজ হয়। এই রকম একািধক সংখ া থাকেল সবেচেয় বড়িট হেব গসা । গসা বর
করা হেয় গেল আমরা a ও b এর ণফল ক গসা িদেয় ভাগ কের লসা পেত পাির। তা
এই মেলখ (program) িলখেত আমরা ১ থেক কের িতিট সংখ া িদেয় ভাগ কের
দখেবা a ও b উভয় সংখ া িবভাজ িকনা। যিদ িবভাজ হয় তাহেল ভাজকিট আমােদর
গসা হেত পাের, আর ণফলেক গসা িদেয় ভাগ কের লসা পেত পাির। তেব আমােদর
এখােনই থেম গেল হেব না, কারণ এর চেয় বড় কান সংখ া সাধারণ ভাজক িহসােব
পাওয়া যায় িকনা তা দখেত হেব। তেব একটা িবষয় মেন রাখেত হেব গসা g কখনই a
বা b কানটার চেয়ই বড় হেব না, েটার চেয়ই ছাট হেব।
cout << "nombor d u t i : " ; / / যাগান যাচনা
int a , b; / / চলক িট
c i n >> a >> b ; / / যাগান নওয়া

i f ( a < 0 | | b < 0) / / ঋণা ক িকনা?


{
cout << " r i n a t o k " << endl ;

১৯৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

ret u rn EXIT FAILURE ;


}

int p = a ∗ b , g , l ; // ণফল , গসা ও লসা

/ / এেক এেক পরী া কেরা উভেয় িবভাজ িকনা


f o r ( i n t k = 1 ; k <= a && k <= b ; ++k )
i f ( a % k == 0 && b % k == 0 ) / / উভেয় িবভাজ
{ g = k ; l = p/ k ; }

cout << " gosagu = " << g << endl ;


cout << " losagu = " << l << endl ;

চাইেল উপেরর মেলখেক আর একটু দ করেত পােরা। যেহতু গসা সংখ া েটার
কানটা থেকই বড় হয়, কােজই আমরা সংখ া েটার ছাটিট থেক ঘূণী (loop)

5g
করেত পাির। আর েটােক ভাগ করা যায় এমন সবেচেয় বড় ভাজকিট যেহতু আমােদর
দরকার, আমরা তাই ঘূণীিট ছাট থেক
মা ঘূণী থেক বর হেয় আসেবা।
কের বড়র িদেক চালােবা, আর থমিট পাওয়া

/ / চলক ঘাষণা , যাগান নওয়া ও ঋণা ক পরী ণ এখােন কেরা


in
int p = a ∗ b , g , l ; / / ণফল , গসা ও লসা

i n t m = a > b ? b : a ; / / েটার মেধ ছাটিট


am

/ / এেক এেক পরী া কেরা উভেয় িবভাজ িকনা


f o r ( i n t k = m; k ; ++k ) / / m হেত যত ণ নয়
i f ( a % k == 0 && b % k == 0 ) / / উভেয় িবভাজ
{ g = k ; l = p / k ; break }

cout << " gosagu = " << g << endl ;


al

cout << " losagu = " << l << endl ;

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

িফিরি ৮.১১: গসা ও লসা িনণয় (Determining HCF and LCM)


int t , g , l ; / / সামিয়ক , গসা , লসা
int p = a ∗ b; / / ণফল

do
{
t = a % b; / / ভাগেশষ িনণয়

১৯৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

a = b; / / আেগর ভাজক হেব নতুন ভাজ


b = t; / / ভাগেশষিট হেব নতুন ভাজক
}
while ( t ) ; / / ভাগেশষ হেল শষ

g = a , l = p / a ; / / গসা ও লসা

cout << " gosagu = " << g << endl ;


cout << " losagu = " << l << endl ;

৪. নীেচর মেলখেয়র (program) ফলন (output) কী হেব, গণিনেত (computer) না


চািলেয় বর কেরা। তারপর গণিনেত চািলেয় তামার িহসাব করা ফলাফল যাচাই কেরা।
যিদ কান অসীম ঘূণী (infinite loop) থেক থােক সটােক মরামেতা কেরা।
int n = 3 ;
while ( n >= 0 )
{

}
/ / থম ঘূণী

cout << n ∗ n << " " ;


−−n ;
5g
in
cout << n << endl ;

while ( n < 4 ) / / ি তীয় ঘূণী


am

cout << ++n << " " ;


cout << n << endl ;

while ( n >= 0 ) / / তৃতীয় ঘূণী


cout << ( n / = 2 ) << " " ;
cout << endl ;
al

উপেরর মেলখেয়র (program) ফলন (output) নীেচ দখােনা হেলা। থম ঘূণী 3


থেক কের 0 পয সংখ া েলার বগ দখােব। কােজই 9 4 1 0 ফলেন আসেব,
তারপর থম ঘূণীর (loop) িঠক পেরর cout এর কারেণ আসেব −1। ি তীয় ঘূনী 4
হওয়ার আেগ পয িতবার এক বািড়েয় সংখ ািট ফলন দখােব। কােজই আমরা পােবা
0 1 2 3 4, ি তীয় ঘূণীর িঠক পেরর coutএর কারেণ 4 আেরা একবার আসেব। তারপর
তৃতীয় ঘূণীেত nএর মান বা বশী হেল আেগ 2 িদেয় ভাগ করেব তারপর ফলন িদেব।
তা 4 হেত করেল আমরা ফলেন পােবা 2 1 0 িক একবার হওয়ার পের তারপর
িতবার 2 িদেয় ভাগ করেলও nএর মান ই থাকেব। কােজই ঘূণীর (loop) শত কখেনা
িমথ া হেব না। কােজই আমরা এেকর পর এক অসীম সংখ ক বার পেত থাকেবা।
অথাৎ এিট একিট অসীম ঘূণী (infinite loop) হেয় যােব।
9 4 1 0 −1
0 1 2 3 4 4
2 1 0 0 0 0 ....

১৯৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

অসীম ঘূণী িঠক করেত চাইেল আমরা তৃতীয় ঘূণীর শতিট n >= 0 বদেল n > 0 িলেখ
িদেত পাির। তােত তৃতীয় ঘূণীর কারেণ ফলন আসেব 2 1 0।

৫. একজন অনিভ মেলখক নীেচর মেলখিট (program) িলেখেছ। মেলখিটর ছাড়ন


(indentation) দেখ যমন মেন হে মেলখিট িঠক তমন ফলন (output) িদে
না। মেলখক চেয়িছেলন ১০ থেক কের িতবার ২ িদেয় ভাগ করেবন আর ভাগফ-
লর বগ দখােবন। ভাগ করেত িগেয় হেয় গেল থেম যােবন। তরাং তার কাি ত
ফলন হে 25 4 1 িক মেলখিট হেত সরকম ফলন আসেছ না। তা তুিম থেম এই
মেলখ যমন আেছ তমন রেখই এর ফলন িনণয় কেরা। আর সে ে ছাড়ন কমন
হেব সটাও দখাও। তারপর কাি ত ফলাফল পেত গেল মেলখেত কী পিরবতন কর-
ত হেব সটাও কের দখাও।

i n t n = 10 ;
while ( n > 0 )
n /= 2 ;

cout << endl ;


5g
cout << n ∗ n << " " ;

উপেরর মেলখিটেত ছাড়ন দেখ মেন হেয় ঘূণীর (loop) পেরর ই সাির ঘূণীর আওতার
in
মেধ । িক গঠনরীিত অ যায়ী আসেল তা হেব না, কারণ এখােন ব ব নী দয়া নই।
ফেল কবল n /= 2টাই ঘূণীর আওতায়। কােজই ঘূণী চলেব িঠকই, িতবার 2 িদেয় ভাগ
হেব, আর হেল ঘূণী থেম যােব। তারপর ঘূণীর বাইের থাকা coutএর কারেণ আমরা
am

0এর বগ 0ই ফলেন পােবা। ফেল ফলন হেব কবল 0। আর এই ে ছাড়েনর িবষয়িট


িঠকঠাক করেল মেলখ দখেত হেব নীেচর মেতা্।

i n t n = 10 ;
while ( n > 0 )
n /= 2 ; / / কবল এিট ঘূনীর িভতের
al

cout << n ∗ n << " " ; / / ছাড়ন িঠক করা হেলা


cout << endl ;

এবার কাি ত ফলন (output) পেত গেল আমােদর আসেল মেলখেত ব ব নী


(curly brackets) { } ব বহার কের coutটােকও ঘূনীর একিট মহ া (block) তরী
কের তার িভতের আনেত হেব। তরাং সইে ে মেলখিট হেব নীেচর মেতা।

i n t n = 10 ;
while ( n > 0 )
{ // মহ া
n /= 2 ; // ঘূনীর িভতের িছেলাই
cout << n ∗ n << " " ; // ঘূণীর িভতের এখন
} // মহ া শষ
cout << endl ;

১৯৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

৬. নীেচর মেলখিট (program) কী করেব বণনা কেরা। তারপর এিটেক এমন ভােব আবার
িলেখা যােত এেত ণ ঘূণীর (while loop) বদেল কেরা ঘূণী (do loop) ব ব ত হয়,
িক সব িমিলেয় মেলখেয়র বিশ একই থােক।
int n ;
cout << " dhonatok sonkhya : " ;
c i n >> n ;

while ( n <= 0 )
{
cout << " dhonatok noy . " << endl ;
cout << " dhonatok sonkhya : " ;
c i n >> n ;
}

5g
উপেরর মেলখিট (program) ধনা ক সংখ া দরকার এরকম যাগান যাচনা (input
prompt) কের nএর মান যাগান (input) িনেব। তারপর n যিদ ধনা ক না হয় তাহেল
ঘূণীর (loop) িভতের ঢুকেব আর বাতা (message) দখােব ধনা ক নয়, আর আবার
যাগান যাচনা কের nএর মান যাগান িনেব। তারপর ঘূনীর িভতের আবার পরী া করেব
অধনা ক িকনা, এবং এই ভােব চলেত থাকেব যত ণ না nএর মান ধনা ক হে । সব
in
িমিলেয় বলা যায়, কমপে একবার যাগান যাচনা িদেয় n এর মান যাগান নওয়া হেব: ঘূ-
ণীর বাইেরর যাগান যাচনা (input prompt) ও যাগান (input) নওয়াটা হেলা সিট।
তরাং আমরা খুব সহেজই কেরা ঘূনী (do loop) ব বহার করেত পাির এখােন।
am

int n ;
do
{
cout << " dhonatok sonkhya : " ;
c i n >> n ;
i f ( n <= 0 )
al

cout << " dhonatok noy . " << endl ;


}
while ( n <= 0 ) ;

তুিম চাইেল নীেচর মেতা কেরও িলখেত পােরা, যখােন আমরা ধনা ক হেল বরং ঘূণী
(loop) থেক াি (break) িনেবা। আর সে ে অব while(n <= 0) না িলেখ
আমরা কবল while(true) ও িলখেত পাির। আবার চাইেল কেরা ঘূনী (do loop) থেক
ণ ঘূণীেত (while loop) ফরতও যেত পাির, যখােন নীেচর while(true) টােক
সিরেয় িনেয় িগেয় do এর বদেল বিসেয় িদেবা।
int n ;
do
{
cout << " dhonatok sonkhya : " ;
c i n >> n ;

১৯৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

i f ( n > 0 ) break ;
cout << " dhonatok noy . " << endl ;
}
while ( n <= 0 ) ;

৭. নীেচর মেলখিটর (program) ফলন কী? এিটেক এমন ভােব বদেল লেখা যােত মহ া
(block) ব বহার না কেরই একই ফলাফল পাওয়া যায়। তারপর মেলখিটেক ণ ঘূ্ণী
(while loop) ব বহার না কের জ ঘূণী (for loop) ব বহার কের িলেখা।
int i = 5 ;
while ( i > 0 )
{
i = i + 1;
cout << i << endl ;
}

5g
উপেরর মেলখেত (program) ঘূণীর িভতের iএর মান আেগ কমােনা হে তারপর
সটা ফলেন (output) দখােনা হে । কাজিট আমরা ফলেন দখােনার সমেয়ই করেত
পাির পূব বৃি (pre increment) ব বহার কের, যা নীেচর মেলখেত দখােনা হেলা।
in
int i = 5 ;
while ( i > 0 )
cout << −− i << endl ;
am

তুিম চাইেল জ ঘূণী (for loop) ব বহার কের নীেচর মেতা কেরও িলখেত পােরা।
f o r ( i n t i = 5 ; −− i ; )
cout << −− i << endl ;

৮. এমন একিট মেলখ রচনা কেরা যিট একিট ঘূণীর (loop) িভতের ব বহারকারীর কােছ
al

থেক এেকর পর এক একিট কের পূণক (integer) যাগান িনেব। যাগান নওয়া সংখ ািট
ধনা ক না হেল মেলখ থেক বর হেয় যােব, আর ধনা ক হেল মােনর মা সাের সং-
খ ািটর উৎপাদক েলােক পরপর এক সািরেত ফলন (output) িদেব, আর পেরর সংখ া
যাগান িনেত চাইেব। নমুনা যাগান-ফলন (sample input output) িন প:
> 0 utpadok <= 0 shesh
sonkhya koto ? 36
utpadok t a l i k a : 36 18 12 9 4 3 2 1
> 0 utpadok <= 0 shesh
sonkhya koto ? −1
kromolekho shesh !

আমরা এখােন একটা অসীম ঘূণী (infinite loop) িনেবা েত while(true) িলেখ,
তার মােন ঘূণীর িভতের আমােদর অব ই একটা াি (break) িদেত হেব। তা নী-
চর মেলখেত (program) দেখা আমরা ঘূণীর িভতের যথাযথ যাগান যাচনা (input

২০০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

prompt) িদেয় সংখ ািট যাগান িনেয়িছ। তারপর সংখ ািট ধনা ক না হেল াি িদেয়িছ,
আর সে ে ঘূণীর বাইের " মেলখ শষ!" বাতা (message) দিখেয়িছ। আর সংখ ািট
ধনা ক হেল আমরা বড় থেক ছাটর িদেক িতিট সংখ া িদেয় দ সংখ ািটেক ভাগ
কেরিছ। ভাগেশষ হওয়া মােন ভাজকিট একিট উৎপাদক, সিট ফলেন (output)
দখােত হেব। তুিম চাইেল এখােন কেরা ঘূণী (do while) ব বহার করেত পারেত, আমরা
সিট তামার িনেজর চ ার ওপের ছেড় িদলাম, চ া কের দেখা।
িফিরি ৮.১২: উৎপাদক তািলকা দখাও (Display List of Factors)
while ( true )
{
cout << "> 0 utpadok <= 0 shesh " << endl ;
i n t ; c i n >> n ; / / যাগান

i f ( n <= 0 ) break ; / / ঋনা েক াি

i f ( n % k == 0 )
cout << " " << k ;
cout << endl ;
5g
cout << " utpadok t a l i k a : " ;
f o r ( i n t k = n ; k > 0 ; −−k )
in
}
cout << " kromolekho shesh ! " << endl ;
am

৯. এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক পূণ সংখ া যমন
23154 যাগান (input) িনেয় ফলন িদেব 45132।
i n t n , r , t ; / / ন র , উ া , সামিয়ক
cout << "nombor? " ;
c i n >> n ;
al

i f ( n <= 0 )
{
cout << " dhonatok noy " << endl ;
ret ur n EXIT FAILURE ;
}

r = 0; // েত উ া ন র
while ( n > 0 )
{
t = n % 10 ; / / একেকর অ
r = r ∗ 10 + t ; / / উ ার িপেছ
n = n / 10 ; / / অবিশ অংশ
}

cout << " u l t a = " << r << endl ;

২০১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

উপেরর মেলখেত থেম উ া ন র r ধের িনেয়িছ। তারপর n যত ণ না হে


তত ণ ঘূণী (loop) চালােনা হেব। িতবার nএর য একেকর অ আেছ সিট িনেয় r
িপেছ লািগেয় িদেত হেব। n এর একেকর অংক পাওয়া যায় ১০ িদেয় ভাগ কের ভাগেশষ
িনেল। এখন rএ যা আেছ তার িপছেন ওই অ িট লাগােত হেল rএর মানেক আেগ ১০
িদেয় ণ কের িনেত হেব কারণ এ েলা ত বােমর িদেক এক ঘর সের যােব, আর তােত
ডােনর য ানিট ফাঁকা হেলা সখােন ওই অ িট বিসেয় িদেত হেব, অথাৎ যাগ করেত
হেব। ঘূণীর পেরর পােকর জে n হেব আেগর পােকর একেকর অ ছাড়া বাঁকী অংশ,
আর সিট পাওয়া যােব ১০ িদেয় n ক ভাগ কের।
১০. এমন একিট মেলখ (program) রচনা কেরা যিট এেক এেক সংখ া যাগান (input)
িনেব যত ণ ধনা ক সংখ া দওয়া হে , অধনা ক সংখ া হেল মেলখ শষ হেব। ম-
লখিটর ফলন (output) হেব যাগান নয়া সংখ া েলার মেধ সবেচেয় বড়িট আর সিট
কত ন ের যাগান দওয়া হেয়িছেলা সই িমক ন রিট।
i n t boro = 0 , suchok = 0 ; / / েত েটাই

int k = 0 ;
while ( true )
{
//

cout << "nombor? " ;


5g
i n t n ; c i n >> n ;
িমক গানার জ

/ / যাগান যাচনা
/ / যাগান নওয়া
in
i f ( n <= 0 ) break ; / / অধনা ক সংখ া
am

k = k + 1; / / আর একিট যাগান হেলা

i f ( n > boro ) / / এিট আেগর বড়র চেয়ও বড়


{
boro = n ; / / এিট তাই নতুন বড়
suchok = k ; / / আর নতুন বড়িটর সূচক
al

}
}

i f ( k > 0 ) / / যিদ কান ন র যাগান হেয় থােক


{
cout << " boro = " << boro << endl ;
cout << " suchok = " << suchok << endl ;
}

উপেরর মেলখিটর (program) েত আমরা বড় সংখ া িহসােব আিদেত ধের িনেয়িছ


, যিট যাগান দওয়া য কান ধনা ক সংখ ার চেয় ছাট হেব। অেনক েলা সংখ ার
মেধ সবেচেয় বড় সংখ ািট বর করেত চাইেল আমরা সাধারণত েত ছাট একটা সং-
খ ােক ফলাফল িহসােব ধের নই। যােত সটার চেয় তুলনা কের কের আেরা বড় আেরা
বড় সংখ া পাওয়া যায়। তুিম যিদ অেনক েলা সংখ ার মেধ সবেচেয় ছাট সংখ ািট বর
করেত চাও তাহেল তামােক েত বড় একটা সংখ ােক ফলাফল িহসােব ধের িনেত হেব।

২০২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

যাইেহাক এরপর উপেরর মেলখিট দেখা যাগান যাচনা কের যাগান িনেয় থেম পরী া
কেরেছ ধনা ক িকনা। ধনা ক না হেল ঘূণীেত (loop) াি (break) িদেত হেব আর না
হেল যেহতু আেরকিট ধনা ক সংখ া পাওয়া গেলা তাই িমক ন র এক বাড়েব। এরপর
বতমােনর বড়িট সােথ তুলনা কের যিদ দখা যায় নতুন ন রিট বড়, তাহেল নতুন ন রিটই
হেব বড় আর তার সূচকিট আেরকিট চলেক িনেত হেব। ঘূণীর বাইের কবল বড় সংখ ািট
আর তার সূচক ফলেন (output) যােব।

১১. িফেবানাি (Fibonacci) গমন হেলা ০, ১, ১, ২, ৩, ৫, ৮, ...। ল কেরা এই গম-


নর থম িট পদ হেলা ০ আর ১। আর এর পর থেক িতিট পদ তার আেগর েটা পেদর
যাগফল। এমন একিট মেলখ (program) রচনা কেরা যিট একিট ধনা ক পূণক n
যাগান (input) িনেয় nতম পদ িনণয় করেব।

িফিরি ৮.১৩: িফেবানাি গমন িনণয় (Fibonacci Progression)


i n t n ; / / মান তুিম যাগান িনেয় ধনা ক িকনা পরী া করেব।

/ / থম েটা সংখ া আর তারপেররিটর চলক

5g
i n t prothom = 0 , d i t i y o = 1 , tarp or ;

i f ( n == 1 ) / / থমিট সরাসির ফলন


cout << " prothom = " << prothom << endl ;
in
e l s e i f ( n == 2 ) / / ি তীয়িট সরাসির ফলন
cout << " d i t i y o = " << d i t i y o << endl ;
else / / অ য কানটা মাগত িহসাব করেত হেব
am

{
f o r ( i n t k = 3 ; k <= n ; ++k )
{
/ / k−তম পদ িহসাব করা হেব
t a r p o r = prothom + d i t i y o ; / / যাগ
prothom = d i t i y o ; / / পেররটার জ ২য়টাই ১ম
al

d i t i y o = t a r p o r ; / / পেররটার জ নতুনটা ২য়
}
/ / নতুন যিট সিট তমk পদ , তরাং ফলন
cout << n << "tom = " << ta rp or << endl ;
}

থেম n চলক ঘাষণা variable declare) কের, তুিম যাগান যাচনা (input prompt)
িদেয় nএর মান যাগান িনেব। তারপর n ধনা ক িকনা পরী া কের দখেব। n ধনা ক
না হেল একিট ঘূণীর (loop) িভতের আবার যাগান িনেত পােরা যত ণ না ধনা ক মান
দওয়া হে ্ এই অংশটু কের দওয়া হেলা না, িনেজর কেরা। আমরা কবল িফেবানাি
পদ েলা িনণেয়র অংশটু দিখ। থম িট পদ ধারণ করার জ আমােদর prothom
আর ditiyo নােম িট আর পেরর পেদর জ tarpor নােম আেরকিট চলক (variable)
আেছ। যিদ nএর মান ১ বা ২ হয় তাহেল আমরা তা থম পদ িট থেক কান প িহসাব
করা ছাড়া সরাসিরই ফলন িদেত পাির। আর যিদ nএর মান 3 বা বশী হয় তাহেল এক-
িট জ ঘূণীেত (for loop) আমরা থেম tarpor পদিট িহসাব করেবা prothom ও

২০৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

ditiyo পদ িট যাগ কের। এবার তারওপেরর পদিটর জ আমােদর যা করেত হেব এই


পােক সটা িঠক কের রাখেত হেব, যােত পেরর পােকর েতই আমরা ওই পদিট িহসাব
করেত পাির। তা tarpor িহসাব করার পের এখন আমােদর থম পদিট হেব আেগ যিট
ি তীয় পদ িছেলা সিট, আর ি তীয় পদিট হেব tarpor পদিট। এবং তারফেলই পেরর
পােক prothom ও ditiyo যাগ করেল আমরা তারওপেরর পদিট পােবা। ঘূণী (loop)
চলেব এখােন ৩ থেক n হওয়া পয । খয়াল কেরা kএর মান যত আমরা ঘূণীর (loop)
মহ ার িভতের তততম পদিট িহসাব করিছ, আর তারপেরর পদিটর জ িত িনি ।

১২. একিট ধনা ক পূণক n যাগান িনেয় থম n াভািবক সংখ ার (১, ২, ৩, ...) যাগফল ও
ণফল িনণেয়র মেলখ (program) রচনা কেরা। তুিম হয়েতা জােনা থম n াভািবক
সংখ ার ণফলেক উৎপাদকীয় (factorial) বলা হয়। উৎপাদকীয় খুবই বড় সংখ া হয়
যা intএ নাও ধরেত পাের, কােজই n বড় হেল আমরা উ াপা া ফল পেত পাির।
i n t n ; / / মান তুিম যাগান িনেয় ধনা ক িকনা পরী া করেব।

5g
/ / নীেচর সািরেত যাগফল কন ০ আর ণফল ১?
i n t j o g f o l = 0 , gunfol = 1 ;
f o r ( i n t k = 1 ; k <= n ; ++k )
{
j o g f o l += k ; / / যাগ কেরা
in
gunfol ∗= k ; / / ণ কেরা
}
cout << " j o g f o l = " << j o g f o l << endl ;
am

cout << " gunfol = " << gunfol << endl ;

এই মেলখিট (program) খুবই সহজ। আমরা n চলক (variable) ঘাষণা দিখেয়িছ,


িক এর যাগান যাচনা (input prompt) ও যাগান (input) নওয়া তুিম করেব। তা-
রপর সিট ধনা ক িকনা সিটও পরী া করেব। এর পের খয়াল কেরা আমরা িট চলক
(variable) িনেয়িছ যাগফল ও ণফেলর জে । মজার ব াপার হে jogfolএর আিদ
al

মান (initial value) িদেয়িছ ০ িক gunfolএর আিদ মান িদেয়িছ ১। কন বলেত পার-
ব? যােগর মােন আেগ থেক ১ থাকেল তা যাগফল সিঠক আসেব না, ১ বশী আসেব,
তাই আিদ মান । আর ণফেলর ে আিদ মান ০ হেল এরপেরর সকল ণফলই তা
০ হেয় যােব, ১ িদেল সিট হেব না। যাগ ও েণর জ আিদ মােনর এই তফাৎ সবসময়
মেন রাখেব। এই মেলখেয়র বাঁকী অংশটু েতা আর ব াখ া করিছ না।

১৩. নীেচর ধারা েলার থম n পেদর সমি িননয় কেরা। তামার মেলখেত (program)
তুিম n যাগান (input) িহসােব িনেব, আর ধারািটর সমি ফলন (output) িদেব।
x3 x5 x7
ক) ল া পাত ধারা (sine series): sin(x) = x − 3! + 5! − 7! + ...
x2 x6x4
খ) ল া পাত ধারা (cosine series): cos(x) = 1 − 2! + 4! − 6! + . . .
গ) ভািজত ধারা (harmonic series): Hn = 1 + 12 + 31 + . . . + n1
ঘ) অয়লার সংখ া (Euler number): en = 1 + 1!1 + 2!1 + . . . + (n−1)!
1

ঙ) েণা র ধারা (geometric series): 1


1−x = 1 + x + x2 + . . . + xn−1

২০৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

3 5 7
এখােন আমরা ধু sin(x) = x − x3! + x5! − x7! + . . . এর মেলখ (program)
দখােবা। বাঁকী েলা তুিম একই রকম কের িনেজ কেরা। আমােদর nএর পাশাপািশ xও
যাগান (input) িনেত হেব। তেব n যখােন ধনা ক পূণক (positive integer) x স-
খােন ভ ক (fractioner)। তারপর আমােদর একিট ঘূণী (loop) িনেত হেব যিট 1 থেক
n পয ঘুরেব, আর িতপােক kতম পদিট িহসাব কের যাগফেলর সােথ যাগ কের িদেব।
k
একটু খয়াল করেল দখেব এখােন kতম পদিট আসেল − (−x) k! । তরাং আমরা পদ িন-
ণেয়র জ একিট ঘূণী (loop) চািলেয় শি (power) (−x)k িনণয় করেবা, আেরকিট
ঘূণী (loop) চািলেয় উৎপাদকীয় (factorial) k! িনণয় করেবা, আর তারপর পদিট যাগ
কের দেবা যাগফেলর সােথ।
int n ; // যাগান নাও
float x ; // যাগান নাও

f l o a t j o g f o l = 0 ; / / যাগফল
f o r ( i n t k = 1 ; k <= n ; ++k )
{
float shokti = 1 ;
5g
/ / (−x ) ˆk
f l o a t utpadokio = 1 ; / / k !
in
for ( i n t p = 1 ; p <= k ; ++p )
{
s h o k t i ∗= (−x ) ; / / শি িনণয়
utpadokio ∗= p ; / / উৎপাদকীয়
am

}
j o g f o l += − s h o k t i / utpadokio ;
}

cout << j o g f o l << endl ;


al

উপেরর মেলখিট আসেল দ হয় িন। কারণ এেত ঘূণীর িভতের ঘূনী বা অ াি ঘূণী
(nested loop) ব ব ত হেয়েছ। আসেল িভতেরর ঘূণীটা ব বহার না কেরই এই ম-
লখ (program) লখা স ব। একটা ব াপার খয়াল কেরা আেগর পেদর সােথ আমরা
কবল f rac−x2 (2k − 1)(2k − 2) ণ করেলই পেরর পদ পােবা। কােজই আেগর পদ
আেরকটা চলক (variable) ব বহার কের মেন রাখেল পেরর পদ সহেজ বর করা যােব,
এবং কান ঘূণী (loop) না চািলেয়ই তা বর করা স ব হেব।
int n ; // যাগান নাও
float x ; // যাগান নাও

f l o a t j o g f o l = 0 ; / / যাগফল
f l o a t pod = x ;
f o r ( i n t k = 1 ; k <= n ; ++k )
{
j o g f o l += x ;

২০৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

pod ∗= −x∗x / ( ( 2∗k−1 ) ∗ ( 2∗k − 2 ) ) ;


}

cout << j o g f o l << endl ;

১৪. দশটা সংখ া যাগান (input) িনেয় তােদর গড় (mean) ও িমত িবচু িত (standard
deviation) িনণয় কেরা। িমত িবচু িত √
হেলা সংখ া েলার বেগর গড় থেক গেড়র বগ
∑ ∑
x2 x 2
িবেয়াগ কের িবেয়াগফেলর বগমূল অথাৎ n −( n ) ।
i n t n ; / / কয়িট সংখ া যাগান নাও
/ / নীেচর চলক িট যাগফল ও বেগর যাগফল
f l o a t sumx = 0 , sumx2 = 0

5g
f o r ( i n t k = 0 ; k < n ; ++k )
{
cout << k << "tom pod ? " ; / / যাচনা
f l o a t x ; c i n >> x ; / / যাগান
in
sumx += x ; / / যাগফল িনণয়
sumx2 += x∗x ; / / বেগর যাগফল
}
am

f l o a t mean = sumx / n ; / / গড় , নীেচ িমত িবচু িত


f l o a t std = s q r t ( sumx2 / n − mean ∗ mean ) ;

উপেরর মেলখিট (program) খুবই সাধারণ। একিট ঘূণীর িভতের যাগফল ও বেগর
যাগফল বর কের নাও। তারপর ঘূণীর বাইের থেম গড় আর তারপর িমত িবচু িত িনণয়
al

কেরা। এখােন sqrt( ) িবপাতক (function) ব বহার কের বগমূল িনণয় করা হেয়েছ।
কােজই মেলখেয়র েত #include <cmath> িলেখ cmath িশর নিথ (header
file) অ ভু (include) কের িনেত হেব।

১৫. একিট ণীেত n সংখ ক িশ াথী আেছ আর তােদর েত েক m সংখ ক িবষেয় পরী া
িদেয়েছ। েত ক ছাে র েত ক িবষেয়র ন র যাগান (input) িনেয় েত ক ছাে র মাট
ন র ফলন (output) দাও।
i n t m, i n t n ; / / যাগান নাও

/ / েত ক ছাে র জ ঘূণী
f o r ( i n t i = 1 ; i <= n ; ++ i )
{
float jogfol = 0 ;

// েত ক িবষেয়র জ ঘূণী

২০৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

f o r ( i n t j = 1 ; j <= m; ++ j )
{
f l o a t nombor ;
cout << j << " th bishoy ? " ;
cout << nombor ;

j o g f o l += nombor ;
}
cout << "mot nombor = " << j o g f o l ;
cout << endl ;
}

এই মেলখেত (program) েটা অ াি ঘূণী (nested loop) লাগেব। থমিট িত


িশ াথীর জ , আর ি তীয়িট তােদর িতিট িবষেয়র জ । বাঁকী অংশ সহজ, দেখ নাও।

5g
১৬. এক পরী ায় মাট ন র ৯। কােজই একজন ছা ০ হেত ৯ পয য কান ন র পেত
পাের। এমন একিট মেলখ (program) রচনা কেরা যিট এই প ২০ জন ছাে র েত -
কর ন র যাগান (input) িনেয় তােদর ন র তারকা িচ িদেয় আ ভুিমক িচে দখােব।
িতনজন ছাে র জ নমুনা যাগান ও ফলন (input and output) িন প:
in
1tom nombor? 9
1 : ∗ ∗∗ ∗∗ ∗ ∗∗ ∗ ( 9 )
2tom nombor? 5
2 : ∗ ∗∗ ∗∗ ( 5 )
am

3tom nombor? 6
3 : ∗ ∗∗ ∗∗ ∗ ( 6 )

এখােনও আমেদর অ াি ঘূণী (nested loop) লাগেব। থম ঘূণীিট িতিট ছাে র জ


আর িভেতর একটা ঘূণী লাগেব দরকার মেতা তারকা দখােনার জ ।
al

/ / িতিট ছাে র ঘূণী


f o r ( i n t k = 1 ; k <= 20 ; ++k )
{
/ / যাচনা কের ন র যাগান
cout << k << "tom nombor? " ;
i n t nombor ; c i n >> nombor ;

// েত িমক ন র
cout << k << " : " ;

/ / তারকা দখােনার ঘূণী


f o r ( i = 1 ; i <= nombor ; ++ i )
cout << " ∗ " ;

// শেষ ব নীেত ন র দখােনা

২০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

cout << " ( " << nombor << " ) " ;


cout << endl ;
}

১৭. ০ থেক ৯ পয নামতার সারণী (table) িলখার জ একিট মেলখ রচনা কেরা। সার-
ণীেক র কের সাজােনার জ তামােক এক অে র সংখ া ও ই অে র সংখ া মাথায়
রাখেত হেব। এক অে র সংখ ার জ তুিম থেম একিট অিতির ফাঁকা (space) িদেয়
িনেব। তােত সারণীেত আিড় ও খািড় (row and column) িঠক মেতা থাকেব। আর নাম-
তার সারণীেত সবেচেয় বােমর খািড়েত (column) আর উপেরর আিড়েত (row) অব ই
০ থেক ৯ পয সংখ া েলা থাকেব িশেরানাম িহসােব।
এই মেলখিট একটু খুঁিটনািট খয়াল কের িলখেত হেব, যােত সারণীিট আসেলই র
লােগ দখেত। সব থেম সারণীর উপেরর বাম কানা খয়াল কেরা সিট অব ই ফাঁকা
হেব। আর থম সািরেত আসেল সংখ া েলা থাকেব ০ থেক ৯ পয িশেরানাম িহসােব।
ি তীয় সাির থেক মূলত ণফল েলা থাকেব। তেব থেমই থাকেব িশরনাম িহসােব সং-

5g
খ া, আর তারপর ণফল েলা। ণফল দখােনার আেগ অব ই খয়াল করেব ৯ বা ছাট
িকনা, সে ে একটা অিতির ফাঁকা (space) দখােত হেব।
cout << " " ; / / উপের বাম কানা
in
/ / থম সাির হেলা িশর নাম
f o r ( i n t i = 0 ; i <= 9 ; ++ i )
cout << " " << i ; / / ইটা ফাঁকা
am

cout << endl ;

/ / িতিট সংখ ার জ সাির


f o r ( i n t i = 0 ; i <= 9 ; ++ i )
{
cout << i ; / / থম খািড়
al

/ / িতিট সংখ ার জ খািড়


f o r ( i n t j = 0 ; j <= 9 ; ++ j )
{
i n t p = i ∗ j ; / / ণফল

cout << " " ; / / পৃথকী


i f ( p <= 9 ) / / এক অে র
cout << " " ; / / অিতির ফাঁকা
cout << p ; / / ণফল
}
cout << endl ; / / সাির শষ
}

১৮. এমন একিট মেলখ (program) রচনা কেরা যিট ৫০ জন ছাে র ন র যাগান (input)

২০৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

িনেব, আর ফলন িদেব কান পা ায় কতজন ছাে র ন র পেড়েছ তা। িত ১০ ন েরর


জ একিট কের পা া িচ া করেত পােরা, আর মাট ন র হেল ৩০ যখােন এক জন ছা
১ থেক ৩০ পয য কান ন র পেত পাের। কােজই মাটা পা া রেয়েছ ৩িট।
i n t prothom = 0 , d i t i y o = 0 , t i t i y o = 0 ;

f o r ( i n t k = 1 ; k <= 50 ; ++k )
{
cout << k << "tom nombor? " ;
i n t nombor ; c i n >> nombor ;

i f ( nombor <= 0 )
cout << " p a l l a r b a i r e " << endl ;
e l s e i f ( nombor <= 10)
++prothom ;
e l s e i f ( nombor <= 20)
++ d i t i y o ;
e l s e i f ( nombor <= 30)

else
++ t r i t i y o ; 5g
in
cout << " p a l l a r b a i r e " << endl ;
}

cout << " prothom = " << prothom << endl ;


am

cout << " d i t i y o = " << d i t i y o << endl ;


cout << " t r i t i y o = " << t r i t i y o << endl ;

১৯. তারকা ব বহার কের নীেচর িবিভ রকম আকৃিত েলা ফলন দাও। িতিট ে তুিম দর-
কার মেতা তুিম পরািমিত (parameter) n যাগান (input) িনেব। পরািমিত মােন হে
al

সািরর সংখ া বা সািরেত সেবা কয়িট তারা থাকেব বা থাকেব না এ েলা n ওপর িনভর-
শীল। নীেচর িতিট ে nএর মান 5।
∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗
∗∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗

∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗ ∗∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗
∗∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗

২০৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

∗∗ ∗ ∗∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗
∗ ∗ ∗

এই সব আকৃিতর িতিটর জ আমােদর অ াি ঘূণী (nested loop) লাগেব। আমরা


এখােন কবল উপেরর ডানপােশরিট কের িদেবা। বাঁকী েলা তুিম িনেজ করেব।
int n = 5 ; / / যাগান িনেত পােরা

/ / িতিট আিড়র ( row ) জ ঘূণী


f o r ( i n t a r i = 1 ; a r i <= n ; ++ a r i )
{
// েত ফাঁকা আেছ n − a r i সংখ ক
f o r ( i n t k h a r i = 1 ; k h a r i <= n − a r i ; ++ k h a r i )
cout << "−" ;

)
cout << " ∗ " ;
5g
/ / মাঝখােন তারা আেছ 2 ∗ a r i − 1 সংখ ক
f o r ( i n t k h a r i = 1 ; k h a r i <= 2∗ a r i − 1 ; ++ k h a r i

/ / শেষ ফাঁকা আেছ n − a r i সংখ ক


in
f o r ( i n t k h a r i = 1 ; k h a r i <= n − a r i ; ++ k h a r i )
cout << "−" ;
cout << endl ;
am

এই মেলখ (program) লখার িবধােথ আমরা থেম ফলনটােক (output) একটু


বদেল িলিখ। মূলত ফাঁকা েলােক (space) নীেচর ডানপােশর মেতা কের − বিসেয় িচ া
কির। তাহেল ফাঁকা নেত িবধা হওয়ায় নকশািটর ধাঁচ (pattern) পাওয়া সহজ হেব,
ফলেনর সময় আমরা ফাঁকাই িলখেবা − নয়। মেন রাখেব এখােন আমােদর পরািমিত ৫।
al

এখােন ৫ িট সাির আেছ। িতিট সািরেত তারা অ র আেছ ৯িট মােন 2∗5 − 1। আেরা
খয়াল কেরা ১ম সািরেত ও শেষ ফাঁকা আেছ ৪িট কের, ২য় সািরেত ৩িট কের, ৩িট
সািরেত ২িট কের। এসেবর িতিট ে যাগফল পাঁচ মােন ১ + ৪ = ২ + ৩ = ৩ + ২
= ৪ + ১। অথাৎ যততম সাির, ও শেষ ফাঁকার সংখ া ৫ থেক তত িবেয়াগ করেল
পাওয়া যােব। এরপর দেখা তারকার সংখ া হেলা পরপর সািরেত ১, ৩, ৫, ৭, ৯, অথাৎ
যততম সাির তার ি েণর চেয় এক কম সংখ ক তারা আেছ।
∗ −−−−∗−−−−
∗∗∗ −−−∗ ∗ ∗−−−
∗∗ ∗ ∗∗ −−∗∗ ∗ ∗∗−−
∗ ∗∗ ∗ ∗∗ ∗ −∗ ∗∗ ∗ ∗∗ ∗−
∗∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗ ∗∗ ∗∗

২০. ি পদী সহগ (binomial coefficient) হেলা n Cr = n1 ∗ n−1


2 ∗...∗
n−r+1
r । ি পদী
সহগ েলা িনেয় একটা ি ভুজ তরী করা যায় যােক বলা হয় প াসক াল ি ভুজ। প াসক াল

২১০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

ি ভুজ নীেচ দখােনা হেলা। থম সািরেত মানিট হেলা 0 C0 , ি তীয় সািরেত মান েলা
হেলা 0 C1 ও 1 C1 , তৃতীয় সািরেত 0 C2 , 1 C2 ও 2 C2 । পরািমিত n যাগান (input) িনেয়
তার জ প াসক াল ি ভুজ ফলন (output) দাও। নীেচর প াসক াল ি ভুেজর পরািমিত
৪। তুিম চাইেল উি েয় পাি েয় নানান রকেমর প াসক াল ি ভুজ তরী করেত পােরা।
1 −−−−1−−−−
1 1 −−−1−1−−−
1 2 1 −−1−2−1−−
1 3 3 1 −1−3−3−1−
1 4 6 4 1 1−4−6−4−1

আমরা আপাতত ধের নই িতিট সংখ ােত একটাই অ থাকেব। বশী অে র সংখ ার
জ তামােক আর একটু ক কের অিতিরি ফাঁকা (space) ব বহার করেত হেব। যা-
ইেহাক নকশার ধাঁচ বুঝার জ আমরা ফাঁকা েলােত সামিয়ক ভােব − বিসেয় িনেয়িছ।
আমােদর এখােন nএর মান ৪। তেব িহসােবর িবধােথ আমরা এখােন গণনা করেবা
০ থেক। কােজই ০তম সািরেত ও শেষ ফাঁকা রেয়েছ ৪িট। ১ম সািরেত ফাঁকা রেয়েছ
৩িট। এইভােব ৪থ সািরেত ফাঁকা

5g
িট। অথাৎ যত ন র সাির ৪ িবেয়াগ তত হেলা
শেষর ফাঁকার সংখ া। আর িত েটা সংখ ার মাঝখােন একটা ফাঁকা আেছ অথবা বলেত
পাের িতিট সািরর থম সংখ ািট ছাড়া পেরর সংখ া েলার সামেন ফাঁকা আেছ।
int n = 4 ; // যাগান িনেত পােরা , ও নয়া যেত পাের

in
/ / িতিট সািরর জ
f o r ( i n t k = 0 ; k <= n ; ++k )
am

{
/ / সািরর েত ফাঁকা
f o r ( i n t i = 0 ; i < n − k ; ++ i )
cout << " " ;

/ / মাঝখােন সংখ া েলা


al

f o r ( i n t i = 0 ; i <= k ; ++ i )
{
/ / িট সংখ ার মধ বতী ফাঁকা
i f ( i > 0)
cout << " " ;

/ / এবার সংখ ািট C ( k , i ) িননয়


i n t gunfol = 1 ;
f o r ( i n t j = 1 ; j <= i ; ++ j )
gunfol = gunfol ∗ ( k − j + 1 ) / j ;
/ / উপেরর সািরেত gunfol ∗= ( k − j + 1 ) / j ;
/ / িলখেল িঠক মেতা ফলন আসেব না ,
/ / কারণ পূণেকর ভাগ সম া করেব

cout << gunfol ;

২১১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৩. অ শীলনী সম া (Exercise Problems)

/ / সািরর শেষ ফাঁকা


f o r ( i n t i = 0 ; i < n − k ; ++ i )
cout << " " ;
cout << endl ;
}

২১. এমন একিট মেলখ (program) রচনা কেরা যিট তামার সােথ একিট খলা খলেব।
মেলখিট তামােক মেন মেন ০ থেক ১০২৩ এর মেধ একিট ন র মেন মেন ধরেত
বলেব। আর তারপর মেলখিট তামােক বশ িকছু করেব, এই যমন তামার ধেরন
নওয়া সংখ ািট অমুক সংখ ার চেয় বড় বা সমান নািক ছাট। তুিম মূলত সত না িম-
থ া উ র িদেব। উ র েলার িভি েত মেলখিট বেল িদেব তামার ধের নওয়া সংখ ািট
কেতা? এই খলায় আসেল িতবার অেধক কের পা া কমােত হয়। তাই এটােক ি খ ডন

5g
প িত (bisection method) বলা হয়। এই প িতিটেক অেনক সময় িয়ক অ স ান
(binary search) ও বলা হয় অব ।
i n t soto = 0 , boro = 1024 ;

cout "mone mone ekta nombor nao " << endl ;


in
<<
cout << " nomborti hote hobe 0−−1023 " << endl ;
cout << " n i c h e r prosnogulor u t t o r dao " << endl ;
cout << " sotyo hole 1 , mithya hole 0 " << endl ;
am

do
{
f l o a t modhyo = ( soto + boro ) / 2 . 0 ;
cout << " sonkhya >= " << modhyo << " ? " ;
i n t u t t o r ; c i n >> u t t o r ;
al

i f ( uttor )
soto = modhyo ;
else
boro = modhyo − 1 ;
cout << soto << " " << boro << endl ;
}
while ( soto < boro ) ;
cout << " sonkhya = " << soto << endl ;

চেলা আমরা উপেরর মেলখিট (program) িবে ষণ কির। আমরা িট সংখ া িনেয়িছ
soto আর boro যখােন আমরা আমােদর পা া রাখেত চাই। আমরা পা া িহসােব ধের
িনলাম ০ আর ১০২৪। তা থমবাের আমরা তাহেল করেবা ধের নওয়া সংখ ািট
অেধক অথাৎ ৫১২ এর চেয় বড় বা সমান িকনা। উ র যিদ াঁ হয় তার মােন ধের নও-
য়া সংখ ািট সবিন ৫১২, কােজই soto ক আমরা বদেল কের ফলেত পাির ৫১২। এেত

২১২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৮.২৪. গণনা পিরভাষা (Computing Terminologies)

আমােদর পা া অেধক হেয় গেলা। এবার ৫১২ ও ১০২৪ এর মাঝখােনরিট ৭৬৮ িদেয়
একই রকম করেবা। উ র যিদ না হয় তার মােন ধের নওয়া সংখ ািট সেবা ৭৬৭,
কােজই boro ক আমরা বদেল কের ফলেত পাির ৭৬৭। এবােরও পা া অেধক হেয় গ-
লা। এইভােব চলেত থাকেব। উপেরর মেলখ খয়াল কেরা, দেখা এত ণ যা বললাম,
তাই কেরিছ িক না? তাহেল হেয় গেলা আমােদর মজার খলা!

৮.২৪ গণনা পিরভাষা (Computing Terminologies)


• পুনািল (iterative) • আদ ায়ন (initialisation)
• ঘূণী (loop) • হালায়ন (update)
• সূচক (index)
• িডঙােনা (continue)
• জ ঘূণী (for loop)

• ণ ঘূণী (while loop)

• কেরা ঘূণী (do loop)


• পুনরাবৃি (repetition)
5g
• পতাকা (flag)

• অসীম (infinite)

• িমথি য়া (interaction)
in
am
al

২১৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

খড২
5g
English (বাংলা)
in
am
al

২১৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

২১৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

২১৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ৯

Program Writing in c++


(িসিপিপেত মেলখ রচনা)

5g
কান programmerএর (পিরগণেকর) কােছ িনেজর লখা program ( মেলখ) একদম স া-
নর মেতা। িতল িতল কের সময় িনেয় programmer একিট program গেড় তােল। য
problemএর(সম া) জ program তরী করেত হেব, সটা জানার পের programmer
থেম িচ া ভাবনা কের কী িলখেব, তারপর সটা program লখার যথাযথ িনয়ম মেন িলেখ
in
ফেল, তারপর সটা চািলেয় দেখ িঠক ঠাক কাজ কের িক না। যিদ ভুল িকছু থেক থােক, ভুলটা
বর কের, সটা িঠক কের, তারপর আবার program চািলেয় দেখ। এই চলেত থােক যত ণ না
মন মেতা problemিটর solution পাওয়া যাে । আমরা সারা বইেত পড়েবা programএ কী
am

িলখেবা আমরা, আর যথাযথ ভােব program রচনার িনয়মই বা কী। তেব এইখােন আেলাচনা
করেবা, program ( মেলখ) িলখেবা কাথায় আর সটা চালােবা কী কের।
Computerএ (গণিন) execute (িনবাহ) করার জ আমরা যখন একিট program িলখ-
ত চাই, তখন থেম আমরা সটা edit (স াদনা) কির সাধারণত কান একটা programming
languageএ (পিরগণনা ভাষা)। এই programming language িঠক computerএ exe-
cutable (িনবাহেযাগ ) language নয়, আবার িঠক মা েষর natural languageও ( াভা-
al

িবক ভাষা) নয়, বরং এ েটার মাঝামািঝ িকছু একটা। Programmming languageএ িল-
িখত আমােদর programেক আমরা তাই এরপের compile (সংকলন) কের যে র পােঠাপেযা-
গী machine languageএ (য ভাষায়) পা র কির যােত computer সটা বুঝেত পাের।
তারপর পা িরত programিটেক আমরা execute (িনবাহ) কির।

৯.১ Online Software (হয়মান ম পািত)


Online (হয়মান) editing & compilation এর (স াদনা ও সংকলন) জ আমরা cpp.sh
নামক webpage (জালপাতা) ব বহার করেবা। তুিম খুঁজেল এরকম আেরা অেনক webpage
পেত পােরা। যাই হাক তামার internet browserএ (আ জাল বাজেক) web address
(জাল িঠকানা) িলখবার জায়গায় cpp.sh িলেখ তুিম উপের উে িখত ওই webpage এ যেত
পােরা। তারপর browser এ ( াজেক) ওই webpage কমন দখা যােব সটা আমরা নীেচর
ছিবেত দখেত পােবা। খয়াল কেরা ওই ছিবেত িবিভ অংশ তীর িচ িদেয় িচি ত করা হেয়েছ।
বড় সাদা অংেশ editing area (স াদন খানা) লখা হেয়েছ। Editing areaএর নীেচ বাম

২১৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.১. Online Software (হয়মান ম পািত)

িদেক রেয়েছ িতনিট tab (পাট): options tab (উপা পাট), compilation tab (সংকলন
পাট), execution tab (িনবাহ পাট), আর ডান িদেক রেয়েছ run (চালাও) button।

5g
in
am

আমরা মুলত program writing ও editing করেবা editing areaেত (স াদন খা-
না)। Sample (নমুনা) িহসােব editing areaেত আেগ থেক িকছু থাকেত পাের, তুিম স েলা
মুেছ িদেত পােরা বা তামার programএর জ দরকার মেতা বদেল িনেত পােরা। cpp.sh
al

webpageএ (জালপাতা) গেল সাধারণত নীেচ দখােনা programিটই ( মেলখ) সখােন


থােক। আমরা আপাতত options tabএ (উপা পাট) কান পিরবতন না কের সরাসির run
buttonএ (চালাও বাতাম) click কের sample (নমুনা) programিটই run করেবা।
/ / Example program
#i n c l u d e <iostream>
#i n c l u d e <s t r i n g>

i n t main ( )
{
std : : s t r i n g name ;
std : : cout << "What i s your name? " ;
g e t l i n e ( std : : c i n , name ) ;
std : : cout << " Hello , " << name << " ! \n" ;
}

২২০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.১. Online Software (হয়মান ম পািত)

Program editing শষ হেল অথবা মাঝামািঝ অব ােতও পরী া কের দখার জ আম-
রা সাধারণত run buttonএ click (িটপ) করেবা। তােত এক clickএই থেম program
compile (সংকলন) হেব তারপর execution (িনবাহ) হেব। যখন program compile হেত
থাকেব তখন editing areaএর মাঝখােন দখেব "Please Wait Compiling" "অেপ া
কেরা সংকলন হে " লখা আসেব। আর একই সােথ run buttonিট বদেল িগেয় হেয় যােব
cancel button (বািতল বাতাম)। অেনক ে compile হেত সময় লােগ, তুিম যিদ কান
কারেণ compilation cancel করেত চাও তাহেল cancel buttonএ click করেলই হেব।
যখন compile হেত থােক তখন বাম িদেকর tab েলা (পাট) খয়াল করেব, option tabএর
(উপা পাট) বদেল compilation tab (সংকলন পাট) সামেন চেল আসেব। এসময় সময় কান
error ( িট) পাওয়া গেল compile tabএ দখা যােব। আর কান compilation error না
থাকেল Compilation successful message দখা যােব compilation tabএ আর তার-
পর execution tab (িনবাহ পাট) সামেন আসেব। Execution timeএ input and output
( যাগান ও ফলন) execution tabএ চলেব আর cancel buttonিট (বািতল বাতাম) বদেল
হেয় যােব stop button (থামন বাতাম), যােত য কান সময় execution থািমেয় দয়া যায়।
Stop button click করেল অথবা execution শষ হেয় গেল আবার options tab (উপা

5g
পাট) সামেন আসেব আর run button (চালাও বাতাম) িফের আসেব।
in
am
al

Sample programিট আমােদর আপাতত িব ািরত বুঝার দরকার নাই, আমরা পের ব া-
পার েলা িব ািরত িশখেবা। তেব Sample programিট চালােল উপেরর ছিবর মেতা থেম
execution tabএ (িনবাহ পাট) দখােব What is your name? তখন তুিম যিদ তামার নাম
িলেখ দাও gonimia আর তারপর enter (ভুি ) চাপ দাও, তাহেল পেরর সািরেত লখা আসেব
Hello, gonimia! নামটু নওয়ার আেগ What is your name? দখােনােক আমরা বিল

২২১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.১. Online Software (হয়মান ম পািত)

input prompt ( যাগান যাচনা) আর নাম gonimia দওয়াটােক আমরা বিল input ( যাগান)
দওয়া আর পেরর সািরেত Hello, gonimia! দখােনােক আমরা বিল output (ফলন) দ-
ওয়া। তা তুিম run (চালাও) buttonএ িটপ িদেয় দেখা কী হয়। থেম compilation tab
হেয় execution tabএ (িনবাহ পাট) িগেয় উপের য ভােব বলা হেলা স রকম হয় কী না দেখা।
তামার বাঝার িবধােথ execution tabএ শষ পয কী থাকেব তা নীেচ দখােনা হেলা।
What i s your name? gonimia
Hello , gonimia !

এবার আমরা একটু দিখ compilationএ (সংকলন) error হেল কী ঘেট, আর আমােদর
কী করেত হয়! এটার জ আমরা ইে কের একটা error ( িট) তরী কের দই। যমন ধেরা
std: : string name; লখা রেয়েছ য সািরেত সখােন একদম শষ হেত semicolon (িদিত)
; তুিম মুেছ দাও। আর তারপর run buttonএ (চালাও বাতাম) িটপ দাও। দখেব নীেচর মেতা
কের error message দখােব compilaiton tabএ (সংকলন পাট), আর compilation
tabই সামেন থাকেব, execution tab (িনবাহ পাট) সামেন আসেব না।

5g
in
am
al

Compilation tabএ (সংকলন পােট) য message েলা আসেব তা নীেচ দখােনা হেলা।
ি তীয় সািরেত দেখা 8 : 3 মােন বুঝাে ৮ম সািরেত error আেছ আর ৩য় অ ের, আর errorটা
হেলা ; থাকেত হেব। আসেল ; দরকার আমােদর ৭ম সািরর শেষ। সাধারণত য সািরেত error
আেছ বলা হয়, error সই সাির বা আেগর সািরেত থােক। এখােন ; থাকায় compiler (সংক-
লক) আসেল িঠক ৭ম আর ৮ম সাির িনেয় িকি ত িব াি েত রেয়েছ। Program রচনার সময়
আমরা নানান রকম ভুল িট কির, তুিম program লখার চচা করেত থাকেল এই িট েলার
সােথ পিরিচত হেয় যােব। তখন দখা মা ই বুঝেত পারেব ভুলটু কী আর কী কের সটা িঠক
করেত হেব। যাইেহাক িটটু বুঝেত পারেল আমরা সিট িঠক কের আবার run buttonএ িটপ
িদেবা, আর তখন programিট সফল ভােবই execute হেব।
I n f u n c t i o n ' i n t main ( ) ' :
8 : 3 : e r r o r : expected i n i t i a l i z e r before ' std '

২২২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.২. Offline Software (নয়মান ম পািত)

9 : 22 : e r r o r : 'name ' was not declared i n t h i s scope

সবেশেষ আমরা options tab (উপা পাট) সংে েপ আেলাচনা করেবা। সখােন থাকা নানা
option েলার (উপা ) কী কাজ মুলত সটাই জানা আমােদর উে । তেব এ েলা িনেয় আমরা
আপাতত পরী া-িনরী া করেবা না, বরং য রকম অব ায় আেছ স রকম অব ােতই program
( মেলখ) editing (স াদনা), compile (সংকলন) ও execute (িনবাহ) করেবা।

১. সবেচেয় বােমর columnএ ( ে ) দেখা standard ( িমত) option েলা রেয়েছ।


িসিপিপ ভাষার নানান version (সং রণ) রেয়েছ, তুিম চাইেল আেগর version ব বহার
করেত পােরা, সাধারণত এখােন C++14 version িনবাচন করা থােক।

২. বাম থেক ি তীয় ে আেছ warning messageএর (সতকবাতার) option েলা,


অথাৎ compile (সংকলন) করার সময় compiler (সংকলক) কতটা খুঁিট নািট িট
ধরেব সটা এখােন বেল দয়া হয়। সাধারণত এখােন সব Many (-Wall) optionিট
(উপা ) selected (িনবািচত) থােক।

5g
৩. বামেথেক তৃতীয় columnএ আেছ optimisationএর (অ লায়ন) option েলা।
একই program ( মেলখ) compiler (সংকলক) চাইেল এমন ভােব compile (সং-
কলন) করেত পাের য programিট অেনক ত execute (িনবাহ) হেব, আবার সিটই
এমন ভােব compile করেত পাের য programিট অেনক ধীের execute হেব। ত
in
execute হেব এমন compile করেত াভািবক ভােবই বশী সময় লােগ, আর ধীের
execute হেব সরকম compile করেত সময় কম লােগ। এখােন সাধারণত পূণ Full
(-O2) optionিট (উপা ) selected (িনবািচত) থােক।
am

৪. সবেচেয় ডােনর columnএ আেছ standard input ( িমত যাগান) optionসমুহ।


সাধারণত এখােন interactive (িমথি য়) option (উপা ) select (িনবািচত) করা
থােক যার অথ keyboard (চাপিন) ব বহার কের input ( যাগান) দওয়া যােব। তামার
programএ কান input না থাকেল তুিম none (িকছুনা) option select করেত পা-
রা। অথবা তুিম যিদ আেগই input িদেয় রাখেত চাও তাহেল text (পাঠিনক) option
select কের ওইখােন থাকা বাে আেগ থেক তামার input েলা িদেয় রাখেত পােরা।
al

তােত program ( মেলখ) keybaord (চাপিন) থেক input না িনেয় ওইখান থেক
িনেয় িনেব। তামােক আর িতবার input promptএ input িদেত হেব না।

৯.২ Offline Software (নয়মান ম পািত)


কাড কস (Code::Blocks) একিট offline software (নয়মান ম পািত) যিট িলনা , উই-
ডাজ, ম াক ওএস, সব operating systemএই (পিরচালনা ত ) ব বহার করা যায়। কাড -
কেস তুিম c/c++ program editing and compilation (স াদনা ও সংকলন) করেত পা-
রেব। কাড কস তামার computerএ (গণিন) install (সং াপন) কের িনেল তুিম internet
(আ জাল) ব বহার করা ছাড়াই তামার program compilation ও editing কের যেত
পারেব। কাড কস পাওয়া যায় http://www.codeblocks.org/ webpage (জালপাতা),
এর software তুিম http://www.codeblocks.org/downloads/binaries link হেত
নািমেয় িনেত পােরা। তুিম উইে ডাজ user হেল codeblocks-13.12mingw-setup.exe
version নািমেয় install (সং াপন) করেব। এই versionএ GCC compiler (সংকলক)

২২৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.২. Offline Software (নয়মান ম পািত)

আর GDB debugger (আপদনাশক) আেছ। তুিম িলনা বা ম াক user হেল তামার দর-
কারী version নািমেয় installl (সং াপন) করেব। Computerএ (গণিন) কাড কস install
(সং াপন) িবষেয় সাহায পেত চাইেল নীেচর থম িট link হেত video (ছিবও) দখেত পােরা
আর user manual (ব বহার পুি কা) পেত পােরা তৃতীয় link হেত ।

Windows: https://www.youtube.com/watch?v=zOGU8fC3bvU
Linux: https://www.youtube.com/watch?v=3B4hPHZNtNw
User manual: http://www.codeblocks.org/user-manual

এরপের তামার computerএ (গণিন) operating system (পিরচালনা ত ) কী আেছ


তার জ দরকারী িনেদশনা মেন তুিম কাড কস িঠকঠাক মেতা install (সং াপন) কের নাও।
Install হেয় গেল তারপর তুিম কাড কস programিট ( মেলখ) চালাও (run)। দখেব নী-
চর মেতা window (জানালা) খুেল যােব। তারপর তুিম menu ( াপণ ) থেক File এর অধীেন
Newএর (নতুন) িভতের Empty Fileএ (ফাঁকা নিথ) click (িটপ) দাও। নতুন fileএ আপাতত
িকছু থাকেব না। তারপর আবার menu ( াপণ ) থেক Save Fileএ click কের দরকার মেতা

5g
file name (নিথর নাম) যমন example.cpp িদেয় তামার নতুন সৃ fileিটেক save (সংর-
ণ) কেরা। Menu ( াপণ ) থেক এসব না কের নীেচর ছিবেত দখােনা icon button েলােত
(মূিত বাতাম) click কেরও তুিম তামার fileৈতরী ও তা নাম িদেয় save করেত পােরা।
in
am
al

এরপর example.cppেত নীেচর মেতা code (সংেকত) িলেখা। এই programিট আমা-


দর আপাতত িব ািরত বুঝার দরকার নাই, আমরা পের ব াপার েলা িব ািরত িশখেবা। তেব সং-
েপ বিল এই program ( মেলখ) তামােক িজে স করেব What is your name? আর
তুিম তামার নাম ধেরা gonimia িলেখ িদেল তখন বলেব Hello, gonimia!

২২৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.২. Offline Software (নয়মান ম পািত)

উপেরর ছিবেত ল কেরা আমরা য program িলেখিছ সটােত আসেল নীেচর code -
লাই িলেখিছ। এিট িঠক online software (হয়মান ম পািত) িহসােব cpp.sh webpage
(জালপাতা) ব বহার কের য program িলেখিছলাম সিটই। কাড কেস sample িহসােব আেগ
থেক এই রকম মেলখ থােক না, তামােক িনেজ এটা িলেখ িনেত হেব। তারপর উপেরর ছিব-
ত দখােনা build+run (বানাও+চালাও) buttonএ click কের তুিম programিট চালােব।
Build+run buttonএ click করেল আসেল থেম তামার লখা program compile (সং-
কলন) হেয় executable (িনবাহেযাগ ) program তরী হয়, আর তারপর সই executable
program আসেল run কের।
/ / Example program
#i n c l u d e <iostream>
#i n c l u d e <s t r i n g>

i n t main ( )
{

}
std : : s t r i n g name ;

5g
std : : cout << "What i s your name? " ;
g e t l i n e ( std : : c i n , name ) ;
std : : cout << " Hello , " << name << " ! \n" ;
in
তা build+run (বানাও+চালাও) buttonএ click িদেল সাধারণত নীেচর ছিবর মেতা কের
একটা অিতির window (জানালা) আসেব। আর তােত লখা থাকেব What is your name
? তখন তুিম যিদ তামার নাম িলেখ দাও gonimia আর তারপর enter (ভুি ) চাপ দাও, তা-
am

হেল পেরর সািরেত দখেব লখা আসেব Hello, gonimia!। নামটু নওয়ার আেগ What is
your name? দখােনােক আমরা বিল input prompt ( যাগান যাচনা) আর নাম gonimia
দওয়াটােক আমরা বিল input ( যাগান) দওয়া আর পেরর সািরেত Hello, gonimia! দখা-
নােক আমরা বিল output (ফলন) দওয়া।
al

তা তুিম Build+Run buttonএ (বানাও+চালাও বাতাম) click কের দেখা কী হয়। উপ-
র য ভােব বলা হেলা স রকম হয় কী না দেখা। তামার বাঝার িবধােথ execution (িনবাহ)
শেষ ওই অিতির windowেত কী থাকেব তা নীেচ দখােনা হেলা।

২২৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.২. Offline Software (নয়মান ম পািত)

What i s your name? gonimia


Hello , gonimia !

এবার আমরা দখেবা কাড কেস লখা আমােদর programএ যিদ কান ভুল থােক তাহেল
build+run (বানাও+চালাও) buttonএ click িদেল কী ঘটেব? Build+run buttonএ click
দওয়ার আেগ তামােক menu ( াপণ ) থেক Viewএর (দৃি ) অধীেন Logsএ (ঘটচা) িটপ
িদেত বলেবা, অথবা F2 key (চাপিন) চাপেলও একই কাজ হেব। এর ফেল নীেচর ছিবেত দখােনা
build messages tabএর (বানাও বাতা পাট) দখা যােব, যখােন আসেল compilationএ
(সংকলেন) কান error ( িট) থাকেল তা দখােনা হেব। এবার আমরা ইে কের একটা error
( িট) তরী কের দই। যমন ধেরা std: : string name; লখা রেয়েছ য সািরেত সখােন
একদম শষ হেত semicolon (িদিত) ; তুিম মুেছ দাও। আর তারপর build+run buttonএ
(বানাও+চালাও বাতাম) click কেরা। দখেব error message ( িট বাতা) দখােব build
message tabএ (বানাও বাতা পাট)।

5g
in
am
al

Build messages tabএ (বানাও বাতা পাট) য message েলা আসেব তা নীেচ দখােনা
হেলা। ি তীয় সািরেত দেখা 8 মােন বুঝাে ৮ম সািরেত িট আেছ, আর িটটা হেলা ; থাকেত
হেব। আসেল ; দরকার আমােদর ৭ম সািরর শেষ। সাধারণত য সািরেত িট আেছ বলা হয়,
িট সই সাির বা আেগর সািরেত থােক। এখােন ; থাকায় compiler (সংকলক) আসেল িঠক
৭ম আর ৮ম সাির িনেয় িকি ত িব াি েত রেয়েছ। Program রচনার সময় আমরা নানান রকম
ভুল িট কির, তুিম program লখার চচা করেত থাকেল এই িট েলার সােথ পিরিচত হেয়
যােব। তখন দখা মা ই বুঝেত পারেব ভুলটু কী আর কী কের সটা িঠক করেত হেব। যাইেহাক
িটটু বুঝেত পারেল আমরা সিট িঠক কের আবার build+run buttonএ (বানাও+চালাও
বাতাম) িটপ িদেবা, আর তখন program ( মেলখ) সফল ভােবই িনবািহত হেব।
I n f u n c t i o n ' i n t main ( ) ' :
8 : e r r o r : expected i n i t i a l i z e r before ' std '
9 : e r r o r : 'name ' was not declared i n t h i s scope

২২৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.৩. গণনা পিরভাষা (Computing Terminologies)

৯.৩ গণনা পিরভাষা (Computing Terminologies)


• Programmer (পিরগণক) • Build (বানাও)

• Programming (পিরগণনা) • Sample (নমুনা)

• Language (ভাষা) • Click (িটপ)


• Button ( বাতাম)
• Natural ( াভািবক)
• Cancel (বািতল)
• Program ( মেলখ)
• Input ( যাগান)
• Programmer ( মেলখক)
• Output (ফলন)
• Computer (গণিন)
• Stop (থামন)
• Execution (িনবাহ)

• Executable (িনবাহেযাগ )

• Edit (স াদনা)
5g
• Enter (ভুি )
• Prompt (যাচনা)
• Error ( িট)
• Column ( )
in
• Compile (সংকলন)

• Online (হয়মান) • Standard ( িমত)


• Optimisation (অ লায়ন)
am

• Offline (নয়মান)
• Interaction (িমথি য়া)
• Software (ম , ম পািত)
• Interactive (িমথি য়)
• Webpage (জালপাতা)
• Keyboard (চাপিন)
• Internet (আ জাল)
• None (িকছুনা)
al

• Browser ( াজক) • Text (পাঠিনক)


• Web address (জাল িঠকানা) • Operating system
(পিরচালনা ত )
• Editing area (স াদন খানা)
• Install (সং াপন)
• Tab (পাট)
• Debugger (আপদনাশক)
• Option (উপা )
• Video (ছিবও)
• Options tab (উপা পাট)
• User manual (ব বহার পুি কা)
• Compilation tab (সংকলন পাট) • Window (জানালা)
• Execution tab (িনবাহ পাট) • Menu ( াপণ )
• Run (চালাও) • File (নিথ)

২২৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

৯.৩. গণনা পিরভাষা (Computing Terminologies)

• Empty file (ফাঁকা নিথ) • Code (সংেকত)

• New (নতুন) • Semicolon (িদিত)

• Save (সংর ণ) • View (দৃি )

• Icon (মূিত) • Log (ঘটচা)

5g
in
am
al

২২৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১০

Program Structure
( মেলখেয়র কাঠােমা)

5g
Computerএ (গণিনেত) executable (িনবাহেযাগ ) এক instructionএর (িনেদশ)
sequenceেক ( ম) program ( মেলখ) বলা হয়। আমরা িসিপিপ (c++) languageএ
program তরী করেবা। Program সাধারণত একিট editor (স াদনা) software (ম )
ব বহার কের তরী করা হয়। আমরা একােজ আপাতত cpp.sh নােমর একিট webpage (জা-
in
লপাতা) ব বহার করেবা। িসিপিপ languageএ তরী programেক থেম একিট compiler
(সংকলক) িদেয় compile (সংকলন) কের computerএ executable code (সংেকত) ত-
রী করা হয়। তারপর সই code run (চালােনা) করেল বা execute (িনবাহ) করেল আমরা
am

সাধারণত consoleএর (য ালেয়র) monitorএ (নজিরেত) output (ফলন) দখেত পাই ।


Program অেনক সময় আমােদর কাছ থেক consoleএর keyboard (চাপিন), mouseএর
(িটপিন) মাধ েম input ( যাগান) িনেত পাের। আসেল console (য ালয়) বলেত inputএর
( যাগান) জ keyboard and mouse (চাপিন ও িটপিন) আর outputএর (ফলন) জ
monitor (নজির) বুঝােনা হয়। Program িলখেত গেল console (য ালয়) থেক input
( যাগান) নয়ার ও consoleএ (য ালেয়) output (ফলন) দখােনার কথা তুিম ায়শই নেত
al

পােব। কােজই এ েলা কী বুঝায় সটা ভােলা কের মেন রেখা।

১০.১ Wishing Program ( েভ া বাতার মেলখ)


িসিপিপ (c++) languageএ এমন একিট program ( মেলখ) িলেখা যিট run করেল (চা-
লােল) তামার program userেক (ব বহারকারী) েভ া জানােব। আসেল এিটই হেব িসিপ-
িপ languageএ তামার লখা থম program ( মেলখ)। ায় েত ক programming
languageএই এমন একটা কের program রচনা করা হয়।
নীেচ wishing message দখােনার জ একিট program িলখা হেয়েছ। Programিট
compile (সংকলন) কের execute (িনবাহ) বা run (চালােল) করেল য output (ফলন)
পাওয়া যােব তাও দখােনা হেয়েছ। ওই programএ মুল য statementিট (িববৃিত) আমােদর
wishing the best দখােব সিট হল cout << "wishing the best" << endl; এখােন
cout হল console out মােন consoleএর output device (ফলন য )। আর endl হল
end line অথাৎ যখােন endl বলা আেছ সখােন outputএ ওই সাির শষ হেব। খয়াল কেরা

২২৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.১. Wishing Program ( েভ া বাতার মেলখ)

আমরা monitorএ যা দখােত চাই তা ব quotattion "" িচে র িভতের লখা হেয়েছ। আর
<< িদেয় আমরা "wishing the best" ও endl কথা েলােক cout এর কােছ পাঠাই।
মেন রেখা cout এর statementিট (িববৃিত) ছাড়া আমােদর programএ আেরা অ া
statement য িল আেছ স িল আমােদর লখা ায় সকল programএই থাকেব। আমরা
তাই আপাতত ও েলা একরকম জার কের মেন রাখার চ া করেবা। তারপেরও অব আমরা
নীেচর আেলাচনা থেক সংে েপ জেন নব বাঁকী statement েলার কানটার কাজ কী।

িফিরি ১০.১: Wishing Program ( েভ া জানােনার মেলখ)


#i n c l u d e <iostream>
using namespace std ;
i n t main ( )
{
cout << " wishing the best " << endl ;

ret ur n 0 ;
}

wishing the best


5g
ফলন (output)
in
একদম েত আমরা #include <iostream> ব বহার কেরিছ কারণ iostream নােম
am

একটা header file (িশর নিথ) আেছ যটা আমরা আমােদর programএ অ ভু করেত চাই।
ওই header fileএ নানান function (িবপাতক) আেছ য েলা আমরা পের জানেবা ও ব বহার
করেবা। আপাতত জেন নই, ওই fileএ cout আর endl আেছ। মুলত আমােদর programএ
cout আর endl ব বহার করার জ ই আমরা iostream include কেরিছ। এরকম আেরা
header fileএর (িশর নিথ) কথা আমরা পের িব ািরত জানেবা ও অব ই ব বহার করেবা।
using namespace std; আমরা ব বহার কেরিছ কারণ cout আর endl আসেল েটা
al

নাম, আর ওই নাম েটা িসিপিপেত িবদ মান std (standard বা িমত) namespaceএর
(নামাধার) অ গত। িসিপিপেত একই নাম িভ িভ namespaceএর অ গত হেত পাের। তা
কােনা নাম বলেল সিট কান namespace থেক আসেব সিট আমরা আেগই বেল িদি , যমন
আমােদর সকল নাম আসেল std namespace থেক আসেব। Namespace কী আর একটু
ভােলা কের বুঝেত নীেচর paraেত (পিরে দ) ঢাকার ও ব ড়ার গাবতিল িনেয় আেলাচনা পেড়া।
গাবতিল নােম ঢাকায় একিট জায়গা আেছ আবার গাবতিল নােম ব ড়ায় আেরকিট জায়গা
আেছ। তা গাবতিল বলেত গেল আমােদর বলেত হেব 'ব ড়ার গাবতিল' অথবা 'ঢাকার গাবতিল',
কবল গাবতিল বলেল তা বুঝা যােব না কাথাকার গাবতিল। িবক িহসােব আমরা আেগই বেল
িনেত পাির য আমরা এখন ঢাকার কথা আেলাচনা করিছ। তখন কবল গাবতিল বলেলই আমরা
বুঝব এিট ঢাকার গাবতিল। আবার যিদ আেগই বেল নই য এখন থেক আমরা ব ড়ার কথা
আেলাচনা করেবা তাহেল গাবতিল বলেলই আমরা ব ড়ার গাবতিল বুঝব, ঢাকারটা নয়।
উপেরর programএ using namespace std; বেল আমরা আেগই বেল িনেয়িছ য এর-
পর থেক আমরা std namespace িনেয় কাজ করেবা। কােজই পের যখন cout আর endl
ব বহার কেরিছ, তখন আর std এর কথা বলেত হয় িন। িক কউ যিদ তার programএ using
namespace std; না লেখ, তাহেল তােক cout << "wishing the best" << endl;

২৩০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.২. Detailing Program (নাম-ধাম-বৃ াে র মেলখ)

এর বদেল িলখেত হেব std: : cout << "wishing the best" << std::endl; মােন cout
ও endl েটার পূেব std: : লািগেয় িনেত হেব, িঠক যমন গাবতিল বলার আেগ ঢাকা লািগেয় বল-
ত হেব ঢাকার গাবতিল। cout আর endl এর আেগ std: : না িলখেল program সফল ভােব
compile (সংকলন) করা যােব না, নানান error message ( িট বাতা) দখােব। Compile
করার সমেয় দখােনা error েলােক compile-time (সংকলন কালীন) error বলা হয়।
য কান িসিপিপ programএ একিট মুল function (িবপাতক) থােক main যার নাম।
এই main functionএ কান parameter (পরািমিত) থাকেব না, কােজই main( ) এর পের
round bracket েটার মেধ িকছু বলা হয় িন। আর িতিট function চাইেল একিট মান
return কের, main function সাধারণত একিট integer (পূণক) return কের, যা main
লখার আেগ int িহসােব উে খ করা হেয়েছ। Function িনেয় িব ািরত আেলাচনা আমরা
পের করেবা। আপাতত সংে েপ এইটু ই জেন রািখ। তা আমােদর programএ return 0;
statementিট আসেল বলেছ য আমােদর main functionিট return করেব। কার কা-
ছ return করেব? য আমােদর program চালাে তার কােছ। main function 0 return
করা মােন হেলা, এিট সফল ভােব শষ হেয়েছ, কান িট িবচু িত ঘেট িন। কান function
(িবপাতক) থেক 0 ছাড়া অ িকছু return করা িনেয়ও আমরা পের আেলাচনা করেবা।

5g
িসিপিপেত েটা curly bracketএর {} িভতের যা থােক তােক বলা হয় একিট block
(মহ া)। িতিট functionএর (িবপাতক) একিট bdoy (শরীর) থােক যিট blockএর িভত-
র থােক। ল কের দেখা আমােদর main functionএর cout আর return িদেয়
statement িট একিট blockএর িভতের রেয়েছ। আর একিট িবষয় খয়াল কেরা, আমােদর
হওয়া
in
statement েলার শেষ িক একিট কের semicolon (িদিত) ; রেয়েছ। িসিপিপেত বশী-
রভাগ statementএর পেরই আমরা এইরকম semicolon ; িদেয় statement শষ কির।
িঠক বাংলা ভাষায় িতিট বােক র পের দাঁিড় । দয়ার মেতা ব াপার।
am

১০.২ Detailing Program (নাম-ধাম-বৃ াে র মেলখ)

িসিপিপেত এমন একিট program ( মেলখ) রচনা কেরা যিট run করেল userেক তামার
নাম-ধাম-বৃ া কেয়ক সািরেত string (মালা) আকাের বেল দয়। সােথ number (সংখ া) িহ-
সােব তামার বয়স ও তামার ফলাফেলর িজিপএও বেল দয়।
al

িফিরি ১০.২: Detailing Program (নাম-ধাম-বৃ াে র মেলখ)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
using namespace std ;
i n t main ( )
{
cout << "my name i s goni mia " << endl ;
cout << " i am from bogra " << endl ;
cout << " i l i v e i n dhaka " << endl ;
cout << " i am " << 20 << " years old " << endl ;
cout << "my r e s u l t gpa " << 3 . 99 << endl ;
ret ur n EXIT SUCCESS ;
}

২৩১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৩. Writing Program Comments ( মেলখেত টীকা িলখন)

ফলন (output)
my name i s goni mia
i am from bogra
i l i v e i n dhaka
i am 20 years old
my r e s u l t gpa 3 . 99

নীেচর programএ আমরা নাম-ধাম-বৃ া কেয়ক সািরেত দিখেয়িছ। এই programএর


িতিট cout িদেয় statementএর (িববৃিত) সােথ পের দখােনা output (ফলন) িমিলেয়
নাও। ল কেরা cout িদেয় " " quotationএর (উ ৃিত) িভতের আমরা য string েলা (মা-
লা) দখােত বেলিছ স েলাই outputএ ব সভােবই দখােনা হেয়েছ। আর িতবার endl
অথাৎ end line পেল output পেরর সািরেত চেল গেছ। শেষর েটা cout statement
খয়াল কেরা। এই েটােত বয়স ও িজিপএ আমরা number (সংখ া) িহসােব দিখেয়িছ। তুিম
চাইেল িক সংখ া িহসােব না দিখেয় stringএর িভতেরই দখােত পারেত যমন নীেচর মেতা,
সে ে output িক দখেত একই রকম হেতা।

5g
cout << " i am 20 years old " << endl ;
cout << "my r e s u l t gpa 3 . 99 " << endl ;

সবেশেষ একটা িবষয় খয়াল কেরা। আমরা এই programএ return 0; এর বদেল িল-
in
খিছ return EXIT SUCCESS; আর এই EXIT SUCCESS আেছ cstdlib header fileএ
(িশর নিথ)। আমরা তাই #include <cstdlib> িলেখ cstdlib header fileিটও আমােদর
programএ include কেরিছ। মেন রাখেব EXIT SUCCESS এর value আসেল 0 িক 0 তা
একটা number যটা দেখ সরাসির িঠক অ ধাবন করা যায় না আমরা কী বুঝােত চাইিছ, মােন
am

program সফল না িবফল হেয়েছ। আমরা তাই কের EXIT SUCCESS িলখেবা যােত চা-
খ দেখই আমরা বুঝেত পাির ব াপারটা কী। বেল রািখ computerএর (গণিন) জ িক 0 আর
EXIT SUCCESS একই ব াপার কারণ EXIT SUCCESS এর value য 0 ওইটা তা cstdlib
fileএ বলা আেছ, compile করার পের EXIT SUCCESS আসেল 0 হেয় যােব, computer
ওইটা ই দখেত পােব। আমরা 0 এর বদেল EXIT SUCCESS আসেল িলখিছ কবল মা েষর
বুঝার িবধার জ , program পেড় চােখ দেখই যােত সহেজ বুঝা যায় programিট সফল
al

না িবফল ভােব শষ হে , সটাই আমােদর উে । তাহেল এখন থেক programএর main


functionএ return 0; না িলেখ return EXIT SUCCESS; িলখেব আর cstdlib header
fileও অ ভু কের নেব!
তা তামরা এখন থেক কেয়ক সািরেত িকছু দখােনার program রচনা করেত চাইেল এই
programএর মেতা কের রচনা করেব। দরকার মেতা number (সংখ া) ও string (মালা)
িমিশেয়ও িক যা দখােত চাও তা দখােত পারেব। চ া কের দেখা কমন?

১০.৩ Writing Program Comments ( মেলখেত টীকা িলখন)


এমন একটা program ( মেলখ) রচনা কেরা যিট বতমান সাল ২০১৫ থেক তামার বয়স
২০বছর িবেয়াগ কের তামার জ বছর দখায়। এই programএ দরকার অ যায়ী পযা পির-
মােন comment (টীকা) িলেখা, যােত অেনক িদন পের তুিম যখন programিট ায় ভুেল যা-
ওয়ার মেতা অব ায় যােব তখন programিট আবার দখেত িগেয় ত চাখ বুিলেয়ই সহেজ
বুঝেত পােরা য এিট তামার কীেসর program িছল। Programএ comment থাকেল তুিম

২৩২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৩. Writing Program Comments ( মেলখেত টীকা িলখন)

ছাড়া অ কউও তামার লখা program পেড় সহেজ বুঝেত পারেব। Comment লখা হয়
মা ষ য ভাষায় কথা বেল সই ভাষায় যমন বাংলায় বা ইংেরজীেত, িসিপিপ languageএও
নয়, machine languageএও নয়, কােজই comment িলখেল অেনক িদন পেরও আমােদর
program বুঝেত িবধা হয়।

িফিরি ১০.৩: Commenting in Programs ( মেলখেত টীকা লখন)


/ / l i s t of header f i l e s needed f o r t h i s program .
#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ; / / use the std namespace

i n t main ( )
{
/ / Subt r a c t 20 years from 2015 to get b i r t h y e a r

}
ret ur n EXIT SUCCESS ; 5g
cout << "my b i r t h y e a r " << 2015 − 20 << endl ;

/ ∗ return with success ∗ /


in
my b i r t h y e a r 1995
am

উপেরর program খয়াল কেরা। কিঠন িকছু নয়। আেগর মেতাই iostream আর cstdlib
include (অ ভু ) করা আেছ। তারপর বলা হেয়েছ using namespace std; তারপর main
function (িবপাতক) িহসােব int main() যিটর কান parameter (পরািমিত) নাই কারণ
( ) round bracketএর িভতের িকছু নাই আর যিট একিট integer (পূণক) ফরত দয় কারণ
int বলা আেছ েত। তারপর main functionএর শরীের েটা {} curly bracketএর
al

(বাঁকাব নী) িভতেরর blockএ (মহ া) বলা আেছ cout << "my birthyear " << 2015
− 20 << endl; অথাৎ outputএ my birthyear দিখেয় তারপর 2015 থেক 20 minus
করেল য 1995 পাওয়া যায় তা দখােব। তারপর blockএর িভতের শষ statement (িববৃিত)
আেছ return EXIT SUCCESS; যা আেগর মেতাই বলেছ য আমােদর program ওইখােন
সফল ভােব শেষ হেয় যােব। EXIT SUCCESS িনেয় আমরা আেগর পাঠ িব ািরত আেলাচনা
কেরিছ, ওই পাঠ থেকই দেখ িনেত পােরা, কােজই সটা আবার এখােন আেলাচনা করিছ না।
যাইেহাক, খয়াল কের দেখা ওপের বিণত িবষয় েলা ছাড়াও উপেরর programএ আেরা
িকছু বাক ও সাির দখা যাে যমন থম সািরিটই হল // list of header files needed
for this program. বলেত গেল এই বাক িট আসেল আমােদর programএর অংশ নয়,
অথ াৎ program যখন run করা (চালােনা) হেব তখন এই বােক র কান ভাব থাকেব না।
Program এমন ভােব চলেত থাকেব যােত মেন হেব ওই বাক িট যন ওখােন নাই। এরকেমর
বাক েলােক বলা হয় comment (টীকা)। খয়াল কেরা commentএর বাক িটর একদম সাম-
ন রেয়েছ // অথাৎ সামেনর িদেক হলােনা েটা দাগ। ওই েটা দাগ হেত কের ওই সািরেত
তারপের যাই থাকেব সব িমিলেয় হেব একিট comment। এইরকম comment যেহতু কবল
এক সািরেত সীমাব তাই এেক বলা হয় line comment (সাির টীকা)।

২৩৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৪. Spacing and Indentation ( মেলখেত ফাঁকা দওয়া)

Line comment যিদ সািরর েত লখা হয় তাহেল সাধারণত এিট commentএর িঠক
নীেচ য code (সংেকত) থােক তার জ লখা হয়। যমন দেখা // list of header files
needed for this program এই commentিট একদম সািরর থেক লখা হেয়েছ, এিট
তাই পেরর ই সািরেত #include <iostream> আর #include <cstdlib> কন লখা
হেয়েছ সিট ব াখ া করেছ। Line comment অেনক সময় সািরর শষিদেকও লখা হয়। যমন /
/ we will use the std namespace commentিট লখা হেয়েছ using namespace
std; িদেয় হওয়া সািরর শেষ। সািরর শষ িদেক লখা এইরকম line comment সাধারণত
সািরর থেম য code (সংেকত) লখা হেয়েছ তা ব াখ া করেত ব বহার করা হয়। অেনক সময়
comment িলখা হয় েত /∗ আর শেষ ∗/ িচ িদেয়, যমন return EXIT SUCCESS;
এর সািরেত শেষ লখা হেয়েছ। এইরকম comment একািধক সাির িমিলেয় হেত পাের, তাই
এেদরেক line comment না বেল block comment (মহ া টীকা) বলা হয়। িসিপিপেত
আমরা অিধকাংশ সময় আসেল line commentই ব বহার কির।
তুিম যখন তামার programএ comment িলখেব তখন হয়েতা ইংেরজীেতই comment
িলখেব। অথবা ইংেরজী অ ের বাংলায়ও comment িলখেত পােরা। এখন অেনক compiler

5g
(সংকলক) ও editor (স াদক) ইউিনেকাড (unicode) সংেকত বুঝেত পাের। কােজই চাইেল
comment বাংলায়ও লখা স ব। আমরা এরপর থেক িসিপিপেত লখা সকল programএ
comment বাংলায় িলখেবা, যােত আমরা আমােদর িনেজর ভাষায় সহেজ বুঝেত পাির। এ েলা
যেহতু execute (িনবাহ) হেব না, কােজই খােমাকা কন ক কের ইংেরজীেত িলখেত যােবা!
আর িবেদশী কউ তা আমােদর programএর code দখেব না, কােজই আমরা আমােদর বাংলা
in
ভাষােতই comment িলখেবা। তেব মেন রাখেব িবেদশী কােরা পড়ার স াবনা থাকেল আমােদর
comment সহ সবিকছু ইংেরজী ভাষােতই িলখেত হেব। তাহেল line comment আর block
comment শখা হেলা। এখন থেক program লখার সময় যেথ পিরমােন comment িদেব
কমন? আিমও programএ comment দেবা, যােত তামােদর বুঝেত িবধা হয়।
am

১০.৪ Spacing and Indentation ( মেলখেত ফাঁকা দওয়া)


িসিপিপ program ( মেলখ) িলখেত কখন নতুন সাির করেব? কখন ফাঁকা ফাঁকা কের িল-
al

খেব? কখন সািরেত একটু indentation িদেয় িলখেব। একিট program িলেখ এই িবষয় েলা
আেলাচনা কেরা। চেলা আমরা আমােদর wish করার ছাট programিট িদেয়ই আেলাচনা কির।

িফিরি ১০.৪: Spacing and Indentation ( মেলখেত ফাঁকা দওয়া)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
cout << " wishing the best " << endl ;

ret ur n EXIT SUCCESS ;


}

২৩৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৪. Spacing and Indentation ( মেলখেত ফাঁকা দওয়া)

উপেরর programএ আমরা আপাতত comment (টীকা) িলিখ নাই। এই programএ


# বা কাটাকািট (octothorpe) িদেয় হওয়া সাির েলা তামােক আলাদা আলাদা সািরেত
িলখেত হেব। আর এিট সািরর থেক হেলই ভােলা। তুিম অব সািরর শেষর িদেক চাইেল
line comment (সাির টীকা) িলখেত পােরা যােত বুঝা যায় ওই সািরর র িদেক তুিম আসেল
কী করেত চেয়েছা। তামার programএ লখা কাটাকািট # িদেয় হওয়া সাির েলা সাধার-
ণত compiler (সংকলক) িদেয় process করা হয় না। আলাদা একিট software (ম ) যার
নাম preprocessor (পুব- ি য়ক) সটা িদেয় compile করারও আেগ এই েলা process
করা হয়, কাজটা বশীর ভাগ সমেয় অব compilerই কিরেয় নয়। Preprocessor (পূব-
ি য়ক) িবষেয় িব ািরত আেলাচনা পের হেব।
#i n c l u d e <iostream> / / input output stream header
file

কান statement preprocessor (পুব ি য়ক) না compiler িদেয় process করা


হেব এটা বুঝার আেরকটা সহজ উপায় আেছ। এইরকম semicolon (িদিত) ; আর blockএর

5g
(মহ া) জ য curly bracket } ব বহার হয় তা িদেয় শষ হওয়া statement েলা সাধারণত
compiler িদেয় process করা হেব, preprocessor িদেয় নয়। যাইেহাক, compiler িদেয়
য code েলা ি য়া করা হয় স েলা য িভ িভ সািরেতই িলখেত হেব, বা অেনক ফাঁকা ফাঁকা
(space) কেরই িলখেত হেব এ রকম কান কথা নই। তুিম চাইেল তামার পুেরা programএ
থাকা সকল compilable code এক সািরেত িলখেত পােরা। যমন উপেরর programএর
in
compilable অংশটু আমরা চাইেল নীেচর মেতা টানা এক সািরেত িলখেত পাির।
#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
am

using namespace std ; i n t main ( ) { cout << " wishing


the best " << endl ; re turn EXIT SUCCESS ; }

উপের যিদও ই সািরেত দখা যাে আমরা আসেল using থেক কের } পয টানা
একসােথ িলেখিছ, িক এখােন পােশর িদেক ােনর তার কারেণ টানা সািরিট ভেঙ ই সাির
হেয় গেছ। তামার editorএ (স াদেক) এ যিদ পােশর িদেক অেনক জায়গা থােক তুিম এক সা-
al

িরেতই িলখেত পারেব। আসেল তম একিট space (ফাঁকা) দয়া বাধ তামুলক হেয় যায় যখন
পরপর েটা শ লখা হয়। যমন using, namespace, std, int, main এইরকম শ পর-
পর েটা থাকেল তামােক কমপে একিট space (ফাঁকা) িদেত হেব। েটা িচ যমন bracket
( ) বা semicolon ; বা আেরা অেনক symbol আেছ, এই েলা পরপর েটা থাকেলও কান
সম া নাই; একািধক symbol কান ফাঁকা না িদেয়ও তুিম একসােথ িলখেত পারেব।
এখন করেত পােরা space দয়া যিদ ব াপার না হয়, তাহেল program িলখেত কন
ফাঁকা দেবা। বশী বশী ফাঁকা আসেল computerএর (গণিন) জ দরকার নই িক দরকার
মা েষর জ । আেগর পােঠর কথা মেন কেরা। আমরা কন comment (টীকা) িলেখিছলাম?
Comment তা আর execute হয় না। আমরা যােত অেনকিদন পের programএর code
(সংেকত) দেখ সহেজ বুঝেত পাির, আমরা তাই comment িলেখিছলাম। তা program যিদ
পুেরাটা একটা ল া সাির হয়, আমােদর মা েষর পে সটা দেখ বুেঝ ওঠা খুবই ক কর হেব।
মুলত আমােদর মা েষর বুঝার িবধােথ আমরা program সািরেত সািরেত ভে ভে িলিখ
বা দরকার মেতা একসােথ িলিখ।
Programএ ফাঁকা দয়ার ব াপারিট রচনা লখার মেতাই, কখন তুিম আলাদা বাক করেব,
কখন তুিম আলাদা para (পিরে দ) করেব, কখন তুিম আলাদা section (অ ে দ) করেব, এই

২৩৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৫. Exercise Problems (অ শীলনী সম া)

রকম। কান িবষেয়র সােথ বশী স িকত statement েলা আমরা সাধারণত পরপর সািরেত
কান ফাঁকা (blank line) না িদেয় িলখেবা। আর েটা িবষেয়র সাির েলার মােঝ হয়েতা এক
সাির ফাঁকা িদেয় িলখেবা, আর িবষয় েলার মেধ খুব বশী যাগােযাগ না থাকেল হয়েতা আমরা
ই বা আেরা বশী সাির ফাঁকা িদেয় িলখেবা। তাহেল এখন থেক program লখার সময় দরকার
মেতা ফাঁকা িদেয় িদেয় িলখেব যােত তামার program পড়া সহজ হয়।
সবেচেয় উপের যভােব আমরা program িলেখিছ সখােন আেরা একটা ব াপার খয়াল
কেরা, আমরা cout বা return এর statement েলা লখার আেগ তােদর িনজ িনজ সাির-
ত বশ িকছুটা ফাঁকা িদেয় িলেখিছ, একদম সািরর থেক িলিখ নাই। এিট কন করলাম?
এিট করলাম এ কারেণ য ওই েটা সাির আসেল আমােদর blockএর িভতের আেছ। ল কেরা
blockএর curly bracket েটা কমন দেখই বুঝা যায় য এরা জেন জনার আর blockএর
িভতেরর statement েটা কমন একটু িভতেরর িদেক থাকায় পির ার বুঝা যায় য ওরা আস-
লই ওই blockএর িভতের। তা দরকার মেতা কান statement এরকম সািরর একটু িভত-
রর িদেক থেক লখার ব াপারিটেক বলা হয় indentation (ছাড়ন) দয়া। Program লখার
সময় এখন থেক তামরা অব ই দরকার মেতা indentation িদেয় িলখেব, তাহেল দখেব
program পড়া ও বাঝা কত সহজ হেয় যায়।

5g
এই পযােয় িজে স করেত পােরা, েত ক সািরেত এভােব অত লা কের space চাপেবা ক-
মেন এইটা তা িবরি কর। আসেল তামার keyboard (চাপিনমাঁচায়) একটা tab (ল ) key
আেছ, দেখা ওইটা চাপেল একসােথ ৪টা বা ৮টা space (ফাঁকা) এর সমপিরমান ফাঁকা একবাের
আেস। তা দরকার মেতা একবার বা বার tab চাপেলই হেয় গেলা। কােজই program ল-
খার সময় কখেনাই এই আলেসিম টু করেব না। Indentation দয়া program লখার জ
in
পূণ ব াপার, র দখা যাওয়া আর তাড়াতািড় পড়ার জ দরকারী, Programএ কান
ভুল থাকেল আমরা যখন ভুল বর করেত চাই তখনও খুব খুব দরকারী, বড় বড় program যখন
িলখেব তখন ব াপারটা খািনকটা ঠেক ঠেক িশেখ অিভ তা িদেয় ভােলা কের বুঝেত পারেব।
am

১০.৫ Exercise Problems (অ শীলনী সম া)


Conceptual Questions: নীেচ িকছু conceptual রেয়েছ। েলার উ র িনেজ
বর করেব।
al

১. Program ( মেলখ) বলেত কী বুেঝা? Program িক কবল computerএই execu-


table?

২. িসিপিপ languageএ program তরী হেত সটার ফলাফল দখা পয কী কী ঘটনা


ঘেট?

৩. Console (য ালয়) কী? এর input ( যাগান) ও output (ফলন) device েলা কী কী?

৪. িসিপিপেত header file (িশরনিথ) বলেত কী বুেঝা? আমােদর programএ header


file iostream ও cstdlib আমরা কন ব বহার কেরিছ?

৫. Name space (নামাধার) কী? বা ব জীবেন ও programmingএর উদাহরণ সহ ব া-


খ া কেরা।

৬. িসিপিপেত main function হেত returnএর সময় return 0; না িলেখ তার বদেল
return EXIT SUCCESS; িলখা কন উ ম? ব াখ া কেরা।

২৩৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৫. Exercise Problems (অ শীলনী সম া)

৭. Programএ indentation (ছাড়ন) দয়া মােন িঠক কী? Indentation দয়ার পে -


িবপে যুি কী? Program কন বশ ফাঁকা ফাঁকা কের িলখা উিচৎ?
৮. Programএ comment (টীকা) লখা কী? Programএ comment িলখার কেয়কিট
কারণ ব াখ া কেরা? line (সাির) comment ও block (মহ া) comment কী?
৯. একিট িসিপিপ programএ ( মেলখ) নীেচর কান functionিট অব ই থাকেত হেব?

ক) start( ) খ) system() গ) main() ঘ) program()

১০. Program সফল ভােব শষ হেল main function হেত সাধারণত কত return করা
হয়?

ক) −1 খ) 0 গ) 1 ঘ) িকছুই না

১১. িসিপিপেত block (মহ া) বুঝােনার জ নীেচর কান েলা ব বহার করা হয়?

ক) { } খ) < >
5g
গ) ( ) ঘ) begin end

১২. িসিপিপেত একিট statementএর (িববৃিত) শেষ সাধারণত কান িচ ব বহার করা হয়?
in
ক) . খ) ; গ) : ঘ) ,

১৩. িসিপিপেত নীেচর কানিট সিঠক comment (টীকা)?


am

ক) ∗/comment∗/ গ) /∗comment∗/
খ) ∗∗comment∗∗ ঘ) { comment }

Programming Problems: নীেচ আমরা িকছু programmingএর সম া দখেবা। এই


সম া েলা আেগ ধয ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা
al

না বেল মেন হয় তখন কবল সমাধান দেখ িনেত পােরা। সমাধান েলা programmingএর
েলার শেষ আেছ।

১. নীেচর কথা েলা outputএ (ফলন) দখােনার জ িসিপিপেত একিট program িলেখা।
দখেত র লাগার জ তামার programএ দরকার মেতা ফাঁকা ফাঁকা িদেব আর
সহেজ বুঝার জ দরকার মেতা comment (টীকা) িলখেব।
your age i s nine years .
want to l e a r n programming ?
programming i s so easy !

২. িসিপিপেত একিট program রচনা কেরা যিট নীেচর নকশািটর মেতা নকশা তরী কের।
খয়াল কের দেখা নকশািট বাংলা অ 8 এর মেতা। তুিম চাইেল আেরা নানান নকশা,
নানান বণ বা অ িনেজর মেতা কের ভেব িনেয় সইমেতা নকশা তরী করেত পােরা।
যাইেহাক দখেত র লাগার জ তামার programএ দরকার মেতা ফাঁকা ফাঁকা িদেব
আর সহেজ বুঝার জ দরকার মেতা comment (টীকা) িলখেব।

২৩৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৫. Exercise Problems (অ শীলনী সম া)

∗∗ ∗∗ ∗
∗ ∗
∗ ∗ ∗
∗ ∗
∗∗ ∗∗ ∗

Programming Solutions: এবার আমরা programming সম া েলার সমাধান দখ-


বা। মেন রাখেব সমাধান দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন
হয়, তখন যােত একটু সাহায কবল পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. নীেচর কথা েলা outputএ (ফলন) দখােনার জ িসিপিপেত একিট program িলেখা।
দখেত র লাগার জ তামার programএ দরকার মেতা ফাঁকা ফাঁকা িদেব আর
সহেজ বুঝার জ দরকার মেতা comment (টীকা) িলখেব।

5g
your age i s nine years .
want to l e a r n programming ?
programming i s so easy !
in
িফিরি ১০.৫: Inspiring Program (অণুে রণার মেলখ)
#i n c l u d e <iostream> / / cout ব বহার করার জ
#i n c l u d e <c s t d l i b> / / EXIT SUCCESS এর জ
am

using namespace std ; / / standard namespace ব বহার

i n t main ( )
{
/ / দরকারী কথা েলা এoutput দখাও
al

cout << " your age i s nine years . " << endl ;
cout << " want to l e a r n programming ? " << endl ;
cout << " programming i s so easy ! " << endl ;

ret u rn EXIT SUCCESS ; // সফল সমাি


}

২. িসিপিপেত একিট program রচনা কেরা যিট নীেচর নকশার মেতা নকশা তরী কের।
খয়াল কের দেখা নকশািট বাংলা অ 8 এর মেতা। তুিম চাইেল আেরা নানান নকশা,
নানান বণ বা অ িনেজর মেতা কের ভেব িনেয় সইমেতা নকশা তরী করেত পােরা।
যাইেহাক দখেত র লাগার জ তামার programএ দরকার মেতা ফাঁকা ফাঁকা িদেব
আর সহেজ বুঝার জ দরকার মেতা comment (টীকা) িলখেব।
∗∗ ∗∗ ∗
∗ ∗

২৩৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৬. Computing Terminology (গণনা পিরভাষা)

∗ ∗ ∗
∗ ∗
∗∗ ∗∗ ∗

এই programিট িক অেনক মজার তাই না। তুিম িক বণমালার িতটা বণ আর ০-৯ দশ-
টা অে র জে ই এরকম নকশা তরী করেত পারেব? রা াঘােট বা িবেয় বািড়েত অেনক
সময় ছাট ছাট বািত িদেয় নানান িকছু লখা হয়, আসেল এই নকশা েলার মেতা কের নক-
শা বািনেয়ই স েলা করা হয়। Computerএর (গণিন) monitorএর (নজির) পদায়ও
অেনক িকছু এভােব দখােনা হয়। আসেল য কান ছিবই এরকম অসংখ িব র সম েয়
তরী, িকছু িব ালােনা, িকছু িব নভােনা। য িব েলা ালােনা স েলা হেলা ∗
আর য েলা নভােনা স েলা ফাঁকা। তা চেলা আমরা programিট দিখ।

িফিরি ১০.৬: Program to Design (নকশা আঁকার মেলখ)


#i n c l u d e <iostream> / / cout ব বহার করার জ
#i n c l u d e <c s t d l i b> / / EXIT SUCCESS এর জ

i n t main ( )
{
5g
using namespace std ; / / standard namespace ব বহার
in
/ / দরকার মেতা ∗ ও ফাঁকা িদেয় নকশা
cout << " ∗∗ ∗∗ ∗ " << endl ;
cout << " ∗ ∗ " << endl ;
am

cout << " ∗ ∗ ∗ " << endl ;


cout << " ∗ ∗ " << endl ;
cout << " ∗∗ ∗∗ ∗ " << endl ;

ret ur n EXIT SUCCESS ; // সফল সমাি


}
al

১০.৬ Computing Terminology (গণনা পিরভাষা)


• Octothorpe (কাটাকািট) # • Mouse (িটপিন)
• Program ( মেলখ) • Comment (টীকা)
• Computer (গণিন) • Error ( িট)
• Keyboard (চাপিন) • Semicolon (িদিত) ;
• Run (চালােনা) • Monitor (নজির)
• Indentation (ছাড়ন) • Namespace (নামাধার)
• Webpage (জালপাতা) • Instruction (িনেদশ)

২৩৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১০.৬. Computing Terminology (গণনা পিরভাষা)

• Execution (িনবাহ) • Block Comment (মহ া টীকা)

• Executable (িনবাহেযাগ ) • String (মালা)


• Parameter (পরািমিত) • Console (য ালয়)
• Para (পিরে দ)
• Input ( যাগান)
• Preprocessor (পুব- ি য়ক)
• Body (শরীর)
• Integer (পূণক)
• Header File (িশর নিথ)
• Standard ( িমত)
• Compiler (সংকলক)
• Output (ফলন)
• Compile (সংকলন)
• Output Device (ফলন য )
• Compile Time (সংকলন কালীন)
• Message (বাতা)

• Function (িবপাতক)

• Statement (িববৃিত)
5g • Code (সংেকত)

• Number (সংখ া)
in
• Software (ম ) • Editor (স াদনা)

• Block (মহ া) • Line Comment (সাির টীকা)


am
al

২৪০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১১

Variables and Constants)


(চলক ও বক)

5g
Variableএর value (মান) বদলােনা যায়, িক constantএর value বদলােনা যায় না। তেব
Programএ data (উপা ) সরাসির (directly) না িলেখ variable বা constant িহসােব
ব বহার করেল একরকেমর indirection (পেরা তা) তরী হয়। ফেল data িঠক কেতা সটা
না ভেব data কীেসর আর তার processing কমন সটা ভেব program তরী সহজ হয়।
in
১১.১ Using Variables (চলেকর ব বহার)
am

একিট আয়েতর দঘ ৫ িমটার, ৩ িমটার। িসিপিপ ভাষায় এই প আয়েতর ফল ও পিরসী-


মা বর করার program ( মেলখ) রচনা কেরা। এই programএ তামােক variable (চলক)
ব বহার করেত হেব, সরাসির সূ থেক output (ফলন) দয়া যােব না।
আমরা আেগ এই সম ার জ সংি programটা দিখ যটােত variable ব বহার না
কের একদম সরাসির সূ ব বহার কের ফল output (ফলন) দখােনা হেব। আমরা জািন
দঘ আর ে র ণফল হল ফল আর দঘ ও ে র যাগফেলর ি ণ হেলা পিরসীমা।
al

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
cout << " area " << 5 ∗ 3
<< " squared−meter " << endl ;
cout << " perimeter " << 2∗ ( 5+ 3 )
<< " meter " << endl ;

ret ur n EXIT SUCCESS ;


}

২৪১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.১. Using Variables (চলেকর ব বহার)

উপের আমরা য program ( মেলখ) িলখলাম আমরা িক ওইটা চাই না। ওইখােন সং-
খ া েলা সরাসির ে বিসেয় িহসাব কের output (ফলন) দখােনা হেয়েছ। আমরা চাই -
ফল আর পিরসীমার সূ েলা variableএর (চলক) নাম িদেয় িলখেত আর সূ িলখার আেগ
variable েলার মান িদেয় িদেত। Variable ব বহােরর নানান িবধা আেছ। যমন একিট -
িবধা হেলা ে variableএর নাম থাকায় সূ দেখই সহেজ বুঝা যায় কীেসর সূ , যমন নী-
চর program দেখা। আর একিট িবধা হেলা কউ যিদ বেল ৫ না দঘ হেব ৬, উপেরর
programএ িক ইখােন 5 বদলাইয়া 6 করেত হেব। ছাট একটা programএই যিদ ইখােন
বদলােত হয়, তাহেল বড় একিট programএর কথা িচ া কেরা, সটােত আেরা কত জায়গায় য
বদলােত হেব ইয় া নাই। আমরা এ কারেণ variable ব বহার করেবা।
িফিরি ১১.১: Variables in Programs ( মেলখেত চলেকর ব বহার)
#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
using namespace std ;

i n t main ( )
{
5g
i n t length ; / / এই v a r i a b l e এ থাকেব দঘ ।
i n t width ; / / এই v a r i a b l e এ থাকেব
i n t area ; / / এই v a r i a b l e এ থাকেব

ফল।
in
i n t perimeter ; / / এই v a r i a b l e এ থাকেব পিরসীমা।

length = 5 ; / / দেঘ র এই মান বেল দয়া আেছ


am

width = 3 ; / / ে র এই মান বেল দয়া আেছ।

// ফল বর করার সূ হল দঘ আর ে র ণফল।
area = length ∗ width ;

/ / পিরসীমা বর করার সূ হল দঘ ও ে র যাগফেলর ি ন


al

perimeter = 2∗ ( length + width ) ;

/ / এবার ফল আর পিরসীমা output দয়া হেব


cout<< " area " << area
<< " squared−meter " << endl ;
cout << " perimeter " << perimeter
<< " meter " << endl ;

ret ur n EXIT SUCCESS ;


}

ফলন (output)
area 15 squared−meter
periment 16 meter

২৪২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.১. Using Variables (চলেকর ব বহার)

উপেরর programএ খয়াল কেরা আমরা দঘ , , ফল, আর পিরসীমার জ চার-


টা variable (চলক) িনেয়িছ যােদর নাম হেলা length, width, area, perimeter। তুিম
িক চাইেল এই নাম েলা বাংলায়ও িদেত পারেত যমন doirgho, prostho, khetrofol,
porishima। তুিম চাইেল আবার শ েলার থম অ র িনেয় এক অ েরর নামও িদেত পারেত
যমন l , w, a, p। তেব আমরা সবসময় চাই এমন নাম িদেত যােত নাম েলা দখেলই বুঝা
যায় ওই variableটা কী কােজ ব বহার হেব। এক অ েরর নাম িদেল অেনক সময় বুঝা যায়
িক একই অ র িদেয় যিদ একািধক variableএর নাম হয়, তাহেল মুশিকল হেয় যায়।
অেনেক আবার খািল x, y, z, অথবা a, b, c এই রকম নাম দয়। ওই রকম নাম িদেল পের
program বুঝেত তামার িনেজর বা অ কউ য পড়েব তার খুবই সম া হেব। সময় ন কের
বর করেত হেব কান variable আসেল কী কােজ ব বহার করা হেয়েছ। কােজই সবসময় অথ-
বাধক আর যেথ বড় নাম িদেত চ া করেব, যােত নাম দেখই তার উে বুঝা যায়। িসিপিপেত
variableএর অথেবাধক (semantic) ও গঠনিস (syntax) নাম দয়ার িবষেয় আমরা পেরর
কান পােঠ িব ািরত আেলাচনা করব।
এখন একটা িবষয় খয়াল কেরা আমরা এখােন variable েলার নােমর আেগ িলেখিছ int
যটা আসেল integer এর সংি । integer হল পূণক বা পূণ সংখ া। আমরা variableএর না-

5g
মর আেগ এই রকম int িলেখ বুিঝেয়িছ য আমােদর এই variable েলার মান হেব integer,
আমরা কান ভ াংশ ব বহার করেবা না। তুিম যিদ ভ াংশ ব বহার করেত চাও তাহেল তা-
মােক int এর বদেল float িলখেত হেব। float হল একরকেমর ভ াংশ। আমরা ভ ক বা
float িনেয় আেলাচনা পের আেরা িব ািরত করেবা। তেব int এর বদেল float িলখেল আমােদর
in
programএ িক আর কাথাও কান িকছু বদলােত হেব না, িঠক কাজ করেব। আমরা আপাতত
int রেখই এই পােঠর আেলাচনা চালাই।
তা উপেরর programএ আমরা যখন িলখলাম int length; এর মােন হেলা length না-
am

মর আমােদর একটা variable আেছ আর তার মান হেব integer। এইেয int length; িলেখ
এই িবষয় েলা বুঝাইলাম এটােক বলা হয় variable declaration (চলক ঘাষনা)। Variable
declare করেল তারপর থেকই variableিট পরবতী যেকান statementএ (িববৃিত) ব বহার
করা যায়, িক declare করার সােথ সােথ ওইখােন variableএর মান কত সইটা িক আম-
রা জািননা, সাধারনত variableএ তখন একটা উ াপা া মান থােক। এইটা িনেয় আমরা পের
আেরা আেলাচনা করেবা। এই programএ আমরা দখিছ এর পের length = 5; িলেখ অথাৎ
al

= িচ ব বহার কের আমরা length variableএর value assign (মান আেরাপ) কেরিছ 5।
তরাং এরপর থেক length variableএর মান হেব 5। একই ভােব width variableএর
মানও আমরা 3 assign কেরিছ।
এবার খয়াল কেরা, variableএর মান assignment শষ হেল আমরা ফল আর পির-
সীমার সূ েলা িলেখিছ, সখােন িক এবার মান েলা সরাসির িলিখ নাই, তার বদেল variable-
েলা ব বহার কেরিছ। এইখােন িহসাব করার সময় variableএর য মান থাকেব সইটাই আসেল
ব বহার হেব। উপের যিদ length variableএর মান থােক 5 তাহেল 5 ধের িহসাব হেব, আর
যিদ পের length এর মান 5 এর বদেল 6 কের দয়া হয়, তাহেল 6 ব বহার হেব। এই পিরবতন
কবল মান assignmentএর ওইখােন করেলই কাজ হেয় যােব, সারা programএ করেত হেব
না। তেব একটা পূণ িবষয় বিল এখােন length আর width variable িটেত value
assignment িক ফল আর পিরসীমার ে র ব বহােরর আেগই করেত হেব। না করেল
compile করার সময় warning message (সতক বাতা) আসেত পাের, আর program চা-
লােনার সময় উে াপা া ফলও আসেত পাের।
সবেশেষ খয়াল কেরা output (ফলন) দওয়া হেয়েছ যখােন সখােন উ ৃিত িচ "" এর
িভতের যা আেছ তা িক string (মালা)। কােজই ওইটা িক ওইভােবই outputএ এেসেছ এম-

২৪৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.২. Using Constants ( বেকর ব বহার)

নিক area কথাটাও ব এেসেছ যটা িকনা variableএর নােমর ব একই রকম। িক ""
উ ৃিতর বাইের যখন area লখা হেয়েছ একই সািরেত পেরর িদেক সখােন িক আর area
outputএ আেস িন, এেসেছ সটােক variable ধরেল য মান হওয়ার কথা সই 15। কােজই
এটা মেন রাখেব য variableএর নাম "" উ ৃিতর িভতের string আকাের থাকেল ওইটা আসেল
variableটােক বুঝায় না। নামটা যখন উ ৃিতর বাইের থােক তখন ওইটা একটা নাম হয়, এই-
ে একটা variableএর নাম হয় আর ওইটার মান িনেয় কাজ হয়। একই অব া perimeter
এর ে ও। উ ৃিত িচে র িভতের থাকা perimeter কথািট ব ফলেন এেসেছ িক উ ৃিতর
বাইের থাকা perimeter কথািটর বদেল ওিটেক variable (চলক) ধরেল য মান পাওয়া যােব
তা outputএ (ফলন) এেসেছ।

১১.২ Using Constants ( বেকর ব বহার)


একিট বৃে র radius (ব াসাধ) দয়া আেছ ৫ সিম, বৃ িটর area ( ফল) িনণেয়র জ িস-

একিট integer (পূণক) ব বহার করেব। আর


5g
িপিপেত একিট program ( মেলখ) রচনা কেরা। তামার programএ তুিম ব াসােধর জ
ফেলর জ

সংখ া) বা float ব বহার করেব। তুিম তা জােনা বৃে র


থেম integer ব বহার কের
দখেব কী হয়, তারপর fractioner (ভ ক) অথাৎ floating-point number (সচলিব
ফল িহসাব করার জ আমােদর
পাইেয়র মান লাগেব। আমরা ওইটা সরাসির সংখ ায় না িদেয় একটা constant ( বক) িহসা-
in
ব ব বহার করেবা, কারণ পাইেয়র মান তা কখেনা বদলােব না, সব সময় constant থাকেব।
পাইেয়র মান যেহতু fractioner আমােদর constantিট তাই হেব float constant। চেলা
আমরা এবার তাহেল programিট দিখ।
am

িফিরি ১১.২: মেলখেত বেকর ব বহার (Constants in Programs)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;


al

i n t main ( )
{
i n t r a d i u s = 5 ; / / এিট বৃে র ব াসােধর জ variable
f l o a t const p i = 3 . 1415 ; / / পাইেয়র মান constant

/ / নীেচ আমরা বৃে র ফেলর সূ িলখিছ


i n t area = p i ∗ r a d i u s ∗ r a d i u s ;

/ / এবার আমরা এscreen output দখােবা।


cout << " area of c i r c l e " << area
<< " squared−cm" << endl ;

ret ur n EXIT SUCCESS ;


}

২৪৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.২. Using Constants ( বেকর ব বহার)

ফলন (output)
area of c i r c l e 78 squared−cm

তা হেয় গল আমােদর বৃে র ফল িনণেয়র program। এই রকম variable (চলক)


আর constant ( বক) ব বহার না কেরই তুিম িক program িলখেত পারেত, তাই না! আমরা
িক সটা আেগর পােঠ এটা আেলাচনা কেরিছ। সে ে main() functionএর {} bracket
েটার মেধ return EXIT SUCCESS; এর আেগ মা এক সািরেত cout << "area of
the circle " << 3.1415 ∗ 5 ∗ 5 << " squared−cm" << endl; এইটু িলখেলই
আমােদর কাজ হেয় যেতা। িক আমরা সটা না কের কন variable ব বহার করিছ সটাও ওই
একই পােঠ আেলাচনা কেরিছ।
এবার আিস আমরা এত ণ য programিট িলখলাম সটার িব ািরত আেলাচনায়। আমরা
#include, using namespace, int main(), return ইত ািদ স েক ইত মেধ জেনিছ
আেগর পাঠ েলা থেক, কােজই আমােদর আেলাচনা সীমাব থাকেব main() functionএ আর
যা যা িলেখিছ সই িবষয় েলােত। তা চেলা আমরা এবার সািরর পের সাির ধের আেলাচনা কির।
উপের যমন বলা হেয়েছ, সই অ যায়ী আমরা থেম ব াসােধর জ একটা variable িন-

5g
য়িছ radius নােম যিট হেব int ধরেনর অথাৎ পূণক বা integer। বৃে র ব াসাধ যিদ তা-
মার fractioner হয়, তুিম চাইেল int ব বহার না কের float ব বহার করেত পােরা। আেগর
পােঠর সােথ এই পােঠ একটা িবষয় খয়াল কেরা, আমরা িক ব াসাধ radius variable মান
আলাদা সািরেত না িদেয় যখােন variable declare (চলক ঘাষনা) কেরিছ সখােনই = িচ
in
িদেয় value assign কেরিছ অথাৎ radius এর মান সরাসির 5 হেয় গেছ। এটােক বলা হয়
variableএর initial value assignment (আিদ মান আেরাপণ)। এটা করার েটা িবধা:
একটা হেলা আমােদর ইটা আলাদা সািরেত ইবার িলখেত হেলা না, আেরকটা হেলা েত
variableএ উ াপা া মান থাকার কারেণ programএ ভুল িহসাব করার স াবনা কেম গল।
am

জেন রােখা variable declareএর সােথ সােথ কান মান না িদেয় না িদেলও ওখােন উ া পা-
া একটা মান থােক, কী মান থাকেব আমরা িক কান ভােবই আেগ থেক সটা জািননা, পুরাই
উ াপা া একটা মান হেত পাের সটা। আর ভুল েম ওই variableএ যিদ পের আর value
assign (আেরাপ) করা না হয়, অথবা যিদ assign করার আেগই অ কান িহসােব variable-
িট ব বহার করা হয়, তাহেল স ত কারেণই উ াপা া মানিট কােজ লািগেয় একটা উ াপা া
al

ফলাফল আসেব, যটা আমরা কখেনাই চাই না।


ব াসােধর জ একটা variable (চলক) নয়ার পের আমরা পাইেয়র মান রাখার জ একিট
float const ধরেনর constant ( বক) নেবা যার নাম pai। পাইেয়র মান যেহতু ভ সংখ া
আমােদর তাই float িনেত হেব, আর পাইেয়র মান যেহতু সব সময় constant তাই আমরা
float এর পের const িলেখ িদেত চাই। তুিম যিদ const না িলেখা তাহেল িক এটা একটা
variableএর মেতা কাজ করেব।
i n t myvar = 15 ; / / v a r i a b l e d e c l a r e কের মান িদলাম 15
i n t const myconst = 20 ; / / constant d e c l a r e মান 20

/ / এখন পয myvar এর মান 15 , নীেচ নতুন মান দেবা 23


/ / আবার value a s s i g n না করা পয এরmyvar মান থাকেব 23

v a r i a b l e = 23 ; / / এটা করা যােব

/ / এখন পয myconst এর মান 20 , নীেচ নতুন মান দেবা 25

২৪৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৩. Variable Declarations (চলক ঘাষনা)

/ / িক program compile করেল আমরা e r r o r message পােবা।


/ / cpp . sh িদেয় compile করেল e r r o r িটmessage িন প হেব
/ / e r r o r : assignment of read−only v a r i a b l e ' myconst '

myconst = 25 ; / / এটা করা যােব না , e r r o r message আসেব

উপেরর program খয়াল কেরা। Variable (চলক) আর constantএর ( বক) মেধ


তফাৎ হেলা variableএর মান declare করার সময় একবার assign করা যায়, আর তার-
পেরও যতবার ই া ততবার নতুন নতুন মান assign (আেরাপ) করা যায়। িক constantএ
( বক) একটা মান কবল declare করার সময় বেল দওয়া যায়, programএ পের আর কা-
থাও ওই constantএর মান বদেল নতুন মান assign (আেরাপ) করা যায় না। যিদ কেরা তাহেল
compiler (সংকলক) error message ( িট বাতা) দখােব। তা আমরা যেহতু জািন য পা-
ইেয়র মান সবসময় constant, এটার মান আমােদর কখেনা বদল হেব না, আমরা তাই এটােক
variable িহসােব declare না কের constant িহসােব declare করেবা।
আশা করা যায় variable আর constantএর পাথক পির ার হেয়েছ। এবার দেখা আমা-
দর বৃে র

5g
ফেলর programএ আমরা ফেলর জ area নােম একটা variable িনেয়-
িছ, যার type হল int বা পূণক. যিদও আমরা জািন পাইেয়র মান fractioner হওয়ার কারেণ
আমােদর ফলাফল আসেল একিট fractioner হেব। এইটা আমরা মুলত পরী ামুলক করিছ।
তা int নয়ার কারেণ আমরা আমােদর programএর output দখেত পােবা 78 আসেল হও-
in
য়ার কথা 78.5375। এইটা কন হেলা কারণ হেলা থেম 78.5375 িঠক মেতা িভতের িভতের
িহসাব হেয় যােব, িক যখন area variableএর মেধ মানটা assign (আেরাপ) হেব তখন য-
হতু integer বেল fractionটু ঢুকােনা যােব না, তাই ওইটা বাদ পের যােব (truncation)।
আর মান যটা assign হেব সটা হেলা বাঁকী পূণাংশটু বা 78। তা ভ াংশ সহ সিঠক ফল
am

পাওয়ার জ area এর সামেন int না িলেখ float িলেখ দাও তাহেল দখেব িঠক িঠক 78.5375
ই output িহসােব চেল আসেব।
উপেরর আেলাচনায় আমরা িতনটা ব াপার িশখলাম: ১) আমরা variable (চলক) ব বহার
করেবা, না constant ( বক) ব বহার করেবা সটা; তারপর ২) declare করার সােথ সােথ
একটা initial value িদেয় দয়া যােক বলা হয় initial assignment (আিদ মান আেরাপণ),
al

আর ৩) কান variable বা constantএর type কমন হেব, int না float হেব, পূণক না ভ ক
হেব সটা আেগ থেক ধারনা করেত পারেত হেব, আর সই অ যায়ী variable বা constantএর
কার বেল িদেত হেব, না হেল সিঠক ফলাফল নাও পাওয়া যেত পাের, যমন ভ ক 78.5375
এর বদেল পূণক 78 পাওয়া যেত পাের।

১১.৩ Variable Declarations (চলক ঘাষনা)

এই পােঠ িসিপিপেত একািধক variable আমরা কী ভােব সহেজ declare করেত পাির তা
আেলাচনা করেবা। আমরা আেগ দেখিছ িতিট variable আলাদা আলাদা কের, এমনিক িতিট
আলাদা আলাদা সািরেত ঘাষনা করেত। িবধার জ আমরা চাইেল একািধক variable এক সা-
িরেতই একটা statementএই declare করেত পাির, যিদ তােদর সকেলর data type (উপা
করণ) একই হয়, যমন ওই variable েলার সবই যিদ int ধরেনর হয় অথবা float ধরেনর
হয়। উদাহরণ িদেয় ব াপার েলা পির ার করা যাক। ধেরা length, width, perimeter নােম
আমরা িতনিট variable (চলক) িনলাম, িতনটা variableএর typeই int অথাৎ পূণক।

২৪৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৪. Initial Assignment (আিদমান আেরাপণ)

i n t length ; / / দেঘ র জ চলক যা i n t ধরেনর অথাৎ পূণক


i n t width ; / / ে র জ চলক যা i n t ধরেনর অথাৎ পূণক
i n t perimeter ; / / পিরসীমার জ চলক যা i n t ধরেনর অথাৎ পূণক

উপেরর িতনিট variableই যেহতু int ধরেনর, কােজই আমরা ওই িতনিট variableেক
চাইেল একিট statementএই ঘাষনা করেত পাির। সে ে আমােদর int একবার িলখেত
হেব, আর variable েলার নাম একটার পর একটা comman , (িবিত) িদেয় িলখেত হেব।
i n t length , width , perimeter ; / / সব েলাই i n t ধরেনর

এবার আর একিট উদাহরণ দিখ, যখােন বৃে র ব াসাধ আর ফল বর করেত হেব। তা


ব াসাধ যিদ int ধরেনর বা পূণক হয় আর ফল তা float ধরেনর বা ভ ক হেবই। কােজই
আমরা এ েটােক একটা statement (িববৃিত) িদেয় declare করেত পারেবা না।
int radius ; / / ব াসােধর জ v a r i a b l e i n t ধরেনর
f l o a t area ; / / ফেলর জ v a r i a b l e f l o a t ধরেনর

5g
িক যিদ perimeter এর মেতা radius টাও float বা ভ ক ধরেনর হেতা তাহেল আমরা
এক statement িদেয়ই েটােক এক সােথ declare করেত পারতাম।
f l o a t r a d i u s , area ; / / ব াসাধ ও ফেলর চলক
in
তাহেল একটা programএই ( মেলখ) যিদ আমরা আয়েতর পিরসীমা আর বৃে র ফল
বর করেত চাই, আমরা দরকারী সব েলা variable নীেচর মেতা কের ঘাষনা করেত পাির,
যখােন int variable েলা একটা statementএ (িববৃিত) থাকেব আর float variable েলা
am

আলাদা আেরকটা statementএ থাকেব। মেন রেখা আমরা িক এই পাঁচিট variableএর


(চলক) েত কেক আলাদা আলাদা statementএ িলখেতই পারতাম। এখােন আমরা বরং সটা
না করা িনেয়ই আেলাচনা করিছ, উে া একসােথ করা িনেয় আেলাচনা করিছ।
i n t length , width , perimeter ; / / দঘ , , পিরসীমা
f l o a t r a d i u s , area ; / / ব াসাধ ও ফল
al

১১.৪ Initial Assignment (আিদমান আেরাপণ)


আেগর পােঠ আমরা একািধক variable (চলক) declare ( ঘাষনা) িনেয় আেলাচনা কেরিছ।
এখন আমরা এেদর initial value (আিদ মান) assign (আেরাপ) করার িদেক নজর দই।
Intial value হল থমবােরর মেতা য মান িদেয় দওয়া হয় সই মানিট। ঘাষনা দয়ার পের
variableএ আলাদা কের আিদ মান assign করেত চাইেল আমরা নীেচর মেতা কের করেবা।
length = 6 ;
width = 3 ;
radius = 5 ;

অথবা চাইেল এক statementএ এক সােথও করা স ব, comma , (িবিত) িদেয়।


length = 6 , width = 3 , r a d i u s = 5 ;

২৪৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৪. Initial Assignment (আিদমান আেরাপণ)

আমরা িক চাইেল আিদমান েলা নীেচর মেতা ঘাষনার সােথ সােথই িদেত পারতাম।
i n t length = 6 , width = 3 , perimeter ;
f l o a t r a d i u s = 5 , area ;

ঘাষনার সােথ সােথ variableএর initial value (আিদমান) assign (আেরাপ) করেল
programএর ( মেলখ) দ তা অ একটু বাড়েত পাের। কারণ ঘাষনার সােথ সােথ আিদমান
না িদেলও একটা উ াপা া মান তা িভতের িভতের দয়াই হয়, পের যখন আমরা আবার মান
দই, তখন আেরকবার দওয়া হেলা, মােন থমবােরই দওয়া হেলা না। আর ঘাষনার সােথ সােথ
আিদমান িদেল, একদম থমবােরই মানিট variableএ দওয়া হেয় গেলা। Constantএর
ে িক আিদ ও একমা মান (initial and only value) ঘাষনার সােথ সােথই িদেত হেব,
পের দয়ার কান েযাগ নাই, compiler (সংকলক) error message ( িট বাতা) দখােব।
কান variable declare করার সােথ সােথ তােত কান initial value না িদেলও য
উ াপা া মান থােক সটা কত তা যিদ জানেতা চাও তেব পরী া কের দখেত পােরা। ধেরা
তামার variable length। এখন ঘাষনার পেরই cout << "length is " << length <
< endl; িলেখ program compile (সংকলন) কের run কের দখেত পােরা। িক িতবার

5g
চালােল য একই মান আসেব তার কান িন য়তা নাই, যিদ আেস সটা নহােয়ত কাকতাল।
আমরা আেগই জািন বৃে র ফল িনণেয়র জ আমােদর পাইেয়র মান দরকার হেব, য-
িট একিট constant ( বক) আর পাইেয়র মান আসেলই ভ ক বা float। িক float হওয়া
সে ও আমরা িক পাইেয়র জ pai নামক variableিটেক radius আর area এর সােথ একই
in
statementএ ঘাষনা করেত পারেবা না। কারণ radius ও area হল variable (চলক) যা-
দর মান পের যতবার ই া বদলােনা যােব আর pai হল constant ( বক) যার মান একবার
দওয়ার পের আর বদলােনা যােব না। পাইেয়র মান তাই আলাদা কের ঘাষনা করেত হেব।
am

i n t length = 6 , width = 3 , perimeter ;


f l o a t r a d i u s = 5 , area ;
f l o a t const p a i = 3 . 1415 ; / / পাইেয়র মােনর জ বক

আমােদর যিদ একািধক float constant থােক স েলােক আবার এক statementএই


ঘাষনা করেত পারেবা, যমন পাই আর িজ এর মান ঘাষনা করিছ নীেচ। তামরা জােনা g হল
al

মাধ াকষেনর রেণর মান, যা িনিদ ােন মাটামুিট একটা বক।


f l o a t const p a i = 3 . 1415 , g = 9 . 81 ;

পিরসীমা আর ফেলর জ আমােদর সূ িলখেত হেব, স েলােক comma , (িবিত)


িদেয়ই এক statementএ লখা স ব, যমন নীেচ িলখলাম।
i n t length = 6 , width = 3
i n t perimeter = length ∗ width ;
float radius = 5 ;
f l o a t area = p a i ∗ r a d i u s ∗ r a d i u s ;
f l o a t const p a i = 3 . 1415 ;

উপের যা িলখলাম তােত িক একটা error ( িট) আেছ, compile (সংকলন) করেত গ-
লই error ধরা পড়েব। Errorিট হল আমরা pai declare কেরিছ প ম statementএ, িক-
pai ব বহার কেরিছ চতুথ statementএ area এর সূ িলখেত িগেয়ই। কান variable
declare করার আেগ সটা ব বহার করা যােব না, compiler যখন run কের তখন স এেক

২৪৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৫. Exercise Problems (অ শীলনী সম া)

এেক statement েলা উপর থেক নীেচ আর বােম থেক ডােন পড়েত থােক। তা compiler
কান variable বা constant declare করার আেগই যিদ তােদর ব বহারটা পেড় ফেল য-
মন pai, তাহেল স বুঝেত পারেব না pai টা কী িজিনস, এইটা িক variable নািক constant,
এটা িক int ধরেনর নািক float ধরেনর। আমােদর তাই declare অব ই আেগ করেত হেব,
ব বহার করেত হেব পের। তা চেলা নীেচ আমরা পাইেয়র declaration আেগ কির।
i n t length = 6 , width = 3 ;
i n t perimeter = length ∗ width ;
f l o a t const p a i = 3 . 1415 ; / / ঘাষনা আেগ করা হেলা
float radius = 5 ;
f l o a t area = p a i ∗ r a d i u s ∗ r a d i u s ;

ল কেরা length, width, radiusএর জ িক উপেরর ওই error ঘেট িন, কারন ে


ব বহােরর আেগই তা ও েলা declare হেয়েছ, যিদও একই সািরেত িক বােমর িবষয় েলা
যেহতু ডােনর েলার থেক আেগ, তাই ঘাষনা আেগই হেয়েছ। আমরা অব উপেরর মেতা কের
সূ ও একই statementএ না িদেত বলেবা। তােত পড়ারও িবধা হয়, আবার আেগ িলখেবা না

5g
পের িলখেবা সই সম াও র হয়। তাহেল পুেরা ব াপারিট দাঁড়াে নীেচর মেতা:
i n t length = 6 , width = 3 , perimeter ;
f l o a t const p a i = 3 . 1415 ;
f l o a t r a d i u s = 5 , area ;
in
perimeter = length ∗ width ;
area = p a i ∗ r a d i u s ∗ r a d i u s ;
am

১১.৫ Exercise Problems (অ শীলনী সম া)


Conceptual Questions: নীেচ িকছু conceptual রেয়েছ। েলার উ র িনেজ
িনেজ বর করেব।
al

১. Programএ ( মেলখ) variable ও constant কন ব বহার করা হয়?

২. Programএ ( মেলখ) variable declaration বলেত কী বুঝ? উদাহরণ দখাও।

৩. Variableএ (চলক) value assign (মান আেরাপণ) বলেত কী বুঝ? ব াখ া কেরা।

৪. কখন তুিম variable (চলক) ব বহার না কের constant ( বক) ব বহার করেব?

৫. িসিপিপেত কী ভােব variable ও constant declare করেত হয়। উদাহরণ দখাও।

৬. িসিপিপেত কী ভােব int ও float ধরেনর variable declare করেত হয়?

৭. িসিপিপেত এক সািরেত কখন একািধক variable declare করা যায়? উদাহরণ দখাও।

৮. Variableএ (চলক) initial value assignment (আিদমান আেরাপণ) কী?

৯. Variableএ (চলক) initial value assign না করেল স াব কী ফলাফল ঘটেত পাের?

২৪৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৫. Exercise Problems (অ শীলনী সম া)

১০. Constantএ কন initial value assign করেত হয়, িক পের assign করা যায় না?

১১. ফলাফল float (ভ ক) িক int (পূণক) ধরেনর variableএ assign করেল কী ঘেট?

Programming Problems: নীেচ আমরা িকছু programming problem দখেবা। এই


problem েলা আেগ ধয ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পা-
রেছা না বেল মেন হয় তখনই কবল সমাধান দেখ িনেত পােরা। সমাধান েলা programming
problem েলার শেষ আেছ।

১. এমন একিট program রচনা কেরা যিট িট int ধরেনর, আর একিট float ধরেনর
variable declare কের। Programিট তারপর variable িতনিটর মান যথা েম 10,
15, 12.6 assign কের। পিরেশেষ programিট variable েলার মান পদায় দখায়।

২. ধেরা েটা পূণ সংখ া 89 আর 56। এই িটেক তুিম েটা variableএ িনেব, আর তা-
রপর ইিট variableএ তােদর যাগফল, িবেয়াগফল িনণয় করেব। সবেশেষ সব েলা

5g
varaibleএর মান outputএ দখােব। সব িমিলেয় এমন একিট program িলেখা।

৩. যিদ তাপমা া সলিসয়ােস c িড ী হয় আর ফােরনহাইেট হয় f িড ী, তাহেল আমরা িলখ-


ত পাির f = 9c/5 + 32। ধেরা তাপমা া সলিসয়ােস দয়া আেছ, তাহেল ফােরনহাইেট
এিট কত হেব? তামার programএ তুিম float ধরেনর variable ব বহার করেব।
in
৪. যিদ তাপমা া ফােরনহাইেট হয় f িড ী আর সলিসয়ােস হয় c িড ী, তাহেল লখা যায়
c = 5(f − 32)/9। ধেরা তাপমা া ফােরনহাইেট দয়া আেছ, তাহেল সলিসয়ােস এিট
কত হেব? তামার programএ তুিম float ধরেনর variable ব বহার করেব।
am

৫. ধেরা একটা কাজ করেত তামার 7 ঘ টা 15 িমিনট 39 সেক ড লেগেছ। এই সময়েক


সেকে ড পা র কেরা। তামার programএ তুিম 60 সেকে ড এক িমিনট আর 60
িমিনেট এক ঘ টা এই িট িবষয় বুঝােনার জ েটা constant ব বহার করেব।

Programming Solutions: এবার আমরা programming problem েলার সমাধান


al

দখেবা। মেন রাখেব সমাধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা
বেল মেন হয়, তখন কবল একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান
দখেব না, িনেজ িনেজ সমাধােনর সবটা চ া আেগ কের দখেব।

১. এমন একিট program রচনা কেরা যিট িট int ধরেনর, আর একিট float ধরেনর
variable declare কের। Programিট তারপর variable িতনিটর মান যথা েম 10,
15, 12.6 assign কের। পিরেশেষ programিট variable েলার মান পদায় দখায়।

িফিরি ১১.৩: Program Declaring Variables (চলক ঘাষনার মেলখ)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )

২৫০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৫. Exercise Problems (অ শীলনী সম া)

{
i n t i n t v a r 1 , i n t v a r 2 ; / / পূণক িট এক সােথ ঘাষনা
float floatvar ; / / ভ কিট আলাদা ঘাষনা

i n t v a r 1 = 10 , i n t v a r 2 = 15 ; / / মান আেরাপণ
f l o a t v a r = 12 . 6 ; / / মান আেরাপণ

cout << " i n t e g e r s are " ; / / endl দই নাই


cout << i n t v a r 1 << " " << i n t v a r 2 << endl ;
cout << " f l o a t i s " << f l o a t v a r << endl ;

ret ur n EXIT SUCCESS ; // সফল সমাি


}

purnok d u t i 10 15
vognok holo 12 . 6 5g
ফলন (output)
in
২. ধেরা েটা পূণ সংখ া 89 আর 56। এই িটেক তুিম েটা variableএ িনেব, আর তা-
রপর ইিট variableএ তােদর যাগফল, িবেয়াগফল িনণয় করেব। সবেশেষ সব েলা
varaibleএর মান outputএ দখােব। সব িমিলেয় এমন একিট program িলেখা।
am

আমরা এই programএ কবল দরকারী অংশটু দখাি । ধের িনি য তুিম দরকা-
রী header file (িশর নিথ) include (অ ভু ) করা, namespace (নামাধার) std
ব বহার, main funciton (িবপাতক) লখা ও মান return করা ইত মেধ ভােলা কের
িশেখ ফেলেছা। তা তুিম যিদ সিত নীেচর লখা program compile কের run কর-
ত চাও, তামােক িক আেগ include, namespace, main, return ওই েলা িলেখ
িনেত হেব, তারপর main functionএর িভতের return এর আেগ তুিম আমােদর নীেচর
al

অংশ েলা িলেখ িনেব। তারপর compile কের program চালােব।

িফিরি ১১.৪: Arithmetic Program (পািটগিণেতর অণুি য়ার মেলখ)


i n t f i r s t = 89 , second = 56 ;

i n t sum = f i r s t + second ;
i n t d i f f = f i r s t − second ;

cout << " f i r s t i s " << f i r s t ;


cout << " second i s " << second ;
cout << endl ;

cout << "sum i s " << sum ;


cout << " d i f f i s " << d i f f ;
cout << endl ;

২৫১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১১.৬. Computing Terminologies (গণনা পিরভাষা)

৩. যিদ তাপমা া সলিসয়ােস c িড ী হয় আর ফােরনহাইেট হয় f িড ী, তাহেল আমরা িলখ-


ত পাির f = 9c/5 + 32। ধেরা তাপমা া সলিসয়ােস দয়া আেছ, তাহেল ফােরনহাইেট
এিট কত হেব? তামার programএ তুিম float ধরেনর variable ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম programএর কাঠােমা দাঁড় করেত পারেব।

িফিরি ১১.৫: Celcius to Fahrenheit ( সলিসয়াস থেক ফােরনহাইেট পা র)


f l o a t c = 30 , f = 9 ∗ c / 5 + 32 ;

৪. যিদ তাপমা া ফােরনহাইেট হয় f িড ী আর সলিসয়ােস হয় c িড ী, তাহেল লখা যায়


c = 5(f − 32)/9। ধেরা তাপমা া ফােরনহাইেট দয়া আেছ, তাহেল সলিসয়ােস এিট
কত হেব? তামার programএ তুিম float ধরেনর variable ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম programএর কাঠােমা দাঁড় করেত পারেব।

িফিরি ১১.৬: Fahrenheit to Celcius (ফােরনহাইট থেক সলিসয়ােস পা র)

5g
f l o a t f = 76 , c = 5∗ ( f − 32) / 9 ;

৫. ধেরা একটা কাজ করেত তামার 7 ঘ টা 15 িমিনট 39 সেক ড লেগেছ। এই সময়েক


সেকে ড পা র কেরা। তামার programএ তুিম 60 সেকে ড এক িমিনট আর 60
in
িমিনেট এক ঘ টা এই িট িবষয় বুঝােনার জ েটা constant ব বহার করেব।
ধের িনি থম সম ার সমাধান দেখ তুিম programএর কাঠােমা দাঁড় করেত পারেব।
am

িফিরি ১১.৭: Convert Time to Seconds (সময়েক সেকে ড পা র)


i n t hour = 7 , minute = 15 , second = 39 ;
i n t const hourMinute = 60 , minuteSecond = 60 ;

i n t totalMin = hour ∗ hourMinute + minute ;


i n t t o t a l S e c = totalMin ∗ minuteSecond + second ;
al

১১.৬ Computing Terminologies (গণনা পিরভাষা)


• Initial Value (আিদ মান) • Fraction (ভ ক)

• Assign (আেরাপণ) • Value (মান)

• Declaration ( ঘাষনা) • Value Assign (মান আেরাপণ)

• Variable (চলক) • Floating-Point (সচলিব )

• Constant ( বক) • Var Declaration (চলক ঘাষণা)

২৫২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১২

Naming Identifiers
(শনা েকর নামকরণ)

5g
নােম কী আেস যায় কেম পিরচয়। আপনার কাজই িনধারণ কের দেব আপনার পিরচয়। আপনার
নাম পিরচয় হেব আপনার কােজর কারেণই। Program ( মেলখ) িলখেত িগেয় আমরা তাই
variable (চলক), constant ( বক), function (িবপাতক) সহ য কান িকছুর নাম দই
তােদর কী কােজ লাগােনা হেব সটা মাথায় রেখ।
in
১২.১ Well-formed Names ( গিঠত নাম)
am

িসিপিপেত variable ও constantএর ব বহার তুিম ইত মেধ িশেখ ফেলেছা। আর সােথ সা-
থ variableএর নাম কী রকম িদেত হেব সটাও আেগ একটু জেনেছা। এখন আমরা িব ািরত
ভােব িশখব িসিপিপেত কী ভােব variable বা constantএর নাম িদেত হয়, িবেশষ কের না-
মর syntax (গঠনরীিত) কমন অথাৎ নােম কী রকম অ র থাকেত পারেব অথবা পারেব না।
al

আমরা আপাতত কবল main function (িবপাতক) িনেয় কাজ করিছ। িক ভিব েত আমরা
যখন িনেজেদর জ নানান function তরী করেবা, তখন functionএর নামকরেণর জে ও
constant বা variableএর নাম তরীর িনয়ম েলাই কােজ লাগেব। Variable বা constant
বা function যাইেহাক নাম ক বলা হয় identifier (শনা ক)।
িসিপিপেত কান identifierএর (শনা েকর) নােম কবল ১) ইংেরজী বণমালার বড় হা-
তর অ র A-Z, ২) ইংেরজী বণমালার ছাট হােতর অ র a-z, ৩) ইংেরজী অংক 0-9 আর ৪)
underscore (িন দাগ) থাকেত পারেব। তেব identifierএর নােমর থম অ র আবার
অংক 0-9 হেত পারেব না, থম অ র ছাড়া অ য কান অ র িহসােব অংক েলা ব বহার করা
যােব। তরাং বাঝাই যাে থম অ র য কান বণ A-Z বা a-z অথবা underscore (িন -
দাগ) হেত পারেব। আর তারপেরর য কান অ র বণ বা অংক বা underscore হেত পারেব।
িসিপিপেত identifierএর নােমর length ( দঘ ) িনেয় কান িবিধিনেষধ নই তেব program
( মেলখ) compileএ (সংকলন) কী compiler (সংকলক) ব বহার করা হে তার ওপর এটা
িনভর করেত পাের। cpp.sh িদেয় compile করেল কান িবিধ িনেষধ নই, মাইে াসফট c++
িদেয় compile করেল ২০৪৮ অ র পয হেত পাের। যাইেহাক আমরা এখােন syntax অ যায়ী
legal ও illegal িকছু নাম দখেবা।

২৫৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.২. Meaningful Names (অথেবাধক নাম)

অৈবধনাম কারণ
12 নােমর সব েলার অ র অংক হেত পারেব না
12cholok নােমর থম অ র অংক হেত পারেব না
amar cholok নােমর মাঝখােন কান ফাঁকা (space) থাকেত পারেব না
ama;cho+k বণ, অংক, িন দাগ ছাড়া অ কান তীক থাকেত পারেব না
Programএ ( মেলখ) অৈবধ নাম ব বহার করেল কী হয়? কের দেখা কী হয়! Compiler
(সংকলক) error message ( িটবাতা) িদেব, আর তামােক নামিট িঠক করেত হেব। তাহেল
এখন থেক তামার programএ নাম দওয়ার সময় নােমর এই গঠনরীিত েলা মেন চলেব।
বধনাম কারণ
p একটাই অ র সিট ছাট হােতর বণ
P একটাই অ র সট বড় হােতর বণ
abc িতনটা অ র সব ছাট হােতর বণ
ABC িতনটা অ র সব বড় হােতর বণ
Abc িতনটা অ র ছাটহােতর বড়হােতর িমশােনা
bAc
a1bc
a1Bc
a bc
abc
5g
িতনটা অ র ছাটহােতর বড়হােতর িমশােনা
িতনটা ছাটহােতর অ র ও একটা অংক, অংকিট
িতনটা ছাটবড় হােতর অ র ও একটা অংক যিট
েত নয়
েত নয়
িতনটা ছাটহােতর অ র ও একিট িন দাগ (underscore)
িতনটা ছাট হােতর অ র ও িতনিট িন দাগ
in
Abc িতনটা ছাটবড় হােতর অ র ও িতনিট িন দাগ
amar cholok ছাটহােতর অ র ও িন দাগ, নামিট অিধক বাধগম
amar Cholok ছাটবড় হােতর অ র ও িন দাগ, অিধক বাধগম
am

amarCholok123 ছাটবড় হােতর অ র, িন দাগ, ও অংক যিট েত নয়


amar125cholok ছাটহােতর অ র ও অংক, অংকিট েত নয়।

১২.২ Meaningful Names (অথেবাধক নাম)


al

িসিপিপেত identifierএর (শনা ক) নাম কমন হেত পাের আর কমন হেত পাের না, আমরা তা
আেগর পােঠ দেখিছ। এই পােঠ আমরা দখেবা নােমর অথেবাধকতা (semantic)। আমরা যখন
কান নাম দেবা, তখন নামিট অব ই অথবহ হওয়া চাই। আমরা আেগর একিট পােঠ অ একটু
আেলাচনা কেরিছ নােমর অথেবাধকতা িনেয়। এখন আেরা িব ািরত আেলাচনা করিছ নাম েলা
কমন হেল ভােলা হয় স স েক। Variable (চলক) বা constant ( বক) বা function
(িবপাতক) নাম সবসময় তার কাজ ও ব বহােরর িদেক খয়াল রেখ অথেবাধক হওয়া উিচৎ।
অথেবাধক না হেল program ( মেলখ) বাঝা আমােদর জ কিঠন হেয় যায়।
অেনেক অিতির আ েহ য ত িনেজর বা ি য় কােরা নােম identifierএর নাম িদেয় থােক
যমন gonimia1, gonimia2, ইত ািদ। তা এই variable েটার একটা যিদ ব াসােধর জ
আেরকটা যিদ ফেলর জ ব বহার করা হয়, তাহেল variableএর নাম থেক মােটও বুঝা
যােব না কান নামিট কী কােজ ব ব ত হে । ব াসােধর জ বরং radius বা bashardho
অথবা িনেদনপে r বা b ব বহার করা যেত পাের। এক অ েরর নাম দয়া অেনেক পছ কের,
কারণ তাড়াতািড় লখা যায়, িক একই আদ া র যু একািধক variable থাকেল তখন মুশিকল
হেয় যায়। সে ে ওই অ েরর সােথ আেরা অ র লািগেয় অথবা সংখ া লািগেয় িতিট নামেক
আলাদা করেত হেব, যােত অ ত বুঝা যায় কান variableিট কী উে ে ব বহার করা হেয়েছ।

২৫৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৩. Case Sensitivity (িলিপ সংেবদনশীলতা)

আমরা যিদ েটা বৃ িনেয় কাজ কির তাহেল তােদর ব াসােধর জ িট variable হেতই
পাের radius1 আর radius2 তােত কান সম া নাই। ব াপারটা দীপু ন র ২ চলি ে র মেতা,
একজেনর নাম দীপু ন র ১ আর একজন দীপু ন র ২। অথবা কউ চাইেল নাম িদেত পাের
radiusA আর radiusB। এভােব একই ধরেনর কােজ ব বহার হেব এরকম variable অেন-
ক েলা লাগেল আমরা সংখ া লািগেয় বা বণ লািগেয় আলাদা আলাদা নাম তরী কের িনেবা। এর
জ অব array (সাজন) নােম আলাদা একটা ধারণা আেছ, যটা আমরা পের জানেবা। Array
ব বহার কের আমরা সংখ া লািগেয় যত ই া তত েলা একই ধরেনর নাম পাই। অেনেক আলেসিম
কের অথবা কান কারেণ identifierএর (শনা ক) নাম করণ করেত থােক a, b, c, p, q, r
, i , j , k, x, y, z ইত ািদ এেকর পর এক অ র িদেয়। এটা খুবই বােজ অভ াস। এইরকম
identifier মােটও অথেবাধক নয়। এ েলা থেক বুঝার কান উপায় নই কান variableিট
িঠক কী কােজ ব বহার করা হে । সবসময় এরকম নামকরণ থেক ের থাকেব।
এখােন করেত পােরা: নামকরেণ িক সবসময় একটা মা শ ই ব বহার করেবা? এেকর
অিধক শ ব বহার করেবা না? উ র হে অথেবাধক করার জ তুিম দরকার মেতা একািধক
শ অব ই ব বহার করেব, এইটা খুবই ভােলা অভ াস। আর সে ে যােত িতিট শ খুব
সহেজ বাঝা যায় স জ তামার িকছু কৗশল অবল ন করেত হেব। একটা কৗশল হেলা িট

5g
শে র মােঝ একিট underscore (িন দাগ) দওয়া যমন my var। আেরকিট কৗশল হল
িতিট শে র থম অ রিট বড়হােতর দওয়া আর অ েলা ছাট হােতর, যমন MyVar তেব
চাইেল একদম থম শে র থম অ রিট ছাটহােতরও রাখেত পােরা যমন myVar। নীেচর
সারণীেত আমরা িকছু অথেবাধক নােমর উদাহরণ দখেবা।
in
নাম যেথাপযু তার কারণ
sum যাগফেলর জ sum চলেকর ইংেরজী নাম
jogfol যাগফেলর জ jogfol চলেকর বাংলা নাম
am

bijor songkhar jogfol িন দাগ িদেয় অথেবাধক শ আলাদা হেয়েছ


odd number sum িন দাগ িদেয় অথেবাধক শ আলাদা হেয়েছ
Bijor Shongkhar Jogfol িন দাগ িদেয় আলাদা, বড়হােতর আদ া র
BijorShongkharJogfol বড়হােতর থম অ র িদেয় আলাদা আলাদা
bijorShongkharJogfol এিট অেনক চিলত ও অেনেকরই পছে র
al

১২.৩ Case Sensitivity (িলিপ সংেবদনশীলতা)


িসিপিপ ভাষা একিট case sensitive (িলিপ সংেবদনশীল) ভাষা। এই কথার অথ কী? িসিপিপেত
বড়হােতর ছাটহােতর অ র িক িভ িভ ধরা হয়, নািক ইংেরজীর মেতা একই ধরা হয়?
barek i s going home
BAREK I S GOING HOME
Barek I s Going Home

আেগর কেয়কিট পােঠ variable (চলক) বা constant ( বক) বা functionএর (িবপা-


তক) নাম, এককথায় identifierএর (শনা ক) নামকরণ িনেয় আমরা আেলাচনা কেরিছ। নাম-
করেণর িনয়ম েলা আেলাচনা করার সময় দেখিছ য কান শনা েকর নামকরেণ আমরা চাইেল
বড়হােতর বণ A-Z, ছাটহােতর বণ a-z, অংক 0-9, আর িন দাগ ব বহার করেত পারেবা। একই
নােম বড়হােতর ছাটহােতর অ র িমিশেয়ও নামকরণ করেত পারেবা। এইঅব ায় হে কান
নাম ই ামেতা একবার বড়হােতর অ ের অথবা ছাট হােতর অ ের অথবা আেরকবার িকছু অ র

২৫৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৪. Reserved & Key Words (সংরি ত ও চািব শ )

ছাটহােতর িকছু অ র বড় হােতর এইভােব িলখেত পারেবা িকনা। িবেশষ কের আমরা জািন ইং-
রজীেত আিম ছাট হােতরই িলিখ আর বড় হােতরই িলিখ শ টা আসেল একই থােক, িসিপিপেতও
িক তাই? আমরা বরং উদাহরণ িদেয় ব াপারটা দিখ। ইংেরজীেত ছাট হােতর বড় হােতর অ র
আলাদা হেলও ও েলা কবলই সৗ যবধন মুলক। উপেরর িতনেট ইংেরজী বাক তাই একই।
এবার আমরা িসিপিপ ভাষায় ছাট হােতর বড় হােতর অ েরর ব বহার দিখ। নীেচর নাম -
লার ত েকিট িসিপিপ ভাষায় আলাদা আলাদা নাম িহসােব ধরা হেব।
myvariable , myVariable , MyVariable , m y v a r i a b l e ,
My Variable , myVariable , MyVaRiAbLe

িসিপিপেত উপেরর একটা নাম িদেয় য variable বা constant বা functionেক বুঝােনা


হেব অ নাম িদেয় ওইটােক বুঝােনা যােব না, বরং অ একটা বুঝােনা হেয় যােব। মাট কথা েটা
নােমর একটা অ েরও যিদ এিদক সিদক থােক তাহেল নাম েটা আসেল আলাদা। েটােক একই
িজিনেসর নাম িহসােব ধের নয়া যােব না। তরাং program ( মেলখ) লখার সময় খয়াল রা-
খেব যােত একটা variableেক বুঝােত িগেয় কবল বড়হােতর ছাটহােতর বেণর িভ তার কারেণ

5g
আেরকটােক বুিঝেয় না ফেলা, তােত সব ভজঘট লেগ যােব। তামার programও উ াপা া
ফলাফল িদেব। আবার ধেরা তামার একটাই variable যার নাম myvariable, িক পের তুিম
িলেখেছা myVariable। এই অব ায় compile (সংকলন) করেল তামােক "myVariable is
not declared" এইরকম error message ( িটবাতা) িদেব। তামােক তখন myVariable
এর বদেল myvariable িলেখ িঠক করেত হেব। Program তরীর সময় আমরা ায়শই এই-
in
রকম ভুল কের থািক। আর তখন আমােদর এইভােব িঠক কের িনেত হয়।
উপেরর এই িনয়ম জানার পের তুিম হয়েতা মেন করেব এইটা তা ভােলাই। আমার যিদ ইটা
বৃে র ব াসােধর জ চলক লােগ একটার নাম িদেবা radius আর একটার নাম িদেবা Radius।
am

াঁ, তুিম সটা িদেতই পােরা। িসিপিপ যেহতু ইটােক আলাদা আলাদা variable িহসােব ধের
িনেব, তাই এই েটা হেলা েটা বধ আলাদা নাম। তেব অথেবাধকতার িদক ভেব তুিম হয়েতা
এরকম নাম করণ থেক দূের থাকার চ া করেব। একটা অ র বড় বা ছাটহােতর কবল এই
অ একটুখািন িভ তা িদেয় আসেল তমন বশী অথেবাধক পাথক তরী করা যায় না, ফেল
program ( মেলখ) পড়া কিঠন হয়। আর একটা ব াপার: variableএর নামকরেণ বড়হােতর
ছাটহােতর অ র িমশােত তা পােরাই যমন MyVariable, িক এমন ভােব িমিশও না য
al

পড়াটা খুব কিঠন হেয় যায়, যমন MyVaRiAbLe, এই রকম নাম চট কের পড়া আসেল স ব
না, বরং এইরকম নাম য নাদায়ক। কােজই সবিমিলেয় সহজ ও র নাম িদেব, কমন!

১২.৪ Reserved & Key Words (সংরি ত ও চািব শ )


Reserved word (সংরি ত শ ) বা key word (চািব শ ) কী? আিম িক variable (চলক),
constant ( বক) বা functionএর (িবপাতক) এর identifier িহসােব reserved word
বা key word ব বহার করেত পারেবা? িসিপিপেত reserved বা key word কান েলা?
Reserved word িবষেয় আেলাচনার আেগ আমরা একটা গ বেল নই। এক বািড়েত
থােক জামাই-বউ আর তােদর সােথ থােক বড় টুম অথাৎ বউেয়র ভাই বা জামাইেয়র ালক।
তা সই ালেকর নাম হল লাল। একিদন জামাই বচারা তার বউেয়র ক লাঘব করার জ
একজন কােজর ছেল িনেয় আেস। বউ িজে স কের "এই ছেল তামার নাম কী?" কােজর ছেল
বেল তার নাম লাল। বউ তখন জামাইেক বেল ছেলিটর নাম বদলােত হেব। জামাই অবাক,
অবাক কােজর ছেলিটও। তার নাম লাল, ভােলাই তা নামিট, সটা বদলােত হেব কন। বউ

২৫৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৪. Reserved & Key Words (সংরি ত ও চািব শ )

জামাইেক বকেত থােক "তুিম জােনা না আমার ভাই অথাৎ তামার ালেকর নাম লাল"। য
বাসায় ালেকর নাম লাল, সই বাসার কােজর ছেলর নাম লাল হয় কমেন, ালক হেলা
বড় টুম, তার কী এত বড় অস ান করা যায়! আর জামাইেয়র নাম হেলা কােদর। তা বউ আেরা
এক কািঠ বািড়েয় বলেত থােক িঠক আেছ কােজর ছেলর নাম বদেল কােদর রাখা হউক, দিখ
জামাইেয়র কমন লােগ। তারপর জামাইেয়র সামেনই কােজর ছেলেক বেল "এই এখন থেক
তার নাম িদলাম কােদর।" তারপর হঁেড় গলায় ডাকেত থােক "কােদর, এই কােদর, এই িদেক
আয়।" কমন একটা বড়ােছড়া অব া। শষ পয িঠক হয় এক বাসায় ইটা লাল তা হেত
পােরনা, একজেনর নাম বদলােত হেব। আর বাসার বড় টুেমর নাম তা আর বদলােনা যােব না
কান ভােবই, ওটা সংরি ত নাম, কােজই বদলােত হেব কােজর ছেলর নাম। তরাং কােজর
ছেলর নাম দয়া হয় লাল া। তাহেল ালেকর নাম লাল, আর কােজর ছেলর নাম লাল া।
িসিপিপ ভাষায় গঠন কাঠােমা িঠক রাখার জ িকছু িনিদ শ আেছ। আমরা ইত মেধ
এরকম িকছু শ ব বহার কেরিছ। যমন return, int , float। এই শ েলার অথ িসিপিপ
ভাষােত আেগ থেক িনিদ , যমন return মােন যখন function (িবপাতক) শষ হয়, int
আর float হল variableএর মান কমন পূণক বা পূণ সংখ া না ভ ক বা ভ সংখ া এইর-
কম। এই িতনিট ছাড়াও আেরা অেনক েলা এই রকম শ আেছ। এই শ েলা চাইেল আমরা

5g
িনেজরা আমােদর variable (চলক) বা constant ( বক) বা functionএর (িবপাতক) নাম
িহসােব ব বহার করেত পারেবা না। এই েলা হে reserved word (সংরি ত শ )। এই শ -
েলােক অ কথায় key wordও (চািব শ ) বলা হয়। তাহেল তামার মেলখেত তুিম এই প
reserved word বা key word identifierএর (শনা ক) নাম িহসােব ব বহার করেব না।
in
কারণ ও েলা বড় টুম লােলর নােমর মেতা। যিদ একা ই দরকার হয় তাহেল লাল ক -
লাল া বানােনার মেতা িকছু যাগ-িবেয়াগ কের িভ শ বািনেয় ব বহার করেব। যমন return
না ব বহার কের returnValue ব বহার করেল, এইরকম। নীেচ আমরা িসিপিপর reserved
word েলার তািলকা িদি ।
am

• Structure programmingএ (সংগিঠত পিরগণনায়) ব ব ত শ :


break, case, char, const, continue, default, do, double, else,
enum, extern, float, for, goto, if , int , long, register, short,
signed, sizeof, static , struct, switch, typedef, union, unsigned,
al

return, void, volatile , while

• Object-oriented (ব মুখী পিরগণনায়) ব ব ত শ :


class , explicit , delete, friend, inline , mutable, namespace,
new, opeator, private, protected, public, this , using, virtual

• Error handlingএর ( িট সামলােনা) জ শ :


catch, noexcept, throw, try

• Logical and bit-wise operators (যুি ও িবট িত অণুি য়ার) শ :


bool, and, and eq, bitand, bitor , compl, false, not, not eq,
or, or eq, true, xor, xor eq

• Data type (উপা করণ) সং া শ :


auto, const cast, decltype, nullptr , dynamic cast,
reinterpret cast, static cast , typeid

২৫৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৫. Exercise Problems (অ শীলনী সম া)

• Template (ছাঁচ) সং া শ :
export, template, typename

• Compile-timeএ (সংকলন সময়) ব ব ত হওয়া শ :


static assert , constexpr

• Preprocessorএর (পূব ি য়ক) জ শ :


if , elif , else, endif, defined, ifdef , ifndef, define, undef,
include, line , error, pragma

• িবিভ আকােরর অ েরর জ শ : char16 t, char32 t, wchar t

• িবিবধ শ : alignas, alignof, asm, concept, requires, thread local

১২.৫ Exercise Problems (অ শীলনী সম া)

িনেজ বর করেব।
5g
Conceptual Questions: নীেচ িকছু conceptual রেয়েছ।

১. Identifier (শনা ক) কী? Programএ identifierএর ভুিমকা কী?


েলার উ র িনেজ
in
২. িসিপিপেত identifierএর (শনা ক) নাম করেণর িনয়মাবলী বণনা কেরা।

৩. Programএ ( মেলখ) গঠনগত ভােব অৈবধ নাম ব বহার করেল কী ঘেট?


am

৪. অথেবাধক নাম কী? Programএ অথেবাধক নাম ব বহার করা উিচৎ কন?

৫. িসিপিপ একিট case sensitive (িলিপ সংেবদনশীল) ভাষা, এর মােন কী ?

৬. Reserved ও key word কী? এ েলা কন identifier িহসােব ব বহার করা যায় না?
al

Exercise Questions: নীেচর শ েলা syntactically (গঠনগত ভােব) identifierএর


(শনা ক) নাম িহসােব বধ নািক অৈবধ? যিদ বধ হয় তাহেল অথেবাধক (meaningful) নািক
অথেবাধক নয়? অথবা কান শ িক reserved বা key word (সংরি ত বা চািব শ )? থেম
িনেজ িনেজ উ র বর করার চ া করেব, একা না পারেল নীেচর সমাধান দখেব।

১. void ৭. return ১৩. a long−one

২. MAX−ENTRIES ৮. cout ১৪. xyz

৩. double ৯. xyz123 ১৫. 9xyz

৪. time ১০. part#2 ১৬. main

৫. G ১১. "char" ১৭. mutable

৬. Sue's ১২. #include ১৮. max?out

২৫৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৫. Exercise Problems (অ শীলনী সম া)

১৯. Name ২৪. SUM ২৯. int

২০. name ২৫. sum of numbers ৩০. pow

২১. name 1 ২৬. firstName ৩১. $sum

২২. Int ২৭. Identifier ৩২. numˆ2

২৩. INT ২৮. printf ৩৩. num 1

Exercise Answers: উপেরর েলার উ র এখােন দয়া হে । থেম িনেজ িনেজ উ র


বর করার চ া করেব, একা না পারেল এই সমাধান দখেব।

১. void : Reserved word (সংরি ত শ ), কান কােররই না এমন বুঝােনা হয়

২. MAX−ENTRIES : বধ identifier (শনা ক), অথেবাধক

5g
৩. double : Reserved word (সংরি ত শ ), বড় আকােরর ভ েকর জ

৪. time : বধ identifier (শনা ক), িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৫. G : বধ identifier (শনা ক), িক পািরপাি কতা ছাড়া অথ বুঝা যাে না


in
৬. Sue's : অৈবধ identifier (শনা ক) কারণ নােম ' ব বহার করা যায় না

৭. return : Reserved word (সংরি ত শ ), িবপাতক থেক ফরত গমন


am

৮. cout : বধ identifier (শনা ক), িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৯. xyz123 : বধ identifier (শনা ক), িক অথেবাধক িকনা পির ার না

১০. part#2 : অৈবধ identifier (শনা ক) কারণ নােম # ব বহার করা যায় না

১১. "char" : অৈবধ identifier (শনা ক) কারণ নােম " ব বহার করা যায় না
al

১২. #include : Preprocessorএর (পূব- ি য়ক) জ reserved word

১৩. a long−one : বধ identifier (শনা ক), িক অথ সই ভােব পির ার নয়।

১৪. xyz : বধ (identifier) শনা ক, িক অথ সই ভােব পির ার নয়

১৫. 9xyz : অৈবধ (identifier) শনা ক, নােমর েত অ থাকেত পাের না

১৬. main : Reserved word নয়, িক েত ক programএই থােক বেল পিরত াজ

১৭. mutable : সংরি ত শ , কান constantও িবেশষ অব ায় পিরবতন যাগ হেল

১৮. max?out : অৈবধ identifier (শনা ক), নােম ? িচ থাকেত পারেব না

১৯. Name : বধ identifier (শনা ক), অথেবাধক, কীেসর নাম সটা পির ার নয়

২০. name : বধ identifier (শনা ক), অথেবাধক, কীেসর নাম সটা পির ার নয়

২৫৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১২.৬. Computing Terminologies (গণনা পিরভাষা)

২১. name 1 : বধ identifier (শনা ক), অথেবাধক, কীেসর নাম সটা পির ার নয়

২২. Int : বধ identifier, তেব সংরি ত শ int এর সােথ িব াি দখা িদেত পাের

২৩. INT : বধ identifier, তেব সংরি ত শ int এর সােথ িব াি দখা িদেত পাের

২৪. SUM : বধ identifier (শনা ক), অথেবাধক, যাগফেলর জ

২৫. sum of numbers : বধ identifier (শনা ক), অথেবাধক

২৬. firstName : বধ identifier (শনা ক), অথেবাধক, অেনেকর পছে র

২৭. Identifier : বধ identifier (শনা ক), অথেবাধক, কীেসর শনা ক পির ার নয়

২৮. printf : বধ identifier, অথেবাধক, ভাষালেয় (library) িবদ মান, পিরত াজ

২৯. int : Reserved word (সংরি ত শ ), পূণক উপা ধারেনর জ উপা করণ

5g
৩০. pow : বধ identifier, অথেবাধক, িক ভাষালেয় (library) িবদ মান, তাই পিরত াজ

৩১. $sum : অৈবধ identifier (শনা ক), নােম $ িচ ব বহার করা যায় না

৩২. numˆ2 : অৈবধ identifier (শনা ক), নােম ˆ িচ ব বহার করা যায় না
in
৩৩. num 1 : অৈবধ identifier (শনা ক), নােম ফাঁকা ব বহার করা যায় না
am

১২.৬ Computing Terminologies (গণনা পিরভাষা)


• Identifier (শনা ক) • Error handling ( িট সামলােনা)
• Underscore (িন দাগ)
• Logical operators (যুি অণুি -
• Array (সাজন) য়া)
al

• Structured (সংগিঠত)
• Bit-wise operators (িবট িত অণু-
• Programming (পিরগণনা) ি য়া)
• Structured programming (সং-
গিঠত পিরগণনা) • Data type (উপা করণ)

• Object-oriented (ব মুখী) • Template (ছাঁচ)


• Object-oriented programming
(ব মুখী পিরগণনা) • Compile-time (সংকলন সময়)

২৬০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১৩

Input and Assignment


( যাগান ও আেরাপণ)

5g
Programএ ( মেলখ) data (উপা ) কাথা থেক আেস? হয় আমরা programএর িভতের
সরাসির িলেখ দই, যমনিট আেগর পাঠ েলােত কেরিছ, আর না হয় আমরা data ব বহারকারী-
দর কােছ থেক input ( যাগান) নই। Data input িনেয় সিটেক ধারন করার উে ে আমরা
variableএ (চলক) assign (আেরাপণ) কির যােত ওই data পের কােজ লাগােনা যায়।
in
১৩.১ Data Input (উপা যাগান)
am

িসিপিপেত এমন একিট program িলেখা যিট য কান আয়েতর ফল ও পিরসীমা িন-
ণয় করেত পাের। তামার program তুিম মা একবারই compile (সংকলন) করেত পার-
ব, আর েত ক আলাদা আয়েতর জ তুিম programিট বারবার কবল চালােত পারেব, িক
programএর িভতের দঘ ও বদেল িদেয় বারবার compile করেত পারেব না। তারমােন
তামােক দঘ ও input ( যাগান) িহসােব userএর কােছ থেক িনেত হেব।
উ program লখার আেগ চেলা আমরা িকছু দরকারী আেলাচনা সাির। আমরা যখন কান
al

computing problem (গণনা সম া) সমাধান করেত চাই, যমন আেলাচ ে আমরা


আয়েতর দঘ ও জেন তার ফল ও পিরসীমা িনণয় করেত চাই, তখন আমরা মুলত
একিট program ( মেলখ) ব বহার করেবা, মােন আমরা programিট run করেবা। এখন
এই program হয়েতা আমরা িনেজরা তরী করেবা অথবা অ কউ আমােদর তরী কের িদেব।
বশীর ভাগ ে programিট অে র তরী করা দয়া, আমরা কবল user।
ভেব দেখা program তরী করা (write) আর run করা (চালােনা) আসেল েটা িভ ঘট-
না। এই েটা ঘটনা পরপর একসােথ ঘটেব এরকম সবসময় হয় না। বরং বশীর ভাগ সমেয় এই
ঘটনা েটা আসেল িভ িট ােন িভ িট সমেয় িভ ই ব ি র ারা সংঘিটত হয়। তাছাড়া
program য চালােব স হয়েতা কবল একটা আয়েতর ফল ও পিরসীমা িনণয় করেত চায়
না বরং তার হােত হয়েতা অেনক অেনক আয়ত আেছ আর স সব েলা আয়েতর জ ই ফল
ও পিরসীমা িনণয় করেত চায়। তরাং িতটা আয়েতর জ তার একটা কের আলাদা program
লাগেব যিদ programএর িভতের আয়েতর দঘ ও িদেয় দয়া হয়। অথবা তার এমন একটা
program লাগেব যটা কান না কান ভােব সব েলা আয়েতর জ ই কাজ করেব, আর সিঠক
ভােবই করেব অথাৎ programিট মুলত formulaএর (সূ ) ওপর নজর দেব, dataএর (উপা-
) ওপর নয়। Data বদলােলও formula তা সবসময় একই থাকেব।

২৬১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.১. Data Input (উপা যাগান)

আমরা উপের যসব অব া আেলাচনা করলাম সই সব অব ায় programmer ( মেল-


খক) program ( মেলখ) তরী করার সময় জানেবন না আয়েতর দঘ ও কী হেব, সিট
জানা স ব হেব পের user যখন programিট চালােবন কবল তখন। হে এমতাব ায়
programmer data (উপা ) ছাড়া কী ভােব program তরী করেবন। সিত বলেত উ র
তা গিণেতই আেছ: variable (চলক) ব বহার কের। আর আমরা তা ইত মেধ programএ
variable ব বহার কেরিছই। আমােদর কবল যটা করা দরকার তা হেলা programএর িভতের
দঘ বা সরাসির িলেখ না িদেয় ওইটা যােত user program চালােনার সময় িদেয় িদেত
পাের সই ব ব া করা। নীেচর programএ আমরা তাই কেরিছ। আমরা userএর কােছ থেক
variableএর মান data িহসােব input ( যাগান) িনেয়িছ। এবার আমরা ওই programিটর
সংি অংশটু িবে ষণ কির।

িফিরি ১৩.১: Programs with Data Input (উপা যাগােনর মেলখ)


#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

i n t main ( )
{
5g
in
i n t length ; / / আয়েতর দেঘ র জ চলক
c i n >> length ; / / দঘ যাগান িহসােব নওয়া হেব
am

i n t width ; / / আয়েতর ে র জ চলক


c i n >> width ; / / যাগান িহসােব নওয়া হেব

// ফল ও পিরসীমার সূ
i n t area = length ∗ width ;
i n t perimeter = 2∗ ( length + width ) ;
al

// ফল ও পিরসীমা ফলন
cout <<" area i s "<< area << endl ;
cout <<" perimeter i s "<< perimeter << endl ;

ret ur n EXIT SUCCESS ; / / সফল ভােব ফরত


}

যাগান-ফলন (input-output)
13
12
area i s 156
perimeter i s 50

২৬২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.১. Data Input (উপা যাগান)

উপেরর programএ খয়াল কেরা আমরা দেঘ র জ একিট variable length ঘাষনা
কেরিছ, িক সােথ সােথ তার কান initial value assign (আিদমান আেরাপ) কির নাই। কারণ
আেগই যমন আেলাচনা করলাম, আমরা যখন program িলখিছ তখন আমরা আসেল জািননা য
length এর মান কেতা। আমরা বরং ওইটা userএর কােছ থেক নেবা। আর স কারেণ আমরা
cin >> length; িলেখিছ। এখােন cin হল console in। সাধারণত input device ( যাগান
য ) keyboard (চাপিন) ও mouse (িটপিন) আর output device (ফলন য ) monitor
(নজির) িমিলেয় হল আমােদর console বা য ালয়। তা console in বলেত আমরা এখােন
input device িবেশষ কের keyboard (চাপিন) থেক input ( যাগান) নয়া বুঝাি । তাহেল
cin userএর কােছ থেক keyboardএর মাধ েম সংখ াটা িনেয় সটা length variableএর
িভতের িদেয় িদেব। এেত ওই variableএ একরকেমর value assign হেয় যােব।
Userএর কােছ থেক দঘ নবার পের আমােদর ও িনেত হেব। উপেরর programএ
খয়াল কেরা আমরা দেঘ র মেতা কের ে র জ ও width নােম একটা int ধরেনর variable
ঘাষনা কেরিছ আর তার পেরর সািরেত cin ব বহার কের width এর মান userএর কােছ থেক
নয়ার কথা িলেখিছ। উপেরর programএর বাঁকী অংশটু তা আেগর পােঠর program -
লােত যমন দঘ ও ব বহার কের ফল ও পিরসীমার সূ িলখা হেয়েছ আর তারপের

5g
output (ফলন) দখােনা হেয়েছ িঠক তমনই। আমরা স েলা আর আেলাচনা করিছ না।
এবার আমরা আর একটু আেলাচনা কির উপেরর programিট compile (সংকলন) কের
চালােল কী ঘটেব তা িনেয়। উপেরর programিট চালােল আমরা দখব screenএ (পদা) িকছু
আসেছ না, cursorটা (চটুল) কবল লাফালািফ করেছ। আমরা এই অব ায় দেঘ র মান, ধরা
in
যাক 13 চেপ enter (ভুি ) চাপেবা। িভতের িভতের cin ওই মান িনেয় length variableএর
মেধ রেখ িদেব। Cursorটা (চটুল) তারপরও লাফালািফ করেব। আমরা তখন 12 িদেয় enter
(ভুি ) চাপেবা, cin ওইটা width variableএ রেখ িদেব। তারপর screenএ আমরা output
দখেত পােবা। থম সািরেত থাকেব area is 156 আর পেরর সািরেত perimeter is 50।
am

উপের programএ আমরা চাইেল িকছু সংি করণ করেত পাির। যমন দঘ ও এর
variable িট declare ও input নয়া চার সািরেত না কের আমরা ও েলােক মা ই সািরেত
সারেত পাির। থম সািরেত আমরা variable েটা declare করেবা। আর পেরর সািরেত আমরা
variable েটার input িনেবা। নীেচর programএ এই েলা দখােনা হেলা।
i n t length , width ; / / আয়েতর দেঘ ও ে র জ চলক
al

c i n >> length >> width ; / / দঘ ও যাগান নওয়া হেব

আর সে ে programিট চালােনার সময় input নয়ার অংশ িন প হেব। ল করেব


cursor (চটুল) যখন input নবার জ লাফােত থাকেব, আমরা তখন 13 ও 12 সংখ া িট
ফাঁকা িদেয় এক সােথ িদেয়ই enter (ভুি ) চাপেত পারেবা, অথবা চাইেল 13 িলেখ enter
চেপ তারপর 12 িলেখ আবার enter চাপেত পারেবা। আর output তা আেগর মেতাই হেব।
13 12

কউ যিদ চায় তাহেল িক output অংেশও এরকম সংি করণ করেত পাের। যমন -
ফল ও পিরসীমা চাইেল এক সািরেতই output িদেত পাের।
cout << " area and perimeter are " << area << " " <<
perimeter << endl ; / / cout হেত এই পয পুেরাটা আসেল এক
সািরেত

তেব সবিকছু একবার cout িদেয় দওয়ার চেয় আমরা হয়েতা ইবাের িদেত চাইেবা।

২৬৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.২. Input Prompt ( যাগান যাচনা)

cout << " area and perimeter are " ;


cout << area << " " << perimeter << endl ;

উপেরর উভয় ে screenএ output িক একসািরেতই আসেব।


area and perimeter are 156 50

১৩.২ Input Prompt ( যাগান যাচনা)


িসিপিপেত এমন একিট program ( মেলখ) রচনা কেরা যিট য কান আয়েতর ফল ও
পিরসীমা িনণয় করেত পাের। তামার program আয়েতর দঘ ও ব বহারকারীর কােছ
থেক input ( যাগান) িনেব। আর দঘ ও যাগান নবার আেগ তামার program অব ই
ব বহারকারীেক দঘ ও ে র মান িজে স করেব অথাৎ prompt (যাচনা) করেব।

#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>
5g
িফিরি ১৩.২: Program with Input Prompt ( যাগান যাচনার মেলখ)
in
using namespace std ;

i n t main ( )
am

{
i n t length ; / / আয়েতর দেঘ র জ চলক
cout << " length i s ? " ; / / মান যাচনা করা হে
c i n >> length ; / / দঘ যাগান িহসােব নওয়া হেব

i n t width ; / / আয়েতর ে র জ চলক


al

cout << " width i s ? " ; / / মান যাচনা করা হে


c i n >> width ; // যাগান িহসােব নওয়া হেব

// ফল ও পিরসীমার সূ
i n t area = length ∗ width ;
i n t perimeter = 2∗ ( length + width ) ;

// ফল ও পিরসীমা ফলন দয়া হেব


cout <<" area i s "<< perimeter << endl ;
cout <<" perimeter i s "<< perimeter << endl ;

ret ur n EXIT SUCCESS ; / / সফল ভােব ফরত


}

২৬৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.২. Input Prompt ( যাগান যাচনা)

যাগান-ফলন (input-output)
length i s ? 13
width i s ? 12
area i s 156
perimeter i s 50

আেগর পােঠর programএ আমরা variableএর মান userএর কােছ থেক নয়ার জ
cin ব বহার কেরিছ। ওই programিট যখন আমরা চালাই তখন দিখ screenএ (পদা) িকছু নাই
আর cursorটা (চটুল) কেনা যেনা লাফালািফ করেছ। সই অব ায় আমরা থেম দেঘ র মান
13 িদেয় enter (ভুি ) চেপিছ। Cursorটা (চটুল) তারপরও লাফালািফ করিছল। আমরা তখন
12 িদেয় enter চেপিছ। তারপর screenএ output এেসিছল থম সািরেত area is 156
আর পেরর সািরেত perimeter is 50। তা এই য cursorটা (চটুল) লাফালািফ করিছল দঘ
ও ে র মান নয়ার জ এইটা আমরা বুঝেত পাির কারণ আমরা িনেজরাই এে ে programিট
তরী write) কেরিছ আর িনেজরাই সটা compile (সংকলন) কের চালাি (run)। আমরা
এে ে জািন য আমােদর programিট থেম দঘ চাে আর সটা দবার পর চাে ।

5g
এবার ভেব দেখা আমােদর লখা program যিদ আমরা ছাড়া অ কউ চালায় (run) তাহেল
স কী ভােব জানেব cursorিট (চটুল) ওই অব ায় কন লাফাে । স িক আসেলই দঘ বা
নয়ার জ অেপ া করেছ নািক িভতের িভতের ঘটনা অ িকছু, স হয়েতা অ িকছু করেছ।
তা ওপেরর সম া সমাধােনর জ আমরা যিট করেবা সিট হেলা আমােদর programএ
in
cin >> length; লখার আেগ আমরা একটা message দখােবা য আমরা দেঘ র মান চাই।
উপেরর program খয়াল কেরা cin >> length; লখার আেগ আমরা cout << "length
is? "; িলেখ আসেল সটাই করেত চাইিছ। এই program যখন চালােনা হেব তখন থেম
am

screenএ length is? দখা যােব। আর cout এর শেষ আমরা যেহতু endl অথাৎ end
line দই নাই, cursorটা (চটুল) সেহতু ওই একই সািরেত লাফাইেত থাকেব, লাফাইেত থাকেব
মুলত cin >> length; এর কারেণ length এর মান নয়ার জ । আমরা তখন length এর
মান িদেয় enter (ভুি ) চাপেবা। তাহেল "চটুল কন লাফায়?" আমরা এই সম ার সমাধান
কের ফললাম কমন! এই য input ( যাগান) নবার আেগ একটা message িদেয় userেক
জানােনা য আমরা কী input চাই, এই ব াপারিটেক বলা হয় input prompt ( যাগান যাচনা)।
al

উপেরর programএ খয়াল কেরা আমরা ে র জে ও একই ভােব input ( যাগান) নবার
আেগ "width is? " message িদেয় input prompt ( যাগান যাচনা) কেরিছ। তাহেল এখন
থেক তামার programএ input নবার আেগ অব ই input prompt করেব, কমন?
উপের programএ আমরা চাইেল িকছু সংি করণ করেত পাির। যমন দঘ ও িট
declare ( ঘাষনা), input prompt ( যাগান যাচনা) করা, ও input ( যাগান) নয়া ছয় সা-
িরেত না কের আমরা ও েলাক মা িতন সািরেত সারেত পাির। থম সািরেত আমরা variable
েটা declare করেবা। আর পেরর সািরেত আমরা input prompt করেবা তারপের সািরেত
variable েটার মান input িনেবা। নীেচ programএ ( মেলখ) এই েলা দখােনা হেলা।
i n t length , width ; / / দেঘ ও ে র জ চলক
cout << " length & width are ? " ; / / একসােথ যাচনা
c i n >> length >> width ; / / দঘ ও যাগান

আর সে ে programিট চালােনার সময় input নয়ার অংশ িন প হেব। অথাৎ এই


program চালােল length & width are? দখােনার পের cursorটা (চটুল) input নবার
জ লাফােত থাকেব। আমরা 13 ও 12 সংখ া িট ফাঁকা িদেয় এক সােথ িদেয়ই enter (ভুি )

২৬৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৩. Value Assignment (মান আেরাপণ)

চাপেত পারেবা, অথবা চাইেল 13 িলেখ enter চেপ তারপর 12 িলেখ আবার enter চাপেত
পারেবা। আর outputএর অংশ আেগর মেতাই হেব, কােজই আমরা সটা আর দখাি না।
length & width are ? 13 12

১৩.৩ Value Assignment (মান আেরাপণ)


Programএ ( মেলখ) variable িনেয় তােত value assign করেল আসেল কী ঘেট? আবার
Variableএ একটা মান আেগ থেক আেছই, এমতাব ায় আেরকটা value assign করেল কী
ঘেট? একটা variable থেক আেরকটা variableএ value assign করেলই বা কী ঘেট?
i n t amar ;
i n t tomar = 5 ;

5g
উপের আমরা েটা variable declare (চলক ঘাষনা) করলাম: একটার নাম amar আর
আেরকটার নাম tomar, েটাই int ধরেনর অথাৎ পূণক, একটােত initial value (আিদমান)
িদেয় িদলাম আর একটােত িদলাম না। আমরা যখন variable declare কির তখন আসেল আম-
রা computerএর (গণিন) memoryেত ( রিন) িকছু জায়গা দখল কির। ধের িনেত পােরা
memory হল একটা রা ার পােশ অেনক েলা একই রকম বাড়ী। কান variable declare
in
করার সময় আমরা আসেল ওই বাড়ী েলার একটা দখল কের সই বাড়ীটার নাম িদেয় দই আমা-
দর variableএর নােম। তামরা িন য় দেখেছা অেনেকরই বাড়ীর নাম থােক যমন "শাি
নীড়"। আমােদর varaible বাড়ী েলার নাম amar ও tomar। তা আমরা যখন উপেরর -
am

টা variable declare করলাম তখন memoryেত ওই রকম েটা জায়গা িনেয় তােদর নাম
িদেয় িদলাম amar আর tomar। এখন কথা হে memoryেত ( রিণ) ওই জায়গায় আমরা
আসেল রাখেবা কী? উ রটােতা সহজ আমরা রাখেবা variableিটর মান। যখন আমরা initial
value িদেয় িদলাম তখন ওই জায়গােত আমােদর দয়া মানটা থাকেব, আর যখন initial value
িদেবা না, তখনও ওই জায়গািটেত আেগ থেক যাই িছল তাই থাকেব।
amar = tomar ;
al

এবার আমরা যিদ উপেরর মেতা কের tomar এর মান amar এ assign কির তাহেল কী
ঘটেব? আসেল উপেরর এই statement (িববৃিত) চালােনার পের amar এর আেগর মান মুেছ
িগেয় সটার নতুন মান হেয় যােব tomar এর মােনর সমান অথাৎ amar এর মানও হেব 5।
এখােন একটা পূণ িবষয় বেল রাখেত হেব য এই য tomar থেক amar এ মান assign
করা হেলা এেত িক tomar এর মােন কান পিরবতন হেব না। অথাৎ tomar এর মান আেগর
মেতা 5-ই থাকেব। Assignmentএ (আেরাপণ) সমান িচে র বােম যা থােক সটােক target
(ল ) আর ডােন যটা থােক সটােক source (উৎস) বলা হয়, কারণ source থেক মান িনেয়
targetএ assign করা হয়। উপেরর assignmentএ amar = িচে র বােম তাই এিট target
আর tomar ডানপােশ তাই এিট source। Assignmentএর ফেল targetএর মান বদেল িক
sourceএর মান বদেল না, একই থােক।
উপেরর program ( মেলখ) আর output (ফলন) ল কেরা। আমরা থেম variable
x declare কের তার initial value (আিদ মান) িদেয়িছ 3, তারপর variable y declare কের
তার initial value িদেয়িছ x+5 অথাৎ 3 + 5 = 8। এই পযােয় output দখােনা হেয়েছ x
আর y েটার মােনরই। Outputএ আমরা দখেত পাি x 3 y 8। তারপর programএ

২৬৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৪. Value Swapping (মান অদল-বদল)

আমরা িলেখিছ x = y ∗ 3; ফেল x এর মান হেব এখন 8 ∗ 3 = 24, আর y এর মান িক


একই থাকেব, কারণ y এর মান আমরা কবল ব বহার কেরিছ, y এ তা কান মান assign কির
নাই। Programএ পেরর statementএ (িববৃিত) আমরা x ও y এর তখনকার মান দিখেয়িছ,
Outputএ সটা িঠকই x 24 y 8 দখাে । Programএ এরপেরর বােক আমরা আবার x
এ মান assign কেরিছ x = y + 3 ∗ 4; তা এর ফেল আেগর মেতাই y এর মান বদল হেব
না, িক x এর নতুন মান হেয় যােব 8 + 3 ∗ 4 = 20, যা পেরর cout এর মাধ েম outputএ
িঠকই দখােনা হেয়েছ x 20 y 8। Programএ এরপর আমরা দিখ y = x ∗ 2; এর ফেল y
এর নতুন মান হেব y = 20 ∗ 2 = 40, আর x এর মান এবার আেগ যা িছেলা তাই থাকেব, কারণ
x এর মান কবল ব বহার করা হেয়েছ, x এ কান মান assign করা হয় িন।
int x = 3 ; / / i n i t i a l value a s s i g n আিদ মান আেরাপ
i n t y = x + 5 ; / / i n i t i a l value a s s i g n আিদ মান আেরাপ
cout << " x " << x << " y " << y << endl ; / / মান দখাও

x = y ∗ 3; / / a s s i g n value again পুনরায় মান আেরাপ

5g
cout << " x " << x << " y " << y << endl ; / / মান দখাও

x = y + 3 ∗ 4 ; / / a s s i g n value again পুনরায় মান আেরাপ


cout << " x " << x << " y " << y << endl ; / / মান দখাও
in
y = x ∗ 2; / / a s s i g n value again পুনরায় মান আেরাপ
cout << " x " << x << " y " << y << endl ; / / মান দখাও
am

ফলন (output)
x 3 y 8
x 24 y 8
x 20 y 8
x 20 y 40
al

সবিমিলেয় একটা িবষয় দখা যাে assignmentএ (আেরাপণ) = িচে র বােমর target
variableএর (ল চলক) মান কবল পিরবতন হয়, আর = িচে র ডােন থাকা variable
(চলক) বা expressionএর (রািশ) এর মান কান পিরবতন হয় না। আেরকিট ব াপার হেলা
কান variableএ পের কান নতুন মান assign না হওয়া পয আেগরবার য মান assign করা
হেয়িছল সটাই থােক।

১৩.৪ Value Swapping (মান অদল-বদল)


ধেরা তামার েটা variable (চলক) আেছ x আর y আর তােদর মান যথা েম 12 ও 13। তা
তামােক এমন িকছু statement িলখেত হেব যােত ওই statement েলা চালােনার (run)
পের আমরা x আর y এর মান যথা েম 13 আর 12 পাই অথাৎ মান েটা অদল-বদল হেয় যায়।
i n t x = 12 ; / / x এর মান a s s i g n করা হেলা
i n t y = 13 ; / / y এর মান a s s i g n করা হেলা

২৬৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৪. Value Swapping (মান অদল-বদল)

উপের আমরা কবল variable x আর y declare কের তােদর initial value িহসােব 12
ও 13 িদেয় িদলাম। এখন আমরা এমন িকছু করেবা যােত x আর y মান swap হেয় যায়। থেমই
আমরা একটা চটুল সমাধান কির। তামােদর মেধ যারা ু ধরেনর আর চটপেট তারা সাধারণত
এই সমাধানিট করেত চাইেব। নীেচর িববৃিত েটা ল কেরা: আমরা ফ x এর মেধ সরাসির
13 assign কেরিছ আর y এর মেধ 12 assign কেরিছ। ব স হেয় গল x আর y এর মান অদল-
বদল! আসেল আমরা কী এইেট চেয়িছলাম? এখােন তা variable েটার মেধ একটা থেক
আেরকটােত মান নয়ার মেতা কান ঘটনা ঘেট িন, কােজই কান অদল বদেলর িকছু ঘেট িন!
x = 13 ; / / x এর মান a s s i g n করা হেলা
y = 12 ; / / y এর মান a s s i g n করা হেলা

অদল-বদল বুঝার জ িচ া কেরা তামার িট পয়ালা আেছ: কাঁেচর পয়ালা আর কাঁসার


পয়ালা। কাঁেচর পয়ালায় আেছ আঙুেরর রস আর কাঁসার পয়ালায় কমলার রস। এখন তুিম এই
পয়ালা েটােত থাকা ফেলর রস অদল-বদল করেত চাও যােত কাঁেচর পয়ালায় থােক কমলার রস
আর কাঁসার পয়ালায় থােক আঙুেরর রস। তা এখন তুিম কী করেব। তুিম তা আর সরাসির এক-
টার ফেলর রস আেরকটােত ঢেল িদেত পােরা না। তামােক যটা করেত হেব তা হেলা আেরকটা

5g
পয়ালা নয়া। ধেরা সটা কােঠর পয়ালা। এই কােঠর পয়ালািট তুিম একটা থেক আেরকটােত
ঢালাঢািলর কােজ ব বহার করেব। তাহেল এই অিতির কােঠর পয়ালা কােজ লািগেয় কীভােব
তামার কাঁচ আর কাঁসার পয়ালার ফেলর রস অদল-বদল করা যায়, আমরা নীেচ তা দিখ।
in
১. একদম েত কাঁেচর পয়ালায় রেয়েছ আমােদর আঙুেরর রস আর কােঠর পয়ালা খািল।
তরাং কাঁেচর পয়ালা থেক আঙুেরর রস কােঠর পয়ালায় ঢােলা। ফেল কােঠর পয়ালায়
থাকেলা আঙুেরর রস আর কাঁেচর পয়ালা খািল হেয় গেলা।
am

২. কাঁেচর পয়ালা যেহতু এখন খািল আর কাঁসার পয়ালায় আেছ কমলার রস, আমরা তাই
কাঁসার পয়ালার কমলার রস কাঁেচর পয়ালায় ঢালেবা। ফেল কাঁেচর পয়ালায় থাকেলা
কমলার রস আর কাঁসার পয়ালা খািল হেয় গেলা।

৩. কাঁসার পয়ালা যেহতু এখন খািল আর কােঠর পয়লায় আেছ আঙুেরর রস, আমরা তাই
কােঠর পয়ালার আঙুেরর রস কাঁসার পয়ালায় ঢালেবা। ফেল কাঁসার পয়ালায় থাকেলা
al

আঙুেরর রস আর কােঠর পয়ালা খািল হেয় গেলা।

উপেরর ধাপ িতনিট স করেলই আমােদর এক পয়ালার ফেলর রস আেরক পয়ালায়


অদল-বদল হেয় যােব। তা পয়ালা েটার রস অদল-বদেলর মেতাই আসেল আমােদর variable
েটার মান অদল-বদল করেত হেব। একটা অিতির পয়ালার মেতা আমােদর এখােনও লাগেব
একটা অিতির variable (চলক)। ধের নই আমােদর সই অিতির variable হেলা z। আম-
রা তাহেল এই অিতির variable কােজ লািগেয় আমােদর x আর y variable েটার value
swap (মান অদল-বদল) কের ফিল।
z = x; / / z হেলা 12 আর x আেছ 12 , y আেছ 13
x = y; / / x হেলা 13 আর y আেছ 13 , z আেছ 12
y = z; / / y হেলা 12 আর z আেছ 12 , x আেছ 13

তা উপেরর িতনিট statement চালােলই আমােদর x আর y variable েটার মান অদল-


বদল হেয় গেলা। তেব পয়ালা আর ফেলর রেসর অদল বদেলর সােথ variable আর valueএর
অদল-বদেলর িক িকছুটা তফাৎ আেছ। তফাৎটা হেলা ফেলর রস এক পয়ালা থেক আেরক

২৬৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৫. Assignment Left and Right (আেরাপেণর বাম ও ডান)

পয়ালয় ঢালেল যটা থেক ঢালা হেলা সই পয়ালা খািল হেয় যায়। িক variableএর ে z
= x; করেল variable xএর মান variable zএ assign হয় িঠকই, িক variable x িকছুেতই
খািল হয় না, বরং তার য মান িছেলা সটাই থােক। Variableএর মান বদেল যায় কবল যখন
এেত নতুন মান assign করা হয়।

১৩.৫ Assignment Left and Right (আেরাপেণর বাম ও ডান)

কান variableএর (চলক) l-value (বাম-মান) ও r-value (ডান-মান) বলেত কী বুেঝা? কান
variableএ মান assign করেত গেল আমরা assignment (আেরাপণ) = িচ িদেয় বােম
ও ডােন িকছু িলিখ যমন y = x;। এখােন বােমরিটেক বলা হয় target (ল ) আর ডােনরিট-
ক বলা হয় source (উৎস)। Assignmentএর (আেরাপণ) ফেল ডান পােশর source থ-
ক মান বাম পােশর targetএ assign হয়। কথা হে assignment = িচে র বােম আমরা
কী কী িদেত পারেবা বা পারেবা না, আর ডােনই বা কী কী িদেত পারেবা বা পারেবা না? তাছা-

5g
ড়া একটা variableএর নাম assignment = িচে র বাম বা ডানপােশ িলখেল এই ই ে
variableএর ভুিমকায় আসেল কান তফাৎ হয় িকনা?
এই আেলাচনায় যাওয়ার আেগ আমরা একটু পেরর উ ৃতাংশটু িবেবচনা কির। "ঢাকার মামা
হািলম িবখ াত। চল আমরা মামা হািলম খাই। তুিম খােব এক বািট, আিম খাব এক বািট। আমার
বািটটা পির ার নয়, তামার বািটটা পির ার।" তা এইখােন বািট মােন কখন আসেল হািলম
in
আর কখন আসেল সটা পা ? আমরা বুঝেত পাির "তুিম খােব এক বািট, আিম খাব এক বািট"
এই কথা েলােত বািট বলেত আসেল সিত সিত পা টােক কামেড় কামেড় খাওয়ার কথা বলা
হে না, বরং তুিম এক বািট পিরমান হািলম খােব আর আিম এক বািট পিরমান হািলম খােবা
am

তাই বুঝােনা হে । এক বািট হািলম মােন একটা বািটেত থাকা হািলম। িবষয় েলােক চলক আর
তার মােনর সােথ িমলাও। বািট িঠক যন চলেকর মেতা আর হািলম হল তার মােনর মেতা। আবার
"আমার বািটটা পির ার নয়, তামার বািটটা পির ার।" এই অংেশ বািট মােন আসেল বািট নােমর
পা টা, সই পাে ঢালা হািলম নয় কান ভােবই। তাহেল দখা যাে বািট বলেত কখেনা কখেনা
আসেল পা টােক বুঝােনা হয় আর কখেনা কখেনা পা টােত থাকা হািলমেক বুঝােনা হয়। একই
ভােব variableএর নাম উে খ করেল কখেনা কখেনা variableিটর মানেক বুঝােনা হয়, কখেনা
al

কখেনা আসেল varaibleিটর জ memoryেত ( রিণ) বরা জায়গাটু বুঝােনা হয়।

x = 3; এখােন variable x বলেত আমরা আসেল variable x এর জ memoryেত ( রিন)


নয়া জায়গাটু বুিঝ যখােন মান 3 ক রাখা হেব। এখােন কান ভােবই variable x এ
আেগ থেক িবদ মান মানেক বুঝােনা হে না। খয়াল কেরা এখােন variable x assign
= িচে র বাম পােশ আেছ। যখন variable x আসেল memoryেত বরা কৃত জায়গােক
বুঝায় তখন এটােক আমরা ফ variable না বেল আেরা কের বলেবা varaibleএর
l-value (বাম-মান)। তাহেল মেন রেখা variableএর l-value িদেয় আমরা বুঝােবা
variableএর জ memoryেত নয়া জায়গাটু ।

y = x; এখােন variable y বলেত আমরা variable y এর জ memoryেত বরা পাওয়া জা-


য়গাটু েক বুিঝ। আর variable y assign = িচে র বােম আেছ তাই এখােন variable
y এর বাম-মান ব ব ত হেয়েছ। তেব variable x বলেত এখােন আমরা কবল তার মা-
নটােক বুিঝ। খয়াল কেরা variable x এর মানটাইেতা variable y এর memoryএর
জায়গাটােত জমা হেব, variable x এর জ বরা জায়গােতা আর িগেয় variable y

২৬৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৬. Self-Referential Assignment (আ -শরন আেরাপণ)

এর জায়গায় লখা হেব না। আমরা দখিছ এখােন variable x আেরাপ = িচে র ডা-
ন রেয়েছ। যখন variable x আসেল তার মানটােক বুঝায় তখন আমরা এটােক বলব
variable r-value (ডান-মান)। Variableএর r-value িদেয় আমরা তাহেল বুঝােবা
variableএর য মান সিটেক, memoryেত থাকা জায়গািটেক নয়।

উপেরর আেলাচনা থেক আমরা একটা িবষয়ই পির ার করেত চেয়িছ সটা হেলা, আেরাপ
= িচে র বােম আমরা কবল এমন িকছু িদেত পারেবা যার জ memoryেত জায়গা দখল করা
আেছ, অথাৎ যার l-value (বাম-মান) আেছ। আর assign িচে র ডান পােশ আমরা এমন িকছু
িদেত পারেবা যার মান আেছ অথাৎ r-value (ডান-মান) আেছ। একটা িবষয় খয়াল কেরা যার
l-value আেছ অথাৎ memoryেত যার জায়গা আেছ তার একটা মানও থাকেবই অথাৎ তার
r-value থাকেবই, যমন য কান variableএর। কথা হে এমন িকছু িক আেছ যার r-value
আেছ িক l-value নাই। উ র ধের িনেত পােরা আেছ। যমন x = 3; এইখােন 3 এর r-value
আেছ িক l-value নাই। কােজই কউ চাইেল 3 = x; িলখেত পারেব না, compile (সংক-
লন) করার সময় error দখােব, বলেব "error: lvalue required as left operand of
assignment"। একই ভােব কউ চাইেল assignment িহসােব y+3 = x;ও িলখেত পারেব

5g
না, একই error ( িট) দখােব, কারণ variable y এর l-value স ব হেলও y + 3 করেল
ওইটা আর variable y থােক না হেয় যায় একটা expressioni (রািশ) যার মান হেব y এর মান
যাগ 3, কােজই সটার কবল মান থােক, তার জ memoryেত কান জায়গা থােক না। বুঝাই
যাে অ িদেক assignment িহসােব x = y + 3; িলখা যােব কারণ y + 3 এর r-value
আেছ অপর িদেক variable x এর l-value আেছ।
in
১৩.৬ Self-Referential Assignment (আ -শরন আেরাপণ)
am

Program ( মেলখ) দখেল আমােদর সাধারণত x = x + 1; বা এই জাতীয় অ ুত িকছু িবষয়


নজের আেস। মুল কথা হেলা এই সব ে একই variable (চলক) assignment (আেরাপ)
= িচে র বােমও রেয়েছ আবার ডােনও রেয়েছ। আমরা সকেল গিণত জািন কম বা বশী। সখােন
সমীকরণ িনেয় আমােদর য ধারনা আেছ সই অ যায়ী তা x কখেনা x + 1 এর সমান হেত পাের
না। তাহেল programএ x = x + 1; এর মেতা অথহীন িবষয় কন থােক?
al

x = x + 1; / / িচ = গিণেতর সমান িচ নয় , এিট গণনার আেরাপণ।

আসেল = িচ িট গিণেত আমরা ব বহার কির েটা সংখ া তুলনা কের যিদ দিখ তারা এেক
অপেরর সমান তাহেল। আমরা তাই ওটােক গিণেত equal (সমান) িচ বেল থািক। িক গণ-
নার জগেত = িচ িটেক সমান িচ িহসােব ব বহার না কের বরং assignment (আেরাপণ) িচ
িহসােব ব বহার করা হয়। কােজই কান programএ আমরা যখন x = x + 1; দিখ তখন আস-
ল ওটা কান ভােবই গিণেতর সমীকরণ নয়, বরং ওইটা গণনার জগেতর assignment। তরাং
গিণেতর জগেত ওইটা কান অথ তরী না করেলও গণনার জগেত ওটার িনিদ অথ আেছ।
আমরা assignment (আেরাপণ) িনেয় আেগই আেলাচনা কেরিছ। ওই assignment -
লার সব েলােত বাম ও ডান উভয় পােশ variable থাকেলও আলাদা আলাদা variable িছল।
আর x = x + 1ও assignment তেব এখােন একই variable assign িচে র বােমও আেছ
ডােনও আেছ। এইরকম assignment যখােন একই variable বােমও আেছ ডােনও আেছ
সটােক আমরা বলেবা self-referential assignment (আ শরন আেরাপণ) অথাৎ যখা-
ন একটা variable িনেজর মােনর জ িনেজরই শরনাপ হয়। Self-referential (আ -
শরণ) assignmentএ ডানপােশ variableিটর r-value (ডান-মান) ব ব ত হয়, আর বাম-

২৭০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৭. Exercise Problems (অ শীলনী সম া)

পােশ variableিটর l-value (বাম-মান) ব ব ত হয়। এই রকম assignmentএ আসেল কী


ঘেট?
int x = 3 ; / / চলক x এ আিদ মান আেরাপ করা হেলা
x = x + 1; / / এখােন আ −শরণ আেরাপণ করা হে
cout << x << endl ; / / চলক x এর মান ফলন দওয়া হে

এই রকম assignment বুঝেত গেল আমরা x = x + 1; statementিটেক ইিট ঘটনায়


িবভ কের িনেত পাির। একটা ঘটনা হল ডান পােশ x + 1 িহসাব করা অথাৎ x+1 এর মান বা
আেরা পির ার কের বলেল r-value িহসাব করা। আর অ ঘটনাটা হল বাম পােশ x এর l-value
অথাৎ memoryেত ( রিন) x এর জ বরা করা জায়গায় ডান পাশ থেক পাওয়া মানিট িলেখ
দওয়া। তা এই েটা ঘটনার থমিট আেগ ঘটেব আর ি তীয়িট পের ঘটেব। উপের আমরা x এর
initial value িনেয়িছ 3। এরপর যখন x= x+1; execute (িনবাহ) হেব তখন থম ঘটনািট
ঘটেব আেগ অথাৎ x + 1 মান িহসাব হেব। x এর মান যেহতু এই অব ায় 3 তাই x + 1 হেব
4। মেন কের দেখা এই 4 এর িক কবল r-value আেছ এর জ memoryেত কান জায়গা

5g
দখল করা নই বা এর কান l-value নই। অথাৎ এই 4 কান ভােবই x variableএর জায়গায়
নই, অ কাথাও আেছ। যাইেহাক এমতাব ায় এরপর ঘটেব ি তীয় ঘটনািট অথাৎ এই 4 মানিট
িগেয় লখা হেয় যােব x এর জ বরা জায়গােত। আমরা তাই x এর পুরেনা মান 3 বদেল সখােন
পােবা এর নতুন মান 4। তাহেল x = x + 1; self-referential assignmentএর (আ -শরণ
আেরাপণ) ফেল variableএর মান এক বেড় গেলা।
in
Self-referential assignmentএর আেরা নানান জিটল অব া আেছ যমন x = x ∗
3; বা x = x∗x + x + 1;। এ েলার িতিট ে আেগ ডানপােশর মান িহসাব করা হেব আর
তারপর সই মান বাম পােশ িলেখ দয়া হেব, ফেল variableিটেত নতুন একট মান থাকেব।
am

১৩.৭ Exercise Problems (অ শীলনী সম া)

Conceptual Questions: নীেচ িকছু conceptual রেয়েছ। েলার উ র িনেজ


িনেজ বর করেব।
al

১. সরাসির programএর ( মেলখ) িভতের data িদেয় িদেল সম া কী?

২. Data (উপা ) কেনা input ( যাগান) িনেত হেব? িবধা-অ িবধা কী কী?

৩. Input prompt ( যাগান যাচনা) কী? Input নয়ার আেগ কন prompt করা উিচৎ?

৪. Variableএ (চলক) মান assignmentএ source ও targetএ কী ঘেট বণনা কেরা।

৫. Variableএর l-value আর r-value বলেত কী বুেঝা? উদাহরণ িদেয় ব াখ া কেরা।

৬. Assignmentএ = িচে র বােম কন এমন িকছু দয়া যায় না যার কবল r-value আেছ?

৭. Self-referential (আ -শরণ) assignment কী উদাহরণ সহ ব াখ া কেরা।

৮. িট variableএ (চলক) থাকা মান বদলাবদিল করেব কমেন ব াখ া কেরা।

২৭১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৭. Exercise Problems (অ শীলনী সম া)

Programming Problems: নীেচ আমরা িকছু programming সম া দখেবা। এই সম-


া েলা আেগ ধয ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না
বেল মেন হয় তখনই কবল সমাধান দেখ িনেত পােরা। সমাধান েলা programming -
লার শেষ আেছ।

১. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট পূণক (int) ও একিট ভ ক
(float) input ( যাগান) িনেয় স েলা আবার outputএ (ফলন) দখায়।

২. এমন একিট program ( মেলখ) রচনা কেরা যিট িট ভ ক (float) সংখ া input
( যাগান) িনেয় সংখ া িট ও তােদর যাগফল outputএ ফলন দখায়।

৩. এমন একিট program ( মেলখ) রচনা কেরা যিট িতনিট পূণক (int) input ( যাগান)
িনেয় তােদরেক য েম input নয়া হেয়েছ সই েম আবার উে া েম দখােব। যমন
ভু সংখ া িতনিট যিদ হয় পর পর 2 3 1 তাহল িসধা েম দখােব 2 3 1 আবার তােদর
উ া েম দখােব 1 3 2। খয়াল কেরা আমরা িক মােনর ম বলিছ না।

5g
৪. এমন একিট program ( মেলখ) রচনা কেরা যিট একদম িঠক িঠক নীেচর মেতা input
( যাগান) ও output (ফলন) উৎপ কের। তুিম িক পরী ার ন র েলা input িনেব,
আর আমরা এেককবার চালােনার সময় এক এক রকম সংখ া input িদেবা।
in
program to c a l c u l a t e r e s u l t
− − − − − − − − − − − − − −
number i n f i r s t exam? 90
number i n second exam? 75
am

number i n t h i r d exam? 91
− − − − − − − − − − − − − −
t o t a l number obtained 256
al

Programming Solutions: এবার আমরা programming সমাধান েলা দখেবা। মেন


রাখেব সমাধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন হয়,
তখন কবল একটু সাহায যােত পেত পােরা তাই। কােজই চ া করেব সমাধান না দখেত।

ধের িনই তুিম দরকারী header file (িশর নিথ) include করা, namespace
(নামাধার) std ব বহার করা, main functionএর skeleton লখা আর সটার
শেষ return EXIT SUCCESS; িলেখ মান ফরত দয়া ইত মেধ ভােলা কের
িশেখ ফেলেছা। তা তুিম যিদ নীেচ লখা program েলা compile (সংকলন)
কের চালােত (run) চাও, তামােক িক আেগ include, namespace, main,
return এ েলা িলেখ িনেত হেব, তারপর main functionএর িভতের return
এর আেগ তুিম আমােদর নীেচর অংশ েলা িলেখ িনেব। তারপর compile কের
program চালােব। আমরা এখন থেক মাটামুিট এইভােব program দখােবা।

১. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট পূণক (int) ও একিট ভ ক
(float) input ( যাগান) িনেয় স েলা আবার outputএ (ফলন) দখায়।

২৭২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৭. Exercise Problems (অ শীলনী সম া)

িফিরি ১৩.৩: যাগান ও ফলেনর মেলখ (Input Output Program)


in t integer ;
float fraction ;

cout << " i n t e g e r i s ? " ;


c i n >> i n t e g e r ;

cout << " f r a c t i o n i s ? " ;


c i n >> f r a c t i o n ;

cout << " puronok i s " << i n t e g e r << endl ;


cout << " f r a c t i o n i s " << f r a c t i o n << endl ;

২. এমন একিট program ( মেলখ) রচনা কেরা যিট িট ভ ক (float) সংখ া input

5g
( যাগান) িনেয় সংখ া িট ও তােদর যাগফল outputএ ফলন দখায়।

িফিরি ১৩.৪: Input Process Output ( যাগান িকয়ন ফলন)


f l o a t f i r s t , second ;
in
cout << "two numbers are ? " ;
c i n >> f i r s t >> second ;
am

f l o a t sum = f i r s t + second ;

cout << "two numbers are " ; / / কান endl নাই


cout << f i r s t << " " << second << endl ;

cout << " t h e i r sum i s " << sum << endl ;


al

৩. এমন একিট program ( মেলখ) রচনা কেরা যিট িতনিট পূণক (int) input ( যাগান)
িনেয় তােদরেক য েম input নয়া হেয়েছ সই েম আবার উে া েম দখােব। যমন
ভু সংখ া িতনিট যিদ হয় পর পর 2 3 1 তাহল িসধা েম দখােব 2 3 1 আবার তােদর
উ া েম দখােব 1 3 2। খয়াল কেরা আমরা িক মােনর ম বলিছ না।

িফিরি ১৩.৫: Input Order Reverse Order ( যাগােনর িসধা মউ া ম)


i n t f i r s t , second , t h i r d ;

cout << " three numbers are ? " ;


c i n >> f i r s t >> second >> t h i r d ;

cout << " given order " << f i r s t << " " ;
cout << second << " " << t h i r d << endl ;

২৭৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৭. Exercise Problems (অ শীলনী সম া)

cout << " reverse order " << t h i r d << " " ;
cout << second << " " << f i r s t << endl ;

৪. এমন একিট program ( মেলখ) রচনা কেরা যিট একদম িঠক িঠক নীেচর মেতা input
( যাগান) ও output (ফলন) উৎপ কের। তুিম িক পরী ার ন র েলা input িনেব,
আর আমরা এেককবার চালােনার সময় এক এক রকম সংখ া input িদেবা।
program to c a l c u l a t e r e s u l t
− − − − − − − − − − − − − −
number i n f i r s t exam? 90
number i n second exam? 75
number i n t h i r d exam? 91
− − − − − − − − − − − − − −
t o t a l number obtained 256

5g
ফলাফল processingএর programিট আমরা নীেচ দখাি ।

িফিরি ১৩.৬: Result Processing Program (ফলাফল ি য়ার


i n t f i r s t , second , t h i r d ;
মেলখ)
in
cout << " r e s u l t processing program " << endl ;

cout << "− − − − − − − − − − − − − −" << endl ;


am

cout << "number i n f i r s t exam? " ;


c i n >> f i r s t ;

cout << "number i n second exam? " ;


c i n >> second ;
al

cout << "number i n t h i r d exam? " ;


c i n >> t h i r d ;

cout << "− − − − − − − − − − − − − −" << endl ;

i n t sum = f i r s t + second + t h i r d ;

cout << " t o t a l number i s " ;


cout << sum << endl ;

২৭৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৩.৮. Computing Terminologies (গণনা পিরভাষা)

১৩.৮ Computing Terminologies (গণনা পিরভাষা)


• Formula (সূ ) • l-value (বাম-মান)

• Prompt (যাচনা) • r-value (ডান-মান)

• Swap (অদল-বদল) • Self-reference (আ -শরণ)

5g
in
am
al

২৭৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১৪

Mathematical Processing
(গািণিতক ি য়াকরণ)

5g
Mathematical processingএ expressionএ (রািশ) িবিভ operators (অণুি য়া) ও
functions (িবপাতক) কী ভােব িহসাব করা হয় আমােদর তা জানেত হেব।

১৪.১ Unary Operators (এিকক অণুি য়া)


in
িসিপিপেত unary (এিকক) operator positive (ধনা ক) + আর negative (ঋণা ক) −
কী ভােব কাজ কের? যথাযথ program িলেখ উদাহরণ সহ বুিঝেয় দাও। Unary (এিকক)
am

operator (অণুি য়ক) একটা operandএর (উপাদান) ওপর যু হেয় ফলাফল তরী কের।
িফিরি ১৪.১: Arithmetic Positive Negative (পািটগিণেতর ধনা ক ও ঋণা ক)
int a = 5; i n t const b = −9 ; / / a চলক b বক
cout << " +7 = " << +7 << " −7 = " << −7 << endl ;
cout << " +a = " << +a << " −a = " << −a << endl ;
al

cout << " +b = " << +b << " −b = " << −b << endl ;
cout << endl ;
cout << " + ( a∗b ) = " << + ( a∗b ) ; / / a∗b হল রািশ
cout << " −( a∗b ) = " << ( a∗b ) << endl ;
cout << " +abs ( b ) = " << +abs ( b ) ; / / abs ( ) িবপাতক
cout << " −abs ( b ) = " << −abs ( b ) << endl ;

ফলন (output)
+7 = 7 −7 = −7
+a = 5 −a = −5
+b = −9 −b = 9

+ ( a∗b ) = −45 −( a∗b ) = −45


+abs ( b ) = 9 −abs ( b ) = −9

২৭৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.২. Binary Operators ( িয়ক অণুি য়া)

কান number (সংখ া), variable (চলক), constant ( বক), function (িবপাতক),
বা expressionএর (রািশ) সামেন positive িচ থাকেল তার য মান সিটই থােক, িক
negative িচ থাকেল তার িচ বদেল যায় অথাৎ আেগ positive থাকেল পের negative
হেয় যায় আর আেগ negative থাকেল পের positive হেয় যায়। Variable ও constant
আেগই জােনা। Function (িবপাতক) হেলা এমন একটা িজিনস য িকছু input ( যাগান) িনেয়
িকছু output (ফলন) দয়। যমন cstdlib নামক header fileএ (িশর নিথ) abs(x) নােম
একটা function আেছ যিট একিট সংখ া input িনেয় তার িচ টু বাদ িদেয় কবল মানটু-
output িহসােব return কের। অথাৎ abs(3) হেলা 3 আবার abs(−3)ও 3। একই ভােব
abs(3.5) হেলা 3.5 আবার abs(−3.5)ও 3.5। expression (রািশ) হল সংখ া, constant,
variable, operator, function িমেল যখন একটা িজিনস তরী হয় যার মান িহসাব করা যায়
যমন 3 + x ∗ abs(y) একিট রািশ যখােন x আর y হল চলক।

১৪.২ Binary Operators ( িয়ক অণুি য়া)

5g
িসিপিপেত binary ( িয়ক) operator েলা যাগ +, িবেয়াগ −, ণ ∗, কী ভােব কাজ কের?
যথাযথ program িলেখ উদাহরণ সহ বুিঝেয় দাও। binary operator ( িয়ক অণুি য়ক)
েটা operandএর (উপাদান) ওপর যু হেয় ফলাফল উৎপ কের।

িফিরি ১৪.২: Arithmetic Plus Minus Times (পািটগিণেতর যাগ িবেয়াগ ণ)


in
cout << " 5 + 3 = " << 5 + 3 << endl ;
cout << " 5 . 1 + 3 = " << 5 . 1 + 3 << endl ;
cout << " 5 . 1 + 3 . 2 = " << 5 . 1 + 3 . 2 << endl ;
am

cout << endl ;

cout << " 5 − 3 = " << 5 − 3 << endl ;


cout << " 5 . 1 − 3 = " << 5 . 1 − 3 << endl ;
cout << " 5 . 1 − 3 . 2 = " << 5 . 1 − 3 . 2 << endl ;
cout << endl ;
al

cout << " 5 ∗ 3 = " << 5 ∗ 3 << endl ;


cout << " 5 . 1 ∗ 3 = " << 5 . 1 ∗ 3 << endl ;
cout << " 5 . 1 ∗ 3 . 2 = " << 5 . 1 ∗ 3 . 2 << endl ;
cout << endl ;

উপেরর program ( মেলখ) খয়াল কেরা। আর তার সােথ নীেচর output (ফলন) িমিল-
য় নাও। ল কেরা আমরা িতনিট কের যাগ, িবেয়াগ, আর ণ কেরিছ। যাগ, িবেয়াগ, বা ণ
আমরা ভােলাই জািন, নতুন কের শখার িকছু নাই। তেব একিট িবষয় খয়াল করেত হেব। সিট
হেলা data type কমন? আর এ কারেণই আমরা িতিট operatorএর (অণুি য়া) জে িত-
নিট কের উদাহরণ িনেয়িছ। িতিট operatorএর উদাহরণ েলার থম সািরেত খয়াল কেরা।
সখােন operand (উপাদান) িহসােব আমরা েটা পূণেকর যাগ, িবেয়াগ বা ণ কেরিছ, যমন
5 + 3, 5 − 3 আর 5 ∗ 3। ফলাফল িহসােব যা পেয়িছ তাও একিট পূণক, যমন 8, 2, আর 15।
এবার িতিট operatorএর জ তৃতীয় সািরেত খয়াল কেরা। সখােন operand (উপাদান)
িহসােব আমরা েটা ভ ক যাগ, িবেয়াগ বা ণ কেরিছ, যমন 5.1 + 3.2, 5.1 − 3.2 আর

২৭৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৩. Division and Remainder (ভাগফল ও ভাগেশষ)

5.1 ∗ 3.2। ফলাফল িহসােবও আমরা পেয়িছ একিট ভ ক যমন 8.3, 1.9, আর 16.32। তা-
রপর িতিট operatorএর জ ি তীয় সািরেত খয়াল কেরা। Operand িহসােব একিট ভ ক
ও একিট পূণক যাগ, িবেয়াগ বা ণ করা হেয়েছ যমন 5.1 + 3, 5.1 − 3, আর 5.1 ∗ 3।
আর ফলাফল এেসেছ একিট ভ ক যমন 8.1, 2.1, আর 15.3, য েলার কানিটই পূণক নয়।
Operand েটা একটা ভ ক হওয়ায় ফলাফলও ভ ক হেয় গেছ।

ফলন (output)
5 + 3 = 8
5.1 + 3 = 8.1
5.1 + 3.2 = 8.3

5 − 3 = 2
5.1 − 3 = 2.1
5.1 − 3.2 = 1.9

5 ∗ 3 = 15
5 . 1 ∗ 3 = 15 . 3
5 . 1 ∗ 3 . 2 = 16 . 32 5g
তাহেল উপেরর আেলাচনা থেক আমরা দখলাম কান operatorএর (অণুি য়া) যিদ িট
in
operandই (উপাদান) একরকম হয় তাহেল ফলাফলও সই রকমই হয়। যমন operand -
টাই int হেল ফলাফলও int; operand েটাই float হেল ফলাফলও float। আর যিদ েটা
operand রকম হয় যমন একিট পূণক বা int আর একিট ভ ক বা float তাহেল ফলাফল
am

হেব ভ ক বা float। গিণেত আমরা জািন পূণক সংখ া েলা একই সােথ ভ কও যমন 3 আসেল
3.0, িক একিট ভ ক িক পূণক নাও হেত পাের যমন 5.1 ভ ক িক এেক পূণক িহসােব লখা
স ব নয়। আর এ কারেণ কান operator (অণুি য়া) েয়ােগর পূেব operand (উপাদান)
েটা রকম হেল থেম পূণকিটেক িভতের িভতের ভ েক পা র কের নয়া হয়, আর তারপর
যাগ, িবেয়াগ বা ণ করা হয় েটােক ভ ক িহসােব িনেয়ই। এই য িভতের িভতের পূণকিট ভ েক
al

পা র করা হয় এটা এক রকেমর type casting (উপা কারা র)। Type casting িনেয়
আমরা পের আেরা িব ািরত জানেবা, আপাতত int থেক floatএ casting মেন রােখা।

১৪.৩ Division and Remainder (ভাগফল ও ভাগেশষ)


িসিপিপেত binary ( িয়ক) operator ভাগফল (division) ও ভাগেশষ (remainder) কী
ভােব কাজ কের? যথাযথ program িলেখ উদাহরণ সহ বুিঝেয় দাও। তুিম ইত মেধ জেনেছা
binary operator েটা operandএর (উপাদান) ওপর যু হেয় ফলাফল উৎপ কের।

িফিরি ১৪.৩: Arithmetic Division Operation (পািটগিণেতর ভাগফল অণুি য়া)


cout << " 13 / 5 = " << 13 / 5 << endl ;
cout << " 13 . 0 / 5 = " << 13 . 0 / 5 << endl ;
cout << " 13 / 5.0 = " << 13 / 5 . 0 << endl ;
cout << " 13 . 0 / 5.0 = " << 13 . 0 / 5 . 0 << endl ;

২৭৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৩. Division and Remainder (ভাগফল ও ভাগেশষ)

ভাগফেলর data type (উপা করণ) কমন হেব সই িনয়ম আসেল যাগ, িবেয়াগ, বা
েণর মেতা একই। যিদ েটা operandই (উপাদান) এক রকেমর হয় তাহেল ফলাফলও হেব
সই রকেমরই। িক operand েটার একিট যিদ হয় পূণক বা int আেরকিট ভ ক বা float
তাহেল ফলাফল হেব একিট ভ ক বা float। এখােনও িভতের িভতের int থেম float এ type
casting ( কারা র) হেয় যােব, ভােগর কাজিট হেব উপা casting হবার পের। Data type
casting ছাড়াও ভােগর ে ভাগেশষ থাকেব িক থাকেব না সটার একটা ব াপার আেছ।

ফলন (output)
13 / 5 = 2
13 . 0 / 5 = 2.6
13 / 5.0 = 2.6
13 . 0 / 5.0 = 2.6

উপেরর output ল কেরা, যিদ ভােগর operand েটার যেকান একিটও ভ ক হয়,
যমন শেষর িতন সাির, তাহেল িক ভাগেশেষর কান ব াপার থােক না, ফেল আমরা সে ে

3 অবিশ থােক। ভােগর ে আেরা একিট5g


ভাগফল পাই 2.6। িক ভােগর ে যিদ েটা operandই পূণক হয়, যমন থম সাির তাহেল
ভাগিট িক একটু আলাদা। যমন 13 / 5 করেল আমরা ফলাফল পাই 2 কারণ আমরা জািন এে -
পূণ িবষয় আেছ তা হেলা operandএর
পূণক েলা ধনা ক না ঋণা ক। কারণ ঋণা ক সংখ ার ভাগ একটু িবটেকেল হেত পাের। সব
িমিলেয় পূণ সংখ ার ভাগ আেরা িব ািরত কের আমরা ভাগেশেষর সােথ িমিলেয় নীেচ আেলাচনা
in
করেবা। তেব একটা কথা মেন রাখেব ভােগর ে যিদ ভাজক হয় যমন 13 / 0 তাহেল
তামার program চালােনার (run) সময় divide by zero বা িদেয় ভাগ নােম error
message ( িটবাতা) দিখেয় ব হেয় যােব। এই রকম error compileএর (সংকলন) সময়
am

ধরা পেড় না, কবল চালােনার (run) সময় বা িনবাহ (execute) করার সময় ধরা পেড়, তাই
এেদরেক বলা হয় run-time (চলা-কালীন) বা execution-time (িনবাহ-কালীন) error।

িফিরি ১৪.৪: Arithmetic Remainder Operation (পািটগিণেতর ভাগেশষ অণুি য়া)


cout << " 13 / 5 = " << 13 / 5 << " ";
cout << " 13 % 5 = " << 13 % 5 << endl ;
al

cout << " 13 / −5 = " << 13 / −5 << " ";


cout << " 13 % −5 = " << 13 % −5 << endl ;

cout << "−13 / 5 = " << −13 / 5 << " ";


cout << "−13 % 5 = " << −13 % 5 << endl ;

cout << "−13 / −5 = " << −13 / −5 << " ";


cout << "−13 % −5 = " << −13 % −5 << endl ;

// নীেচর সাির েলা সংকলন ( compile ) হেব না , ভ েক ভাগেশষ হয় না


// cout << " 13 . 0 % 5 = " << 13 . 0 % 5 << endl ;
// cout << " 13 . 0 % 5 . 0 = " << 13 . 0 % 5 . 0 << endl ;
// cout << " 13 . 0 / 5 . 0 = " << 13 . 0 / 5 . 0 << endl ;

২৮০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৩. Division and Remainder (ভাগফল ও ভাগেশষ)

যাইেহাক সবেশেষ আমরা ভাগেশষ (remainder) দিখ। ভােগর ে আমরা আেলাচনা


কেরিছ ভ ক বা float এর জ ভাগেশেষর কান ব াপার নই। কােজই ভাগেশষ operatorএর
(অণুি য়া) operand (উপাদান) েটার য কান একিটও যিদ ভ ক হয়, তাহেল ভাগেশষ মাটা-
মুিট অথহীন হেয় যায়। কােজই এমন িকছু আমােদর programএ ( মেলখ) িলখেল compile
(সংকলন) করার সময় error ( িট) আসেব। উপেরর programএর শেষর িতনিট সাির দখেত
পােরা য েলা comment (টীকা) িহসােব রাখা আেছ। ওই েলা comment না কের সামেনর
// হলােনা দাগ েটা তুেল িদেল programএর অংশ হেয় যােব, আর তখন compile (সংকলন)
করেল error ( িট) আসেব, কের দখেত পােরা।
একটা িবষয় খয়াল কেরেছা, এখােন আমরা িক commentএর (টীকা) হলােনা // িচ
েটার একরকেমর অপব বহার কেরিছ। উপেরর programএর শষ িতনিট সাির আসেল কান
ভােবই কৃত comment নয়। ও েলােতা বাংলায় বা ইংেরজীেত লখা নয়, ও েলা িসিপিপেত
লখা আর comment িচ তুেল িনেলই ও েলা programএর অংশ হেয় যােব সহেজই। তবু
কন এখােন আমরা ও েলােক commentএর িভতের রাখলাম? এটা আসেল একটা খুবই উপ-
কারী কৗশল। Commentএর িভতের রাখেল যেহতু সটা programএর িঠক অংশ থােক না,
compile হয় না, কান error আসার ব াপার নাই, আমরা তাই মােঝ মােঝ িকছু িকছু িসিপিপেত

5g
লখা অংশও commentএর িভতের রািখ। Program ( মেলখ) লখার সময় আমরা নানান
িকছু পরী া িনরী া কির, এভােব কির, ওভােব কির। তখন য অংশ েলা ওই সময় দরকার নাই,
চাইেল স েলা তা মুেছ ফলা যায়, িক মুেছ ফলেলই তা তামােক পের আবার ক কের িলখ-
ত হেত পাের। এমতাব ায় তুিম যিদ ওই অদরকারী অংশটু েত comment (টীকা) কের দাও,
in
ব স হেয় গেলা। কান ঝােমলা নাই, পের ওই অংশটু আবার দরকার হেলই uncomment
(টীকা তুেল) কের িদেব। কী চমৎকার কৗশল তাই না! আমরা সবাই এিট হরদম ব বহার কির।
এখন থেক এই কৗশল কােজ লাগােব, কমন!
am

ফলন (output)
13 / 5 = 2 13 % 5 = 3
13 / −5 = −2 13 % −5 = 3
−13 / 5 = −2 −13 % 5 = −3
−13 / −5 = 2 −13 % −5 = −3
al

এবাের ভাগেশেষর ফলাফেলর িদেক নজর দই। ভাগফল সহ আেলাচনার িবধার জ উপ-
রর program ( মেলখ) আর outputএ (ফলন) আমরা ভাগেশেষর সােথ সােথ ভাগফলও
দিখেয়িছ। আমরা আেগই আেলাচনা কেরিছ ভাগেশষ করা যায় কবল পূণেকর জ । ভাগ করেল
যা অবেশষ থােক তাই ভাগেশষ। িক পূণক তা ধনা কও (positive) হেত পাের, ঋণা কও
(negative) হেত পাের। আসেল ঋণা ক সংখ ার ভাগেশষ িনেয়ই যেতা জিটলতা সৃি হয়। ঋণা-
ক সংখ ার ভাগেশষ িনেয় নানান রকম িনয়ম আেছ, আমরা এখােন আেলাচনা করিছ cpp.sh এ
য িনয়েম ভাগেশষ হয়, সটা িনেয়। তুিম য compiler (সংকলক) িদেয় program compile
(সংকলন) করেব, জেন িনও সখােন কমন হয়। কােরা কােছ থেক জেন িনেত পােরা। অথবা
িনেজই উপেরর program ( মেলখ) এর মেতা কের program তরী কের চািলেয় দেখ িনেত
পােরা। তমন কিঠন িকছু নয়।
যাইেহাক উপেরর output খয়াল কেরা। সখােন িক কান ভ ক নই, সব েলাই পূণক,
তেব ধনা ক ও ঋণা ক আেছ। খয়াল কেরা ভাগফল ও ভাগেশষ উভয় ে মানটা িঠক পা-
ওয়া যায় িচ িবেবচনা না করেল। যমন চারটা ব াপােরর সব েলােতই িচ বাদ িদেল ভাজক
(divisor) আর ভাজ (dividend) হয় কবল 5 আর 13। 13 ক 5 িদেয় ভাগ করেল ভাগফল হয়
2 আর ভাগেশষ হয় 3। এই পয সব েলা ব াপােরই িঠক আেছ, িক গালমাল বাঁেধ কবল িচ

২৮১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৪. Assignment Operator (আেরাপণ অণুি য়া)

িনেয়, ভাগফল বা ভাগেশষ কখন ধনা ক + হেব আর কখন ঋণা ক − হেব। ভাগফেলর ে
খয়াল কেরা যখনই সংখ া েটার িচ একই রকম তখন ভাগফল ধনা ক যমন থম ও চতুথ
সাির, আর যখনই তারা িবপরীত িচে র তখনই ভাগফল ঋণা ক যমন ি তীয় ও তৃতীয় সাির।
ভাগেশেষর ে িচ িনভর কের ভাজ (dividend) এর ওপর, ভাজেকর ওপর নয়। ভাজ যখ-
নই ধনা ক যমন 13, ভাগেশষ তখন ধনা ক + হেয়েছ। আর ভাজ যখন ঋণা ক যমন −13
তখন ভাগেশষ ঋণা ক − হেয়েছ। ভাগেশেষর িচ 5 বা −5 এর িচে র ওপর িনভর কের নাই।
একটা িবষয় আেগই বেলিছ, ভাগফল ও ভাগেশেষর ে ভাজক যিদ হয় তাহেল তামার
program চালােনার সময় divide by zero বা িদেয় ভাগ নােম error message দিখ-
য় ব হেয় যােব। এই রকম error compileএর (সংকলন) সময় ধরা পেড় না, কবল চালােনার
(run) সময় ধরা পেড়, তাই এেদরেক বলা হয় run-time error (চলা-কালীন িট)।
উপেরর উদাহরণ েলােত আমরা যিদও কবল সংখ াই সরাসির ব বহার কেরিছ, তুিম িক-
চাইেল কান variable (চলক) বা constant ( বক) ব বহার করেত পারেত। তুিম চাইেল
কান expression (রািশ) বা functionও (িবপাতক) ব বহার করেত পারেত। আসেল r-value
(ডান-মান) আেছ এরকম য কান িকছুই এখােন ব বহার করা যেত পাের। এই আেলাচনা েলা
unary operatorএর সময়ই আেলাচনা করা হেয়েছ, তবুও আবার বিল। function (িবপা-

5g
তক) এমন একটা িজিনস য িকছু input ( যাগান) িনেয় িকছু output (ফলন) দয়। যমন
cstdlib নামক header fileএ (িশর নিথ) abs(x) নােম একটা function আেছ যিট এক-
িট সংখ া input িনেয় তার িচ টু বাদ িদেয় কবল মানটু output িহসােব return কের।
অথাৎ abs(3) হেলা 3 আবার abs(−3)ও 3। একই ভােব abs(3.5) হেলা 3.5 আবার abs
in
(−3.5)ও 3.5। expression (রািশ) হল number, constant, variable, operator,
function িমেল যখন একটা িকছু তরী করা হয় যার মান আেছ সিট, যমন 3 + x ∗ abs(
y) একিট expression যখােন x আর y হল variable।
am

i n t a = 4 , b = −3 ;
i n t const c = 5 ;

a + 3, c / b, b ∗ c; / / চলক , বক , সংখ া
a = c % abs ( b ) ; / / abs ( b ) হল িবপাতক
a = a − ( b ∗ c) ; / / b ∗ c হল রািশ
al

১৪.৪ Assignment Operator (আেরাপণ অণুি য়া)


Assignmentএ (আেরাপণ) variableএর জ memoryেত ( রিণ) বরা কৃত ােন মান
ভের দয়ার ব াপারটা আমরা আেগ দেখিছ। িক assignment আসেল একটা operatorও
(অণুি য়া) বেট। Assignment একটা operator এই কথার মােন কী? আমরা assignment
িনয়া কী কী করেত পারেবা?
Assignment (আেরাপণ) িনেজও একটা operator (অণুি য়া) এই কথার মােন হেলা
assignment িকছু operandএর (উপাদান) ওপর যু হেয় একিট ফলাফল উৎপ কের।
সিত বলেত গেল যাগ, িবেয়াগ, ণ বা ভােগর মেতা assignmentও আসেল একটা binary
( িয়ক) operator। কােজই এিট িট operandএর (উপাদান) ওপর যু হয়। খয়াল কেরা
Assignmentএর বাম পােশ একটা operand থােক যার l-value থাকেত হেব অথাৎ যার জ
memoryেত ( রিণ) জায়গা বরা থাকেত হেব, যমন variable। আর assignmentএর ডা-

২৮২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৪. Assignment Operator (আেরাপণ অণুি য়া)

ন থাকেত হেব এমন িকছু যার r-value বা মান আেছ, যমন variable (চলক), constant ( -
বক), function (িবপাতক) বা expression (রািশ)। কথা হে assignmentএর ফেল উৎ-
প হওয়া ফলাফলটা কী? আসেল য মানিট assignmentএর বামপােশর variableএ assign
হয় সই মানিটই assignment operatorএর ফলাফল িহসােবও িবেবচনা করা হয়।
int v = 3 , w = −5 , x , y , z ; / / ভ কও নয়া যেত পাের
x = v + 5; / / চলক x এর মান 8 , আেরাপেণর ফলাফলও 8
y = abs (w) ; / / চলক y এর মান 5 , আেরাপেণর ফলাফলও 5
z = x + y; / / চলক z এর মান 13 , আেরাপেণর ফলাফলও 13

উপের programএ v + 5 বা 3 + 5 অথাৎ 8 assign হেয়েছ x এ। তারপর, abs(w)


function w বা −5 এর মান হেত িচ ছাড়া 5 ফরত িদেয়েছ যা assign হেয়েছ y variableএ।
আর শেষ x + y বা 8 + 5 অথাৎ 13 assign হেয়েছ z variableএ।
তাহেল অ া operatorএর মেতা assignment operatorএরও যেহতু একিট ফলা-
ফল আেছ কােজই সই ফলাফলিট অ কান varaible যার l-value আেছ তােত আবারও
assignment করা স ব!
int
x =
z =
v = 3, w =
( v + w) ; / /
(y = x) ; //
5g
−5 , x , y , z ; / / ভ কও নয়া যেত পাের
যাগ অণুি য়ার ফলাফল একিট চলেক আেরাপণ
ডােনর আেরাপেণর ফলাফল বােমরিটেত আেরাপণ
in
z = v ∗ w; / / ণ আেগ হেব , ণফল আেরাপণ তারপের হেব
z = y = x; // ডােনর আেরাপন আেগ , সই ফল িনেয় বােমর আেরাপন

তরাং কউ যমন অেনক েলা যাগ পরপর িলখেত পাের x + y + z + 3, িঠক তমিন
am

চাইেলই কউ অেনক েলা assignmentও (আেরাপণ) পরপর িলখেত পাের যমন z = y = x


= w। তেব কান ব নী নাই ধের িনেল, যােগর ে সাধারণত সবেচেয় বােমর যাগিট থেক
হেয় যাগ েলা পরপর বাম থেক ডােন এেক এেক হেত থােক। আর assignmentএর
(আেরাপণ) ে সবেচেয় ডােনর assignment হেত কের assignment েলা ডান থেক
বােম এেক এেক হেত থােক।
al

int x = 1 , y = 2 ; z = 3 ; / / আিদ মান আেরাপণ

x + ( y = 3) ; / / y হেলা 3 , ফলাফল 1 + 3 বা 4
y = x + ( z = 4 ) ; / / z হেলা 4 , y হেলা 1 + 4 বা 5
z = 5 + ( y = z −3 ) ; / / y হেলা 4 − 3 বা 1 , z হেলা 5 + 1

উপেরর উদাহরেণর শষ িতনিট সাির খয়াল কেরা। Variable declareএর পেরর সািরর
statementএ (িববৃিত) x + (y = 3) ; থেম ব নীর িভতের y এর মান 3 assign (আেরাপণ)
হেব আর assignmentএর (আেরাপণ) ফলাফলও হেব 3, যা x এর মান 1 সােথ যাগ হেয়
যাগফল হেব 4। এই 4 হেলা পুেরা রািশিটর মান। এরপেরর statementএ y = x + (z = 4) ;
থেম ব নীর িভতের z এর মান assign হেব 4 আর ফলাফল ও 4, আর তারপর 4 ও x এর মান 1
এর সােথ যাগ হেয় হেব 5 যা িগেয় y চলেক assign হেব। এবাের আিস শষ statementএ z
= 5 + (y = z −3); থেম ব নীর িভতের z − 3 িহসাব হেব, z এর মান িঠক আেগর সািরেত
হেয়েছ 4 সােথ 3 িবেয়াগ হেল হয় 1 যা y এ assign হেব আর assignmentএর ফলাফলও
(result) হেব 1। এরপর সই 1 আর 5 যাগ হেয় ফল হেব 6 যা z এর িভতের assign হেব।

২৮৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৫. Compound Assignment ( যৗিগক আেরাপণ)

১৪.৫ Compound Assignment ( যৗিগক আেরাপণ)

Compound assignment কী? িসিপিপেত compound assignment কী ভােব একিট


assignmentএর সােথ অ একিট operatorএর composition ( যাজন) ঘটায়? Self-
referential assignmentএর সােথ compound assignmentএর স ক কী?
Compound assignment হেলা assignmentএর সােথ আর একিট operatorএর
composition ( যাজন)। Assignment = এর সােথ যাগ + এর যাজন ঘটােনার ফেল নতুন
য operator তরী হয় সিট plus-assignment ( যাগ-আেরাপণ) +=। িঠক একই ভােব
assignment = ও িবেয়াগ − যু হেয় তরী হয় minus-assignment (িবেয়াগ-আেরাপণ)
−=, তারপর একই ভােব times-assignment ( ণ-আেরাপণ) ∗=, division-assignment
(ভাগফল-আেরাপণ) /= আর remainder-assignment (ভাগেশষ-আেরাপণ) %=।

x += 13 ; // এর মােন আসেল x = x + 13 ;
x −= 7; // এর মােন আসেল x = x − 7 ;
y
z
z
∗=
/=
%=
x;
x + y;
abs ( 3 ) ;
//
//
// 5g
এর মােন আসেল y = y ∗ x ;
এর মােন আসেল z = z / ( x + y ) ;
এর মােন আসেল z = z % abs ( 3 ) ;

তাহেল উপেরর উদাহরণ েলা থেক দখা যাে িতিট compund assignment আসেল
in
এক একিট self-referential assignment (আ -শরণ আেরাপন)। এখােন Compound
assignmentএর বাম পােশ য variableিট থােক সিটর মােনর সােথ সংি পািটগিণতীয়
operator যমন যাগ, িবেয়াগ, ণ, ভাগফল, বা ভাগেশষ িহসাব করা হয়, আর তারপর ফলাফ-
am

লিট ওই variableএই assign করা হয়। আসেল compund assignment েলা তরী করা
হেয়েছ program রচনার সময় ক িকি ত কমােনার জ । অেনক সময় assignmentএর বাম
পােশ যিট থাকেব সিট সহজ সরল variable না হেয় অ িকছু হেত পাের যিট হয়েতা খুবই
বড়, সিটর অব ই l-value (বাম-মান) আেছ অথাৎ তার জ memoryেত ( রিণ) জায়গা
দখল করা আেছ। যমন ধেরা নীেচর উদাহরেণ আমরা array (সাজন) ব বহার করিছ, class
( ণী) ব বহার করিছ, এ েলা কী এখনই তা জানেত চেয়া না, আমরা পের িব ািরত কের িশখ-
al

বা ও েলা। খািল খয়াল কেরা থম সািরেত কী ভােব ল া একটা িজিনস assign = িচে র
বাম ও ডান উভয় পােশই আেছ। আর খয়াল কেরা শেষর সািরর statementিট: compund
assignment ব বহার কের ওই একই িবষয় কত চমৎকার কের সংে েপ লখা গেছ।

t h i s−>amarSajonCholok [ suchok ] =
t h i s−>amarSajonCholok [ suchok ] + amarbriddhi ;

t h i s−>amarSajonCholok [ suchok ] += amarbriddhi ;

তাহেল দখেল তা একই িজিনস assign = িচে র বাম পােশ একবার আবার পর েণই
assign = িচে র ডানপােশও একবার িলখেত হেব, এিট বশ িবরি কর, আর দখেতও কত
িবরি কর লােগ। তারেচেয় compund assignment সংি আর বুঝাটাও সহজ। ফলাফেলর
িহসােব উভয় ে িক আমরা একই ফলাফল পােবা। তেব মেন রেখা program ( মেলখ)
চালােত সময় কম লাগেব নািক বশী লাগেব সইে ে িক compound assignmentএর
কান ভুিমকা নই।

২৮৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৬. Increment and Decrement ( াস ও বৃি অণুি য়া)

১৪.৬ Increment and Decrement ( াস ও বৃি অণুি য়া)

িসিপিপেত লখা programএ ( মেলখ) আমরা ++ বা −− ায়ই দখেত পাই। এই েলা কী?
একটা যাগ বা িবেয়াগ িচ দেখিছ িক েটা যাগ বা িবেয়াগ একসােথ তা আজব ব াপার!
েটা যাগ বা িবেয়াগ এক সােথ দয়ার িবধা-অ িবধা কী? Program িক এেত ত চেল?
int x = 6 , y ; / / েটা চলক একটার আিদমান আেছ , আেরকটার নাই
++x ; / / এক বেড় x হেলা 7 , y জািননা কারণ আিদমান নই
x++ ; / / এক বেড় x হেলা 8 , y জািননা কারণ আিদমান নই
y = ++x ; / / এক বেড় x হেলা 9 , তারপর y এ 9 আেরািপত হেলা
y = x++ ; / / থেম y হেলা x এর সমান বা 9 , পের x হেলা 10

উপেরর program ( মেলখ) খয়াল কেরা। েটা variable (চলক) নয়া হেয়েছ x আর
y। Variable x এর initial value (আিদমান) দয়া হেয়েছ 6, িক y এর initial value দয়া
হয় িন। এরপর ি তীয় আর তৃতীয় statementএ রেয়েছ ++x; আর x++;, খয়াল কেরা উভয়

5g
ে x এর মান এক কের বেড়েছ, এ কারেণ অব ++ ক বলা হয় increment operator
(বৃি অণুি য়ক)। Increment operator ++ variableএর আেগই দয়া হউক আর পেরই
দয়া হউক ফলাফল িক একই। অব increment ++ আেগ ব বহার করেল এিটেক pre-
increment (পূব-বৃি ) আর পের ব বহার করেল post-increment (উ র-বৃি ) বলা হয়।
in
তেব বেল রািখ increment operator (বৃি অণুি য়েকর) সােথ িক এমন িকছু ব ব-
হার করেত হেব যার l-value (বাম-মান) রেয়েছ অথাৎ memoryেত ( রিণ) জায়গা দখল করা
আেছ। Variableএর (চলক) যেহতু l-value আেছ তাই আমরা variable x ব বহার করেত
পারলাম। িক তুিম যিদ চাও ++3 বা 3++ িলখেব যােত 4 পাওয়া যায় অথবা িলখেব (x+3)++
am

বা ++(x+3), তা িলখেত পারেব না, compile (সংকলন) error হেব। Error হওয়ার কারণ 3
number (সংখ া) বা x+3 expressionএর (রািশ) r-value (ডান-মান) তথা value (মান)
আেছ িক তােদর l-value (বাম-মান) তথা memoryেত ( রিণ) জায়গা দখল করা নই। দর-
কার নই তবুও বেল রািখ, তুিম িক ++ এর সােথ variable x এর বদেল constant জাতীয়
িকছু তা এমিনেতই ব বহার করেত পারেব না, কারণ constantএর তা মান বদলােনা যায় না।
al

যাইেহাক ++ আেগই দই আর পেরই দই ++x বা x++ আসেল x+=1; অথাৎ x = x+1;


এর সমতুল এবং সংি প বলেত পােরা। ল কেরা incrementএ ++ য 1 বৃি ঘেট সই
ব াপারটা িক উ থােক। ফেল ++ কবল একটা operandএর (উপাদান) ওপর যু হয়
বেল মেন হয়। আর তাই ++ ক একিট unary (এিকক) operator (অণুি য়ক) বলা হয়। কথা
হে এই unary operatorএর ফলাফলটা কী? ফলাফল তা আমরা আেগই দেখিছ, মান এক
বেড় যাওয়া। সটা িঠক, িক তাছাড়াও increment operatorএর (বৃি অণুি য়া) ফলাফেল
িকছু পূণ িবষয় আেছ য কারেণ pre-increment (পূব-বৃি ) আর post-increment
(উ র-বৃি ) এেকর থেক অে বশ খািনকটা আলাদা।
Pre-increment (পূব-বৃি ) আর post-increment (উ র বৃি ) য আলাদা তা পির ার
হেব উপেরর programএর ( মেলখ) শেষর সাির েটা দখেল। যখন y = ++x; করা হেয়েছ
তখন x এর মান আেগ বেড় হেয়েছ 9 আর তারপর xএর সই বেড় যাওয়া মান 9ই y এ assign
(আেরাপ) হেয়েছ। িক যখন y = x++; তখন িক খয়াল কেরা আেগ x এর মান y এ assign
হেয়েছ ফেল y হেয়েছ 9 আর তারপর x এর মান বেড়েছ 1 ফেল হেয়েছ 10। আ া y = ++x;
আর y = x++; এ েটােক যিদ আমরা বৃি ++ ব বহার না কের িলখতাম তাহেল কমন হেতা?
আমােদর অব ই েটা কের statement িলখেত হেতা। নীেচ ল কেরা y = ++x; এ আেগ

২৮৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৬. Increment and Decrement ( াস ও বৃি অণুি য়া)

মান বাড়ােনা পের assignment, আর y = x++; এ আেগ assignment পের মান বাড়ােনা।
আশা করা যায় pre- (পূব-) ও post-increment (উ র-বৃি র) তফাৎ পির ার হেয়েছ।

x = x + 1; // y= ++x ; এ x এর মান বৃি আেগ ঘটেব


y = x; // y= ++x ; এ y ত x এর মান আেরাপন পের
y = x; // y= x++ ; এ y ত x এর মান আেরাপন আেগ
x = x + 1; // y= x++ ; এ x এর মান বৃি তার পের

Pre-increment (পূব-বৃি ) আর post-increment (উ র-বৃি র) আেরা একটা পাথ-


ক ও জানা দরকার অব । সটা হেলা pre-incrementএর ফলাফল আসেল একটা l-value
(বাম-মান) এে ে variableিটর l-value, অ িদেক post-incrementএর ফলাফল আস-
ল একটা r-value (ডান-মান)। আেগই বেলিছ increment operatorএর (পূব-বৃি ) সােথ
ব ব ত operandএর (উপাদান) অব ই l-value থাকেত হেব। ফেল post-incrementএর
ফলাফেলর ওপের আবার কান বৃি ই চালােনা যায় না, িক pre-incrementএর ফলাফেলর
ওপর চালােনা যায়। তুিম যিদ পরী া করেত চাও তাহেল ++++x; বা (++x)++; চ া কেরা,

5g
compile (সংকলন) হেয় যােব, িক x++++ বা ++(x++) চ া কেরা, compile হেব না,
error ( িট) আসেব পেরর বৃি টার জ "l-value required"। তুিম যিদ ফ ++x++; িল-
খা, এটা িক compile হেব না, error দখােব, কারণ হেলা pre- ও post-incrementএর
মেধ post-incrementএর precedence (অ গণ তা) আেগ, ফেল ++x++ আসেল ++(x
++) এর সমতুল। Precedence order (অ গণ তার ম) হেলা কান operator আেগ হেব
in
কানটা পের হেব তার িনয়ম। এ িবষেয় আমরা পের িব ািরত জানেবা।
এবাের আমরা increment ব বহাের programএর গিতর ওপর ভাব িনেয় একটু আেলা-
চনা কির। increment (বৃি ) ++x বা x++ সাধারণত x+=1 বা x=x+1 এর চেয় তগিতর,
am

এর কারণ মুলত একদম য পযােয় x++ বা ++x িবেশষ ভােব িনবািহত হয় িক x+=1 বা x=x+1
সাধারণ যােগর মেতা কের িনবািহত হয়। সাধারণেতা pre-increment (পূব-বৃি ) আর post-
incrementএর (উ র-বৃি ) মেধ পূব-বৃি ত গিতর। কারণ হেলা, post-incrementএর
ফলাফল যেহতু x এর মান বৃি করবার আেগর মান, তাই ওই আেগর মানিট থেম কাথাও
ণ ায়ী (temporarily) ভােব রেখ িদেত হয়, আর x এর মান বৃি টা তারপর ঘেট, আর তার-
al

পর ণ ায়ী ভােব রাখা মানটা ফলাফল িহসােব আেস যিট y = x++; এর ে y এ assign
হয়। িক পূব-বৃি র ে মান বৃি আেগ ঘেট আর ফলাফলটাও সই বৃি া মানই, কােজই
ণ ায়ী ভােব আেগর মান রেখ দওয়ার কান বাঝা (overhead) এখােন নই। মাটকথা
pre-increment সরাসির l-valueএর ওপরই কাজ কের অথাৎ ++x এ সরাসির variable-
টার ওপরই কাজ কের, আর কান ণ ায়ী িকছু দরকার হয় না। এ কারেণ pre-increment
++x; post-increment x++; এর চেয় বশী তগিতর হেয় থােক। কােজই তুিম পারেতা
পে ++x ব বহার করেব, x++ ব বহার করেব না।
Programএ increment ব বহাের এবাের একটা পরামশ দই। Pre-increment ও
post-increment িনেয় অেনক রকম খলা যায়, যমন তুিম চাইেল x = (++x)++ + ++x;
এর মেতা অেনক েলা + িচ িদেয় িকছু একটা িলখেত পােরা। এই রকম জিটল statement-
েলা হয়েতা compile (সংকলন) হেব। এর ফেল ফলাফলও িকছু একটা আসেব, যটা চাইেল
বুঝা স ব, িক বুঝেত গেল মাথা বশ গরম হেয় যায়। আমার পরামশ হেলা এইরকম জিটল
statement পারেতা পে লখেব না। সবসময় এমন ভােব code (সংেকত) িলখেব যােত পের
তুিম বা অ কউ তমন কান ক ছাড়াই তামার code দেখ বুঝেত পাের। মেন রাখেব code
যত জিটল, তার ভুল বর করাও তত কিঠন।

২৮৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৭. Comma Operator (িবিত অণুি য়া)

উপেরর পুেরা আেলাচনােত আমরা কবল increment (বৃি ) িনেয় আেলাচনা কেরিছ। আস-
ল decrement ( াস) −− িনেয় আেলাচনাটা একদম একই রকম। আমরা তাই পুনরাবৃি
করেবা না। কবল জেন রােখা decrementএর ( াস) ফেল মান 1 কেম যায়। তাই −−x
বা x−− হেলা x −= 1 বা x = x − 1 এর সমতুল। আমরা −−x ক pre-decrement
(পূব াস) আর x−− ক post-increment (উ র- াস) বিল। Pre-decrementএর তুল-
নায় post-decrementএর precedence (অ গণ তা) বশী। গিতর িদক িবেবচনায় pre-
decrement, post-decrementএর চেয় য়তর।

১৪.৭ Comma Operator (িবিত অণুি য়া)

িসিপিপেত comma operator (িবিত অণুি য়া) কেয়কিট expression (রািশ) ক এক সােথ
পরপর লখায় সাহায কের। Comma (িবিত) operatorএর বামপােশর operandএর (উপা-
দান) মান সব সময় void (নথক) হয় আর উেপি ত হয়। এর অথ হে ডান পােশর operand-

5g
িটর (উপাদান) মানই comma operatorএর (িবিত অণুি য়া) ফলাফল হয়।
একটা উদাহরণ দিখ x = (y=3, y+1); এই statementএর ফেল ব নীর িভতের থেম
commarএর বাম পােশর expression িহসােব y এর মান assign (আেরাপ) হেব 3। যিদও
assignmentএর কারেণ আমরা y এ 3 assignmentএর পাশাপািশ ফলাফলও পাই 3, িক
commaএর (িবিত) কারেণ সই ফলাফল বাদ িগেয় ফলাফল হেয় যােব void (নথক)। যাইেহাক
in
এরপর commaএর (িবিত) ডান পােশর expression িহসােব y+1 এর মান 3+1 বা 4 হেব যিট
আসেল যােগরও + ফলাফল। আর যােগর এই ফলাফল 4 ই শষ পয x varaibleএ assign
হেব। এখােন ব নী দরকার কারণ comma (িবিত) , সাধারণত assignmentএর (আেরাপণ)
am

= পের িহসাব করা হয়। আমরা ব নীর িভতেরর assignmentিট y = 3 commaএর (িবিত)
আেগ করেত চাইেলও ব নীর বাইেরর variable x এ assignmentিট commaএর পের কর-
ত চাই, আর এ কারেণ ব নী জ রী। ব াপারিট আেরা পির ার বুঝেত চাইেল একই িজিনস
ব নী ছাড়া কী হেব দেখা x = y = 3, y + 1;। এখােন েটা assignmentই (আেরাপণ)
commaএর (িবিত) আেগ execute (িনবাহ) হেব। ফেল থেম y এর মান assign হেব 3,
তারপর x এও মান 3ই assign হেব, তারপর y+1 িহসাব হেব 4। এই 4 commaএর ফলাফল
al

হেলও সিট িক এখােন িকছুেত assign হয় িন।


Comma (িবিত) operator (অণু্ি য়া) িহসােব ব বহার হেলও এর আেরা নানান ব বহার
আেছ িসিপিপেত। যমন একািধক variable (চলক) একসােথ declare ( ঘাষণা) করেত আমরা
comma (িবিত) িদেয় িলিখ int x, y, z = 3; Commaএর (িবিত) এই রকম ব বহার আস-
ল operator িহসােব নয়, বরং তািলকার separator (পৃথকী) িহসােব ব বহার। আমরা যখন
পের for loop (জ ঘূণী) ও parameter (পরািমিত) িনেয় আেলাচনা করেবা তখনও list
separator (তািলকা পৃথকী) িহসােব commaএর (িবিত) ব বহার দখেত পােবা।

১৪.৮ Precedence Order (অ গণ তার ম)


Precedence order (অ গণ তার ম) কী? িসিপিপেত এ পয পিরিচত হওয়া operator-
েলার (অণুি য়া) precedence order (অ গণ তার ম) আেলাচনা কেরা।
ধেরা তুিম 3 + 4∗5 + 6 এর মান িহসাব করেব। আেগকার িদেন এক রকম স া calculator
(কলিন) পাওয়া যেতা যিট করেতা কী, বাম থেক িহসাব করেতা এেকর পর এক। ফেল সটা -

২৮৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৮. Precedence Order (অ গণ তার ম)

থম 3 ও 4 যাগ কের 7 বর করেতা, তারপর তার সােথ 5 ণ কের বর করেতা 35 আর শেষ


তার সােথ 6 যাগ কের ফল িদেতা 41। তুিম চাইেল উে া আেরক রকেমর অব া ভাবেত পােরা,
যখােন ডান িদক থেক এেকর পর এক িহসাব হেব। তরাং 5 ও 6 যাগ কের 11, তারসােথ 4
ণ কের 44, শেষ 3 যাগ কের 47। িক ছাটেবলা থেক সরেলর িনয়ম আমরা িশেখ এেসিছ:
ণ আেগ হেব যাগ পের হেব। আমরা তাই িহসাব কির 4 ও 5 এর ণ আেগ ফল 20 তার সােথ
বােমর যাগ আেগ, তাই 3 আেগ যাগ হেলা 23, শেষ ডােনর যাগ তাই 6 যাগ কের হেলা 29,
যটােক আমরা সিঠক িহসাব বেল ধের নই। এই য বাম থেক ডােন বা ডান থেক বােম িহসাব না
কের ণ যােগর আেগ করেত হেব, আবার েটা যাগ পর পর থাকেল বােমর যাগ আেগ করেত
হেব। এই িনয়ম েলােক precedence order (অ গণ তার ম) বলা হয়।
সরল অংেক precedence order িছল: ব ণী, এর, ভাগ, ণ, যাগ, িবেয়াগ। সেবেচ-
য় িভতেরর ব নী সেবেচেয় আেগ। ভাগ আর ণ আসেল বাম থেক যটা আেগ আেস। একই
ভােব যাগ ও িবেয়াগ বাম থেক যটা আেগ আেস। িসিপিপেত আমরা এ পয অেনক েলা
operatorএর (অণুি য়া) সােথ পিরিচত হেয়িছ। এ েলা হেলা unary + − ++ −− binary
+ − ∗ / % = += −= ∗= /− %= , তা এেদর মেধ unary operatorএর (এিকক অণুি -
য়া) ম সবার আেগ, তারপর binary operator েলার ( িয়ক অণুি য়া) ম। আমরা আপা-

5g
তত কবল এ েলার precedence order (অ গণ তার ম) িবেবচনা করেবা। অ া আেরা
operator ও তােদর ম স েক আমরা পের জানেবা।
১. ++ −− ২িট unary operator (এিকক অণুি য়া) post-increment (উ র-বৃি ) ও
post-decrement (উ র- াস) x++, x−− এরা l-valueএর (বাম-মান) ওপের যু
in
হেয় r-value (ডান-মান) ফল দয়। ফেল x++++ বা x−−−− করা যায় না।
২. ++ −− + − ৪িট unary operator (এিকক অণুি য়া) pre-increment (পূব-বৃি )
++x ও pre-decrement (পূব- াস) −−x এরা l-valueএর (বাম-মান) ওপর যু
am

হেয় lef-valueই ফল দয়। ফেল ++++x বা −−−−x করা যায়, আর সেবেচেয় ডােনর
++ বা −− আেগ যু হয়। (pre) unary operator (এিকক অণুি য়া) +x ধনা ক
(positive) −x আর ঋণা ক (negative) এরা r-valueএর (ডান-মান) ওপর যু
হেয় r-valueই দয়। ফেল + + x বা − − x করা স ব, খয়াল কেরা েটা + বা েটা
− এর মেধ ফাঁকা িদেত হেয়েছ না হেল ও েলা বৃি বা াস িহসােব িচি ত হেয় যােব।
al

৩. ∗ / % ৩িট binary operaror ( িয়ক অণুি য়া) এরা িট r-valueএর (ডান-মান)


operandএর ওপর যু হেয় r-valueই ফল দয়। এই operator েলা পরপর অেন-
ক েলা থাকেল বাম থেক ডােন এেক এেক িহসাব হেত থােক। যমন 10 / 2 ∗ 4 % 6
এ বাম থেক ডােন থেম ভাগফল, তারপর ণফল, তারপর ভাগেশষ িহসাব হেব।
৪. + − ২িট binary operator ( িয়ক অণুি য়া) এরা িট r-valueএর operandএর
(উপাদান) ওপর যু হেয় r-valueই ফল দয়। এই operator েলা পরপর অেনক-
েলা থাকেল বাম থেক ডােন এেক এেক িহসাব হেত থােক। যমন 10 − 2 + 5 এ বাম
থেক ডােন থেম িবেয়াগফল, তারপর যাগফল িহসাব হেব।
৫. = += −= ∗= /= %= এই সব binary operator ( িয়ক অণুি য়া) assignment-
েলার বামপােশ এমন িকছু থাকেত হেব যার l-value (বাম-মান) আেছ, আর ডান পােশ
এমন িকছু থাকেত হয় যার r-value (ডান-মান) আেছ। এই operator েলা পরপর অেন-
েলা থাকেল ডান থেক বােম এেক এেক িহসাব হেত থােক। যমন x += y = z ∗= 3
ত থেম ডােনর ∗= এর কারেণ z এর সােথ 3 ণ হেব, তারপর মােঝর = এর কারেণ z
এর মান y assign হেব, শেষ y এর মান x এর সােথ যাগ হেব।

২৮৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.৯. Mathematical Problems (গািণিতক সম া)

৬. , comma (িবিত) একিট binary operator ( িয়ক অণুি য়া) যিটর ফলাফল কবল
ডানপােশর operand (উপাদান)। বাম পােশর operandিট িহসাব হয়, িক তার ফলা-
ফল হেব void (নথক)। এই operator একািধক পরপর থাকেল, বাম থেক ডােন এেক
এেক িহসাব হেত থােক। যমন x + 2, y ∗ 3, z / 4 থেম যাগ হেব, তারপর ণ
আর শেষ ভাগ, ফলাফল হেব একদম ডােনর ভাগফলিটই।

েটা একই বা একই েমর operator পরপর থাকেল কান পােশরিট আেগ হেব এইিট
িনধারণ কের দয়ােক বলা হয় associativity (সহেযাজ তা)। যমন x−y−z থাকেল আমােদর
থেম বােমর িবেয়াগ করেত হেব, তারপর ডােনর িবেয়াগ, তাই িবেয়াগ হল left associative
(বাম সহেযাজ ) অথাৎ x − y − z আর (x −y) − z একই। খয়াল কেরা িবেয়াগ িক right
associative (ডান সহেযাজ ) নয় কারণ x − y − z আর x − (y − z) এক নয়। যাগ আবার
বাম ও ডান both associative (উভয় সহেযাজ ) বা সংে েপ associative (সহেযাজ ) কারণ
x + y + z, (x + y) + z ও x + (y + z) একই। সাধারণত both associativeেদর ে
িবধােথ তােদর left-associative িহসােব িবেবচনা করা হয়। উপেরর তািলকায় আেলািচত
operator েলার ে একই রকম operator পরপর থাকেল কান পােশরিট আেগ হেব,

কান ােন কান রকেমর ি ধা


5g
সটাও িক আেলাচনা করা হেয়েছ। সখান থেক বুঝেতা পােরা কান operator িট এখােন
left associative (বাম সহেযাজ ), আর কানিট right associative (ডান সহেযাজ )?
সেবেশেষ একটা পূণ িবষয় মেন রাখেব ব নী ( ) এর শি িক সবেচেয় বশী। য
থাকেল সখােন ব নী ব বহার কের ি ধা পির ার করেব।
Operator েলার (অণুি য়া) precedence order (অ গণ তার ম) ব বহার কের নানা
in
রকম জিটল জিটল statement (িববৃিত) ও expression (রািশ) তরী করা যায়, য েলা ম
িবেবচনায় িনেয় বুঝেত গেল মাথা গরম হেয় যেত পাের, ভুল হেল বর করা কিঠন হেয় যােব।
কােজই আমার পরামশ হে তামার statement বা expression অব ই সহেজ পাঠেযাগ
am

হেত হেব, আর এ কােজ যত দরকার ব নী ব বহার করেব। যমন ধেরা x += y − z এর চেয়


x += (y − z) বুঝা আমােদর জ বশী সহজ, কারণ এেত একদম পির ার িবেয়াগ আেগ হেব।

১৪.৯ Mathematical Problems (গািণিতক সম া)


al

Two dimensional coordinate systemএ (ি মাি ক ানা ব ব ায়) িট িব র ানা


input ( যাগান) িনেয় তােদর মােঝ দূর output (ফলন) িহসােব দখাও। ধেরা ানা েলা
ভ েক দয়া আেছ। তামার িন য় জানা আেছ য েটা িব র (x1 , y1 ) ও (x2 , y2 ) দূর হেলা

(x1 − x2 )2 + (y1 − y2 )2 অথাৎ ভুজ েয়র দূরে র বগ ও কািট েয়র দূরে র বেগর যাগ-
ফেলর বগমূল। বগমূল িনণেয়র জ cmath header file (িশর নিথ) থেক sqrt function
ব বহার কেরা। আর বগ িনণেয়র জ তামােক একই িজিনস ইবার ণ করেত হেব।
িফিরি ১৪.৫: িট িব র মেধ র দূর (Distance Between Two Points)
/ / নীেচর িশর নিথ main িবপাতেকর বাইের অ ভু কেরা

#i n c l u d e <cmath> // বগমূল িনণেয়র জ s q r t িবপাতক লাগেব

/ / নীেচর অংশ main িবপাতেকর িভতের return এর আেগ িলেখা

f l o a t x1 , y1 , x2 , y2 ; / / ানা েটা ( x1 , y1 ) , ( x2 , y2 )

২৮৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১০. Header File cmath (িশর নিথ cmath)

cout << " f i r s t point x y : " ; // যাগান যাচনা


c i n >> x1 >> y1 ; / / থম িব যাগান
cout << " second point x y : " ; / / যাগান যাচনা
c i n >> x2 >> y2 ; / / ি তীয় িব যাগান

f l o a t xd = abs ( x1 − x2 ) ; / / ভুজ িটর দূর


f l o a t yd = abs ( y1 − y2 ) ; / / কািট িটর দূর

f l o a t dd = s q r t ( xd ∗ xd + yd ∗ yd ) ; / / দূর িহসাব কেরা


cout << " d i s t a n c e i n between " << dd << endl ; / / ফলন

উপেরর program খয়াল কেরা। খুবই সাদামাটা। থেম main functionএর বাইের
cmath header file অ ভু করেত হেব বেল দখােনা হেয়েছ। তারপর main functionএর
িভতের িব েটার ভুজ ও কািট ধারণ করার জ চারিট float ধরেনর ভ ক variable (চলক)

5g
নয়া হেয়েছ। এরপর input prompt ( যাগান যাচনা) িদেয় িব েটার ানা input ( যা-
গান) নয়া হেয়েছ। তারপর ভুজ েয়র দূর abs(x1 − x2) বর কের xd নােমর আেরকিট
variableএ নয়া হেয়েছ, একই ভােব কািট েয়র দূর abs(y1 − y2) বর কের yd নােমর
আেরকিট variableএ নয়া হেয়েছ। মেন কের দেখা abs functionিট (িবপাতক) কান সং-
খ ার absolute value (পরম মান) অথাৎ িচ বাদ িদেয় কবল মানটু ফরত দয়। যাইেহাক
in
তারপর xd এর বগ ও yd এর বেগর যাগফল িনেয় তার বগমূল বর করা হেয়েছ sqrt function
ব বহার কের আর রাখা হেয়েছ dd variableএ। সবেশেষ দূর dd variable থেক output
(ফলন) দয়া হেয়েছ। এখােন একটা কথা বেল রািখ sqrt(xd ∗ xd + yd ∗ yd) এর বদেল
am

cmath header file (িশর নিথ) থেকই hypot নােমর functionও (িবপাতক) আমরা ব -
বহার করেত পারতাম। সে ে আমােদর িলখেত হেতা hypot(xd, yd) আর সিট িঠক একই
কাজ করেতা। Function hypot আসেল সমেকাণী ি ভুেজর অিতভুেজর দঘ িনণয় কের, িক
তার সূ আর েটা িব র দূর িনণেয়র সূে র মেধ িমল রেয়েছ।
al

১৪.১০ Header File cmath (িশর নিথ cmath)


Header file cmath এ mathematical processingএ ব ব তব নানান function (িব-
পাতক) আেছ। আমরা এখােন ওই function েলার সােথ সংি আকাের পিরিচত হেবা। এই
function েলা কী তা বুঝেত তামার উ মাধ িমক গিণেতর ধারণাবলী দরকার হেব। নীেচর
hyperbolic (পরাবৃ ীয়) function েলা ছাড়া ায় সব েলা functionই আমােদর ায়শই
কােজ লােগ।

Mathematical Functions (গািণিতক িবপাতক)


• abs(x): কান সংখ া x এর পরম মান। abs(3) হেব 3 এবং abs(−3) হেব 3।

Trigonometric Functions (ি েকাণিমিতক িবপাতক)


• cos(x): Cosine (ল া পাত) যখােন x হল রিডয়ােন।

২৯০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১০. Header File cmath (িশর নিথ cmath)

• sin(x): Sine (ল া পাত) যখােন x হল রিডয়ােন।


• tan(x): Tangent ( শা পাত) যখােন x হল রিডয়ােন।
• acos(x): Arc-cosine (িবল া পাত) যখােন ফরত মান রিডয়ােন।
• asin(x): Arc-sine (িবল া পাত) যখােন ফরত মান রিডয়ােন।
• atan(x): Arc-tangent (িব শা পাত) যখােন ফরত মান রিডয়ােন।
• atan2(x,y): Arc-tangent (িব শা পাত) যখােন xy এর x হল লব (numerator)
আর y হল হর (denominator) আর ফরত মান রিডয়ােন।

Hyperbolic Functions (পরাবৃ ীয় িবপাতক)

• cosh(x): Hyperbolic cosine (পরাবৃ ীয় ল া পাত) যখােন x হল রিডয়ােন।

• tanh(x): Hyperbolic tangent (পরাবৃ ীয়


5g
• sinh(x): Hyperbolic sine (পরাবৃ ীয় ল া পাত) যখােন x হল রিডয়ােন।

শা পাত) যখােন x হল রিডয়ােন।

• acosh(x): Hyperbolic arc-cosine (পরাবৃ ীয় িবল া পাত), ফরত রিডয়ােন।


in
• asinh(x): Hyperbolic arc-sine (পরাবৃ ীয় িবল া পাত), ফরত রিডয়ােন।

• atanh(x): Hyperbolic arc-tangent (পরাবৃ ীয় িব শা পাত), ফরত রিডয়া-


am

ন।

Exponents and Logarithms ( চক ও ঘাতা )


• exp(x): ex বা exponential function ( চকীয় িবপাতক)
al

• log(x): loge x বা logarithmic function (ঘাতা িবপাতক)


• log10(x): log10 x বা ১০-িভি ক logarithm (ঘাতা )
• exp2(x): 2x বা ২-িভি ক exponential ( চকীয়) function
• log2(x): log2 x বা ২-িভি ক logarithm (ঘাতা )

Power and Index (শি ও ঘাত)


• pow(x,y): xy অথাৎ x এর y তম শি যমন pow(2,3) হল 23 বা 8

• sqrt(x): x অথাৎ x এর বগমূল যমন sqrt(16.0) হল 4.0

• cbrt(x): 3 x অথাৎ x এর ঘনমূল যমন cbrt(8.0) হল 2.0

• hypot(x,y): x2 + y 2 অথাৎ x ও y ক সমেকানী ি ভুেজর ল (perpendicular)
ও ভুিম (base) ধরেল অিতভুেজর (hypotenuse) দঘ

২৯১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

Rounding Functions ( নকটায়েনর িবপাতক)


• round(x): নকটায়ন িবপাতক x এর িনকটতম পূণক।

• floor(x): মেঝ িবপাতক x এর সমান বা িঠক ছাট পূণকিট।

• ceil (x): ছাদ িবপাতক x এর সমান বা িঠক বড় পূণকিট।

• trunc(x): কতন িবপাতক x এর ভ াংশটু কেট ফলেব।

উপেরর function েলার ফলাফল বুঝার জ নীেচর সারণী ল কেরা।


মান নকটায়ন মেঝ ছাদ কতন
x round(x) floor(x) ceil (x) trunc(x)
2.3 2.0 2.0 3.0 2.0
2.8 3.0 2.0 3.0 2.0
2.5 3.0 2.0 3.0 2.0
2.0
-2.3
-2.8
-2.5
2.0
-2.0
-3.0
-3.0
2.0
-3.0
-3.0
-3.0
5g 2.0
-2.0
-2.0
-2.0
2.0
-2.0
-2.0
-2.0
in
১৪.১১ Exercise Problems (অ শীলনী সম া)
am

Conceptual Questions: নীেচ িকছু conceptual রেয়েছ। েলার উ র িনেজ


িনেজ বর করেব।

১. Function (িবপাতক) ও expression (রািশ) বলেত কী বুেঝা? উদাহরণ দাও।

২. Unary (এিকক) ও binary ( িয়ক) operation (অণুি য়া) বলেত কী বুেঝা? কেয়কটা
কের unary (এিকক) ও binary ( িয়ক) operationএর (অণুি য়া) নাম বেলা।
al

৩. Type casting (উপা কারা র) কী? Binary operationএ ( িয়ক অণুি য়ায়) কী
ভােব type casting (উপা কারা র) হয়?

৪. Execution-time error (িনবাহ-কালীন িট) বলেত কী বুেঝা? ভাগফল ও ভাগেশষ


িনণেয়র সময় কান execution-time error ঘটেত পাের?

৫. Programএ অদরকারী code (সংেকত) মুেছ না িদেয় কীভােব আমরা comment (টী-
কা) ব বহার কের স েলােক অকাযকর কের রাখেত পাির, ব াখ া কেরা।

৬. ঋণা ক পূণেকর (integer) ভাগফল ও ভাগেশষ িনণেয়র িনয়ম বণনা কেরা।

৭. Assignment operatorএর (আেরাপণ অণুি য়া) ফলাফল িঠক কী? Compound


assignment ( যৗিগক আেরাপণ) বলেত কী বুেঝা? কেয়কিট উদাহরণ দাও।

৮. সাধারণ compound assignment ( যৗিগক আেরাপন) যমন x += 1 ব বহার না


কের কন increment (বৃি ) x++ বা ++x কন ব বহার করা হয়?

২৯২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

৯. Post-increment (উ র-বৃি ) ও pre-incrementএর (পূব-বৃি ) মেধ পাথক েলা


আেলাচনা কেরা। তুিম কানিট ব বহার করেত চাইেব এবং কন?

১০. Comma (িবিত) operatorএর কাজ কী? এর ফলাফলই বা কী?

১১. Precedence order (অ গণ তার ম) ও associativity (সহেযাজ তা) কী?

১২. িসিপিপেত এ পয শখা operator েলার (অণুি য়া) precedence order (অ গ-


ণ তার ম) ও associativity (সহেযাজ তা) আেলাচনা কেরা।

Programming Problems: নীেচ আমরা িকছু programming problems দখেবা।


এই সম া েলা আেগ ধয ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পা-
রেছা না বেল মেন হয় তখনই কবল সমাধান দেখ িনেত পােরা। সমাধান েলা programming
problem েলার শেষ আেছ।

5g
১. একিট arithmetic seriesএর (সমা র ধারা) থম পদ a সাধারণ অ র d হেল n-তম
পদ কেতা? n পেদর সমি ই বা কত? এর জ িসিপিপেত একটা program ( মেলখ)
(program) তরী কেরা যিট a, d, ও n input ( যাগান) িনেব, আর n-তম পদ ও n
পেদর সমি output (ফলন) িদেব। এর জ তুিম সূ ব বহার করেব n-তম পদ =
a + (n − 1) ∗ d আর n পেদর সমি = n ∗ (2a + (n − 1) ∗ d)/2। দ িবিভ ধারার
in
জে এই সূ a আর d বসােল আমরা ওই ধারা েলার জ সরাসির সূ পেত পাির।

• 1 + 2 + 3 + . . . ধারােত a = 1, d = 1। তরাং n-তম পদ = a + n − 1, n


am

পেদর সমি = n(n + 1)/2। যমন n = 10 হেল 10-তম পদ 10, সমি 55।
• 2 + 4 + 6 + . . . ধারােত a = 2, d = 2। তরাং n-তম পদ = 2n, n পেদর
সমি = n(n + 1)। যমন n = 10 হেল 10-তম পদ 20, সমি 110।
• 1 + 3 + 5 + . . . ধারােত a = 1, d = 2। তরাং n-তম পদ = 2n − 1, n পেদর
সমি = n2 । যমন n = 10 হেল 10-তম পদ 19, সমি 100।
al

২. নীেচর মেতা output (ফলন) দয় এরকম একিট program ( মেলখ) তরী কেরা।
Result columnএ তুিম binary operator েলা ( িয়ক অণুি য়া) ব বহার করেব।
x=10 y=5

expr r e s u l t
x=y+3 x= 8
x=y−2 x= 3
x=y∗5 x= 25
x=x / y x= 2
x=x%y x= 0

৩. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট িতন অে র সংখ ােক উে া
কের যমন 326 হেয় যায় 623। এ কােজ তুিম ভাগফল, ভাগেশষ, ণ, যাগ ও িবেয়াগ
ব বহার করেব। 326 থেক অ েলা আলাদা কের তারপর 623 তরী করেব।

২৯৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

৪. একিট ি ভুেজর িতন বা র দঘ a, b, c input (√যাগান) িনেয় ি ভুজিটর ফল িনণয়


কেরা। তুিম হয়েতা জােনা ি ভুেজর ফল = s(s − a)(s − b)(s − c) যখােন s
হেলা অধ পিরসীমা অথাৎ s = (a + b + c)/2।

৫. এমন একিট program ( মেলখ) রচনা কেরা যিট সেক ড input িনেয় তােক ঘ টা-
িমিনট- সেকে ড পা র কের। এ কােজ তুিম ভাগফল ও ভাগেশষ ব বহার করেব।

৬. একিট ি ভুেজর িতন বা র দঘ a, b, c যাগান (input) িনেয় এর কাণ েলা িনণয়


কেরা। ধেরা ি ভুেজর কান িতনিট A, B, C। এখান A, B, C যথা েম a, b, c বা র
িবপরীত কাণ। তুিম হয়েতা জােনা কাণ C = cos−1 ((a2 + b2 − c2 )/(2ab)), কাণ
B = cos−1 ((c2 +a2 −b2 )/(2ca)) ও কাণ A = cos−1 ((b2 +c2 −a2 )/(2bc))।
তামার programএ ি ভুেজর কান েলােক তুিম িড ীেত পা র কের output িদেব।

৭. এমন একিট program ( মেলখ) রচনা কেরা যিট েটা সময় ঘ টা, িমিনট, সেকে ড
িনেয় সময় িটেক যাগ কের। এ কােজ তুিম যাগ, ভাগফল ও ভাগেশষ ব বহার করেব।

5g
৮. এমন একিট program রচনা কেরা যিট েটা সমীকরণ ax + by = c ও dx + ey = f
এর a, b, c, d, e, f input ( যাগান) িনেয় x ও y এর মান output (ফলন) দয়।

৯. একিট বাস u আিদেবগ ও a সম রণ িনেয় যা া করেলা। সময় t সেক ড পের বােসর


গিতেবগ v িনণয় কেরা। t সময় পের বাসিট অিত া র sও িনণয় কেরা। এ কােজ তুিম
in
গিতিবদ ার সূ v = u + at ও s = ut + 21 at2 ব বহার করেব।

১০. নীেচর pseudocodeএর (ছ -সংেকত) জ একিট program ( মেলখ) তরী কেরা।


am

ক) পেড়া (read) x ও y
খ) গেণা (compute) p = x ∗ y
গ) গেণা (compute) s = x + y
ঘ) গেণা (compute) t = s2 + p ∗ (s − x) ∗ (p + y)
al

ঙ) িলেখা (write) t

Programming Solutions: এবার আমরা programming problem েলার সমাধান


দখেবা। সমাধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ িনেজ করেত পারেছানা বেল মেন
হয়, তখন কবল একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. একিট arithmetic seriesএর (সমা র ধারা) থম পদ a সাধারণ অ র d হেল n-তম


পদ কেতা? n পেদর সমি ই বা কত? এর জ িসিপিপেত একটা program ( মেলখ)
(program) তরী কেরা যিট a, d, ও n input ( যাগান) িনেব, আর n-তম পদ ও n
পেদর সমি output (ফলন) িদেব। এর জ তুিম সূ ব বহার করেব n-তম পদ =
a + (n − 1) ∗ d আর n পেদর সমি = n ∗ (2a + (n − 1) ∗ d)/2। দ িবিভ ধারার
জে এই সূ a আর d বসােল আমরা ওই ধারা েলার জ সরাসির সূ পেত পাির।

• 1 + 2 + 3 + . . . ধারােত a = 1, d = 1। তরাং n-তম পদ = a + n − 1, n


পেদর সমি = n(n + 1)/2। যমন n = 10 হেল 10-তম পদ 10, সমি 55।

২৯৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

• 2 + 4 + 6 + . . . ধারােত a = 2, d = 2। তরাং n-তম পদ = 2n, n পেদর


সমি = n(n + 1)। যমন n = 10 হেল 10-তম পদ 20, সমি 110।
• 1 + 3 + 5 + . . . ধারােত a = 1, d = 2। তরাং n-তম পদ = 2n − 1, n পেদর
সমি = n2 । যমন n = 10 হেল 10-তম পদ 19, সমি 100।

আমরা এখােন কবল সাধারণ ে র জ program ( মেলখ) তরী করেবা। দ


িবেশষ ধারার জ তুিম এই program ( মেলখ) দরকার মেতা বদেল িনেত পারেব।

িফিরি ১৪.৬: Arithmetic Series Problem (সমা র ধারার সম া)


int a , d , n ;
cout << " f i r s t term ? " ; c i n >> a ;
cout << "common d i f f ? " ; c i n >> d ;
cout << " which term ? " ; c i n >> n ;

i n t t = a + ( n − 1 ) ∗ d ; / / n−তম পদ

5g
cout << n << "−th term = " << t << endl ;

i n t s = n ∗ ( 2∗a + ( n − 1 ) ∗d ) / 2 ; / / সমি
cout << n << " term sum = " << s << endl ;
in
যাগান-ফলন (input-output)
f i r s t term ? 1
am

common d i f f ? 1
which term ? 10
10−th term = 10
10 term sum = 55

২. নীেচর মেতা output (ফলন) দয় এরকম একিট program ( মেলখ) তরী কেরা।
al

x=10 y=5

expr r e s u l t
x=y+3 x= 8
x=y−2 x= 3
x=y∗5 x= 25
x=x / y x= 2
x=x%y x= 0

িফিরি ১৪.৭: Binary Operation Results ( িয়ক অণুি য়ার ফলাফল)


i n t x = 10 , y = 5 ;

cout << " x= " << x << " y= " << y << endl ;
cout << endl ; / / ফাঁকা সাির

২৯৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

cout << " expr "<< " r e s u l t " << endl ;


cout << " x=y+3 " << " x= " << y+3 << endl ;
cout << " x=y−2 " << " x= " << y−2 << endl ;
cout << " x=y∗5 " << " x= " << y∗5 << endl ;
cout << " x=x / y " << " x= " << x / y << endl ;
cout << " x=x%y " << " x= " << x%y << endl ;

৩. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট িতন অে র সংখ ােক উে া
কের যমন 326 হেয় যায় 623। এ কােজ তুিম ভাগফল, ভাগেশষ, ণ, যাগ ও িবেয়াগ
ব বহার করেব। 326 থেক অ েলা আলাদা কের তারপর 623 তরী করেব।
i n t given = 326 ;

i n t r i g h t = given % 10 ; / / ভাগেশষ 6
i n t l e f t = given / 100 ; / / ভাগফল 3

5g
i n t middle = given / 10 % 10 ; / / ফল 2

i n t reverse = l e f t ; // উ া = 3
reverse += middle ∗ 10 ; / / উ া = 23
reverse += r i g h t ∗ 100 ; / / উ া = 623
in
৪. একিট ি ভুেজর িতন বা র দঘ a, b, c input (√যাগান) িনেয় ি ভুজিটর ফল িনণয়
কেরা। তুিম হয়েতা জােনা ি ভুেজর ফল = s(s − a)(s − b)(s − c) যখােন s
am

হেলা অধ পিরসীমা অথাৎ s = (a + b + c)/2।

িফিরি ১৪.৮: Triangle's Area From Sides (ি ভুেজর বা হেত ফল)


/ / main িবপাতেকর বাইের
#i n c l u d e <cmath>
al

/ / main িবপাতেকর িভতের


float a , b , c ; / / বা েলা
cout << " s i d e s a b c : " ; // যাগান যাচনা
c i n >> a >> b >> c ; // যাগান নওয়া

f l o a t s = ( a + b + c ) / 2 ; / / অধ পিরসীমা
f l o a t k = s q r t ( s ∗ ( s−a ) ∗ ( s−b ) ∗ ( s−c ) ) ; / / ফল

cout << " area = " << k << endl ; / / ফলন

যাগান-ফলন (input-output)
s i d e s a b c : 100 60 90
k h e t r o f o l = 2666

২৯৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

৫. এমন একিট program ( মেলখ) রচনা কেরা যিট সেক ড input িনেয় তােক ঘ টা-
িমিনট- সেকে ড পা র কের। এ কােজ তুিম ভাগফল ও ভাগেশষ ব বহার করেব।

িফিরি ১৪.৯: Time in Seconds (সময়েক সেকে ড কাশ)


i n t t o t a l s e c = 38185 ;

i n t sec = t o t a l s e c % 60 ; / / ফল 25
i n t to talmi n = t o t a l s e c / 60 ; / / ফল 636

i n t min = totalm in % 60 ; / / ফল 36
i n t hour = tot almin / 60 ; / / ফল 10

৬. একিট ি ভুেজর িতন বা র দঘ a, b, c input ( যাগান) িনেয় এর কাণ েলা িনণয়


কেরা। ধেরা ি ভুেজর কান িতনিট A, B, C। এখান A, B, C যথা েম a, b, c বা র
িবপরীত কাণ। তুিম হয়েতা জােনা কাণ C = cos−1 ((a2 + b2 − c2 )/(2ab)), কাণ

5g
B = cos−1 ((c2 +a2 −b2 )/(2ca)) ও কাণ A = cos−1 ((b2 +c2 −a2 )/(2bc))।
তামার মেলখেত ি ভুেজর কান েলােক তুিম িড ীেত পা র কের output িদেব।
আমরা cmath header file থেক arccosineএর জ acos functionিটেক (িবপা-
তক) ব বহার করেবা। িক এিট আমােদর রিডয়ােন কাণ ফরত িদেব। রিডয়ান থেক
in
িড ীেত িনেত চাইেল আমােদর 180/pi িদেয় ণ করেত হেব। কথা হে পাই কমেন
পােবা। আমরা pai একটা constant ঘাষণা করেত পাির যার মান িদেয় িদব 3.1416
অথবা আেরা িনখুত মান পেত চাইেল acos(−1) থেকও মান বর কের িনেত পাির।
am

িফিরি ১৪.১০: Triangle's Angles From Sides (ি ভুেজর বা হেত কাণ)


/ / main িবপাতেকর বাইের
#i n c l u d e <cmath>

/ / main িবপাতেকর িভতের


al

float a , b , c ; / / বা েলা
cout << " s i d e s a b c : " ; / / যাগান যাচনা
c i n >> a >> b >> c ; / / যাগান নওয়া

// কাণ িনণয় রিডয়ােন


float C = acos ( ( a∗a + b∗b − c ∗ c ) / ( 2∗a∗b ) ) ;
float B = acos ( ( c ∗ c + a∗a − b∗b ) / ( 2∗ c ∗a ) ) ;
float A = acos ( ( b∗b + c ∗ c − a∗a ) / ( 2∗b∗ c ) ) ;

/ / িড ীেত পা র
f l o a t const p a i = arc co s (−1 ) ; / / িবক হেলা 3 . 1416
C ∗= 180 / p a i ; B ∗= 180 / p a i ; A ∗= 180 / p a i ;

cout << " angles A B C= " ; / / ফলন


cout << A << " " << B << " " << C << endl ;

২৯৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

যাগান-ফলন (input-output)
s i d e s a b c : 145 60 90
angles A B C= 149 . 703 12 . 049 18 . 2475

৭. এমন একিট program ( মেলখ) রচনা কেরা যিট েটা সময় ঘ টা, িমিনট, সেকে ড
িনেয় সময় িটেক যাগ কের। এ কােজ তুিম যাগ, ভাগফল ও ভাগেশষ ব বহার করেব।

িফিরি ১৪.১১: Adding Two Times ( িট সমেয়র যাগ)


i n t hour1 , min1 , sec1 ; / / ১ম সময় যাগান িনেব
i n t hour2 , min2 , sec2 ; / / ২য় সময় যাগান িনেব

i n t sec = sec1 + sec2 ; // সেক ড েটা যাগ


i n t min = min1 + min2 ; / / িমিনট েটা যাগ
i n t hour = hour1 + hour2 ; / / ঘ টা েটা যাগ

min = min % 60 ;
5g
m i n i t += sec / 60 ; / / মাট সেক ড 60 এর বশী হেল
sec = sec % 60 ; / / িমিনট হওয়ার পের অবিশ সেক ড
hour += min / 60 ; / / মাট িমিনট 60 এর বশী হেল
/ / ঘ টা হওয়ার পের অবিশ িমিনট
in
৮. এমন একিট program রচনা কেরা যিট েটা সমীকরণ ax + by = c ও dx + ey = f
এর a, b, c, d, e, f input িনেয় x ও y এর মান output দয়। এরকম সহ সমীকরণ
am

সমাধােনর সূ হল x = (ce − bf )/(ae − bd) আর y = (af − cd)/(ae − bd)।

িফিরি ১৪.১২: Simultaneous Equations (সহ সমীকরণ সমাধান)


float a , b , c , d , e , f ;

cout << " f i r s t equation a b c : " ;


al

c i n >> a >> b >> c ;


cout << " second equation e f g : " ;
c i n >> d >> e >> e ;

f l o a t x = ( c ∗e − b∗ f ) / ( a∗e − b∗d ) ;
f l o a t y = ( a∗ f − c ∗d ) / ( a∗e − b∗d ) ;

cout << " x = " << x << " " ;


cout << " y = " << y << endl ;

যাগান-ফলন (input-output)
f i r s t equation a b c : 2 1 4
second equation e f g : 1 −1 −1
x = 1 . 33333 y = 1 . 33333

২৯৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১১. Exercise Problems (অ শীলনী সম া)

৯. একিট বাস u আিদেবগ ও a সম রণ িনেয় যা া করেলা। সময় t সেক ড পের বােসর


গিতেবগ v িনণয় কেরা। t সময় পের বাসিট অিত া র sও িনণয় কেরা। এ কােজ তুিম
গিতিবদ ার সূ v = u + at ও s = ut + 12 at2 ব বহার করেব।

িফিরি ১৪.১৩: Solving Motion Equations (গিতর সমীকরণ সমাধান)


float u , a , t ;

cout << " i n i t−speed a c c e l e r a t i o n time : " ;


c i n >> u >> a >> t ;

float v = u + a ∗ t ;
f l o a t s = u∗ t + a ∗ t ∗ t / 2 ;

cout << " speed : " << v << " " ;


cout << " d i s t a n c e : " << s << endl ;

5g
যাগান-ফলন (input-output)
i n i t−speed a c c e l e r a t i o n time : 2 1 4
speed : 6 d i s t a n c e : 16
in
১০. নীেচর pseudocodeএর (ছ -সংেকত) জ একিট program ( মেলখ) তরী কেরা।
am

ক) পেড়া (read) x ও y
খ) গেণা (compute) p = x ∗ y
গ) গেণা (compute) s = x + y
ঘ) গেণা (compute) t = s2 + p ∗ (s − x) ∗ (p + y)
ঙ) িলেখা (write) t
al

িফিরি ১৪.১৪: Program from Pseudocode (ছ সংেকত থেক মেলখ তরী)


int x , y ; // কবল main িবপাতেকর িভতেরর অংশটু

c i n >> x >> y ; // ধাপ ক

int p = x ∗ y ; // ধাপ খ
int s = x + y ; // ধাপ গ

int t = s∗s + p ∗ ( s − x ) ∗ (p + y ) ; // ধাপ ঘ

cout << t << endl ; / / ধাপ ঙ

২৯৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৪.১২. Computing Terminologies (গণনা পিরভাষা)

১৪.১২ Computing Terminologies (গণনা পিরভাষা)


• Positive (ধনা ক) • Execution-time (িনবাহ-কালীন)

• Negative (ঋণা ক) • Commenting (টীকা দয়া)

• Operator (অণুি য়া) • Uncommenting (টীকা তালা)

• Operand (উপাদান) • Composition ( যাজন)

• Unary (এিকক) • Void (নথক)

• Binary ( িয়ক) • Separator (পৃথকী)

• Type casting (উপা কারা র) • Precedence (অ গণ তা)

• Run-time (চলা-কালীন) • Associativity (সহেযাজ তা)

5g
in
am
al

৩০০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১৫

Conditional Programming
(শতািল পিরগণনা)

5g
আমােদর জীবনটা নাক বরাবর সাজা একটা পথ নয়, িতটা মােড় মােড় এটা শাখায় শাখায়
িবভ । তামােক একটা শাখায় যেত হেব, একসােথ এেকর বশী শাখায় যেত পারেব না। কা-
নটায় যােব তার জ ভাবেত হেব, তামার অব া ও ল িবেবচনা করেত হেব। Conditional
programming (শতািল পিরগণনায়) আমরা শাখায় শাখায় ভাবা িশখেবা, আমােদর সামেনর
in
গমন পথ বাছাই করা িশখেবা, আমরা আমােদর জীবেনর িস া নয়া িশখেবা।
am

১৫.১ If Then Else (যিদ তাহেল নাহেল)


ধেরা গিণত পরী ায় তুিম ৫০ বা বশী পেল পাশ করেব আর নাহেল করেব ফল। আর যিদ ৮০
বা বশী পাও তাহেল তুিম star (তারকা) পােব। এমন একিট program ( মেলখ) তরী কেরা
যিট তামার গিণেত পাওয়া ন র input ( যাগান) িনেয় তামােক পাশ না ফল output (ফলন)
িদেব। আর তুিম যিদ star পেয় থােকা সটাও জানােব, star না পেল িকছু জানােব না।
al

িফিরি ১৫.১: Pass Fail Star Marks (পাশ- ফল-তারকা ন র িনণয়)


i n t number ; // চলক ঘাষণা

cout << "number ? " ; // যাগান যাচনা


c i n >> number ; // যাগান নয়া

i f ( number >= 50) // যিদ পােশর ন র


cout << " pass " << endl ; // পাশ ফলন
else // না হেল
cout << " f a i l " << endl ; // ফল ফলন

i f ( number >= 80) // যিদ তারকা ন র


cout << " s t a r " << endl ; // তারকা ফলন

৩০১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১. If Then Else (যিদ তাহেল নাহেল)

উপেরর অংশটু কান programএ ( মেলখ) িনেয় compile (সংকলন) কের চািলেয়
(run) দেখা। যিদ 50 এর কম কান ন র input ( যাগান) দাও যমন 45 তাহেল output
(ফলন) দখােব fail । আর যিদ 50 ও 79 এর মােঝর কান ন র input ( যাগান) দাও যমন 65
তাহেল output (ফলন) দখােব pass। আর যিদ 80 বা বশী কান মান input ( যাগান) দাও
যমন 85 তাহেল ই সাির output (ফলন) দখােব: থম সািরেত pass আর পেরর সািরেত
star। নীেচর input-output ( যাগান-ফলন) এই programিট ( মেলখ) িতন বার চািলেয়
বােম, মােঝ, ও ডােন এই িতনিট ব াপার দখােনা হেয়েছ।
যাগান-ফলন (input-output)
number? 45 number? 65 number? 85
fail pass pass
star

এবার programিট ( মেলখ) িবে ষণ কির। Variable declaration (চলক ঘাষণা),


input-prompt ( যাগান যাচনা), ও input ( যাগান) নয়া তা তুিম আেগই িশেখেছা। এর

5g
পের খয়াল কেরা আমরা িলেখিছ if (number >= 50) অথাৎ যিদ ন র 50 বা তার বশী হয়
তাহেল কী করেত হেব সটা িক তার পরপরই বেলিছ cout << "pass" << endl; অথাৎ
পাশ output (ফলন) দখােত হেব। তারপেরর সাির খয়াল কেরা else মােন হেলা না হেল অথাৎ
ন র যিদ 50 বা তার বশী না হয় মােন 50 এর কম হয়, আমােদর ফল outputএ দখােত হেব
যা বলা হেয়েছ িঠক পেরর সািরেত cout << "fail" << endl;। য কান ন র হয় 50 এর
in
কম হেব না হয় বশী বা সমান হেব, এই েটা ছাড়া আর িভ িকছু হেত পাের না, এমনিক ওই
েটা একসােথও সিত হেত পাের না। কােজই আমােদর programএ ( মেলখ) হয় cout <
< "pass" << endl; না হয় cout << "fail" << endl; execute (িনবাহ) হেব, েটাই
am

একসােথ হেত পারেব না। িঠক যন েটা শাখা তরী হেয় গেলা।
আমরা উপেরর program হেত দখেত পলাম া ন েরর ওপর িভি কের ফলাফল পাশ
না ফল দখােত হেব অথাৎ output (ফলন) দখােনার ওই েটা statementএর মেধ কানটা
িনবািহত হেব সটা আমরা ন র 50 এর কম না বশী বা সমান এই শতিট পরী া কের বাছাই করেত
পারলাম। অেনক programming language (পিরগণনা ভাষা) (number > 50) এর পের
cout << "pass" << endl; এর আেগ then িলখেত হয়, িক c++ এ এটা িলখেত হয় না।
al

এখােন বরং শত number >= 50 এটােক েটা ( ) ব নী িদেয় ব ী করেত হয়। ব নী দয়ার
ব াপারটা মেন রাখেব, কারণ থম থম তুিম এটা িনেয় ায়ই ভুল কের compilation error
(সংকলন িট) পােব, আর তামােক তখন এিট িঠক করেত হেব। ব নী েটা এখােন আেশ পােশর
শতেক পৃথক কের, যা সফল compileএর (সংকলন) জে জ রী।
উপেরর programএ ( মেলখ) খয়াল কেরা পাশ ফল দখােনার if এর পের আেরা একটা
if আেছ যিট িদেয় আমরা া ন রিট star (তারকা) িকনা তা দখাই। এই if এ শত হে (
number >= 80) অথাৎ ন র যিদ 80 বা এর বশী হয় তাহেল output (ফলন) দখােব star।
িক আর একটু সতক ভােব খয়াল কেরা এই শত িমথ া হেল বা পূরণ না হেল কী দখােব সটা
িক নাই। সাজা কথায় এই if এর সােথ কান else ব বহার করা হয় িন। মােন ন র যিদ 80
এর কম হয় তাহেল ফ িকছুই দখােনার দরকার নাই। তাহেল আমরা জানলাম if এর শত পূরণ
হেল আমােদর কী করেত হেব সটা িলখেত হেব, িক শত পূরণ না হেল আমরা দরকার মেতা কী
করেত হেব সটা িলখেবা, অথবা দরকার না হেল িকছুই িলখেবা না।
এবার নীেচ programিট খয়াল কেরা। এখােন আমরা উপেরর পাশ- ফল দখােনা অংশিটই
আবার দিখেয়িছ, তেব একটু িভ ভােব। িভ তাটা হেলা উপের যমন else এর পের সরাসির
cout << "fail" << endl; িলেখিছলাম, এখােন তা না কের else এর পের if (number

৩০২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২. Relational Operators (অ য়ী অণুি য়া)

< 50) িলেখিছ। তামােদর কােছ মেন হেত পাের, এটা তা র, বুঝেত িবধা কারণ িঠক যন
মা েষর ভাষায় আমরা য ভােব বিল যমন যিদ ন র 50 বা বশী হয় output দখাও পাশ নাহেল
যিদ ন র 50 এর কম হয় output দখাও ফল িঠক তার মেতা। কথা সত আমােদর বুঝা িবধা
হয় এ ভােব। িক আমরা এভােব িলখেবা না, কারণ else এর পের ওই if (number < 50)
িলখা আসেল অদরকারী আর স কারেণ তামার program ( মেলখ) খােমাকা slow ( থ) হেয়
যােব। ওই if (number < 50) লখাটা অদরকারী কারণটা আেগই খািনকটা জেনিছ তবুও
আেরকবার বিল else এর শাখায় আসা মােন হেলা number >= 50 এই শতিট িমথ া হেয়েছ।
আর এই শতিট িমথ া হওয়া মােন number < 50 শতিট অব ই সত । কােজই এিট আবার
আর একিট if লািগেয় পরী া করার কান েয়াজন নাই।
i f ( number >= 50) // যিদ পােশর ন র
cout << " pass " << endl ; // পাশ ফলন
e l s e i f ( number < 50) // না হেল
cout << " f a i l " << endl ; // ফল ফলন

তুিম যিদ একা ই মা েষর বুঝার িবধােথ ওই if (number < 50) টা িলখেত চাও, স-

5g
টা commentএর (টীকা) িভতের িলখেত পােরা। নীেচ যমন িলেখ দখালাম। এেত তামার
programও ( মেলখ) ধীর গিতর হেলা না, আবার তামার পে program পড়েতও সহজ
হেয় গেলা। আমরা এ রকমই ায়ই কের থািক। তেব অেনক ে else এর পের ওইরকম
একটা if দওয়া অব াবীও হেয় যায়, এটা আমরা পেরর একটা পােঠই িব ািরত দখেবা।
in
i f ( number >= 50) // যিদ পােশর ন র
cout << " pass " << endl ; // পাশ ফলন
e l s e / / i f ( number < 50) // না হেল
am

cout << " f a i l " << endl ; // ফল ফলন

এই আেলাচনার শষ কির আেরকটা ব াপার িদেয়, সটা হেলা indentation (ছাড়ন দ-


য়া)। Indentation িনেয় আেগ একবার আমরা আেলাচনা কেরিছলাম। খয়াল কেরা আমরা
if (number >=50) এর পের এই শত সত হেল য cout << "pass" << endl; টা
execute (িনবাহ) করেত হেব সটা পেরর সািরেত একটু িভতের থেক িলখেত কেরিছ।
এটা করেল computerএর (গণিন) জ িক কান লাভ বা িত নই, িক আমরা সহেজ চােখ
al

দেখই কমন বুঝেত পাির য ওই cout এর সািরিট আসেল তার আেগর সািরর if এর সােথর
শত সত হওয়ার ওপের িনভরশীল। তারপর দেখা পেরর সািরেত থাকা else আবার একটু িভতর
থেক না হেয় if বরাবরই হেয়েছ। এটা িদেয় আমরা বুঝােত চাই এই else টা আসেল
ওই if এর শতটা িমথ া হেল েযাজ হেব। ল া programএ ( মেলখ) যখন অেনক if আর
অেনক else থাকেব তখন কান else কান if এর সােথ তা match (িমলােনা) আমােদর পে
চােখ দেখ কিঠন হেয় যেত পাের। ওই িমলােনার িবধােথ if আর তার সােথর else এক বরাবর
িলখা হয়। সবেশেষ খয়াল কেরা else এর পেরর সািরর cout আবার একটু িভতর থেক লখা,
কারণ এটা execute (িনবাহ) হেব িকনা তা িনভর কের else এর ওপের। একটু িভতর থেক
লখা কের সইটাই বুঝােনা হয়।

১৫.২ Relational Operators (অ য়ী অণুি য়া)


Relational (অ য়ী) operators কী? িসিপিপেত ছয়িট relational operators >= > =
= != < <= রেয়েছ েটা রািশর তুলনা করার জ । এই operator েলা আেলাচনা কেরা।

৩০৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২. Relational Operators (অ য়ী অণুি য়া)

cout << " x y x>=y x>y x==y x ! =y x<y x<=y " << endl ;

cout << 3 << " " << 4 << " ";


cout << ( 3>= 4 ) << " " << ( 3>4 ) << " ";
cout << ( 3== 4 ) << " " << ( 3 ! = 4 ) << " ";
cout << ( 3<4 ) << " " << ( 3<= 4 ) << endl ;

cout << 4 << " " << 4 << " ";


cout << ( 4>= 4 ) << " " << ( 4>4 ) << " ";
cout << ( 4== 4 ) << " " << ( 4 ! = 4 ) << " ";
cout << ( 4<4 ) << " " << ( 4<= 4 ) << endl ;

cout << 4 << " " << 3 << " ";


cout << ( 4>= 3 ) << " " << ( 4>3 ) << " ";
cout
cout
<<
<<
( 4== 3 ) << "
( 4<3 ) << "
5g
" << ( 4 ! = 3 ) << "
" << ( 4<= 3 ) << endl ;
";

উপেরর programএ ( মেলখ) থেম আমরা েটা অসমান সংখ ার তুলনা কেরিছ যখা-
ন আেগরিট পেরিট থেক ছাট। তারপের আমরা েটা সমান সংখ ার তুলনা কেরিছ। সবেশেষ
in
আবােরা েটা অসমান সংখ ার তুলনা কেরিছ িক এখােন আেগরিট বড়, পেররিট ছাট। উ
programএর ি েত output (ফলন) কী হেব তা নীেচ দখােনা হেয়েছ।
ফলন (output)
am

x y x>=y x>y x==y x ! =y x<y x<=y


3 4 0 0 0 1 1 1
4 4 1 0 1 0 0 1
4 3 1 1 0 1 0 0

এখােন ছয়িট relational operators (অ য়ী অণুি য়া) ব বহার করা হেয়েছ। এ েলা হল
al

>= বড় বা বশী (greater or equal), > বড় (greater), == সমান (equal), != অসমান


(unequal), < ছাট (smaller), <= ছাট বা কম (smaller or equal)। একটা িবষয় খয়াল
কেরা এখােন == সমান িচ িক েটা = িচ িদেয়, একটা িদেয় নয়। Assignment (আেরাপণ)
হেলা একটা = িদেয়। Program ( মেলখ) িলখেত গেল আমােদর ায়শই এই ভুলিট হেয় যায়,
আর program িঠকঠাক কাজ কের না। তামরা এিদেক িবেশষ নজর রাখেব সব সময়।
যাইেহাক উপেরর outputএ (ফলন) দেখা, যখনই কান তুলনার ফলাফল সত হেয়েছ,
outputএ (ফলন) সিট এেসেছ 1 িহসােব আর যখােন তুলনার ফলাফল িমথ া তখনই এেসেছ 0।
আসেল এই relational operators (অ য়ী অণুি য়া) Boolean (বুলক) নােমর এক কােরর
মান ফলাফল িহসােব দয়। Boolean যটােক িসিপিপেত bool িহসােব লখা হয় সটা হেলা
এক রকেমর data type (উপা করণ)। Boolean মান কবল সত আর িমথ া হেত পাের।
িসিপিপেত মান েটা হল িমথ া 0 ও সত 1। Programএর ( মেলখ) িভতের অব িমথ া আর
সত েক 0 আর 1 িদেয় না বুিঝেয় আমরা চাইেল াকাের false ও true িদেয় বুঝােত পাির,
িক outputএ (ফলন) দখােল ওটা 0 আর 1 িহসােব দখােনা হেয় যােব।
উপেরর programএ ( মেলখ) যিদও কবল পূণক (integer) ব বহার করা হেয়েছ, তেব
relational operators (অ য়ী অণুি য়া) আসেল ভ েকর (fractioner) সােথও একই ভােব

৩০৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৩. If-Else Ladder (যিদ-নাহেল মই)

কাজ কের। চাইেল একটা ভ ক ও একটা পূণকও ওই operator েলােত এক সােথ ব বহার করা
যায়, আর সে ে পূণকিট (int) থেম ভ েক (float) type cast ( কারা িরত) হেয় যােব,
তারপর তুলনািট হেব েটা ভ ক (float) এর মেধ । ফলাফল অব ই হেব একিট Boolean
(bool) অথাৎ 0 বা 1। Relational operators (অ য়ী অণুি য়া) Boolean (bool) এর
ওপরও কাজ কের। সে ে false আর true ক ফ 0 আর 1 ধের পূণক িহসােব িবেবচনা
করেল তুলনার য ফলাফল আসার কথা তাই আসেব। উপেরর programএ তুিম 3 ও 4 এর
বদেল নানা রকম Boolean (bool) বা পূণক (int) বা ভ ক (float) মান েটা operandই
(উপাদান) একরকম বা েটা ইরকম কের বিসেয় ফলাফল েলা পযেব ণ করেত পােরা।

১৫.৩ If-Else Ladder (যিদ-নাহেল মই)


If-Else Ladder (যিদ-নাহেল মই) কী? If-Else Ladder ব বহার কের কান দ বছর leap
year (অিধবষ) িকনা তা িনণেয়র জ একিট program ( মেলখ) তরী কেরা।
থেম আমরা দিখ একটা বছর কখন leap year (অিধবষ) হয়। একিট দ বছর যিদ ৪০০

5g
ারা িবভাজ হয় তাহেল এিট leap year, যমন ১৬০০ ও ২০০০। তা নাহেল অথাৎ বছরিট যিদ
৪০০ িদেয় িবভাজ না হয় িক এিট যিদ ১০০ িদেয় িবভাজ হয় তাহেল এিট leap year নয়,
যমন ১৮০০ ও ১৯০০। তাও নাহেল অথাৎ বছরিট ১০০ ারাও িবভাজ নয় িক যিদ ৪ ারা
িবভাজ তাহেল এিট leap year, যমন ২০১২ বা ২০১৬। তাও নাহেল অথাৎ বছরিট যিদ ৪
ারা িবভাজ না হয় তাহেল এিট leap year নয় অথাৎ সাধারণ বষ যমন ২০১৪ বা ২০১৫। এই
in
কথা েলােক সংে েপ িলখেল দাঁড়ায় "যিদ ৪০০ ারা িবভাজ হয় তাহেল leap year, নাহেল
যিদ ১০০ ারা িবভাজ হয় তাহেল leap year নয়, নাহেল যিদ ৪ ারা িবভাজ হয় তাহেল leap
year, নাহেল leap year নয়।" আমরা এিটেকই programএ িলেখ ফলেবা।
am

িফিরি ১৫.২: Leap Year Determination (অিধবষ িনণয়)


i n t year ;
cout << " year i s ? " ;
c i n >> year ;
al

i f ( year % 400 == 0 ) / / ৪০০ িদেয় িবভাজ


cout << " leap year yes " << endl ;
e l s e i f ( year % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " leap year no" << endl ;
e l s e i f ( year % 4 == 0 ) / / ৪ িদেয় িবভাজ
cout << " leap year yes " << endl ;
else / / i f ( year % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
cout << " leap year no" << endl ;

cout << "how l o v e l y ! " << endl ;

এবার আমােদর programএর ( মেলখ) িদেক তাকাই। উপের সংে েপ িঠক য ভােব
leap year িনণয় করার িনয়ম বণনা কেরিছ, আমােদর programএ আমরা যন তাই িলেখিছ।
িমিলেয় নাও। Arithmetical operator েলার (পািটগিণতীয় অণুি য়া) পাঠ থেক মেন কেরা
দেখা % operator আমােদর ভাগেশষ ফলাফল দয়। তা ভাগেশষ যিদ হয় তাহেল আমরা

৩০৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৪. Nested If-Else (অ াি যিদ-নাহেল)

িবভাজ তা বুঝেত পারেবা, আর ভাগেশষ না হেল অিবভাজ তা। আমরা থেম ৪০০ িদেয়
িবভাজ তা পরী া কেরিছ, না হেল তারপর ১০০ িদেয় িবভাজ তা, তাও নাহেল তারপর ৪ িদেয়
িবভাজ তা পরী া কেরিছ। কমন ব একই রকম কের programিট লখা গেছ!
খয়াল কেরা িবভাজ হওয়া year %400 == 0 আর অিবভাজ হওয়া year %400 != 0
এই েটােতা িবপরীত শত। Programএ ( মেলখ) থম শত ব বহার করেল ওই শত সত
(অথবা িমথ া) হেল যা করেত হেব, একই কাজ ি তীয় শত ব বহার করেল সই শত িমথ া (অথবা
সত ) হেল করেত হেব। হেলা পর র িবপরীত এই েটার মেধ কান শতটা ব বহার করা
িচ ার জ সহজ। তাছাড়া 400 িদেয় িবভাজ তাই বা আেগ কন করেবা, 4 বা 100 িদেয় িবভাজ -
তাও তা আেগ করেত পাির? এসেবর উ র হল ব িত ম ও বশী ব িত ম েলা তাহেলেত রােখা,
আর বাঁদবাকী কম ব িত ম েলা সব রােখা নাহেলেত, তােত িচ া করা সহজ হেয় যায়, মেলখ
(program) তরীও সহজ হয়। যমন ৪০০ িদেয় িবভাজ হেল অিধবষ, এটা অেনক বশী ব -
িত ম, তুলনামুলক অ সংখ ক বছর ৪০০ িদেয় িবভাজ হেব। ১০০ িদেয় িবভাজ হওয়া আর
একটু কম ব িত ম মােন তুলনামুলক ভােব অেনক বছরই ১০০ িদেয় িবভাজ । ৪ িদেয় িবভাজ
হওয়া আেরা কম ব িত ম মােন তুলনামুলক ভােব অেনক বশী সংখ ক বছর ৪ িদেয় িবভাজ ।
আর ৪ িদেয় িবভাজ না হওয়া মাটামুিট সাধারণ ঘটনা ধরা যায়, বাদবাঁকী সব বছরই ৪ িদেয়

5g
অিবভাজ । খয়াল কেরা program ( মেলখ) সভােবই ব িত ম মাথায় রেখই লখা হেয়েছ।
সব চেয় বশী ব িত মী ব াপার সবেচেয় আেগ, সবেচেয় কম ব িত ম সবেচেয় পের।
আমােদর programএ indentation (ছাড়ন) দয়ার ব াপারটা একটু খয়াল কেরা। যিদও
আমরা জািন indentation দয়া না দওয়া অথবা ফাঁকা িদেয় িদেয় লখা বা না লখােত আমা-
in
দর programএর ( মেলখ) ফলাফেল কান পিরবতন হয় না। আমরা কবল মা েষর বাঝার
িবধােথ ও েলা কির। তারপরও খয়াল কেরা আমােদর বুঝার িবধােথ আমরা থেমর if , তা-
রপেরর else if েলা, সবেশেষর else আর তােদর শত সত হেল যা করেত হেব সব িমিলেয় কী
র একটা pattern (ধাঁচ) তরী কেরিছ। এই patternিট একিট মইেয়র মেতা কারণ আমা-
am

দর থম if িদেয় কের শত পরী া করেত করেত নীেচর িদেক নামেত হেব। আর য কান
একিট শত পূরণ হেলই তার জ য কাজিট করেত হেব পােশর িদেক িগেয় সিট করেলই পুেরা
patternিটর কাজই আসেল শষ হেয় যােব। মােন একটা শত সত হেল নীেচর িদেকর আেরা
কান শত আর পরী া করা হেব না, পুেরা patternএর কাজ শষ হেয় যােব। আর িঠক এর পের
য statement (িববৃিত) execute (িনবাহ) হেব সিট হেলা এই পুেরা patternএর বাইের
থাকা কান statement। যমন উপেরর programএ ল কেরা cout << "how lovely!
al

" << endl; হেলা পুেরা patternএর বাইের, তরাং if-lese ladder থেক বর হেয়ই ওইিট
execute হেত করেব।

১৫.৪ Nested If-Else (অ াি যিদ-নাহেল)


Nested if-else (অ াি যিদ-নাহেল) কী? Nested if-else ব বহার কের কান দ বছর
leap year (অিধবষ) িকনা তা িনণেয়র জ একিট program ( মেলখ) তরী কেরা।
একটা বছর কখন leap year হয়, সটা আেগই জেনিছ, তবুও আেরকবার: বছরিট যিদ
৪০০ ারা িবভাজ হয় তাহেল এিট leap year, যমন ১৬০০ ও ২০০০। তা নাহেল অথাৎ
বছরিট যিদ ৪০০ িদেয় িবভাজ না হয় িক এিট যিদ ১০০ িদেয় িবভাজ হয় তাহেল এিট leap
year নয়, যমন ১৮০০ ও ১৯০০। তাও নাহেল অথাৎ বছরিট ১০০ ারাও িবভাজ নয় িক যিদ
৪ ারা িবভাজ তাহেল এিট leap year, যমন ২০১২ বা ২০১৬। তাও নাহেল অথাৎ বছরিট যিদ
৪ ারা িবভাজ না হয় তাহেল এিট leap year নয় অথাৎ সাধারণ বষ যমন ২০১৪ বা ২০১৫।
আেগর পােঠ দখােনা আমােদর নীেচর programিট স ভােবই if-else ladder িদেয় লখা।

৩০৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৪. Nested If-Else (অ াি যিদ-নাহেল)

i f ( year % 400 == 0 ) / / ৪০০ িদেয় িবভাজ


cout << " leap year yes " << endl ;
e l s e i f ( year % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " leap year no" << endl ;
e l s e i f ( year % 4 == 0 ) / / ৪ িদেয় িবভাজ
cout << " leap year yes " << endl ;
else / / i f ( year % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
cout << " leap year no" << endl ;

উপেরর programএ ( মেলখ) দেখা ি তীয় if statementএ (িববৃিত) ১০০ িদেয় িব-
ভাজ তা পরী া করা হেয়েছ িক ৪০০ িদেয় অিবভাজ হওয়ার পের। তা আমরা যিদ year %
400 == 0 িলেখ িবভাজ তা পরী া না কের তার উে াটা year % 400 != 0 িলেখ অিবভাজ তা
পরী া করতাম তাহেল programিট কমন হেতা? তাহেল সালিট য leap year সটা দখােনার
cout চেল যেতা else এর সােথ। নীেচর programএর সােথ িমিলেয় নাও।

5g
i f ( year % 400 ! = 0 ) / / ৪০০ িদেয় অিবভাজ
i f ( year % 100 == 0 ) / / ১০০ িদেয় িবভাজ
cout << " leap year no" << endl ;
e l s e i f ( year % 4 == 0 ) / / ৪ িদেয় িবভাজ
in
cout << " leap year yes " << endl ;
else / / i f ( year % 4 ! = 0 ) ৪ িদেয় িবভাজ নয়
cout << " leap year no" << endl ;
am

else / / i f ( year % 400 == 0 ) ৪০০ িদেয় িবভাজ


cout << " leap year yes " << endl ;

তুিম এবার িজে স করেত পােরা, আ া আিম িক একই ভােব ১০০ বা ৪ িদেয় িবভাজ হওয়ার
if েলােকও ১০০ বা ৪ িদেয় অিবভাজ তার if িদেয় িলখেত পারতাম? াঁ অব ই। নীেচর
program ( মেলখ) খয়াল কেরা। আমরা িতিট if এর শতই বদেল এখন অিবভাজ তার
শত িদেয় িদেয়িছ। If-else ladderএ আমরা if এর সােথ থাকা শত িমথ া হেল তার else
al

এর পরপরই একটা if দখেত পতাম। এখােন দেখা উে াটা, if এর শত সত হেল বরং তার
পরপরই আেরকটা if দখা যাে । এটােক আমরা বলেবা nested if-else (অ াি যিদ-নাহেল)
অথাৎ একটা if-elseএর িভতের আেরকটা if-else, তার িভতের আেরকটা!
i f ( year % 400 ! = 0 ) / / ৪০০ িদেয় অিবভাজ
i f ( year % 100 ! = 0 ) / / ১০০ িদেয় অিবভাজ
i f ( year % 4 ! = 0 ) / / ৪ িদেয় অিবভাজ
cout << " leap year no" << endl ;
e l s e / / i f ( year % 4 == 0 ) ৪ িদেয় িবভাজ
cout << " leap year yes " << endl ;
else / / i f ( year % 100 == 0 ) ১০০ িদেয় িবভাজ
cout << " leap year no" << endl ;
else / / i f ( year % 400 == 0 ) ৪০০ িদেয় িবভাজ
cout << " leap year yes " << endl ;

৩০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৫. Dangling Else (ঝুল নাহেল)

Nested if-else (অ াি যিদ না হেল) লখায় indentation (ছাড়ন) দয়ার ব াপারিট


খয়াল কেরা। সবেচেয় িভতেরর else সবেচেয় িভতেরর if এর সােথ। মােঝর else মােঝর if
এর সােথ আর সবেচেয় বাইেরর else বাইেরর if এর সােথ। Commentএর (টীকা) অংশ -
লা দেখ িমিলেয় নাও। Program ( মেলখ) িলখেত indentation (ছাড়ন) দয়া য কতটা
পূণ সটা এখান থেক তামার বশ বুঝেত পারার কথা। Indentation (ছাড়ন) না থাকেল
program ( মেলখ) বুঝা আমােদর জ রহ হেব।
উপেরর আেলাচনায় একটা িজিনস আমরা দেখিছ: if-else ladder (যিদ-নাহেল মই) আর
nested if-else (অ াি যিদ-নাহেল) খািনকটা পর েরর িবপরীত। তুিম িক চাইেল এ েটার
িম ণ ঘটােত পােরা মােন পুেরাটাই মই না কের বা পুেরাটাই nested না কের ইরকমটাই ব বহার
করেল! যমন ধেরা আমরা যিদ থেম ১০০ িদেয় িবভাজ তা পরী া কির। তাহেল শত সত হেলই
আমরা অিধবষ বলেত পাির না। আমােদর দখেত হেব ৪০০ িদেয় িবভাজ িকনা। আর ১০০
িদেয় িবভাজ না হেল আমােদর দখেত হেব ৪ িদেয় িবভাজ িকনা। তা সই অ সাের নীেচর
program ( মেলখ) খয়াল কেরা এখােন nested if-else (অ াি যিদ-নাহেল) আেছ আবার
if-else ladderও (যিদ-নাহেল মই) আেছ। Indentation (ছাড়ন) দেখ িচনেত পারেছা? তুিম
িক আেরা নানান ভােব leap year (অিধবষ) িনণয় িনেয় আর if-else িনেয় খলেত পােরা।

5g
কান শত আেগ, কানটা পের, কানটা মােঝ, কানটােক nested করেব, কানটােক ladderএ
িদেব, চ া কের দখেব, মজাও পােব, িবষয় েলা িশখেবও!
i f ( year % 100 == 0 ) / / ১০০ িদেয় িবভাজ
i f ( year % 400 == 0 ) / / ৪০০ িদেয় িবভাজ
in
cout << " leap year yes " << endl ;
else / / ৪০০ িদেয় অিবভাজ
cout << " leap year no" << endl ;
am

e l s e i f ( year % 4 == 0 ) / / ৪ িদেয় িবভাজ


cout << " leap year yes " << endl ;
else // ৪ িদেয় অিবভাজ
cout << " leap year no" << endl ;
al

১৫.৫ Dangling Else (ঝুল নাহেল)


ডাক িবভাগ সারােদশেক অেনক অ েল ভাগ কের িতিট অ েলর একটা কের িমক ন র িদেয়
দয়। ঢাকার অ ল েলার িমক ন র ১০০ পয , তার মেধ ১৩ িদেয় িবভাজ ন র েলা হেলা
সংরি ত অ ল যমন ১৩, ২৬, ৩৯, ৫২, ৬৫, ৭৮, ৯১। ঢাকার িভতর থেক ডােক িচিঠ পাঠা-
নার খরচ সারােদেশর য কান জায়গায় হেল ৪ টাকা। িক গ ব িঠকানা ঢাকার িভতেরই হেল
খরচ ২টাকা, আর ঢাকার িভতেরই িক সংরি ত অ েল হেল খরচ ৩ টাকা। তুিম বশীর ভাগ
সময় ঢাকার িভতেরই কাথাও না কাথাও িচিঠ পাঠাও, তেব মােঝ মােঝ অ ও পাঠাও। তা
তামােক একিট program ( মেলখ) িলখেত হেব যিট তামার িচিঠর গ ব কত ন র অ -
ল input ( যাগান) িনেয় তামােক িচিঠ পাঠােনার খরচ outputএ (ফলন) দখােব। তামার
programএ ( মেলখ) তুিম অব ই if-else (যিদ নাহেল) ব বহার করেব িক তােত যন কান
ভােবই dangling else (ঝুল নাহেল) িদেয় ভুল না কের বেসা, সটা খয়াল রাখেব।
এই program ( মেলখ) লখা তা খুব সহজ। If-else ladder (যিদ-নাহেল মই) ব বহার
কের তুিম সহেজই িলেখ ফলেত পােরা। থেম পরী া করেব অ ল ১০০ এর চেয় বড় িকনা।
১০০ এর বড় হেল খরচ ৪ টাকা, কারণ অ লিট ঢাকার বাইের। আর নাহেল মােন অ লিট ঢাকার

৩০৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৫. Dangling Else (ঝুল নাহেল)

িভতের হেল এবার পরী া কের দখেব ১৩ িদেয় িবভাজ িকনা। ১৩ িদেয় িবভাজ হওয়া মােন
সংরি ত অ ল তরাং খরচ ৩ টাকা, আর ১৩ িদেয় িবভাজ না হেল মােন অসংরি ত এলাকা
হেল খরচ ২ টাকা। নীেচর programএর ( মেলখ) সােথ িমিলেয় দেখা।
i n t zone ; / / অ ল

cout << " which zone ? " ;


c i n >> zone ;

i f ( zone > 100) / / ঢাকার বাইের


cost = 4 ;
e l s e i f ( zone % 13 == 0 ) / / সংরি ত অ ল
zone = 3 ;
else / / অসংরি ত অ ল
zone = 2 ;

5g
এই programিট আেরা নানান ভােবই লখা স ব তুিম স েলা িনেজ িনেজ চ া করেব।
তেব আমরা তা কবল এিট সমাধানই িশখিছ না, আমরা িশখেবা dangling else (ঝুল নাহেল)
Patternিট (ধাঁচ) কমন সিট। তা আমােদর সম ার িববরেণ খয়াল কেরা একটা কথা আেছ
তুিম বশীর ভাগ িচিঠই পাঠাও ঢাকায়। আর সখােন অসংরি ত এলাকার সংখ ায় বশী। এ থেক
in
আমরা ধের িনেত পাির য খরচ বশীর ভাগ সময়ই ২ টাকা। কােজই আমরা cost variableিটর
মান েতই ২টাকা initial assignment (আিদ আেরাপণ) কের ফলেত পাির। তারপর শত
পরী া কের যিদ দিখ ঢাকার িভতের আর সংরি ত তাহেল খরচ কের িদেবা ৩ টাকা আর ঢাকার
বাইের হেল কের দেবা ৪ টাকা। নীেচর programিট দেখা। আমরা স রকমিট করার চ া
am

কেরিছ।
i n t cost = 2 ; / / ঢাকার িভতের অসংরি ত

i f ( zone <= 100) / / ঢাকার িভতের


i f ( zone % 13 == 0 ) / / সংরি ত
al

cost = 3 ;
else / / দখেত মেন হয় ঢাকার বাইের
cost = 4 ;

উপেরর অংশটু ব বহার কের কান program ( মেলখ) তরী কের চালােল সিট সিঠক
cost জানােব না। ঢাকার বাইেরর অ ল েলার জ যখােন খরচ ৪টাকা হওয়ার কথা, তা না
হেয় বরং ২টাকাই থাকেব। আর ঢাকার িভতেরর অসংরি ত এলাকার জ যখােন খরচ হও-
য়ার কথা ২টাকা তা না হেয় খরচ ৪টাকা হেব। Program ( মেলখ) চােখ দেখ তা মেন হে
সব িঠক আেছ, তেব কন এই িবপি ! আসেল িবপি বাঁিধেয়েছ else অংশিট। আমরা যভা-
ব indentation (ছাড়ন) িদেয় িলেখিছ তােত মেন হে else অংশটু থম if সােথর অথাৎ
zone <= 100 িমথ া হওয়ার সােথ জিড়ত। িক আসেল তা নয়। িতিট else তার পূেবর িন-
কটতম স ীহীন if এর সােথ জিড়ত। তার মােন এইখােন else িট পেরর if এর সােথ জিড়ত।
অথাৎ zone যিদ 13 িদেয় িবভাজ না হয় তার সােথ জিড়ত।
Nested if-else (অ াি যিদ-নাহেল) আেলাচনায় আমরা দেখিছলাম সবেচেয় িভতেরর
else িঠক সবেচেয় িভতেরর if এর সােথ, মােঝর else িঠক মােঝর if এর সােথ, আর বা-

৩০৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৬. Compound Statement ( যৗিগক িববৃিত)

ইেরর else িঠক বাইেরর if এর সােথ। আসেল কান else কান if এর সােথ যােব এখােন
indentationএর (ছাড়ন) কান ভাবই নই। য else এর জ if িমলােনা দরকার সখান
থেক উপেরর িদেক যেত থাকেল থম য if পাওয়া যােব যার সােথ কান ইত মেধ else দও-
য়া হয় নাই, সই if -ই হেলা আমােদর ওই else এর সােথর if । Indentation (ছাড়ন) কবল
আমােদর চােখর দখার জ , computerএর (গণিন) কােছ এর কান অথ নই। তাহেল সিঠ-
কভােব indentation (ছাড়ন) িদেয় িলখেল আমােদর উপেরর program ( মেলখ) আসেল
নীেচর মেতা হেব। তরাং বুঝেতই পারেছা উ াপা া indentaiton (ছাড়ন) দেখ তুিম ভাবেব
তামার program এরকম কাজ করেব, িক আসেল সটা কাজ করেব িভ রকম। আর ভুলটা
কাথায় তা বর করেত তুিম গলদঘম হেয় যােব!
i n t cost = 2 ; / / ঢাকার িভতের অসংরি ত

i f ( zone <= 100) / / ঢাকার িভতের


i f ( zone % 13 == 0 ) / / সংরি ত
cost = 3 ;
else
cost = 4 ;
5g
/ / অসংরি ত

এরকেমর সম া যখােন else কার সােথ তা বুঝেত আমােদর ঝােমলা লােগ, সই সম ােক
বলা হয় dangling else (ঝুল নাহেল)। উপেরর সিঠক indentation (ছাড়ন) িদেয় আমরা
in
বুঝেত পারলাম সম া কাথায় িক সমাধান িক আমরা এখেনা জািননা, else িক আসেলই
আমরা বাইেরর if এর zone <= 100 িমথ া হেল কী হেব তার জ িলখেত চাই। উপায় কী?
উপায় খুবই সহজ। িভতেরর if এর জ একটা else লািগেয় দাও, আর সই else এর জ
তা আমােদর িকছু করার নাই। কারণ ওই else এর জ খরচ ২টাকা সটা তা আমরা আেগই
am

initial assignmentএর (আিদ আেরাপণ) সময় িদেয় এেসিছ। িকছু করার নাই বুঝােত আম-
রা সাধারণত empty statement ( িববৃিত) ব বহার কির। আর কান িকছু ছাড়া কবল
semicolor (িদিত) ; িদেয় আমরা empty statement ( িববৃিত) বুঝাই। এবার তাহেল
পির ার হেয় গেলা কান else কান if এর জে ।
i n t cost = 2 ; / / ঢাকার িভতের অসংরি ত
al

i f ( zone <= 100) / / ঢাকার িভতের


i f ( zone % 13 == 0 ) / / সংরি ত
cost = 3 ;
else // অসংরি ত
; // িববৃিত
else / / ঢাকার বাইের
cost = 4 ;

১৫.৬ Compound Statement ( যৗিগক িববৃিত)

Compound statement ( যৗিগক িববৃিত) বলেত কী বুেঝা? Compound statement ও


if-else (যিদ-নাহেল) ব বহার কের একিট program ( মেলখ) িলেখা যিট থেম িট সংখ া

৩১০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৬. Compound Statement ( যৗিগক িববৃিত)

input িনেব। তারপর থম সংখ ািট 0 হেল পেরর সংখ ািটেক ব াসাধ ধের ফল ও পিরিধ
output িদেব। আর থম সংখ ািট 1 হেল ি তীয় সংখ ািটেক বেগর এক বা র দঘ ধের বগ-
িটর ফল ও পিরসীমা output িদেব। থম সংখ ািট 0 বা 1 ছাড়া অ িকছু হেল দখােব
"unsupported shape" অথাৎ এর জ আমােদর program কাজ করেব না।

f l o a t number1 , number2 ; // চলক ঘাষণা


cout << "two numbers are ? " ; // যাগান যাচনা
c i n >> number1 >> number2 ; // যাগান নওয়া

i f ( number1 == 0 ) / / যিদ বৃ হয়
{
cout << " area i s : " ;
cout << 3 . 1416 ∗ number2 ∗ number2 ;
cout << " perimeter i s : " ;
cout << 2 ∗ 3 . 1416 ∗ number2 << endl ;
}
e l s e i f number == 1 ) / / যিদ বগ হয়
{
cout << " area i s : " ;
cout << number2 ∗ number2 ;
5g
in
cout << " periment i s : " ;
cout << 4 ∗ number2 << endl ;
}
am

else
cout << " unsupported shape " << endl ;

cout << "wow so easy ! " << endl ;

এই programিট লখা খুবই সহজ। কবল একটাই ঝােমলা আেছ সটা হল if-elseএ (যিদ-
al

নাহেল) শত সত হাক বা িমথ া হাক আমােদর একটা statementএর (িববৃিত) বদেল এক


statement (িববৃিত) execute (িনবাহ) করেত হেব। এর আেগর সব উদাহরেণ আমরা দেখিছ
if-else (যিদ-নাহেল) শত সত বা িমথ া হেল কবল একটা মা statement (িববৃিত) িনবাহ
করেত। তা ঝােমলাটার সমাধানও আসেল সহজ। এক statementেক { } বাঁকা ব নীর
(curly brackets) িভতের ঢুিকেয় িদেলই হেলা। এর আেগ আমরা জেনিছলাম েটা বাঁকা ব -
নীর (curly brackets) { } িদেয় আমরা একটা block (মহ া) তরী কির। তা বাঁকা ব নীর
িভতের থাকা এক statementেক আমরা বিল compund statement ( যৗিগক িববৃিত)।
Compound statement হেলই য তার িভতের একািধক statement থাকেত হেব
এমন কথা নই। Block তরী কের কবল একটা statementও তার িভতের িলখেত পােরা।

i f ( number % 2 == 0 )
{ cout << number << " i s even " << endl ; }
else
{ cout << number << " i s odd" << endl ; }

৩১১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৬. Compound Statement ( যৗিগক িববৃিত)

Block (মহ া) তরীর ফেল অেনকসময় dangling elseএর (ঝুল নাহেল) ঝােমলা সহেজ
এড়ােনা স ব হয়। আেগর পােঠর এর িচিঠ পাঠােনার খরচ িনণেয়র সম ািট িবেবচনা কেরা।
সখােন else িট কান if এর তা িনেয় ঝােমলা তরী হেয়িছল আর আমরা empty statement
( িববৃিত) িদেয় সটা সমাধান কেরিছলাম। Empty statement হল ফ ; semicolon
(িদিত) তার আেগ িকছু নই। নীেচর programএ ( মেলখ) আমরা ওই িভতেরর if িটেক একিট
blockএর িভতের ঢুিকেয় িদলাম। ফেল blockএর (মহ া) বাইের থাকা else িট কানভােবই
blockএর িভতেরর if এর সােথ িমলােনা যােব না, কােজই সটা আর dangling থাকেব না।

i n t cost = 2 ; / / ঢাকার িভতের অসংরি ত


i f ( zone <= 100) / / ঢাকার িভতের
{
i f ( zone % 13 == 0 ) / / সংরি ত
cost = 3 ;
}
else
cost = 4 ;
5g
/ / ঢাকার বাইের

Block (মহ া) তরী কের চাইেল তার িভতের িক আমরা কান statement একদমই না
in
িদেত পাির অথাৎ কবলই িট বাঁকা ব নী (curly brackets) পরপর { }। সে ে এটাও
একরকেমর empty statement ( িববৃিত) তরী হেব। কােজই empty statement
তরীর েটা উপায় আমরা িশখলাম একটা হেলা কবলই ; semicolon (িদিত) দয়া আেরকিট
am

হেলা { } েটা বাঁকা ব নীর িভতের িকছু না লখা। থমিটর ব বহার আেগ দেখিছ আর নীেচ
ি তীয়িট ব বহার কের dangling else (ঝুল নাহেল) আেরকিট সমাধান দয়া হেলা।

i n t cost = 2 ; / / ঢাকার িভতের অসংরি ত

i f ( zone <= 100) / / ঢাকার িভতের


al

i f ( zone % 13 == 0 ) / / সংরি ত
cost = 3 ;
else // অসংরি ত
{} // িববৃিত
else / / ঢাকার বাইের
cost = 4 ;

তাহেল যখােনই তুিম একটা statement (িববৃিত) িদেত পােরা, সখােনই তুিম আসেল চা-
ইেল একটা statementএর বদেল একটা compund statementও ( যৗিগক িববৃিত) িদেত
পােরা, আবার একটা empty statementও ( িববৃিত) িদেত পােরা। এখন থেক আমরা
যখন statement (িববৃিত) বলেবা তখন তুিম সটা মােন কবল একটা statement বুঝেব
না, বরং দরকার মেতা সটা য compound statementও ( যৗিগক িববৃিত) হেত পাের বা
empty statementও ( িববৃিত) হেত পাের, তা বুেঝ িনেব কমন!

৩১২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৭. Error Detection ( িট শনা করণ)

১৫.৭ Error Detection ( িট শনা করণ)

একটা ি ঘাত সমীকরণ ax2 + bx + c = 0 এর সহগ েলা (coefficient) a, b ও বক


(constant) c এর মান input ( যাগান) িনেয় xএর মান িট িনণয় করার জ একিট program
( মেলখ) রচনা কেরা। এই programএ তামােক সব রকেমর execution-time (িনবাহকা-
লীন) error detect ( িট শনা ) কের তা ব বহারকারীেক জানােত হেব।

#i n c l u d e <cmath> / / বগমূেলর জ s q r t িবপাতক লাগেব

// ওপেরর অংশ main িবপাতেকর আেগ , নীেচর অংশ িভতের

float a , b , c ; // সহগ ও বক েলার জ চলক

cout << " e q u a t i o i n ax ˆ2 + bx + c = 0 " << endl ;


cout << " v a l u e s of a b c ? " ; / /
c i n >> a >> b >> c ;

f l o a t d = b∗b − 4∗a∗ c ; 5g
//
যাগান যাচনা
যাগান নয়া

// িন ায়ক
in
f l o a t x1 = (−b + s q r t ( d ) ) / ( 2∗a ) ; // থম সমাধান
f l o a t x2 = (−b − s q r t ( d ) ) / ( 2∗a ) ; // ি তীয় সমাধান
am

cout << " f i r s t s o l u t i o n x1 = " << x1 << endl ;


cout << " second s o l u t i o n x2 = " << x2 << endl ;

ি ঘাত সমীকরণ ax2 + bx + c =√0 এর সহগ ও বেকর মান না জেনও আমরা সমাধােনর
সূ বর করেত পাির x = (−b ± b2 − 4ac)/(2a)। এই সূে র বগমূল বর করার জ
আমােদর cmath header file (িশর নিথ) থেক sqrt function ব বহার করেত হেব। বাদ
al

বাঁকী অংশটু সহজ, উপেরর programএ ( মেলখ) দখােনা হেলা। থেম সমীকরণটা দখা-
না হেয়েছ। খয়াল কেরা xˆ2 িদেয় আমরা িক x এর বগ বুিঝেয়িছ। সহগ ও বক েলার মান
input ( যাগান) নয়ার পের আমরা b∗b − 4∗a∗c িনণয় কের variable d ত িনেয়িছ কারণ
এিট ইিট সমাধােনর জ ইবার ব বহার করেত হেব। যাইেহাক ওপেরর অংশটু ব বহার কের
লখা program ( মেলখ) কাজ করেব যিদ সমীকরণটা সহজ সাজা হয়, তােত কান ঝােমলা
না থােক! কী রকেমর ঝােমলা থাকেত পাের, িকছু অ মান করেত পােরা্?
আসেল program ( মেলখ) তরীর সময় আমােদর ধের িনেত হয় য ব বহারকারী সিঠক
input ( যাগান) যমন িদেত পাের তমিন যা ই া তা বিঠক inputও িদেত পাের। এইটা স
ভুল কের করেত পাের, না জেন করেত পাের, ই া কেরও করেত পাের। তামার কাজ ন কের
দয়ার আেরা নানািবধ উে ও থাকেত পাের। তেব আমরা আপাতত ধের িনই ব বহারকারী
ঝােমলা যা করার তা কবল ওই সহগ ও বেকর মান input ( যাগান) দওয়ার মাধ েমই করেব।
আর ওই ঝােমলা েলা করেল যা হেব তা হেলা উপেরর program আমােদর িনয় েণর বাইের
execution-time (িনবাহকালীন) error দিখেয় ব হেয় (abort) যেত পাের। এরকম একটা
error হেলা divide by zero ( িদেয় ভাগ), আর একটা error হেত পাের ঋণা ক সংখ ার
বগমূল বর করা! এই েটা িটই ি ঘাত সমীকরণ সমাধােনর ে ঘটেত পাের।

৩১৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৭. Error Detection ( িট শনা করণ)

এই সব ে আমােদর আেগ থেক বুঝেত পারেত হেব য ওই রকম িটপূণ ঘটনা ঘটেব কী
না, যিদ ওইরকম িট সিত ই ঘেট সটা আমােদর ব বহারকারীেক জানােত হেব। আমােদর তরেফ
জানােনাটা াভািবক। িক আমােদর অজাে যিদ িট ঘেট program ( মেলখ) ব হেয় যায়
তাহেল সটা কানভােবই হণেযাগ নয়। সটা একটা বল programmingএর (পিরগণনা)
উদাহরণ। আর আমরা িটটা ঘটবার আেগই ধরেত পারেল সটা ব বহারকারীেক জািনেয় চাই-
ল আমােদর programেক ( মেলখ) তারপেরও িনবাহ করা চািলেয় যেত িদেত পারেবা। তা
আমরা নীেচ ি ঘাত সমীকরণ সমাধােনর পুেরা programিট ( মেলখ) িলখেবা আর তােত সব
রকম িট ধের সটা ব বহার কারীেক জানােনার চ া করেবা। আর যখন িট হে তখন আমরা
return EXIT SUCCESS; না কের return EXIT FAILURE; করেবা।

িফিরি ১৫.৩: Solving Quadratic Equations (ি ঘাত সমীকরণ সমাধান)


#i n c l u d e <iostream> // cout ব বহার করার জ
#i n c l u d e <c s t d l i b> // EXIT SUCCESS / FAILURE এর জ
#i n c l u d e <cmath> // s q r t িবপাতক ব বহার করার জ

using namespace std ;

i n t main ( )
{
5g
// িমত নামাধার
in
float a , b , c ; // সহগ রাখার জ চলক।

cout << " equation ax ˆ2 + bx + c = 0 " << endl ;


am

cout << " v a l u e s of a b c ? " ; / / যাগান যাচনা


c i n >> a >> b >> c ; // যাগান নওয়া

/ / a বা b যিদ হয় তখন কী হেব? c হেল সম া নই !


i f ( a == 0 ) // a হেল সমীকরণ ি ঘাত নয় , একঘাত !
{
al

i f ( b == 0 ) / / b হেল কান বধ সমীকরণই নয় !


{
cout << " not a l e g a l equation ! " << endl ;
ret ur n EXIT FAILURE ; / / মেলখ িবফল
}

// b নয় , কােজই সমীকরণ কবলই একঘাত


cout << " not a q u a d r a t i c equation ! " << endl ;
cout << " assuming l i n e a r equation . " << endl ;
cout << " s o l u t i o n i s x = " << −c / b << endl ;
ret ur n EXIT SUCCESS ; / / মেলখ তবুও সফল ধরা যায়
}

// a নয় , কােজই বধ ি ঘাত সমীকরণ

৩১৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৭. Error Detection ( িট শনা করণ)

f l o a t d = b∗b − 4∗a∗ c ; // িন ায়ক িহসাব কেরা

i f ( d < 0 ) / / ঋণা ক িন ায়েকর বগমূল করা যায় না !


{
cout << " determinant negative ! " << endl ;
cout << "no r e a l s o l u t i o n ! " << endl ;
ret ur n EXIT FAILURE ; / / মেলখ িবফল
}

i f ( d == 0 ) / / িন ায়ক হেল েটা সমাধান সমান


{
cout << "two s o l u t i o n s are the same ! " << endl ;
cout << " c o i n c i d e n t a l x = " << −b / ( 2∗a ) << endl ;
ret ur n EXIT SUCCESS ; / / মেলখ সফল
}

// েটা সমাধান আেছ , আর তারা অসমান


5g
f l o a t x1 = (−b + s q r t ( d ) ) / ( 2∗a ) ; / / থম সমাধান
in
f l o a t x2 = (−b − s q r t ( d ) ) / ( 2∗a ) ; / / ি তীয় সমাধান

cout << " f i r s t s o l u t i o n x1 = " << x1 << endl ;


cout << " second s o l u t i o n x2 = " << x2 << endl ;
am

ret ur n EXIT SUCCESS ; // মেলখ সমাধান


}

Input ( যাগান) নবার পর থেম যিট আমােদর িবেবচনা করেত হেব তা হেলা সমীকরণিট
আসেল ি ঘাত সমীকরণ িকনা? যিদ a হয়, তাহেল সমীকরেণ কান x2 থােক না, এিট হেয়
al

যায় bx + c = 0 যিট একিট একঘাত সমীকরণ। এমন অব ায় আমরা আেরা পরী া কের দখব
bও িকনা। যিদ b হয় তাহেল থােক কবল c = 0, যখােন কান variable (চলক)
নই। কােজই আমােদর error message ( িট বাতা) দিখেয় return EXIT FAILURE;
বেল ফরত যেত হেব। নীেচর input-output ( যাগান-ফলন) খয়াল কেরা, a ও b হওয়ায়
error message ( িট বাতা) িদেয়েছ।
equation ax ˆ2 + bx + c = 0
v al u e s of a b c ? 0 0 3
not a l e g a l equation !

যিদ a হয় িক b না হয়, তাহেল আমরা if (a == 0) blockএর (মহ া) িভতেরই


আিছ, িক b না হওয়ায় সমীকরণিট আসেলই একঘাত হেয়েছ bx + c = 0। আমরা িক
ি ঘাত সমীকরণ সমাধান করেত চাই, িক আমােদর দয়া হেয়েছ একটা একঘাত সমীকরণ। তুিম
চাইেল এখােন error message ( িট বাতা) দিখেয় িবফল হেয় ফরত যেত পােরা। আবার
উদারতা দিখেয় নীেচর মেতা ওই একঘাত সমীকরেণর সমাধানই output (ফলন) িদেত পােরা।
তেব সােথ warning messageও (সতক বাতা) িদেয় িদেল য এটা ি ঘাত সমীকরণ নয়!

৩১৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৭. Error Detection ( িট শনা করণ)

equation ax ˆ2 + bx + c = 0
v al u e s of a b c ? 0 2 1
not a q u a d r a t i c equation !
assuming l i n e a r equation .
s o l u t i o n i s x = −0 . 5

যিদ a না হয় তাহেল এটা একটা বধ ি ঘাত সমীকরণ। তরাং থেম আমরা িন ায়ক
(discriminant) িনণয় কের একটা varaibleএ নেবা। উপেরর programএ খয়াল কেরা
float d = b∗b − 4∗a∗c; িলেখ তাই করা হেয়েছ। এখন িন ায়ক যিদ ঋণা ক (negative)
হয় তাহেল তা বগমূল িনণয় করা স ব না, িক ি ঘাত সমীকরেণর সমাধােনর সূে িন ায়েকর
বগমূল আমােদর দরকার। কােজই িন ায়েকর মান ঋণা ক হেল আমােদর পে সমাধান করা
স ব নয়। একিট error message ( িট বাতা) দিখেয় return EXIT FAILURE; ফরত
যাওয়া উিচৎ। নীেচর input-output ( যাগান-ফলন) খয়াল কেরা, িঠক তাই ঘেটেছ।
equation ax ˆ2 + bx + c = 0

determinant negative !
5g
v al u e s of a b c ? 2 −5 2

no r e a l s o l u t i o n !

Discriminant (িন ায়ক) যিদ ঋণা ক (negative) না হয়, তাহেল এবার দখেত হেব
in
এিট িকনা। কারণ হেল সে ে আমােদর সমাধান িটই হেব, িক সমাধান িট আবার
আলাদা আলাদা না হেয় একই হেব। এইরকম অব ােক বলা হয় সমাপিতত (coincidental)
সমাধান। নীেচর input-outputএ ( যাগান-ফলন) এিট দখােনা হেলা।
am

equation ax ˆ2 + bx + c = 0
v al u e s of a b c ? 1 −2 1
two s o l u t i o n s are the same !
coincidental x = 1

সবেশেষর য অব া সিট হেলা িন ায়ক ঋণা কও নয়, ও নয়, তাহেল সিট ধনা ক
al

(positive)। আর এিটই হেলা সই অব া আমরা যিট ধের িনেয় একদম েত একটা ছাট
program ( মেলখ) দিখেয়িছলাম। কােজই আমরা সই কাজটু কের েটা সমাধান আমা-
দর জানা সূ া যায়ী িনণয় কের ফলন দিখেয় return EXIT SUCCESS; কের মেলখ শষ
করেবা। নীেচর input-outputএ ( যাগান-ফলন) এই অব া দখােনা হেলা।
equation ax ˆ2 + bx + c = 0
v al u e s of a b c ? 2 −5 2
f i r s t s o l u t i o n x1 = 2
second s o l u t i o n x2 = 0 . 5

উপেরর িব ািরত programএ ( মেলখ) খয়াল কেরা িতিট if এর শত সত হেল য


blockিট (মহ া) িনবািহত হেব সই block শষ হেয়েছ একিট return িদেয়। তার মােন ওই
শত েলা সত হেল programএর ( মেলখ) নীেচর কান অংশ আর িনবািহত হেব না। আর
একারেণ সংি if এর শত িমথ া হেল যা হেব সিট আর আমরা একিট else িলেখ তারপর
আেরকিট blockএ (মহ া) ঢুিকেয় দই িন। কারণ if এর শত সত হেল য block (মহ া) তার
বাইের পুেরাটাইেতা এখন else এর জ , কােজই আলাদা কের block করার দরকার নই।

৩১৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৮. Boolean Connectives (বুলক সংেযাজক)

১৫.৮ Boolean Connectives (বুলক সংেযাজক)


একিট program ( মেলখ) রচনা কেরা যিট একিট পূণক (integer) input ( যাগান) িনেব।
তারপর সংখ ািট যিদ ৭ ও ১৩ উভয় ারা িবভাজ হয় তাহেল output (ফলন) িদেব "mixed
luck", যিদ ৭ ারাও িবভাজ না হয় আবার ১৩ ারাও িবভাজ না হয় তাহেল output িদেব "no
luck", যিদ কবল ৭ ারা িবভাজ হয় িক ১৩ ারা িবভাজ নয় তাহেল ফলন িদেব "good
luck", আর যিদ কবল ১৩ ারা িবভাজ হয় িক ৭ ারা নয় তাহেল ফলন িদেব "bad luck"।
যিদ সংখ ািট ৭ বা ১৩ য কান একিট বা উভয়িট ারা িবভাজ হয় তাহেল output িদেব "luck
luck"। একিট সংখ া একই সােথ উপেরর এক বা একািধক ভােগ পড়েতই পাের।

িফিরি ১৫.৪: Lucky & Unlucky Numbers ( সৗভাগ ও ভােগ র সংখ া)


i n t number ;
cout << "number i s ? " ;
c i n >> number ;

cout << " mixed l u c k " << endl ;


5g
i f ( number % 7 == 0 && number % 13 == 0 )

i f ( number % 7 ! = 0 && number % 13 ! = 0 )


cout << "no l u c k " << endl ;
in
i f ( number % 7 == 0 && number % 13 ! = 0 )
cout << "good l u c k " << endl ;
am

i f ( number % 13 == 0 && number % 7 ! = 0 )


cout << " bad l u c k " << endl ;

i f ( number % 7 == 0 | | number % 13 == 0 )
cout << " l u c k l u c k " << endl ;
al

উপেরর programএ ( মেলখ) && হেলা "এবং" আর | | হেলা "অথবা"। তুিম চাইেল
িসিপিপেত && এর বদেল and আর | | এর বদেল or িলখেত পােরা। আর বাংলায় কখেনা কখেনা
আমরা "এবং" এর বদেল "ও" বা "আর" িলখেবা, আর "অথবা" এর বদেল িলখেবা "বা"। যাই
হাক মেন রােখা && এর ফলাফল সত হয় যখন এর পােশর operandই (উপাদান) সত হয়,
আর যেকান একটা িমথ া হেলই ফলাফল িমথ া। অ িদেক | | এর ফলাফল িমথ া হয় যখন এর
পােশর operandই (উপাদান) িমথ া, আর য কান একিট সত হেলই ফলাফল সত । তা
উপেরর program বুঝার চ া কেরা। খুব কিঠন িকছু নয়। সম ািট িঠক যমন কের বাংলায়
বণনা করা হেয়েছ, programএও যন িঠক স রকম কেরই লখা হেয়েছ।
এবার ওই programেক আমরা িকছু উ য়েনর চ া কির। একটা িবষয় খয়াল কেরা িবভাজ
হওয়া বা িবভাজ না হওয়া আমরা বারবার িহসাব কেরিছ। এইটা তা হওয়া উিচৎ নয়। তাছাড়া
ভাগেশষ বর করা অ অেনক operator (অণুি য়া) তুলনায় মাটামুিট সময় সােপ কাজ।
আমােদর তাই একবার ভাগেশষ িহসাব কের সটাই বারবার ব বহার করা উিচৎ। তা সই অ যায়ী
আমরা programএ িকছু পিরবতন করেত পাির। মুলত ভাগেশেষর জ আমােদর েটা পূণক
(integer) varaible িনেত হেব int remain7 = number % 7; আর int remain13

৩১৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৮. Boolean Connectives (বুলক সংেযাজক)

= number % 13; আর তারপর িতিট number % 7 এর বদেল remain7 এবং িতিট


number % 13 এর বদেল remain13 িলখেত হেব। খুবই সহজ পিরবতন।
িক আমরা আসেল এই পিরবতেনর কথা বলিছ না। আমরা ভাগেশষ েলা পূণক (integer)
চলেক না রেখ বরং সংখ ািট ৭ বা ১৩ ারা িবভাজ িকনা তার সত তা বুলক (Boolean) চলেক
রাখেত চাই। এে ে আমরা bool divisible7 = number % 7 == 0; িলখেবা। তােত সং-
খ ািট ৭ ারা িবভাজ হেল divisible7 চলেকর মান হেব true বা 1 আর ৭ ারা িবভাজ না হেল
ওই variableএর মান হেব false বা 0। একই ভােব bool divisible13 = number % 13
== 0; িলখেল divisible13 এর মান হেব true বা 1 যিদ সংখ ািট 13 ারা িবভাজ হয় আর
মান হেব false বা 0 যিদ সিট 13 ারা িবভাজ না হয়। নীেচ এই program দখােনা হেলা।

i n t number ;
cout << "number i s ? " ;
c i n >> number ;

5g
bool d i v i s i b l e 7 = number % 7 == 0 ;
bool d i v i s i b l e 1 3 = number % 13 == 0 ;

i f ( d i v i s i b l e 7 && d i v i s i b l e 1 3 )
cout << " mixed l u c k " << endl ;
in
i f ( ! d i v i s i b l e 7 && ! d i v i s i b l e 1 3 )
cout << "no l u c k " << endl ;
am

i f ( d i v i s i b l e 7 && ! d i v i s i b l e 1 3 )
cout << "good l u c k " << endl ;

i f ( d i v i s i b l e 1 3 && ! d i v i s i b l e 7 )
cout << " bad l u c k " << endl ;
al

if ( divisible7 | | divisible13 )
cout << " l u c k l u c k " << endl ;

উপেরর programএ ( মেলখ) খয়াল কেরা divisible7 (বা একই ভােব divisible13)
এর মান সত নািক িমথ া আমরা িক divisible7 == true অথবা divisible7 == 1 িল-
খ কির নাই, যিদও তা করেত পারতাম। আমরা বরং ফ varaibleটা ব বহার কেরিছ কারণ
variableটার মানই তা সরাসির সত বা িমথ া। আবার আলাদা কের == operator (অণুি য়া)
িদেয় সত বা িমথ া পরী া করার দরকার নই। তেব খয়াল কেরা যখন িবভাজ নয় পরী া কর-
ত হেব তখন আমরা ! divisible7 (বা একই ভােব ! divisible13) িলেখ অথাৎ variableএর
নােমর সামেন ! লািগেয় িদেয়িছ। এখােন ! হেলা নয় বা না operator। তুিম চাইেল ! এর বদ-
ল িসিপিপেত not িলখেত পারেত। নয় operator সত েক operand (উপাদান) িহসােব িনেয়
িমথ া ফলাফল দয় আর িমথ ােক operand িহসােব িনেয় সত ফলাফল দয়। আর স কারেণ
divisible7 == false না িলেখ আমরা ! divisible7 িলখেলই আমােদর কাজ হেয় যায়।

৩১৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.৯. Boolean, Integer, Float (বুলক, পূণক, ভ ক)

১৫.৯ Boolean, Integer, Float (বুলক, পূণক, ভ ক)

একিট সংখ া জাড় না িবেজাড় তা িনণেয়র program রচনা কেরা। তামার programএ তুিম
কান Boolean variable (বুলক চলক) বা relational operator (অ য়ী অণুি য়া) ব বহার
করেত পারেব না। তামােক পূণক মানেকই Boolean িহসােব ব বহার করেত হেব।
i n t number = 41 ; / / তুিম চাইেল input িনেত পােরা।

i f ( number % 2 ! = 0 )
cout << "odd" << endl ;
else
cout << " even " << endl ;

এই programিট ( মেলখ) তুিম চাইেল উপেরর মেতা কের িলখেত পােরা। কান সংখ া
২ িদেয় ভাগ িদেল যিদ ভাগেশষ না হয় তাহেল সংখ ািট িবেজাড়, আর ভাগেশষ হেল


5g
সংখ ািট জাড়। কােজই programিট সহেজই িলেখ ফলা যায়। িক এেত অসমান িনণেয়র
জ একিট operator != ব বহার করেত হে , যিট চাইেল আমরা ব বহার না কেরও কাজ
চালােত পাির। এর কারণ হেলা য কান সময় েক আমরা িমথ া ধের িনেত পাির আর য কান
মানেক, সটা ধনা ক হাক বা ঋণা ক হাক, আমরা সটােক সত ধের িনেত পাির। তােত
আমােদর মানিট আালাদা কির িকনা তা আর পরী া করার দরকার পেড় না। কােজই নীেচর
in
programএর ( মেলখ) মেতা কের != বাদ িদেয় ফ if (number % 2) লখা মােনই
হেলা if (number % 2 != 0) লখা।
i n t number = 41 ; / / তুিম চাইেল যাগান িনেত পােরা।
am

i f ( number % 2 ) / / ভাগেশষ অ হেল


cout << "odd" << endl ;
else / / ভাগেশষ হেল
cout << " even " << endl ;
al

উপেরর উদাহরেণ আমরা কবল পূণক ব বহার কেরিছ। িক ভ ক সংখ ার ে ও একই


কথা েযাজ । যমন নীেচর মেলখেত ভ ক সংখ ািট িকনা তা িনণয় করা হেয়েছ। খয়াল
কের দেখা আমরা সংখ ািটেকই সরাসির শত িহসােব ব বহার কেরিছ। সংখ ািট না হেলই এিট
সত হেব zero ney output আসেব, আর সংখ ািট হেল output আসেব zero yes।
f l o a t number = −3 . 5 ; / / তুিম চাইেল যাগান িনেত পােরা।

i f ( number ) / / সংখ ািট অ হেল


cout << " zero ney " << endl ;
else / / সংখ ািট হেল
cout << " zero yes " << endl ;

তাহেল এখানকার আেলাচনায় আমরা দখলাম operand (উপাদান) িহসােব হেলা িম-
থ া (false) আর অ যেকান ধনা ক (positive) বা ঋণা ক (negative) পূণক (integer)
বা ভ ক (float) হেলা সত (true)। আর relational operators (অ য়ী অণুি য়া) আেলাচ-
নার সময় জেনিছ ফলাফল (result) িহসােব সবসময় false হেলা 0 এবং true হেলা 1। খয়াল

৩১৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১০. Boolean Algebra (বুলক বীজগিণত)

কেরা operand (উপাদান) িহসােব true 0 ছাড়া য কান িকছু হেলও ফলাফল (result) িহসােব
true কবল 1, false অব উভয় ে ই কবল 0।

১৫.১০ Boolean Algebra (বুলক বীজগিণত)


দ তার সােথ if else (যিদ নাহেল) ব বহার করেত চাইেল আমােদর Boolean algebra (বু-
লক বীজগিণত) জানা দরকার খািনকটা। অেনক সময় এবং &&, অথবা | |, নয় ! operators
(অণুি য়া) বশ কেয়কবার কের িনেয় তুিম হয়েতা জিটল একটা expression (রািশ) তরী কর-
ব যটা সরাসির evaluate (মূল ায়ন) করেত গেল ত কিট operator (অণুি য়া) ধােপ ধােপ
evaluate করেত হেব। িক Boolean algebra ব বহার কের সটা হয়েতা সরলীকরণ কের
ছাট কের অেনক কম operator (অণুি য়া) িদেয়ই কাশ করা স ব। Operatorএর সংখ া
কম হওয়া মােন সটা দ হেব, program execution (িনবাহ) করেত সময় কম লাগেব।
Boolean algebraেত (বুলক বীজগিণত) সত েক represent ( মূতায়ন) করা হয় true
বা 1 িদেয় আর িমথ ােক করা হয় false বা 0 িদেয়। িসিপিপেত operatorসমুহ (অণুি য়া) ফলা-

5g
ফেলর ে একদম এই প representationই ( মূতায়ন) মেন চেল, তেব operandএর
(উপাদান) ে িকছুটা উদার হেয় 0 ছাড়া যেকান মানেকই true িহসােব ধের নয়, false ধের
নয় যথারীিত কবল 0 ক। Operand ও ফলাফেলর ে true এর এই িভ তা মেন রাখেব।
অেনক সময় এিট িবধাজনক, আবার অেনক সময় এিট অেনক িটর (error) জ েদয়।
Boolean algebraএর (বুলক বীজগিণত) থম য operator (অণুি য়া) তাহেলা নয়,
in
না যটা ! বা not িলেখ কাশ করা হয়। নয় operatorএর operand (উপাদান) ও ফলাফল
(result) নীেচ খয়াল কেরা !true হেলা false আর ! false হেলা true। আমরা এখােন ≡ বা
সমতুল (equivalence) তীক ব বহার কের বুঝােবা য ওই তীেকর বাম ও ডানপাশ সমতুল।
am

• !true ≡ false • ! false ≡ true

ধেরা েটা ! পরপর আেছ যমন ! !true বা ! ! false বা ! !x, তাহেল ফলাফল কী হেব।
এইসব ে আমােদর ডােনর ! আেগ িহসাব করেত হেব, তার ওপর বােমর ! ধের শষ ফলাফল
িহসাব করেত হেব। একারেণ ! হেলা right associative (ডান সহেযাজ )। তা এখােন ডােনর
al

! operator true বা false ক উে িদেব আর বােমর ! সটােক আবার িসধা করেব। তরাং !
!true হেব true, ! ! false হেব false, আর ! !x হেব x। Boolean algebraেত এই িবিধেক
বলা হয় double negation ( েনা ঋণায়ন)। তুিম িক িতন বা বশী সংখ ক ! পরপর থাকেল
কী হেব বর করেত পারেব? অব ই পারেব, িত ইিট ! পর রেক বািতল কের িদেব।

• ! !x ≡ ! ( !x) right associative (ডান সহেযাজ )

• ! !x ≡ x double negation ( েনা ঋণায়ন)

• ! !true ≡ true double negation ( েনা ঋণায়ন)

• ! ! false ≡ false double negation ( েনা ঋণায়ন)

Boolean algebraএর (বুলক বীজগিণত) ি তীয় operator (অণুি য়া) এবং, ও যটা &
& বা and িলেখ কাশ করা হয়। ল কেরা এবং operatorএর ফলাফল (result) সত যখন
উভয় operandই (উপাদান) সত , আর যেকান একিট operand িমথ া হেলই ফলাফল িমথ া।

৩২০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১০. Boolean Algebra (বুলক বীজগিণত)

• true && true ≡ true • false && true ≡ false

• true && false ≡ false • false && false ≡ false

একিট operand সত বা িমথ া ধের িনেল এবং && operatorএর জে আমরা বশ


িকছু সরলীকরণ কের ফলেত পাির য েলােক আমরা true simplification (সেত র সরল)
ও false simplification (িমথ ার সরল) বলেবা। কান একিট operand আমরা যিদ আেগই
বুেঝ ফিল সিট সত না িমথ া তাহেল আমরা এই সরলীকরণ েলা কােজ লাগােত পারেবা।

• x && true ≡ x সেত র সরল • x && false ≡ false িমথ ার সরল

• true && x ≡ x সেত র সরল • false && x ≡ false িমথ ার সরল

Boolean algebraএর (বুলক বীজগিণত) তৃতীয় operator (অণুি য়া) অথবা, বা যটা
| | বা or িলেখ কাশ করা হয়। ল কেরা অথবা operatorএর ফলাফল (result) িমথ া যখন
উভয় operandই (উপাদান) িমথ া, আর যেকান একিট operand সত হেলই ফলাফল সত ।

• true | | true ≡ true

• true | | false ≡ true


5g
• false | | true ≡ true

• false | | false ≡ false


in
একিট operand সত বা িমথ া ধের িনেল অথবা | | operatorএর জে আমরা বশ
িকছু সরলীকরণ কের ফলেত পাির য েলােক আমরা true simplification (সেত র সরল)
ও false simplification (িমথ ার সরল) বলেবা। কান একিট operand আমরা যিদ আেগই
am

বুেঝ ফিল সিট সত না িমথ া তাহেল আমরা এই সরলীকরণ েলা কােজ লাগােত পারেবা।

• x | | true ≡ true সেত র সরল • x | | false ≡ x িমথ ার সরল

• true | | x ≡ true সেত র সরল • false | | x ≡ x িমথ ার সরল


al

Boolean algebraেত operator েলার (অণুি য়া) precedence order (অ গণ -


তার ম) হেলা থেম নয় !, তারপর এবং &&, আর শেষ অথবা | |, এই েমর অ থা করেত
চাইেল েয়াজেন ব নী ব বহার করেত হেব। তাছাড়া থেবাধকতা এড়ােত ব নী ব বহার করা
উিচৎ। নীেচর উদাহরণ িট খয়াল কেরা। থমিটেত আেগ ! তারপর &&, শেষ | | করেত হেব,
ব নী ব বহার কের সটাই বুঝােনা হেয়েছ। ি তীয় উদাহরণিটেত ! আেগ করেলও && আেগ | |
করায় সটা সিঠক হয় িন। এখােন ̸≡ িদেয় বুঝােনা হেয়েছ ইপাশ পর েরর সমতুল নয়।

• x && !y | | z ≡ (x && (!y)) | | z আেগ !, মােঝ &&, পের | |

• x && !y | | z ̸≡ x && ((!y) | | z) আেগ !, মােঝ | | নয়, পেরও && নয়

Mathematical operators (গািণিতক অণুি য়া) ও assignmentএর (আেরাপণ) সা-


থ যিদ logical operator েলা ( যৗি ক অণুি য়া) িমিলেয় দখা হয় তাহেল সব িমিলেয়
precedence order (অ গণ তার ম) িন প:

১. ++ −− unary postfix (এিকক উ র) left associative (বাম থেক ডােন)

৩২১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১১. Boolean Equivalence (বুলক সমতুল)

২. ++ −− + − ! unary prefix (এিকক পূব) right associative (ডান থেক বােম)

৩. ∗ / % binary ( িয়ক) left associative (বাম থেক ডােন)

৪. + − binary ( িয়ক) left associative (বাম থেক ডােন)

৫. && binary ( িয়ক) left associative (বাম থেক ডােন)

৬. | | binary ( িয়ক) left associative (বাম থেক ডােন)

৭. = += −= ∗= /= %= binary ( িয়ক) right associative (ডান থেক বােম)

৮. , binary ( িয়ক) left associative (বাম থেক ডােন)

১৫.১১ Boolean Equivalence (বুলক সমতুল)

5g
এবার আমরা বশ িকছু equivalence law (সমতুল িবিধ) দখেবা। এই law েলার বামপাশ
আর ডানপাশ সবসময় equivalent। আমরা তাই এ েলা ব বহার কের িবিভ সমেয় আমােদর
logical expression ( যৗি ক রািশ) সরল করার চ া করেবা।
in
নীেচর েটা িবিধ হেলা এবং, অথবার িবিনময় িবিধ (commutative law)। িবিনময় িবিধেত
operatorএর (অণুি য়া) operand েলা পাশ পিরবতন করেলও ফলাফল একই থােক।
am

• x && y ≡ y && x িবিনময় • x || y ≡ y || x িবিনময়

নীেচর েটা িবিধ হেলা সহেযাজন িবিধ (associative law)। এই িবিধেত একই operator
(অণুি য়া) পরপর থাকেল আমরা য কানিট আেগ মূল ায়ন (evaluate) কের তার ফলাফেলর
সােথ অ operatorএর মূল ায়ন করেত পাির, আর তােত ফলাফল একই হেব।
al

• x && y && z ≡ (x && y) && z ≡ x && (y && z) সহেযাজ

• x | | y | | z ≡ (x | | y) | | z ≡ x | | (y | | z) সহেযাজ

নীেচর েটা িবিধ হেলা ব টন িবিধ (distributive law)। এই িবিধেত িট িভ operator


(অণুি য়া) পরপর থাকেল আমরা একিটেক আেরকিটর ওপর ব টন কের িদেত পাির। পািটগিণেত
ব টন িবিধর উদাহরণ হেলা x ∗ (y + z) = x ∗ y + x ∗ z।

• x && y | | z ̸≡ x && (y | | z) ≡ (x && y) | | (x && z) ব টন

• x | | y && z ̸≡ (x | | y) && z ≡ (x && z) | | (y && z) ব টন

• x | | y && z ≡ x | | (y && z) ≡ (x | | y) && (x | | z) ব টন

• x && y | | z ≡ (x && y) | | z) ≡ (x | | z) && (y | | z) ব টন

৩২২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১২. Truth Table (সত ক সারণী)

নীেচর িবিধ েলা হেলা শাষন িবিধ (absorption law)। থম চারিট িবিধেত খয়াল কেরা
x যিদ true হয় তাহেল x | | y বা y | | x এর মানও true আর ফেল && এর ফলাফলও
true। আবার x যিদ false হয় তাহেল && এর ফলাফল অব ই false। তাহেল বামিদেকর
রািশ েলার মান সবসময় x এর মান যা তাই। একই ভােব শেষর চারিট িবিধেত খয়াল কেরা x
যিদ false হয় তাহেল x && y বা y && x এর মানও false। আবার x যিদ true হয় তাহেল
| | এর ফলাফল অব ই true। তাহেল বামিদেকর রািশ েলার মান সব সময় x এর মান যা তাই।
কােজই এই িবিধ েলা তামাকের বুলক রািশেক কত সহজ ও ছাট কের ফেল!
• x && (x | | y) ≡ x শাষন • x | | (x && y) ≡ x শাষন

• x && (y | | x) ≡ x শাষন • x | | (y && x) ≡ x শাষন

• (x | | y) && x ≡ x শাষন • (x && y) | | x) ≡ x শাষন

• (y | | x) && x ≡ x শাষন • (y && x) | | x) ≡ x শাষন

নীেচর িবিধ েটােত operator েলার operand েটা একই। এবং && ও অথবা | | উভ-

5g
য়র ফলাফল এে ে সবসময় operandিটর মান যা তাই হেব। একিট operandএর িনেজর
সােথ িনেজর ওপর কান operator (অণুি য়া) যু হেল ফলাফল যিদ operandিটই হয়
তাহেল operatorিটর এই ধমেক বলা হয় idempotence (অ ি য়তা)। সব operatorই
িক idempotent নয়, যমন পািটগিণেত সবাব ায় x + x = x সত নয়, কােজই যাগ +
idempotent নয়। Boolean algebraেত এবং && ও অথবা | | উভেয়ই idempotent।
in
• x && x ≡ x অ ি য়তা • x || x ≡ x অ ি য়তা

নীেচর িবিধ েটােত operator েলার (অণুি য়া) operand েটা পর েরর িবপরীত।
am

এবং && এর ফলাফল এে ে সবসময় false হেব, কারণ েটা operandএর মেধ য কান
একিট তা িমথ া হেবই, আর য কান একিট িমথ া হেলই এবং এর ফলাফল িমথ া। তাই এই িব-
িধেক বলা হয় contradiction (অস িত)। আর অথবা | | এর ফলাফল এে ে সবসময় true
হেব, কারণ েটা operandএর মেধ য কান একিট তা সত হেবই, আর য কান একিট সত
হেলই অথবা এর ফলাফল সত । তাই এই িবিধেক বলা হয় excluded middle (নঞ মধ ম)।
al

• x && !x ≡ false অস িত • x | | !x ≡ true নঞ মধ ম

নীেচর িবিধ েটার নাম De Morgan's Law (িড মরগােনর িবিধ)। এই িবিধ েটা খুবই
পূণ এবং ায়শই Boolean expressionএর সরলীকরেণ ব ব ত হয়। এই িবিধ অণুযায়ী
এবং && এর ফলাফেলর ওপর নয় ! করেল য ফলাফল পাওয়া যায় তা আেগ operand েলার
ওপের নয় ! কের সই ফলাফেলর ওপর অথবা | | চািলেয় পাওয়া ফলাফেলর সমতুল। একই ভােব
অথবা | | এর ফলাফেলর ওপর নয় ! করেল য ফলাফল পাওয়া যায় তা আেগ operand েলার
ওপের নয় ! কের সই ফলাফেলর ওপর এবং && চািলেয় পাওয়া ফলাফেলর সমতুল।

• ! (x && y) ≡ !x | | !y িড মরগান • ! (x | | y) ≡ !x && !y িড মরগান

১৫.১২ Truth Table (সত ক সারণী)


Equivalence law েলা য সিঠক, অথবা য কান েটা Boolean expression সমতুল িক-
না, এইটা তুিম কীভােব মাণ করেব। মাণ করাটা আসেল খুবই সহজ। Operand েলার মােনর

৩২৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১২. Truth Table (সত ক সারণী)

যত রকম combinaiton (সমােবশ) স ব, িতিটর জ তামােক equivalence lawএর


বাম ও ডান পাশ সমান িকনা পরী া কের দখেত হেব। আমরা সাধারণত truth table (সত ক
সারণী) ব বহার কের সটা কের থািক। চেলা উদাহরণ িহসােব আমরা De Morgan's Law -
টার থমিট মাণ কির। একই প িত অ সরণ কের তুিম িড মরগােনর অ িবিধিট মাণ করেত
পারেব। আর চাইেল উপেরর অ া য কান সমতুেলর িবিধ েলাও িনেজ িনেজ মাণ করেব।
িড মরগােনর থম সূ িটেত variable (চলক) আেছ ইিট x ও y, আর variable িটর
মান স ব কবল true ও false। এখন িট variableএর জে িট মান িনেয় আমরা চারিট
combination (সমােবশ) পেত পাির। এর িতিটর জ আমরা িবিধিটর বাম পাশ ও ডান পাশ
মূল ায়ন (evaluate) কের দখেবা। এখােন বেল রািখ কান সমতুল িবিধেত (equivalence
law) যিদ ৩িট variable থােক তাহেল সমােবশ হেব ৮িট, ৪িট থাকেল হেব ১৬িট, অথাৎ nিট
variable থাকেল combination হেব 2n িট। আর এর িতিট combinationএর জ truth
tableেত (সত ক সারণী) একিট কের row (আিড়) থাকেব। Truth tableেত column েলা
(খািড়) হেব িবিভ subexpressionএর (উপরািশ) মান য েলার মান আমােদর মূল ায়ন কর-
ত হেব যিদ আমরা মুল expressionএর মান পেত চাই। যমন ! (x && y) মূল ায়ন করেত
গেল আমােদর x && y আেগ মূল ায়ন করেত হেব, তমিন ভােব !x | | !y মূল ায়ন করেত
গেল !x ও !y মূল ায়ন করেত হেব।

x y
5g
Truth Table (সত ক সারণী)
x && y ! (x && y) !x !y !x || ! y
in
true true true false false false false
true false false true false true true
false true false true true false true
am

false false false true true true true

উপেরর truth table (সত ক সারণীেত) িতিট row (আিড়) খয়াল কেরা:

১. থম rowেত (আিড়) x ও y উভেয়র মানই true। তরাং x && y ও true, ফেল ! (


x && y) হেব false। তারপর !x আর !y উভয়ই হেলা false, ফেল !x | | !y হেলা
al

false। কােজই ! (x && y) আর !x | | !y উভেয়র মান সমান।

২. ি তীয় rowেত (আিড়) x,y যথা েম true, false, ফেল x && y হেলা false আর ! (
x && y) হেলা true। তারপর !x ও !y হেব যথা েম false ও true, ফেল !x | | !y
হেলা true। তরাং ! (x && y) আর !x | | !y এর মান সমান।

৩. তৃতীয় rowেত (আিড়) x,y যথা েম false , true, ফেল x && y হেলা false আর ! (
x && y) হেলা true। তারপর !x ও !y হেব যথা েম true ও false, ফেল !x | | !y
হেলা true। তরাং ! (x && y) আর !x | | !y এর মান সমান।

৪. চতুথ rowেত (আিড়) x ও y উভেয়র মানই false। তরাং x && y ও false, ফেল !
(x && y) হেব true। তারপর !x আর !y উভয়ই হেলা true, ফেল !x | | !y হেলা
true। কােজই ! (x && y) আর !x | | !y উভেয়র মান সমান।

তরাং operand েলার (উপাদান) মান যাই হাক না কন সবাব ায় ! (x && y) আর !x | |


!y এর মান সমান, অথাৎ তারা এেক অপেরর সমতুল মাণ হেয় গেলা।

৩২৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৩. Boolean Simplification (বুলক সরলীকরণ)

১৫.১৩ Boolean Simplification (বুলক সরলীকরণ)


Conditional programmingএ (শতািল পিরগণনা) Boolean algebra (বুলক বীজগিণত)
িঠক কী কােজ লােগ? Boolean algebra ব বহার কের িকছু সরলীকরেণর উদাহরণ দখাও।
আর এই সরলীকরেণর কারেণ programএ ( মেলখ) কী ভাব পেড় সটাও দখাও।
ধেরা তামােক একিট program ( মেলখ) িলখেত হেব যিট তুিম কান ণীেত পেড়া আর
তামার বয়স কত এই িট input ( যাগান) িনেয় জানােব তুিম মারগ লড়াই খলেত পারেব িক
না। তুিম যিদ প ম ণীেত পেড়া তাহেল তুিম মারগ লড়াই খলেত পারেব। আর তুিম যিদ প ম
ণীেত নাও হও িক তামার বয়স যিদ ১০ বছর হয় তাহেলও তুিম মারগ লড়াই খলেত পারেব।
এই programিট আমরা if-else িদেয় খুব সহেজ িলেখ ফলেত পাির।
নীেচর program খয়াল কেরা। আমরা েটা variable ব বহার করিছ level ও age, য
েটা থেম ঘাষণা (declare) কের তারপর input prompt ( যাগান যাচনা) দিখেয় input
( যাগান) িনেত হেব। ধের িনই তুিম ও েলা িনেজ িনেজ করেত পারেব। আমরা কবল াসি ক
অংশটু দিখ। থেম if (level==5) িদেয় পরী া করা হেলা প ম ণী িকনা, হেল output
(ফলন) হেব "can play"। আর প ম ণী যিদ না হয় িক বয়স যিদ ১০ বছর হয় সটা পরী া

(ফলন) দখােবা "can't play"। একটা


সটা িসিপিপেত িগেয় হেয় যাে "এবং" &&।
5g
করার জ আমােদর লাগেব if (level != 5 && age == 10) যিট আমরা আেগর if এর
else এর সােথ লািগেয় িদেবা। আর সবেশেষ কান if এর শতই সত না হেল আমরা output
পূণ িবষয় খয়াল কেরা, বাংলা ভাষায় যটা "িক "
in
i f ( l e v e l == 5 )
cout << " can pl a y " << endl ;
e l s e i f ( l e v e l ! = 5 && age == 10)
am

cout << " can pl a y " << endl ;


e l s e / / উপেরর কানিটই না হেল
cout << " can ' t p l a y " << endl ;

উপেরর মেলখেত েটা if এর শত সত হেলই আমােদর একই ফলন দখােত হয়। আমরা
তাই চ া করেত চাই একটা if িদেয় িবষয়টা সামলােত। সটা করা খুবই সহজ যিদ তুিম সম াটা
al

উে া িদক থেক ভােবা। তুিম মারগ লড়াই খলেত পারেব যিদ তুিম ৫ম ণী পেড়া অথবা তুিম
৫ম ণীেত না িক তামার বয়স ১০ বছর হেল। তা এই থেক তুিম খুব সহেজ খলেত পারার
শত িলেখ ফলেত পােরা level == 5 | | level != 5 && age == 10, তাই না!
i f ( level == 5 | | l e v e l ! = 5 && age == 10)
cout << " can pl a y " << endl ;
else / / উপেরর শত সত না হেল
cout << " can ' t p l a y " << endl ;

এখন কথা হে এই য খািনকটা জিটল একটা শত আমরা িলেখ ফললাম, এটােক িক কান
ভােব সরলীকরণ করা যায়? সরলীকরণ করার জ চেলা ধের িনই p ≡ level == 5 আর q ≡
age == 5। তাহেল level != 5 ক লখা যায় !p। ফেল আমােদর শতিট দাঁড়ােলা p | | !p
&& q, আমরা এিটেক Boolean algebra (বুলক বীজগিণত) িদেয় সরল করেবা।

p | | !p && q দ শত যা সরল করেত হেব


≡ (p | | !p) && (p | | q) ব টন িবিধ (distribution)

৩২৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৩. Boolean Simplification (বুলক সরলীকরণ)

≡ true && (p | | q) নঞ মধ ম (excluded middle)

≡ p || q সেত র সরল (true simplification)

তরাং উপেরর সরেলর ফেল া expression (রািশ) অ যায়ী আমােদর program দাঁ-
ড়ােব িন প, যখােন আমােদর একিট অিতির শত আর মূল ায়ন করেত হে না। আমরা p
এর বদেল level == 5 আর q এর বদেল age == 10 িলখেবা।
i f ( level == 5 | | age == 10)
cout << " can pl a y " << endl ;
else / / উপেরর শত সত না হেল
cout << " can ' t pl a y " << endl ;

একই রকম আেরকিট উদাহরণ দেখা। ধেরা কান একটা programএ ( মেলখ) শত দাঁ-
ড়াে ! (p && (!p | | q)) | | q। এখন কথা হে এিটেক সরল করেল কী দাঁড়ােব।

! (p && (!p | | q)) | | q দ শত যা সরল করেত হেব

≡ ! (false | | (p && q)) | | q

≡ ! (p && q) | | q
5g
≡ ! ( (p && !p) | | (p && q)) | | q ব টন িবিধ (distribution)

অস িত (contradiction)

িমথ ার সরল (false simplification)


in
≡ ( !p | | !q) | | q িড মরগান (De Morgan)

≡ !p | | ( !q | | q) সহেযাজন (associative)
am

≡ !p | | true নঞ মধ ম (excluded middle)

≡ true সেত র সরল (true simplification)

উপেরর সরলীকরেণর ফেল আমরা if ( ! (p && (!p | | q)) | | q) না িলেখ কবল if (


true) িলখেত পারেবা। িক একটা িবষয় দেখেছা, সরলীকরেণর ফলাফল একদম একটা বক
al

মান true হেয় গেছ। এর অথ দ শেতর মান কখেনা variable p বা q এর ওপর িনভর
কেরনা। তরাং আমােদর আেদৗ কান if লাগােনার দরকার নাই। কারণ শত সত হেল যিট
করেত হেতা শত সবসময় সত হওয়ায় তুিম সিট এখন শত পরী ণ ছাড়াই করেব।
/ / i f ( true ) / / শত লখার দরকার নাই , টীকায় আটেক িদেয়িছ
cout << " kee moja " << endl ; / / কবল এিট িলখেলই হেব

তুিম এবার িজে স করেত পােরা সরলীকরেণর ফেল যিদ false আেস তাহেল কী হেব?
সিত ই তা কী হেব? সে ে আমােদর িলখেত হেব if (false) তাই না! িক সটা মােন তা
শত সব সময় িমথ া, শতিটর সত হওয়ার কান স াবনা নই। আর সে ে শত সত হেল যা
করার কথা িছেলা সটা কখেনাই করেত হেব না। ফেল তুিম এই if (false) আর তারপর শত
সত হেল যা করেত তার সব program ( মেলখ) থেক মুেছ িদেত িদেত পােরা।
/ / i f ( f a l s e ) / / শত লখার দরকার নাই , টীকায় আটেক িদেয়িছ
/ / cout << " kee moja " << endl ; / / শত সব সময় িমথ া

৩২৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৪. Ladder, Nesting, Connective(মই, অ াি , সংেযাজক)

১৫.১৪ Ladder, Nesting, Connective(মই, অ াি , সংেযাজক)


If-else ladder (যিদ-নাহেল মই) ও nested if-else (অ াি যিদ-নাহেল) ব বহার না কের
কী ভােব connectives (সংেযাজক) এবং &&, অথবা | |, নয় ! ব বহার কের একই উে
বা বায়ন করা যায় তা আেলাচনা কেরা। অথবা উে াটা অথাৎ connective ব বহার না কের
কী ভােব if-else ladder বা nested if ব বহার কের কাজ চালােনা যায় তা দখাও।
নীেচর উদাহরণ েলা খয়াল কেরা। এ েলােত েটা কের আেছ। বামপােশর ে if-
else ladder (যিদ-নাহেল মই) অথবা nested if-else (অ াি যিদ-নাহেল) িদেয় program
লখা হেয়েছ, আর ডান পােশর ে তার equivalent (সমতুল) program ( মেলখ) লখা
হেয়েছ connectives (সংেযাজক) এবং && অথবা | | না ! িদেয়। আমরা আসেল িবধামেতা
কখেনা বামপােশর মেতা কের িলিখ আবার কখেনা ডানপােশর মেতা কেরও িলিখ।
i f ( cond1 ) i f ( cond1 | | cond2 )
cout << " something " ; cout << " something " ;
e l s e i f ( cond2 ) else

else
cout << " something " ;

cout << " other t h i n g " ;


cout << " be done " << endl ;
5g cout << " other th i ng " ;
cout << " koro " << endl ;
in
উপেরর if-else ladderএর (যিদ-নাহেল মই) উদাহরেণ খয়াল কেরা cond1 সত হেলও
"something" outputএ (ফলন) যােব আবার cond2 সত হেলও outputএ (ফলন) যােব
"something"। আর এ েটাই িমথ া হেল outputএ যােব "other thing"। বাম ও ডান
am

উভয় পােশর programএই ( মেলখ) এই একই ব াপার ঘটেব। একটা িবষয় উে খ করা দর-
কার: cond1 সত হেল বামপােশ দেখা cond2 পরী ণই দরকার পের না। ডানপােশও আসেল
একই ঘটনা ঘটেব। অথবা | | এর ফলাফল যেহতু য কান একিট operand সত হেলই সত
হয়, সেহতু cond1 সত হেলই cond2 এর মুল ায়ন ছাড়াই | | এর ফলাফল সত হেয় যােব।
এই য ব াপারিট এটােক বলা partial evaluation (আংিশক মুল ায়ন), এেত অদরকারী কাজ
িকছুটা কেম, program ( মেলখ) িকি ত তগিতর হয়।
al

i f ( cond1 ) i f ( cond1 && cond2 )


i f ( cond2 ) cout << " something " ;
cout << " something " ; else
else cout << " other th i ng " ;
cout << " other t h i n g " ; cout <<" be done "<< endl ;
else
cout << " other t h i n g " ;
cout << " be done " << endl ;

উপেরর nested if-elseএর (অ াি যিদ-নাহেল) উদাহরেণ খয়াল কেরা cond1 সত


হেল তারপর cond2ও সত হেল "something" outputএ (ফলন) যােব। আর শত েটার
যেকান একটা িমথ া হেলও outputএ (ফলন) যােব "other thing"। বাম ও ডান উভয় পা-
শ programএই ( মেলখ) এই একই ব াপার ঘটেব। এখােনও সই একটা িবষয় উে খ করা
দরকার: cond1 িমথ া হেল বামপােশ দেখা cond2 পরী ণই দরকার পের না। ডানপােশও
আসেল একই ঘটনা ঘটেব। অথবা && এর ফলাফল যেহতু য কান একিট operand িমথ া

৩২৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৪. Ladder, Nesting, Connective(মই, অ াি , সংেযাজক)

হেলই িমথ া হয়, সেহতু cond1 িমথ া হেলই cond2 এর মুল ায়ন ছাড়াই && এর ফলাফল িম-
থ া হেয় যােব। এই য ব াপারিট এটােক বলা partial evaluation (আংিশক মুল ায়ন), এেত
অদরকারী কাজ িকছুটা কেম, গিত িকছুটা বােড়।
i f ( cond ) i f ( ! cond )
cout << " something " ; cout << " other thi ng
";
else else
cout << " other th in g " ; cout << " something " ;
cout << " be done " << endl ; cout << " be done " <<
endl ;

উপেরর উদাহরেণ বামপােশ cond ব বহার করা হেয়েছ আর ডানপােশ !cond। ফেল শত
সত হেল যা করেত হেব আর িমথ া হেল যা করেত হেব এই েটা ান বদলাবদিল কেরেছ।
i f ( cond1 ) i f ( cond1 | | ! cond2 )

else
cout << " something " ;
e l s e i f ( cond2 )
5g
cout << " other th in g " ;

cout << " something " ;


cout << " something " ;
else
cout << " other t hi ng " ;
cout <<" be done "<< endl ;
in
cout << " be done " << endl ;

উপেরর উদাহরেণ লে কের দেখা "something" outputএ (ফলন) যােব যিদ cond1
সত হয় অথবা যিদ cond2 িমথ া হয়, অ কথায় !cond2 সত হয়। আর cond1 িমথ া হেল
am

তারপর cond2ও িমথ া হেল outputএ (ফলন) যােব "other thing"। িঠক এই ব াপারিটই
উভয়পােশর programএ িতফিলত হেয়েছ।
i f ( cond1 ) i f ( ! cond1 | | cond2 )
i f ( cond2 ) cout << " something " ;
cout << " something " ; else
al

else cout << " other t hi ng " ;


cout << " other th in g " ; cout << " be done " <<
endl ;
else
cout << " something " ;
cout << " be done " << endl ;

উপেরর উদাহরণিট একটু জিটল। বামপােশ খয়াল কেরা "something" outputএ যােব
যিদ cond1 িমথ া হয় অথবা তা না হেল যিদ cond2 সত হয়। কথায় বলেল িঠক তাই-ই ডা-
নপােশও িলখা হেয়েছ। আর একটু বশী গভীের বুঝেত চাইেল ধেরা বামপােশ "something"
outputএ যােব যিদ cond1 && cond2 || !cond1 সত হয়। Boolean algebra িদেয়
সরলীকরণ করেল এিট আসেব !cond1 || cond2, তুিম িনেজ চ া কের দেখা।
bool cond = true ; i f ( cond1 && cond2 )
i f ( ! cond1 ) cout << " something " ;
cond = f a l s e ; else

৩২৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৫. If-Else Optimisation (যিদ-নাহেল অ লায়ন)

i f ( ! cond2 ) cout << " other th i ng " ;


cond = f a l s e ; cout << " be done " << endl ;
i f ( cond )
cout << " something " ;
else
cout << " other t h i n g " ;
cout << " be done " << endl ;

উপেরর এই উদাহরণিট খয়াল কেরা। থম িট if এেকবাের আলাদা আলাদা, কউ কােরা


nestedও (অ াি ) নয়, আবার ladderও (মই) নয়। ডানপােশ যমন খুব র কের সংে -
প আমরা cond1 && cond2 িলেখিছ। অেনকসময়ই এটা করা স ব হয় না। কারণ শত েটা
আলাদা কের থেম মূল ায়ন করাটা হয়েতা বশ এক একটা কাজ। তা এইরকম ে আমরা
বামপােশ যিট কেরিছ আলাদা একটা varaible িনেয়িছ cond যখােন মুলত আমরা && এর
ফলাফল চাই। আমরা জািন && ফলাফল য কান একিট operand (উপাদান) িমথ া হেলই িম-
থ া হয়। তাই আমরা েত cond এর মান িনেয়িছ true, এরপর cond1 িমথ া হেল অথাৎ

5g
!cond1 সত হেল আমরা cond ক িমথ া কের িদেয়িছ। একই ভােব cond2 িমথ া হেল অথাৎ
!cond2 সত হেলও আমরা cond ক িমথ া কের িদেয়িছ। তাহেল েটা শেতর য কানিট িমথ া
হেলই cond িমথ া হেয় যােব। িঠক && এর ফলাফেলর মেতা। শেষর if elseএ এবার cond
ব বহার কের output দবার পালা। তেব একটা িবষয় খয়াল কেরা ডানপােশ যমন cond1
িমথ া হেল partial evaluationএর (আংিশক মূল ায়ন) cond2 আর পরী ণই করা হেব না,
in
বামপােশ িক তা হে না। তুিম যিদ এই উ য়ন টু করেত চাও তাহেল তামােক if ( !cond2)
বদেল িলখেত হেব else if ( !cond2)।
bool cond = f a l s e ; i f ( cond1 | | cond2 )
am

i f ( cond1 ) cout << " something " ;


cond = true ; else
i f ( cond2 ) cout << " other th i ng " ;
cond = true ; cout << " be done " << endl ;
i f ( cond )
cout << " something " ;
al

else
cout << " other t h i n g " ;
cout << " be done " << endl ;

এই উদাহরণিটও িঠক আেগর উদাহরণিট মেতা, তেব এখােন | | এর জ করা হেয়েছ। অথ-
বার | | ে যেকান একিট operand (উপাদান) সত হেলই ফলাফল সত হয়, আমরা তাই
cond এর আিদ মান ধেরিছ false। আর তারপর শত েটার য কানিট সত হেলই cond ক
সত করা হেয়েছ। তুিম যিদ partial evaluation (আংিশক মূল ায়ন) এখােনও কােজ লাগােত
চাও তাহেল বামপােশ if (cond2) বদেল else if (cond2) িলখেব।

১৫.১৫ If-Else Optimisation (যিদ-নাহেল অ লায়ন)


ধেরা তামার ইশ েল গিণত পরী ায় ৫০ বা বশী পেল পাশ, না হেল ফল। আর ৮০ বা বশী
পেল তারকা িনেয় পাশ। তামার ণীেত ১০০ জন িশ াথী আেছ, যােদর মেধ মাটামুিট ১০ জন

৩২৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৫. If-Else Optimisation (যিদ-নাহেল অ লায়ন)

ফল করেব, ২০ জন তারকা সহ পাশ করেব আর বাঁকী ৭০ জন ফ পাশ করেব। তুিম এমন একিট
program ( মেলখ) রচনা কেরা যিট একজন িশ াথীর ছাে র ন র input ( যাগান) িনেয়
ফল, পাশ, বা তারকা সহ পাশ output (ফলন) িদেব। তামার মেলখিট ১০০ জন িশ াথীর
জ ১০০ বার আলাদা আলাদা কের চালােনা (run) হেব। তেব এই ১০০ বার চালােনােত মাট
সময় যােত কম লােগ programটা সটা মাথায় রেখ রচনা করেত হেব।
i f ( number >= 50) // যিদ পােশর ন র
cout << " pass " << endl ; // পাশ ফলন
else // না হেল
cout << " f a i l " << endl ; // ফল ফলন

i f ( number >= 80) // যিদ তারকা ন র


cout << " s t a r " << endl ; // তারকা ফলন

ধেরা উপেরর মেতা কের তুিম program তরী কেরেছা। য িশ াথী ফল করেলা বা পাশ
করেলা বা তারকা সহ পাশ করেলা, তার জ তা যা output তা দখােতই হেব, সখােন সময়

5g
কম লাগা বশী লাগার ব াপার নাই। সময় কম বা বশী লাগার হেলা তুিম কতবার শত পরী-
া কের কাজটা করেত পারেছা সটােত। যমন ধেরা একজন ফল করা িশ াথীর জ উপেরর
programএ (number >=50) শত পরী া হেব আবার program য ভােব লখা হেয়েছ তা-
ত number >= 80 শতিটও পরী া হেব। শত পরী ার ফলাফল সত হাক আর িমথ া হাক
in
পরী া তা করেতই হেব। ফেল মাট িট শত পরী া হেলা। য িশ াথীিট কবল পাশ করেব
খয়াল কের দেখা তার জে ও িটই শতই পরী া করেত হেব। একই হেব তারকাসহ পােশর
ছাে র জে ও িট শতই পরী া করেত হেব। তরাং উপেরর program িদেয় এই সম ার
সমাধান করেল ১০০ জন িশ াথীর জ মাট শত পরী া হেলা ১০০ * ২ = ২০০ বার।
am

i f ( number >= 50) // যিদ পােশর ন র


{
cout << " pass " << endl ; // পাশ ফলন
i f ( number >= 80) // যিদ তারকা ন র
cout << " s t a r " << endl ; // তারকা ফলন
al

}
else // না হেল
cout << " f a i l " << endl ; // ফল ফলন

এবার একটু ভেব দেখা পাশ বা ফল িনণয় করার জ তা আমােদর একটা শত লাগেবই,
িক যখন আমরা জেন গলাম একজন িশ াথী ফল কেরেছ, তখন তার জে ও কন আমরা
number >= 80 শত পরী া করেবা? সটা তা অদরকারী কাজ হেব। তরাং তারকা দ-
খােনা অংশটু যিদ আমরা পােশর জ য অংশ সখােন একটা block (মহ া) তরী কের সই
blockএর িভতের িনেয় যাই, তাহেল number >= 80 শতিট কবল পাশ করা িশ াথীেদর জ
পরী া হেব। উপেরর program দেখা। তা এই ে পাশ বা ফল িশ াথীর জ কবল ১ টা
শত পরী া হেলা আর তারকা পাওয়া ছাে র জ ২টা তরাং মাট শত পরী ণ হেলা ২০*২ +
(৭০+১০)*১ = ১২০ বার মা । িনি তভােবই এই program আেগরিটর চেয় তাড়াতািড় ১০০
জন িশ াথীর ফলাফল দখােনার কাজ শষ করেব! কমন মজার িবষয় না!
i f ( number >= 80) // যিদ তারকা ন র
{

৩৩০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৬. Ternary Operator (িতিনক অণুি য়া)

cout << " pass " << endl ; // পাশ ফলন


cout << " s t a r " << endl ; // তারকা ফলন
}
e l s e i f ( number >= 50) // যিদ পােশর ন র
cout << " pass " << endl ; // পাশ ফলন
else // না হেল
cout << " f a i l " << endl ; // ফল ফলন

তুিম হয়েতা ভাবেছা দিখ আেরক ভােব করা যায় িকনা যােত আেরা কম সময় লােগ। য-
মন ধেরা তুিম থেম ৮০ বা বশী িকনা পরী া করেব, তারপর ৫০ এর বশী িকনা পরী া
করেব, অথাৎ উপেরর programএর ( মেলখ) মেতা কের। এখােন খয়াল কেরা তারকা পা-
ওয়া িশ াথীেদর জ শত পরী া করা লাগেব ১বার সিট number >= 80 আর ফ পাশ
বা ফল করা িশ াথীেদর জ ২িট শতই পরী া করা লাগেব। ফেল মাট শত পরী ণ হেব
২০*১ + (৭০+১০)*২ = ১৮০ বার। তরাং উপেরর এই তৃতীয় program আমােদর লখা থম
programএর চেয় একটু তগিতর হেলও ি তীয়িটর চেয় যেথ ধীরগিতর হেব। তুিম আেরা

5g
নানান ভােব চ া কের দখেত পােরা, তেব আমােদর ি তীয় programিটই সবেচেয় তগিতর
হেব, কারণ এেত সবেচেয় কম সংখ ক বার শত পরী া করেত হেয়েছ।
আ া তুিম কী ধরেত পেরেছা কন ি তীয় programিটেত সবেচেয় কম সংখ ক বার শত
পরী া করেত হেব? উ রটা িক খুবই সহজ। আমােদর দখেত হেব সবেচেয় বশী সংখ ক
িশ াথী কান ভােগ পেড়। এে ে ফ পাশ কের সেবা ৭০ জন। আমরা চাইেবা এই ৭০ জেনর
in
জ output (ফলন) যােত কম সংখ ক, এে ে মা একটা শত পরী া কেরই িদেত পাির।
উ া িদেক য ভােগ িশ াথীর সংখ া যত কম তার জ তত বশী শত পরী া করা যেত পাের।
আমােদর তৃতীয় programএ আমরা আসেল এই িনয়ম ভ কেরিছ। কারণ এটােত তারকা পাওয়া
am

২০ জেনর ফলন আমরা দখাই মা ১বার শত পরী া কের, আর পাশ করা ৭০জেনর output
দখাই ২বার শত পরী া কের। আর স কারেণ এিট ি তীয় output থেক ধীরগিতর হেব। তা
এখন থেক if-else িনেয় কাজ করার সময় শতিদেয় সৃি হওয়া ডাল-পালা েলার কানটােত
কত েলা case (ব াপার) আসেত পাের সটা মাথায় রেখ দ program তরী করেব, কমন!
al

১৫.১৬ Ternary Operator (িতিনক অণুি য়া)


িসিপিপেত conditional programmingএ (শতালী পিরগণনা) ternary operator (িত-
িনক অণুি য়া) কী? উদাহরণসহ ternary operatorিটর ব বহার দখাও।
িসিপিপ ভাষায় ? : এই তীক িটেক একসােথ ব বহার কের ternary operatorিট (িত-
িনক অণুি য়া) পাওয়া যায়। Ternary operatorিট if-then-else (যিদ-তাহেল-নাহেল) কাজ
কের, তেব েটার মেধ তফাৎ হেলা ternary operator একিট expressionএর (রািশ)
অংশ িহসােব থােক, ফেল এর একটা ফলাফল তরী হেব। আর if-else একটা conditional
statement (শতযু িববৃিত) তরী কের যার কান ফলাফল নই।
i n t f i r s t , second ; / / চলক িটর মান যাগান িনেত পােরা

i n t l a r g e = f i r s t > second ? f i r s t : second ;

Ternary operator ব বহার কের আমরা উপের েটা সংখ ার বড়িট বর করার program
দিখেয়িছ। এখােন থেম ? িচে র আেগ য শত পরী া আেছ সিট মূল ায়ন হেব। শত যিদ

৩৩১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৬. Ternary Operator (িতিনক অণুি য়া)

সত হয় তাহেল question ? আর colon দাঁটা : িচে র মােঝ য মানিট আেছ সিট হেব
operatorিটর ফলাফল আর শত যিদ িমথ া হয় তাহেল operatorিটর ফলাফল হেব colon
( দাঁটা) : িচে র পের থাকা অংশটু । তাহেল উপেরর programএ first > second শতিট
সত হেল ফলাফল হেব first অথাৎ বড়িট আর শতিট িমথ া হেল ফলাফল হেব second কারন
এিটই তখন বড় অ িটর চেয়। তরাং আমরা ফলাফল িহসােব first ও second varaible-
িটর মেধ সবসময় বড়িটই পাি । তুিম িন য় এখন েটা সংখ ার মেধ ছাটিট বর করার
program এভােব িলখেত পারেব!
i n t f i r s t , second ; / / চলক িটর মান যাগান িনেত পােরা
int large ; / / বড় মানিট রাখার জ চলক ঘাষণা

f i r s t > second ? l a r g e = f i r s t : l a r g e = second ;

তুিম িক চাইেল েটা সংখ ার বড়িট বর করার জ উপেরর মেতা কেরও িলখেত পারেত।
এইে ে variable (চলক) largeএ মান assign (আেরাপণ) আমরা ternary operatorএর
িভতেরই কেরিছ খয়াল কেরা। Assign (আেরাপণ) operatorএর ফলাফল তা assign করা

5g
মানিটই হয়, তরাং এে ে ও ternary operatorএর ফলাফল িহসােব আমরা বড়িটই পােবা,
যিদও large variable মান assign আেগই হেয় িগেয়েছ। তুিম িজে স করেত পােরা এই ে
ternary operatorিটর যটা ফলাফল আসেব সটা আসেল কী কােজ লাগেব। এইখােন আসেল
আমরা ফলাফলিট কােজ লাগাি না। িক তুিম চাইেল int result = first > second ?
in
large = first : large = second; িলখেতই পােরা। সে ে বড় মানিট large চলেকর
মেধ যমন থাকেব তমিন result varaibleএর মেধ ও থাকেব। Ternary operatorএর
ব বহার এভােব বশ সংি ।
am

i n t f i r s t , second ; / / চলক িটর মান যাগান িনেত পােরা


int large ; / / বড় মানিট রাখার জ চলক ঘাষণা

i f ( f i r s t > second ) // থমিট বড় হেল


large = f i r s t ;
else
al

l a r g e = second ; / / আর তা না হেল

Ternary operatorএর কাজ তা উপেরর মেতা কের if-else িদেয়ও করা যেত পাের।
তাহেল কখন তুিম ternary operator ব বহার করেব কখন if-else ব বহার করেব? অত
সংি ধরেনর বেল ternary operator (িতিনক অণুি য়া) আসেল টুকটাক ছাটখাট িকছুর
জ বশী ব বহার করা হয়। আর if-else হেলা একদম সব জায়গায় ব বহার করার জ , িবেশষ
কের শত সত বা িমথ া হেল যিদ একটা block (মহ া) execute (িনবাহ) করেত হয়।
i n t f i r s t , second , t h i r d ; / / মান যাগান িনেত হেব

i n t l a r g e = f i r s t > second ? f i r s t : second ;


large = large > third ? large : third ;

তুিম িক ternary operator (িতিনক অণুি য়া) ব বহার কের িতনিট সংখ ার মেধ সবেচেয়
বড়িট বর করেত পারেব। িন য় পারেব, এ আর এমন কিঠন কী? উপেরর programএর মেতা
কের থেম েটার মেধ বড়িট বর করেব। তারপর large এর সােথ thirdিট তুলনা কের যিদ

৩৩২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৭. Switch Cases (পি ব াপার)

largeিটই বড় হয় তাহেল ফলাফল large আর যিদ thirdিট বড় হয় তাহেল ফলাফল third


িট। িক আমরা আসেল এই রকম আলাদা েটা ternary operator চাি না। আমরা বরং
একটা ternary operatorেক আেরকিট ternary operatorএর মেধ ঢুিকেয় িদেবা, আর
যােক বলব nested ternary operator (অ াি িতিনক অণুি য়া)। নীেচর program খয়াল
কেরা, আমরা একটু indentation (ছাড়ন) িদেয় িলেখিছ। থেম first ও second তুলনা করা
হেয়েছ। শত সত হওয়া মােন first বড় যিটেক third এর সােথ তুলনা করা হেয়েছ। আর শত
িমথ া হওয়া মােন second বড়, কােজই এিটেক third এর সােথ তুলনা করা হেয়েছ। Ternary
operator ব বহার কেরই আেরা নানান ভােব এিট করা স ব, তুিম িনেজ িনেজ চ া কের দেখা।
i n t f i r s t , second , t h i r d ; / / মান যাগান িনেত হেব

i n t l a r g e = f i r s t > second ?
( f i r s t > third ? f i r s t : third ) :
( second > t h i r d ? second : t h i r d ) ;

১৫.১৭ Switch Cases (পি


5g
ব াপার)
এমন একিট program ( মেলখ) রচনা কেরা যিট একিট পূণক (integer) আর একিট ভ ক
(fractioner) input ( যাগান) িনেব। পূণকিট ১ হেল programিট পেরর সংখ ািটেক কােণর
in
পিরমান রিডয়ােন ধের িনেয় তার sine (ল া পাত) output িদেব। আর পূণকিট ২ হেল cosine
(ল া পাত), ৩ হেল tangent ( শা পাত) output িদেব। তেব এই িতনিটর কানিটই না হেল
বলেব "unsupoorted choice"। এই programিটেত তুিম switch case (পি ব াপার)
am

ব বহার করেব আর if-elseএর ব বহােরর সােথ কী তফাৎ হয় সটাও আেলাচনা করেব।


িফিরি ১৫.৫: Trigonometry with Menu ( াপণ সহ ি েকাণিমিত)
int ratio ; // কান অ পাত s i n e , cosine , tangent
f l o a t angle ; / / কােণর পিরমান রিডয়ােন
al

/ / থেম াপণ (menu) দখােনা হেব


cout << " r a t i o 1 : s i n e " << endl ;
cout << " r a t i o 2 : cosine " << endl ;
cout << " r a t i o 3 : tangent " << endl
cout << endl ;

/ / তারপর অ পাত ও কাণ যাগান নয়া হেব


cout << " r a t i o : " << endl ; // যাগান যাচনা
c i n >> r a t i o ; // যাগান নওয়া
cout << " angle : " << endl ; // যাগান যাচনা
c i n >> angle ; // যাগান নওয়া

/ / পি ব াপার ব বহার কের ফলন দখােনা হেব


switch ( r a t i o ) / / এখােন চলক না হেয় কান রািশও হেত পাের
{

৩৩৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৭. Switch Cases (পি ব াপার)

case 1 : / / ল া পাত ( s i n e ) cmath িশরনিথ লাগেব


cout << " s i n e : " << s i n ( angle ) << endl ;
break ;
case 2 : / / ল া পাত ( cosine ) #i n c l u d e <cmath>
cout << " cosine : " << cos ( angle ) << endl ;
break ;
case 3 : // শা পাত ( tangent ) cmath িশরনিথ লাগেব
cout << " tangent : " << tan ( angle ) << endl ;
break ;
default : / / অগত া িট বাতা ( e r r o r )
cout << " unsupported r a t i o " << endl ;
break ;
}

cout << "how l o v e l y ! " << endl ; / / পি র বাইের অ িকছু

5g
উপেরর program ( মেলখ) খয়াল কেরা। যমন বলা হেয়েছ তমন কের িট variable
নয়া হেয়েছ: কান অ পাত তা রাখার জ variable ratio আর কত রিডয়ান কান তা রা-
খার জ variable angle। এরপর একটা menu ( াপণ ) দখােনা হেয়েছ, কান সংখ া িদেয়
কান অ পাত বুঝােনা হে সটা ব বহারকারীেক জানােনার জ : 1 িদেল sine (ল া পাত), 2
in
িদেল cosine (ল া পাত), 3 িদেল tangent ( শা পাত)। এরপের অ পাত ও কাণ input
( যাগান) নয়ার জ থেম input prompt ( যাগান যাচনা) কের তারপর input নওয়া হেয়-
ছ। তারপর মুল অংশ যখােন switch case (পি ব াপার) ব বহার কের য অ পাত চাওয়া
am

হেয়েছ সিট দখােনা হেব। Switch-caseএর পের আেছ অ িকছু programএর বাঁকী অংশ।
আমরা কবল switch-case (পি ব াপার) অংেশ নজর দই। যেহতু ratio variable-
িটর (চলক) মান ওপর িনভর করেব আমরা কান অ পাত outputএ (ফলন) দখােবা, আমরা
তাই িলেখিছ switch(ratio) আর তারপর আমােদর একিট block (মহ া) তরী করেত হেব
{ } বাঁকা ব নী (curly brackets) যুগল িদেয়। এবার অ পােতর মান কত হেল কী করেত
হেব তার সবিকছু আমরা রাখেবা blockএর িভতের। খয়াল কেরা ratio এর মান 1, 2, 3 হও-
al

য়ার জ আমােদর িতনিট case (ব াপার) আেছ যমন case 1: case 2: case 3:; খয়াল
কেরা থেম case তারপের ratio variableিটর কান মান সিট তারপর একটা : colon ( দাঁ-
টা)। িতিট caseএর (ব াপার) পের দেখা আমরা cout িদেয় ি েকানিমিতর অ পাত sine,
cosine, tangent ব বহার কের output দিখেয়িছ। তারপর িলেখিছ break; অথাৎ এইখা-
ন switch-caseএর break ( াি ) ঘটেব। এই breakএর ( াি ) কাজ আমরা একটু পেরই
আেলাচনা করিছ। তার আেগ দেখা case 3: এর breakএর ( াি ) পের রেয়েছ default: যিট
হেলা deafult case (অগত া ব াপার) অথাৎ ওপেরর কান case এর সােথই ratio এর মান
না িমলেল default caseিট ঘটেব বেল ধের নয়া হেব। তাহেল ratio এর মান যিদ 1, 2, 3
িভ অ িকছু হয় তাহেল default: default caseিট ঘটেব। যথারীিত সখােন আমরা error
message ( িটবাতা) দিখেয়িছ। এখােন িক break; আেছ শেষ।
Program execution ( মেলখ িনবাহ) করার সময় ধের িনেত পােরা অদৃ বাতােমর
মেতা একটা ব াপার আেছ যটােক বলা হয় control (িনয় ণ)। এই control (িনয় ণ) বা-
তামিট program executionএর েত main functionএর একদম থম সািরেত থােক।
বাতামিট যই সািরেত থােক সই সাির execute (িনবাহ) হয়। আর তারপর control বাতামিট
পেরর সািরেত লাফ দয়, তখন সই সািরিট execute হয়। এভােব control বাতােমর লাফালা-

৩৩৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৮. Nested Switch Cases (অ াি পি ব াপার)

িফ ও সই সােথ সংি সািরর িনবাহ এেক এেক চলেত থােক। If-else (যিদ-নাহেল) আেলাচনা
করার সময় আমরা বেলিছলাম শত সত হেল িকছু কাজ হয় আবার শত িমথ া হেল অ িকছু কাজ
হয়। িঠক যন েটা শাখা (branch) তরী হয়। শেতর ওপর িনভর কের control বাতামিট
আসেল হয় এই শাখায় নাহয় ওই শাখায় িগেয় লাফ িদেয় বেস। Control য শাখায় বেস সই
শাখা িনবািহত হয়, অ শাখা িনবািহত হয় না। Control (িনয় ণ) বাতাম এরপর if-elseএর
(যিদ নাহেল) পেরর অংেশ চেল যায়।
Switch-caseএর (পি -ব াপার) ে বলেতা control switch(ratio) এর পের লাফ
িদেয় কান সািরেত িগেয় বসেব? যিদ ratio এর মান হয় 1 তাহেল িগেয় বসেব case 1: এর
সািরেত, 2 হেল িগেয় বসেব case 2: এর সািরেত, আর 3 হেল বসেব case 3: এর সািরেত, আর
িতনেটর কানটাই না হেল িগেয় বসেব default: এর সািরেত। Control switch(ratio) হেত
লাফ িদেয় িগেয় সংি caseএ (ব াপার) বসার পের সািরর পর সাির এেক এেক যেত থাকেব
যত ণনা একিট break; ( াি ) পাে । অথাৎ break ( াি ) পাওয়ার আেগ পয ত কিট
সািরই এেকর পর এক execute (িনবাহ) হেত থাকেব। আর break; পাওয়ার পেরই control
আর একিট লাফ িদেয় switch-caseএর (পি -ব াপার) blockএর বাইের চেল যােব। Break
না িদেল কী ঘটেব আমরা সটা পরবতীেত আেলাচনা করেবা। তেব বেল রািখ িতিট caseএর

দয়ার ভুলটা ায়ই কির।

১৫.১৮ Nested Switch Cases (অ াি পি


5g
(ব াপার) শেষ আসেল break ( াি ) দয়াটা আসেলই খুব পূণ, আর আমরা আবার না

ব াপার)
in
Nested switch case (অ াি পি ব াপার) ব বহার কের এমন একিট program ( মেলখ)
রচনা কেরা, যিট থেম menu ( াপণ ) দিখেয় জানেত চােব আমরা বেগর িহসাব করেত চাই,
am

নািক বৃে র িহসাব করেত চাই। সিট input ( যাগান) নবার পের আমােদর পছ বগ হেল
programিট input িনেব দঘ আর কী দখেত চাই ফল নািক পিরসীমা তা, আর সই
অ যায়ী output (ফলন) দখােব। আর আমােদর পছ বৃ হেল মেলখিট ব াসাধ input
িনেব আর িনেব ফল নািক পিরিধ দখেত চাই তা, আর স অ যায়ী output িদেব।
নীেচর program ( মেলখ) খয়াল কেরা। থেম আকৃিতর menu ( াপণ ) দখােনা হেয়-
ছ। তারপর shape variable declare (চলক ঘাষণা) কের input prompt ( যাগান যাচনা)
al

কের input ( যাগান) নয়া হেয়েছ। এরপর shape variableএর মােনর ওপর switch (পি )
যােত িতনিট case (ব াপার) আেছ। Variable shape এর মান 1 হেল case 1: বগ, 2 হেল
case 2: বৃ , আর অ িকছু হেল অগত া ব াপাের default: িটবাতা দখােনা হেয়েছ।

িফিরি ১৫.৬: Menu with Nested Switch (অ াি পি িদেয় াপণ )


/ / আকৃিতর াপণ (menu)
cout << " shape 1 square " << endl ;
cout << " shape 2 c i r c l e " << endl ;

i n t shape ; / / চলক ঘাষণা


cout << " shape : " ; / / যাগান যাচনা
c i n >> shape ; / / যাগান নওয়া

/ / বাইেরর পি যার িভতের আবার পি থাকেব


switch ( shape ) / / আকৃিতর পি

৩৩৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৮. Nested Switch Cases (অ াি পি ব াপার)

{
case 1 : / / বাইেরর পি বগ হেল
/ / কী পছ তা দখােনা হেব
cout << " choice square " << endl ;

/ / বেগর দঘ যাগান িনেত হেব


i n t length ; / / চলক ঘাষণা
cout << " length : " ; / / যাগান যাচনা
c i n >> length ; / / যাগান নওয়া

/ / কী চাই তার াপণ (menu)


cout << " 1 output area " << endl ;
cout << " 2 output perimeter " << endl ;

i n t soutput ; / / চলক ঘাষণা

c i n >> soutput ;

/ / িভতেরর পি
5g
cout << " output : " ; / / যাগান যাচনা
/ / যাগান নওয়া

যিট আেরকিট পি র িভতের


in
switch ( soutput ) / / পি কী চাই
{
case 1 : / / িভতেরর পি ফল হেল
cout << " area : " ;
am

cout << length ∗ length ;


cout << endl ;
break ;

case 2 : / / িভতেরর পি পিরসীমা হেল


al

cout << " perimeter : " ;


cout << 4∗ length ;
cout << endl ;
break ;

default : / / িভতেরর পি অ িকছু হেল িটবাতা


cout << " unsupported choice " << endl ;
break ;
}
/ / এিট িভতেরর পি থেক বাইের
cout << " square output ends " << endl ;
break ;

case 2 : / / িভতেরর পি বৃ হেল


/ / কী পছ তা দখােনা হেব

৩৩৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৮. Nested Switch Cases (অ াি পি ব াপার)

cout << " choice c i r c l e " << endl ;

/ / বৃে র ব াসাধ যাগান িনেত হেব


int radius ; / / চলক ঘাষণা
cout << " r a d i u s : " ;
c i n >> r a d i u s ;

/ / কী চাই াপণ
cout << " 1 output area " << endl ;
cout << " 2 output perimeter " << endl ;

i n t coutput ; / / চলক ঘাষণা


cout << " output : " ; / / যাগান যাচনা
c i n >> coutput ; / / যাগান নওয়া

/ / িভতেরর পি

{
case 1 :
5g
যিট আেরকিট পি র িভতের
switch ( coutput ) / / কী চাই পি

/ / িভতেরর পি ফল হেল
in
cout << " area : " ;
cout << 3 . 1416 ∗ r a d i u s ∗ r a d i u s ;
cout << endl ;
break ;
am

case 2 : / / িভতেরর পি পিরিধ হেল


cout << " perimeter : " ;
cout << 2 ∗ 3 . 1416 ∗ r a d i u s ;
cout << endl ;
break ;
al

default : / / িভতেরর পি অ িকছু হেল িটবাতা


cout << " unsupported choice " << endl ;
break ;
}
/ / এিট িভতেরর পি থেক বাইের
cout << " c i r c l e output ends " << endl ;
break ;

default : / / বাইেরর পি অ িকছু হেল িটবাতা


cout << " unsupported choice " << endl ;
break ;
}

৩৩৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৯. Switch Cases Breaks (পি ব াপার াি )

// বাইেরর পি রও বাইের
cout << "how l o v e l y ! " << endl ;

যখন shape এর মান 1 অথাৎ বগ বেছ নয়া হেয়েছ তখন থেম outputএ (ফলন) দ-
খােনা হেয়েছ য বগ পছ করা হেয়েছ। তারপর variable length declare ( ঘাষনা) কের
input prompt ( যাগান যাচনা) কের input ( যাগান) নওয়া হেয়েছ। তারপর squareএর কী
জানেত চাই তার জ আেরকিট menu ( াপণ ) দখােনা হেয়েছ, যখােন ফল নািক পির-
সীমা চাই সটা দখােনা হেয়েছ। ব বহারকারীর পছ যাগান নয়ার জ এখােনও soutput
নােম একিট variable declare কের input prompt কের মান input নয়া হেয়েছ। তার-
পর variable keechai এর মােনর ওপর িনভর কের আেরকিট switch case (পি ব াপার)
ব বহার কের ফল বা পিরসীমা outputএ (ফলন) দখােনা হেয়েছ। এই switch caseিট
(পি ব াপার) আেগর switch caseএর িভতের, আর তাই এই িভতেররিটেক বলা হেব nested
switch case (অ াি পি ব াপার)।
যখন shape এর মান 2 অথাৎ বৃ বেছ নয়া হেয়েছ তখন থেম outputএ (ফলন) দ-
খােনা হেয়েছ য বৃ পছ করা হেয়েছ। তারপর variable radius declare ( ঘাষনা) কের

5g
input prompt ( যাগান যাচনা) কের input ( যাগান) নওয়া হেয়েছ। তারপর বৃে র কী জা-
নেত চাই তার জ আেরকিট menu ( াপণ ) দখােনা হেয়েছ, যখােন ফল নািক পিরিধ
চাই সটা দখােনা হেয়েছ। ব বহারকারীর পছ input নয়ার জ এখােনও coutput নােম
একিট variable declare কের input prompt কের মান input নয়া হেয়েছ। বেগর -
ব ব ত variable soutput থেক িভ একিট নাম নয়ার জ ই মুলত নাম দওয়া হেয়েছ
in
coutput। এই েটা variableই বাইেরর switch-caseএর য block (মহ া) তার িভতের।
একই blockএ েটা variableএর (চলক) নাম একই হেত পাের না। আর স কারেণ নােমর এই
িভ তা, যিদও তােদর উে এখােন একই রকম। যাইেহাক, variable coutput এর মােনর
am

ওপর িনভর কের এরপর আেরকিট switch case ব বহার কের ফল বা পিরিধ outputএ
(ফলন) দখােনা হেয়েছ। এই switch caseিট (পি ব াপার) বেগর switch-caseএর মেতাই
বাইেরর switch caseিটর িভতের, তাই এিটও একিট nested (অ াি ) switch case।
এই পযােয় িজে স করেত পােরা, break; পাওয়া মা control (িনয় ণ) সই switch
case (পি ব াপার) থেক বর হেয় আেস বেল আমরা জািন, তা িভতেরর switch case
থেক break; পেল কাথায় যাে ? উ র হে িভতেরর switch case থেক বর হেয় যখােন
al

আসেব সটা িক বাইেরর switchএর block। িভতেরর switch থেক বর হেয় কাথায় আসেব
সটা বুঝার জ বেগর switch caseএর বাইের cout << " square output ends" <<
endl; আর বৃে র switch caseএর বাইের cout << "circle output ends" << endl;
লখা হেয়েছ। আর বাইেরর switch caseএর বাইের লখা হেয়েছ cout << "how lovely
!" << endl;। মেন রাখেব break পেল িভতেরর এক েরর switch থেক বর হেয় িনয় ণ
িঠক বাইেরর রিটেত যােব।

১৫.১৯ Switch Cases Breaks (পি ব াপার াি )


Switch caseএ (পি ব াপার) break ( াি ) না িদেল কী ঘেট, আর break না দওয়া কাথায়
কােজ লাগেত পাের? যথাযথ উদাহরণ সহ program ( মেলখ) িলেখ দখাও।
ধেরা তামার একজন অিতিথ আসেব। স যিদ সকাল ১০ বা ১১টায় আেস তােক তামার
সকােল না া, পুেরর খাবার, আর িবকােলর না া খাওয়ােত হেব। আর স যিদ ১২টায় বা ১৩টায়
আেস তেব তােক কবল পুেরর খাবার ও িবকােলর না া খাওয়ােত হেব, আর িতিন যিদ ১৪টা বা

৩৩৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.১৯. Switch Cases Breaks (পি ব াপার াি )

১৫টায় আেস তাহেল তােক কবল িবকােলর না া খাওয়ােত হেব। এই সময় েলা িভ অ কান
সমেয় যিদ স আেস তাহেল তােক িকছুই খাওয়ােনার দরকার নাই।
switch ( vartime )
{
case 10 :
case 11 :
cout << " morning b r e a k f a s t " << endl ;
case 12 :
case 13 :
cout << " midday lunch " << endl ;
case 14 :
case 15 :
cout << " afternoon snacks " << endl ;
}

5g
উপেরর programএ আমরা break ( াি ) ছাড়া switch case (পি ব াপার) িলেখ
program ( মেলখ) তরী কেরিছ। এখােন variable vartime এ আমরা অিতিথর আসার
সময় রাখেবা, সটা input ( যাগান) নয়া হেয় থাকেত পাের, বা কান ভােবা assigned (আেরা-
িপত) হেয় থাকেত পাের। সাধারণত switchএ (পি ) য ব াপারটার সােথ িমেল যায় সখান থ-
in
ক statement েলা (িববৃিত) িনবািহত হেত কের আর break ( াি ) পাওয়া পয চেল।
আর একবার কান ব াপােরর সােথ িমেল গেল পের আর কান ব াপােরর সােথ িমলােনার চ া
করাও হয় না, বরং break না পাওয়া পয মাগত statement েলা িনবািহত হেত থােক।
খয়াল কেরা উপেরর programএ ( মেলখ) সময় যিদ ১০টা হয়, িঠক সখােন িকছু না থা-
am

কেলও পরপর য statement েলা আেছ স েলা এেক এেক িনবািহত হেব, ফেল morning
breakfast, midday lunch, afternoon snacks সব েলা এেক এেক outputএ আসেত
থাকেব। সময় যিদ ১১টা হয় তাহেলও একই ঘটনা ঘটেব। সময় যিদ ১২ টা হয়, তাহেল morning
breakfast outputএ আসেব না, িক midday lunch ও afternoon snacks এেক এেক
আসেত থাকেব। পেরর সময় েলার জে ও একই রকেমর কথাবাতা েযাজ ।
al

আর একটা িবষয় খয়াল কেরা, উপেরর switchএ (পি ) আমরা default case default
: দই নাই। ফেল সময় যিদ তািলকায় না থােক তাহেল সিট কান caseএর (ব াপার) সােথই
িমলেব না, আর এেত outputএ (ফলন) িকছুই আসেব না। আসেল switchএ (পি ) default
(অগত া) ব াপার িদেতই হেব এমন কান কথা নই, দরকার না লাগেল িদেব না।
switch ( number )
{
case 4 :
case 0 :
case 2 :
cout << " even " << endl ;
break ;
case 1 :
case 5 :
case 3 :
cout << "odd" << endl ;

৩৩৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২০. Swtich Cases If Else (পি ব াপার যিদ-নাহেল)

break ;
}

এবার িকছু : switchএ কী case েলা মােনর মা সােরই থাকেত হেব? মান েলা কী
ধারাবািহকভােব পরপর সংখ া হেত হেব? উভয় ে র উ র হে "না"। কােজই িঠক উপেরর
উদাহরেণর মেতা তুিম দরকার মেতা case েলা পরপর না হেলও বা উে াপা া েম হেলও
িলখেত পারেব। আবার দেখা িকছু caseএ (ব াপার) break ( াি ) নাই, আবার িকছু ব াপাের
আেছ। মাট কথা যখােন break দয়া দরকার সখােন break; না দরকার হেল নাই।
আেরা িকছু : switchএ (পি ) case েলা (ব াপার) কী পূণক (integer) ছাড়া ভ ক
(fractioner) হেত পারেব? আর switch() এ variable (চলক) ছাড়া অ িকছু ব বহার
করা যােব? তুিম কান ভ ক (fractioner) case িহসােব ব বহার কের দখেত পােরা, তােত
compileএ (সংকলন) error message ( িট বাতা) দখােব, তার মােন হেলা পারেব না।
আর switch(number) এখােন switch এ য কবল variable হেত হেব তা নয়, য কান
রািশ যিট পূণক ফলাফল দয় সিটই তুিম ব বহার করেত পােরা, যমন নীেচর উদাহরণ দেখা,
আমরা ২ িদেয় ভাগেশেষর ওপর switch ব বহার করিছ। ভাগেশষ ০ হেলা জাড়, আর ১ হেল
িবেজাড়।
switch ( number % 2 )
{ 5g
case 0 : cout << " even " << endl ; break ;
in
case 1 : cout << "odd" << endl ; break ;
}

Switchএ অব তুিম একই case ইবার ব বহার করেত পারেব না, যমন case 1: িলেখ
am

একই switchএর িভতের পের আবার case 1: িলখেত পারেব না। তেব switchএর িভতের
nested (অ াি ) switch থাকেল সখােন case 1: থাকেতই পাের।

১৫.২০ Swtich Cases If Else (পি ব াপার যিদ-নাহেল)


al

Switch case (পি ব াপার) ব বহার না কের if else (যিদ নাহেল) ব বহার করেলই তা হয়।
তাহেল switch case কাথায় ব বহার করেবা, আর কাথায় if else ব বহার করেবা?
switch ( number )
{
case −2 :
case −1 :
cout << " negative " << endl ;
break ;

case 0 :
cout << " zero " << endl ;
break ;

case 1 :
case 2 :

৩৪০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২১. Global & Local Variables (ব াপীয় ও ানীয় চলক)

cout << " p o s i t i v e " << endl ;


break ;
}

উপেরর উদাহরণিট দেখা। এখােন আমরা একিট ন র positive (ধনা ক), negative
(ঋণা ক), নািক zero ( ) িনণয় করেত চাই। আমরা যিদ আেগ থেক জািন য ন রিট কবল
−2, −1, 0, 1, 2 এই পাঁচিট িনিদ সংখ ার একিট হেত পারেব, অ আর িকছু নয়, এ েলার
বাইের নয়, কবল তাহেলই আমরা উপেরর মেতা কের switch case (পি ব াপার) ব বহার
করেত পারেবা। আবার চাইেল আমরা নীেচর মেতা কের সমতুল আেরকিট programও িলখেত
পারেবা, যখােন আমরা switch case ব বহার না কের if else (যিদ নাহেল) ব বহার করেবা।
যিদ না হেল ব বহার কের অব আেরা নানা ভােবই এিট করা স ব, এিট কবল একটা উদাহরণ।
i f ( number == −2 | | number == −1 )
cout << " negative " << endl ;
e l s e i f ( number == 1 | | number == 2 )
cout << " p o s i t i v e " << endl ;
e l s e / / i f ( number == 0 )
cout << " zero " << endl ;
5g
িক আমােদর ন রিট যিদ উপেরর ওই পাঁচিট সংখ ার বাইের অিনিদ সংখ ক ন র েলার
একিট হয়, অথবা অেনক অেনক বশী সংখ েকর একিট হয়, তাহেল িঠক switch ব বহার কের
in
আমরা সামলােত পারেবা না। কারণ এ সব ে number of cases (ব াপােরর সংখ া) হেব
অেনক বশী বা অসংখ । আর একিট ব াপার হেলা switchএ case েলা মুলত মান সমান ==
হেল কী হেব তার ওপর িভি কের তরী, অ কান ধরেনর তুলনা যমন বড় >, ছাট < ইত ািদ
am

ব বহার করা যায় না। ফেল switch (পি ) সাধারণত ব বহার করা হয় অ িকছু সংখ ক ও
িনিদ সংখ ক ব াপােরর ে , আর এ সব ে program পড়া সহজ হেয় যায়। অ া
সকল ে সাধারণত if else (যিদ নাহেল) ব বহার করা হয় কারণ if elseএর সােথ য কান
শত বা connectives &&, | | , ! ব বহার কের আেরা জিটল শত ব বহার করা যায়।
i f ( number < 0 )
al

cout << " negative " << endl ;


e l s e i f ( number > 0 )
cout << " p o s i t i v e " << endl ;
e l s e / / i f ( number == 0 )
cout << " zero " << endl ;

১৫.২১ Global & Local Variables (ব াপীয় ও ানীয় চলক)


Local variable ( ানীয় চলক) কী? এর িবপরীেত global variableই (ব াপীয় চলক) বা কী?
Conditional programmingএ (শতালী পিরগণনা) local variableএর ব বহার দখাও।
যখন কান varaible বা constant বাঁকা ব নী যুগেলর বাইের অথাৎ কান blockএর
বাইের থােক তখন তােক global variable (ব াপীয় চলক) বা global constant (ব াপীয়
বক) বলা হয়। নীেচর programএ ( মেলখ) খয়াল কেরা pai আর lowerLimit য কান
blockএর (মহ া) বাইের, তাই এ েলা যথা েম global constant (ব াপীয় বক) এবং

৩৪১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২১. Global & Local Variables (ব াপীয় ও ানীয় চলক)

global variable (ব াপীয় চলক)। Global variable বা constant declare ( ঘাষনা)


করার পর থেক programএর য কান জায়গায় ব বহার করা যায়। য কান constantএর
( বক) মান তা declare করার সময় অব ই িদেত হয়, global constantএর (ব াপীয়
বক) মানও declareএর সময়ই িদেয় িদেত হয়। আর global variableএর মান declare
করার সময় না িদেয় িদেল এেত default (অগত া) থােক; এইটা একটা জ রী তথ ।

িফিরি ১৫.৭: Using Local & Global Variables ( ানীয় ও ব াপীয় চলকের ব বহার)
#i n c l u d e <iostream>
#i n c l u d e <c s t d l i b>

using namespace std ;

f l o a t const p a i = 3 . 1416 ; / / ব াপীয় বক , মান িদেতই হেব


f l o a t lowerLimit = 1 . 00 ; / / ব াপীয় চলক , মান না িদেল

i n t main ( void )
{
float radius ;
f l o a t const two = 2 . 0 ;
5g //
//
ানীয় চলক
ানীয় বক
in
cout << " r a d i u s : " ; c i n >> r a d i u s ;

i f ( r a d i u s < lowerLimit )
am

{
cout << " l e s s than lower l i m i t " << endl ;
ret ur n EXIT FAILURE ;
}

f l o a t perimeter = two ∗ p a i ∗ r a d i u s ; / / ানীয় চলক


al

cout << " perimeter : " << perimeter << endl ;

ret ur n EXIT SUCCESS ;


}

যখন কান variable(চলক) বা constant( বক) কান বাঁকা ব নী যুগল {} বা blockএর


(মহ া) িভতের ঘািষত হয় তখন তােক local variable ( ানীয় চলক) বা local constant
( ানীয় বক) বলা হয়। উপেরর programএ ( মেলখ) খয়াল কেরা variable radius এবং
constant two উভয়ই main functionএর blockএর িভতের ঘািষত হেয়েছ, কােজই এ
েটা যথা েম local variable ও local constant। Local variable বা constant য
কান block (মহ া) বা subblockএর (উপমহ া) িভতের ঘািষত হেত পাের। Blockএর িভ-
তের আবার block থাকেল িভতেরর blockেক subblock (উপমহ া) বলা হয় আর বাইেরর
blockেক বলা হয় superblock (অিধমহ া)। য কান constantএর মান তা ঘাষণার সময়ই
িদেয় িদেত হয়, local constantএর মানও তাই declare করার সময়ই িদেয় িদেত হেব। আর
local variableএর মান িদেয় না িদেল এটােত উ া পা া একটা মান থাকেব। তরাং local

৩৪২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২১. Global & Local Variables (ব াপীয় ও ানীয় চলক)

variable ব বহােরর পূেব অব ই এেত value assign কের িনেত হেব। Local variable ও
constant declare করার পর থেক ওই blockএর িভতের য কান খােন ব বহার করা যায়,
এমনিক subblock বা subsubblock িভতেরও ব বহার করা যায়।

i n t myvar = 2 ; / / ব াপীয় চলক

i n t main ( )
{
cout << myvar << endl ; / / ব াপীয় চলেকর মান 2

i n t myvar = 3 ; / / এখন থেক ানীয় চলক


cout << myvar << endl ; / / ানীয় চলেকর মান 3
{
cout << myvar << endl ; / / অিধমহ ার চলক মান 3

}
i n t myvar = 5 ;

cout << myvar << endl ; //


5g
/ / উপমহ ার ানীয় চলক
cout << myvar << endl ; / / উপমহ ার ানীয় চলক মান 5

ানীয় চলেকর মান 3


in
/ / অ া িকছু এখােন থাকেত পাের , আমরা িলখিছ না
}
i n t yourvar = myvar ; / / ব াপীয় চলেকর মান 2
am

অেনক সময় একিট local ( ানীয়) variable বা constantএ নাম একিট global (ব া-
পীয়) variable বা constantএর নােমর সােথ িমেল যেত পাের। থম কথা িতিট varaible
বা constantএর নাম পুেরা program জুেড় unique (একক) হওয়া উিচৎ, িক িবধার
িবচাের অেনক সময় সটা করা স ব হয় না। এমতাব ায় কী কের বুঝেবা ব ব ত variable
বা constantিট global না local? উপেরর program ( মেলখ) খয়াল কেরা, সখােন
al

myvar নাম বারবার ব বহার কের অেন েলা variable declare করা হেয়েছ, যার একিট সকল
blockএর (মহ া) বাইের তাই global (ব াপীয়) আর অ েলা কান না কান blockএর িভত-
র তাই local variable। এখন myvar নােমর variableেক নানান খােন outputএ (ফলন)
দখােনা হেয়েছ। কথা হে নাম যেহতু একই, তা আমরা নামিট িদেয় কখন কান variableিট-
ক বুঝেবা, কখন কান মানই বা outputএ দখেত পােবা?
খয়াল কের দেখা যখােন global variableিট declare করা হেয়েছ আর মান দওয়া
হেয়েছ 2 তারপর থেক এিটর কাযকারীতা বলবৎ আেছ, blockএর বাইের তা অব ই আেছ
যমন একদম নীেচ যখােন int yourvar = myvar; লখা হেয়েছ। আবার blockএর (মহ া)
িভতের local variable ঘাষণার আেগ পয এিটর কাযকারীতা রেয়েছ ফেল আমরা global
variableিটর মানিটই অথাৎ 2ই দখেত পােবা। তারপর blockএর িভতের যখন একই নাম
িদেয় একিট variable ঘাষনা করা হেয়েছ আর মান দওয়া হেয়েছ 3, তখন myvar নােমর
সােথ local এই variableিটর কাযকারীতা বলবৎ হেয়েছ, আর তা জাির আেছ block শষ
হওয়া পয , তাছাড়া subblockএর িভতের একই নােমর আেরকিট variable ঘাষণার আেগ
পয ও তা জাির আেছ। Programএ ( মেলখ) comment েলা (টীকা) খয়াল কেরা। কাথায়
কান মান outputএ আসেব তা িদেয় আমরা বুঝার চ া করিছ, কাথায় কান variableিটর

৩৪৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২১. Global & Local Variables (ব াপীয় ও ানীয় চলক)

কাযকারীতা বলবৎ আেছ। তাহেল কান নাম কান variableিটেক বুঝাই, সটার জ আমােদর
দখেত হেব একই blockএর িভতের ওই নােমর কান variable আেছ িকনা? যিদ থােক সই
variableিট কাযকর আেছ। আর একই blockএর িভতের যিদ না থােক, তাহেল আমরা িঠক
বাইেরর blockিট দখেবা, সখােন একই নােম কান variable আেছ িকনা? যিদ থােক সটা
বলবৎ হেব আর তাও না থাকেল তার িঠক বাইের আেরা কান block আেছ িকনা তা দখেবা।
i n t number ;
c i n >> number ;

/ / নীেচর remainder হেলা ানীয় চলক


i f ( i n t remainder = number % 3 )
cout << " n i l remainder " << endl ;
else
cout << " remainder " << remainder << endl ;

5g
িসিপিপেত if else (যিদ নাহেল) লখার সময় যিদ { } বাঁকা ব নী যুগল ব বহার কের কান
block (মহ া) তরী করা হয়, তাহেল সই blockএর িভতের ঘািষত য কান variable বা
constant তা local variable বা constant হেব। আমরা সটা আর আলাদা কের দখা-
ত চাই না। তেব উপেরর program খয়াল কেরা if ( int remainder = number % 3)
িলেখও আমরা remainder নােম একিট variable ঘাষণা কেরিছ। এই remainder নােমর
in
variableও একিট local variable ( ানীয় চলক) িহসােব পিরগিণত হয়, আর এটা কাযকর থা-
ক কবল যখােন লখা হেয়েছ সখান থেক হেয় ওই if else ladder (মই) বা nesting
(অ াি ) যত ণ শষ না হে তত ণ পয , এর বাইের কান কাযকারীতা থাকেব না, ফেল ব -
am

বহার করেল error message ( িট বাতা) পােব।


If else (যিদ নাহেল) এর ে ঘািষত local ( ানীয়) variableিটর মেতা আমরা switch
caseএর (পি ব াপার) ে ও একই ভােব local variable ঘাষণা করেত পাির। নীেচর
programএ খয়াল কেরা switch ( int remainder = number % 3) িলেখ আমরা একিট
local variable remainder ঘাষণা কেরিছ। এই variableিটর কাযকারীতাও কবল ওই
switch blockএর িভতেরই। বাইের কাথাও এই variableিটেক ব বহার করবার জা নই।
al

তুিম িক switch blockিটর িভতের চাইেল আেরা local variable ( ানীয় চলক) ঘাষণা ও
ব বহার করেতই পারেত। Constantএর ে ও একইরকম আেলাচনা েযাজ ।
i n t number ;
c i n >> number ;

/ / নীেচর সািরেত remainder ানীয় চলক


switch ( i n t remainder = number % 3 )
{
case 0 :
cout << " zero " << remainder << endl ;
break ;
case 1 :
cout << " one " << remainder << endl ;
break ;
case 2 :

৩৪৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << "two " << remainder << endl ;


break ;
}

১৫.২২ Exercise Problems (অ শীলনী সম া)

Conceptual Questions: নীেচ িকছু conceputal রেয়েছ। েলার উ র িনেজ


িনেজ বর করেব।

১. Conditional programming (শতািল পিরগণনা) কী? অ কথায় আেলাচনা কেরা।

২. যিদ if এর সােথর শত িমথ া হেল সংি নাহেলেত else িগেয় আবারও শেতর িবপরীত

5g
শতিট সত িকনা পরী া করা দরকার নই। ব াখ া কেরা।

৩. যিদ নাহেল (if else) িদেয় program ( মেলখ) িলখেত indentation (ছাড়ন) দয়া
পূণ কন? কার জ পূণ মা েষর জ নািক computerএর (গণিন) জ ?
in
৪. Relational operators (অ য়ী অণুি য়া) কী? এ েলা কী ধরেনর ফলাফল দয়? িস-
িপিপেত থাকা কেয়কিট relational operatorএর উদাহরণ দাও।
am

৫. If else ladderএ (যিদ নাহেল মই) শত েলা কী ভােব সাজােব, যিদ িচ ার িবধা িবেব-
চনা কেরা অথবা programএর দ তা িবেবচনা কেরা?

৬. Nested if else (অ াি যিদ নাহেল) ও if else ladder (যিদ নাহেল মই) একটা থেক
আেরকিটেত পা র স ব, উদাহরণ সহ ব াখ া কেরা।
al

৭. Dangling else (ঝুল নাহেল) সম ািট কী? এিটর সমাধান কী কী ভােব করা যেত
পাের, উদাহরণ িদেয় আেলাচনা কেরা।

৮. Empty statement ( িববৃিত) কী? কত ভােব empty statement দওয়া যায়?

৯. Boolean connectives (বুলক সংেযাজক) কী কী, কী ভােব ফলাফল দয়?

১০. পূণক (integer) ও ভ ক (fractioner) ক সরাসির Boolean িহসােব কী ভােব ব ব-


হার করা যায় আেলাচনা কেরা। এেত কী িবধা হয়?

১১. Boolean conditionএর (বুলক শত) partial evaluation কী ভােব কাজ কের?

১২. একািধক global variable (ব াপীয় চলক) ও local variableএর ( ানীয় চলক) নাম
একই হেল কানটা কাযকর তা কী ভােব িনধািরত হয়?

৩৪৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

Programming Problems: নীেচ আমরা িকছু programming সম া দখেবা। এই সম-


া েলা আেগ ধয ধের িনেজ িনেজ সমাধান করেত চ া করেব। যখন এেকবােরই পারেছা না
বেল মেন হয় তখনই কবল সমাধান দেখ িনেত পােরা। সমাধান েলা programmingএর -
েলার শেষ আেছ।

১. নীেচর programএর ( মেলখ) output (ফলন) কী তা থেম খাতা কলেম িনণয় কেরা,
আর তারপর গণিনেত চািলেয় তার সােথ িমলাও।
int n ; / / আিদ মান আেরাপ করা হয় িন
cout << ( n = 4 ) << endl ;
cout << ( n == 4 ) << endl ;
cout << ( n > 3 ) << endl ;
cout << ( n < 4 ) << endl ;
cout << ( n = 0 ) << endl ;
cout << ( n == 0 ) << endl ;
cout << ( n > 0 ) << endl ;
cout <<
cout <<
cout << 5g
( n && 4 ) << endl ;
( n | | 4 ) << endl ;
( ! n ) << endl ;
in
২. নীেচর programএ ( মেলখ) িকছু syntactical (গঠনগত) ভুল আেছ। ভুলটা কাথায়
বেল তুিম মেন কেরা? ভুলটা এমন ভােব িঠক কেরা যােত এিটর indentation (ছাড়ন)
দেখ যা করেত চাওয়া হেয়িছল বেল মেন হয়, programিট ( মেলখ) semantically
am

(অথেবাধকতায়) যন একদম তাই কের।

i f ( x >= y )
sum += x ;
cout << " x l a r g e " << endl ;
al

else
sum += y ;
cout << " y l a r g e " << endl ;

৩. নীেচর program ( মেলখ) চালােল কী output (ফলন) পাওয়া যােব?


int n , k = 5 ;
n = ( 100 % k ? k + 1 : k − 1 ) ;
cout << "n = " << n << " k = " << k << endl ;

৪. নীেচর program ( মেলখ) চালােল কী output (ফলন) পাওয়া যােব?


i n t found = 0 , count = 5 ;
i f ( ! found | | ++ count == 0 )
cout << " danger " << endl ;
cout << " count = " << count << endl ;

৩৪৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

৫. নীেচর programএ, স বত বলা যায় য conditional statementএর (শতািল িববৃ-


িত) একদম থম সািরেতই একটা ভুল আেছ। Programিট য ভােব লখা আেছ সরকম
অব ায়ই যিদ execute (িনবাহ) করা হয় তাহেল output (ফলন) কী হেব? আর যটা
করেত চাওয়া হেয়িছল বেল মেন হয় যিদ সটা করা হয় তাহেল output কী হেব?
int n = 5 ;
i f ( n = 0 ) / / অণুি য়ািট খয়াল কেরা
cout << "n i s zero . " << endl ;
else
cout << "n i s not zero " << endl ;
cout << " square of n " << n ∗ n << endl ;

৬. নীেচর conditional statementএ (শতািল িববৃিত) ত অেনক অ েয়াজনীয় শত


আেছ। অ েয়াজনীয় শত েলা বাদ িদেয় conditional statementিট আবার লেখা।
f l o a t income ;
cout << " monthly income : " ;
c i n >> income ;

i f ( income < 0 )
5g
in
cout << " loan w i l l i n c r e a s e . " << endl ;
e l s e i f ( income >= 0 && income < 1200)
cout << " below poverty l i m i t . " << endl ;
e l s e i f ( income >= 1200 && income < 2500)
am

cout << " s l i g h t l y wel l−o f f . " << endl ;


e l s e i f ( income >= 2500)
cout << " s u f f i c i e n t l y we ll−o f f . " << endl ;

৭. যিদ িভ িভ বার চালােনার সময় ০, ১৫, বা ৭ input ( যাগান) দয়া হয় তাহেল নী-
al

চর programএর ( মেলখ) output (ফলন) কান বাের কী হেব । কত input িদেল


outputএ "out of range!" আসেব?
int n ;
cout << "number i s : " ;
c i n >> n ;

i f ( n < 10)
cout << " l e s s than 10 . " << endl ;
else i f ( n > 5)
cout << " l a r g e r than 5 . " << endl ;
else
cout << " out of range ! " << endl ;

৮. নীেচর nested if else (অ াি যিদ নাহেল) খয়াল কেরা। Indentation (ছাড়ন) য


ভােব দয়া হেয়েছ তােত মেন হে না যা িলখেত চাওয়া হেয়েছ তা লখা হেয়েছ।

৩৪৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

i f ( n < 10)
i f ( n > 0)
cout << " p o s i t i v e . " << endl ;
else
cout << " . " << endl ;

যিদ n এর মান ৭ বা ১৫ বা -৩ input ( যাগান) দয়া হয় তাহেল output (ফলন) কী হেব?


Statementিটর (িববৃিত) syntax (গঠন) এমন ভােব িঠক কেরা যােত indentation
(ছাড়ন) দওয়া থেক যমনিট িলখেত চাওয়া হেয়েছ বেল মেন হয় outputও িঠক স
রকম আেস। আর সে ে ােন কী হেব বেল যৗি ক মেন হয় সটাও িঠক কেরা।
অ িদেক যা লখা হেয়েছ সটা িঠকই আেছ ধের িনেয় কবল indentationটা (ছাড়ন)
িঠক কেরা, আর তােত ােন কী বসােনা যথাথ হেব তাও িনণয় কেরা।

৯. িতনিট সংখ া input ( যাগান) িনেয় কানিট বড়, কানিট ছাট outputএ দখাও।

5g
১০. িতনিট সংখ া input ( যাগান) িনেয় তােদর মেধ মােঝরিট outputএ (ফলন) দখাও।

১১. িতনিট সংখ া input ( যাগান) িনেয় তােদরেক উধ েম সািজেয় output (ফলন) দাও।

১২. গিণেত া ন র input ( যাগান) িনেয় সটা থেক letter grade (বণ মান) output
in
দাও। ধেরা ৯০ বা বশী হেল A, ৮০ বা বশী হেল B, ৭০ বা বশী হেল C, ৬০ বা বশী
হেল D, ৫০ বা বশী হেল E, আর তারও কম হেল F letter grade পাওয়া যায়।

১৩. একিট ি মাি ক (two dimensional) িব র ানা দওয়া আেছ, িব িট চারিট চতু-
am

ভােগর (quadrant) িঠক কানিটেত পড়েব িনণয় কেরা।

১৪. একিট গমণ ১, ২, ৩, ..., ৯, ১১, ২২, ৩৩, ..., ৯৯ এর ১ম পদ ১, আর ১৮ তম পদ ৯৯।


কততম পদ দখােত হেব তা input ( যাগান) িনেয় পদিট outputএ (ফলন) দখাও।

১৫. তামােক -১০০ ও ১০০ এর মেধ িট সংখ া input ( যাগান) িহসােব দওয়া হেব, তুিম
al

ওই িট সংখ া সহ তােদর মােঝর সকল সংখ ার যাগফল outputএ (ফলন) দখাও।

১৬. একিট দ বষ leap year িক না তা িনণেয়র programিট তুিম if-else ladder (যিদ-
নাহেল মই) ব বহার কের িলখেব। তেব programিট রচনা করার সময় তামােক মেন
রাখেত হেব য এিট ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হেব। কােজই
তুিম ladderএর শত েলা এমন ভােব সাজােব যােত program ততম হয়।

১৭. বাংলা বছেরর কততম মাস তা input ( যাগান) িনেয় সই মােসর নাম ও ওই মােস কত িদন
তা outputএ (ফলন) দখাও। একােজ switch case (পি ব াপার) ব বহার কেরা।

১৮. কতটা বােজ সই সময় ঘ টায় input ( যাগান) িনেয় মাঝরাত (১-২), ভাত (৩-৬), সকাল
(৭-১১), পুর (১২-১৪), িবকাল (১৫-১৭), স া (১৮-১৯), রাত (২০-২৮) outputএ
দখাও। একােজ switch case (পি ব াপার) ব বহার কেরা।

১৯. এমন একিট program ( মেলখ) িলেখা যিট ১-৫ পয ম অ যায়ী পাঁচটা কামল
পানীেয়র (পািন, কাক, াইট, ফানটা, পপিস) নােমর তািলকা দখােব, তারপর িমক
ন র input ( যাগান) িনেয় কামল পানীয়িটর নাম outputএ (ফলন) দখােব। আর

৩৪৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

িমক ন রিট যিদ ১-৫ এর বাইের হয়, তাহেল স সং া একিট error message ( িট
বাতা) দখােব। তুিম এই programিট একবার switch case (পি ব াপার) ব বহার
কের আবার if else (যিদ নাহেল) ব বহার কের কেরা।

২০. একিট সংখ ার পুরক সংখ া িনণয় কেরা। সংখ াট এক অে র হেল তার পুরক সংখ ৯ এর
সােথ িবেয়াগফল, ই অে র হেল ৯৯ এর সােথ িবেয়াগফল, িতন অে র হেল ৯৯৯ এর
সােথ িবেয়াগফল। িতেনর চেয় বশী অে র সংখ া input ( যাগান) দওয়া হেব না।

২১. এমন একিট program ( মেলখ) িলেখা যটা ৫ জন লাক যােদর িমক ১-৫ তােদর
ক কতটা কের পেরাটা খেয়েছ input ( যাগান) িনেব। Programিট তারপর একজ-
ন সেবা কয়টা পেরাটা খেয়েছ সটা outuputএ (ফলন) দখােব। আর কান লাক
সেবা সংখ ক পেরাটা খেয়েছ programিট সটাও দখােব, তেব সেবা পেরাটা খাও-
য়া একািধক ব ি থাকেল কবল থমজেনর িমক ন র হেলই চলেব।

২২. একজন লাক াভািবক িনয়ম অ যায়ী স ােহ ৪০ ঘ টা কাজ কের, ৪০ ঘ টার বশী কাজ
করেল অিতির সময়টু র জ াভািবক িনয়েমর চেয় ১.৫ ণ মজুির পায়। কান এক

5g
স ােহ লাকিট কত ঘ টা কাজ কেরেছ আর াভািবক িনয়েম ঘ টা িত মজুির কত তা
input ( যাগান) িনেয় ওই স ােহ তার মাট মজুির কত তা outputএ (ফলন) দখাও।

২৩. ধেরা তুিম চার টুকেরা কাগজ িনেয়েছা। তামার ১ম টুকেরােত লখা আেছ ১, ৩, ৫, ৭, ৯,
১১, ১৩, ২য় টুকেরােত আেছ ২, ৩, ৬, ৭, ১০, ১১, ১৪, ১৫, ৩য় টুকেরােত আেছ ৪, ৫,
in
৬, ৭, ১২, ১৩, ১৪, ১৫, ৪থ টুকেরােত আেছ ৮, ৯, ১০, ১১, ১২, ১৩, ১৪, ১৫। তামার
program ( মেলখ) ব বহারকারী মেন মেন একিট সংখ া ধরেব, আর সিট ১ম, ২য়, ৩য়,
৪থ টুকেরার কান কানিটেত আেছ input ( যাগান) িদেব, তারপর তামার program
am

ব বহারকারী মেন মেন য সংখ ািট ধেরেছ সিট outputএ (ফলন) দখােব। এিট খুব
সহজ একিট ব াপার। য য টুকেরােত সংখ ািট আেছ ওই টুকেরা েলার থম সংখ া েলা
যাগ করেলই ব বহারকারীর সংখ ািট পাওয়া যােব। যমন ব বহারকারীর সংখ ািট যিদ ১,
৩, ৪ ন র টুকেরােত থােক তাহেল সংখ ািট ১ + ৪ + ৮ = ১৩।
al

Programming Solutions: এবার আমরা programming সম া েলার সমাধান দখ-


বা। মেন রাখেব সমাধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ করেত পারেছানা বেল মেন
হয়, তখন কবল একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

১. নীেচর programএর ( মেলখ) output (ফলন) কী তা থেম খাতা কলেম িনণয় কেরা,
আর তারপর computerএ চািলেয় তার সােথ িমলাও।
int n ; // আিদ মান আেরাপ করা হয় িন
cout << (n = 4 ) << endl ;
cout << (n == 4 ) << endl ;
cout << (n > 3 ) << endl ;
cout << (n < 4 ) << endl ;
cout << (n = 0 ) << endl ;
cout << (n == 0 ) << endl ;
cout << (n > 0 ) << endl ;
cout << (n && 4 ) << endl ;

৩৪৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << ( n | | 4 ) << endl ;


cout << ( ! n ) << endl ;

4 // আেরাপণ হেব 4
1 // মান আসেলই তা 4
1 // কােজই 3 এর বশী
0 // 4 এর সমান , কম তা নয়
0 // আেরাপন হেব 0
1 // মান 0 এর সমান , সত
0 // মান তা 0 , বশী তা নয়
0 // 0 হেলা িমথ া তাই ফলাফল িমথ া
1 // 4 যেহতু সত , তাই ফলাফল সত
1 // 0 িনেজ িমথ া তাই ! 0 সত

5g
২. নীেচর programএ ( মেলখ) িকছু syntactical (গঠনগত) ভুল আেছ। ভুলটা কাথায়
বেল তুিম মেন কেরা? ভুলটা এমন ভােব িঠক কেরা যােত এিটর indentation (ছাড়ন)
দেখ যা করেত চাওয়া হেয়িছল বেল মেন হয়, programিট ( মেলখ) semantically
(অথেবাধকতায়) যন একদম তাই কের।
in
i f ( x >= y )
sum += x ;
cout << " x l a r g e " << endl ;
else
am

sum += y ;
cout << " y l a r g e " << endl ;

উপেরর programএ indentation দেখ মেন হয় যিদর শত সত হেল বা িমথ া হেল


উভয় ে িঠক তােদর পেরর ই সািরেত থাকা statement েলা িনবাহ (execute)
al

হেব। িক একািধক statement যিদ execute করেত হয় সে ে আমােদর নীেচর


programএর মেতা কের বাঁকা ব নী িদেয় compound statement ( যৗিগক িববৃ-
িত) বািনেয় িনেত হেব। বাঁকা ব নী না দয়ায় উপেরর programিট compile (সংক-
লন) করেত গেল error দখােব। Errorটা হল সংি if সােপে elseটা িঠক জায়গায়
নাই। যিদ else টা cout << "x large" << endl; এর আেগ থােক তাহেল গঠনগত
(syntactically) ভােব হয়, িক তােত অব আমরা যা করেত চাই তা হেতা না।
i f ( x >= y )
{
sum += x ;
cout << " x l a r g e " << endl ;
}
else
{
sum += y ;
cout << " y l a r g e " << endl ;

৩৫০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

৩. নীেচর program ( মেলখ) চালােল কী output (ফলন) পাওয়া যােব?


int n , k = 5 ;
n = ( 100 % k ? k + 1 : k − 1 ) ;
cout << "n = " << n << " k = " << k << endl ;

উপেরর programএর output নীেচ দখােনা হেলা। েত k এর মান assign (আেরা-


পণ) করা হেলা 5। তারপর 100 যেহতু 5 ারা িবভাজ তাই 100 % k হেব যাহা
Boolean (বুলক) িহসােব ধরেল িমথ া, ফেল ternary operatorএর (িতিনক অণু-
ি য়া) শেষর অংশ k − 1 অথাৎ 4 হেব ফলাফল যা n variableএ (চলক) assign
(আেরািপত) হেব। সবিমিলেয় n হেলা 4 আর k েত যা িছেলা তাই অথাৎ 5।
n = 4 k = 5

i n t found = 0 , count = 5 ;
i f ( ! found | | ++count == 0 )
5g
৪. নীেচর program ( মেলখ) চালােল কী output (ফলন) পাওয়া যােব?
in
cout << " danger " << endl ;
cout << " count = " << count << endl ;
am

উপেরর programএর output (ফলন) নীেচ দখােনা হেলা। Variable found এর


মান 0 অথ াৎ িমথ া, ফেল !found হেলা সত , আর তাই অথবা | | এর ফলাফলও সত ।
ল কেরা এই ফলাফল িনধারেণ আমােদর িক | | এর পেরর অংশ execute (িনবাহ)
করার দরকারই নাই। Partial evaluationএর (আংিশক মূল ায়ন) কারেণ এিট ঘটেব।
তাহেল | | এর ফলাফল সত আসায় outputএ আসেব "danger"। আর ++count
যেহতু িনবািহতই হয় িন, তাই count এর মান 5 ই দখােবা।
al

danger
count = 5

৫. নীেচর programএ, স বত বলা যায় য conditional statementএর (শতািল িববৃ-


িত) একদম থম সািরেতই একটা ভুল আেছ। Programিট য ভােব লখা আেছ সরকম
অব ায়ই যিদ execute (িনবাহ) করা হয় তাহেল output (ফলন) কী হেব? আর যটা
করেত চাওয়া হেয়িছল বেল মেন হয় যিদ সটা করা হয় তাহেল output কী হেব?
int n = 5 ;
i f ( n = 0 ) / / অণুি য়ািট খয়াল কেরা
cout << "n i s zero . " << endl ;
else
cout << "n i s not zero " << endl ;
cout << " square of n " << n ∗ n << endl ;

৩৫১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

উপেরর programএর ২য় সািরেত assignment (আেরাপন) = operator ব বহার


করা হেয়েছ, সাধারণেতা শত পরী ার জ সমান (equal) == operator ব বহার
করা হয়। তরাং এিট স বত একটা ভুল যটা ায়শই আমােদর হেয় থােক। যাই হাক
programিট যমন আেছ তমিন চালােল assignmentএর ফেল n এর মান হেব
আর assignment operatorএর ফলাফলও হেব , যা Boolean value (বুলক
মান) িহসােব িমথ া। তরাং else অংেশ থাকা statementটু িনবািহত হেব, আর আম-
রা outputএ পােবা n is not zero। িবষয়িট কমন যন গালেমেল তাই না, একিদ-
ক n এর মান আসেলই , িক অ িদেক output দখাে n নয়! যাইেহাক
n এর মান assignmentএর ফেল if else এর পেরর সািরেত থাকা cout এর
কারেণ outputএ আসেব n er borgo 0। এই output েলা নীেচ বামিদেক দখােনা
হেলা, আর ডান িদেক রেয়েছ assignment (আেরাপণ) = না িলেখ আমরা যিদ সমান
(equality) == িলিখ তাহেল output (ফলন) কী হেব তা। ল এবাের n এর মান িক
5ই থাকেছ যা initial assignment করা হেয়েছ। ফেল n == 0 িমথ া হওয়ায় আেগর
মেতাই n is not zero দখােব আর পেরর সািরেত 5 এর বগ হেব 25, কােজই ফলেন
আসেব square of n 25।
n i s not zero
square of n 0
5g n i s not zero
square of n 25

৬. নীেচর conditional statement (শতািল িববৃিত) ত অেনক অ েয়াজনীয় শত আেছ।


in
তা সই অ েয়াজনীয় শত েলা বাদ িদেয় conditional statementিট আবার লেখা।
f l o a t income ;
cout << " monthly income : " ;
am

c i n >> income ;

i f ( income < 0 )
cout << " loan w i l l i n c r e a s e . " << endl ;
e l s e i f ( income >= 0 && income < 1200)
al

cout << " below poverty l i m i t . " << endl ;


e l s e i f ( income >= 1200 && income < 2500)
cout << " s l i g h t l y wel l−o f f . " << endl ;
e l s e i f ( income >= 2500)
cout << " s u f f i c i e n t l y we ll−o f f . " << endl ;

অদরকারী শত েলা ছাড়া program ( মেলখ) কমন হেব তা নীেচ দখােনা হেলা। যিদ
income < 0 এই শত িমথ া হয়, তাহেল অব ই income >=0 সত হেব। কােজই
if else ladderএ (যিদ নাহেল মই) elseএর সােথ য যিদ থাকেব সখােন income
>=0 আবার লখার কান দরকার নই। Control (িনয় ণ) ওইখােন যাওয়া মােন ওই
শত অব ই সত আর এবং (and) && operatorএর (অণুি য়া) একিট operand
(উপাদান) সত হেল ফলাফল কবল ি তীয় operandএর ওপর িনভর কের। তরাং
আমরা সরলীকরণ কের কবল && এর ি তীয় operandিটেকই িলখেবা। এই একই ভােব
income >= 1200 আর income >= 2500 লখার কান দরকার নাই।
f l o a t income ;

৩৫২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << " monthly income : " ;


c i n >> income ;

i f ( income < 0 )
cout << " loan w i l l i n c r e a s e . " << endl ;
e l s e i f ( income < 1200) / / >= 0 দরকার নই
cout << " below poverty l i m i t . " << endl ;
e l s e i f ( income < 2500) / / >= 1200 দরকার নই
cout << " s l i g h t l y wel l−o f f . " << endl ;
else / / >= 2500 দরকার নই
cout << " s u f f i c i e n t l y we ll−o f f . " << endl ;

৭. যিদ িভ িভ বার চালােনার সময় ০, ১৫, বা ৭ input ( যাগান) দয়া হয় তাহেল নী-
চর programএর ( মেলখ) output (ফলন) কান বাের কী হেব । কত input িদেল
outputএ "out of range!" আসেব?
int n ;
cout << "number i s : " ;
c i n >> n ;
5g
in
i f ( n < 10)
cout << " l e s s than 10 . " << endl ;
else i f ( n > 5)
am

cout << " l a r g e r than 5 . " << endl ;


else
cout << " out of range ! " << endl ;

Input ( যাগান) িহসােব 0, 15, 7 িদেল, উপেরর program কী output (ফলন) দেব
তা নীেচ ৩ ে দখােনা হেলা। এই program n এর কান মােনর জ ই out of
al

range! ফলন িদেব না, িনয় ণ (control) কান অব ােতই সংি িববৃিতেত যােব না।
তরাং else cout << "out of range!" << endl; অংশটু পুেরাপুির অদরকারী
আর স কারেণ মুেছ দয়া যায়, তােত programএর বিশে কান ভাব পড়েব না।
number i s : 0 number i s : 15 number i s : 7
l e s s than 10 . l a r g e r than 5 . l e s s than 10 .

৮. নীেচর nested if else (অ াি যিদ নাহেল) খয়াল কেরা। Indentation (ছাড়ন) য


ভােব দয়া হেয়েছ তােত মেন হে না যা িলখেত চাওয়া হেয়েছ তা লখা হেয়েছ।
i f ( n < 10)
i f ( n > 0)
cout << " p o s i t i v e . " << endl ;
else
cout << " . " << endl ;

৩৫৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

যিদ n এর মান ৭ বা ১৫ বা -৩ যাগান (input) দয়া হয় তাহেল output (ফলন) কী হেব?


Statementএর (িববৃিত) syntax (গঠন) এমন ভােব িঠক কেরা যােত indentation
(ছাড়ন) দওয়া থেক যমনিট িলখেত চাওয়া হেয়েছ বেল মেন হয় outputও িঠক স
রকম আেস। আর সে ে ােন কী হেব বেল যৗি ক মেন হয় সটাও িঠক কেরা।
অ িদেক যা লখা হেয়েছ সটা িঠকই আেছ ধের িনেয় কবল indentationটা (ছাড়ন)
িঠক কেরা, আর তােত ােন কী বসােনা যথাথ হেব তাও িনণয় কেরা।
i f ( n < 10)
i f ( n > 0)
cout << " p o s i t i v e . " << endl ;
else
cout << " . " << endl ;

দ programিট ( মেলখ) লখার সময় এমন ভােব indentation (ছাড়ন) দয়া


হেয়েছ য মেন হে else অংশটু থম if এর শত n < 10 িমথ া হেল কাযকর হেব।

5g
িক িসিপিপ ভাষায় indentation বা ফাঁকা দয়া না দয়া computerএর (গণিন) জ
কান ব াপার নয়। আর dangling elseএর (ঝুল নাহেল) আেলাচনা থেক আমরা জািন
এই else িট তার িনকটতম পূববতী এমন একিট if এর সােথ সংি য if এর সােথ আর
কান else জুেড় দয়া হয় িন। কােজই, সই িহসােব িঠক উপের যমনিট দখােনা হেলা,
সভােব এই else িট ি তীয় if এর শত n > 0 িমথ া হেল কাযকর হেব।
in
positive . not output .
am

এমতাব ায় এই program চালােল আমরা ৭, ১৫, বা -৩ input ( যাগান) িদেয় য


output (ফলন) পােবা তা উপেরর িতনিট ে দখােনা হেয়েছ। ল কেরা ১৫ input
িদেল আমরা কান output আসেল পােবা না, কারণ n < 10 শেতর কান else নই।
আর ানিট outputএ আেস যখন সংখ ািট বা কম হয় অথাৎ non-
positive হয়। আমরা তাহেল এর ােন িলখেত পাির non−positive।
i f ( n < 10)
al

{
i f ( n > 0)
cout << " p o s i t i v e . " << endl ;
}
else
cout << " . " << endl ;

Indentation (ছাড়ন) দয়া দেখ যমন মেন হয়, programিট ( মেলখ) সই অ -


যায়ী সংেশাধন করেল িঠক উপেরর মেতা কের বাঁকা ব নী ব বহার করেত হেব। সে ে
ান অংশিট outputএ আসেব যখন n সংখ ািট ১০ এর বড় বা সমান, যমন ধেরা
১৫। এে ে আমরা তাই এর বদেল িলখেত পাির "10 or larger"। এবার
খয়াল কেরা n এর মান যখন এর বশী িক ১০ এর কম যমন ৭, তখন িক আমরা
output পােবা positive, আর বা কম হেল কান outputই পােবা না।

৯. িতনিট সংখ া input ( যাগান) িনেয় কানিট বড়, কানিট ছাট outputএ দখাও।

৩৫৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

িফিরি ১৫.৮: Small and Big of Three Numbers (িতনিট সংখ ার বড়- ছাট)
int a , b , c ; / / চাইেল ভ কও িনেত পােরা
cout << " three numbers are ? " ;
c i n >> a >> b >> c ; / / যাগান নাও

i n t large , small ; / / চলক ঘাষণা


i f (a > b) / / a যিদ বড় হয় b এর চেয়
large = a , small = b ;
else / / b যিদ বড় হয় a এর চেয়
large = b , small = a ;
i f ( large < c ) / / c যিদ l a r g e এর চেয় বড় হয়
large = c;
else i f ( small > c ) / / c যিদ sm a l l এর চেয় ছাট হয়
small = c ;

5g
cout << " l a r g e " << l a r g e << " " ;
cout << " s m a l l " << s m a l l << endl ;

উপেরর program খয়াল কেরা। থম িট সংখ া a ও b ক তুলনা কের বড় ও ছাট


in
িনধারণ করা হয়েছ। তারপর c ক তুলনা করা হেয়েছ সটা আেরা বড় িকনা দখেত, যিদ
তা না হয় তাহেল সটা আেরা ছাট িকনা সটা পরী া করা হেয়েছ। ল কেরা c ক তুলনা
করা সময় একটা else লাগােনা হেয়েছ, কারণ largeএর বড় হেল তা আর smallএর
ছাট িকনা পরী া করার দরকার নই। তুিম িক চাইেল নীেচর মেতা কেরও program
am

িলখেত পােরা। থেম ধের নাও তামার সংখ া একটাই কােজই aই বড়, আবার aই ছাট।
এরপর তােদর সােথ b ক তুলনা কেরা। আর শেষ তােদর সােথ c ক তুলনা কেরা।
i n t l a r g e = a , s m a l l = a ; / / ধের নই a−ই বড় ও ছাট
i f ( large < b) / / b যিদ তার চেয়ও বড় হয়
large = b;
al

else i f ( small > b ) / / b যিদ তার চেয়ও ছাট হয়


small = b ;
i f ( large < c ) / / c যিদ তার চেয়ও বড় হয়
large = c;
else i f ( small > c ) / / c যিদ তার চেয়ও ছাট হয়
small = c ;

১০. িতনিট সংখ া input ( যাগান) িনেয় তােদর মেধ মােঝরিট output দখাও।
িফিরি ১৫.৯: Median of Three Numbers (িতনিট সংখ ার মধ ক)
/ / ধেরা চলক িতনিট a , b , c ঘাষণা কের যাগান নয়া হেয়েছ

i f (a > b) // ম হেলা a > b


if (c > a) // ম হেলা c > a > b
cout << a << endl ;

৩৫৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

else i f (b > c ) // ম হেলা a > b > c


cout << b << endl ;
else // ম হেলা a >= c >= b
cout << c << endl ;
else // ম হেলা a <= b
if (c < a) // ম হেলা c < a <= b
cout << a << endl ;
else i f c > b) // ম হেলা a <= b < c
cout << b << endl ;
else // ম হেলা a <= c <= b
cout << c << endl ;

উপেরর মেলখেত থেম a ও b তুলনা করা হেয়েছ। তারপর c তােদর বড়িটর চেয় বড়
িকনা, নাহেল ছাটিটর চেয় ছাট িকনা পরী া করা হেয়েছ, আর তাও না হেল সিট উভেয়র
মাঝামািঝ। এভােব িতনিট সংখ ার ম জানা হেয় গেল মােঝরিট outputএ (ফলন)

5g
দখােনা হেয়েছ। এিট nesting (অ াি ) ও ladderএর (মই) চমৎকার উদাহরণ।
১১. িতনিট সংখ া input ( যাগান) িনেয় তােদরেক উধ েম সািজেয় output (ফলন) দাও।
িফিরি ১৫.১০: Three Numbers in Ascending Order (িতনিট সংখ ার উধ ম)
in
/ / ধেরা চলক িতনিট a , b , c ঘাষণা কের যাগান নয়া হেয়েছ
i f (a > b) // ম হেলা a > b
if (c > a) // ম হেলা c > a > b
am

cout << b << " " << a << " " << c << endl ;
else i f (b > c ) // ম হেলা a > b > c
cout << c << " " << b << " " << a << endl ;
else // ম হেলা a >= c >= b
cout << b << " " << c << " " << a << endl ;
else // ম হেলা a <= b
al

if (c < a) // ম হেলা c < a <= b


cout << c << " " << a << " " << b << endl ;
else i f c > b) // ম হেলা a <= b < c
cout << a << " " << b << " " << c << endl ;
else // ম হেলা a <= c <= b
cout << a << " " << c << " " << b << endl ;

উপেরর মেলখেত থেম a ও b তুলনা করা হেয়েছ। তারপর c তােদর বড়িটর চেয়
বড় িকনা, নাহেল ছাটিটর চেয় ছাট িকনা পরী া করা হেয়েছ, আর তাও না হেল সিট
উভেয়র মাঝামািঝ। এভােব িতনিট সংখ ার ম জানা হেয় গেল তােদর মােনর উধ েম
(ascending order) outputএ (ফলন) দখােনা হেয়েছ। এিট if elseএর (যিদ নাহ-
ল) nesting (অ াি ) ও ladderএর (মই) এক সােথ ব বহােরর চমৎকার উদাহরণ।
১২. গিণেত া ন র input ( যাগান) িনেয় সটা থেক letter grade (বণ মান) output
দাও। ধেরা ৯০ বা বশী হেল A, ৮০ বা বশী হেল B, ৭০ বা বশী হেল C, ৬০ বা বশী
হেল D, ৫০ বা বশী হেল E, আর তারও কম হেল F letter grade পাওয়া যায়।

৩৫৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

িফিরি ১৫.১১: Letter Grades from Numbers (ন র হেত বণমান)


cout << " maths number ? " ;
i n t number ; c i n >> number ;

i f ( number >= 90)


cout << " l e t t e r grade A" << endl ;
e l s e i f ( number >= 80)
cout << " l e t t e r grade B" << endl ;
e l s e i f ( number >= 70)
cout << " l e t t e r grade C" << endl ;
e l s e i f ( number >= 60)
cout << " l e t t e r grade D" << endl ;
e l s e i f ( number >= 50)
cout << " l e t t e r grade E " << endl ;
e l s e / / ৫০ এর ছাট
cout << " l e t t e r grade

5g
F " << endl ;

উপেরর program switch case (পি ব াপার) িদেয় করা স ব নয়, কারন এখােন
>= তুলনা ব বহার করেত হেব। Switch case কবল সমান == তুলনায় ব বহার করা
in
যায়।
১৩. একিট ি মাি ক (two dimensional) িব র ানা দওয়া আেছ, িব িট চারিট চতু-
ভােগর (quadrant) িঠক কানিটেত পড়েব িনণয় কেরা।
am

এই programএ ( মেলখ) আমরা কবল চতুভাগ (quadrant) িবেবচনা না কের বরং,


িব িট কান অে র ওপের িকনা, হেল ধনা ক িদেক না ঋণা ক িদেক, অথবা ানাংকের
মূল িব েত িকনা তাও িবেবচনা করেবা। য কান একিট দ িব র x বা y েটাই
আলাদা আলাদা ভােব ধনা ক বা ঋণা ক বা এই িতন রকম হেত পাের। কােজই
একসােথ িবেবচনা করেল আমরা মাট নয় রকম combination (সমােবশ) পােবা।
al

িফিরি ১৫.১২: Quadrant of a Point (িব র চতুভাগ িনণয়)


float x , y ;
cout << " a b s c i s s a x ? " ;
c i n >> x ;
cout << " ordi na te y ? " ;
c i n >> y ;

i f ( x > 0)
i f ( y > 0)
cout << " f i r s t quadrant " << endl ;
else i f ( y < 0)
cout << " fourth quadrant " << endl ;
else // y
cout << "on p o s i t i v e x a x i s " << endl ;
else i f ( x < 0)

৩৫৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

i f ( y > 0)
cout << " second quadrant " << endl ;
else i f ( y < 0)
cout << " t h i r d quadrant " << endl ;
else
cout << "on negative x a x i s " << endl ;
else // x
i f ( y > 0)
cout << "on p o s i t i v e y a x i s " << endl ;
else i f ( y < 0)
cout << "on negative y a x i s " << endl ;
else // y
cout << " coordinate o r i g i n " << endl ;

5g
১৪. একিট গমণ ১, ২, ৩, ..., ৯, ১১, ২২, ৩৩, ..., ৯৯ এর ১ম পদ ১, আর ১৮ তম পদ ৯৯।
কততম পদ দখােত হেব তা input ( যাগান) িনেয় পদিট outputএ (ফলন) দখাও।
cout << " which term : " << endl ;
i n t n ; c i n << n ;
in
i f ( n < 0)
cout << " out of range " << endl ;
e l s e i f ( n <= 9 ) / / এক অে র সংখ া
am

cout << n << endl ;


e l s e i f ( n <= 18) / / ই অে র সংখ া
cout << ( ( n−9 ) ∗ 11) << endl ;
else
cout << " out of range " << endl ;
al

১৫. তামােক -১০০ ও ১০০ এর মেধ িট সংখ া input ( যাগান) িহসােব দওয়া হেব, তুিম
ওই িট সংখ া সহ তােদর মােঝর সকল সংখ ার যাগফল outputএ (ফলন) দখাও।
নীেচর সংি program ( মেলখ) দখােনা হেলা। য সংখ া িট input ( যাগান) নয়া
হেব, স েলা অব ই -১০০ ও ১০০ এর িভতের হেত হেব। আমরা তাই আেগ পরী া
কের দখেবা। যিদ n1 বা n2 য কানিট −100 এর ছাট বা 100 এর বড় হয়, তাহেল
error message ( িট বাতা) দিখেয় িবফল হেয় control ফরত যােব। খয়াল কেরা
আমােদর িক শত েলােক অথবা | | িদেয় যু করেত হেব।
cout << "two number are ? " ; / / যাচনা
i n t n1 , n2 ; c i n >> n1 >> n2 ; / / যাগান

/ / −১০০ ও ১০০ এর মেধ িকনা পরী া করেত হেব


i f ( n1 < −100 | | n1 > 100 | |
n2 < −100 | | n2 > 100)
{

৩৫৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << "number out of range " << endl ;


ret ur n EXIT FAILURE ;
}

int s , n ; / / ( থম পদ + শষ পদ ) আর পদসংখ া

s = n1 + n2 ; // থম পদ + শষ পদ।

i f ( n1 > n2 ) / / কানটা ছাট কানটা বড়


n = n1 − n2 + 1 ; / / পদসংখ া
else
n = n2 − n1 + 1 ; / / পদসংখ া

cout << "sum " << s ∗n / 2 ; / / ফলন

5g
এবার আমরা জািন কান সমা র গমেণর সংখ া েলার যাগফল হেলা ( থম সংখ া +
শষ সংখ া) * পদসংখ া / 2। সংখ া েটা যাগান নয়ার সময় ব বহারকারী য কানিটেক
আেগ input িদেত পাের, মােন কানটা বড় কানটা ছাট আমরা িনি ত থাকেবা না।
( থম সংখ া + শষ সংখ া) এই যাগফল s বর করেত এেত কান সম া হেব না, তেব
in
পদসংখ া n বর করেত গেল আমােদর জানেত হেব কানটা বড় কানটা ছাট। ধেরা ৭
আর ১৩ িনেজেদর সহ তােদর মেধ কয়টা সংখ া আেছ সটা বর করা যায় ১৩ - ৭ + ১
িহসাব কের, যখােন ১৩ হেলা বড় আর ৭ হেলা ছাট। তা n1 আর n2 এর িনেজেদর সহ
তােদর মােঝ মাট কয়িট সংখ া আেছ তা বর করেত আমােদর জানেত হেব কানিট বড়।
am

তা আমরা একিট যিদ নাহেল (if else) ব বহার কের দখেবা n1 > n2 িকনা, যিদ হয়
তাহেল পদসংখ া n1 − n2 + 1 আর যিদ না হয় তাহেল পদসংখ া হেব n2 − n1 + 1।
সবেশেষ যাগফল হেলা s ∗ n / 2 আমরা যটা outputএ (ফলন) দখােবা।

১৬. একিট দ বষ অিধবষ িক না তা িনণেয়র programিট ( মেলখ) তুিম if else ladder


(যিদ-নাহেল মই) ব বহার কের িলখেব। তেব programিট রচনা করার সময় তামােক
al

মেন রাখেত হেব য এিট ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হেব।
কােজই তুিম ladderএর শত েলা এমন ভােব সাজােব যােত program ততম হয়।
যিদ ১ থেক ২০০০ সাল পয িতিট সােলর জ চালােনা হয় তাহেল আমরা থেম
েত ক রকেমর সােলর িহসাব কির। মাটামুিট িত চারিট সােলর িতনিট অিধবষ নয়,
একিট অিধবষ। কােজই সবেচেয় বশী সংখ ক ২০০০ / ৪ * ৩ = ১৫০০ িট সাল আেছ য
েলা ৪ িদেয় িবভাজ হয় না, এ েলার কানিটই অিধবষ নয়। বাঁকী ৫০০ িট সাল ৪ িদেয়
িবভাজ । এেদর মেধ য েলা ১০০ িদেয় িবভাজ নয় যমন ১৯৯৬ এমন ২০িট ছাড়া বাঁকী
৪৮০ িট অিধবষ। আর ওই ২০িট সােলর মেধ য ১৫িট ৪০০ িদেয় িবভাজ নয় স েলা
অিধবষ নয়, আর বাঁকী ৪িট সাল য েলা ৪০০ িদেয় িবভাজ স েলা অিধবষ।
i f ( year % 4 ! = 0) / / ৪ িদেয় িবভাজ নয়
cout << " leap year no" << endl ;
e l s e i f ( year % 100 ! = 0 ) / / ১০০ িদেয় িবভাজ নয়
cout << " leap year yes " << endl ;
e l s e i f ( year % 400 ! = 0 ) / / ৪০০ িদেয় িবভাজ নয়

৩৫৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << " leap year no" << endl ;


e l s e / / i f ( year % 400 = 0 ) ৪০০ িদেয় িবভাজ
cout << " leap year yes " << endl ;

ততম গিতর programএর ( মেলখ) জ য রকেমর সাল সবেচেয় বশী স েলা িন-
ণয় করেত সবেচেয় কম সংখ ক শত পরী ণ ব বহার করেত হেব। কােজই আমরা ১৫০০
সাল য েলা ৪ িদেয় িবভাজ নয় স েলােক থম শত পরী া কেরই বর করেত চাই-
বা। উপেরর program খয়াল কেরা, আমরা তাই কেরিছ। এরপের রেয়েছ য ৪৮০িট
বছর য েলা ৪ িদেয় িবভাজ িক ১০০ িদেয় িবভাজ নয়। আমরা এ েলােক ইবার শত
পরী া কের বর করেত চাই। একটা শত হে ৪ িদেয় িবভাজ নাহওয়া কােজই থম
শেতর else িহসােব থাকেব সটা, আেরকিট শত হেলা ১০০ িদেয় িবভাজ না হওয়া। উপ-
রর programএর if else ladderএ (যিদ নাহেল মই) দেখা else if িদেয় এটা করা
হেয়েছ। এরপর থােক ১৫ িট সাল য েলা ১০০ িদেয় িবভাজ িক ৪০০ িদেয় িবভাজ নয়
এই ১৫ িট সাল, এ েলা িনণয় করা হেয়েছ আেরকিট else if লািগেয় অথাৎ মাট িতনিট
শত পরী ণ শেষ। আর সবেশেষ ৪০০ িদেয় িবভাজ সই সাল েলা এেসেছ সবেশেষর

5g
else িদেয়, এ েলার জ িতনিট শত পরী ণই লেগেছ, কারণ শেষর শত িমথ া হেলই
তা এ েলা িনণীত হেব। তাহেল মাট শত পরী া লাগেলা কত েলা? ১৫০০ * ১ + ৪৮০
* ২ + ১৫ * ৩ + ৫ * ৩ = ২৫২০ িট। তুিম আেরা নানান ভােব চ া কের দখেত পােরা,
এর চেয় কম শত পরী া কের করেত পােরা িকনা! পারেব না!
in
i f ( year % 4 ! = 0 | |
( year % 100 == 0 && year % 400 ! = 0 ) )
cout << " leap year no" << endl ;
am

else
cout << " leap year yes " << endl ;

একই program আমরা if else ladder (যিদ নাহেল মই) ব বহার না কের িঠক উপ-
রর programএর মেতা Boolean connectives (বুলক সংেযাজক) ব বহার কের
করেত পাির। Boolean connectivesএর আংিশক মূল ায়ন (partial evaluation)
al

মেন আেছ? অথবা | | ে য কান একিট operand (উপাদান) সিত হেলই অ িট


মূল ায়ন ছাড়াই আমরা ফলাফল সত বেল ধের িনেত পাির। আর && এর ে য কান
একিট operand (উপাদান) িমথ া হেলই ফলাফল িমথ া বেল ধের নয়া যায়। কান সাল
অিধবষ নয় যখন সালিট ৪ ারা িবভাজ নয় অথবা ১০০ ারা িবভাজ হেলও ৪০০ ারা
িবভাজ নয় তখন। যিদর সােথ শত িহসােব সিটই লাগােনা হেয়েছ দেখা। অ িদেক কান
সাল অিধবষ হেত গেল | | এর ফলাফল িমথ া হেত হেব, তারমােন বাম ও ডােনর উভয়
operand (উপাদান) িমথ া হেত হেব অথাৎ year % 4 == 0 এবং (year % 100 ==
0 && year % 400 != 0) িমথ া হেত হেব। এখােন year % 4 == 0 িমথ া হওয়া মােন
বছরিট ৪ ারা িবভাজ হওয়া আর (year % 100 == 0 && year % 400 != 0) িমথ া
হেত গেল && এর পােশর যেকান একিট িমথ া হেলই হেব। তা (year % 100 ==
0 িমথ া হওয়া মােন বছরিট ১০০ ারা িবভাজ না হওয়া আর year % 400 != 0 িমথ া
হওয়া মােন ৪০০ িদেয় িবভাজ হওয়া।

১৭. বাংলা বছেরর কততম মাস তা input ( যাগান) িনেয় সই মােসর নাম ও ওই মােস কত িদন
তা outputএ (ফলন) দখাও। একােজ switch case (পি ব াপার) ব বহার কেরা।

৩৬০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

িফিরি ১৫.১৩: Bengali Month Names (বাংলা মােসর নাম)


i n t mash ; c i n >> mash ; / / চাইেল যাচনা করেত পােরা

switch ( mash )
{
case 1 : cout << " boishakh 31 " << endl ; break ;
case 2 : cout << " j o i s t h o 31 " << endl ; break ;
case 3 : cout << " ashar 31 " << endl ; break ;
case 4 : cout << " shrabon 31 " << endl ; break ;
case 5 : cout << " vadro 31 " << endl ; break ;
case 6 : cout << " a r s h i n 30 " << endl ; break ;
case 7 : cout << " k a r t i k 30 " << endl ; break ;
case 8 : cout << " ogrohayon 30 " << endl ; break ;
case 9 : cout << " poush 30 " << endl ; break ;
case 10 : cout << "magh 30 " << endl ; break ;

}
5g
case 11 : cout << " falgun 30 " << endl ; break ;
case 12 : cout << " c h o i t r o 30 " << endl ; break ;
d e f a u l t : cout << " ojana mash" << endl ; break ;
in
১৮. কতটা বােজ সই সময় ঘ টায় input ( যাগান) িনেয় মাঝরাত (০-২), ভাত (৩-৬), সকাল
(৭-১১), পুর (১২-১৪), িবকাল (১৫-১৭), স া (১৮-১৯), রাত (২০-২৪) ফলেন দ-
am

খাও। একােজ switch case (পি ব াপার) ব বহার কেরা।


i n t vartime ;
c i n >> vartime ; / / যাচনা করেত পােরা

switch ( vartime )
{
al

case 0 : case 1 : case 2 :


cout << " midnight " << endl ; break ;
case 3 : case 4 : case 5 : case 6 :
cout << "dawn" << endl ; break ;
case 7 : case 8 : case 9 : case 10 : case 11 :
cout << " morning " << endl ; break ;
case 12 : case 13 : case 14 :
cout << " midday " << endl ; break ;
case 15 : case 16 : case 17 :
cout << " afternoon " << endl ; break ;
case 18 : case 19 :
cout << " evening " << endl ; break ;
case 20 : case 21 : case 22 : case 23
cout << " n i g h t " << endl ; break ;
default :

৩৬১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

cout << "unknown time " << endl ;


}

১৯. এমন একিট program ( মেলখ) িলেখা যিট ১-৫ পয ম অ যায়ী পাঁচটা কামল
পানীেয়র (পািন, কাক, াইট, ফানটা, পপিস) নােমর তািলকা দখােব, তারপর িমক
ন র input ( যাগান) িনেয় কামল পানীয়িটর নাম outputএ (ফলন) দখােব। আর
িমক ন রিট যিদ ১-৫ এর বাইের হয়, তাহেল স সং া একিট error message ( িট
বাতা) দখােব। তুিম এই programিট একবার switch case (পি ব াপার) ব বহার
কের আবার if else (যিদ নাহেল) ব বহার কের কেরা।
cout << " l i s t " << endl ;
cout << " 1 water " << endl ;
cout << " 2 coke " << endl ;
cout << " 3 s p r i t e " << endl ;
cout << " 4 fanta " << endl ;
cout
cout
<<
<< endl ;
5g
" 5 pepsi " << endl ;

cout << " choice : " << endl ;


i n t choice ; c i n >> choice ;
in
cout << " choice " ;
switch ( choice )
am

{
case 1 : cout << " water " << endl ; break ;
case 2 : cout << " coke " << endl ; break ;
case 3 : cout << " s p r i t e " << endl ; break ;
case 4 : cout << " fanta " << endl ; break ;
case 5 : cout << " pepsi " << endl ; break ;
al

d e f a u l t : cout << "unknown" << endl ; break ;


}

উপেরর programএর ( মেলখ) switch case (পি ব াপার) অংশিট if else (যিদ
নাহেল) ব বহার কের িলখেল নীেচর মেতা হেব।
i f ( choice == 1 )
cout << " water " << endl ;
e l s e i f ( choice == 2 )
cout << " coke " << endl ;
e l s e i f ( choice == 3 )
cout << " s p r i t e " << endl ;
e l s e i f ( choice == 4 )
cout << " fanta " << endl ;
e l s e i f ( choice == 5 )
cout << " pepsi " << endl ;

৩৬২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

else
cout << " water " << endl ;

২০. একিট সংখ ার পুরক সংখ া িনণয় কেরা। সংখ ািট এক অে র হেল তার পুরক সংখ ৯ এর
সােথ িবেয়াগফল, ই অে র হেল ৯৯ এর সােথ িবেয়াগফল, িতন অে র হেল ৯৯৯ এর
সােথ িবেয়াগফল। িতেনর চেয় বশী অে র সংখ া input ( যাগান) দওয়া হেব না।
i n t number , complement ;
c i n >> number ;

// িট আেগই সামলােনা হেলা


i f ( number < 0 | | number > 1000)
{
cout << " undesired " << endl ;
ret ur n EXIT FAILURE ;
}

/ / এবার কবল বধ ব াপার েলা


i f ( number <= 9 )
complement = 9 − number ;
5g
/ / এক অ মােন ৯ বা কম
in
e l s e i f ( number <= 99) / / এক অ মােন ৯৯ বা কম
complement = 99 − number ;
e l s e i f ( number <= 999) / / এক অ মােন ৯৯৯ বা কম
am

complement = 999 − number ;

২১. এমন একিট program ( মেলখ) িলেখা যটা ৫ জন লাক যােদর িমক ১-৫ তােদর
ক কতটা কের পেরাটা খেয়েছ input ( যাগান) িনেব। Programিট তারপর একজেন
সেবা কয়টা পেরাটা খেয়েছ সটা outputএ (ফলন) দখােব। আর কান লাক সেবা
al

সংখ ক পেরাটা খেয়েছ programিট সটাও দখােব, তেব সেবা পেরাটা খাওয়া একা-
িধক ব ি থাকেল থমজেনর িমক ন র হেলই চলেব, পেরর জনেদর দরকার নাই।
আমরা পাঁচজন লােকর জ িবধােথ পাঁচিট variable িনেবা p1, p2, p3, p4, p5।
তারপর যথাযথ ভােব input prompt ( যাগান যাচনা) কের কান লাক কতিট পেরাটা
খেয়েছ সটা input ( যাগান) িনেবা। তারপর আমােদর আেরা িট variable লাগেব:
একিট হেলা maximum সেবা কতিট পেরাটা খেয়েছ আর একিট হেলা person ক
খেয়েছ সেবা িট। তারপর আমরা একজন একজন কের লাক িবেবচনা করেবা। েত
মা একজন লাক ধের িনেল সই সেবা পেরাটা খেয়েছ, কােজই maximum = p1
, person = 1 initial value িহসােব assign করা হেয়েছ। এর পেরর িতিট ব ি র
জ আমরা পরী া কের দখেবা স এ পয maximum এর মান যত তার চেয় বশী
পেরাটা খেয়েছ িকনা। যিদ খেয় থােক তাহেল maximum এর মান বদেল যােব আর
ক খেয়েছ সটাও বদেল যােব। এরকম program ( মেলখ) নীেচ দেখা।

িফিরি ১৫.১৪: Largest of Five Numbers (পাঁচিট সংখ ার বৃহ ম)


i n t p1 ; cout << " p1 : " ; c i n >> p1 ;

৩৬৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

int p2 ; cout << " p2 : "; cin >> p2 ;


int p3 ; cout << " p3 : "; cin >> p3 ;
int p4 ; cout << " p4 : "; cin >> p4 ;
int p5 ; cout << " p5 : "; cin >> p5 ;

i n t maximum = p1 , person = 1 ;
i f ( maximum < p2 )
{ maximum = p2 ; person = 2 ; }
i f ( maximum < p3 )
{ maximum = p3 ; person = 3 ; }
i f ( maximum < p4 )
{ maximum = p4 ; person = 4 ; }
i f ( maximum < p5 )
{ maximum = p5 ; person = 5 ; }

5g
cout << " porota " << maximum << endl ;
cout << " person " << person << endl ;

খয়াল কেরা আমরা > ব বহার কেরিছ >= ব বহার কির নাই। এর কারণ এ পয সেবা
যতিট খাওয়া হেয়েছ তার সমান কউ যিদ পেরর কউ খেয়ও থােক, আমরা িক সই
in
লাকিটেক outputএ (ফলন) দখােত চাইনা, বরং আেগর জনেকই দখােত চাই। তুিম
যিদ সেবা পেরাটা খেয়েছ এরকম কেয়ক জন থাকেল তােদর মেধ র শেষর জনেক
outputএ (ফলন) দখােত চাও, তাহেল < বদেল <= কের িদেব। আর একিট ব াপার
am

হেলা অেনক সময় maximum আর person variable িটর initial value ১মজেনর
পেরাটা খাওয়া িবেবচনা কের না িদেয় নীেচর মেতা কের বরং আমরা একটা ছাট সংখ া
ধের নই, তারপর ২য়, ৩য়, ৪থ, ৫ম লােকর মেতা ১ম জেনর জ ও একই রকম যিদ
নাহেল ব বহার কির। এেত সব লােকর জ িচ া করাটা একই রকম হয়।
/ / সেবা একটা ছাট মান , ক খেয়েছ সটা জািননা
al

i n t maximum = 0 , person = 0 ;

i f ( maximum < p1 ) / / ১ম জেনর ে ও একই


{ maximum = p1 ; person = 1 ; }
/ / p2 , p3 , p4 , p5 এর যিদ নাহেল িঠকই থাকেব

২২. একজন লাক াভািবক িনয়ম অ যায়ী স ােহ ৪০ ঘ টা কাজ কের, ৪০ ঘ টার বশী কাজ
করেল অিতির সময়টু র জ াভািবক িনয়েমর চেয় ১.৫ ণ মজুির পায়। কান এক
স ােহ লাকিট কত ঘ টা কাজ কেরেছ আর াভািবক িনয়েম ঘ টা িত মজুির কত তা
input ( যাগান) িনেয় ওই স ােহ তার মাট মজুির কত তা outputএ (ফলন) দখাও।

িফিরি ১৫.১৫: Weekly Wage Calculation (স ােহর মজুির িহসাব)


f l o a t const n a t L i m i t = 40 . 0 ; // াভািবক সীমা
f l o a t const extraRate = 1 . 5 ; / / অিতির হার

৩৬৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২২. Exercise Problems (অ শীলনী সম া)

f l o a t hourlyRate ; / / ঘ টা িত কত হার
f l o a t totalHour ; / / কত ঘ টা কাজ
f l o a t totalWage ; / / মাট মজুির কত

cout << " hourly r a t e : " ;


c i n >> hourlyRate ;
cout << "how many hour : " ;
c i n >> totalHour ;

i f ( totalHour <= n a t L i m i t )
totalWage = totalHour ∗ hourlyRate ;
e l s e / / অিতির সময় কাজ হেয়েছ
{
/ / াভািবক মজুির ৪০ ঘ টার
f l o a t natWage = n a t L i m i t ∗ hourlyRate ;
/ / অিতির ঘ টা বর করেত হেব

5g
f l o a t extraHour = totalHour − n a t L i m i t ;
/ / অিতির সমেয়র মজুিরর হার
f l o a t extraHourRate = hourlyRate ∗ extraRate ;
in
/ / অিতির সমেয় মজুির
f l o a t extraWage = extraHour ∗ extraHourRate ;
/ / মাট মজুির েটার যাগফল
totalWage = natWage + extraWage ;
am

cout << " t o t a l wage " << totalWage << endl ;

২৩. ধেরা তুিম চার টুকেরা কাগজ িনেয়েছা। তামার ১ম টুকেরােত লখা আেছ ১, ৩, ৫, ৭, ৯,
al

১১, ১৩, ২য় টুকেরােত আেছ ২, ৩, ৬, ৭, ১০, ১১, ১৪, ১৫, ৩য় টুকেরােত আেছ ৪, ৫,
৬, ৭, ১২, ১৩, ১৪, ১৫, ৪থ টুকেরােত আেছ ৮, ৯, ১০, ১১, ১২, ১৩, ১৪, ১৫। তামার
program ( মেলখ) ব বহারকারী মেন মেন একিট সংখ া ধরেব, আর সিট ১ম, ২য়,
৩য়, ৪থ টুকেরার কান কানিটেত আেছ input ( যাগান) িদেব, তারপর তামার মেলখ
ব বহারকারী মেন মেন য সংখ ািট ধেরেছ সিট outputএ (ফলন) দখােব। এিট খুব
সহজ একিট ব াপার। য য টুকেরােত সংখ ািট আেছ ওই টুকেরা েলার থম সংখ া েলা
যাগ করেলই ব বহারকারীর সংখ ািট পাওয়া যােব। যমন ব বহারকারীর সংখ ািট যিদ ১,
৩, ৪ ন র টুকেরােত থােক তাহেল সংখ ািট ১ + ৪ + ৮ = ১৩।

Number Finding Game (সংখ া বলার খলা)


cout << " take a number between 0 , 15 " << endl ;

cout << " card 1 : 1 3 5 7 9 11 13 15 " << endl ;


cout << " card 2 : 2 3 6 7 10 11 14 15 " << endl ;
cout << " card 3 : 4 5 6 7 12 13 14 15 " << endl ;

৩৬৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২৩. গণনা পিরভাষা (Computing Terminologies)

cout << " card 4 : 8 9 10 11 12 13 14 15 " << endl ;

cout << " answer to the questions below " << endl ;
cout << " press 1 i f yes , 0 i f no" << endl ;

i n t card1 , card2 , card3 , card4 ;

cout << " does card 1 have your number? " ;


c i n >> card1 ;
cout << " does card 2 have your number? " ;
c i n >> card2 ;
cout << " does card 3 have your number? " ;
c i n >> card3 ;
cout << " does card 4 have your number? " ;
c i n >> card4 ;

i n t number = 0 ;

if
if
( card1 )
( card2 )
5g
number
number
+=
+=
1;
2;
in
if ( card3 ) number += 3;
if ( card4 ) number += 4;
am

cout << " your number " << number << endl ;

উপেরর program ( মেলখ) দেখা। থেম কাগেজর টুকেরা বা তাস েলােত কী কী সং-
খ া লখা আেছ তা দখােনা হেয়েছ। এরপর বলা হেয়েছ পেরর দখােনার েলার উ র
া হেল ১ আর না হেল ০ িদেয় িদেত। আমরা চারিট variable িনেয়িছ। আর উ র -
লা ওই variable েলােত আেছ। ে যমন বলা হেয়েছ য তাস েলােত ব বহারকারীর
al

মেন মেন ধের নয়া সংখ ািট আেছ সই তাস েলার থম সংখ া েলা িনেয় আমােদর যাগ
করেত হেব। আমরা েত সংখ ািট ধের িনেয়িছ int number = 0; িলেখ। এরপর
দেখা িতিট if পরী া করেছ সংখ ািট ওই তােস আেছ িকনা, অথাৎ ব বহারকারীর দয়া
উ র সত িকনা, সত হেল ওই তােসর থম সংখ ািট তা আমরা জািনই, সটা number
variableএর সােথ যাগ কের দয়া হেয়েছ। পিরেশেষ output (ফলন) ব বহারকারীর
মেন মেন ধের নয়া সংখ ািট দখােনা হেয়েছ।

১৫.২৩ গণনা পিরভাষা (Computing Terminologies)


• conditional (শতািল) • relational (অ য়ী)

• if (যিদ) • Boolean (বুলক)

• else (নাহেল) • Ladder (মই)

৩৬৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৫.২৩. গণনা পিরভাষা (Computing Terminologies)

• Nested (অ াি ) • absorption ( শাষণ)

• Dangling (ঝুল ) • contradiction (অস িত)

• Empty ( ) • excluded middle (নঞ মধ ম)

• Compound ( যৗিগক) • truth table (সত ক সারণী)

• Detection (শনা করণ) • optimisation (অ লায়ন)

• Connective (সংেযাজক) • ternary (িতিনক)

• and (এবং, ও) • switch (পি )

• or (অথবা, বা) • case (ব াপার)

• not (নয়, না) • control (িনয় ণ)

• associative (সহেযাজ )

• simplification (সরল)

• precedence (অ গণ তা)
5g
• break ( াি )

• default (অগত া)

• global (ব াপীয়)
in
• order ( ম) • local ( ানীয়)

• equivalence (সমতুল) • block (মহ া)


am

• distribution (ব টন) • subblock (উপমহ া)

• commutative (িবিনময়) • superblock (অিধমহ া)


al

৩৬৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

5g
in
am
al

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

অধ ায় ১৬

Iterative Programming
(পুনািল পিরগণনা)

5g
আমােদর জীবনটা এমন রামা কর নয় য একদম িতবারই তুিম অিভনব িকছু একটা করেব।
খয়াল কের দখেব তামােক ায়শই একই রকম কাজ বার বার করেত হে । তুিম হয়েতা এেত
একেঘঁেয়িম বাধ করেছা, িক িকছু করার নই তামার নাক কান চাখ ব কের সই একই কাজ
বার বার কের যেত হেব, যত ণ না স েলা শষ হে । Iterative programming-এ (পু-
in
নািল পিরগণনায়) আমরা িশখেবা কী কের বারবার একই কাজ কের যেত হয়।

১৬.১ For Loop Repetition (জ ঘূণীর পুনরাবৃি )


am

িসিপিপ ভাষায় এমন একিট program ( মেলখ) রচনা কেরা যিট একিট positive integer
(ধণা ক পূণক) input ( যাগান) িনেয় ওই সংখ ক বার output-এ (ফলন) "cpp" দখায়।
cout << " cpp cpp cpp cpp cpp " << endl ;
al

তামােক যিদ খুবই অ সংখ ক বার যমন মা ৫ বার outputএ (ফলেন) িসিপিপ দখােত
বলা হয়, ব াপারটা িক তামার কােছ খুবই সহজ লাগেব। ফ উপেরর মেতা কের একটা cout
ব বহার কেরই তুিম ৫ বার িসিপিপ outputএ দখােত পারেব। অথবা তুিম চাইেল িক নীেচর
মেতা কের েত কবার আলাদা আলাদা cout িদেয় একটা কের িসিপিপ আলাদা আলাদা কের
মাট ৫ বার output িদেত পােরা। আর তারপর একটা endl দখােলই হেলা।
cout << " cpp " ;
cout << " cpp " ;
cout << " cpp " ; / / cpp এর পের একটা space
cout << " cpp " ;
cout << " cpp " ;
cout << endl ;

উপেরর উপায় েলােত আমােদর িট সম া রেয়েছ। থম সম া হে মা ৫ বার না হেয়


যিদ আমােদর ১০০০ বার বা এই রকম অেনক বশী বার output (ফলন) িদেত বলা হয়, তাহেল
তুিম কী করেব? তুিম িক programএর ( মেলখ) িভতের এইভােব ১০০০ বার বা ওই রকম অত

৩৬৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১. For Loop Repetition (জ ঘূণীর পুনরাবৃি )

বশী বার আলাদা কের cpp িলখেব? িন য় না! আর ি তীয় সম া হে কত বার outputএ
cpp দখােত হেব সটা যিদ আমরা userএর (ব বহারকারী) কােছ থেক input ( যাগান) িনই,
তাহেল সংখ াটা তা program লখার সময় জানা থাকেছ না, তরাং ওই ভােব িঠক কত বারই
বা আমরা programএর িভতের cpp িলখেবা? ব াপারটার তা কান রাহাই নই!
f o r ( i n t count = 1 ; count <= 1000 ; ++count )
cout << " cpp " ;
cout << endl ;

আমরা আেগ থম সম ািটর সমাধান দিখ। যিদ আমরা program ( মেলখ) লখার সম-
য়ই জািন কতবার cpp দখােত হেব, আর সিট যিদ অেনক বশী বার হয় তাহেল দেখা আমরা
সংে েপ িঠক উপের দখােনা programএর মেতা কত সহেজই ১০০০ বার িসিপিপ দিখেয়
ফলেত পাির! কথা হে মা এই িতনিট সাির কী ভােব ১০০০ বার cpp িলখেব?
তামােক খাতা কলেম িলখেত িদেল তুিম িনেজ কী করেব? তুিম হয়েতা ১ থেক ১০০০
পয এক এক কের ধারাবািহকভােব নেত করেব। আর যখনই একটা সংখ া উ ারণ করেব
তখনই তুিম একবার cpp িলখেব। তুিম তা বুি মান মা ষ তাই তুিম জােনা য তামােক ১০০০

5g
এ িগেয় থামেত হেব। িক computer (গণিন) যেহতু বাকা তাই স যটা কের িতবার ১
বািড়েয় পেরর সংখ াটা বেল আর তার সােথ সােথই পরী া কেরও দেখ ১০০০ হেলা কী না।
আসেল তুিম মা ষ িহসােব বুি মান হেলও মেন মেন তুিম িক িতবার সই একই কাজই কেরা,
অথাৎ পরী া কের দেখা ১০০০ হেয় গেলা নােতা, নাহেল ১ যাগ কের পেরর সংখ ায় চেল যাও!
in
উপেরর program ( মেলখ) িঠক এই কাজটাই কের।
এবার for( int count = 1; count<=1000; ++count) অংশটু ল কেরা। আম-
রা একটা variable (চলক) িনেয়িছ count যার initial value (আিদ মান) ১, আমরা ১ থেক
নেত করেবা, তারপর condition check (শত পরী া) কের দখেবা count এখেনা
am

১০০০ বা ছাট িকনা, আর condition সত হেল count এর মান এক বাড়ােবা। তেব এই


condition count <= 1000 আর update ++count এই েয়র মেধ আসেল for এর নী-
চ য statement (িববৃিত) আেছ cout << "cpp "; সটা execute করেবা। আর count
বাড়ােনার পের আবার condition check করেবা, condition সত হেল count আবার বা-
ড়ােবা, ইেয়র মােঝ অব ই statementটা execute করেবা, এইটা বারবার করেত থাকেবা
যত ণ conditionটা সত আেছ। Condition িমথ া হেয় গেল statementটাও execute
al

করেবা না, countও বাড়ােবা না, control (িনয় ণ) চেল যােব loopএর বাইের ধেরা এইে ে
যখােন আেছ cout << endl; সখােন।
i n t count = 1 ; / / এিট f o r এর ১ম অংশ মা একবার

i f ( count <= 1000) / / ২য় অংশ c o n d i t i o n বারবার


{ cout << " cpp " ; ++count ; } / / statement , ৩য় অংশ
বারবার
i f ( count <= 1000) / / িঠক উপেরর ই সািরই আেরকবার
{ cout << " cpp " ; ++count ; }
/ / এইরকম মাট ১০০০ বার উপেরর ই সাির আেছ বেল আমরা ধের িনেত পাির
i f ( count <= 1000) / / ১০০০ তম বার ওই ই সািরই
{ cout << " cpp " ; ++count ; }

cout << end ; / / এরLoop বাইের অ িকছু

৩৭০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১. For Loop Repetition (জ ঘূণীর পুনরাবৃি )

কী চমৎকার না মা িতন সািরর program ( মেলখ) কী ভােব বার বার একই কাজ কের কত
বড় একটা programএর সমতুল কাজ কের দয়। Loop-এর (ঘূণীর) মুল িক এইখােনই।
এই পযােয় তুিম হয়েতা বলেত পােরা আিম ১ থেক ১০০০ বার না েন যিদ ০ থেক ৯৯৯ বার িন
তাহেল িক কাজ হেব। িন য় হেব কারণ ০ থেক ৯৯৯ পয েতা মাট ১০০০টা সংখ াই হয়। কউ
চাইেল ২ থেক ১০০১ পয ও নেত পাের, কারণ তােতও ওই ১০০০টা সংখ াই আেছ। আসেল
এই ে তা কত থেক আর কত ত িগেয় শষ সটা কান ব াপারই না, মুল ব াপার হেলা
মাট কতিট সংখ া আেছ তােদর মেধ ।
f o r ( i n t count = 1 ; count <= 1999 ; count += 2 )
cout << " cpp " ;
cout << endl ;

তামােদর মেধ কউ কউ আবার বেল বসেত পােরা নাহ আিম ১ থেক এক এক কের বািড়েয়
১০০০ পয নেবা না, আিম নেবা ১ থেক ই ই কের বািড়েয় ১৯৯৯ পয । তােতও কান
সম া নাই ১, ৩, ৫, ..., ১৯৯৯ পয িক মাট ১০০০িট সংখ াই আেছ। আমরা িঠক উপের দিখ-

5g
য়িছ, এিট কী ভােব করেত হেব। তুিম চাইেল িক ৩ কেরও বাড়ােত পােরা, বা অ িকছু কেরও।
একটা ব াপার দেখা এক কের বাড়ােনার সময় ++count না িলেখ আমরা িক চাইেল count++
অথবা count += 1ও িলখেত পারতাম, একটু ধীর গিতর হেলও কাজ অ যায়ী সব েলা একই।
f o r ( i n t count = 0 ; count < 1000 ; ++count )
in
cout << " cpp " ;
cout << endl ;

এবার একটা পূণ থা (custom) আেলাচনা কির। িসিপিপেত আমরা সাধারণ য কান
am

নিত কির ০ থেক। এিটর নানািবধ কারণ আেছ, কারণ েলা আমরা যথা সে পের জান-
বা। তেব মা া কথা বলেত পােরা সংখ া আসেল হয় থেক। তাহেল আমােদর নিত
হেব ০, ১, ২, ..., ৯৯৯ পয । িক এখােন য ১০০০িট সংখ া আেছ সিট বুঝােনার জ আমরা
শেত count <= 999 না িলেখ বরং িলখেবা count < 1000 যােত চােখ দেখ আমরা সহেজই
বুঝেত পাির য ১০০০ বার loop (ঘূণীটা) চলেব। তাহেল ধের িনেত পােরা আমরা সচরাচর িঠক
উপেরর মেতা কের ০ থেক ১০০০ এর ছাট পয loop িলখেবা, অ ভােব হয়েতা নয়।
al

int start = 0 ; // হেব ০ থেক


int incr = 1 ; / / বাড়েব ১ কের
i n t t o t a l = 1000 ; / / মাট কত বার
f o r ( i n t count = s t a r t ; count < t o t a l ; count += i n c r )
cout << " cpp " ;
cout << endl ;

তুিম িক চাইেল কত থেক হেব, কতবার loop চলেব, িত পােক কত কের বৃি হেব,
এসব িবষয় উপেরর মেতা কের variable (চলক) ব বহার কেরও করেত পােরা। আর variable
এর value initial assignment (আিদ আেরাপণ) করেত পােরা, কান ভােব িহসাব কের
assign করেত পােরা, অথবা নীেচর মেতা কের inputও ( যাগান) িনেত পােরা। Variableএর
মান যিদ input নাও তাহেল বুঝেতই পারেছা আমরা আর program ( মেলখ) রচনার সময়
আেগ থেক জািননা loop (ঘূণী) িঠক কতবার ঘুরেব, সটা জানা যােব ধু program execute
(িনবাহ) করার সময়। তরাং সই অেথ variable ব ব ত এই loop েলােক িঠক িব ারণ করা

৩৭১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২. For Loop Block (জ ঘূণীর মহ া)

যােব না। খয়াল কেরেছা আমরা িক এই আেলাচনার মাধ েম এই পােঠর র িদেক আেলািচত
আমােদর ি তীয় সম ািটর সমাধান পেয় গলাম। কমন চমৎকার ব াপার তাই না!
িফিরি ১৬.১: Repeatedly Display the Same (বারবার একই িজিনস দখােনা)
i n t totalcount ;
cout << "how many times ? " ;
c i n >> t o t a l c o u n t ;
f o r ( i n t count = 0 ; count < t o t a l c o u n t ; ++count )
cout << " cpp " ;
cout << endl ;

তাহেল িমিলেয় সব আমরা দখলাম for loop এ (জ ঘূণীেত) মাট চারিট অংশ আেছ:
initialisation (আদ ায়ন), condition (শত), update (হালায়ন), statement (িববৃিত)।
এর মেধ initialisation (আদ ায়ন), condition (শত), আর update (হালায়ন) থােক ( )
round bracket ( গাল ব নী) যুগেলর মেধ , আর ; semicolon (িদিত) িদেয় পৃথক করা

5g
থােক। এছাড়া bracketএর সামেন থােক for আর bracketএর পের থােক statement (িব-
বৃিত)। Initialisation একবার ঘেট, তারপর condition, statement, update এই িতনিট
এই েম বার বার ঘটেত থােক যত ণ condition সত হয়, আর condition িমথ া হেল loop
(ঘূণী) শষ হেয় যায়।
in
f o r ( i n i t i a l i s a t i o n ; c o n d i t i o n ; update )
statement
am

১৬.২ For Loop Block (জ ঘূণীর মহ া)

এমন একিট program ( মেলখ) রচনা কেরা যিট থেম ণীেত ছা সংখ া input ( যাগান)
নেব। তারপর িতিট ছাে র গিণেত া ন র input িনেয় outputএ (ফলন) ছা িটর ফলাফল
পাশ না ফল তা দখােব, যখােন পােশর মান ৫০ বা বশী।
al

িফিরি ১৬.২: Pass Fail in Mathematics Class ( ণীেত গিণেতর পাশ ফল)
cout << " student count ? " ;
i n t count ; c i n >> count ;

cout << endl ;


f o r ( i n t index = 0 ; index < count ; ++index )
{ / / index i s a l o c a l v a r i a b l e i n s i d e the block
cout << " s e r i a l " << index + 1 ;
cout << " marks obtained ? " ;
i n t marks ; c i n >> marks ;
cout << " r e s u l t : " ;
cout << ( marks >= 50 ? " pass " : " f a i l " ) ;
cout << endl << endl ;
}

৩৭২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২. For Loop Block (জ ঘূণীর মহ া)

উপের programএর ( মেলখ) মুল অংশ দখােনা হেলা, আর নীেচ রেয়েছ programিট
compile (সংকলন) কের run করেল (চালােল) কমন input-output ( যাগান-ফলন) হেত
পাের তার নমুনা। এখােন আমরা কবল মা িতনজন ছাে র জ programিট চািলেয় output
দিখেয়িছ, তুিম চাইেল আেরা বশী জেনর জে ও run করেত পােরা।

যাগান-ফলন (input-output)
student count ? 3

s e r i a l 1 marks obtained ? 80
r e s u l t : pass

s e r i a l 2 marks obtained ? 35
result : f a i l

s e r i a l 3 marks obtained ? 50
r e s u l t : pass

5g
এবার আমরা programিট ( মেলখ) িবে ষণ কির। থেম ছা সংখ া কত সটার জ
prompt message (যাচনা বাতা) দিখেয় আমরা count variable (চলক) ঘাষণা কের
in
তােত ছা সংখ া input ( যাগান) িনেয়িছ। তারপর আমরা for loop (জ ঘূণী) িলেখিছ যটা
চলেব index variableএর মান ০ থেক count এর কম পয অথাৎ মাট count সংখ ক
বার। খয়াল কেরা িত পােক loopটায় কবল একটা simple statement (সরল িববৃিত)
execute (িনবাহ) করেলই হেব না, বরং আমােদর দরকার অেনক েলা statement execute
am

করা। আমরা তাই {} curly bracket (বাঁকা ব নী) ব বহার কের একটা block (মহ া) িনেবা
আর তার িভতের যত েলা statement (িববৃিত) দরকার তা রাখেবা। এখােন বেল রািখ য,
index variableিট for loopএর (জ ঘূণী) যখােন ঘাষণা করা হেয়েছ তােত এিট একিট
local variable ( ানীয় চলক) যা কাযকর থাকেব কবল ওই blockএর (মহ া) িভতের।
Blockএর (মহ া) িভতের আমরা যটা করেবা সটা হেলা েত ক ছাে র থেম serial
al

ন র দিখেয় তার গিণেত া ন র prompt (যাচনা) করেবা। ল কেরা থম পােক index


variableএর মান ০ িক থম ছাে র serial হেব ১, ি তীয় পােকর সময় index variableএর
মান হেব ১ িক ি তীয় ছাে র serial হেব ২, এইভােব চলেব। এেত বুঝায় যায় কান পােক
index variableএর মান যত সই পােকর ছা িটর serial হেব তার চেয় এক বশী। যাইেহাক
prompt (যাচনা) করার পর আমরা ন র input িনেয়িছ marks variableএ। তারপর একিট
ternary operator (িতিনক অণুি য়া) ব বহার কের ৫০ এর বশী হেল পাশ আর নাহেল ফল
outputএ দিখেয়িছ। আমরা চাইেল এখােন if elseও (যিদ নাহেল) ব বহার করেত পারতাম।
Loopএ (ঘূণীেত) block (মহ া) ব বহার করা যখন িশখলাম, তখন বেল রাখা দরকার
য blockএর (মহ া) িভতের আমরা িক য রকম ই া statement (িববৃিত) যত েলা ই া
statement িলখেত পাির। আমরা আেগই জািন ; semicolon (িদিত) িদেয় শষ হওয়া কান
িকছুই হেলা একটা statement। তেব য কান simple statementএর (সরল িববৃিত) পা-
শাপািশ আমরা compound statementও ( যৗিগক িববৃিত) ব বহার করেত পাির। If else
(যিদ নাহেল), nested if else (অ াঅি যিদ নাহেল), if else ladder (যিদ নাহেল মই),
ternary operator (িতিনক অণুি য়া), switch case (পি ব াপার) এ েলা সব েলাই
unit compund statement (একক যৗিগক িববৃিত)। Unit statement হওয়ায় এ েলার

৩৭৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৩. Loop Index and Succession (পােকর চক ও পর রা)

য কান একটা ব বহার করেল block (মহ া) তরী করার দরকার নাই, করেলও সম া নাই,
িক এ েলার একািধক ব বহার করেল অব ই block (মহ া) তরী কের িনেত হেব। আম-
রা িক উপেরর blockএ ternary operator (িতিনক অণুি য়া) সহ অ কেয়কিট simple
statement (সরল িববৃিত) একসােথ দিখেয়িছ। Loopএ (ঘূণী) block (মহ া) ব বহােরর সা-
থ এটাও বেল রাখা দরকার য blockএর িভতের আবারও এক বা একািধক loop (ঘূণী) আমরা
চাইেলই িলখেত পাির। তেব আমরা সই আেলাচনা করেবা nested loop (অ াি ঘূণী) সংেগ।

১৬.৩ Loop Index and Succession (পােকর চক ও পর রা)


এমন একিট program ( মেলখ) রচনা কেরা যিট একিট arithmetic seriesএর (সমা র
ধারার) থম পদ a, common difference (সাধারণ অ র) d, ও পদ সংখ া n input ( যা-
গান) িনেয় পদ েলােক নীেচর মেতা কের output (ফলন) িদেব। খয়াল কেরা পদ েলা যাগ
িচ িদেয় আর যাগফল সমান িচ িদেয় দখােনা হেয়েছ।
1 + 3 + 5 + 7 + 9 = 25

5g
আমরা জািন arithmetic seriesএর থম পদ a, common difference d হেল kতম
পদ হল a + (k − 1)d, আর n পেদর যাগফল হেলা n ∗ (2a + (n − 1)d)/2। তরাং একিট
for loop (জ ঘূণী) আমরা 1 থেক n পয চািলেয় কাজিট খুব সহেজই কের ফলেত পাির।
in
িফিরি ১৬.৩: Arithmetic Series Problem (পািটগিণেতর ধারার সম া)
int a , d , n ; / / িতনিট v a r i a b l e
cout << " a d n value ? " ; / / input prompt
am

c i n >> a >> d >> n ; / / input নাও

i f ( n <= 0 ) / / n o n p o s i t i v e পদসংখ া হণেযাগ নয়


{
cout << "n must be p o s i t i v e " << endl ;
ret ur n EXIT FAILURE ; // এ ে program ব থ
al

/ / লুপ চালাও 1 হেত n পয


f o r ( i n t k = 1 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট িহসাব কেরা
cout << " + " << t ; / / ফাঁকা ও যাগ িচ
}

i n t s = n ∗ ( 2∗a + ( n − 1 ) ∗ d ) / 2 ; / / যাগফল িহসাব


cout << " = " << s << endl ; / / ফাঁকা ও সমান িচ

তেব উপেরর program ( মেলখ) output (ফলন) িদেক তাকােল একটা ছাট সম া
দখেত পােব। একটু খয়াল করেল দখেব outputএ একদম থম পদিটর সামেনও যাগ িচ
চেল এেসেছ, যিট আসেল চাওয়া হয় িন। এিট সমাধােণর উপায়ও খুব সহজ, একটা যিদ (if)

৩৭৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৩. Loop Index and Succession (পােকর চক ও পর রা)

লািগেয় যাগ িচ টা k এর মান 1 ছাড়া অ য কান সময় দখােবা, আর পেদর মানটা তা


িতবারই দখােত হেব। নীেচর program দেখা।
/ / Loop চালাও 1 হেত n পয
f o r ( i n t k = 1 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট
i f ( k ! = 1) / / থম পদ ছাড়া
cout << " + " ; / / ফাঁকা ও যাগ িচ
cout << t ; / / পদিট দখাও
}

িঠক উপেরর এই programিট িঠক মেতা output (ফলন) িদেলও এটা আসেল সেবা ম
নয়। কারণ যাগ িচ না দওয়ার ব াপারিট কবল থম পেদর জ , বাঁকী সব েলার জ যাগ
দখােত হেব। িক ওই condition checking িতবার িতিট পেদর জ করেত হে , কারণ

5g
condition checkingেতা loopএর িভতের রেয়েছ। আমরা যিদ condition checkingটা
এড়ােত চাই, তাহেল আমােদর বুঝেত হেব য থম পদ ছাড়া বাঁকী পদ েলা একরকেমর, তা-
দর সবার সামেন যাগ িচ আেছ, কােজই কবল তারাই loopএর িভতের থাকেব। আর থম
পদিটেক সে ে আলাদা কের ফলেত হেব। নীেচর program ( মেলখ) দেখা condition
checking আর করেত হয় িন, কারণ loop চেলেছ 2 হেত n পয । আর থম পদিট loopএরও
in
আেগ দখােনা হেয়েছ।
cout << a ; // থম পদিট এরloop বাইের , এর সামেন যাগ নাই
am

/ / k = 2 হেত n বাঁকী ( n−1 ) িট যাগওয়ালা পদ এরloop িভতের


f o r ( i n t k = 2 ; k <= n ; ++k )
{
i n t t = a + ( k − 1) ∗ d ; / / k−তম পদিট িহসাব কেরা
cout << " + " << t ; / / ফাঁকা ও যাগ িচ
}
al

উপেরর এই programিটেত আেরকিট িবষয় ল কেরা। Loopএর (ঘূণী) িত পােক আম-


রা kতম পদ িহসাব করিছ a + (k − 1) ∗ d expression (রািশ) হেত, যখােন একিট যাগ,
একিট িবেয়াগ ও একিট ণ করেত হে । আসেল এখােন আমরা িতিট পদ সরাসির িহসাব করিছ
কততম পদ সটা অথাৎ k থেক। িক তা না কের আমরা অ একটা কাজ করেত পাির।
/ / k = 2 হেত n বাঁকী ( n−1 ) িট যাগওয়ালা পদ এরloop িভতের
f o r ( i n t k = 2 , t = a ; k <= n ; ++k ) / / t i n i t i a l i s e
{
t += d ; / / আেগর মােনর সােথ d যাগ
cout << " + " << t ; / / ফাঁকা ও যাগ িচ
}

যেহতু arithmetic seriesএর (সমা র ধারার) য কান েটা পেদর মেধ difference
d, আমরা তাই কবল আেগর পেদর সােথ d যাগ কেরই পেরর পদ পেয় যেত পাির। তােত
িতিট পদ িহসাব করেত কবল একটা যাগ করেলই চলেব। এে ে আমরা t variableিটেক

৩৭৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৪. Using Breaks in Loops (ঘূণীেত াি র ব বহার)

loopএর initialisationএ (আদ ায়েন) declare কের initial value িদেত পাির থমপদিটর
মােনর সমান। আর িত পােক আেগ t এর মান d পিরমান বাড়ােনা হেব তারপর output দওয়া
হেব। াভািবক ভােব এই programিট বশী efficient হেয়েছ।
এবার একটু িভ আেলাচনা। For loop (ঘূণী) initialisationএ (আদ ায়ন) আমরা চাইেল
, comma (িবিত) িদেয় একািধক variable declare ও initial value িদেত পাির। এই
variable েলা িক loopএর সােথ য statement (িববৃিত) বা block (মহ া) কবল সখােন
local variable ( ানীয় চলক) িহসােব ব বহার করা যায়। কান variableেক যিদ loopএর
িভতের ও বাইের উভয় ে কান কারেণ দরকার হয়, সই variableিটেক তাহেল loopএর
আেগই ঘাষণা কের ফলেত হেব। আমরা স রকম একিট উদাহরণ দিখ নীেচ তেব এে ে
আমরা যাগফলিটেক আর n ∗ (2a + (n − 1)d)/2 ব বহার কের করেবা না, বরং এিটেকও
loop িদেয়ই করেবা, যিদও সটা efficient হেব না, loop ছাড়া িদেয়ই বরং দ হেব।
int t = a , s = a ; / / থম পদ ও এক পেদর যাগফল।

cout << t ; // থম পদিট এরloop বাইের , এর সামেন যাগ নাই

t += d ;
s += t ;
5g
f o r ( i n t k = 2 ; k <= n ; ++k ) / / Loop 2 হেত n
{
/ / আেগর মােনর সােথ d যাগ
/ / যাগফেলর সােথ এই পদ
in
যাগ
cout << " + " << t ; / / ফাঁকা ও যাগ িচ
}
am

cout << " = " << s << endl ; / / ফাঁকা ও সমান িচ

১৬.৪ Using Breaks in Loops (ঘূণীেত াি র ব বহার)


al

িসিপিপ ভাষায় এমন একিট program ( মেলখ) িলেখা যিট তামার মাধ িমক পরী ায় ১০ িট
িবষেয়র ন র input ( যাগান) িনেব। তুিম যিদ িতিট িবষেয় ৫০ এর বশী কের পেয় থােকা
তাহেল তামার গড় ন র দখােব, আর যিদ য কান একিট িবষেয়ও ফল কের থােকা, তাহেল
বাঁকী িবষয় েলার ন র input ( যাগান) নয়া বাদ িদেয়ই সরাসির output (ফলন) দখােব
অকৃতকায। এবার িভ একটা অব া িচ া কেরা যখােন তামােক সব েলা িবষেয়র ন র input
িনেতই হেব, একটােত ফল করেল তুিম outputএ অকৃতকাযও দখােব, তেব গড় ন র দখােব
কবল পাশ করা িবষয় েলার ন র িনেয়। এই নতুন programিট ( মেলখ) কমন হেব?

িফিরি ১৬.৪: Pass Fail in Ten Subjects (দশ িবষেয়র পাশ ফল িনণয়)
i n t totalMarks = 0 , index = 0 ; / / i n i t i a l value

( f o r ( ; index < 10 ; ++index )


{
cout << index << " th s u b j e c t marks ? " ;
i n t marks ; c i n >> marks ;

৩৭৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৪. Using Breaks in Loops (ঘূণীেত াি র ব বহার)

i f ( marks < 50) break ; / / loop থেক বর হেয় যাও !

totalMarks += marks ;
}

i f ( index < 10) / / loop থেক আেগই বর হেয় এেসেছ


cout << " f a i l e d " << endl ;
else / / loop শষ কের তারপর এখােন এেসেছ
{
f l o a t averageMarks = totalMarks / 10 . 0 ;
cout << " average marks " << averageMarks << endl ;
}

দ সম া িটর থমিটর সমাধান উপের দখােনা হেয়েছ। তমন কিঠন িকছু নয়। একটা

5g
for loop (জ ঘূণী) ব বহার করা হেয়েছ যিদ index নামক variableিটর (চলক) মান ০ থেক
১ কের বািড়েয় বািড়েয় ১০ এর কম পয চলেব। Loopএর িত পােক curly brackets (বাঁকা
ব নীর) িভতের থেম কততম িবষেয়র ন র input ( যাগান) িনেত চাই সটা input prompt
( যাগান যাচনা) করেবা, তারপর marks নামক variableএ (চলক) সিট input িনেবা। ল
in
কেরা index এর মান ০ হেল আমরা িক ০তম িবষেয়র ন র কত তা জানেত চেয়িছ। অথাৎ
আমরা নেত কেরিছ ০ থেক। যাইেহাক marks চলেক মান input নওয়ার পের আমােদর
সটা totalMarks চলেকর সােথ যাগ করার কথা, কারণ সবেশেষ আমরা গড় বর করেত চাই।
তেব ে বলা হেয়েছ ৫০ বা বশী হেল গড় বর করেত হেব, ৫০ এর কম হেল আর input
am

( যাগান) না িনেয় অকৃতকায দখােত হেব। এই অংশটু করেত আমরা যিট কেরিছ তা হেলা
if (marks < 50) break; এই অংশটু িলেখিছ।
আমরা switch-case (পি -ব াপার) আেলাচনা করার সময় breakএর ( াি ) ব বহার
দেখিছলাম। এখােনও breakএর ( াি ) কাজ ায় একই। Break ( াি ) পাওয়া মা ই ওই
break য loopএর (ঘূণী) িভতের, control (িনয় ণ) সই loop থেক বর হেয় তারপেরর
al

অংেশ চেল যায়। উপেরর programএ ( মেলখ) ৫০ এর কম ন র input ( যাগান) হেলই


control loopএর (ঘূণী) বাইের থাকা if elseএ (যিদ নাহেল) চেল যােব, আমরা যা চাইিছলাম।
এখন দেখা আমরা এই if elseএ (যিদ নাহেল) index variableএর (চলক) মান পরী া করিছ
১০ এর কম িকনা। যিদ break ( াি ) হেয় control loop থেক বর হেয় এেস থােক তাহেল
index variableএর মান অব ই ১০ এর কম হেব, সেবা ৯ হেব। আর যিদ loopএর সব েলা
পাক শষ কের এেস থােক তাহেল অব ই index এর মান ১০ বা বশী, কারণ loop (ঘূণী) চলার
শতই তা হেলা index variableএর মান ১০ এর কম হেত হেব। তা if else এ index < 10
হেল আমরা faile (অকৃতকায) দিখেয়িছ, আর নাহেল totalMarks ক থেম ১০ িদেয় ভাগ
কের গড় বর কের তারপর সটা outputএ (ফলন) দিখেয়িছ।
একটা িবষয় খয়াল কেরা এখােন গড় ন রিট fractioner (ভ ক) হেব তাই সটা ধারণ
করার জ আমরা float ধরেণর variable averageMarks িনেয়িছ। আর totalMarks
ক ফ ১০ িদেয় ভাগ করেল আমরা আসেল কান fractioner পােবা না, বরং কারণ -
টা integerএর (পূণক) ভাগফলও integer আমরা জািন। িক একিট integer ও একিট
fractioner ভাগফল আবার একিট fractioner। তাই কৗশল িহসােব আমরা 10 না িলেখ িল-
খিছ 10.0 যােত ভাগফল আেস fractioner (ভ ক) িহসােব। আর একিট িবষয় খয়াল কেরা,

৩৭৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৪. Using Breaks in Loops (ঘূণীেত াি র ব বহার)

index variableিটেক আমরা িক for( int index = 0; index < 10; ++index) িলেখ
loopএর (ঘূণী) িভতের local variable ( ানীয় চলক) িহসােব declare কির নাই। আমরা
বরং index declare কেরিছ loop (ঘূণী) বাইের আর initial valueও (আিদ মান) িদেয়িছ
loopএর বাইের। এর কারণ হেলা index variableিটেক যেহতু আমরা for loopএর (জ
ঘূণী) বাইের if elseএ (যিদ নাহেল) ব বহার করেত চাই, তাই এিটেক loopএর িভতের declare
করা যােব না, সে ে loopএর বাইের সিট আর কাযকর থাকেব না বেল। তুিম িক চাইেল ক-
বল declarationটা loopএর বাইের কের initial value দওয়াটা loopএই করেত পারেত।
আর একটা িবষয়ও তাহেল ফাঁক তােল আমরা জানলাম সটা হেলা for loopএর (জ ঘূণী) এর
initialisation (আদ ায়ন) অংেশ িকছু না থাকেলও কান সম া নই।

i n t totalMarks = 0 , t o t a l S u b j e c t s = 0 , index ;
bool f a i l e d = f a l s e ; / / i n i t i a l value

f o r ( index = 0 ; index < 10 ; ++index )


{

5g
cout << index << " th s u b j e c t marks ? " ;
i n t marks ; c i n >> marks ;

i f ( marks < 50) f a i l e d = true ;


else
in
{
totalMarks += marks ;
t o t a l S u b j e c t s += 1 ;
am

}
}

if ( failed )
cout << " f a i l e d " << endl ;
else
al

{
f l o a t averageMarks = totalMarks / t o t a l S u b j e c t s ;
cout << " average marks " << averageMarks << endl ;
}

আমােদর যিদ সব েলা িবষেয়র ন র input ( যাগান) িনেতই হয়, তাহেল আমরা উপেরর
programএর মেতা কের break ( াি ) ছাড়া িলখেবা। তেব কান একটা িবষেয়র ন র ৫০ এর
কম িছেলা িকনা সটা মেন রাখার জ আমরা এখােন boolean (বুলক) ধরেণর একিট variable
failed িনেয়িছ। এই failed variableিটর মান initially false, কারণ তখনও আমরা একটা
িবষয়ও পরী া কির নাই। তারপর loopএর িভতের খয়াল কেরা if elseএ (যিদ নাহেল) ন র
৫০ এর কম হেল আমরা failed variableএর মান কের িদেয়িছ true। একািধক িবষেয়র মান
৫০ এর কম হেল স েলার িতবােরই failed variableএর মান true হেব, িক loopএর
(ঘূণী) িভতের failed variableএর মান false হওয়ার কান পথ নাই। কােজই loopএর শেষ
failed variableএর মান true মােন হেলা এক বা একািধক িবষেয়র ন র ৫০ এর কম, আর
failed variableএর মান তখনও false থাকা মােন হেলা কান িবষেয়র ন রই ৫০ এর কম

৩৭৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৫. Continue in Loops (ঘূণীেত পাক িডঙােনা)

িছেলা না। failed ধরেনর boolean variable (বুলক চলক) য েলা আমরা loopএর িভতের
কান দ শত কখেনা সত হেয়িছেলা িকনা মেন রাখেত ব বহার কির স েলােক বলা হয় flag
variable (পতাকা চলক)।
উপেরর programএ আমরা totalMarks িহসাব কেরিছ কবল marks variableএর
মান ৫০ বা বশী হেল, আর এরকম িবষয় কয়িট সটাও মেন রাখার জ mtotalSubjects না-
মর আেরকিট variable িনেয় সটার মান িতবার ১ কের বািড়েয়িছ। ল কেরা totalMarks
ও totalSubjects variable িটর declaration ( ঘাষণা) ও initial value (আিদমান)
দয়া হেয়েছ loopএর (ঘূণী) আেগ। এখােন index variableিট আমরা declare কের-
িছ loopএর (ঘূণী) বাইের, িক এবার initial value িদেয়িছ loopএর (ঘূণী) initialisation
(আদ ায়ন) অংেশই। তামার ই ামেতা ও দরকারমেতা তুিম নানাভােবই এ েলা করেত পােরা।
এই পাঠ শষ কির আেরকিট িবষয় িদেয়। ল কেরা totalSubjects িদেয় আমরা যখােন
totalMarks ক ভাগ কেরিছ, সখােন totalSubjects িকনা পরী া কির নাই। তুিম জা-
না িদেয় ভাগ করেল divide by zero বা িদেয় ভাগ বেল একিট িট (error) দখা
দয়। আমােদর mtotalSubjects এর মান পরী া করা দরকার হয় নাই, কারণ সটা হও-
য়া স ব যিদ ১০টা িবষেয়র সব েলােতই ন র ৫০ এর কম হয়। িক একটা িবষেয়ও যিদ ন র

5g
৫০ এর কম হয় তাহেল তা failed সত হেয় যােব আর failed (অকৃতকায) outputএ (ফলন)
আসেব, গড় ন র নয়। কােজই কান িট আসার েযাগই তরী হেব না এখােন।
in
১৬.৫ Continue in Loops (ঘূণীেত পাক িডঙােনা)

এক ব বসায়ী তার খির ারেদর িহসাব সংর েণর জে একটা কের খাতা ন র িদেয় দয়। তেব
am

সং ার জিনত কারেণ স মেন কের কান খির ােরর খাতা ন র যিদ ১৩ বা এর িণতক হয়,
তাহেল সই খির ার তার জে িতর কারণ হেব, হয়েতা বাঁকী িনেব অথবা বাঁকী িনেয় পির-
শাধ করেব না। এখন তামােক এমন একিট program ( মেলখ) িলখেত হেব যটা রন র
আর শেষর ন র input ( যাগান) িনেয় ১৩ িদেয় িবভাজ ন র েলা বাদ িদেয় অ ন র েলা
output (ফলন) িদেব, যােত ওই ব বসায়ী ন র েলা খির ারেদর খাতার ওপর লাগােত পাের।
al

িফিরি ১৬.৫: Ignoring Unlucky Numbers ( ভােগ র সংখ া উেপ া)


i n t begin , end ; / / েলার v a r i a b l e মান input িনেত হেব

f o r ( i n t number = begin ; number <= end ; ++number )


{
i f ( number % 13 == 0 ) / / ১৩ িদেয় িবভাজ হেল
continue ; / / পেররটােত চেল যাও

cout << number << endl ; / / অ েলার জ


}

এই program ( মেলখ) লখা খুবই সহজ। তামার েটা variable (চলক) begin আর
end িনেত হেব। এই েটার মান তুিম ব বসায়ীর কােছ থেক input ( যাগান) িনেব। তারপর তু-
িম একিট for loop (জ ঘূণী) চালােব যিট number variableএর মান begin থেক end
পয এক এক কের বািড়েয় বািড়েয় যােব। আর loopএর (ঘূণী) িভতের তুিম if (যিদ) ব বহার

৩৭৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৬. For Loop and Decrement (জ ঘূণীেত ােসর ব বহার)

কের পরী া কের দখেব number variableএর মান ১৩ ারা িবভাজ িকনা। যিদ number
% 13 == 0 শত সত হয় তাহেল আমরা সখােন ওই ন র continue (িডিঙেয়) কের চেল যােবা
মােন আর িকছু না কের loopএর পেরর পােক চেল যােবা, আর শত িমথ া হেল ওই পাক না িডিঙ-
য় পের যখােন output (ফলন) দওয়া হেয়েছ সটা করেবা। For loopএর (জ ঘূণী) পাক
continue (িডিঙেয়) পেরর পােক যাওয়া মােন িঠক যখােন continue; লখা হেয়েছ সখান
থেক control (িনয় ণ) loopএর update (হালায়ন) অংেশ ++number করেত চেল যােব,
ফেল number এর মান ১ বাড়েব, আর তারপর িনয়মা যায়ী এর পের condition checking
(শত পরী ণ), পেরর পােকর statement execution (িববৃিত িনবাহ), এই ভােব চলেত থা-
কেব। For loopএ (জ ঘূণী) continue (িডঙােনার) কাজ মুলত এতটু ই।
i n t begin , end ; / / েলার v a r i a b l e মান যাগান িনেত হেব
f o r ( i n t number = begin ; number <= end ; ++number )
{
/ / এই খােন এক গাদা কাজ থাকেত পাের , তাই block নয়া হেয়েছ

{
5g
i f ( number % 13 ! = 0 ) / / ১৩ িদেয় িবভাজ না হেল

cout << number << endl ;

/ / এই খােন আেরা এক গাদা statement থাকেত পাের।


in
/ / এক গাদা statement না থাকেল block { } লাগেব না।
}
}
am

উপেরর program ( মেলখ) দেখা। য কাজ আমরা continue (িডঙােনা) ব বহার কের
স কেরিছলাম, সটা continue ছাড়াই করা হেয়েছ। যেহতু ১৩ িদেয় িবভাজ না হেল আমা-
দর ন র েলা output (ফলেন) দখােত হেব, আমরা তাই শতটা উে িদেয় number % 13
!= 0 িলেখই কাজিট কের ফলেত পাির। ১৩ ারা িবভাজ হওয়ার ে তা আমােদর তাহেল
আর িকছু করার নাই, তরাং control (িনয় ণ) আপনা আপিনই update (হালায়ন) অংেশ
al

চেল যােব। তারমােন বলেত গেল continue (িডঙােনা) একটা অদরকারী িবষয়। তাহেল এই-
টা আেছই বা কন? একটা িবষয় খয়াল কেরা ১৩ ারা িবভাজ না হেল এই ে আমােদর
কবল একটাই কাজ, ন রটা outputএ দখােনা। আমােদর এইটােক কান blockএর (মহ া)
িভতের রাখার দরকার নাই, যিদও আমরা উপের আমরা সটা রেখিছ। Block মুলত দরকার যিদ
ওইখােন আমােদর এক গাদা statement execute (িনবাহ) করেত হয়। তা এই িবশাল এক
গাদা statement (িববৃিত) ক একটা if (যিদ) এর blockএর িভতের ঢুিকেয় দওয়ার চেয়
continue (িডঙােনা) ব বহার কের program ( মেলখ) িলখেল বুঝেত িবধা হয়।

১৬.৬ For Loop and Decrement (জ ঘূণীেত ােসর ব বহার)

তুিম দশতলা দালােনর ১ তলা থেক elevatorএ (উে ালক) কের দশ তলায় উঠেত ও নামেত
চাও। তা elevatorেক এক তলা হেত আেরক তলায় যাওয়ার জ িতবার আলাদা কের িনেদশ
িদেত হয়। এবার এমন একিট program ( মেলখ) রচনা কেরা যিট তামার হেয় elevatorেক
এেকর পর এক উঠার ও তারপর নামার িনেদশ িদেব।

৩৮০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৬. For Loop and Decrement (জ ঘূণীেত ােসর ব বহার)

এই programএর ( মেলখ) উঠার অংশ তা খুবই সহজ। নীেচর program ( মেলখ)


দেখা, মুলত for loop কী ভােব লখা হেয়েছ সটা দখেব। Loopিট level variableএর
(চলক) মান ১ হেত ৯ (বা ১০ এর কম) পয ১ বািড়েয় বািড়েয় চলেব আর িতবাের outputএ
(ফলেন) দখােব level হেত level + 1 এ উঠেত হেব অথাৎ কান পােক level variableএর
মান ৪ হেল দখােব ৪ হেত ৫। তলা ৯ হেত ১০ এ উেঠ আর উঠেত হেব না তাই loop িক
level = 10 এর জ ঘুরেব না।

িফিরি ১৬.৬: Ten Floor Up Down (দশতলায় উঠা-নামা)


/ / উঠার অংশ
cout << " l e v e l 1 " << endl ;
cout << " going up" << endl ;
f o r ( i n t l e v e l = 1 ; l e v e l < 10 ; ++ l e v e l )
cout << l e v e l << " to " << l e v e l +1 << endl ;
cout << "no more up" << endl ;

cout << " l e v e l 10 " << endl ;

/ / নামার অংশ
5g
in
cout << " going down" << endl ;
f o r ( i n t l e v e l = 10 ; l e v e l > 1 ; −−l e v e l )
cout << l e v e l << " l e v e l " << l e v e l−1 << endl ;
am

cout << "no more down" << endl ;

cout << " l e v e l 1 " << endl ;

এবার আসা যাক programএর পেরর অংেশ। এখােন ১০ থেক নামা , থেম ১০ থেক
al

৯ এ, তারপর ৯ থেক ৮ এ, এইভােব ২ থেক ১ এ িগেয় শষ, ১ থেক আর নামার ব াপার


নাই। কােজই এইখােনও আমরা একটা loop (ঘূণী) ব বহার করেবা। এই loop চলেব level
variable এর মান ১০ হেত ২ (বা ১ এর বশী) পয , আর িতবাের level variableএর
মান এক কমেব, অথাৎ for loopএর (জ ঘূণী) update অংেশ ++level না িলেখ িলখেবা
−−level। ব স হেয় গেলা, দশ তলা থেক এক তলায় নামার অংশও।
এবার আমরা একটা খুচরা িবষয় দিখ। আমরা এখােন level নােমর variableিট (চলক)
ইবার declare ( ঘাষণা) কেরিছ, ই loopএ (ঘূণী) ইবার। যেহতু for loopএর (জ
ঘূণী) অংেশ variable েলা local variable ( ানীয় চলক) িহসােব declare করা হেয়েছ, স-
হতু variable িটর কাযকারীতা িক সংি loopএর িভতেরই শষ। কােজই িতবার ঘা-
িষত variable আসেল নাম একই হেলও আলাদা আলাদা variable। তুিম যিদ কবল এক-
বার variable declare কের কাজ সারেত চাও সটাও করেত পারেব। থম loopএরও (ঘূ-
ণীর) আেগ int level ; িলেখ variable declare একবারই কের ফেলা আর loop েটার
initialisation (আদ ায়ন) অংেশ int level = 1; না িলেখ ফ level = 1; কের দাও।
তাহেল level নােমর একই variable উভয় loopএ ব ব ত হেলা।

৩৮১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৭. For Loop Empty Condition (জ ঘূণীেত ফাঁকা শত)

১৬.৭ For Loop Empty Condition (জ ঘূণীেত ফাঁকা শত)

For loopএ (জ ঘূণী) condition ফাঁকা রাখেল কী ঘেট? For loopএ শত ফাঁকা রেখ
এমন একিট program রচনা কেরা যিট দশিট ধনা ক পূণক (positive integer) input
( যাগান) িনেব। যিদ বা ঋণা ক (negative) integer input দয়া হয়, সটা উেপ া
করেব। Programিট এরপর ধনা ক সংখ া দশিটর যাগফল outputএ (ফলন) দখােব।
i n t index = 0 , sum = 0 ;

for ( ; ; ) / / শত ফাঁকা
{
cout << " input number ? " ;
i n t number ; c i n >> number ;

i f ( number <= 0 ) / / ধনা ক না হেল


continue ;

sum += number ;
++index ;
5g
/ / পাক িডঙাও

/ / যাগফল
/ / হালায়ন
in
/ / নীেচর শত যু break না িদেল i n f i n i t e loop হেব
i f ( index >= 10) / / শত এখােন
break ; / / break i n loop
am

cout << "sum " << sum << endl ;

উপেরর program দেখা। এেত শত ফাঁকা রাখা হেয়েছ। আমরা index variableিট-
ক (চলক) চাইেল for loopএ (জ ঘূণী) declare ( ঘাষণা) করেত পারতাম, িক sum
al

variableিটেক অব ই loopএর বাইেরই declare করেত হেব। Loopএর (ঘূণী) িভতের


দেখা input prompt ( যাগান যাচনা) কের number input নয়া হেয়েছ। Input নয়া
numberিট যিদ বা ঋণা ক হয় তাহেল পাক িডঙােত হেব তাই continue; দয়া হেয়-
ছ, আর ধনা ক হেল যাগফল বাড়েব, আর indexও বৃি (increment) পােব। Indexএর
মান বাড়ােনার পেরই আমরা একিট if else (যিদ নাহেল) লািগেয় পরী া কের দখেত পাির
index variableএর মান ১০ হেলা িকনা। যিদ হেয় থােক তাহেল আমােদর আর loop (ঘূ-
ণী) চািলেয় যাওয়া উিচৎ হেব না। আমরা তাই break; লািগেয় loopএ break িদেবা। আর
index variableএর (চলক) মান ১০ না হেয় থাকেল পের control (িনয় ণ) for loop (জ
ঘূণী) update (হালায়ন) অংেশ যােব, সখােন তা িকছু হেব না, কারণ সিট ফাঁকা। তারপর
condition (শত) অংেশ যােব, সখােনও ফাঁকা। িক একটা িবষয় মেন রাখেব ফাঁকা শত মা-
ন সব সময় সত অথাৎ এই ে for ( ; ; ) আর for ( ; true ; ) একই কথা। যাই
হাক শতা সত হওয়ায় পেরর পাক যথারীিত হেব। তুিম যিদ কান কারেণ if (index >=
0) break; এই শত যু break এই for loopএ না দাও তাহেল িক loop থেক বর হেয়
যাওয়ার আর কান পথ রইেলা না। ওিদেক ফাঁকা শত তা সবসময় সত রেয়েছ। এমতাব ায় এই
loop (ঘূণী) অসীম সংখ ক বার ঘূরেত থাকেব।

৩৮২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৮. For Loop Empty Update (জ ঘূণীেত ফাঁকা হালায়ন)

য loop (ঘূণী) অসীম সংখ ক বার ঘুের, আর loop থেক বর হওয়ার কান েযাগ নাই, এ
রকম loopেক বলা হয় infinite loop (অসীম ঘূণী)। ফাঁকা শতা ছাড়াও infinite loop তরী
হেত পাের, যিদ তামার শত এমন হয় য সটা সবসময় সত , যমন ধেরা index == index এই
শতিটও সবদা সত , কােজই এটাও infinite loop তরী করেব। Infinite loop তরী হওয়া
মােন এই program কান িদনই থামেব না। Programএ loop (ঘূণী) তরী করেলই আমােদর
তাই অিতির সতক থাকেত হয় যােত সটা কান ভােবই infinite loop না হেয় যায়।

১৬.৮ For Loop Empty Update (জ ঘূণীেত ফাঁকা হালায়ন)

এমন একিট program ( মেলখ) রচনা কেরা যিট দশিট positive integer (ধনা ক পূণক)
input ( যাগান) িনেব। যিদ zero বা negative (ঋণা ক) পূণক input দয়া হয়, সটা উেপ া
করেব। Programিট এরপর positive সংখ া দশিটর যাগফল outputএ (ফলন) দখােব।
এই programিট লখা একদমই সাজা। এখােন মুলত আমরা দখেত চাই য for loopএ

5g
(জ ঘূণী) initialisation (আদ ায়ন) অংেশর পাশাপািশ update (হালায়ন) অংশও ফাঁকা
রাখা যায়। নীেচর program ( মেলখ) দেখা। এখান আমরা েটা variable (চলক) count
আর sum িনেয়িছ। েটারই initial value (আিদ মান)
( যাগান) নয়া হয় িন, আর তাই যাগফলও এই অব ায়
, কারণ এখন একটা সংখ াও input
। Variable count ক তুিম চা-
in
ইেল অব initialisation অংেশও ঘাষণা কের initial value িদেত পারেত যমন for (
int count = 0; count < 10; ) িক variable sum ক অব ই loopএর (ঘূণী) বাইের
declare করেত হেব, কারণ আমরা output (ফলন) দখােবা তা loopএর বাইের।
am

i n t count = 0 , sum = 0 ;

f o r ( ; count < 10 ; ) / / ফাঁকা হালায়ন


{
cout << "number? " ;
i n t number ; c i n >> number ;
al

i f ( number <= 0 ) / / ধনা ক না হেল


continue ; / / পাক িডঙাও

sum += number ;
++count ; / / হালায়ন
}

cout << "sum " << sum << endl ;

উপেরর programএ for loopএ (জ ঘূণী) আমরা কবল condition (শত) অংশ-
িট রেখিছ, মাট ন র ১০ িট হেলা িকনা তা পরী া করেত। Loopএর (ঘূণী) িভতের input
prompt ( যাগান যাচনা) কের ন রিট input ( যাগান) নয়া হেয়েছ। তারপর দেখা number
variableএর মান যিদ বা কম হয় তাহেল continue; িদেয় পাক িডঙােত বলা হেয়েছ।
ধনা ক সংখ া ছাড়া অ রকেমর সংখ া আসেল আমরা উেপ া করেত চাই, এ কারেণ এ ব ব া।

৩৮৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৮. For Loop Empty Update (জ ঘূণীেত ফাঁকা হালায়ন)

আমরা জািন for loopএ (জ ঘূণী) continue; করেল control সরাসির update (হা-
লায়ন) অংেশ চেল যায়। তা আমােদর এই loopএ update অংশেতা ফাঁকা রেখিছ, কােজই
count variableএর মান যা িছেলা তাই থাকেলা। ফেল আবার input prompt কের ন র
input নওয়া হেব। যত ণ বা তার কম কান সংখ া input ( যাগান) দয়া হে তত-
ণ এইভােব চলেত থাকেব count variableএর মান বাড়েব না। এবার ধেরা positive ন -
রিট input দয়া হেলা, তাহেল number <= 0 এই শতিট িমথ া হেব, ফেল control (িন-
য় ণ) আর পাক িডঙােব না, পেরর সািরেত িগেয় ন রিটেক sum এর সােথ যাগ করেব, আর
count variableএর (চলক) মানও এক বাড়েব। এই ভােব দশিট ধনা ক সংখ া হেলই কবল
count variableএর মান বেড় দশ হওয়া স র আর তােত loop (ঘূণী) থেক বর হেয় যাও-
য়া স র, negative সংখ া বা িদেয় শত িমথ া করা স ব হেব না। তাহেল আমরা দখলাম
loopএর (ঘূণী) update অংশেক ফাঁকা রেখ শত সােপে update করেত চাইেল সটা আমরা
statement (িববৃিত) অংেশ িনেত পাির।
তেব একটা ব াপার এখােন রণ করা দরকার। ধেরা ািম কের আমরা কখেনাই positive
সংখ া input ( যাগান) না িদেয় কবলই বা negative সংখ া input িদেত থাকলাম।
এই অব ায় কী ঘটেব? তাহেল তা count variableএর (চলক) মান কখেনা বাড়েব না, ফেল

5g
count < 10 শতিট িমথ া হওয়ার কান স াবনা থাকেছ না। এই অব ায় িক for loopিট
(জ ঘূণী) অসীম সংখ ক বার ঘুরেত থাকেব। য loop (ঘূণী) অসীম সংখ ক বার ঘুের, আর
loop থেক বর হওয়ার কান েযাগ নাই, এ রকম loopেক বলা হয় infinite loop (অসীম
ঘূণী)। Infinite loop তরী হওয়া মােন এই program কান িদনই থামেব না। Loop (ঘূণী)
in
িলখেলই আমােদর তাই সতক থাকেত হয় যােত সটা কান ভােবই inifinite loop না হেয় যায়।
যিদও এই programএ ( মেলখ) দশিট ধনা ক সংখ া input ( যাগান) িদেয় িদেয় loop
থেক বর হওয়ার আমােদর েযাগ আেছ, তেব সটা কবল স ব যিদ input দাতার (user
am

who is giving the input) সিদ া থােক আর আমরা তার ওপের আ া রাখেত পাির। তুিম
যিদ input দাতার ওপের আ াশীল না হও তাহেল একটা কাজ করেত পােরা। সটা হেলা সেবা
কত বার তুিম input ( যাগান) চাইেব সটা িনিদ কের িদেত পােরা। যমন ১০ িট সংখ া input
নয়ার জ ধেরা আমরা ধের িনলাম য সেবা ১৫ বার input দয়া আমরা মেন নেবা। িনতা
যিদ ভুল কের ঋণা ক বা কউ দয়, সই রকম ভুল আমরা এে ে ৫ বােরর বশী হেত
িদেবা না। তাহেল আমরা নীেচর মেতা কের program ( মেলখ) িলখেত পাির।
al

i n t attempt = 0 , count = 0 , sum = 0 ;

f o r ( ; attempt < 15 && count < 10 ; )


{
cout << "number? " ;
i n t number ; c i n >> mombor ;

++attempt ;

i f ( number <= 0 ) / / ধনা ক না হেল


continue ; / / পাক িডঙাও

sumber += number ;
++count ; / / হালায়ন
}

৩৮৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৯. For Loop Empty Statement (জ ঘূণীেত ফাঁকা িববৃিত)

i f ( count == 10)
cout << "sum " << sum << endl ;
else
cout << "max attempts f i n i s h e d " << endl ;

উপেরর এই programএ আমরা attemp নােমর আেরকিট variable িনেয়িছ যিট িদেয়
সবেমাট কয়বার input ( যাগান) দয়া হেলা সটা িহসাব রাখেবা। িতবার ন র input দ-
ওয়া মা ই attempt variableএর (চলক) মান এক বাড়েব, ন রিট ধনা ক, ঋণা ক,
যাই হাক, এ কারেণ এিট িক if (number <= 0) continue; এর আেগ দয়া হেয়েছ। আর
attempt variableএর মান যােত ১৫ হওয়া পয loop ঘুের তাই আমরা এবার loopএর
(ঘূণী) শত অংশিট বদেল িলেখিছ attempt < 15 && number < 10। এর মােন হেলা য
কান একিট শত ভ হেলই loop আর ঘুরেব না, কােজই ১৫ বােরর বশী চ া করা স ব হেব
না, আবার ১০ িটর বশী ধনা ক ন রও input ( যাগান) দয়া স ব হেব না। তাহেল একটা ব া-
পার আমরা দখলাম, loopএর condition (শত) অংেশ আমরা চাইেল একািধক condition

5g
boolean connectives (বুলক সংেযাজক) যমন and &&, or | |, not ! িদেয় সংযু কের
িদেত পাির। সবেশেষ দেখা loopএর (ঘূণী) বাইের আমরা যাগফল output (ফলন) িদেয়িছ
যিদ count variableএর মান ১০ হেয় থােক। আর না হেয় থাকেল মােন ১৫ বােরর চ ায়ও
১০ িট ধনা ক সংখ া নয়া স ব হয় নাই সে ে একটা message (বাতা) দখােনা হেয়েছ য
সেবা চ া শষ হেয় গেছ।
in
১৬.৯ For Loop Empty Statement (জ ঘূণীেত ফাঁকা িববৃিত)
am

এমন একিট program ( মেলখ) িলেখা যিট থেক িত পােক ৩ কের বািড়েয় সেবা ১০
ধাপ সামেন যােব, আর এই ভােব যিদ এমন কান সংখ া পায় যিট ৭ ারা িবভাজ তাহেল থেম
যােব। আমরা এই েপ পাওয়া সবেশষ সংখ ািট output জানেত চাই।
i n t number = 0 ; / / count িদেয় loop
al

f o r ( i n t index = 0 ; count < 10 ; ++count )


{
i f ( number % 7 == 0 ) / / number িদেয় break
break ;
number += 3 ;
}
cout << number << endl ;

Break ( াি ) ব বহার কের এই programিট লখা বশ সহজ। Loop (ঘূণী) count


variableএর (চলক) মান থেক দেশর কম পয চালাও আর িত পােক numberএর
মান ৭ ারা িবভাজ হেলা িকনা পরী া কের দেখা। ৭ ারা িবভাজ হেল loopএ break ( াি )
দাও। আর না হেল numberএর মান ৩ বাড়াও। তুিম িক চাইেল এই একই কাজ নীেচর মেতা
কেরও করেত পােরা যখােন আমরা loop (ঘূণী) চািলেয়িছ number variable ব বহার কের।
ল কেরা number variableএর মান থেক কের িতবাের ৩ কের বাড়েব, আর
loop চলেব যত ণ number ৭ ারা িবভাজ নয় তত ণ, ৭ ারা িবভাজ হওয়া মা loop

৩৮৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.৯. For Loop Empty Statement (জ ঘূণীেত ফাঁকা িববৃিত)

শষ হেয় যােব। Statement অংেশ দেখা আমরা count variableএর মান ১০ বা বশী হেল
loopএ break ( াি ) িদেয়িছ, আর না হেল count variableএর মান এক বাড়েব।

i n t number , count = 0 ; / / number িদেয় loop


f o r ( number = 0 ; number % 7 ! = 0 ; number += 3 )
{
i f ( count >= 10) / / count িদেয় brea
break ;
++count ;
}
cout << number << endl ;

তাহেল উপেরর িট programএ আমরা একবার একটা variableেক (চলক) loopএ (ঘূ-
ণী) আর অ variableিটেক break ( াি ) এ ব বহার কেরিছ, আর আেরকবার িঠক উে াটা

5g
কেরিছ। আমরা িক চাইেল উভয় variableেক loopএ ব বহার করেত পাির না। অব ই পাির।
নীেচর program ( মেলখ) খয়াল কেরা। এখেনা number ও count েটা variableেকই
loopএ ব বহার করিছ। Initialisation (আদ ায়ন) অংেশ েটার মানই হেয়েছ
আমরা comma (িবিত) , ব বহার কেরিছ এখােন। Condition (শত) অংেশ আমরা েটা শত
থেক,

িদেয়িছ এবং && িদেয় জাড়া িদেয় যােত loop তত ণ চেল যত ণ উভয় শত সত হয়। য কান
in
একিট শত িমথ া হেলই loop শষ হেয় যােব। আর শত িট হেলা count < 10 ও number
% 7 == 0, থম শতিট সেবা দশ ধােপর জ আর ি তীয় শতিট ৭ ারা িবভাজ না হওয়া
পয । আর loopএর (ঘূণী) update (হালায়ন) অংেশ দেখা আমরা count আর number
am

েটােকই বািড়েয়িছ, একটােক এক কের, আেরকটােক িতন কের। তা এ সেবর ফেল আমােদর
statement (িববৃিত) অংেশ িক আর িকছুই করার থাকেছ না। আমরা তাই statement অংেশ
একটা empty statement (ফাঁকা িববৃিত) িদেয়িছ কবল একটা semicolon (িদিত) ব বহার
কের। তুিম চাইেল {} ফাঁকা blockও ব বহার করেত পােরা।

i n t number , count ;
al

f o r ( count = 0 , number = 0 ; //
initialisation
count < 10 && number % 7 ! = 0 ; / / condition
++count , number += 3 ) / / update
; / / empty
statement
cout << number << endl ;

তাহেল আমরা দখলাম, for loopএর (জ ঘূণী) statement (িববৃিত) ফাঁকা থাকেত
পাের। আর initialisation (আদ ায়ন) ও update (হালায়ন) অংেশ একািধক variable ব -
বহার করা যােব, উপেরা increment বা decrement য কবল এক কের করেত হেব তাও
না, বরং অ য কান পিরমান increment বা decrement করা যােব। এছাড়া condition
(শত) অংেশও দরকার মেতা একািধক শত boolean connectives (বুলক সংেযাজক) যমন
এবং && অথবা | | িদেয় জাড়া দওয়া যােব।

৩৮৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১০. Statement and Update (িববৃিত হালায়ন িমথি য়া)

১৬.১০ Statement and Update (িববৃিত হালায়ন িমথি য়া)

সাধারণত for loopএর (জ ঘূণী) variableিটর (চলক) মান আমরা হয় statementএ (িব-
বৃিত) অথবা updateএ (হালায়ন) পিরবতন কির। িক উভয় অংেশ পিরবতন করেল কী হেব?
f o r ( i n t index = 0 ; index < 10 ; ++index )
{
cout << index << " " ;
i f ( index == 5 )
++index ;
}
cout << endl ;

উপেরর programএ ( মেলখ) আমরা (for loop)এর (জ ঘূণী) variable (চলক)


index এর মান statement (িববৃিত) ও update (হালায়ন) উভয়খােন পিরবতন কেরিছ।

5g
Updateএ িনয়িমত পিররতন িহসােব এক কের বাড়েব িতবার, আর statementএ (িববৃ-
িত) যিদ current value (চলিত মান) হয় তাহেল এক বাড়েব। এর ফেল কী হেব? খয়াল কেরা
index এর মান ৫ ছাড়া অ িকছু হেল কবল update অংেশ এক বাড়েব, িক index এর মান
৫ হেল, তখন statementএ if (index == 5) শত সত হওয়ায় সখােন index এর মান
এক বাড়েব, আবার updateএ তা আেরা এক বাড়েবই। ফেল পেরর পােক যখন index চল-
in
কর মান outputএ (ফলন) আসেব তখন সটা ৬ না হেয় ৭ হেব। কােজই নীেচ যমন দখােনা
হেলা আমরা outputএ ৬ দখেত পােবা না।
am

0 1 2 3 4 5 7 8 9

For loopএ (জ ঘূণী) update (হালায়ন) অংেশ incrementটা (বৃি ) থা ক, িক


statement (িববৃিত) অংেশ আমরা increment না কের যিদ decrement ( াস) কির, তাহ-
ল অব া কী দাঁড়ােব? ধরা যাক নীেচর programএর ( মেলখ) মেতা statementএ index
variableএর মান ৫ হেল এক না বািড়েয় আমরা বরং এক কমালাম। খয়াল কেরা এই -
al

index variableএর মান ৫ হওয়ার পের যিদর শত সত হওয়ায় এক কেম ৪ হেব, িক


updateএ িগেয় আবার এক বেড় হেয় যােব ৫, outputএ (ফলন) ৫ দখােনার পের আবার
যিদর শত সত হওয়ায় এক কেম হেব ৪, updateএ িগেয় হেব ৫, ফেল আবার outputএ ৫
দখােব। কােজই 0 1 2 3 4 5 কের একবার ৫ দখােনার পের এই for loop (জ ঘূণী) তা-
রপেরর িত পােকই কবল ৫ই দিখেয় যােব। আর এই loopএ (ঘূণী) বর হওয়ার কান উপায়
নাই। কােজই এিট একিট infinite loopএ (অসীম ঘূণী) পিরণত হেব। তুিম জােনা আমরা সব-
সময় চাই infinite loop এিড়েয় যেত।
f o r ( i n t index = 0 ; index < 10 ; ++index )
{
cout << index << " " ;
i f ( index == 5 )
−−index ;
}
cout << endl ;

৩৮৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১১. Unnecessary For Loop (অদরকারী জ ঘূণী)

১৬.১১ Unnecessary For Loop (অদরকারী জ ঘূণী)

এমন একিট program রচনা কেরা যিট ০ থেক ৯ পয িতিট অ েক কথায় িলখেব। আর
অ েলােক পরপর অে ই িলখেল য program হেতা তার সােথ তফাৎটা কমন দাঁড়ায়?
0 1 2 3 4 5 6 7 8 9

অ েলােক উপেরর মেতা কের পরপর অে ই িলখেল ব াপারটা তা খুবই সহজ। এই রকম
program ( মেলখ) আমরা নীেচ দখালাম। একটা for loop (জ ঘূণী) variable (চলক)
digitএর মান ০ থেক ৯ পয এক কের বািড়েয় যােব, আর িত পােক আমরা cout ব বহার
কের digitটােক দখােবা। এখােন cout জােন কান অ েক কীভােব িলখেত হয়!
f o r ( i n t d i g i t = 0 ; d i g i t <= 9 ; ++ d i g i t )
cout << d i g i t << " " ;
cout << endl ;

5g
এবার অ েলােক যিদ অে না িলেখ আমরা কথায় িলিখ, তাহেল কী করেবা? এখােন যেহতু
আমরা ০ থেক ৯ পয অেনকবার কথায় িলখিছ, অেনেক তাই এখােন for loop (জ ঘূ্ণী)
ব বহার করেত উ ু হয়। ফেল তারা নীেচর মেতা কের program তরী কের। এখােন cout
িক কান অ েক কী ভােব িলখেত হেব তা জােননা, আমােদর তাই একিট switch case (পি
ব াপার) ব বহার কের িতিট অ েক আলাদা আলাদা কের বেল িদেত হেয়েছ।
in
f o r ( i n t d i g i t = 0 ; d i g i t <= 9 ; ++ d i g i t )
{
swtich ( d i g i t )
am

{
case 0 : cout << " shunyo " ; break ;
case 1 : cout << " ek " ; break ;
case 2 : cout << " dui " ; break ;
case 3 : cout << " t i n " ; break ;
case 4 : cout << " char " ; break ;
al

case 5 : cout << " panch " ; break ;


case 6 : cout << " soy " ; break ;
case 7 : cout << " shat " ; break ;
case 8 : cout << " aat " ; break ;
case 9 : cout << " noy " ; break ;
}
}
cout << endl ;

িক উপেরর programএ ( মেলখ) for loop (জ ঘূণী) ব বহার আসেল অদরকারী।


কারণ loopএর (ঘূণী) িত পােক আসেল switch caseএর (পি ব াপার) আলাদা আলাদা
ব াপার execute (িনবািহত) হে । আমােদরেক তা িতিট পােকর জে সই আলাদা আলাদা
কাজই করেত হেলা, তাহেল আর loop কন ব বহার করেবা, কাজ েলা নীেচর মেতা কের সরাসির
এেকর পর এক িলখেলই তা হেয় যায়। মেন রাখেব আমরা loop তখনই ব বহার করেবা যখন
িত পােকর জ এই রকম আলাদা আলাদা িকছু করেত হয় না। যমন কথায় না দিখেয় অে

৩৮৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১২. General Purpose For Loop (জ ঘূণীর সাধারণ ব বহার)

দখােল িক আমােদর for loop ব বহার করেলই চলেতা কারণ cout ব বহােরর কারেণ িতিট
অ দখােনােত য িভ তা সটা আমােদর সরাসির সামলােত হয় না।
cout << " shunyo " ;
cout << " ek " ;
cout << " dui " ;
cout << " tin " ;
cout << " char " ;
cout << " panch " ;
cout << " soy " ;
cout << " shat " ;
cout << " aat " ;
cout << " noy " ;
cout << endl ;

১৬.১২ General Purpose For Loop (জ


হার)
5g ঘূণীর সাধারণ ব ব-
in
For loop (জ ঘূণী) আমরা এ পয কবল order ( ম), progression ( গমণ), series
(ধারা) ইত ািদর ে ব বহার কেরিছ। For loop (জ ঘূণী) কী এ সব ছাড়া য কান শত
পরী ার মাধ েম সাধারণ ভােব একিট loop তরীেত ব বহার করা যায়?
am

িসিপিপ ছাড়া অ া ভাষায় for loop (জ ঘূণী) কবল order ( ম), progression
( গমণ), series (ধারা) এসেবই ব বহার করা যায়। তেব িসিপিপর for loop আসেল অেনক
শি শালী, এটােক য কান রকম loop তরীেত ব বহার করা যায়। ব ত িসিপিপেত for loop
(জ ঘূণী) িদেয়ই সকল রকেমর loop তরী করা যায়, কােজই অ কান loop দরকার হয় না,
যিদও িসিপিপেত আেরা িট loop (ঘূণী) আেছ, য েলা আমরা পেরর পাঠ েলােত দখেবা।
al

i n t number = 1 , count = 0 , sum = 0 ;

f o r ( ; number ! = 0 ; ) / / আদ ায়ন হালায়ন ফাঁকা


{
c i n >> number ; / / ন র যাগান নাও
i f ( number ) // ন র না হেল
{
count += 1 ; // নিত এক বাড়েব
sum += number ; // যাগফেলও যাগ হেব
}
}

cout << " count " << count << " " ;
cout << "sum " << sum << endl ;

৩৮৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৩. For Loop Variations (জ ঘূণীর নানান বাহার)

উপেরর programএ ( মেলখ) খয়াল কেরা। এখােন আমরা িকছু ন র input ( যাগান)
িনেয় তােদর যাগফল বর করেত চাই। তেব কয়িট ন র input িনেবা আমরা সটা আেগ থেক
জািননা । ব বহারকারী যত েলা ইে ন র input িদেত থাকেব, যখন স আর কান ন র input
িদেত চায় না তখন স একটা input িদেয় সটা জানােব। আমরা তারপর কয়িট ন র input
িনেয়িছ আর তােদর যাগফল কত সটা outputএ (ফলন) দখােবা।
তা এই programিট ( মেলখ) খুবই সহজ। আমরা একিট for loop (জ ঘূণী) িনেয়িছ,
িক এটােক আমরা কান variableএর (চলক) মান বািড়েয় বা কিমেয় ঘুরােবা না। আমরা মুলত
শতটা ব বহার করেবা loop (ঘূণী) তরীেত। িতনিট variable (চলক) number, count আর
sum নয়া হেয়েছ যােদর আিদমান (initial value) দওয়া হেয়েছ ঘূণীর বাইের। ঘূণীর পের
যেহতু count ও sum ফলেন (output) দখােনা হেব, তাই ও েলা অব ই ঘূণীর (loop)
বাইের ঘাষণা (declare) করেত হেব। িক number চলকিট ঘূণীর িভতের ঘাষণা ও আদ ায়ন
(initialisation) করা যেত পারেতা। যাইেহাক ঘূণীর িভতের ন রিট যাগান িনেয় যিদ না
হয় তাহেল নিত এক বািড়েয় যাগফেলর সােথ ন রিট যাগ করা হেয়েছ।
একটা িবষয় খয়াল কেরা আমােদর ঘূণীেত (loop) শত number != 0 অথাৎ number
এর মান

5g
ছাড়া অ িকছু হেল কবল ঘূণীর িববৃিত (statement) িনবািহত (execute)
হেব। তা থমবার আমরা তা অব ই ঘূণীর িভতের ঢুকেত চাই, িক number তা তখন
পয একটাও যাগান (input) নয়া হয় নাই। ঘূণীর িভতের যিদ আমােদর ঢুকেতই হয়, আমােদর
সে ে কান ভােব শত সত কের িদেত হেব, number চলকের আিদমান
িদেয় রাখেত হেব। আমরা number এর আিদ মান িদেয়িছ 1, তুিম চাইেল
ছাড়া একটা িকছু
ছাড়া অ য
in
কান িকছু িদেত পারেত। চলক count আর sum এর আিদমান তা ই িদেত হেব, সটা
বুঝেতই পারেছা, যেহতু তখনও আমােদর একটাও ন র যাগান নওয়া হয় নাই।
আসেল জ ঘূণীেত (for loop) শত পরী ণ হয় সাধারণত িববৃিতেত (statement) ঢুকার
am

আেগ, অথচ আমরা এখােন শত পরী া করেত চাই িববৃিত অংেশর পের, কারণ িববৃিতেত আমরা
য ন রিট যাগান িনেবা সটা আমরা পরী া করেত চাই পেরর পােক ঢুকার আেগ। পেরর পােকর
আেগ পরী ণ মােন আেগর পােকর পের আর কী! আর স কারেণ জার কের number চলেকর
আিদ মান 1 িদেয় থমবার শত সত বািনেয় আমরা খািনকটা চালািক কেরিছ!
al

১৬.১৩ For Loop Variations (জ ঘূণীর নানান বাহার)

For loop (জ ঘূণী) কত ভােব লখা যায়? এর মেধ িন য় বুেঝ ফেলেছা for loopএর for
( ; ; ) bracketsএর (ব নী) িভতেরর semicolon (িদিত) ; েটা কবল আবি ক। তাহেল
initialisation (আদ ায়ন), condition (শত), update (হালায়ন) কত ভােব িব াস করা
স ব?
f o r ( আদ ায়ন ; শত ; হালায়ন ) আদ ায়ন
িববৃিত f o r ( ; শত ; হালায়ন )
িববৃিত

উপের বামপােশ for loopএর (জ ঘূণী) সাধারণ অব া দখােনা হেয়েছ, আর ডান পােশ
দখােনা হেয়েছ য চাইেলই initialisation (আদ ায়ন) অংশিট loopএর (ঘূণী) বাইের িনেয়
যাওয়া যায়। তােত ফলাফল একই থাকেব। তেব তফাৎ অ একটুই আেছ সটা হেলা বামপােশর
initialisationএ যিদ variable declare করা সিট কবল loopএর জ local variable

৩৯০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৩. For Loop Variations (জ ঘূণীর নানান বাহার)

( ানীয় চলক), তাই loopএর পের আর ব বহার করা যায় না। িক ডানপােশর initialisationএ
যিদ variable declare (চলক ঘাষণা) করা হয় সটা loopএর (ঘূণী) পেরও ব বহার করা যা-
ব। আমরা এর পের থেক initialisation (আদ ায়ন) loopএর (ঘূণী) িভতেরই হয়েতা িলখেবা,
তেব আেরকবার বেলই িদি variable declare করার ব াপারিটেত কান সম া না থাকেল
তুিম চাইেলই সিট loopএর আেগই িলখেত পারেব। তরাং initialisation কাথায় থাকেলা
স িবষেয় িভ তা এখােনর পের আর দখােবা না।
f o r ( আদ ায়ন ; শত ; হালায়ন ) f o r ( আদ ায়ন ; শত ; )
িববৃিত {
িববৃিত
হালায়ন
}

এরপর উপের দেখা আমরা কী ভােব update (হালায়ন) অংশট যথা ােন না িলেখ তার
বদেল statementএর (িববৃিত) সােথ িদেয় িদেয়িছ। এেত loopএর (ঘূণী) ফলাফল একই থাক-

5g
ব, কারণ িববৃিতর পরপরই তা update execute (িনবািহত) হেতা, এখেনা তাই হে । কােজই
তুিম চাইেল য কান সময় এইটা করেত পােরা। আমরা এরপের update (হালায়ন) যথা ােনই
রাখেবা, এ সং া variation েলা ( ভদন) আর দখােবা না।
f o r ( আদ ায়ন ; ; হালায়ন ) f o r ( আদ ায়ন ; true ; হালায়ন )
in
{ {
i f ( ! শত ) break ; i f ( ! শত ) break ;
িববৃিত িববৃিত
} }
am

এবার আমরা condition (শত) অংেশর িভ তা দখেবা। উপের দেখা আমরা শতিটেক
statement (িববৃিত) অংেশ িনেয় িগেয়িছ। ফেল condition অংেশ বাম পােশর মেতা হয় ফাঁকা
রাখা হেব, না হয় ডানপােশর মেতা true িলেখ দওয়া হেব। েটা মুলত একই কথা কারণ ফাঁকা
শত মােন সত । Condition যখন statement অংেশ গেছ তখন দেখা আমরা ! লািগেয়
উে া শত িদেয় loopএ (ঘূণী) break ( াি ) িদেয়িছ যােত শত িমথ া হেলই loop থেক
al

control (িনয় ণ) বর হেয় যায়। তরাং এই variation েলা ( ভদন) for loopএর (জ
ঘূণী) সাধারণ অব ার সমাথক।
f o r ( আদ ায়ন ; শত১ ; হালায়ন ) f o r ( আদ ায়ন ; শত১ ; হালায়ন )
{ {
i f ( শত২ ) i f ( ! শত২ ) continue ;
িববৃিত িববৃিত
} }

f o r ( আদ ায়ন ; ; হালায়ন ) f o r ( আদ ায়ন ; ; হালায়ন )


{ {
i f ( ! শত১ ) break ; i f ( ! শত১ ) break ;
i f ( শত২ ) িববৃিত i f ( ! শত২ ) continue ;
} িববৃিত
}

৩৯১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৪. Precondition in While Loop (পূব শেতর ণ ঘূণী)

উপের দেখা statement অংেশ আমরা আেরকিট শত ব বহার কের statement (িববৃিত)
execute কেরিছ। তা আমরা চাইেল এখােন উপেরর ডান পােশর মেতা কের শত২ এর িবপরীত
শত িদেয় পাক continue (িডঙােত) পাির। তােত statement আর if (যিদ) এর অধীেন থাকেছ
না। উদাহরণ েলার শত১ ক যিদ আমরা statement অংেশ নািমেয় দই তাহেল আমরা যা
পােবা তাও উপের দখােনা হেয়েছ।
f o r ( আদ ায়ন ; ; ) f o r ( আদ ায়ন ; ; )
{ {
i f ( ! শত১ ) break ; i f ( ! শত১ ) break ;
i f ( শত২ ) িববৃিত i f ( ! শত২ )
হালায়ন {
} হালায়ন
continue ;
}
িববৃিত

5g }
হালায়ন

সবেশেষ আমরা উপের একটু দিখ update (হালায়ন) যিদ statement (িববৃিত) অংেশ
ঢুেক যায় তাহেল break ( াি ) আর continue (িডঙােনা) এর সােথ কী িমথি য়া ঘেট। িবেশষ
in
কের ডানপােশ দেখা শত২ সত না হেল আমােদর থেম updateএর (হালায়ন) কাজটু করেত
হেব, তারপর আমরা continue করেত (িডঙােত) পারেবা। এর কারণ for(আদ ায়ন; ; ) এখােন
যেহতু update অংশটু ফাঁকা আর continue করেল াভািবক ভােব for loopএ (জ ঘূণী)
am

update অংশটু েতই control (িনয় ণ) চেল যায়, সেহতু updateএর কাজটু আমােদর
continue; এর আেগই সের ফলেত হেব। এ ছাড়া খয়াল কেরা updateএর কাজটু আমরা
statementএর পেরও কেরিছ, সটােতা াভািবক ভােবই হওয়ার কথা।

১৬.১৪ Precondition in While Loop (পূব শেতর ণ ঘূণী)


al

িসিপিপেত একিট program ( মেলখ) িলেখা যিট userএর (ব বহারকারী) কােছ থেক িট
positive integer (ধনা ক পূণক) input ( যাগান) িনেয় তােদর গির সাধারণ ণনীয়ক বা
গসা িনণয় করেব। এই programিট তুিম while loop ( ণ ঘূণী) ব বহার কের িলখেব।
নীেচ দখােনা program খয়াল কেরা। আমরা থেম variable declare (চলক ঘাষণা)
কের input prompt ( যাগান যাচনা) কের integer (পূণক) িট input ( যাগান) িনেয়িছ।
এরপর আমরা if (যিদ) লািগেয় শত পরী া কেরিছ, দেখিছ integer িটর য কানিট বা
তার কম িকনা। কারণ বা negative সংখ ার জ আমরা গসা িনণয় করেবা না, সে ে
বরং আমরা error message ( িট বাতা) দিখেয় program ব থতার (failure) সােথ শষ
করেবা। এরপের রেয়েছ loop (ঘূ্ণী) িদেয় আমােদর গসা িনণেয়র মুল অংশটু ।

িফিরি ১৬.৭: HCF of Two Numbers ( িট সংখ ার গসা )


i n t inte ge r1 , integer2 ; / / চলক ঘাষণা
cout << "two p o s i t i v e i n t e g e r s : " ; / / যাগান যাচনা
c i n >> in teg er 1 >> integer2 ; / / যাগান নয়া

৩৯২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৪. Precondition in While Loop (পূব শেতর ণ ঘূণী)

i f ( in te ge r1 <= 0 | | integer2 <= 0 ) / / ধনা ক না হেল


{
cout << " zero or negative i n t e g e r ! " << endl ;
ret ur n EXIT FAILURE ;
}

/ / গসা িনণেয়র মুল অংশ


i n t remainder = int eg er 1 % integer2 ; / / ভাগেশষ িনণয়
while ( remainder ) / / ভাগেশষ না হেল
{
inte ger 1 = in te ger 2 ; / / ভাজকই হেব নতুন ভাজ
inte ger 2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক
remainder = int eg er1 % integer2 ; / / আবার ভাগেশষ
}

cout << "HCF : " << int eger2 << endl ;

re t ur n EXIT SUCCESS ;
5g / / ভাজকই গসা
in
গসা িনণয় করেত গেল আমােদর থেম দ সংখ া িটর একিটেক িদেয় আেরকিটেক
ভাগকের ভাগেশষ বর করেত হয়। ভাগেশষ হওয়া মােন আমােদর আর ভাগ করেত হেব
না, আর সে ে ভাজক য পূণকিট সিটই হেলা আমােদর গসা । তা খয়াল কেরা আমরা
am

িক integer1 ক integer2 িদেয় ভাগ কের ভাগেশষ িনেয়িছ remainder variableএ।


এে ে আমরা িসিপিপর % operator ব বহার কের ভাগেশষ িনণয় কেরিছ। আমরা এখােন
একিট নতুন ধরেণর loop (ঘূণী) ব বহার কেরিছ যিট হেলা while loop ( ণ ঘূণী)। এই while
loopএর শত দয়া হেয়েছ remainder অথাৎ ভাগেশষ যত ণ সত (বা নয়) তত ণ
loop (ঘূণী) চলেব। তুিম িক চাইেল শত িহসােব (remainder) না িলেখ (remainder !=
al

0) িলখেত পারেত। যাইেহাক শতিট সত না হেল অথাৎ remainder হেল loopএর বাইের
blockএর (মহ া) {} পের দেখা আমরা integer2 ক গসা িহসােব output দিখেয়িছ।
এখন কথা হে ভাগেশষ না হেল আমােদর কী করেত হেব? সটা আমরা blockএর
(মহ া) িভতের িলেখিছ। আমােদর আেগর ভাজকিট হেব নতুন ভাজ , তাই আমরা থেম িলেখ-
িছ integer1 = integer2;, এেত িক আেগর ভাজ িট হািরেয় গেলা, আমােদর আসেল স-
িট আর দরকার নাই। তারপর দেখা integer2 = remainder; িলেখ আমরা ভাগেশষিটেক
নতুন ভাজক িহসােব িনেয় িনলাম। তুিম িন য় বুঝেত পারেছা কন integer1 = integer2;
আেগ আর integer2 = remainder; পের িলখেত হেয়েছ। যিদ উে াটা করা হেতা তাহেল
িক integer2 = remainder; এর কারেণ integer2 যিট িকনা আমােদর নতুন ভাজ হেব
সিটর মান হািরেয় যেতা, ফেল িঠক পরপরই integer1 = integer2; করেল আমরা য ভা-
জ িট পতাম সটা আসেল remainderএরই মান। নতুন ভাজ ও নতুন ভাজক িঠক করার পের
দেখা এবার আমরা আবার ভাগেশষ িনণয় কেরিছ remainder = integer1 % integer2
িলেখ। এই ভাগেশষিট হেল আমােদর loop (ঘূণী) থেক বর হেয় যেত হেব, আর না
হেল আবারও loopএর (ঘূণী) blockএর (মহ া) িভতের যা আেছ তা করেত হেব।
তুিম হয়েতা এবার করেত পােরা, আ া আমরা িক এই program for loop (জ ঘূণী)

৩৯৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৫. Post-condition in Do Loops (উ র শেতর কেরা ঘূণী)

িদেয় িলখেত পারতাম। কন নয়? নীেচ দেখা আমরা একই program for loop (জ ঘূণী)
ব বহার কের িলেখিছ, মুলত while loopএর ( ণ ঘূণী) বদেল for loopটা (জ ঘূণী) এখােন
দখােনা হেয়েছ। Initialisation (আদ ায়ন) অংেশ আেছ থমবার ভাগেশষ িনণেয়র ব াপারটা,
Condition (শত) অংেশ আেছ ভাগেশষ না হওয়ার শত যটা িকনা এখােন remainder
!= 0 িলখা হেয়েছ িক কবল remainder িলখেলও চলেতা। আর update (হালায়ন) অংেশ
আবার ভাগেশষ িনণেয়র অংশটু িদেয়িছ। For loopএর (জ ঘূণী) নানান বাহার আমরা য
েলা দেখিছলাম তুিম স েলা এখােনও িনেজ িনেজ েয়াগ করেত পােরা।
f o r ( i n t remainder = integer1 % integer2 ; / / আদ ায়ন
remainder ! = 0 ; / / শত
remainder = integer1 % integer2 ) / / হালায়ন
{
inte ge r1 = integer2 ; / / ভাজকই হেব নতুন ভাজ
inte ge r2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক
}

এবার তাহেল

5g
করেত পােরা, for loop (জ ঘূণী) িদেয়ই যিদ এেতা র কাজ হয়
তাহেল while loopএর ( ণ ঘূণী) দরকার কী? সিত বলেত আসেল দরকার নাই। িসিপিপেত
for loop (জ ঘূণী) এতটাই শি শালী য আর কান loop দরকার নাই। তেব for loop-
টা তবুও বশীর ভাগ ে ম, গমন, ধারা ইত ািদর ে বশী ব বহার করা হয়, আর
in
while loop ব বহার করা সাধারণ ে । While loopএ ( ণ ঘূণী) loopএর (ঘূণী) অংশ
িহসােব initialisation (আদ ায়ন) নাই, তাই সরকম িকছু দরকার হেল ওই অংশটু েক রা-
খেত হেব loopএরও আেগ। While loopএ ( ণ ঘূণী) update (হালায়ন) অংশও আলাদা
am

কের নাই, কােজই সিট চেল যােব statementএর অংশ িহসােব। এর মােন তামােক অব ই
statementএর িভতের updateএর কাজ কের িদেত হেব যােত loopটা infinite loopএ
পিরণত না হয়। একটা িবষয় খয়াল কেরা শত থেমই িমথ া হেল while loop ( ণ ঘূণী) এক-
বারও না ঘুরেত পাের, এটা অব for loopএর (জ ঘূণী) জে ও সত । এই উভয় loop
থেম শত পরী া কের, শত সত হেল তারপর ঘুরেত যায়। তামােক যিদ তম একবার কাজ
করেতই হয় সটা তাহেল loop আেগ বা পের কের ফলেত হেব। গসা িনণেয়র ে আমােদর
al

যমন কমপে একবার ভাগেশষ করেতই হেব, যিট আমরা while loopএ ( ণ ঘূণী) loopএর
আেগই আর for loopএ (জ ঘূণী) initialisationএ (আদ ায়ন) কের ফেলিছ।
for ( i n i t i a l i s a t i o n ; initialisation
c o n d i t i o n ; update ) while ( c o n d i t i o n )
statement statement+update

১৬.১৫ Post-condition in Do Loops (উ র শেতর কেরা ঘূণী)

েটা positive integerএর গসা িনণেয়র programিট ( মেলখ) তুিম আেরকবার িলেখা,
িক এবার তুিম while loop ( ণ ঘূণী) বা for loop (জ ঘূণী) ব বহার না কের তার বদেল
ব বহার করেব do loop (কেরা ঘূণী)। Do loop হেলা িসিপিপেত তৃতীয় ও শষ কােরর loop।
আমরা আেগর পােঠই এই programিট আেলাচনা কেরিছ ণ while loop (ঘূণী) ব ব-
হার কের, এখােন তাই আেগ সিটই আেরকবার একটু দেখ নই। েটা variable integer1,

৩৯৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৫. Post-condition in Do Loops (উ র শেতর কেরা ঘূণী)

integer2 তুিম ঘাষণা কের স েলােত positive integer input ( যাগান) িনেব। দরকার
হেল আেগর পাঠ থেক input ( যাগান) নয়ার ও তারপর integer িট positive িকনা পরী া
করার ব াপারিট দেখ িনেত পােরা। তাহেল আমরা এবার গসা িনণেয়র মুল অংশটায় যেত পাির।
i n t in te ge r1 , int eg er2 ; / / ধনা ক মান তুিম input িনেব
i n t remainder = int eg er 1 % integer2 ; / / ভাগেশষ িনণয়
while ( remainder ) / / ভাগেশষ না হেল
{
inte ger 1 = in te ger 2 ; / / ভাজকই হেব নতুন ভাজ
inte ger 2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক
remainder = int eg er1 % integer2 ; / / আবার ভাগেশষ
}

cout << "HCF : " << int eger2 << endl ; / / ভাজকই গসা

5g
উপেরর এই programিটর ( মেলখ) loopটােক (ঘূণী) যিদ আমরা িব ার কির, মােন loop
না িলেখ েত ক পােক যা হেতা স েলা যিদ বার বার িলিখ তাহেল কমন হেতা সটা আমরা নীেচ
দখালাম। খয়াল কেরা থম ভাগেশষ িনণয়টা িক উপেরর loopএর বাইের িছেলা, আর তার-
পর নতুন ভাজ , নতুন ভাজক, আর আবার ভাগেশষ িনণেয়র statement েলা (িববৃিত) িছেলা
loopএর িভতের, তাই ও েলা নীেচর িব ারেণ বারবার এেসেছ।
in
remainder = int eg er1 % integer2 ; / / ভাগেশষ িনণয়
integ er 1 = in te ger 2 ; / / ভাজকই হেব নতুন ভাজ
am

integ er 2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক


remainder = int eg er1 % integer2 ; / / আবার ভাগেশষ
integ er 1 = in te ger 2 ; / / ভাজকই হেব নতুন ভাজ
integ er 2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক
remainder = int eg er1 % integer2 ; / / আবার ভাগেশষ
integ er 1 = in te ger 2 ; / / ভাজকই হেব নতুন ভাজ
al

integ er 2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক


remainder = int eg er1 % integer2 ; / / আবার ভাগেশষ
............................................

এখন উপেরর এই িব ারণ দেখ কােরা মেন িক অ রকম কের loop লখার সাধ জাগেত
পাের। কউ হয়েতা বলেত পাের loopটা (ঘূণী) কন থম ভাগেশষ িনণয়েক বাদ িদেয় হেয়-
ছ। Loopটােতা বরং থম ভাগেশষ িনণয় থেকই হেত পারেতা। কথা সত , আর তাইেতা
আমােদর নতুন ধরেনর একিট loopএর (ঘূণী) উ ব হেয়েছ, যিট হেলা do loop (কেরা ঘূণী)।
নীেচর programএ ( মেলখ) দেখা আমরা গসা িনণয় কেরিছ do loop (কেরা ঘূণী) ব -
বহার কের। এখােন থমবার ভাগেশষ িনণয় করা হেয়েছ loopএর (ঘূণী) িভতেরই। আর তারপর
নতুন ভাজ ও নতুন ভাজক িনধারণ করা হেয়েছ। Loopএর শত পরী ণ তারও পের while (
remainder); যখােন লখা হেয়েছ সখােন। শত যিদ সত হয় তাহেল loopএর পেরর পাক
হেব, অথাৎ control (িনয় ণ) লাফ িদেয় doএর পের য block (মহ া) {} হেয়-
ছ সখােন চেল যােব। তেব একটা পূণ িবষয় এখােন উে খ করেত হেব এখােন সটা হেলা
outputএ (ফলন) িক এখন গসা integer2 হেব না, বরং গসা হেব integer1। এর কারণ

৩৯৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৬. Break and Continue Again (আবার াি ও িডঙােনা)

হেলা blockএর িভতের remainder variableএর মান হাক বা না হাক আমরা িক ভা-
জকটােক নতুন ভাজ িহসােব ধের িনেয়িছ, ফেল integer2 এর মান এখন integer1এ আেছ।
i n t inte ge r1 , integer2 ; / / ধনা ক মান তুিম যাগান িনেব
i n t remainder ; / / এই v a r i a b l e বাইেরই ঘাষণা করেত হেব !
do
{
remainder = integer1 % integer2 ; / / ভাগেশষ িনণয়
inte ge r1 = integer2 ; / / ভাজকই হেব নতুন ভাজ
inte ge r2 = remainder ; / / ভাগেশষ হেব নতুন ভাজক
}
while ( remainder ) ;

/ / সতকতা : এখােন গসা িক integer1 , integer2 নয়


cout << "HCF : " << integer1 << endl ; / / ভাজকই গসা

5g
তাহেল while loop ( ণ ঘূণী) আর (do loop) কেরা ঘূণীর তফাৎ হেলা আেগরিটেত শত
পরী া পােক ঢুকার আেগ হয়, শত সত হেল পােক ঢুেক, আর পেররিটেত শত পরী া পাক শষ
কের হয়, শত সত হেল পেরর পােক ঢুেক। এর মােন do loopএর (কেরা ঘূণী) থম পাক বাদ
িদেল ওইটা while loop ( ণ ঘূণী) হেয় যেত পাের অথবা উে াটা।
in
১৬.১৬ Break and Continue Again (আবার াি ও িডঙােনা)
am

এমন একিট program ( মেলখ) তরী কেরা যিট ব বহারকারীেক serial অ যায়ী একিট
menu ( াপণ ) দখােব যাগ, িবেয়াগ, ণ, ভাগফল, বা ভাগেশষ কলন (calculate) করার
জ । ব বহারকারী যত ন েরর কলন করেত চাইেব তার জ িট integer (পূণক) inupt ( যা-
গান) িনেয় িহসাব কের output (ফলন) দখােব। ব বহারকারী যত ণ এেকর পর এক কলন কের
যেত চায় তুিম তত ণ menu দিখেয়, input িনেয়, কলন কের যােব।
al

িফিরি ১৬.৮: Rudimentary Toy Calculator (অ ত খলনা কলিন)


/ / একটা i n f i n i t e loop তরী করেবা
while ( true ) / / অথবা f o r ( ; ; )
{
/ / menu দখাও
cout << " toy c a l c u l a t o r " << endl ;
cout << " 0 . e x i t " << endl ;
cout << " 1 . p l u s + " << endl ;
cout << " 2 . minus −" << endl ;
cout << " 3 . times ∗ " << endl ;
cout << " 4 . quotient / " << endl ;
cout << " 5 . remainder %" << endl ;

i n t choice ; / / পছ variable

৩৯৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৬. Break and Continue Again (আবার াি ও িডঙােনা)

c i n >> choice ; / / input

i f ( choice == 0 ) / / পছ হেল
break ; / / break from loop

/ / উ াপা া পছ হেল continue


i f ( choice < 1 | | choice > 5 )
continue ;

/ / i n t e g e r িট prompt িদেয় input নাও


cout << "two i n t e g e r s : " ;
i n t inte ge r1 , int eg er 2 , r e s u l t ;
c i n >> in teg er 1 >> integer2 ;

/ / পছ অ যায়ী ফলাফল কলন কেরা


switch ( choice )
{
case 1 : r e s u l t =
case 2 : r e s u l t =
integer1
integer1
5g +

integer2 ;
integer2 ;
break ;
break ;
in
case 3 : r e s u l t = integer1 ∗ integer2 ; break ;
case 4 : r e s u l t = integer1 / integer2 ; break ;
case 5 : r e s u l t = integer1 % integer2 ; break ;
}
am

/ / output দখাও
cout << " r e s u l t : " << r e s u l t << endl ;
}

/ / িবদায় স াষণ
al

cout << " t r y me again " << endl ;

উপেরর program ( মেলখ) দেখা, আমরা একটা infinite loop িনেয়িছ while (true
) { } িলেখ তুিম চাইেল িক for ( ; ; ) { } িলেখ এমন িক do { } while(true); িলেখও
infinite loop তরী করেত পারেত। Infinite loop তরী করেল আমােদর অব ই loopএর
িভতের কান ভােব loop থেক break ( াি ) দওয়ারও ব ব া রাখেত হেব।
যাইেহাক loopএর (ঘূণী) িভতের দেখা আমরা থেম কত serial ন র input ( যাগান)
িদেল কী করা হেব সিট দিখেয়িছ, যখােন ১ হেল যাগ, ২ হেল িবেয়াগ, ৩ হেল ণ, ৪ হেল
ভাগফল, ৫ হেল ভাগেশষ, আর ০ হেল বর হেয় যাওয়া আেছ। Userএর (ব বহারকারী) পছ
prompt (যাচনা) কের choice variableএ নয়া হেয়েছ। এবার দেখা choiceএর মান ০
হেল control (িনয় ণ) loop থেক break িদেয় বর হেব, তাহেল infinite loop (অসীম
ঘূণী) আর হে না। আর choice এর মান ০ না হেল তারপর আমরা পরী া কের দেখিছ সিট ১
এর কম বা ৫ এর বশী িকনা। যিদ সরকম হয় তাহেল এইরকম উ াপা া পছে র জ আসেল
আমােদর িকছু করার নই, আমরা কলন করেবা কবল ১ হেত ৫ পয serial ন েরর জ । তা-

৩৯৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৭. Loop and If Interaction (ঘূণী যিদ িমথি য়া)

হেল এই রকম ে আমােদর কলন করা বাদ িদেয় সরাসির পেরর পােক চেল যেত হেব, অথাৎ
আবার menu ( াপণ ) দিখেয় পছ input িনেত হেব। আমরা এই কাজিট কেরিছ continue
ব বহার কের পাক িডিঙেয়। এরপের দেখ আমরা একিট switch-case (পি -ব াপার) ব বহার
কের পছ অ যায়ী ফলাফল কলন কেরিছ, তারপর output (ফলন) িদেয়িছ।
While loop ( ণ ঘূণী) বা do loopএ (কেরা ঘূণী) break ( াি ) দয়া িঠক for loopএ
(জ ঘূণী) break দয়ার মেতাই। Control (িনয় ণ) loop (ঘূণী) থেক বর হেয় loopএর বা-
ইের যা আেছ সখােন চেল যােব। তেব while loop ( ণ ঘূণী) বা do loopএ (কেরা ঘূণী) পাক
continueএর (িডঙােনা) সােথ for loopএ (জ ঘূণী) পাক continueএর (িডঙােনা) িকি ত
তফাৎ আেছ। তফাৎটা হেলা continue এর পের for loopএ (জ ঘূণী) control (িনয় ণ)
update (হালায়ন) অংেশ চেল যায়। িক while loop ( ণ ঘূণী) বা do loopএ (কেরা ঘূণী)
এ update অংশেতা আলাদা কের নাই। Update সাধারণত statementএর অংশ িহসােবই
করা হয় যমন িতবার এখােন choice এর মান input নয়া হেয়েছ।, কােজই control while
বা do loopএর ে সরাসির চেল যায় condition checking (শত) অংেশ।

5g
১৬.১৭ Loop and If Interaction (ঘূণী যিদ িমথি য়া)

এমন একিট program ( মেলখ) িলেখা যিট একিট positive integer (ধনা ক পূণক)
input ( যাগান) িনেয় ১ থেক সই integer (পূণক) পয জাড় সংখ া েলা একিদেক আর িব-
in
জাড় সংখ া েলা আেরকিদেক যাগ করেব। এই programএ ( মেলখ) মুলত আমরা loopএর
(ঘূণী) িভতের if-else (যিদ-নাহেল) ব বহার না করেত চ া করেবা।
cout << " p o s i t i v e i n t e g e r " ;
am

i n t i n t e g e r ; c i n >> i n t e g e r ;

i n t evenSum = 0 , oddSum = 0 ;
f o r ( i n t index = 1 ; index <= i n t e g e r ; ++index )
{
i f ( index % 2 ! = 0 ) / / িবেজাড়
al

oddSum += index ;
else / / জাড়
evenSum += index ;
}

cout << evenSum << " " << oddSum << endl ;

উপেরর programএ ( মেলখ) আমরা থেম একিট positive integer (ধনা ক পূণক)
input ( যাগান) িনেয়িছ, তারপর জাড় সংখ া েলার যাগফেলর জ evenSum আর িবেজাড়
সংখ া েলার যাগফেলর জ oddSum চলক (variable) িনেয়িছ। তারপর একিট for loop
(জ ঘূণী) চেলেছ variable index এর মান ১ থেক integerএর মান পয । Loopএর
িভতের index িবেজাড় হেল বা (index % 2 != 0) শত সত হেল indexএর মান oddSum
এর সােথ যাগ হেব আর শত িমথ া হেল evenSumএর সােথ যাগ হেব।
উপেরর ওই program ( মেলখ) আমােদর সিঠক ফলাফল িদেব তেব একটা িবষয় খয়াল
কেরা indexএর মান জাড় নািক িবেজাড় এইটা কন আমােদর loopএর (ঘূণী) িত পােক (lap)

৩৯৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৭. Loop and If Interaction (ঘূণী যিদ িমথি য়া)

পরী া করেত হেব? এইটা তা আমরা আসেল আেগ থেক জািনই কান পােক indexএর মান
জাড় কান পােক সটা িবেজাড়। কােজই loopএর (ঘূণী) িভতের য শত পরী ণ সটা আসেল
আমােদর অিতির হেয়েছ বেল মেন হে । এই রকেমর ে আমরা আসেল একটা loopএর
(ঘূূণী) বদেল েটা loop িলেখ ফলেত পাির। নীেচ দেখা আমরা তাই কেরিছ। থম loopএ ১
থেক কের িতপােক ২ কের বাড়েব, ফেল কবল িবেজাড় সংখ া েলাই হেব indexএর মান,
আর ি তীয় loopএ ২ থেক কের িতপােক ই কের বাড়েব, ফেল কবল জাড় সংখ া েলাই
হেব indexএর মান। থম loopএ indexএর মান oddSumএর সােথ আর ি তীয় loopএ
indexএর মান evenSumএর সােথ যাগ করা হেয়েছ। তা এই প িবভাজেনর ফেল আমােদর
আর কান loopএই (ঘূণী) শত পরী া করেত হেলা না, অথচ একই ফলাফল পাওয়া গেলা।
cout << " p o s i t i v e i n t e g e r " ;
i n t i n t e g e r ; c i n >> i n t e g e r ;

i n t evenSum = 0 , oddSum = 0 ;
f o r ( i n t index = 1 ; index <= i n t e g e r ; index += 2 )
oddSum += index ;

5g
f o r ( i n t index = 2 ; index <= i n t e g e r ; index += 2 )
evenSum += index ;
in
cout << evenSum << " " << oddSum << endl ;

এবার একই রকেমর আেরকিট ব াপার দেখা নীেচর programএ ( মেলখ)। এইখােন
indexএর মান জাড় নািক িবেজাড় সটার ওপর িভি কের যাগ না কের, loopএর (ঘূণী) -
am

িত পােক একটা কের ন র input ( যাগান) নয়া হেয়েছ। Input নয়া ন রিট যিদ জাড় হয়
তাহেল evenSumএর সােথ আর িবেজাড় হেল oddSumএর সােথ যাগ করা হেয়েছ। এই
programএ ( মেলখ) loopএর (ঘূণী) িভতের থাকা if-else (যিদ-নাহেল) চাইেলও েটা
loopএ িবভাজন করা স ব না। কারণ এখােন আমােদর আেগ থেক বুঝার উপায় নই input
নয়া ন রিট জাড় হেব নািক িবেজাড় হেব! কােজই if-else loopএর িভতেরই থাকেব।
al

cout << " p o s i t i v e i n t e g e r " ;


i n t i n t e g e r ; c i n >> i n t e g e r ;

i n t evenSum = 0 , oddSum = 0 ;
f o r ( i n t index = 1 ; index <= i n t e g e r ; ++index )
{
i n t number ; c i n >> number ; / / যাগান
i f ( number % 2 ! = 0 ) / / িবেজাড়
oddSum += number ;
else / / জাড়
evenSum += number ;
}

cout << evenSum << " " << oddSum << endl ;

৩৯৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৭. Loop and If Interaction (ঘূণী যিদ িমথি য়া)

তারপর আেরা একিট একইরকম ব াপার দখা যাক। এখােন আমােদরেক integer (পূণক)
variableএর মান ১০এর কম হেল আমরা indexএর মান েলা smallSumএ যাগ করেত চাই,
আর integer variableএর মান ১০ বা বশী হেল indexএর মান েলা largeSumএ পেত
চাই। তা নীেচর programএ ( মেলখ) আমরা একটা loop (ঘূণী) ব বহার কের িলেখিছ, আর
loopএর িভতের রেয়েছ শত পরী া (integer < 10)। শত সত হেল smallSumএ যাগ
আর শত িমথ া হেল largeSumএ যাগ। এখােনও আমােদর একই রকেমর সম া, শত পরী ণ
িক loopএর (ঘূণী) িভতের দরকার আেছ? নািক এটােক loopএর বাইের নয়া স ব?

i n t i n t e g e r ; c i n >> i n t e g e r ; / / চলেকর মান যাগান


i n t smallSum = 0 , largeSum = 0 ;

f o r ( i n t index = 1 ; index <= i n t e g e r ; ++index )


i f ( i n t e g e r < 10)
smallSum += index ;
else
largeSum += index ;
5g
cout << smallSum << " " << largeSum << endl ;
in
একটু খয়াল করেলই একটা িবষয় নজের আেস সটা হেলা integer < 10 শতিট আসেল
কান ভােবই indexএর মােনর সােথ স িকত নয়, ফেল এই শত পরী ণ আসেল পােকর ওপর
am

িনভর কের না। তরাং আমরা চাইেল এই শতিটেক loopএর (ঘূণী) বাইের িনেয় যেত পাির।
নীেচর program ( মেলখ) খয়াল কেরা আমরা তাই কেরিছ। Loopএ যাওয়ার আেগই আমরা
শত পরী া কেরিছ। শত (integer < 10) সত হেল আমরা একটা loopএ smallSum িনণয়
কেরিছ, আর শত িমথ া হেল আেরকিট loopএ (ঘূণী) largeSum িনণয় কেরিছ।

i n t i n t e g e r ; c i n >> i n t e g e r ; / / চলেকর মান যাগান


al

i n t smallSum = 0 , largeSum = 0 ;

i f ( i n t e g e r < 10)
f o r ( i n t index = 1 ; index <= i n t e g e r ; ++index )
smallSum += index ;
else
f o r ( i n t index = 1 ; index <= i n t e g e r ; ++index )
largeSum += index ;

cout << smallSum << " " << largeSum << endl ;

উপেরর এই programএ ( মেলখ) শত মা একবার পরী া হেলা, িত পােক একই শত


বারবার পরী া করার ব াপার আর রইেলা না। কােজই আমােদর program খািনকটা দ হেয়
গেলা, এটা চালােত সময় কম লাগেব, িঠক যটা আমরা করেত চেয়িছলাম।

৪০০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৮. Nested Independent Loops (অ াি াধীন ঘূণী)

১৬.১৮ Nested Independent Loops (অ াি াধীন ঘূণী)

এমন একিট program ( মেলখ) িলেখা যিট একিট ই-মা ার ছেকর বগ েলার িমক ন র
নীেচর মেতা কের িলখেব। খয়াল কেরা row (আিড়) িমক ১ থেক ৪, িক column (খািড়)
িমক উে া িদেক ৪ থেক ১। এই program তুিম েটা nested independent loop
(অ াি াধীন ঘূণী) ব বহার কের অথাৎ loopএর িভতের loop ব বহার কের িলখেব। চাইেল
for loop (জ ঘূণী), while loop ( ণ ঘূণী), do loop (কেরা ঘূণী) ব বহার করেত পােরা।
( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1)
( 2 , 4) ( 2 , 3) ( 2 , 2) ( 2 , 1)
( 3 , 4) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)

তা চেলা আমরা থেম এই programিট ( মেলখ) for loop (জ ঘূণী) িদেয় িলিখ।
থেম চেলা আমরা থম rowএর (আিড়) িদেক নজর দই (1,4) (1,3) (1,2) (1,1)। এই

ন র বদেল গেছ 4 থেক 5g


rowেত চারিট িমক দখােনা হেয়েছ, িতিট িমেক িট কের সংখ া আেছ, থমিট row ন র,
আর ি তীয়িট column (খািড়) ন র। তা সব েলা িমেকর row ন রই 1, কবল column
কের 1 পয , িতবার 1 কের কমেব। কােজই আমরা loop (ঘূণী)
চালােবা কবল columnএর জ আর rowন রিট েত ক ে সরাসির outputএ দখােবা।
in
f o r ( i n t c o l = 4 ; c o l >= 1 ; −−c o l )
cout << " ( " << 1 << " , " << c o l << " ) " ;

উপেরর এই programএর output যিদ দেখা, তাহেল নীেচর মেতা লাগেব।


am

( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1)

আমােদর য output (ফলন) িদেত বলা হেয়েছ সখােন যেহতু চারিট row (আিড়) আেছ,
সেহতু উপেরর programএর ( মেলখ) মেতা loop (ঘূণী) আমরা চারবার িলখেলই কাি ত
output (ফলন) পেয় যােবা। তেব িতটা loopএ কবল row ন েরর জায়গায় নীেচর মেতা
al

কের 1এর বদেল 2, 3, 4 িলেখ িনেত হেব। আর িতিট rowএর পের পেরর rowেত output
(ফলন) যাওয়ার জ আমােদর cout << endl; িলখেত হেব।
for ( i n t col = 4 ; col >= 1 ; −−c o l )
cout << " ( " << 1 << " , " << c o l << " ) " ;
cout << endl ;
for ( i n t col = 4 ; col >= 1 ; −−c o l )
cout << " ( " << 2 << " , " << c o l << " ) " ;
cout << endl ;
for ( i n t col = 4 ; col >= 1 ; −−c o l )
cout << " ( " << 3 << " , " << c o l << " ) " ;
cout << endl ;
for ( i n t col = 4 ; col >= 1 ; −−c o l )
cout << " ( " << 4 << " , " << c o l << " ) " ;
cout << endl ;

৪০১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৮. Nested Independent Loops (অ াি াধীন ঘূণী)

চারিট rowএর (আিড়) জ না হয় ায় একই রকম code (সংেকত) চারবার িলখলাম,


িক আেরা বশী সংখ ক rowএর জ িন য় অতবার িলখেবা না। আমরা একই কাজ বার বার
করার জে ই তা loop (ঘূণী) ব বহার করা িশেখিছলাম, সটা িক rowএর জে ও ব বহার
করেত পাির না? িন য় পাির। নীেচ দেখা আমরা তাই করলাম। আমরা থেম rowএর জ
একিট loop িনেয়িছ যিট row ১ থেক ৪ পয েত কবার ১ কের বািড়েয় চলেব। আর এই
loopএর (ঘূণী) blockএর (মহ া) িভতের থাকেব আমােদর আেগর লখা loopটা যটা rowএর
জ ঘুের। Block (মহ া) ব বহার করেত হেলা কারণ একটা loop আর একটা cout মাট
েটা statement (িববৃিত) execute করেত হেব িতিট rowএর জ । আর rowএর জে
লখা িভতেরর loopটােত যখােন rowএর ন র 1, 2, 3, 4 সরাসির িলেখ িদেয়িছলাম, এবার
সখােন row variable িলেখ িদেলই হেয় গেলা।

f o r ( i n t row = 1 ; row <= 4 ; ++row )


{
f o r ( i n t c o l = 4 ; c o l >= 1 ; −−c o l )
cout << " ( " << row << " , " << c o l << " ) " ;

}
cout << endl ;

5g
এবার চেলা এই programিটই ( মেলখিট) for loop (জ ঘূণী) ব বহার না কের আমরা
in
while loop ( ণ ঘূণী) ব বহার কের িলেখ ফিল। তেব row ও col সংখ া িনিদ কের ৪ ধের
না িনেয় আমরা এখােন rowCount ও colCount নােম েটা variable (চলক) ব বহার কর-
বা, যার মান তুিম চাইেল input ( যাগান) িনেত পােরা। For loop (জ ঘূণী) থেক while
am

loop ( ণ ঘূণী) লখা তা তমন কিঠন িকছু নয়। For loopএর (জ ঘূণী) initialisation
(আদ ায়ন) অংশটােক while loopএর ( ণ ঘূণী) আেগ িলেখ ফেলা, আর জ loopএর (ঘূ-
ণী) update (হালায়ন) অংশটােক while loopএর statement (িববৃিত) অংেশর শেষ িদেয়
দাও। তুিম চাইেল একটা loopেক for loop রেখ আেরকটােক while loop কের িদেত পােরা।
তা ছাড়া তুিম চাইেল for বা while loop বাদ িদেয় do loopও ব বহার করেত পােরা।
al

i n t rowCount = 4 , colCount = 4 ;

i n t row = 1 ;
while ( row <= rowCount )
{
i n t c o l = colCount ;
while ( c o l >= 1 )
{
cout << " ( " << row << " , " << c o l << " ) " ;
−−c o l ;
}
cout << endl ;
++row ;
}

৪০২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৯. Nested Dependent Loop (অ াি িনভরশীল ঘূণী)

১৬.১৯ Nested Dependent Loop (অ াি িনভরশীল ঘূণী)

Loopএর (ঘূণী) িভতের loop অথাৎ nested loop (অ াি ঘূণী) ব বহার কের এমন এক-
িট program ( মেলখ) িলেখা যিট নীেচর মেতা output (ফলন) িদেব। এইে ে িভতেরর
loopিট বাইেরর loopএর ওপের িনভরশীল হেব: িভতেরর loopএর indexএর ( চক) মান
বাইেররিটর indexএর মােনর সােথ স িকত হেব। তুিম িতন রকম loopএর (ঘূণী) য কানিটই
ব বহার করেত পােরা।
( 1 , 1)
( 2 , 2) ( 2 , 1)
( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 3) ( 4 , 1)

আমরা থেম নীেচর মেতা কের েটা nested independent loop (অ াি াধীন ঘূণী)
িলেখ ফলেত পাির যটা আমরা িঠক আেগর পােঠই িশেখিছ। আেলাচনার ধারাবািহকতা বুঝার

চলেব, আর তার িত পােকর জ িভতেরর loopটাও ৪ বার চলেব।


f o r ( i n t row = 1 ; row <= 4 ; ++row )
{
5g
জ তুিম চাইেল আেগর পাঠিট একটু দেখ িনেত পােরা। এখােন বাইেরর loop (ঘূণী) ৪ বার
in
f o r ( i n t c o l = 4 ; c o l >= 1 ; −−c o l )
cout << " ( " << row << " , " << c o l << " ) " ;
cout << endl ;
}
am

েটা nested independent loop (অ াি াধীন ঘূণী) লখার ফেল আমরা য output
(ফলন) পােবা তা নীেচর বাম পােশর মেতা। খয়াল কের দেখা ছেকর িতিট rowেত (আিড়)
িতিট columnএ (খািড়) সংি ঘেরর িমক ন র লখা হেয়েছ। এখন এটার সােথ আমােদর
এই পােঠ য output (ফলন) চাওয়া হেয়েছ (ডান পােশরিট) তা িমলাও।
al

( 1 , 4) ( 1 , 3) ( 1 , 2) ( 1 , 1) ( 1 , 1)
( 2 , 4) ( 2 , 3) ( 2 , 2) ( 2 , 1) ( 2 , 2) ( 2 , 1)
( 3 , 4) ( 3 , 3) ( 3 , 2) ( 3 , 1) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1) ( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)

এবার একটা ব াপার খয়াল কেরা য ডান পােশর য output (ফলন) চাওয়া হেয়েছ সখা-
ন ত ক rowেত (আিড়) এমন একটা ঘর থেক লখা হেয়েছ যখােন row (আিড়) আর
column (খািড়) সমান, যমন (1,1), (2,2), (3,3), (4,4)। Columnএর িমক rowএর -
িমক থেক বড় হেল সই ঘের িকছু দখােনা হয় নাই। এটার জ আমরা আমােদর programএ
( মেলখ) কবল িভতেরর loopিট (ঘূণী) িকি ত বদেল িনেবা। িভতেরর loopিট আেগ িছেলা
for ( int col = 4; col >= 1; −−col), এখন সখােন নীেচর মেতা কের আিদমান 1 এর
বদেল row িলেখ িদেবা। এর ফেল িভতেরর loopিট আর াধীন থাকেলা না, কারণ এিট কতবার
ঘুরেব সটা িনভর করেব বাইেরর loopএ row এর মান কেতা তার ওপর।
f o r ( i n t row = 1 ; row <= 4 ; ++row )
{

৪০৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.১৯. Nested Dependent Loop (অ াি িনভরশীল ঘূণী)

f o r ( i n t c o l = row ; c o l >= 1 ; −−c o l )


cout << " ( " << row << " , " << c o l << " ) " ;
cout << endl ;
}

উপেরর এই programিটর ( মেলখ) ফেল আমরা য রকম output পােবা সিট নীেচর
বাম পােশর মেতা, িক আমরা য output (ফলন) পেত চাই তা ডান পােশর মেতা।
( 1 , 1) ( 1 , 1)
( 2 , 2) ( 2 , 1) ( 2 , 2) ( 2 , 1)
( 3 , 3) ( 3 , 2) ( 3 , 1) ( 3 , 3) ( 3 , 2) ( 3 , 1)
( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1) ( 4 , 4) ( 4 , 3) ( 4 , 2) ( 4 , 1)

খয়াল কেরা এখনও িঠক হেয় ওেঠ িন। যথাযথ ভােব ফাঁকা িদেলই হেয় যােব। তা ফাঁ-
কা দওয়ার ে খয়াল কেরা আমরা ১ম rowেত ফাঁকা িদেয়িছ ৩িট, ২য়িটেত ২িট, ৩য়িটেত
১িট, ৪থিটেত ০িট। অথাৎ row এর মান অ যায়ী 4−row সংখ ক ফাঁকা িদেয়িছ। অথবা বলেত
পােরা ৪ থেক গানা ও ফাঁকা িদেত

5g
কেরিছ, িক rowর চেয় বড় সংখ া পয ফাঁকা িদেয়-
িছ, আর সমান হেল তা ঘেরর ানাংক দখােনা কেরিছ। তাহেল সব িমিলেয় আমরা নীেচর
programএর ( মেলখ) মেতা কের আেরকিট loop (ঘূণী) ব বহার করেত পাির ফাঁকা দওয়ার
জ । এই loopিটও কত বার ঘুরেব, সটা িক বাইেরর loopএর ওপর িনভর করেব।
in
/ / িত এরrow জ একটা কের পাক।
f o r ( i n t row = 1 ; row <= 4 ; ++row )
{
am

/ / িত তrow থেম ফাঁকা দওয়ার জ


f o r ( i n t c o l = 4 ; c o l > row ; −−c o l )
cout << " " ; / / মালার িভতের ছয়িট ফাঁকা

/ / িত তrow ঘর েলার ানা লখার জ


f o r ( i n t c o l = row ; c o l >= 1 ; −−c o l )
al

cout << " ( " << row << " , " << c o l << " ) " ;
cout << endl ;
}

তুিম চাইেল কবল এই সম ািটর ে িভতেরর loop িটেক Loop-If interaction


(ঘূণী যিদ িমথি য়া) িবেবচনা কের একটা loop িদেয়ই সারেত পারেত। কারণ িভতেরর িট
loop িমিলেয় তা 4 হেত 1 নিত চেল, colর মান row হেত বড় হেল ফাঁকা দখােনা হয় আর
না হেল ঘেরর ানা দখােনা হয়। তরাং একটা যিদ-নাহেল (if else) লাগােলই হেব।
f o r ( i n t row = 1 ; row <= 4 ; ++row )
{
f o r ( i n t c o l = 4 ; c o l >= 1 ; −−c o l )
i f ( c o l > row )
cout << " ";
else
cout << " ( " << row << " , " << c o l << " ) " ;

৪০৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২০. Deeply Nested Loops (গভীর অ াি ঘূণী)

cout << endl ;


}

১৬.২০ Deeply Nested Loops (গভীর অ াি ঘূণী)

Loopএর (ঘূণী) িভতের loop তার িভতের loop ব বহার কের িতনিট সংখ া 1, 2, 3 এর
িব াস (permutation) output (ফলন) দাও। িব াস েলােত একই সংখ া বারবার ব বহার
করা যােব হেল কী করেব, আর একই সংখ া এেকর অিধকবাব ব বহার না করা গেল কী করেব?
f o r ( i n t x = 1 ; x <= 3 ; ++x )
f o r ( i n t y = 1 ; y <= 3 ; ++y )
f o r ( i n t z = 1 ; z <= 3 ; ++z )
cout << x << " " << y << " " << z << endl ;

1
1
1
1
1
1
1
2
1
2
3
1
2
2
2
2
1
1
1
2
1
2
3
1
5g 3
3
3
3
1
1
1
2
1
2
3
1
in
1 2 2 2 2 2 3 2 2
1 2 3 2 2 3 3 2 3
1 3 1 2 3 1 2 3 1
am

1 3 2 2 3 2 2 3 2
1 3 3 2 3 3 2 3 3

এই programএর ( মেলখ) জ আমরা এভােব িচ া কির: থম ানিটেত সংখ া িতন-


িট এেক এেক বসােত হেব কােজই একটা loop (ঘূণী) লাগেব। তারপর ি তীয় ােনর জে ও
সংখ া িতনিট এেক এেক বসােত হেব, তরাং আেরকটা loop লাগেব। আর একই ভােব তৃতীয়
al

ােনর জে ও আেরকিট loop িদেয় সংখ া িতনিট এেক এেক বসােত হেব। কােজই সব িমিলেয়
আমােদর loop লাগেব িতনিট, আর িব াস পাওয়া যােব সবেমাট ২৭ িট। তা এরকম একিট
program আমরা উপের দখালাম, খুবই সহজ program। আর ওই programএর output
(ফলন) কমন হেব সটাও উপের দখােনা হেয়েছ। তেব ােনর ব বহার বাড়ােনার জ ২৭ িট
িব াস নীেচ নীেচ না লেখ িতন ে (column) দখােনা হেয়েছ, আসেল ও েলা এেকর পর
এক নীেচ নীেচ আসেব।
উপেরর programএ ( মেলখ) িক একই সংখ া এেকর অিধকবার ব বহার করা হেয়েছ।
যিদ সটা করেত না দয়া হয়, তাহেল আমরা যটা করেত পাির তা হেলা যখনই িট সংখ া এক
হেয় যােব তখন আমরা output (ফলন) িদেবা না। অথাৎ x যিদ yএর সমান হয় অথবা x যিদ z
এর সমান হয়, অথবা y যিদ zএর সমান হয় তাহেল output হেব না, আর না হেল output হেব।
তার মােন output দয়া হেব ! (x == y | | x == y | | y == z) শত সত হেল, আর দয়া
হেব না শত িমথ া হেল। বুলক বীজগিণেতর িড মরগ ােনর সূ া যায়ী আমরা এটােক সরলীকরণ
করেত পাির। তাহেল পােবা ! (x == y) && !(x == z) && !(y == z) বা (x != y && x !
= z && y != z)। সবিমিলেয় এমন program আর তার output হেত পাের নীেচর মেতা।
f o r ( i n t x = 1 ; x <= 3 ; ++x )

৪০৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২০. Deeply Nested Loops (গভীর অ াি ঘূণী)

f o r ( i n t y = 1 ; y <= 3 ; ++y )
f o r ( i n t z = 1 ; z <= 3 ; ++z )
i f ( x ! = y && x ! = z && y ! = z )
cout << x << " " << y << " " << z << endl ;

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

একটা িবষয় খয়াল কেরা উপেরর programএ ( মেলখ) িতনিট loopই িক িতনবার কের
ঘুরেব, ফেল মাট ২৭ িট পাকই স হেব, তেব এই ২৭িট পােকর মা ৬িটেত output (ফলন)

5g
আসেব, বাঁকী েলােত if-elseএর (যিদ-নাহেল) শত িমথ া হওয়ায় output আসেব না। কথা
হে ওই য ২১িট পাক য েলােত কান output আসেব না, স েলা কমােনা স ব িকনা। িকছু-
টা তা স ব। ি তীয় loopএর কথা িবেবচনা কেরা, যখন আমরা জািনই য y এর মান x এর সমান,
তখন তা তৃতীয় loopিট ঘুিরেয় লাভ নই, আমােদর কান output আসেব না। কােজই আমরা
if else interaction (যিদ নাহেল িমথি য়া) িবেবচনা কের নীেচর programএর ( মেলখ)
in
মেতা কের if (x != y) ক তৃতীয় loopএর উপের িনেয় আসেত পাির। এই programএর
ে কান loop কত বার ঘুরেব? তুিম িক িনেজ িনেজ স েলা িহসাব করেত পারেব?
am

f o r ( i n t x = 1 ; x <= 3 ; ++x ) / / ৩ বার


f o r ( i n t y = 1 ; y <= 3 ; ++y ) / / ৩∗৩ = ৯বার
if (x != y) / / ৩∗১ = ৩ বার িমথ া
f o r ( i n t z = 1 ; z <= 3 ; ++z ) / / ৬∗৩ = ১৮বার
i f ( x ! = z && y ! = z ) / / ৬ বার সত
cout << x << " " << y << " " << z << endl ;
al

আ া তামােক িতনিট সংখ া না িদেয় বরং চারিট বা পাঁচিট বা আেরা বশী সংখ ার িব াস
(permutation) output (ফলন) িদেত বলা হয় তুিম কী পারেব তার জে program ( ম-
লখ) িলখেত? িন য় পারেব, যতিট সংখ া িনেয় িব াস করেত হেব তত েলা loop (ঘূণী) িনেলই
হেয় গেলা। এই য loop inside loop (ঘূণীর িভতের ঘূণী), তার িভতের loop, তার িভতের
আেরা loop এ েলা হেলা deeply nested loop (গভীর অ াি ঘূণী), যতটা িভতের একটা
loop ততটা হেলা তার গভীরতা। যমন উপেরর programএ সবেচেয় িভতেরর loopএর গভী-
রতা হেলা ৩, মাঝখােনরটার গভীরতা হেলা ২ আর বাইেররটার গভীরতা হেলা ১। আমরা সাধারণত
খুব বশী গভীরতার nested loop তরী করেত চাই না। যমন আেরা বশী সংখ ার িব াস কর-
ত গেলই আমরা আর এ রকম deeply nested loop ব বহার করেবা না, বরং আমরা অ
কান প িতর খাঁজ করেবা। তাছাড়া এরকম deep loop আেরা একটা ে ও অ িবধাজনক।
যমন ধেরা তামােক input ( যাগান) িনেত হেব কয়টা সংখ ার িব াস করেত চাও। তা সটা-
তা আেগ থেক মােন program লখার সময় জানা স ব না, কােজই program লখার সময়
কত গভীরতা পয loop িলখেবা সটাও জানা স ব না, আর তাই এরকম কের program লখা
আসেলই স ব হেব না।

৪০৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২১. Deflating Nested Loops (অ াি ঘূণী াসকরণ)

১৬.২১ Deflating Nested Loops (অ াি ঘূণী াসকরণ)

ধেরা তামােক এমন একটা program ( মেলখ) িলখেত হেব যিট একিদেনর ২৪ ঘ টায় িত
সেকে ড সময় output (ফলন) িদেব ১০:৩৯:৪৬ এই ছাঁেচ। এই program তামােক nested
loop (অ াি ঘূণী) ব বহার না কের কবল একিট loop (ঘূণী) ব বহার কেরই িলখেত হেব।

িফিরি ১৬.৯: Displaying Clock Time (ঘিড়র সময় দখােনা)


for ( i n t h = 0 ; h < 24 ; ++h )
for ( i n t m = 0 ; m < 60 ; ++m)
for ( i n t s = 0 ; s < 60 ; ++s )
cout << h << " : " << m << " : " << s << endl ;

থেম আমরা nested loop (অ াি ঘূণী) ব বহার কেরই programিট ( মেলখ) িলিখ।
আমােদর ঘ টা চলেব ০ হেত ২৩ পয , িমিনট চলেব ০ হেত ৫৯ পয , আর সেক ডও চল-
ব ০ হেত ৫৯ পয । তরাং ৩ depthএর nested loop হেলই আমােদর চলেব। উপেরর

5g
programএ দেখা িতনিট loop একটার িভতের আেরকটা িলেখ আমরা তা কেরিছ।
এবার আমরা nested loop (অ াি ঘূণী) ব বহার না কের একটা loop ব বহার কের
programিট ( মেলখ) লখার চ া করেবা। সারািদেন আমােদর মাট সেক ড আেছ কতিট?
২৪ * ৬০ * ৬০ = ৮৬৪০০িট। তাহেল আমােদর একিট loop চালােত হেব ৮৬৪০০ বার। আর
in
িতবাের সেক ডেক ৬০ িদেয় ভাগ কের িমিনেট আর িমিনটেক ৬০ িদেয় ভাগ কের ঘ টায় কাশ
করেত হেব। তারপর অবিশ সেক ড, অবিশ িমিনট, ও কত ঘ টা হেলা তা outputএ দখােত
হেব। ভাগফল / আর ভাগেশষ % ব বহার কের আমরা এই program নীেচর মেতা কের িলখেবা।
am

f o r ( i n t k = 0 ; k < 86400 ; ++k )


{
i n t h , m , s = k ; / / k ক ঘ টা িমিনট সেক ড িনেত হেব

m = s / 60 ; / / িমিনেট পা র
s = s % 60 ; / / অবিশ সেক ড
al

h = m / 60 ; / / ঘ টায় পা র
m = m % 60 ; / / অবিশ ঘ টা

cout << h << " : " << m << " : " << s << endl ;
}

তুিম িক চাইেল উপেরর মেতা কের িতবার সেক ডেক ৬০ িদেয় ভাগ কের িমিনেট, তার-
পর আবার ৬০ িদেয় ভাগ কের ঘ টায় কাশ না কের অ ভােবও করেত পােরা। ধেরা সেক ড
loopএর িত পােক ১ কের বাড়েলা। আর যখন ৬০ সেক ড হেয় গেলা তখন আমরা িমিনেট
এক যাগ কের িদলাম, আর সেক ডেক আবার ০ বািনেয় িদলাম। একই ভােব িমিনট যিদ ৬০
হেয় যায় তাহেল ঘ টােক এক বািড়েয় িদলাম, আর িমিনটেক ০ বািনেয় িদলাম। আর যখন ঘ টা
২৪ হেয় গেলা তখন program শষ কের িদলাম। তা এই রকম program ( মেলখ) আমরা
নীেচ দখালাম।
int h = 0 , m = 0 , s = 0 ; / / আিদ মান

৪০৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২২. Nested Loop in Disguise (ছ েবেশর অ াি ঘূ্ণী)

while ( h < 24)


{
cout << h << " : " << m << " : " << s << endl ;

i f ( ++s == 60) // সেক ড এক বািড়েয় ৬০ হেল


{
s = 0; / / সেক ড হেব
i f ( ++m == 60) / / িমিনট এক বাড়েব , আর ৬০ হেল
{
m = 0; / / িমিনট হেব
++h ; / / ঘ টা এক বাড়েব
}
}
}

5g
আসেল য কান nested loopেক (অ াি ঘূণী) এই ভােব কবল একটা loop িদেয়ই িলেখ
ফলা যায়। Nested loopএ indexএর ( চক) মান েলা য েম বদল হেত থােক, উপেরর
এই একটা loopএও variable েলার মান সই একই েমই বদল হেত থােক।
in
১৬.২২ Nested Loop in Disguise (ছ েবেশর অ াি ঘূ্ণী)

Nested loop (অ াি ঘূণী) ব বহার কের এবং না কের (1) + (1 + 2) + (1 + 2 + 3)


am

+ . . . + (1 + 2 + . . . + n) ধারািটর যাগফল িনণেয়র program ( মেলখ) রচনা কেরা।


এখােন তুিম 1 + 2 + . . . + n = n(n + 1)/2 এ রকম সূ ব বহার করেত পারেব না।
দ ধারািটেত ব নীর িভতের অংশ েলােক যিদ একটা কের পদ ধের নাও তাহেল থম
পদ (1), ি তীয় পদ (1 + 2), আর এই ভােব nতম পদ (1 + 2 + ... + n)। কােজই উপেরর
ধারািটেত আমােদর nিট পদ আেছ, তরাং আমােদর একিট loop (ঘূণী) লাগেব যিট 1 থেক
al

n পয ঘুরেব। এবার ব নীর িভতেরর িতিট পেদর িদেক তাকাই। ধরা যাক আমরা kতম পদ
িবেবচনা করিছ, তাহেল বুঝেতই পারেছা পদিট হেব (1 + 2 + . . . + k)। এখােন এই পদিট
িনেজও একটা ধারা। কােজই আমােদর পুেরা ধারািট আসেল ধারার িভতের ধারা, বা nested
series (অ াি ধারা)। যাইেহাক, kতম পদ (1 + 2 + . . . + k) তা আমরা আেরকিট loop
1 থেক k পয ঘুিরেয় সহেজই িহসাব কের ফলেত পাির। তাহেল সব িমিলেয় দ ধারার জ
আমােদর loop inside loop বা nested loop (অ াি ঘূণী) ব বহার করেত হেব।
i n t n = 10 ; // input িনেত পােরা
int s = 0 ; // পুেরা ধারার যাগফল
for ( i n t k = 1 ; k <= 10 ; ++k )
{
int t = 0 ; / / ব নীেত পেদর যাগফল
for ( i n t l = 1 ; l <= k ; ++ l )
t += l ; // ব নীর িভতের যাগফল
s += t ; // পুেরা ধারার যাগফল
}

৪০৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

cout << s << endl ;

উপেরর programএ ( মেলখ) েটা nested loop (অ াি ঘূণী) িমিলেয় িঠক কতবার
ঘুরেব? বাইেরর loopএ kএর মান যখন 1 তখন িভতেরর loop ঘুরেব 1 বা, বাইেরর loopএ
kএর মান যখন 2 তখন িভতেরর loop ঘুরেব 2 বার, এই ভােব বাইেরর loopএ kএর মান যখন
n তখন িভতেরর loop ঘুরেব n বার। কােজই বাইেরর loopএর সব পাক িমিলেয় িভতেরর loop
ঘুরেব 1 + 2+ . . . + n = n(n+1)/2 বার। তার মােন nএর মান 10 হেল ই loop িমেল পাক
খােব সবেমাট 10(10+1)/2 = 55 বার। কথা হে এই ধারািটর যাগফল বর করেত আসেলই
িক এত পােকর দরকার আেছ? িবেশষ কের ব নীর িভতেরর িতিট পদ কন আলাদা কের আবার
নতুন কের িহসাব করেত হেব? আেগর ব নীর িভতেরর পদ জানা থাকেল তা তার সােথ কবল
পেরর integer (পূণক) যাগ কেরই পেরর ব নীর িভতেরর পদ বর করা স ব।
i n t n = 10 ; / / input িনেত পােরা
i n t s = 0 , t = 0 ; / / ধারা ও পেদর যাগফল
f o r ( i n t k = 1 ; k <= 10 ; ++k )
{

}
t += k ;
s += t ;
/ / ব নীর িভতের যাগফল

cout << s << endl ;


5g
/ / পুেরা ধারার যাগফল
in
উপেরর programএ দেখা আমরা েত পদ tএর initial value ধের িনেয়িছ। আর
loopএর িভতের ঢুেকই tএর সােথ k যাগ কের িদি , যােত ব নীর িভতের থাকা আেগর পেদ t
এর মান যত িছেলা, এই পােক যােত tএর মান তার চেয় যােত k বশী হয়, কারণ পেরর ব নীর
am

িভতের পেদ তা kটাই অিতির আেছ। তারপর t টােক sএর সােথ যাগ করেলই ধারার যাগফল
হেয় গেলা। তা এই programএ loop কত বার ঘুরেব? বুঝেতই পারেছা মা 10 বার।
তাহেল আমরা দখলাম দখেত nested loop (অ াি ঘূণী) মেন হেলও অেনক সময় একটা
loop ব বহার কেরই দ program ( মেলখ) রচনা করা যায়। Nested loop িলখার সময়
সটা আসেলই nested loop নািক ফ ছ েবশী এ ব াপাের সতক থাকেব কমন!
al

১৬.২৩ অ শীলনী সম া (Exercise Problems)


Conceptual Questions: নীেচ িকছু conceptual রেয়েছ। েলার উ র িনেজ
িনেজ বর করেব।

১. Iterative programming (পুনািল পিরগণনা) বলেত কী বুেঝা? আেলাচনা কেরা।

২. For loopএ (জ ঘূণী) চারিট অংশ আেছ। এ েলা হেলা initialisation (আদ ায়ন),
condition (শত), update (বৃি ), statement (িববৃিত)। কান অংশ কখন কতবার
execute হয়, কার পের কানিট execute হয় আেলাচনা কেরা।

৩. সমা র ধারার বতমান পদিটেক loopএর (ঘূণী) indexএর সােথ স িকত করা বনাম
আেগর পােকর সােথ স িকত করার মেধ কী তফাৎ ঘেট আেলাচনা কেরা।

৪. Loopএ (ঘূণী) breakএর ( াি ) ব বহার উদাহরণসহ আেলাচনা কেরা।

৪০৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

৫. Loopএ (ঘূণী) পাক continue (িডঙােনা) উদাহরণসহ আেলাচনা কেরা।

৬. Loopএ (ঘূণী) empty condition (শত ফাঁকা) হেল loop থামেব কী কের?

৭. Infinite loop (অসীম ঘূণী) কী? অসীম ঘূণী িক কাি ত না অনাকাি ত?

৮. For loopেক (জ ঘূণী) কী ভােব সাধারণ (general) loop িহসােব ব বহার করা যায়?

৯. পােকর আেগ শত পরী ণ ও পােকর পের শত পরী ণ িবষেয় আেলাচনা কেরা।


১০. loop ও if interaction (িমথি য়া) কী ভােব programএর গিতেত ভাব ফেল?
১১. অ াি (nested) একািধক loopেক কমেন একটা loop ব বহার কেরই সামলােনা যায়?

Programming Solutions: এবার আমরা programming সম া েলার সমাধান দখ-


বা। মেন রাখেব সমাধান েলা দয়া হেয়েছ তুিম যিদ একা ই িনেজ করেত পারেছানা বেল মেন
হয়, তখন কবল একটু সাহায যােত পেত পােরা তাই। কােজই পারতপে সমাধান দখেব না।

5g
১. নীেচর নকশার মেতা নকশা তরী কেরা। এই নকশার কানার িব েলােত + আেছ, এক-
দম বাম আর ডান পােশ আেছ |, আর অ সব েলা হেলা −, িতিট সািরেত − আেছ ২০িট
কের। েত ক সািরর − েলার জ তামােক একিট কের loop (ঘূণী) িলখেত হেব।
+−−−−−−−−−−−−−−−−−−−−+
in
|−−−−−−−−−−−−−−−−−−−− |
|−−−−−−−−−−−−−−−−−−−− |
+−−−−−−−−−−−−−−−−−−−−+
am

এই program ( মেলখ) রচনা করা খুবই সহজ। আমােদর চারিট সািরর জ চারিট
for loop (জ ঘূণী) লাগেব। েত ক সািরর ও শেষ সংি িবেশষ িচ েলা
িদেত হেব। আর loop লাগেব মাঝখােনর − িচ বারবার লখার জ ।
cout << " + " ; / / উপের বাম কানা
for ( i n t i = 0 ; i < 20 ; ++ i )
al

cout <<"−" ; / / থম সাির মাঝ


cout << " + " << endl ; / / উপের ডান কানা
cout << " | " ; / / ি তীয় সাির
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / ি তীয় সাির মাঝ
cout << " | " << endl ; / / ি তীয় সাির শষ
cout << " | " ; / / তৃতীয় সাির
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / তৃতীয় সাির মাঝ
cout << " | " << endl ; / / তৃতীয় সাির শষ
cout << " + " ; / / নীেচ বাম কানা
for ( i n t i = 0 ; i < 20 ; ++ i )
cout <<"−" ; / / চতুথ সাির মাঝ
cout << " + " << endl ; / / উপের ডান কানা

৪১০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

২. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট ধনা ক (positive) পূণক
(integer) input ( যাগান) িনেয় সটা মৗিলক (prime) সংখ া িকনা িনণয় করেব।
এই programিট ( মেলখ) নানান ভােব করা যেত পাের। আমরা থেম সবেচেয় সহজ-
িট িক সবেচেয় ধীর গিতর উপায়িট দিখ। একিট সংখ া n মৗিলক িকনা সটার পরী া
হেলা একিট loop (ঘূণী) চািলেয় ২ থেক কের n − 1 পয িতিট িদেয় n িবভাজ
িকনা পরী া কের দেখা। যিদ একিট িদেয়ও িবভাজ হয় তাহেল n মৗিলক নয়, আর স-
ে loop আর চালােনা দরকার নই, break ( াি ) িদেয় বর হেয় আসেত হেব। আর
loop যিদ শষ পয চেল, মােন loop indexএর (ঘূণীর সূচক) মান যিদ n হয়, তাহেল
n মৗিলক। নীেচ programিট ( মেলখ) দেখা।

int n , k ; / / n মুল সংখ , k সূচক


cout << "number : " ;
c i n >> n ;

i f ( n <= 0 )
{
cout << " negative " << endl ;
ret ur n EXIT FAILURE ;
5g
/ / ঋণা ক িকনা পরী া
in
}

/ / ২ থেক n−1 পয কানিট িদেয় িবভাজ িকনা


am

f o r ( k = 2 ; k < n ; ++k )
i f ( n % k == 0 )
break ; / / িবভাজ হেল আেগই াি

i f ( k == n ) / / শষ পয ঘূণী চেলেছ
cout << " prime yes " << endl ;
al

else / / আেগই বর হেয় এেসেছ


cout << " prime no" << endl ;

একটু খয়াল করেলই বুঝেব কান সংখ া মৗিলক িকনা তার জ আসেল ২ থেক n পয
পরী া করা দরকার নই। আসেল n/2 পয অথবা আেরা ভােলা কের বলেত গেল n
এর বগমূল পয পরী া করেলই চেল। কােজই উপেরর programিট চাইেল আমরা আর
একট দ কের িলখেত পাির। নীেচ আমরা কবল পিরবতন সংি অংশ দখালাম।

িফিরি ১৬.১০: Whether a Number is Prime ( মৗিলক সংখ া িকনা িনণয়)


f o r ( k = 2 ; k < s q r t ( n ) ; ++k ) / / s q a r t ( n ) পয
i f ( n % k == 0 )
break ; / / িবভাজ হেল আেগই াি

i f ( k >= s q r t ( n ) ) / / শষ পয ঘূণী চেলেছ


cout << " prime yes " << endl ;

৪১১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

else / / আেগই বর হেয় এেসেছ


cout << " prime no" << endl ;

৩. এমন একিট program ( মেলখ) িলেখা যিট েটা ধনা ক পূণক (integer) input
িনেয় তােদর গসা (HCF) ও লসা (LCM) িনণয় কের।
িট সংখ া a ও bএর গসা হেলা এমন একিট সংখ া g যিট ারা a ও b উভয় সংখ া
িবভাজ হয়। এই রকম একািধক সংখ া থাকেল সবেচেয় বড়িট হেব গসা । গসা বর
করা হেয় গেল আমরা a ও b এর ণফল ক গসা িদেয় ভাগ কের লসা পেত পাির। তা
এই program ( মেলখ) িলখেত আমরা ১ থেক কের িতিট সংখ া িদেয় ভাগ কের
দখেবা a ও b উভয় সংখ া িবভাজ িকনা। যিদ িবভাজ হয় তাহেল ভাজকিট আমােদর
গসা হেত পাের, আর ণফলেক গসা িদেয় ভাগ কের লসা পেত পাির। তেব আমােদর
এখােনই থেম গেল হেব না, কারণ এর চেয় বড় কান সংখ া সাধারণ ভাজক িহসােব
পাওয়া যায় িকনা তা দখেত হেব। তেব একটা িবষয় মেন রাখেত হেব গসা g কখনই a
বা b কানটার চেয়ই বড় হেব না, েটার চেয়ই ছাট হেব।

int a , b;
c i n >> a >> b ; 5g
cout << "two numbers ? " ; / / যাগান যাচনা
/ / চলক িট
/ / যাগান নওয়া
in
i f ( a < 0 | | b < 0) / / ঋণা ক িকনা?
{
cout << " negative " << endl ;
ret u rn EXIT FAILURE ;
am

int p = a ∗ b , h , l ; // ণফল , গসা ও লসা

/ / এেক এেক পরী া কেরা উভেয় িবভাজ িকনা


al

f o r ( i n t k = 1 ; k <= a && k <= b ; ++k )


i f ( a % k == 0 && b % k == 0 ) / / উভেয় িবভাজ
{ h = k ; l = p/ k ; }

cout << " hcf = " << h << endl ;


cout << " lcm = " << l << endl ;

চাইেল উপেরর programেক আর একটু দ করেত পােরা। যেহতু গসা সংখ া েটার
কানটা থেকই বড় হয়, কােজই আমরা সংখ া েটার ছাটিট থেক loop (ঘূণী)
করেত পাির। আর েটােক ভাগ করা যায় এমন সবেচেয় বড় ভাজকিট যেহতু আমােদর
দরকার, আমরা তাই loopিট ছাট থেক কের বড়র িদেক চালােবা, আর থমিট
পাওয়া মা loop থেক বর হেয় আসেবা।
/ / চলক ঘাষণা , input ও negative checking এখােন কেরা
int p = a ∗ b , h , l ; / / ণফল , গসা ও লসা

৪১২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

i n t m = a > b ? b : a ; / / েটার মেধ ছাটিট


/ / এেক এেক পরী া কেরা উভেয় িবভাজ িকনা
f o r ( i n t k = m; k ; ++k ) / / m হেত যত ণ নয়
i f ( a % k == 0 && b % k == 0 ) / / উভেয় িবভাজ
{ h = k ; l = p / k ; break }

cout << " hcf = " << h << endl ;


cout << " lcm = " << l << endl ;

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

int p = a ∗ b; 5g
িফিরি ১৬.১১: Determining HCF and LCM (গসা ও লসা িনণয়)
int t , h , l ; / / সামিয়ক , গসা , লসা
/ / ণফল
in
do
{
t = a % b; / / ভাগেশষ িনণয়
a = b; / / আেগর ভাজক হেব নতুন ভাজ
am

b = t; / / ভাগেশষিট হেব নতুন ভাজক


}
while ( t ) ; / / ভাগেশষ হেল শষ

h = a , l = p / a ; / / গসা ও লসা
al

cout << " hcf = " << h << endl ;


cout << " losagu = " << l << endl ;

৪. নীেচর programএর ( মেলখ) output (ফলন) কী হেব, computerএ (গণিন) না


চািলেয় বর কেরা। তারপর গণিনেত চািলেয় তামার িহসাব করা ফলাফল যাচাই কেরা।
যিদ কান infinite loop (অসীম ঘূণী) থেক থােক সটােক মরামেতা কেরা।
int n = 3 ;
while ( n >= 0 ) / / থম ঘূণী
{
cout << n ∗ n << " " ;
−−n ;
}
cout << n << endl ;

৪১৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

while ( n < 4 ) / / ি তীয় ঘূণী


cout << ++n << " " ;
cout << n << endl ;

while ( n >= 0 ) / / তৃতীয় ঘূণী


cout << ( n / = 2 ) << " " ;
cout << endl ;

উপেরর programএর ( মেলখ) output (ফলন) নীেচ দখােনা হেলা। থম loop 3


থেক কের 0 পয সংখ া েলার বগ দখােব। কােজই 9 4 1 0 outputএ আসেব,
তারপর থম loopএর (ঘূণী) িঠক পেরর cout এর কারেণ আসেব −1। ি তীয় loop 4
হওয়ার আেগ পয িতবার এক বািড়েয় সংখ ািট output দখােব। কােজই আমরা পােবা
0 1 2 3 4, ি তীয় loopএর িঠক পেরর coutএর কারেণ 4 আেরা একবার আসেব।
তারপর তৃতীয় loopএ nএর মান বা বশী হেল আেগ 2 িদেয় ভাগ করেব তারপর
output িদেব। তা 4 হেত

বার
5g করেল আমরা outputএ পােবা 2 1 0 িক একবার
হওয়ার পের তারপর িতবার 2 িদেয় ভাগ করেলও nএর মান ই থাকেব। কােজই
loopএর (ঘূণী) শত কখেনা িমথ া হেব না। কােজই আমরা এেকর পর এক অসীম সংখ ক
পেত থাকেবা। অথাৎ এিট একিট infinite loop (অসীম ঘূণী) হেয় যােব।
9 4 1 0 −1
in
0 1 2 3 4 4
2 1 0 0 0 0 ....
am

Infinite loop িঠক করেত চাইেল আমরা তৃতীয় loopএর শতিট n >= 0 বদেল n > 0
িলেখ িদেত পাির। তােত তৃতীয় loopএর কারেণ output আসেব 2 1 0।

৫. একজন অনিভ programmer নীেচর programিট ( মেলখ) িলেখেছ। Program-


িটর indentation (ছাড়ন) দেখ যমন মেন হে programিট িঠক তমন output
(ফলন) িদে না। Programmer চেয়িছেলন ১০ থেক কের িতবার ২ িদেয় ভাগ
al

করেবন আর ভাগফেলর বগ দখােবন। ভাগ করেত িগেয় হেয় গেল থেম যােবন।
তরাং তার কাি ত output হে 25 4 1 িক programিট হেত সরকম output
আসেছ না। তা তুিম থেম এই program যমন আেছ তমন রেখই এর output িন-
ণয় কেরা। আর সে ে indentation কমন হেব সটাও দখাও। তারপর কাি ত
ফলাফল পেত গেল programএ কী পিরবতন করেত হেব সটাও কের দখাও।
i n t n = 10 ;
while ( n > 0 )
n /= 2 ;
cout << n ∗ n << " " ;
cout << endl ;

উপেরর programিটেত indentation দেখ মেন হেয় loopএর (ঘূণী) পেরর ই সা-
ির loopএর আওতার মেধ । িক গঠনরীিত অ যায়ী আসেল তা হেব না, কারণ এখােন
ব ব নী দয়া নই। ফেল কবল n /= 2টাই loopএর আওতায়। কােজই loop চলেব

৪১৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

িঠকই, িতবার 2 িদেয় ভাগ হেব, আর হেল loop থেম যােব। তারপর loopএর বা-
ইের থাকা coutএর কারেণ আমরা 0এর বগ 0ই outputএ পােবা। ফেল output হেব
কবল 0। আর এই ে indentationএর িবষয়িট িঠকঠাক করেল program দখেত
হেব নীেচর মেতা্।
i n t n = 10 ;
while ( n > 0 )
n /= 2 ; / / কবল এিট ঘূনীর িভতের
cout << n ∗ n << " " ; / / ছাড়ন িঠক করা হেলা
cout << endl ;

এবার কাি ত output (ফলন) পেত গেল আমােদর আসেল programএ ব ব নী


(curly brackets) { } ব বহার কের coutটােকও loopএর একিট block (মহ া)
তরী কের তার িভতের আনেত হেব। তরাং সইে ে programিট হেব নীেচর মেতা।
i n t n = 10 ;
while ( n > 0 )
{
n /= 2 ;
cout << n ∗ n << " " ;
5g //
//
//
মহ া
ঘূনীর িভতের িছেলাই
ঘূণীর িভতের এখন
in
} // মহ া শষ
cout << endl ;
am

৬. নীেচর programিট ( মেলখ) কী করেব বণনা কেরা। তারপর এিটেক এমন ভােব আবার
িলেখা যােত এেত while loopএর ( ণ ঘূণী) বদেল do loop (কেরা ঘূণী) ব ব ত হয়,
িক সব িমিলেয় programএর বিশ একই থােক।
int n ;
cout << " p o s i t i v e number : " ;
al

c i n >> n ;

while ( n <= 0 )
{
cout << " Not p o s i t i v e . " << endl ;
cout << " p o s i t i v e number : " ;
c i n >> n ;
}

উপেরর programিট ( মেলখ) ধনা ক সংখ া দরকার এরকম input prompt ( যা-
গান যাচনা) কের nএর মান input ( যাগান) িনেব। তারপর n যিদ ধনা ক না হয় তাহেল
loopএর (ঘূণী) িভতের ঢুকেব আর message (বাতা) দখােব ধনা ক নয়, আর আবার
input prompt কের nএর মান input িনেব। তারপর loopএর িভতের আবার পরী া
করেব অধনা ক িকনা, এবং এই ভােব চলেত থাকেব যত ণ না nএর মান ধনা ক হে ।
সব িমিলেয় বলা যায়, কমপে একবার input prompt িদেয় n এর মান input নওয়া

৪১৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

হেব: loopএর বাইেরর input prompt ( যাগান যাচনা) ও input ( যাগান) নওয়া-
টা হেলা সিট। তরাং আমরা খুব সহেজই do loop (কেরা ঘূনী) ব বহার করেত পাির
এখােন।
int n ;
do
{
cout << " p o s i t i v e number : " ;
c i n >> n ;
i f ( n <= 0 )
cout << " not p o s i t i v e . " << endl ;
}
while ( n <= 0 ) ;

তুিম চাইেল নীেচর মেতা কেরও িলখেত পােরা, যখােন আমরা ধনা ক হেল বরং loop (ঘূ-

5g
ণী) থেক break ( াি ) িনেবা। আর সে ে অব while(n <= 0) না িলেখ আমরা
কবল while(true) ও িলখেত পাির। আবার চাইেল do loop (কেরা ঘূনী) থেক while
loopএ ( ণ ঘূণী) ফরতও যেত পাির, যখােন নীেচর while(true) টােক সিরেয় িনেয়
িগেয় do এর বদেল বিসেয় িদেবা।
in
int n ;
do
{
am

cout << " p o s i t i v e number : " ;


c i n >> n ;
i f ( n > 0 ) break ;
cout << " not p o s i t i v e . " << endl ;
}
while ( n <= 0 ) ;
al

৭. নীেচর programিটর ( মেলখ) output কী? এিটেক এমন ভােব বদেল লেখা যােত
block (মহ া) ব বহার না কেরই একই ফলাফল পাওয়া যায়। তারপর programিটেক
while loop ( ণ ঘূ্ণী) ব বহার না কের for loop (জ ঘূণী) ব বহার কের িলেখা।
int i = 5 ;
while ( i > 0 )
{
i = i + 1;
cout << i << endl ;
}

উপেরর programএ ( মেলখ) loopএর িভতের iএর মান আেগ কমােনা হে তারপর
সটা outputএ (ফলন) দখােনা হে । কাজিট আমরা outputএ দখােনার সমেয়ই
করেত পাির pre-increment (পূব বৃি ) ব বহার কের, যা নীেচ দখােনা হেলা।

৪১৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

int i = 5 ;
while ( i > 0 )
cout << −− i << endl ;

তুিম চাইেল for loop (জ ঘূণী) ব বহার কের নীেচর মেতা কেরও িলখেত পােরা।
f o r ( i n t i = 5 ; −− i ; )
cout << −− i << endl ;

৮. এমন একিট program রচনা কেরা যিট একিট loopএর (ঘূণী) িভতের ব বহারকারীর
কােছ থেক এেকর পর এক একিট কের পূণক (integer) input িনেব। Input নওয়া
সংখ ািট ধনা ক না হেল program থেক বর হেয় যােব, আর ধনা ক হেল মােনর -
মা সাের সংখ ািটর উৎপাদক েলােক পরপর এক সািরেত output (ফলন) িদেব, আর
পেরর সংখ া input িনেত চাইেব। Sample input-output ( যাগান-ফলন) িন প:
> 0 f a c t o r s <= 0 ends
number i s ? 36
5g
f a c t o r l i s t : 36 18 12 9 4 3 2 1
> 0 f a c t o r s <= 0 ends
number i s ? −1
in
program f i n i s h e d !

আমরা এখােন একটা infinite loop (অসীম ঘূণী) িনেবা েত while(true) িলেখ,
am

তার মােন loopএর িভতের আমােদর অব ই একটা break ( াি ) িদেত হেব। তা


নীেচর programএ ( মেলখ) দেখা আমরা loopএর িভতের যথাযথ input prompt
( যাগান যাচনা) িদেয় সংখ ািট input িনেয়িছ। তারপর সংখ ািট ধনা ক না হেল break
িদেয়িছ, আর সে ে loopএর বাইের "program finished!" message (বাতা)
দিখেয়িছ। আর সংখ ািট ধনা ক হেল আমরা বড় থেক ছাটর িদেক িতিট সংখ া িদেয়
দ সংখ ািটেক ভাগ কেরিছ। ভাগেশষ হওয়া মােন ভাজকিট একিট উৎপাদক, সিট
al

outputএ (ফলন) দখােত হেব। তুিম চাইেল এখােন do while (কেরা ঘূণী) ব বহার
করেত পারেত, আমরা সিট তামার িনেজর চ ার ওপের ছেড় িদলাম, চ া কের দেখা।

িফিরি ১৬.১২: Display List of Factors (উৎপাদক তািলকা দখাও)


while ( true )
{
cout << "> 0 f a c t o r s <= 0 ends " << endl ;
i n t ; c i n >> n ; / / যাগান

i f ( n <= 0 ) break ; / / ঋনা েক াি

cout << " f a c t o r l i s t : " ;


f o r ( i n t k = n ; k > 0 ; −−k )
i f ( n % k == 0 )
cout << " " << k ;

৪১৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

cout << endl ;


}
cout << " program f i n i s h e d ! " << endl ;

৯. এমন একিট program ( মেলখ) রচনা কেরা যিট একিট ধনা ক পূণ সংখ া যমন
23154 input ( যাগান) িনেয় output িদেব 45132।
i n t n , r , t ; / / ন র , উ া , সামিয়ক
cout << "number? " ;
c i n >> n ;
i f ( n <= 0 )
{
cout << " not p o s i t i v e " << endl ;
ret u rn EXIT FAILURE ;
}

r = 0; //
while ( n > 0 )
{
t = n % 10 ;
5g
েত উ া ন র

/ / একেকর অ
in
r = r ∗ 10 + t ; / / উ ার িপেছ
n = n / 10 ; / / অবিশ অংশ
}
am

cout << " reverse = " << r << endl ;

উপেরর programএ থেম উ া ন র r ধের িনেয়িছ। তারপর n যত ণ না


হে তত ণ loop (ঘূণী) চালােনা হেব। িতবার nএর য একেকর অ আেছ সিট িনেয়
r িপেছ লািগেয় িদেত হেব। n এর একেকর অংক পাওয়া যায় ১০ িদেয় ভাগ কের ভাগেশষ
al

িনেল। এখন rএ যা আেছ তার িপছেন ওই অ িট লাগােত হেল rএর মানেক আেগ ১০ িদেয়
ণ কের িনেত হেব কারণ এ েলা ত বােমর িদেক এক ঘর সের যােব, আর তােত ডােনর
য ানিট ফাঁকা হেলা সখােন ওই অ িট বিসেয় িদেত হেব, অথাৎ যাগ করেত হেব।
Loopএর পেরর পােকর জে n হেব আেগর পােকর একেকর অ ছাড়া বাঁকী অংশ, আর
সিট পাওয়া যােব ১০ িদেয় n ক ভাগ কের।

১০. এমন একিট program ( মেলখ) রচনা কেরা যিট এেক এেক সংখ া input ( যাগান)
িনেব যত ণ ধনা ক সংখ া দওয়া হে , অধনা ক সংখ া হেল program শষ হেব।
Programিটর output (ফলন) হেব input নয়া সংখ া েলার মেধ সবেচেয় বড়িট আর
সিট কত ন ের input দওয়া হেয়িছেলা সই িমক ন রিট।
i n t l a r g e = 0 , index = 0 ; / / েত েটাই

int k = 0 ; // িমক গানার জ


while ( true )
{

৪১৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

cout << "number? " ; // যাগান যাচনা


i n t n ; c i n >> n ; // যাগান নওয়া

i f ( n <= 0 ) break ; / / অধনা ক সংখ া

k = k + 1; / / আর একিট যাগান হেলা

i f ( n > large ) / / এিট আেগর বড়র চেয়ও বড়


{
large = n ; / / এিট তাই নতুন বড়
index = k ; / / আর নতুন বড়িটর সূচক
}
}

i f ( k > 0 ) / / যিদ কান ন র যাগান হেয় থােক


{

}
5g
cout << " l a r g e = " << l a r g e << endl ;
cout << " index = " << index << endl ;
in
উপেরর programিটর ( মেলখ) েত আমরা বড় সংখ া িহসােব আিদেত ধের িনেয়িছ
, যিট input দওয়া য কান ধনা ক সংখ ার চেয় ছাট হেব। অেনক েলা সংখ ার
মেধ সবেচেয় বড় সংখ ািট বর করেত চাইেল আমরা সাধারণত েত ছাট একটা সং-
am

খ ােক ফলাফল িহসােব ধের নই। যােত সটার চেয় তুলনা কের কের আেরা বড় আেরা
বড় সংখ া পাওয়া যায়। তুিম যিদ অেনক েলা সংখ ার মেধ সবেচেয় ছাট সংখ ািট বর
করেত চাও তাহেল তামােক েত বড় একটা সংখ ােক ফলাফল িহসােব ধের িনেত হেব।
যাইেহাক এরপর উপেরর programিট দেখা input prompt কের input িনেয় থেম
পরী া কেরেছ ধনা ক িকনা। ধনা ক না হেল loopএ (ঘূণী) break ( াি ) িদেত হেব
আর না হেল যেহতু আেরকিট ধনা ক সংখ া পাওয়া গেলা তাই িমক ন র এক বাড়েব।
al

এরপর বতমােনর বড়িট সােথ তুলনা কের যিদ দখা যায় নতুন ন রিট বড়, তাহেল নতুন
ন রিটই হেব বড় আর তার indexিট আেরকিট variableএ িনেত হেব। Loopএর বাইের
কবল বড় সংখ ািট আর তার index outputএ (ফলেন) যােব।

১১. িফেবানাি (Fibonacci) গমন হেলা ০, ১, ১, ২, ৩, ৫, ৮, ...। ল কেরা এই গম-


নর থম িট পদ হেলা ০ আর ১। আর এর পর থেক িতিট পদ তার আেগর েটা পেদর
যাগফল। এমন একিট program ( মেলখ) রচনা কেরা যিট একিট ধনা ক পূণক n
input ( যাগান) িনেয় nতম পদ িনণয় করেব।

িফিরি ১৬.১৩: Fibonacci Progression (িফেবানাি গমন িনণয়)


i n t n ; / / মান তুিম যাগান িনেয় ধনা ক িকনা পরী া করেব।

/ / থম েটা সংখ া আর তারপেররিটর চলক


i n t f i r s t = 0 , second = 1 , next ;

৪১৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

i f ( n == 1 ) / / থমিট সরাসির ফলন


cout << " f i r s t = " << f i r s t << endl ;
e l s e i f ( n == 2 ) / / ি তীয়িট সরাসির ফলন
cout << " second = " << second << endl ;
else / / অ য কানটা মাগত িহসাব করেত হেব
{
f o r ( i n t k = 3 ; k <= n ; ++k )
{
/ / k−তম পদ িহসাব করা হেব
next = f i r s t + second ; / / যাগ
f i r s t = second ; / / পেররটার জ ২য়টাই ১ম
second = next ; / / পেররটার জ নতুনটা ২য়
}
/ / নতুন যিট সিট তমk পদ , তরাং ফলন
cout << n << " th = " << next << endl ;
}

5g
থেম n variable declare (চলক ঘাষণা) কের, তুিম input prompt ( যাগান যাচ-
না) িদেয় nএর মান input িনেব। তারপর n ধনা ক িকনা পরী া কের দখেব। n ধনা ক
in
না হেল একিট loopএর (ঘূণী) িভতের আবার input িনেত পােরা যত ণ না ধনা ক মান
দওয়া হে ্ এই অংশটু কের দওয়া হেলা না, িনেজর কেরা। আমরা কবল িফেবানা-
ি পদ েলা িনণেয়র অংশটু দিখ। থম িট পদ ধারণ করার জ আমােদর first
আর second নােম িট আর পেরর পেদর জ next নােম আেরকিট variable (চলক)
am

আেছ। যিদ nএর মান ১ বা ২ হয় তাহেল আমরা তা থম পদ িট থেক কান প িহসাব


করা ছাড়া সরাসিরই output িদেত পাির। আর যিদ nএর মান 3 বা বশী হয় তাহেল এক-
িট for loopএ (জ ঘূণী) আমরা থেম next পদিট িহসাব করেবা first ও second
পদ িট যাগ কের। এবার তারওপেরর পদিটর জ আমােদর যা করেত হেব এই পােক
সটা িঠক কের রাখেত হেব, যােত পেরর পােকর েতই আমরা ওই পদিট িহসাব করেত
al

পাির। তা next িহসাব করার পের এখন আমােদর থম পদিট হেব আেগ যিট ি তীয়
পদ িছেলা সিট, আর ি তীয় পদিট হেব next পদিট। এবং তারফেলই পেরর পােক first
ও second যাগ করেল আমরা তারওপেরর পদিট পােবা। Loop (ঘূণী) চলেব এখােন
৩ থেক n হওয়া পয । খয়াল কেরা kএর মান যত আমরা loopএর (ঘূণী) blockএর
িভতের তততম পদিট িহসাব করিছ, আর তারপেরর পদিটর জ িত িনি ।

১২. একিট ধনা ক পূণক n input িনেয় থম n াভািবক সংখ ার (১, ২, ৩, ...) যাগফল ও
ণফল িনণেয়র program ( মেলখ) রচনা কেরা। তুিম হয়েতা জােনা থম n াভািবক
সংখ ার ণফলেক factorial (উৎপাদকীয়) বলা হয়। Factorial খুবই বড় সংখ া হয়
যা intএ নাও ধরেত পাের, কােজই n বড় হেল আমরা উ াপা া ফল পেত পাির।
i n t n ; / / মান তুিম যাগান িনেয় ধনা ক িকনা পরী া করেব।

/ / নীেচর সািরেত যাগফল কন ০ আর ণফল ১?


i n t sum = 0 , product = 1 ;
f o r ( i n t k = 1 ; k <= n ; ++k )

৪২০

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

{
sum += k ; // যাগ কেরা
product ∗= k ; / / ণ কেরা
}
cout << "sum = " << sum << endl ;
cout << " product = " << product << endl ;

এই programিট ( মেলখ) খুবই সহজ। আমরা n variable (চলক) ঘাষণা দিখেয়-


িছ, িক এর input prompt ( যাগান যাচনা) ও input ( যাগান) নওয়া তুিম করেব।
তারপর সিট ধনা ক িকনা সিটও পরী া করেব। এর পের খয়াল কেরা আমরা িট
variable (চলক) িনেয়িছ যাগফল ও ণফেলর জে । মজার ব াপার হে sumএর
initial value (আিদ মান) িদেয়িছ ০ িক productএর initial value িদেয়িছ ১। কন
বলেত পারেব? যােগর মােন আেগ থেক ১ থাকেল তা যাগফল সিঠক আসেব না, ১ বশী
আসেব, তাই initial value । আর ণফেলর ে initial value ০ হেল এরপ-
রর সকল ণফলই তা ০ হেয় যােব, ১ িদেল সিট হেব না। যাগ ও েণর জ initial

ব াখ া করিছ না।
5g
valueএর এই তফাৎ সবসময় মেন রাখেব। এই programএর বাঁকী অংশটু েতা আর

১৩. নীেচর ধারা েলার থম n পেদর সমি িননয় কেরা। তামার programএ ( মেলখ)
তুিম n input ( যাগান) িহসােব িনেব, আর ধারািটর সমি output (ফলন) িদেব।
in
x3 x5 x7
ক) Sine series (ল া পাত ধারা): sin(x) = x − 3! + 5! − 7! + ...
x2 x6 x4
খ) Cosine series (ল া পাত ধারা): cos(x) = 1 − 2! + 4! − 6! + . . .
am

গ) Harmonic series (ভািজত ধারা): Hn = 1 + 12 + 31 + . . . + n1


ঘ) Euler number (অয়লার সংখ া): en = 1 + 1!1 + 2!1 + . . . + (n−1)!
1

ঙ) Geometric series ( েণা র ধারা): 1


1−x = 1 + x + x2 + . . . + xn−1
3 5 7
এখােন আমরা ধু sin(x) = x − x3! + x5! − x7! + . . . এর program ( মেলখ)
al

দখােবা। বাঁকী েলা তুিম একই রকম কের িনেজ কেরা। আমােদর nএর পাশাপািশ xও
input ( যাগান) িনেত হেব। তেব n যখােন ধনা ক পূণক (positive integer) x স-
খােন ভ ক (fractioner)। তারপর আমােদর একিট loop (ঘূণী) িনেত হেব যিট 1 থেক
n পয ঘুরেব, আর িতপােক kতম পদিট িহসাব কের যাগফেলর সােথ যাগ কের িদেব।
k
একটু খয়াল করেল দখেব এখােন kতম পদিট আসেল − (−x) k! । তরাং আমরা পদ িন-
ণেয়র জ একিট loop (ঘূণী) চািলেয় power (শি ) (−x)k িনণয় করেবা, আেরকিট
loop (ঘূণী) চািলেয় factorial (উৎপাদকীয়) k! িনণয় করেবা, আর তারপর পদিট যাগ
কের দেবা যাগফেলর সােথ।
int n ; // যাগান নাও
float x ; // যাগান নাও

f l o a t sum = 0 ; / / যাগফল
f o r ( i n t k = 1 ; k <= n ; ++k )
{

৪২১

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

f l o a t power = 1 ; / / (−x ) ˆk
float factorial = 1 ; / / k !

f o r ( i n t p = 1 ; p <= k ; ++p )
{
power ∗= (−x ) ; / / শি িনণয়
f a c t o r i a l ∗= p ; / / উৎপাদকীয়
}
sum += − power / f a c t o r i a l ;
}

cout << sum << endl ;

উপেরর programিট আসেল খুব একটা দ হয় িন। কারণ এেত loopএর িভতের loop
বা nested loop (অ াি ঘূণী) ব ব ত হেয়েছ। আসেল িভতেরর loopটা ব বহার না

5g
কেরই এই program ( মেলখ) লখা স ব। একটা ব াপার খয়াল কেরা আেগর পেদর
সােথ আমরা কবল f rac−x2 (2k − 1)(2k − 2) ণ করেলই পেরর পদ পােবা। কা-
জই আেগর পদ আেরকটা variableএ (চলক) ব বহার কের মেন রাখেল পেরর পদ সহ-
জ বর করা যােব, এবং কান loop (ঘূণী) না চািলেয়ই তা বর করা স ব হেব।
in
int n ; // যাগান নাও
float x ; // যাগান নাও
am

f l o a t sum = 0 ; / / যাগফল
f l o a t term = x ;
f o r ( i n t k = 1 ; k <= n ; ++k )
{
sum += x ;
al

term ∗= −x∗x / ( ( 2∗k−1 ) ∗ ( 2∗k − 2 ) ) ;


}

cout << sum << endl ;

১৪. দশটা সংখ া input ( যাগান) িনেয় তােদর গড় (mean) ও িমত িবচু িত (standard
deviation) িনণয় কেরা। িমত িবচু িত √হেলা সংখ া েলার বেগর গড় থেক গেড়র বগ
∑ ∑
x2 x 2
িবেয়াগ কের িবেয়াগফেলর বগমূল অথাৎ n −( n ) ।
i n t n ; / / কয়িট সংখ া যাগান নাও

/ / নীেচর চলক িট যাগফল ও বেগর যাগফল


f l o a t sumx = 0 , sumx2 = 0

৪২২

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

f o r ( i n t k = 0 ; k < n ; ++k )
{
cout << k << "tom pod ? " ; / / যাচনা
f l o a t x ; c i n >> x ; / / যাগান

sumx += x ; / / যাগফল িনণয়


sumx2 += x∗x ; / / বেগর যাগফল
}

f l o a t mean = sumx / n ; / / গড় , নীেচ িমত িবচু িত


f l o a t std = s q r t ( sumx2 / n − mean ∗ mean ) ;

উপেরর programিট ( মেলখ) খুবই সাধারণ। একিট loopএর িভতের যাগফল ও


বেগর যাগফল বর কের নাও। তারপর loopএর বাইের থেম গড় আর তারপের -
িমত িবচু িত িনণয় কেরা। এখােন sqrt( ) function (িবপাতক) ব বহার কের বগমূল িন-
ণয় করা হেয়েছ। কােজই programএর

5g
েত #include <cmath> িলেখ cmath
header file (িশর নিথ) include (অ ভু ) কের িনেত হেব।

১৫. একিট ণীেত n সংখ ক িশ াথী আেছ আর তােদর েত েক m সংখ ক িবষেয় পরী া
in
িদেয়েছ। েত ক ছাে র েত ক িবষেয়র ন র input ( যাগান) িনেয় েত ক ছাে র মাট
ন র output (ফলন) দাও।
i n t m, i n t n ; / / যাগান নাও
am

/ / েত ক ছাে র জ ঘূণী
f o r ( i n t i = 1 ; i <= n ; ++ i )
{
f l o a t sum = 0 ;
al

/ / েত ক িবষেয়র জ ঘূণী
f o r ( i n t j = 1 ; j <= m; ++ j )
{
f l o a t mark ;
cout << j << " th s u b j e c t ? " ;
cout << mark ;

sum += mark ;
}
cout << " t o t a l marks = " << sum ;
cout << endl ;
}

এই programএ ( মেলখ) েটা nested loop (অ াি ঘূণী) লাগেব। থমিট িত


িশ াথীর জ , আর ি তীয়িট তােদর িতিট িবষেয়র জ । বাঁকী অংশ সহজ, দেখ নাও।

৪২৩

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

১৬. তারকা ব বহার কের নীেচর িবিভ রকম আকৃিত েলা output দাও। িতিট ে তুিম
দরকার মেতা তুিম parameter (পরািমিত) n input ( যাগান) িনেব। Parameter
মােন হে সািরর সংখ া বা সািরেত সেবা কয়িট তারা থাকেব বা থাকেব না এ েলা n
ওপর িনভরশীল। নীেচর িতিট ে nএর মান 5।
∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗
∗∗ ∗∗ ∗ ∗ ∗∗ ∗ ∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗

∗ ∗ ∗
∗∗ ∗∗ ∗∗ ∗
∗∗ ∗ ∗ ∗∗ ∗ ∗∗ ∗∗
∗∗ ∗∗
∗∗ ∗∗ ∗
∗∗ ∗∗
∗∗ ∗
∗∗
∗ ∗∗ ∗

5g
∗ ∗∗ ∗ ∗
∗∗ ∗ ∗
∗∗∗
∗∗
∗∗ ∗∗ ∗∗ ∗
∗ ∗∗ ∗∗ ∗∗ ∗∗
∗∗ ∗∗ ∗∗ ∗
∗ ∗∗ ∗∗
∗∗ ∗
in
∗ ∗ ∗

এই সব আকৃিতর িতিটর জ আমােদর nested loop (অ াি ঘূণী) লাগেব। আমরা


am

এখােন কবল উপেরর ডানপােশরিট কের িদেবা। বাঁকী েলা তুিম িনেজ করেব।
int n = 5 ; / / যাগান িনেত পােরা

/ / িতিট আিড়র ( row ) জ ঘূণী


f o r ( i n t row = 1 ; row <= n ; ++row )
{
al

// েত ফাঁকা আেছ n − row সংখ ক


f o r ( i n t c o l = 1 ; c o l <= n − row ; ++ c o l )
cout << "−" ;
/ / মাঝখােন তারা আেছ 2 ∗ row − 1 সংখ ক
f o r ( i n t c o l = 1 ; c o l <= 2∗row − 1 ; ++ c o l )
cout << " ∗ " ;
/ / শেষ ফাঁকা আেছ n − row সংখ ক
f o r ( i n t c o l = 1 ; c o l <= n − row ; ++ c o l )
cout << "−" ;
cout << endl ;
}

এই program ( মেলখ) লখার িবধােথ আমরা থেম outputটােক (ফলন) একটু


বদেল িলিখ। মূলত ফাঁকা েলােক (space) নীেচর ডানপােশর মেতা কের − বিসেয় িচ-
া কির। তাহেল ফাঁকা নেত িবধা হওয়ায় নকশািটর ধাঁচ (pattern) পাওয়া সহজ

৪২৪

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

হেব, outputএর সময় আমরা ফাঁকাই িলখেবা − নয়। মেন রাখেব এখােন আমােদর
parameter ৫। এখােন ৫ িট সাির আেছ। িতিট সািরেত তারা অ র আেছ ৯িট মা-
ন 2∗5 − 1। আেরা খয়াল কেরা ১ম সািরেত ও শেষ ফাঁকা আেছ ৪িট কের, ২য়
সািরেত ৩িট কের, ৩িট সািরেত ২িট কের। এসেবর িতিট ে যাগফল পাঁচ মােন ১ +
৪ = ২ + ৩ = ৩ + ২ = ৪ + ১। অথাৎ যততম সাির, ও শেষ ফাঁকার সংখ া ৫ থেক
তত িবেয়াগ করেল পাওয়া যােব। এরপর দেখা তারকার সংখ া হেলা পরপর সািরেত ১,
৩, ৫, ৭, ৯, অথাৎ যততম সাির তার ি েণর চেয় এক কম সংখ ক তারা আেছ।
∗ −−−−∗−−−−
∗ ∗∗ −−−∗ ∗∗−−−
∗∗ ∗∗ ∗ −−∗∗ ∗∗ ∗−−
∗ ∗∗ ∗∗ ∗ ∗ −∗ ∗∗ ∗∗ ∗ ∗−
∗∗ ∗∗ ∗∗ ∗ ∗∗ ∗∗ ∗∗ ∗∗ ∗ ∗∗

১৭. এক পরী ায় মাট ন র ৯। কােজই একজন ছা ০ হেত ৯ পয য কান ন র পেত

5g
পাের। এমন একিট program ( মেলখ) রচনা কেরা যিট এই প ২০ জন ছাে র েত -
কর ন র input ( যাগান) িনেয় তােদর ন র তারকা িচ িদেয় আ ভুিমক িচে দখােব।
িতনজন ছাে র জ নমুনা input ও output ( যাগান ও ফলন) িন প:
1th mark ? 9
in
1 : ∗ ∗∗ ∗∗ ∗ ∗∗ ∗ ( 9 )
2th mark ? 5
2 : ∗ ∗∗ ∗∗ ( 5 )
3th mark ? 6
am

3 : ∗ ∗∗ ∗∗ ∗ ( 6 )

এখােনও আমেদর nested loop (অ াি ঘূণী) লাগেব। থম loopিট িতিট ছাে র


জ আর িভেতর একটা loop লাগেব দরকার মেতা তারকা দখােনার জ ।
/ / িতিট ছাে র ঘূণী
al

f o r ( i n t k = 1 ; k <= 20 ; ++k )
{
/ / যাচনা কের ন র যাগান
cout << k << " th mark ? " ;
i n t mark ; c i n >> mark ;

// েত িমক ন র
cout << k << " : " ;

/ / তারকা দখােনার ঘূণী


f o r ( i = 1 ; i <= mark ; ++ i )
cout << " ∗ " ;

/ / শেষ ব নীেত ন র দখােনা


cout << " ( " << mark << " ) " ;

৪২৫

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

cout << endl ;


}

১৮. ০ থেক ৯ পয নামতার সারণী (table) িলখার জ একিট program রচনা কেরা।
সারণীেক র কের সাজােনার জ তামােক এক অে র সংখ া ও ই অে র সংখ া
মাথায় রাখেত হেব। এক অে র সংখ ার জ তুিম থেম একিট অিতির ফাঁকা (space)
িদেয় িনেব। তােত সারণীেত row and column (আিড় ও খািড়) িঠক মেতা থাকেব।
আর নামতার সারণীেত সবেচেয় বােমর columnএ (খািড়) আর উপেরর rowেত (আিড়)
অব ই ০ থেক ৯ পয সংখ া েলা থাকেব heading িহসােব।
এই programিট একটু খুঁিটনািট খয়াল কের িলখেত হেব, যােত সারণীিট আসেলই র
লােগ দখেত। সব থেম সারণীর উপেরর বাম কানা খয়াল কেরা সিট অব ই ফাঁকা
হেব। আর থম সািরেত আসেল সংখ া েলা থাকেব ০ থেক ৯ পয heading িহসােব।
ি তীয় সাির থেক মূলত ণফল েলা থাকেব। তেব থেমই থাকেব heading িহসােব
সংখ া, আর তারপর ণফল েলা। ণফল দখােনার আেগ অব ই খয়াল করেব ৯ বা

cout << " " ;


5g
ছাট িকনা, সে ে একটা অিতির ফাঁকা (space) দখােত হেব।

/ / থম সাির হেলা িশর নাম


/ / উপের বাম কানা
in
f o r ( i n t i = 0 ; i <= 9 ; ++ i )
cout << " " << i ; / / ইটা ফাঁকা
cout << endl ;
am

/ / িতিট সংখ ার জ সাির


f o r ( i n t i = 0 ; i <= 9 ; ++ i )
{
cout << i ; / / থম খািড়
al

/ / িতিট সংখ ার জ খািড়


f o r ( i n t j = 0 ; j <= 9 ; ++ j )
{
i n t p = i ∗ j ; / / ণফল

cout << " " ; / / পৃথকী


i f ( p <= 9 ) / / এক অে র
cout << " " ; / / অিতির ফাঁকা
cout << p ; / / ণফল
}
cout << endl ; / / সাির শষ
}

১৯. এমন একিট program ( মেলখ) রচনা কেরা যিট ৫০ জন ছাে র ন র input ( যাগান)
িনেব, আর output িদেব কান পা ায় কতজন ছাে র ন র পেড়েছ তা। িত ১০ ন েরর

৪২৬

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

জ একিট কের পা া িচ া করেত পােরা, আর মাট ন র হেল ৩০ যখােন এক জন ছা


১ থেক ৩০ পয য কান ন র পেত পাের। কােজই মাটা পা া রেয়েছ ৩িট।
i n t f i r s t = 0 , second = 0 , t h i r d = 0 ;

f o r ( i n t k = 1 ; k <= 50 ; ++k )
{
cout << k << " th mark ? " ;
i n t mark ; c i n >> mark ;

i f ( mark <= 0 )
cout << " p a l l a r b a i r e " << endl ;
e l s e i f ( mark <= 10)
++ f i r s t ;
e l s e i f ( mark <= 20)

else
++second ;
e l s e i f ( mark <= 30)
++ t h i r d ;
5g
cout << " p a l l a r b a i r e " << endl ;
in
}

cout << " f i r s t = " << f i r s t << endl ;


am

cout << " second = " << second << endl ;


cout << " t h i r d = " << t h i r d << endl ;

২০. ি পদী সহগ (binomial coefficient) হেলা n Cr = n1 ∗ n−1 2 ∗ ... ∗


n−r+1
r ।
ি পদী সহগ েলা িনেয় একটা ি ভুজ তরী করা যায় যােক বলা হয় প াসক াল ি ভুজ।
প াসক াল ি ভুজ নীেচ দখােনা হেলা। থম সািরেত মানিট হেলা 0 C0 , ি তীয় সািরেত
al

মান েলা হেলা 0 C1 ও 1 C1 , তৃতীয় সািরেত 0 C2 , 1 C2 ও 2 C2 । Parameter n input


( যাগান) িনেয় তার জ প াসক াল ি ভুজ output (ফলন) দাও। নীেচর প াসক াল
ি ভুেজর parameter ৪। তুিম চাইেল উি েয় পাি েয় নানান রকেমর প াসক াল ি ভুজ
তরী করেত পােরা।
1 −−−−1−−−−
1 1 −−−1−1−−−
1 2 1 −−1−2−1−−
1 3 3 1 −1−3−3−1−
1 4 6 4 1 1−4−6−4−1

আমরা আপাতত ধের নই িতিট সংখ ােত একটাই অ থাকেব। বশী অে র সংখ ার
জ তামােক আর একটু ক কের অিতিরি ফাঁকা (space) ব বহার করেত হেব। যা-
ইেহাক নকশার ধাঁচ বুঝার জ আমরা ফাঁকা েলােত সামিয়ক ভােব − বিসেয় িনেয়িছ।
আমােদর এখােন nএর মান ৪। তেব িহসােবর িবধােথ আমরা এখােন গণনা করেবা

৪২৭

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৩. অ শীলনী সম া (Exercise Problems)

০ থেক। কােজই ০তম সািরেত ও শেষ ফাঁকা রেয়েছ ৪িট। ১ম সািরেত ফাঁকা রেয়েছ
৩িট। এইভােব ৪থ সািরেত ফাঁকা িট। অথাৎ যত ন র সাির ৪ িবেয়াগ তত হেলা ও
শেষর ফাঁকার সংখ া। আর িত েটা সংখ ার মাঝখােন একটা ফাঁকা আেছ অথবা বলেত
পাের িতিট সািরর থম সংখ ািট ছাড়া পেরর সংখ া েলার সামেন ফাঁকা আেছ।
int n = 4 ; // যাগান িনেত পােরা , ও নয়া যেত পাের

/ / িতিট সািরর জ
f o r ( i n t k = 0 ; k <= n ; ++k )
{
/ / সািরর েত ফাঁকা
f o r ( i n t i = 0 ; i < n − k ; ++ i )
cout << " " ;

/ / মাঝখােন সংখ া েলা

5g
f o r ( i n t i = 0 ; i <= k ; ++ i )
{
/ / িট সংখ ার মধ বতী ফাঁকা
i f ( i > 0)
cout << " " ;
in
/ / এবার সংখ ািট C ( k , i ) িননয়
i n t product = 1 ;
am

f o r ( i n t j = 1 ; j <= i ; ++ j )
product = product ∗ ( k − j + 1 ) / j ;
/ / উপেরর সািরেত product ∗= ( k − j + 1 ) / j ;
/ / িলখেল িঠক মেতা ফলন আসেব না ,
/ / কারণ পূণেকর ভাগ সম া করেব
al

cout << product ;


}

/ / সািরর শেষ ফাঁকা


f o r ( i n t i = 0 ; i < n − k ; ++ i )
cout << " " ;
cout << endl ;
}

২১. এমন একিট program ( মেলখ) রচনা কেরা যিট তামার সােথ একিট খলা খলেব।
Programিট তামােক মেন মেন ০ থেক ১০২৩ এর মেধ একিট ন র মেন মেন ধরেত
বলেব। আর তারপর programিট তামােক বশ িকছু করেব, এই যমন তামার
ধেরন নওয়া সংখ ািট অমুক সংখ ার চেয় বড় বা সমান নািক ছাট। তুিম মূলত সত
না িমথ া উ র িদেব। উ র েলার িভি েত programিট বেল িদেব তামার ধের নওয়া
সংখ ািট কেতা? এই খলায় আসেল িতবার অেধক কের পা া কমােত হয়। তাই এটােক

৪২৮

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৪. Computing Terminologies (গণনা পিরভাষা)

bisection method (ি খ ডন প িত) বলা হয়। এই প িতিটেক অেনক সময় binary


searchও ( িয়ক অ স ান) বলা হয় অব ।
i n t low = 0 , high = 1024 ;

cout << " assume a number i n your mind " << endl ;
cout << " the number should be 0−−1023 " << endl ;
cout << "now answer the questions below " << endl
;
cout << " r e p l y 1 i f true , 0 i f f a l s e " << endl ;

do
{
f l o a t mid = ( low + high ) / 2 . 0 ;
cout << "number >= " << mid << " ? " ;

i f ( answer )
low = mid ;
else
5g
i n t answer ; c i n >> answer ;
in
high = mid − 1 ;
cout << low << " " << high << endl ;
}
am

while ( low < high ) ;


cout << "number = " << low << endl ;

চেলা আমরা উপেরর programিট ( মেলখ) িবে ষণ কির। আমরা িট সংখ া িনেয়িছ
low আর high যখােন আমরা আমােদর পা া রাখেত চাই। আমরা পা া িহসােব ধের িন-
লাম ০ আর ১০২৪। তা থমবাের আমরা তাহেল করেবা ধের নওয়া সংখ ািট অেধক
al

অথাৎ ৫১২ এর চেয় বড় বা সমান িকনা। উ র যিদ াঁ হয় তার মােন ধের নওয়া সংখ া-
িট সবিন ৫১২, কােজই low ক আমরা বদেল কের ফলেত পাির ৫১২। এেত আমােদর
পা া অেধক হেয় গেলা। এবার ৫১২ ও ১০২৪ এর মাঝখােনরিট ৭৬৮ িদেয় একই রকম
করেবা। উ র যিদ না হয় তার মােন ধের নওয়া সংখ ািট সেবা ৭৬৭, কােজই high
ক আমরা বদেল কের ফলেত পাির ৭৬৭। এবােরও পা া অেধক হেয় গেলা। এইভােব
চলেত থাকেব। উপেরর program খয়াল কেরা, দেখা এত ণ যা বললাম, তাই কেরিছ
িক না? তাহেল হেয় গেলা আমােদর মজার খলা!

১৬.২৪ Computing Terminologies (গণনা পিরভাষা)


• Iterative (পুনািল) • For loop (জ ঘূণী)

• Loop (ঘূণী) • While loop ( ণ ঘূণী)

• Index (সূচক) • Do loop (কেরা ঘূণী)

৪২৯

for more books https://youtube.com/alamin5g


for more videos https://youtube.com/annaaba

১৬.২৪. Computing Terminologies (গণনা পিরভাষা)

• Repetition (পুনরাবৃি ) • Flag (পতাকা)


• Initialisation (আদ ায়ন)
• Infinite (অসীম)
• Update (হালায়ন)
• Continue (িডঙােনা) • Interaction (িমথি য়া)

5g
in
am
al

৪৩০

for more books https://youtube.com/alamin5g

You might also like