ads


পঞ্চম অধ্যায় পাঠ- বিভিন্ন প্রজন্মের প্রোগ্রামিং ভাষা এবং বিভিন্ন স্তরের প্রোগ্রামিং ভাষা।

প্রোগ্রামঃ যন্ত্রের মাধ্যমে কোন সমস্যা সমাধানের জন্য প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামারের দেওয়া প্রয়োজনীয় নির্দেশের সমষ্টিকে প্রোগ্রাম বলা হয়।

প্রোগ্রামিংঃ প্রোগ্রামিং ভাষা ব্যবহার করে কোন যন্ত্রকে নির্দেশনা দেওয়াকে বলা হয় প্রোগ্রামিং। অন্যভাবে বলা যায়, প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রামিং বলা হয়।

প্রোগ্রামারঃ যে ব্যাক্তি যন্ত্রের মাধ্যমে কোন সমস্যা সমাধানের লক্ষে প্রোগ্রামিং ভাষা ব্যবহার করে প্রয়োজনীয় নির্দেশনা দেয়  বা প্রোগ্রাম লিখে তাকে প্রোগ্রামার বলে।

প্রোগ্রামিং ভাষাঃ যে ভাষার সাহায্যে একটি যন্ত্রকে নির্দেশনা দিয়ে কোন সমস্যা সমাধান করা যায় তাকে প্রোগ্রামিং ভাষা বলে।অন্যভাবে বলা যায়, কম্পিউটারের মাধ্যমে কোন সমস্যা সমাধানের জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রামিং ভাষা বলা হয়। যেমন- BASIC, C, C++, COBOL, Java, FORTRAN, Ada, Pascal ইত্যাদি।

প্রোগ্রামিং ভাষার প্রকারভেদঃ 1945 থেকে শুরু করে পর্যন্ত যত প্রোগ্রামিং ভাষা আবিষ্কৃত হয়েছে তাদেরকে বৈশিষ্ট্য অনুযায়ী পাঁচটি প্রজন্মে ভাগ করা হয়েছে।

·         প্রথম প্রজন্ম – First Generation(1945-1949)

o    Machine Language ( যান্ত্রিক ভাষা)

·         দ্বিতীয় প্রজন্ম – Second Generation(1950-1959)

o    Assembly Language (অ্যাসেম্বলি ভাষা)

·         তৃতীয় প্রজন্ম Third Generation(1960-1969)

o    High Level Language (উচ্চস্তরের ভাষা)

·         চতুর্থ প্রজন্ম – Fourth Generation(1970-1979)

o    Very High Level Language (অতি উচ্চস্তরের ভাষা)

·         পঞ্চম প্রজন্ম – Fifth Generation(1980-present)

o    Natural Language(স্বাভাবিক ভাষা)

 

প্রোগ্রাম রচনার বৈশিষ্ট্যের ভিত্তিতে প্রোগ্রামিং ভাষাসমূহকে আবার বিভিন্ন স্তরে বিভক্ত করা হয়ঃ 

·         নিম্নস্তরের ভাষা (Low Level Language)

·                                 -Machine Language, Assembly Language

·         মধ্যমস্তরের ভাষা (Mid Level Language)

·                                -C, Forth, Dbase, WordStar

·         উচ্চস্তরের ভাষা (High Level Language)

·                                 -Fortran, Basic, Pascal, Cobol, C, C++, Visual Basic, Java, Oracle, Python

·         অতি উচ্চস্তরের ভাষা (Very High Level Language- 4GL)

·                                 -SQL, Oracle

·         স্বাভাবিক ভাষা Natural Language

·                                 -Human Language

 

মেশিন বা যান্ত্রিক ভাষাঃ যে ভাষায় শুধুমাত্র এবং ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে মেশিন বা যান্ত্রিক ভাষা বলে।কম্পিউটারের নিজস্ব ভাষা হচ্ছে মেশিন ভাষা। এটি কম্পিউটারের মৌলিক ভাষা। এই ভাষায় শুধু মাত্র এবং ব্যবহার করা হয় বলে এই ভাষায় দেওয়া কোনো নির্দেশ কম্পিউটার সরাসরি বুঝতে পারে। এর সাহায্যে কম্পিউটারের সাথে সরাসরি  যোগাযোগ করা যায়। এটি প্রথম প্রজন্মের এবং নিম্নস্তরের ভাষা। মেশিন ভাষায় লেখা প্রোগ্রামকে অবজেক্ট বা বস্তু প্রোগ্রাম বলা হয়।

মেশিন ভাষার সুবিধা:

·         মেশিন ভাষার সবচেয়ে বড় সুবিধা হচ্ছে কম্পিউটারের সাথে সরাসরি যোগাযোগ করা যায়।

·         মেশিন ভাষায় লেখা প্রোগ্রাম নির্বাহের জন্য কোনো প্রকার অনুবাদক প্রোগ্রামের প্রয়োজন হয় না। ফলে দ্রুত কাজ করে।

·         মেশিন ভাষায় লেখা প্রোগ্রামে অতি অল্প মেমোরি প্রয়োজন হয়।

মেশিন ভাষার অসুবিধা:

·           শুধু ব্যবহার করা হয় বলে মেশিন ভাষা শেখা কষ্টকর এবং এই ভাষা ব্যবহার করে প্রোগ্রাম লেখাও কষ্টসাধ্য।

·          এই ভাষায় লেখা কোনো প্রোগ্রাম সাধারণত বোঝা যায় না।

·         এই ভাষায় প্রোগ্রাম লিখতে প্রচুর সময় লাগে এবং ভুল হবার সম্ভাবনা খুব বেশি থাকে। ভুল হলে তা বের করা এবং ভুল-ত্রুটি দূর করা অর্থাৎ ডিবাগিং কষ্টসাধ্য।

·         এই ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। অর্থাৎ যন্ত্র নির্ভর ভাষা।

·         এই ভাষায় প্রোগ্রাম রচনার ক্ষেত্রে কম্পিউটারের অভ্যন্তরীণ সংগঠন ভালোভাবে জানতে হয়।

 

অ্যাসেম্বলি ভাষাঃ যে ভাষায় বিভিন্ন সংকেত বা নেমোনিক ব্যবহার করে প্রোগ্রাম লেখা হয় তাকে অ্যাসেম্বলি ভাষা বলে।অ্যাসেম্বলি ভাষায় প্রোগ্রাম লেখার জন্য ব্যবহার না করে বিভিন্ন সংকেত ব্যবহার করা হয়। এই সংকেতকে বলে সাংকেতিক কোড (Symbolic Code) বা নেমোনিক (mnemonic) এবং এটি সর্বোচ্চ পাঁচটি লেটারের সমন্বয়ে হয়, যেমন- SUB(বিয়োগের জন্য), MUL(গুণের জন্য), ADD(যোগের জন্য), DIV(ভাগের জন্য) ইত্যাদি। এই বৈশিষ্ট্যের জন্য এই ভাষাকে সাংকেতিক ভাষাও বলা হয়। অ্যাসেম্বলি ভাষা দ্বিতীয় প্রজন্মের এবং নিম্নস্তরের ভাষা। দ্বিতীয় প্রজন্মের কম্পিউটারে এই ভাষা ব্যাপকভাবে প্রচলিত ছিল। এই ভাষায় লেখা প্রোগ্রাম অনুবাদের প্রয়োজন হয় এবং অনুবাদক প্রোগ্রাম হিসেবে অ্যাসেম্বলার ব্যবহৃত হয়।

অ্যাসেম্বলি ভাষায় প্রতিটি নির্দেশের চারটি অংশ থাকে। যথা- 

·         লেবেল

·         অপ-কোড

·         অপারেন্ড

·         কমেন্ট

. লেবেলঃ প্রোগ্রামের একটি নির্দিস্ট স্থানকে চিহ্নিত করতে লেবেল ব্যবহৃত হয়। লেবেল ব্যবহারের ফলে প্রোগ্রাম একটি নির্দিস্ট স্টেটমেন্ট থেকে অপর একটি নির্দিস্ট স্টেটমেন্টে জাম্প করতে পারে। লেবেল লেখার ক্ষেত্রে এক বা দুইটি আলফানিউমেরিক ক্যারেক্টার ব্যবহৃত হয় এবং ক্যারেক্টারের মাঝে কোন ফাঁকা থাকা যাবে না।লেবেল হিসেবে কোন নেমোনিক ব্যবহার করা যাবে না। লেবেলের শেষে কোলন(:) দিতে হয়। যেমন- BB: 

. অপ-কোডঃ অপ-কোডকে অপারেশন কোডও বলা হয়। অপ-কোডে নির্দেশ নেমোনিক থাকে। এই নেমোনিকগুলো ভিন্ন ভিন্ন কম্পিউটারে ভিন্ন ভিন্ন হতে পারে। কিছু নির্দেশ নেমোনিক তাদের ব্যবহার দেখানো হল-

নেমোনিক 

ব্যবহার

LDA

প্রধান মেমোরির ডেটা অ্যাকিউমুলেটরে লোড করা।

STA

অ্যাকিউমুলেটরের ডেটাকে একটি নির্দিস্ট অবস্থানে সংরক্ষণ করা।

CLR

অ্যাকিউমুলেটর খালি করা।

ADD

অ্যাকিউমুলেটরের সাথে অপারেন্ডের মান যোগ করে যোগফল অ্যাকিউমুলেটরে রাখা।

SUB

অ্যাকিউমুলেটর থেকে অপারেন্ডের মান বিয়োগ করে বিয়োগফল অ্যাকিউমুলেটরে রাখা।

MUL

অ্যাকিউমুলেটরের সাথে অপারেন্ডের মান গুন করে গুণফল অ্যাকিউমুলেটরে রাখা।

DIV

অ্যাকিউমুলেটরের মানকে অপারেন্ডের মান দ্বারা ভাগ করে ভাগফল অ্যাকিউমুলেটরে রাখা।

JMP

শর্তহীনভাবে প্রোগ্রামের নির্দিস্ট লেভেলে জাম্প করতে।

INP

ডেটা বা নির্দেশ গ্রহণ করে মেমোরির নির্দিস্ট অবস্থানে রাখা।

OUT

মেমোরির নির্দিস্ট অবস্থানের ডেটা আউটপুটে প্রদর্শন।

STP

প্রোগ্রামকে থামানো।

. অপারেন্ডঃ অপকোড যার উপর কাজ করে তাকে অপারেন্ড বলে। এটি সাধারণত মেমোরির অ্যাড্রেস বা সরাসরি ডেটা হতে পারে।

. কমেন্টঃ প্রোগ্রামে কোন নির্দেশের কী কাজ তা বর্ননা আকারে লেখা হয় যাকে কমেন্ট বা মন্তব্য বলে। এটি প্রোগ্রাম নির্দেশের কোন অংশ নয়। প্রোগ্রাম নির্দেশগুলোর কমেন্ট থাকলে পরবর্তীতে প্রোগ্রামের পরিবর্তন করা সহজ হয় বা অন্য কোন প্রোগ্রামারের পক্ষে প্রোগ্রাম নিয়ে কাজ করা সহজ হয়।

অ্যাসেম্বলি ভাষার সুবিধা:

·         অ্যাসেম্বলি ভাষা সহজে বুঝা যায় এবং এই ভাষায় প্রোগ্রাম রচনা করা যান্ত্রিক ভাষার তুলনায় অনেক সহজ।

·         প্রোগ্রাম রচনা করতে সময় এবং শ্রম কম লাগে।

·         প্রোগ্রামের ত্রুটি বের করে তা সমাধান করা এবং প্রোগ্রাম পরিবর্তন করা সহজ।

অ্যাসেম্বলি ভাষার অসুবিধা:

·          এই ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। অর্থাৎ যন্ত্র নির্ভর ভাষা।

·         প্রোগ্রাম রচনার সময় প্রোগ্রামারকে মেশিন সম্পর্কে ধারণা থাকতে হয়।

·         অনুবাদক প্রোগ্রামের প্রয়োজন হয়।

 

উচ্চস্তরের ভাষাঃ  উচ্চস্তরের ভাষা হলো সেই সকল ভাষা যা মানুষের বোধগম্য এবং মানুষের ভাষার কাছাকাছি। যেমনউচ্চস্তরের ভাষা ইংরেজি ভাষার সাথে মিল আছে এবং এই প্রোগ্রামিং ভাষা যন্ত্র নির্ভর নয়, এই জন্য এসব ভাষাকে উচ্চস্তরের ভাষা বলা হয়। এটি মানুষের জন্য বুঝা খুব সহজ কিন্তু কম্পিউটার সরাসরি  বুঝতে পারে না বলে অনুবাদক প্রোগ্রামের সাহায্যে একে মেশিন ভাষায় রুপান্তর করে নিতে হয়। এটি তৃতীয় প্রজন্মের ভাষা।

উচ্চস্তরের ভাষার প্রকারভেদ:

সাধারণ কাজের ভাষা (General Purpose Language): যেসব প্রোগ্রামিং ভাষা সব ধরনের কাজের উপযোগী তা সাধারণ কাজের ভাষা নামে পরিচিত। যেমন- BASIC, PASCAL, C ইত্যাদি।

বিশেষ কাজের ভাষা (Special Purpose Language) : যেসব প্রোগ্রামিং ভাষা বিশেষ বিশেষ কাজের উপযোগী তা বিশেষ কাজের ভাষা নামে পরিচিত। যেমন: COBOL, ALGOL, FORTRAN ইত্যাদি।

উচ্চস্তরের ভাষার সুবিধা: 

·         উচ্চস্তরের ভাষা মানুষের ভাষা যেমন- ইংরেজি ভাষার কাছাকাছি। তাই শেখা সহজ ফলে এই ভাষা ব্যবহার করে প্রোগ্রাম লেখা সহজ লিখতে সময় কম লাগে।

·         এতে ভুল হবার সম্ভবনা কম থাকে এবং প্রোগ্রামের ত্রুটি বের করে তা সংশোধন করা অর্থাৎ ডিবাগিং সহজ।

·         এই ভাষায় প্রোগ্রাম লেখার জন্য কম্পিউটারের ভেতরের সংগঠন সম্পর্কে ধারণা থাকার প্রয়োজন নেই।

·         এক মডেলের কম্পিউটারের জন্য লেখা প্রোগ্রাম অন্য মডেলের কম্পিউটারে চলে অর্থাৎ যন্ত্র নির্ভর নয়।

উচ্চস্তরের ভাষার অসুবিধা:

·         উচ্চস্তরের ভাষার অসুবিধা হচ্ছে এই ভাষার সাহায্যে কম্পিউটারের সাথে সরাসরি যোগাযোগ করা যায় না।

·         এই ভাষায় লেখা প্রোগ্রামকে অনুবাদ করে কম্পিউটারকে বুঝিয়ে দিতে হয়। অর্থাৎ অনুবাদক প্রোগ্রামের প্রয়োজন হয়।

·         বেশি মেমোরি প্রয়োজন হয়।

উচ্চস্তরের ভাষার ব্যবহার:

·         বড় এ্যাপ্লিকেশন তৈরির কাজে।

·         জটিল গাণিতিক হিসাব-নিকাশে ব্যবহৃত সফটওয়্যার তৈরি করতে।

·         এ্যাপ্লিকেশন প্যাকেজ সফটওয়্যার তৈরিতে

·         বিভিন্ন ধরনের অটোমেটিক প্রসেস কন্ট্রোলের কাজে।

 

জনপ্রিয় কিছু উচ্চস্তরের প্রোগ্রামিং ভাষার পরিচিতিঃ

সি (C): সিপ্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড বা প্রোসিডিউর প্রোগ্রামিং ভাষা। মিড লেভেল ল্যাঙ্গুয়েজ হিসেবেসি’ অত্যন্ত জনপ্রিয়।ডেনিশ রিচি” ‘সি’ প্রোগ্রামিং ভাষার জনক।সি’ নামটা এসেছে মার্টিন রিচার্ডস (Martins Richards) এর উদ্ভাবিত বিসিপিএল (BCPL-Basic Combined Programming Language) ভাষা থেকে। BCPL সংক্ষেপে B নামে পরিচিত ছিল। পরে B এর উন্নয়নের ফলে C এর বিকাশ ঘটে।

সি++(C++): ১৯৮০ সালে Bjarne Stroustrup বেল ল্যাবরেটরিতে C ভাষার বৈশিষ্ট্যের সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর বৈশিষ্ট্য যুক্ত করে নতুন এক প্রোগ্রামিং ভাষা তৈরি করেন যা C++ নামে পরিজায়। এই ভাষাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা বলা হয়। এই ভাষার সাহায্যে বিভিন্ন সিস্টেম সফটওয়্যার, অ্যাপ্লিকেশন সফটওয়্যার, ডিভাইস ড্রাইভার ইত্যাদি তৈরি করা যায়।

জাভাঃ সান মাইক্রোসিস্টেম কোম্পানি জাভা প্রোগ্রামিং ভাষাটি তৈরি করেন। James Gosling কে জাভা প্রোগ্রামিং ভাষার জনক বলা হয়। এটি একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। বর্তমান যুগে জাভার জনপ্রিয়তার মূল কারণ হল এই ভাষা ব্যবহার করে লেখা প্রোগ্রাম যেকোন অপারেটিং সিস্টেমে চালানো যায়। এই প্রোগ্রামিং ভাষা ব্যবহার করে ওয়েব অ্যাপ্লিকেশন, ডেস্কটপ অ্যাপ্লিকেশন, মোবাইল অ্যাপ্লিকেশন ইত্যাদি তৈরি করা যায়।

পাইথনঃ ১৯৯১ সালে Guido Van Rossum পাইথন প্রোগ্রামিং ভাষা তৈরি করেন। এই ভাষা একই সাথে  অবজেক্ট ওরিয়েন্টেড স্ট্রাকচার্ড প্রোগ্রামিং ভাষার বৈশিষ্ট্য সাপোর্ট করে।

ভিজুয়্যাল বেসিকঃ ভিজুয়্যাল বেসিক একটি ইভেন্ট ড্রাইভেন প্রোগ্রামিং ডিজাইন ভিত্তিক ভাষা। এটি মাইক্রোসফট তৈরি করে। এই ভাষা ব্যবহার করে খুব সহজেই কাস্টমাইজড অ্যাপ্লিকেশন সফটওয়্যার তৈরি করা যায়।

অ্যালগলঃ  এর পূর্ণনাম Algorithmic Language এটি ব্যবহৃত হতো মূলত বৈজ্ঞানিক গবেষণায় বিভিন্ন সমস্যার সমাধানে।

ফোরট্রানঃ Fortran এর অর্থ Formula Translator যা উচ্চস্তর প্রোগ্রামিং ভাষাগুলোর মধ্যে সবচেয়ে আদিমতম ভাষা। IBM এর গবেষক জন বাকাস IBM মেইনফ্রেম কম্পিউটার এর জন্য এটি তৈরি করেন। এটি গাণিতিক জটিল হিসাব-নিকাশের জন্য এবং প্রকৌশল বিজ্ঞানে গবেষণার কাজে বেশ জনপ্রিয়  

ওরাকলঃ  ওরাকল একটি RDBMS(Relational Database Management System) সফটওয়্যার যা ওরাকল কর্পোরেশন তৈরি করে। এটি ডেটাবেজ সফটওয়্যারগুলোর মধ্যে সবচেয়ে জনপ্রিয়।

মধ্যমস্তরের ভাষাঃ যে প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার সুবিধা যেমন- বিট পর্যায়ের প্রোগ্রামিং বা সিস্টেম সফটওয়্যার  এর মাধ্যমে হার্ডওয়্যার নিয়ন্ত্রণ এবং উচ্চস্তরের ভাষার সুবিধা যেমন- অ্যাপ্লিকেশন সফটওয়্যার তৈরি করা যায় তাকে মধ্যম স্তরের ভাষা বলা হয়। মধ্যম স্তরের ভাষার উদাহরণ হল – C, Forth, Dbase, WordStar ইত্যাদি।

চতুর্থ প্রজন্মের ভাষা(4th Generation Language-4GL): 4GL এর পূর্ণরূপ Fourth Generation Language চতুর্থ প্রজন্মের ভাষাকে অতি উচ্চ স্তরের ভাষা বলা হয়। চতুর্থ প্রজন্মের ভাষা হলো ডেটাবেজ সংক্রান্ত ভাষা। অর্থাৎ এই প্রজন্মের ভাষার সাহায্যে ডেটাবেজ তৈরি, আপডেট, ডিলেট সহ ডেটাবেজ সম্পর্কিত সকল কাজ সম্পাদন করা যায়। এই প্রজন্মের ভাষাকে non-procedural বা Functional Language বলা হয়। কারণ এই প্রজন্মের ভাষার ব্যবহারের ক্ষেত্রে যে তথ্যাবলি দরকার কেবল তা বলে দিলেই হয়, কীভাবে কুয়েরি করা যাবে তা বলার দরকার হয় না। এই প্রজন্মের ভাষার উদাহরণ হল  SQL, Oracle ইত্যাদি।

পঞ্চম প্রজন্মের ভাষা(5th Generation Language-5GL): 5GL এর পূর্ণরূপ Fifth Generation Language পঞ্চম প্রজন্মের ভাষাকে স্বাভাবিক ভাষা (Natural Language) বলা হয়। Artificial Intelligence বা কৃত্রিম বুদ্ধিমত্তা নির্ভর যন্ত্র তৈরিতে এই প্রজন্মের ভাষা ব্যবহৃত হয়। পঞ্চম প্রজন্মের ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তরের জন্য ইন্টেলিজেন্ট কম্পাইলার ব্যবহৃত হয়। এই প্রজন্মের ভাষা ব্যবহার করে মানুষ যন্ত্রকে মৌখিক নির্দেশ দিতে পারে। পঞ্চম প্রজন্মের ভাষার উদাহরণ হচ্ছে PROLOG(PROgramming LOGic), LISP, Mercury  ইত্যাদি।

 

 

 

 

পঞ্চম অধ্যায় পাঠ-: অনুবাদক প্রোগ্রাম (অ্যাসেম্বলার, কম্পাইলার, ইন্টারপ্রেটার)

 

অনুবাদক প্রোগ্রামঃ যে প্রোগ্রাম উৎস(Source) প্রোগ্রামকে বস্তু(Object) প্রোগ্রামে রূপান্তর করে তাকে অনুবাদক প্রোগ্রাম বলে। মেশিন ভাষায় লেখা প্রোগ্রামকে বলা হয় বস্তু প্রোগ্রাম (Object Program) এবং অন্য যেকোনো ভাষায় লেখা প্রোগ্রামকে বলা হয় উৎস প্রোগ্রাম (Source program)

অনুবাদক প্রোগ্রাম উৎস প্রোগ্রামকে ইনপুট হিসেবে নেয় এবং বস্তু প্রোগ্রামকে আউটপুট হিসেবে দেয়। প্রোগ্রাম অনুবাদের সময় উৎস প্রোগ্রামে যদি কোন ভুল থাকে, তবে তা সংশোধন করার জন্য ব্যবহারকারীকে Error Message দেয়।

অনুবাদক প্রোগ্রামের প্রকারভেদ- 

·         অ্যাসেম্বলার(Assembler)

·         কম্পাইলার(Compiler)

·         ইন্টারপ্রেটার(Interpreter)

 

অ্যাসেম্বলারঃ অ্যাসেম্বলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করে। এটি অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রাম বা নেমোনিক কোডকে যান্ত্রিক ভাষায় রূপান্তর করে। এক্ষেত্রে  প্রোগ্রামে কোনো ভুল থাকলে Error Message দেয়।

প্রধান কাজ সমূহ:

·         নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করা।

·         সাংকেতিক ঠিকানাকে মেশিন ভাষার ঠিকানায় রূপান্তর করা।

·         সব নির্দেশ ডেটা প্রধান মেমোরিতে রাখা।

·           প্রোগ্রামে কোনো ভুল থাকলে Error Message দেওয়া।

·         প্রোগ্রামের সকল ভুল সংশোধনের পর প্রোগ্রাম কনট্রোলকে জানানো ইত্যাদি।

 

কম্পাইলারঃ কম্পাইলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের ভাষায় লেখা প্রোগ্রামকে মেশিন বা যান্ত্রিক ভাষায় রূপান্তর করে। অর্থাৎ উৎস প্রোগ্রামকে বস্তু প্রোগ্রামে রূপান্তর করে। কম্পাইলার দুই ধাপে অনুবাদকের কাজ সম্পন্ন করে

প্রথম ধাপে কম্পাইলার উৎস প্রোগ্রামটি পড়ে এবং বস্তু প্রোগ্রামে রূপান্তর করে। এই ধাপে, সোর্স প্রোগ্রামে যদি কোন ভুল থাকে, তবে তা সংশোধন করার জন্য কম্পাইলার ব্যবহারকারীকে Error Message দেয়। এই Error Message কে কম্পাইলড টাইম ডায়াগনোস্টিক Error Message বলে। একবার প্রোগ্রাম কম্পাইল হয়ে গেলে পরবর্তীতে আর কম্পাইল করার প্রয়োজন হয় না। দ্বিতীয় ধাপে উপাত্ত বা ডেটার ভিত্তিতে ফলাফল প্রদর্শনের জন্য বস্তু প্রোগ্রামকে নির্বাহ করানো হয়।

কম্পাইলারের কাজঃ 

·         উৎস প্রোগ্রামের স্টেটমেন্ট সমূহকে বস্তু প্রোগ্রামে বা মেশিন ভাষায় রূপান্তর।

·         সংশ্লিষ্ট সাব-রুটিন এর সাথে সংযোগের ব্যবস্থা প্রদান।

·         প্রধান মেমোরির পরিসর চিহ্নিতকরণ।

·         প্রোগ্রাম ভুল থাকলে অনুবাদের সময় ভুলের তালিকা প্রণয়ন।

কম্পাইলারের সুবিধাঃ  

·         কম্পাইলার সম্পূর্ণ প্রোগ্রামটিকে একসাথে অনুবাদ করে। ফলে প্রোগ্রাম নির্বাহ দ্রুত হয়।

·         কম্পাইলারের মাধ্যমে রূপান্তরিত প্রোগ্রাম সম্পূর্ণরূপে মেশিন ভাষায় রূপান্তরিত হয়।

·         একবার প্রোগ্রাম কম্পাইল করা হলে পরবর্তিতে আর কম্পাইলের প্রয়োজন হয় না।

কম্পাইলারের অসুবিধাঃ  

·         কম্পাইলার প্রোগ্রামের সবগুলো ভুল একসাথে প্রদর্শন করে ফলে প্রোগ্রাম সংশোধনে বেশি সময় লাগে।

·          প্রোগ্রাম ডিবাগিং টেস্টিং এর কাজ ধীরগতি সম্পন্ন।

·          কম্পাইলার বড় ধরনের প্রোগ্রাম হওয়ায় ইহা সংরক্ষণে মেমোরিতে বেশি জায়গা প্রয়োজন।

 

ইন্টারপ্রেটারঃ ইন্টারপ্রেটারও কম্পাইলারের মতো এক ধরনের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের ভাষায় লেখা প্রোগ্রামকে লাইন বা লাইন মেশিন বা যান্ত্রিক ভাষায় রূপান্তর করে। এক্ষেত্রে কম্পাইলারের সাথে পার্থক্য হল, কম্পাইলার সম্পূর্ণ সোর্স প্রোগ্রামকে একসাথে অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং সর্বশেষ ফলাফল প্রদান করে কিন্তু ইন্টারপ্রেটার সোর্স প্রোগ্রামটিকে লাইন-বাই-লাইন অবজেক্ট প্রোগ্রামে রূপান্তর করে এবং তাৎক্ষণিক ফলাফল প্রদর্শন করে।

ইন্টারপ্রেটারের কাজঃ 

·         উৎস প্রোগ্রামের স্টেটমেন্ট সমূহকে বস্তু প্রোগ্রামে বা মেশিন ভাষায় রূপান্তর।

·         সংশ্লিষ্ট সাব-রুটিন এর সাথে সংযোগের ব্যবস্থা প্রদান।

·         প্রধান মেমোরির পরিসর চিহ্নিতকরণ।

·         প্রোগ্রাম ভুল থাকলে অনুবাদের সময় ভুলের তালিকা প্রণয়ন।

ইন্টারপ্রেটারের সুবিধাঃ 

·           ইন্টারপ্রেটার এর সবচেয়ে বড় সুবিধা হল এটি ইউজার ফ্রেন্ডলি।

·         এটি ব্যবহারে প্রোগ্রামের ভুল সংশোধন করা এবং পরিবর্তন করা সহজ হয়।

·         ইন্টারপ্রেটার প্রোগ্রাম আকারে ছোট হয় বলে মেমোরিতে কম জায়গা দখল করে।

·         এটি সাধারণত ছোট কম্পিউটারে ব্যবহার করা হয়।

 ইন্টারপ্রেটারের অসুবিধাঃ 

·         ইন্টারপ্রেটার যেহেতু প্রোগ্রাম লাইন-বাই-লাইন অনুবাদ করে, তাই অনুবাদ করতে কম্পাইলারের তুলনায় বেশি সময় প্রয়োজন।

·         ইন্টারপ্রেটার এর মাধ্যমে রূপান্তরিত প্রোগ্রাম সম্পূর্ণরূপে মেশিন প্রোগ্রামে রূপান্তরিত হয় না।

·         প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় অনুবাদ করার প্রয়োজন হয়।

 

 

 

 

কম্পাইলার এবং ইন্টারপ্রেটারের মধ্যে পার্থক্যঃ 

কম্পাইলার

ইন্টারপ্রেটার

কম্পাইলার একটি অনুবাদক প্রোগ্রাম যা উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা একটি সম্পূর্ণ প্রোগ্রামকে একসাথে অনুবাদ করে।

ইন্টারপ্রেটারও এক ধরণের অনুবাদক প্রোগ্রাম যা উচ্চস্তরের প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামকে লাইন বাই লাইন অনুবাদ করে।

ফলে প্রোগ্রাম নির্বাহের জন্য কম সময় প্রয়োজন।

ফলে প্রোগ্রাম নির্বাহের জন্য বেশি সময় প্রয়োজন।

কম্পাইলার দ্বারা একটি প্রোগ্রাম একবার অনুবাদ করা হলে প্রতিবার কাজের পূর্বে পুনরায় অনুবাদ করার প্রয়োজন হয় না।

ইন্টারপ্রেটার দ্বারা একটি প্রোগ্রাম অনুবাদ করা হলে প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় অনুবাদ করার প্রয়োজন হয়।

কম্পাইলার দ্বারা একটি প্রোগ্রাম অনুবাদ করলে পূর্ণাঙ্গ যান্ত্রিক প্রোগ্রামে রূপান্তরিত হয়।

 ইন্টারপ্রেটার দ্বারা একটি প্রোগ্রাম অনুবাদ করলে পূর্ণাঙ্গ যান্ত্রিক প্রোগ্রামে রূপান্তরিত হয় না। 

ডিবাগিং এবং টেস্টিং এর ক্ষেত্রে ধীর গতি সম্পন্ন।

ডিবাগিং টেস্টিং এর ক্ষেত্রে দ্রুত গতি সম্পন্ন।

 

 

পঞ্চম অধ্যায় পাঠ- প্রোগ্রামের সংগঠন এবং প্রোগ্রাম তৈরির ধাপসমূহ।

 

প্রোগ্রাম সংগঠনঃ প্রতিটি পূর্ণাঙ্গ প্রোগ্রামের তিনটি অপরিহার্য অংশ থাকে, যা পারস্পারিক সম্পর্কের মাধ্যমে একটি পূর্ণাঙ্গ প্রোগ্রাম গঠিত হয়। যেমন-

·         ইনপুট: প্রতিটি প্রোগ্রামে প্রসেস বা প্রক্রিয়া করার জন্য ইনপুট নেওয়ার ব্যবস্থা থাকতে হবে।

·         প্রসেস বা প্রক্রিয়া: ব্যবহারকারীর কাছ থেকে ইনপুট নিয়ে প্রসেস বা প্রক্রিয়া করার ব্যবস্থা থাকতে হবে।

·         আউটপুট: ইনপুট নিয়ে প্রসেস করে আউটপুট দেখানোর ব্যবস্থাও থাকতে হবে।

 

একটি আদর্শ প্রোগ্রামের নিমোক্ত বৈশিষ্ট্য সমূহ থাকতে হয়ঃ 

·         প্রোগ্রাম অবশ্যই সহজ বোধগম্য হতে হবে, যাতে অন্যকোন প্রোগ্রামার পরবর্তীতে আপডেট করতে পারে।

·         প্রোগ্রামটি রান করার জন্য সময় মেমোরি নূনতম হতে হবে।

·         প্রোগ্রাম সহজে সম্প্রসারণযোগ্য হতে হবে।

·         ডিবাগিং এবং টেস্টিং করা সহজতর হতে হবে।

·         প্রোগ্রাম সহজে রক্ষণাবেক্ষণযোগ্য হতে হবে।

 

প্রোগ্রাম তৈরির ধাপসমূহঃ  

একটি প্রোগ্রাম তৈরির মাধ্যমে সাধারণত একটি নির্দিস্ট সমস্যার সমাধান করা হয়ে থাকে। তাই একটি প্রোগ্রাম তৈরি করার জন্য কতগুলো ধাপ অনুসরণ করলে সমস্যাটি সহজে সমাধান করা যায়। ধাপগুলো নিমোক্ত আলোচনা করা হল-

·         সমস্যা নির্দিষ্টকরণ

·         সমস্যা বিশ্লেষণ

·         প্রোগ্রাম ডিজাইন

·         প্রোগ্রাম উন্নয়ন

·         প্রোগ্রাম বাস্তবায়ন

·         ডকুমেন্টশন

·         প্রোগ্রাম রক্ষণাবেক্ষণ

সমস্যা নির্দিষ্টকরণঃ একটি প্রোগ্রাম তৈরির মূল লক্ষ হল কোন একটি সমস্যার সমাধান করা। তাই প্রোগ্রাম তৈরির মাধ্যমে কোন সমস্যা সমাধানের পূর্বে সমস্যাটি অবশ্যই ভালোভাবে চিহ্নিত করতে হবে। সমস্যা নির্দিষ্টকরণের ক্ষেত্রে সমস্যাটি কী, সমস্যার বিষয়বস্তু কী ইত্যাদি বিষয়ে জানতে হবে। ভালভাবে সমস্যা নির্দিষ্ট করতে না পারলে প্রোগ্রাম যতই উন্নত হোক না কেন কাংখিত সমাধান পাওয়া সম্ভব না।

সমস্যা বিশ্লেষণঃ সমস্যা নির্দিষ্ট করার পরের ধাপটি হল সমস্যা বিশ্লেষণ। সমস্যাটি কীভাবে সমাধান করা যায়, কতভাবে সমাধান করা যায়, যদি একাধিক ভাবে সমাধান করা যায় তাহলে কোনটি সবচেয়ে ইফেক্টিভ সমাধান তা বিশ্লেষণ করাই হল সমস্যা বিশ্লেষণ। এক্ষেত্রে সমস্যাটিকে ছোট ছোট অংশে ভাগ করে সমাধান করার চেষ্টা করা হয়। সমস্যা সমাধানের ক্ষেত্রে কতকগুলো বিষয় এই ধাপে বিবেচনা করা হয়ে থাকে। বিষয়গুলো হল-

·         কোন বিষয়গুলো প্রোগ্রাম ডেভেলপমেন্টের জন্য প্রয়োজন।

·         কোন পদ্ধতিতে প্রোগ্রাম ডিজাইন করা হবে।

·         প্রোগ্রাম তৈরির ক্ষেত্রে কোন প্রোগ্রামিং ভাষাটি উপযুক্ত হবে।

·         সমস্যায় কোন ধরনের ইনপুট এবং কোন ধরনের আউটপুট হবে ইত্যাদি।

প্রোগ্রাম ডিজাইনঃ প্রোগ্রাম ডিজাইন বলতে বুঝায়- সমস্যা বিশ্লেষণ ধাপে সমস্যাটিকে যে ছোট ছোট অংশে ভাগ করা হয়েছে তাদের পারস্পরিক সম্পর্ক সামগ্রিক সমাধান বের করে তার অ্যালগোরিদম অথবা ফ্লোচার্ট তৈরি করা।

প্রোগ্রাম উন্নয়নঃ সমস্যা সমাধানের জন্য যে অ্যালগরিদম বা ফ্লোচার্ট তৈরি করা হয়েছে তা কোনো একটি উচ্চস্তরের প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামে রূপদান করাকে বলা হয় প্রোগ্রাম উন্নয়ন। এক্ষেত্রে উচ্চস্তরের প্রোগ্রামিং ভাষা হিসেবে C, C++, java, python ইত্যাদি ব্যবহৃত হয়।

প্রোগ্রাম বাস্তবায়নঃ প্রোগ্রাম বাস্তবায়ন ধাপে প্রোগ্রাম এর টেস্টিং এবং ডিবাগিং করা হয়ে থাকে।

·         টেস্টিং

·         ডিবাগিং

টেস্টিংঃ প্রোগ্রাম টেস্টিং হচ্ছে, কোনো প্রোগ্রাম উন্নয়ন বা কোডিং সম্পন্ন করার পর প্রোগ্রামটির যে ধরনের আউটপুট বা ফলাফল হওয়া উচিৎ তা ঠিকমতো আসছে কিনা বা রান করছে কিনা তা যাচাই করা। এই ধাপে ভিন্ন ভিন্ন ইনপুট দিয়ে আউটপুটের অবস্থা পর্যবেক্ষণ করা হয়। এক্ষেত্রে যদি কোন অসঙ্গতি পাওয়া যায় তবে বুঝতে হবে প্রোগ্রাম কোডিংয়ের কোথাও ভুল হয়েছে। প্রোগ্রামে সাধারণত নিচের ভুলগুলো পরিলক্ষিত হয়। যথা:

·         ব্যাকরণগত ভুল

·         যৌক্তিক ভুল

·         রান টাইম বা এক্সিকিউশন টাইম ভুল

সিনট্যাক্স ভুল/ব্যাকরণগত ভুলঃ প্রোগ্রামের মধ্যে প্রোগ্রামিং ভাষার ব্যাকরণগত যেসব ভুল থাকে তাকে বলা হয় সিনট্যাক্স ভুল। যেমন- বানান ভুল,কমা, ব্র্যাকেট ঠিকমতো না দেয়া, কোনো চলকের মান না জানানো প্রভৃতি। এসব ভুল সংশোধন করা খুবই সহজ, কারণ সিনট্যাক্স ভুল হলে অনুবাদক প্রোগ্রাম ভুলের বার্তা ছাপায়। যেমন- প্রোগ্রামে printf()  কমান্ডের পরিবর্তে print() লেখা। সিনট্যাক্স ভুলকে কম্পাইল টাইম ভুলও বলা হয়।

লজিক্যাল  বা যৌক্তিক ভুলঃ প্রোগ্রামে যুক্তির ভুল থাকলে তাকে বলে লজিক্যাল ভুল। সাধারণত সমস্যা ঠিকমতো না বুঝার জন্যই ভুল হয়। যেমন- a>b এর স্থলে a<b বা s=a+b এর স্থানে s=a-b লিখলে লজিক্যাল ভুল হয়।  লজিক্যাল  ভুলের ক্ষেত্রে একটি উত্তর পাওয়া যায় যদিও তা ভুল। এক্ষেত্রে অনুবাদক প্রোগ্রাম কোনো ভুলের বার্তা ছাপায় না বলে লজিক্যাল  ভুল সংশোধন করা খুব কঠিন।

রান টাইম বা এক্সিকিউশন টাইম ভুলঃ রান টাইম ভুল প্রোগ্রাম এক্সিকিউশনের সময় ঘটে। যেমন- শূন্য দিয়ে ভাগ করা কিংবা ঋণাত্বক সংখ্যার বর্গমূল বা লগারিদম বের করা, ডাইনামিক মেমোরি অ্যালোকেশনের সময় অপর্যাপ্ত মেমোরি থাকা ইত্যাদি। অনুবাদক প্রোগ্রাম অনুবাদ করার সময় এই ধরণের ভুল নির্নয় করতে পারে না। এই ধরণের ভুল সম্বলিত প্রোগ্রাম রান করবে কিন্তু প্রোগ্রাম বন্ধ হয়ে যেতে পারে। রান টাইম ভুল নির্নয় এবং সংশোধন করা কঠিন। যৌক্তিক ভুল এক ধরণের রান-টাইম ভুল কারণ এই ধরণের ভুল কম্পাইলার নির্নয় করতে পারে না বা ডিবাগিং এর মাধ্যমে নির্নয় করা যায় না।

ডিবাগিংঃ আমরা প্রোগ্রাম টেস্টিং এর ক্ষেত্রে প্রোগ্রামে বিভিন্ন ধরনের ভুল সম্পর্কে জেনেছি। প্রোগ্রামে যেকোনো ভুল চিহ্নিত করতে পারলে সেই ভুলকে বলা হয় বাগ (Bug) উক্ত ভুল বা Bug কে সমাধান করাকে বলা হয় ডিবাগ (Debug) অর্থাৎ প্রোগ্রামের ভুল খুঁজে বের করে তা সমাধান করার পদ্ধতিকে বলা হয় ডিবাগিং। এক্ষেত্রে ডিবাগিং এর মাধ্যমে Syntax Error সমাধান করা সহজ কিন্তু Logical Error এবং Run-time Error সমাধান করা তুলনামূলক জটিল। ১৯৪৫ সালে মার্ক- কম্পিউটারের ভিতরে একটি মথপোকা ঢুকে বাসা বাধে ফলে কম্পিউটারটি অকার্যকর হয়ে যায়। তখন থেকে ডিবাগিং কথাটির উৎপত্তি।

ডকুমেন্টেশনঃ প্রোগ্রাম ডেভেলপমেন্টের সময় ভবিষ্যতে প্রোগ্রাম রক্ষণাবেক্ষণের কথা ভেবে প্রোগ্রামের বিভিন্ন অংশের বিবরণ কমেন্ট হিসেবে লিখে রাখতে হয়। প্রোগ্রামের বিভিন্ন অংশের বিবরণ কমেন্ট হিসেবে লিপিবদ্ধ করাকে প্রোগ্রাম ডকুমেন্টেশন বলে। প্রোগ্রামের ডকুমেন্টেশন লেখা থাকলে যেকোন প্রোগ্রামার খুব সহজেই প্রোগ্রামের আপডেট করতে পারে। প্রোগ্রাম রক্ষণাবেক্ষণে ডকুমেন্টেশনের গুরুত্ব অপরিসীম। ডকুমেন্টেশনে নিম্নলিখিত বিষয়সমূহ অন্তর্ভুক্ত করা হয়ঃ

·         . প্রোগ্রামের বর্ণনা।

·         . অ্যালগোরিদম বা ফ্লোচার্ট

·         . লিখিত প্রোগ্রাম

·         . নির্বাহের জন্য প্রয়োজনীয় কাজের তালিকা

·         . ফলাফল

প্রোগ্রাম রক্ষণাবেক্ষণঃ সময়ের সাথে পরিবেশ-পরিস্থিতি পরিবর্তনের কারণে প্রোগ্রামের পরিবর্তন বা আধুনিকীকরণ করা প্রয়োজন হয়। ধরনের কাজ রক্ষণাবেক্ষণ ধাপের অন্তর্ভুক্ত। যেমন-

·         ভুল সংশোধন

·         কর্মক্ষমতা বৃদ্ধি

·         প্রোগ্রামের নতুন ফিচার যুক্ত করা

·         অপ্রয়োজনীয় অংশ বাদ দেওয়া ইত্যাদি।

 

 

পঞ্চম অধ্যায় পাঠ- অ্যালগোরিদম, ফ্লোচার্ট এবং সূডোকোড।

 

অ্যালগোরিদমঃ কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিসম্মত সসীম সংখ্যক পর্যায়ক্রমিক ধারা বর্ননাকে একত্রে  অ্যালগোরিদম বলা হয়। কোনো সমস্যাকে কম্পিউটার প্রোগ্রামিং দ্বারা সমাধান করার পূর্বে কাগজে-কলমে সমাধান করার জন্যই অ্যালগোরিদম ব্যবহার করা হয়। আরব গনিতবিদ আল খারিজমী এর নাম অনুসারে অ্যালগোরিদম নামকরন করা হয়েছে।

অ্যালগোরিদম তৈরির শর্তঃ 

·         ইনপুট এবং আউটপুট স্পষ্টভাবে নির্ধারন করতে হবে।

·         অ্যালগোরিদমের প্রত্যেকটি ধাপ স্পষ্ট হতে হবে যাতে সহজে বোঝা যায়।

·         সসীম সংখ্যক ধাপে সমস্যার সমাধান হতে হবে।

·         অ্যালগোরিদম ব্যাপকভাবে প্রয়োগ উপযোগী হতে হবে।

·          অ্যালগোরিদমে কোন কম্পিউটার কোড থাকা যাবে না। বরং অ্যালগোরিদম এমনভাবে লিখতে হবে যা একই ধরণের প্রোগ্রামিং ভাষার জন্য ব্যবহার করা যাবে।

অ্যালগোরিদম তৈরির সুবিধাঃ 

·         এটি একটি ধাপ-ভিত্তিক উপস্থাপনা ফলে সহজে প্রোগ্রামের উদ্দেশ্য বোঝা যায়।

·          একটি অ্যালগরিদম একটি নির্দিষ্ট পদ্ধতি ব্যবহার করে।

·          এটি কোনও প্রোগ্রামিং ভাষার উপর নির্ভরশীল নয়, তাই প্রোগ্রামিং জ্ঞান ছাড়াই যেকারো পক্ষে এটি বোঝা সহজ।

·          একটি অ্যালগরিদমের প্রতিটি ধাপের নিজস্ব লজিকাল ক্রম আছে তাই এটি ডিবাগ করা সহজ।

·         প্রোগ্রাম পরিবর্তন পরিবর্ধনে সহায়তা করে।

দুটি সংখ্যার গড় নির্ণয়ের অ্যালগোরিদম-

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a b চলকের মান গ্রহণ করি।

·         ধাপ-: avg = (a+b)/2 নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে avg চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

ফ্লোচার্ট বা প্রবাহ চিত্রঃ যে চিত্রভিত্তিক পদ্ধতিতে বিশেষ কতকগুলো চিহ্নের সাহায্যে কোনো একটি নির্দিষ্ট সমস্যার সমাধান করা হয় তাকে ফ্লোচার্ট বলা হয়। অন্যভাবে বলা যায়, অ্যালগোরিদমের চিত্ররূপই হল ফ্লোচার্ট। ফ্লোচার্টের সাহায্যে প্রোগ্রাম বোঝা সহজ হয় বলে এটি প্রোগ্রামার ব্যবহারকারীর মাঝে সংযোগ রক্ষার জন্য ব্যবহৃত হয়।

ফ্লোচার্ট তৈরি করার নিয়মাবলীঃ 

·         প্রতিটি ফ্লোচার্টের অবশ্যই একটি শুরু এবং শেষ থাকবে।

·          নিয়ন্ত্রণ প্রবাহ অবশ্যই টপ থেকে শুরু হবে।

·          নিয়ন্ত্রণ প্রবাহ অবশ্যই বোটম থেকে শেষ হবে।

·         প্রচলিত চিহ্ন বা প্রতীক ব্যবহার করে ফ্লোচার্ট তৈরি করতে হবে।

·         তীর চিহ্ন দিয়ে নিয়ন্ত্রণ প্রবাহ দেখাতে হবে।

·         ফ্লোচার্টে কোন প্রোগ্রামিং ভাষা ব্যবহার করা যাবে না।

·         চিহ্ন বা প্রতীক গুলো ছোট বড় হলে ক্ষতি নাই তবে আকৃতি ঠিক থাকতে হবে।

ফ্লোচার্টের সুবিধাঃ

·          একটি প্রোগ্রামের যুক্তির মধ্যে যোগাযোগের চমকার উপায় হলো ফ্লোচার্ট

·         ২। ফ্লোচার্ট ব্যবহার করে সমস্যা বিশ্লেষণ করা সহজ। 

·         ৩। প্রোগ্রাম উন্নয়নের সময়, ফ্লোচার্ট একটি ব্লুপ্রিন্টের ভূমিকা পালন করে, যা প্রোগ্রামের উন্নয়ন প্রক্রিয়াকে আরও
সহজ করে তোলে।

·         ৪। ফ্লোচার্ট এর সাহায্যে প্রোগ্রাম বা সিস্টেম রক্ষণাবেক্ষণ সহজ হয়। 

·         ৫। ফ্লোচার্টকে যেকোন প্রোগ্রামিং ভাষার কোডে রূপান্তর করা সহজ।

 

ফ্লোচার্টের প্রকারভেদঃ ফ্লোচার্টকে প্রধানত দুইভাগে ভাগ করা যায়। যথা-

·         সিস্টেম ফ্লোচার্ট – সিস্টেম ফ্লোচার্টে ডেটা গ্রহণ, প্রক্রিয়াকরণ, সংরক্ষণ এবং ফলাফল প্রদর্শনের প্রবাহ দেখানো হয়। কোন সিস্টেমের কার্যপ্রনালী বোঝাতে সিস্টেম ফ্লোচার্ট ব্যবহৃত হয়।

·         প্রোগ্রাম ফ্লোচার্ট – প্রোগ্রাম ফ্লোচার্টে প্রোগ্রামের বিভিন্ন ধাপের বিস্তারিত বিবরণ দেওয়া হয়। এছাড়া প্রোগ্রামের ভূল নির্ণয় সংশোধনে প্রোগ্রাম ফ্লোচার্ট ব্যবহৃত হয়।

ফ্লোচার্ট গঠনের মৌলিক ধরণ বা স্ট্রাকচারঃ 

·         সরল অনুক্রম (Simple Sequence)  এই স্ট্রাকচারে প্রোগ্রামের নির্দেশগুলো সরল অনুক্রমে ধারাবাহিকভাবে নির্বাহ হয়ে থাকে।

·         নির্বাচন বা সিলেকশন (Selection)- কোন একটি শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে সিদ্ধান্ত নিয়ে কার্য নির্বাহের ক্ষেত্রে এই স্ট্রাকচার ব্যবহৃত হয়।

·         পুনরাবৃত্তি বা লুপ (Loop)- একই ধরণের কাজ পুনরাবৃত্তি করার জন্য এই স্ট্রাকচার ব্যবহৃত হয়।

·         জাম্প (Jump)- এই স্ট্রাকচারে প্রোগ্রামের প্রবাহ সরল অনুক্রমের পরিবর্তে কোন শর্তের সত্য বা মিথ্যার উপর ভিত্তি করে উপরের বা নিচের নির্দিস্ট কোন নির্দেশ নির্বাহ হতে থাকে।

ফ্লোচার্টে ব্যবহৃত প্রতিক সমূহ এবং এদের ব্যবহারঃ  

প্রতিক

প্রতিকের নাম 

ব্যবহার

 ডিম্বক (Oval)

এটি ফ্লোচার্টের  শুরু এবং শেষ নির্দেশ করে

সামন্তরিক

ইনপুট নেওয়া আউটপুট প্রদর্শন নির্দেশ করে।

আয়তাকার

এই প্রতীক কোন প্রক্রিয়াকরণ নির্দেশ করে।

হীরক

যখন  শর্তের সাপেক্ষে কোন প্রক্রিয়া সম্পন্ন করতে হয় তখন ব্যবহৃত হয়। এই প্রতীকের মধ্যে শর্ত লেখা হয়।

বৃত্ত

একাদিক শাখা যখন একটি বিন্দুতে মিলিত হয় তখন এই প্রতীক ব্যবহৃত হয়।

তীর চিহ্ন

 প্রবাহের দিক নির্দেশে ব্যবহৃত হয়।

 

 

 

 

 

 

 

 

দুটি সংখ্যার গড় নির্ণয়ের ফ্লোচার্ট-

সূডোকোড (Pseudo Code): একটি প্রোগ্রামের কার্যপ্রণালী বর্ননা বা উপস্থাপনার জন্য ইংরেজি ভাষায় লেখা কতগুলো নির্দেশনার সমষ্টিকে একত্রে সূডোকোড বলে। সূডোকোডকে  অ্যালগোরিদমের পূর্ব-পস্তুতি বা অনেক সময়  অ্যালগোরিদমের বিকল্প হিসেবে বিবেচনা করা হয়। সূডো(Pseudo) একটি গ্রীক শব্দ যার অর্থ হচ্ছে ছদ্ম।

দুটি সংখ্যার গড় নির্ণয়ের সূডোকোড-

·         Start

·         Input a and b

·         avg = (a+b)/2

·         Print avg

·         Stop

 

 

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ- সাধারণ গাণিতিক সমস্যা সম্পর্কিত অ্যালগোরিদম এবং ফ্লোচার্ট।

 

দুইটি সংখ্যা ইনপুট নিয়ে যোগফল নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a b চলকের মান গ্রহণ করি।

·         ধাপ-: c=a+b নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে c চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে যোগফল নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট তৈরি কর।

 

দুইটি সংখ্যা ইনপুট নিয়ে বিয়োগফল নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট।

অ্যালগোরিদমঃ 

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a b চলকের মান গ্রহণ করি।

·         ধাপ-: c=a-b নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে c চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

 

দুইটি সংখ্যা ইনপুট নিয়ে গুণফল নির্নয় করার  অ্যালগোরিদম  ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a b চলকের মান গ্রহণ করি।

·         ধাপ-: c=a×b নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে c চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে গুণফল নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট তৈরি কর।

 

দুইটি সংখ্যা ইনপুট নিয়ে ভাগফল নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট।

অ্যালগোরিদম

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a b চলকের মান গ্রহণ করি।

·         ধাপ-: c=a b নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে c চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে তাদের গড় নির্নয় করার অ্যালগোরিদম  ফ্লোচার্ট তৈরি কর।

 

সেলসিয়াস স্কেলের তাপমাত্রাকে ফারেনহাইট স্কেলের তাপমাত্রায় রুপান্তরের অ্যালগোরিদম  ফ্লোচার্ট।

তাপমাত্রা পরিমাপের বিভিন্ন স্কেলের মধ্যে সম্পর্ক- C/5 = F-32 / 9 = K-273 / 5

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে C চলকে সেলসিয়াস স্কেলের তাপমাত্রা গ্রহণ করি।

·         ধাপ-: F=(9C/5)+32 সমীকরণে C চলকের মান বসিয়ে F চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে F চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

 

 

 

 

 

 

 

ফ্লোচার্টঃ

অনুশীলনঃ সেলসিয়াস স্কেলের তাপমাত্রাকে কেলভিন স্কেলের তাপমাত্রায় রুপান্তরের অ্যালগোরিদম  ফ্লোচার্ট তৈরি কর।

 

ফারেনহাইট স্কেলের তাপমাত্রাকে সেলসিয়াস তাপমাত্রায় রুপান্তরের অ্যালগোরিদম  ফ্লোচার্ট।

তাপমাত্রা পরিমাপের বিভিন্ন স্কেলের মধ্যে সম্পর্ক- C/5 = F-32 / 9 = K-273 / 5

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে F চলকে ফারেনহাইট স্কেলের তাপমাত্রা গ্রহণ করি।

·         ধাপ-: C=((F-32)5)/9 সমীকরণে F চলকের মান বসিয়ে C চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে C চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

 

অনুশীলনঃ ফারেনহাইট স্কেলের তাপমাত্রাকে কেলভিন তাপমাত্রায় রুপান্তরের অ্যালগোরিদম  ফ্লোচার্ট তৈরি কর।

 

ত্রিভুজের ভুমি উচ্চতা দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট।

ত্রিভুজের ভুমি উচ্চতা দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের সূত্র, ক্ষেত্রফল =½×ভূমি×উচ্চতা।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে b এবং h চলকে যথাক্রমে ত্রিভুজের ভূমি উচ্চতার মান গ্রহণ করি।

·         ধাপ-: area=½×b×h সমীকরণে b এবং h চলকের মান বসিয়ে area চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে area চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

 

 

 

 

 

 

 

ফ্লোচার্টঃ

  

ত্রিভুজের তিনটি বাহুর দৈর্ঘ্য যথাক্রমে a, b এবং c দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট।

ত্রিভুজের তিনটি বাহুর দৈর্ঘ্য যথাক্রমে a, b এবং c দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের সূত্র

area= √s(s-a)(s-b)(s-c)  [এখানে s=অর্ধপরিসীমা]

অর্ধপরিসীমা s=(a+b+c)/2

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a, b এবং c চলকে যথাক্রমে ত্রিভুজের তিন বাহুর মান গ্রহণ করি।

·         ধাপ-: s=(a+b+c)/2 সমীকরণে a, b এবং c চলকের মান বসিয়ে ত্রিভুজের অর্ধপরিসীমা s চলকের মান নির্নয় করি।

·         ধাপ-: area= √s(s-a)(s-b)(s-c) সমীকরণের সাহায্যে area চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে area চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

ফ্লোচার্টঃ

 

 

আয়তক্ষেত্রের ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট।

আয়তক্ষেত্রের দৈর্ঘ্য প্রস্থের মান দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের  সূত্র, ক্ষেত্রফল=দৈর্ঘ্য × প্রস্থ

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে l এবং w চলকে যথাক্রমে আয়তক্ষেত্রের দৈর্ঘ্য প্রস্থের মান গ্রহণ করি।

·         ধাপ-area=l×w সমীকরণে l এবং w চলকের মান বসিয়ে area চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে area চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

 

 

 

ফ্লোচার্টঃ

অনুশীলনঃ সামান্তরিকের ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট লেখ।

অনুশীলনঃ বর্গের ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট  লেখ।

 

১০ বৃত্তের ক্ষেত্রফল নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট।

বৃত্তের ব্যাসার্ধের মান দেওয়া থাকলে ক্ষেত্রফল নির্নয়ের  সূত্র, ক্ষেত্রফল=πr2

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে r চলকে বৃত্তের ব্যাসার্ধের মান গ্রহণ করি।

·         ধাপ-: area= πr2 সমীকরণে r চলকের মান বসিয়ে area চলকের মান নির্নয় করি।

·         ধাপ-: ফলাফল হিসেবে area চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

 

 

 

 

 

 

 

ফ্লোচার্টঃ

 

 

পঞ্চম অধ্যায় পাঠ- কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট সম্পর্কিত অ্যালগোরিদম এবং ফ্লোচার্ট সমূহ।

 

কোন একটি পূর্ণ সংখ্যা জোড়/বিজোড় নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

অ্যালগোরিদম:

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকে একটি সংখ্যা গ্রহণ করি।

·         ধাপ-: r = n mod 2 নির্নয় করি।

·         ধাপ-: যদি r= হয়, তাহলে সংখ্যাটি জোড় প্রদর্শন করি এবং ৬নং ধাপে যাই, অন্যথায় ৫নং ধাপে যাই।

·         ধাপ-: সংখ্যাটি বিজোড় প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

 

কোন সংখ্যা ধনাত্মক/ঋণাত্নক নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকে একটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি (n0) হয়, তাহলে সংখ্যাটি ধনাত্নক প্রদর্শন করি এবং ৫নং ধাপে যাই, অন্যথায় ৪নং ধাপে যাই।

·         ধাপ-: সংখ্যাটি ঋনাত্নক  প্রদর্শন করি।

·         ধাপ-: শেষ করি।

 

 

 

 

 

 

 

 

ফ্লোচার্টঃ

 

কোন একটি সাল লিপ ইয়ার(অধিবর্ষ) নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

অধিবর্ষ বা লিপ ইয়ার হচ্ছে একটি বিশেষ বছর, যাতে সাধারণ বছরের তুলনায় একটি দিন বেশি থাকে।জোতির্বৈজ্ঞানিক বছর বা পৃথিবী যে সময়ে সূর্যের চারপাশে একবার ঘুরে আসে তার সময়কাল হচ্ছে প্রায় ৩৬৫ দিন ঘন্টা ৪৮ মিনিট ৪৭ সেকেন্ড, অথচ প্রচলিত গ্রেগরীয় বর্ষপঞ্জিমতে বছর হিসাব করা হয় ৩৬৫ দিনে। এভাবে প্রতিবছর প্রায় ছয় ঘণ্টা সময় গোনার বাইরে থেকে যায় চার বছরে সেটা প্রায় এক দিনের সমান হয়। এই ঘাটতি পুষিয়ে নেয়ার জন্য প্রতি চার বছর পরপর ৩৬৬ দিনে বছর হিসাব করা হয়। গ্রেগরীয় বর্ষপঞ্জিমতে, প্রতি চার বছরে একবার ফেব্রুয়ারি মাসে  বাংলা সনমতে ফাল্গুন মাসে এই অতিরিক্ত দিন যোগ হয়। যেমন: ২০১২ একটি অধিবর্ষ এর ফেব্রুয়ারি মাস হয়েছে ২৯ দিনে।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে y চলকে একটি সাল গ্রহণ করি।

·         ধাপ-: যদি ((y mod 400 = 0) OR ((y mod 100 0) AND (y mod 4 = 0)))  হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৫নং ধাপে যাই।

·         ধাপ-: সালটি লিপ ইয়ার প্রদর্শন করি এবং ৬নং ধাপে যাই।

·         ধাপ-: সালটি লিপ ইয়ার নয় প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর 

 

দুটি সংখ্যার মধ্যে বড় সংখ্যা নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a এবং b চলকে দুটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি (a>b) হয়, তাহলে a সংখ্যাটি বড় প্রদর্শন করি এবং ৫নং ধাপে যাই, অন্যথায় ৪নং ধাপে যাই।

·         ধাপ-:  b সংখ্যাটি বড় প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর 

 

দুটি পূর্ণ সংখ্যার . সা. গু. নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

.সা.গু শব্দের পূর্ণরুপ হল লঘিষ্ঠ সাধারণ গুণিতক। একটি সংখ্যা কোন সংখ্যা দ্বারা বিভাজ্য হলে প্রথম সংখ্যাটিকে দ্বিতীয় সংখ্যার গুণিতক বলে আর দ্বিতীয় সংখ্যাটিকে প্রথম সংখ্যার গুণনীয়ক বলে। যেমনঃ ১২ কে দ্বারা ভাগ করলে নিঃশেষে বিভাজ্য হবে সেক্ষেত্রে ১২ সংখ্যাটি এর গুণিতক আর ১২ এর গুণনীয়ক হচ্ছে

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a এবং b চলকে দুটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি (a>b) হয়, তাহলে l=a , অন্যথায় l= b রাখি।

·         ধাপ-: যদি ((l mod a=0) AND (l mod b=0)) হয়, তাহলে ৫নং ধাপে যাই,

·                    অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: ফলাফল হিসেবে l চলকের মান প্রদর্শন করি এবং ৭নং ধাপে যাই।

·         ধাপ-: l চলকের মান বৃদ্ধি করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর 

 

দুটি পূর্ণ সংখ্যার . সা. গু. নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

.সা.গু. শব্দের পূর্ণরুপ হল গরিষ্ঠ সাধারণ গুণনীয়ক। একটি সংখ্যা কোন সংখ্যা দ্বারা বিভাজ্য হলে প্রথম সংখ্যাটিকে দ্বিতীয় সংখ্যার গুণিতক বলে আর দ্বিতীয় সংখ্যাটিকে প্রথম সংখ্যার গুণনীয়ক বলে। যেমনঃ ১২ কে দ্বারা ভাগ করলে নিঃশেষে বিভাজ্য হবে সেক্ষেত্রে ১২ সংখ্যাটি এর গুণিতক আর ১২ এর গুণনীয়ক হচ্ছে

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a এবং b চলকে দুটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি (a<b) হয়, তাহলে s=a , অন্যথায় s= b রাখি।

·         ধাপ-: যদি ((a mod s=0) AND (b mod s=0)) হয়, তাহলে ৫নং ধাপে যাই,

·          অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: ফলাফল হিসেবে s চলকের মান প্রদর্শন করি এবং ৭নং ধাপে যাই।

·         ধাপ-: s চলকের মান হ্রাস করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর 

 

তিনটি সংখ্যার মধ্যে সবচেয়ে ছোট সংখ্যা নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a, b c চলকে তিনটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি a<b হয়, তাহলে নং ধাপে যাই, অন্যথায় ৫নং ধাপে যাই।

·         ধাপ-: যদি  a<c হয়, তাহলে a ছোট প্রদর্শন করি এবং ৬নং ধাপে যাই, অন্যথায় c ছোট প্রদর্শন করি এবং ৬নং ধাপে যাই।

·         ধাপ-: যদি b<c হয়, তাহলে b ছোট প্রদর্শন করি, অন্যথায় c ছোট প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর 

 

তিনটি সংখ্যার মধ্যে সবচেয়ে বড় সংখ্যা নির্নয়ের অ্যালগোরিদম  ফ্লোচার্ট

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে a, b c চলকে তিনটি সংখ্যা গ্রহণ করি।

·         ধাপ-: যদি a>b হয়, তাহলে নং ধাপে যাই, অন্যথায় ৫নং ধাপে যাই।

·         ধাপ-: যদি  a>c হয়, তাহলে a বড় প্রদর্শন করি এবং ৬নং ধাপে যাই, অন্যথায় c বড় প্রদর্শন করি এবং ৬নং ধাপে যাই।

·         ধাপ-: যদি b>c হয়, তাহলে b বড় প্রদর্শন করি, অন্যথায় c বড় প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

 

 

 

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ- লুপ কন্ট্রোল স্টেটমেন্ট সম্পর্কিত অ্যালগোরিদম এবং ফ্লোচার্ট সমূহ।

 

থেকে ১০ পর্যন্ত সংখ্যা দেখানোর অ্যালগোরিদম ফ্লোচার্ট। অথবা 

                      ১০ ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i 10 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

থেকে n পর্যন্ত সংখ্যা দেখানোর অ্যালগোরিদম  ফ্লোচার্ট। অথবা 

                ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকের মান গ্রহণ করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i n হয়, তাহলে ৫নং ধাপে যাই, অন্যথায় ৭নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

থেকে ১০ এর মধ্যে অবস্থিত বিজোড় সংখ্যাগুলো দেখানোর অ্যালগোরিদম ফ্লোচার্ট অথবা 

              ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i 10 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

থেকে n এর মধ্যে অবস্থিত বিজোড়  সংখ্যাগুলো দেখানোর অ্যালগোরিদম ফ্লোচার্ট। অথবা 

         n ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকের মান গ্রহণ করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i n হয়, তাহলে ৫নং ধাপে যাই, অন্যথায় ৭নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

  থেকে ১০ এর মধ্যে অবস্থিত জোড় সংখ্যাগুলো দেখানোর অ্যালগোরিদম ফ্লোচার্ট। অথবা

            ১০ ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i 10 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

  থেকে n এর মধ্যে অবস্থিত জোড়  সংখ্যাগুলো দেখানোর অ্যালগোরিদম ফ্লোচার্ট। অথবা 

     –  n ধারাটি তৈরির অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকের মান গ্রহণ করি।

·         ধাপ-: i চলকের মান দ্বারা সূচনা করি।

·         ধাপ-: যদি i n হয়, তাহলে ৫নং ধাপে যাই, অন্যথায় ৭নং ধাপে যাই।

·         ধাপ-: i চলকের মান প্রদর্শন করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

  থেকে ১০০ পর্যন্ত সংখ্যা গুলোর যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।  অথবা 

+++ -+১০০ ধারার যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান 1 দ্বারা এবং sum চলকের মান দ্বারা  সূচনা করি।

·         ধাপ-: যদি i 100 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: sum = sum + i নির্ণয় করি।

·         ধাপ-: i চলকের মান 1 বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: sum চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

  থেকে n পর্যন্ত সংখ্যা গুলোর যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট। অথবা 

+++ -+n ধারার যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: ইনপুট হিসেবে n চলকের মান গ্রহণ করি।

·         ধাপ-: i চলকের মান 1 দ্বারা এবং sum চলকের মান দ্বারা  সূচনা করি।

·         ধাপ-: যদি i n হয়, তাহলে ৫নং ধাপে যাই, অন্যথায় ৭নং ধাপে যাই।

·         ধাপ-: sum = sum + i নির্ণয় করি।

·         ধাপ-: i চলকের মান 1 বৃদ্ধি করি এবং পুনরায় ৪নং ধাপে যাই।

·         ধাপ-: sum চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

  থেকে ১০০ এর মধ্যে অবস্থিত বিজোড়  সংখ্যা গুলোর যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।  অথবা 

+++ -+১০০ ধারার যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান 1 দ্বারা এবং sum চলকের মান দ্বারা  সূচনা করি।

·         ধাপ-: যদি i 100 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: sum = sum + i নির্ণয় করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: sum চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

প্রোগ্রাম দেখতে ক্লিক কর

 

১০  থেকে ১০০ এর মধ্যে অবস্থিত জোড়  সংখ্যা গুলোর যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট। অথবা

+++ -+১০০ ধারার যোগফল নির্নয়ের অ্যালগোরিদম ফ্লোচার্ট।

অ্যালগোরিদমঃ

·         ধাপ-: শুরু করি।

·         ধাপ-: i চলকের মান দ্বারা এবং sum চলকের মান দ্বারা  সূচনা করি।

·         ধাপ-: যদি i 100 হয়, তাহলে ৪নং ধাপে যাই, অন্যথায় ৬নং ধাপে যাই।

·         ধাপ-: sum = sum + i নির্ণয় করি।

·         ধাপ-: i চলকের মান বৃদ্ধি করি এবং পুনরায় ৩নং ধাপে যাই।

·         ধাপ-: sum চলকের মান প্রদর্শন করি।

·         ধাপ-: শেষ করি।

ফ্লোচার্টঃ

 

 

 

 

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ- প্রোগ্রাম ডিজাইন মডেল।

 

প্রোগ্রাম ডিজাইন মডেলঃ সহজ উপায়ে কার্যকরী প্রোগ্রাম তৈরির জন্য যে বিশেষ নীতিমালা বা পদ্ধতি অনুসরণ করা হয় তাকে প্রোগ্রাম ডিজাইন মডেল বলে। কয়েকটি জনপ্রিয় প্রোগ্রাম ডিজাইন মডেল-

·         স্ট্রাকচার্ড বা প্রসিডিউর প্রোগ্রামিং মডেল

·         অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং(OOP) মডেল

·         ভিজ্যুয়াল প্রোগ্রামিং মডেল

·         ইভেন্ট ড্রাইভেন প্রোগ্রামিং মডেল

 

স্ট্রাকচার্ড প্রোগ্রামিংঃ ১৯৬৬ সালে স্ট্রাকচার্ড প্রোগ্রামিং এর প্রথম ধারণা দেন Corrado Bohm এবং Guiseppe Jacopini এই দুই গণিতবিদ ব্যাখ্যা করেন যে, যেকোন প্রোগ্রাম শুধুমাত্র তিনটি স্ট্রাকচার যেমন- decisions, sequences, এবং loops এর সাহায্যে লেখা যায়। পরবর্তিতে ১৯৭০ সালে Edsger W.Dijkstra ব্যপকভাবে ব্যবহৃত স্ট্রাকচার্ড প্রোগ্রামিং পদ্ধতি উন্নয়ন করেন, যেখানে একটি সমস্যাকে বিভিন্ন ছোট ছোট মডিউল বা অংশে ভাগ করে একটি বড় সমস্যার সমাধান করা হয়। প্রতিটি মডিউলকে ফাংশন বলা হয়। এক্ষেত্রে মডিউল বা ফাংশন গুলোর মধ্যে একটি প্রধান মডিউল বা মেইন ফাংশন বিবেচনা করা হয় যা অন্য সকল মডিউলকে কল করতে পারে, আবার এক মডিউল অন্য মডিউলকেও কল করতে পারে। কিন্তু প্রধান মডিউলকে অন্য মডিউলগুলো কল করতে পারে না। এই মডেলে প্রোগ্রামের নিয়ন্ত্রন উপর থেকে নিচের দিকে পরিচালিত হয় অর্থাৎ টপ-ডাউন পদ্ধতি অনুসরণ করে। স্ট্রাকচার্ড প্রোগ্রামিং হল ইন্সট্রাকশন কেন্দ্রিক প্রোগ্রামিং পদ্ধতি। অর্থাৎ এই পদ্ধতিতে প্রোগ্রামের ডেটা গুলো ইন্সট্রাকশন দ্বারা নিয়ন্ত্রিত হয়।

উদাহরণঃ সি, কোবল, প্যাসকেল, ফরট্রান, কিউবেসিক ইত্যাদি প্রোগ্রামিং ভাষায় স্ট্রাকচার্ড প্রোগ্রামিং ডিজাইন অনুসরণ করে প্রোগ্রাম লেখা যায় এজন্য এই প্রোগ্রামিং ভাষা গুলোকে স্ট্রাকচার্ড প্রোগ্রামিং ভাষা বলা হয়।

স্ট্রাকচার্ড প্রোগ্রামিং এর সুবিধাঃ  

·         প্রোগ্রাম তৈরি করা সহজ। কারণ কম শ্রম এবং সময় প্রয়োজন হয়।

·         প্রোগ্রাম পড়া এবং বুঝা সহজ।

·         মেইন্টেইন সহজ।

·         যেহেতু প্রোগ্রামকে বিভিন্ন মডিউলে ভাগ করা হয়, তাই প্রয়োজনে একটি মডিউলকে বার বার ব্যবহার করা যায়।

·         বিভিন্ন মডিউলে ভাগ করায় ডিবাগিং বা প্রোগ্রামের ভূল সংশোধন করা সহজ।

 

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংঃ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং হল এমন একটি প্রোগ্রামিং পদ্ধতি যা স্ট্রাকচার্ড প্রোগ্রামিং এর সুবিধার পাশাপাশি অতিরিক্ত বিশেষ কিছু সুবিধা যেমন- এনক্যাপ্সুলেশন, পলিমরফিজম ইনহেরিটেন্স প্রভৃতি ফিচার ব্যবহার করে প্রোগ্রাম লেখার সুবিধা প্রদান করে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং হল ডেটা কেন্দ্রিক প্রোগ্রামিং পদ্ধতি। অর্থাৎ এই পদ্ধতিতে প্রোগ্রামের ইন্সট্রাকশন গুলো ডেটা দ্বারা নিয়ন্ত্রিত হয়। একটি প্রোগ্রামিং ভাষাকে পরিপূর্ণ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা বলা যাবে তখনই, যখন প্রোগ্রামিং ভাষাটি  ক্লাস, অবজেক্ট,  এনক্যাপ্সুলেশন, পলিমরফিজম ইনহেরিটেন্স প্রভৃতি ফিচারগুলো সাপোর্ট করবে। উদাহরণঃ জাভা, পাইথন, সি++ সি# ইত্যাদি হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষার বৈশিষ্ট্যসমূহঃ

অবজেক্টঃ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষায় যেকোন ব্যাক্তি বা বস্তুকে অবজেক্ট বলা হয়। যেমন একটি গাড়ি কে অবজেক্ট বলা যায়। প্রতিটি অবজেক্ট এর কিছু বৈশিষ্ট্য(attribute) আচরণ(behavior) থাকে। যেমন একটি গাড়ির কালার, মডেল ইত্যাদি হল বৈশিষ্ট্য, আবার গাড়িটি সামনে চলতে পারে এবং পিছনে চলতে পারে এগুলো হল আচরণ।

ক্লাসঃ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষায় ক্লাস হল ভেরিয়েবল মেথডের সমন্বয়ে একটি টেম্পলেট বা ব্ল-প্রিন্ট যা কোন অবজেক্ট এর বৈশিষ্ট্য(attribute) আচরণ(behavior) উপস্থাপনের জন্য তৈরি করা হয়।

এনক্যাপ্সুলেশনঃ অবজেক্ট এর বৈশিষ্ট্য(attribute) আচরণ(behavior) কে একত্র করে ক্লাস তৈরি করাকে বলা হয় এনক্যাপ্সুলেশন।

পলিমরফিজমঃ পলিমরফিজম মানে হল বহুরূপ। একাদিক কোড মডিউলের নাম এক হলেও ভিন্ন ভিন্ন রূপ থাকতে পারে, এক্ষেত্রে কোন মডিউলটি কাজ করবে তা নির্ভর করে ডেটা পাঠানোর উপর।

ইনহেরিটেন্সঃ অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষায় ইনহেরিটেন্স এমন একটি ফিচার, যার কারণে একটি ক্লাসের বৈশিষ্ট্য অপর একটি ক্লাস ব্যবহার করতে পারে, একে বলা হয় ইনহেরিট করা। যে ক্লাস কে ইনহেরিট করা হয় তাকে বলে বেজ ক্লাস এবং যে ক্লাস অন্য ক্লাসকে ইনহেরিট করে তাকে বলে ডিরাইভড ক্লাস।

 

ভিজ্যুয়াল প্রোগ্রামিংঃ ভিজ্যুয়াল প্রোগ্রামিং হল এমন একটি প্রোগ্রামিং পদ্ধতি যেখানে বিভিন্ন চিত্রভিত্তিক নির্দেশ বা কমান্ড ব্যবহার করে প্রোগ্রাম রচনা করা হয়। স্ট্রাকচার্ড বা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর উপর ভিত্তি করেই ভিজ্যুয়াল প্রোগ্রামিং মডেল তৈরি। মাইক্রোসফট কোম্পানির তৈরিকৃত ভিজুয়্যাল বেসিক হল প্রথম  ভিজ্যুয়াল প্রোগ্রামিং মডেল।

 

ইভেন্ট ড্রাইভেন প্রোগ্রামিংঃ সকল ভিজ্যুয়াল প্রোগ্রাম হচ্ছে ইভেন্ট ড্রাইভেন প্রোগ্রাম। এই মডেলে কী-বোর্ডের কোন কী চাপ দেওয়া, কোন বিশেষ কন্ট্রোলের উপর মাউস ক্লিক করা ইত্যাদি কাজ গুলো হচ্ছে এক একটি ইভেন্ট। প্রতিটি ইভেন্টের জন্য পৃথক পৃথক কোড মডিউল থাকে। ব্যবহারকারী যখন কোন ইভেন্ট একটিভ করেন তখন ইভেন্টের জন্য নির্ধারিত কোড মডিউলটি নির্বাহ হয়।

 

পঞ্চম অধ্যায় পাঠ-সিপ্রোগ্রামিং ভাষার প্রাথমিক ধারণা।

 

সিপ্রোগ্রামিং ভাষার প্রাথমিক ধারণাসিপ্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড বা প্রোসিডিউর প্রোগ্রামিং ভাষা যা ডেনিশ রিচি” ডেভলোপ করেন। এই ভাষাটি বেল ল্যাবরেটরিতে UNIX অপারেটিং সিস্টেম তৈরি করার সময় তৈরি করেন।  মিড লেভেল ভাষা হিসেবেসি’ অত্যন্ত জনপ্রিয়।সি ভাষাটি ১৯৭২ সালে DEC PDP-11 নামক কম্পিউটারে সর্বপ্রথম বাস্তবায়ন করা হয়। ‘সি’ নামটা এসেছে মার্টিন রিচার্ডস (Martins Richards) এর উদ্ভাবিত বিসিপিএল (BCPL-Basic Combined Programming Language) ভাষা থেকে। BCPL সংক্ষেপে B নামে পরিচিত ছিল। পরে B এর উন্নয়নের ফলে C এর বিকাশ ঘটে।

সি ভাষাকে সকল আধুনিক প্রোগ্রামিং ভাষার মাতৃ-ভাষা (mother language) বলা হয়। কারণ অধিকাংশ প্রোগ্রামিং ভাষা যেমন-  C++, Java, C#, ইত্যাদি সি ভাষার সিনট্যাক্স অনুসরণ করে। সি ভাষা অ্যারে, স্ট্রিং, ফাংশন, ফাইল ইত্যাদির ধারণা দেয় যা C++, Java, C#, ইত্যাদি ভাষায় ব্যবহৃত হয়।

সি প্রোগ্রামিং ভাষা একটি স্ট্রাকচার্ড বা প্রোসিডিউর অরিয়েন্টেড প্রোগ্রামিং ভাষা

সি’ কে স্ট্রাকচার্ড প্রোগ্রামিং ভাষা বলা হয়কারণ সি তে একটি প্রোগ্রামকে কতগুলো ছোট ছোট অংশে বিভক্ত করে প্রতিটি অংশের জন্য আলাদাভাবে ভেরিয়েবলস্ট্রাকচারফাংশন ইত্যাদি বর্ণনা করা যায় এবং প্রয়োজনে if, while, for, goto  ইত্যাদি কন্ট্রোল স্টেটমেন্টের মাধ্যমে বিভিন্ন অংশের মধ্যে সমন্বয় সাধন করা যায়কিংবা কোন ফাংশন বা স্ট্রাকচার পুনঃব্যবহার করা যায়। তাই ‘সি প্রোগ্রামিং ভাষাকে একটি স্ট্রাকচার্ড  প্রোগ্রামিং ভাষা বলা হয়। আনস্ট্রাকচার্ড ভাষায় (যেমন- বেসিক) এভাবে মূল সমস্যাকে একাধিক অংশে বিভক্ত করে প্রতিটি আলাদা অংশের জন্য আলাদাভাবে ফাংশন বর্ণনা করা যায় না। 

সি কে প্রোসিডিউর অরিয়েন্টেড প্রোগ্রামিং ভাষাও বলা হয়, কারণ একটি প্রোগ্রামকে কতগুলো ছোট ছোট অংশে বিভক্ত করে প্রতিটি অংশের জন্য আলাদাভাবে ভেরিয়েবলস্ট্রাকচারফাংশন ইত্যাদি বর্ণনা করা যায় এবং এই ছোট ছোট অংশগুলো পর্যায়ক্রমে নির্বাহের মাধ্যমে একটি সমস্যার সমাধান করে।

সি’ একটি মধ্যস্তরের প্রোগ্রামিং ভাষা

সি’ প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার সুবিধা যেমন- বিট পর্যায়ের প্রোগ্রামিং বা সিস্টেম সফটওয়্যার  এর মাধ্যমে হার্ডওয়্যার নিয়ন্ত্রণ এবং উচ্চস্তরের ভাষার সুবিধা যেমন- অ্যাপ্লিকেশন সফটওয়্যার তৈরি করা যায়। অর্থাৎ উচ্চস্তরের ভাষার সুবিধা পাওয়া যায় আবার নিম্নস্তরের ভাষার সুবিধাও পাওয়া যায়। তাই এই প্রোগ্রামিং ভাষাকে মধ্যস্তরের প্রোগ্রামিং ভাষা বলা হয়।

সি প্রোগ্রামিং ভাষা একটি general purpose প্রোগ্রামিং ভাষা

সি প্রোগ্রামিং ভাষাটি সব ধরণের কাজের জন্য ব্যবহৃত হয়। একজন প্রোগ্রামারের যেসব সুবিধা দরকারযেমন- বিভিন্ন ডেটা ব্যবহারের ব্যাপক স্বাধীনতাস্বল্প সংখ্যক কী-ওয়ার্ডদ্রুত দক্ষতার সাথে প্রোগ্রাম চালানো এবং একই সাথে উচ্চ নিম্নস্তরের ভাষা সমন্বয় করা ইত্যাদি সব রকম সুবিধাই সি’ প্রোগ্রামিং ভাষাতে আছে। তাই যেকোনো ধরণের প্রোগ্রাম লিখতে সি’ প্রোগ্রামিং ভাষা ব্যবহার করা যায়। এই জন্য সি ভাষাকে একটি General Purpose প্রোগ্রামিং ভাষা বলা হয়।

 

সি প্রোগ্রামিং ভাষার বৈশিষ্ট্যঃ  

·         সকল সি’ প্রোগ্রামের কাজ main() ফাংশন থেকে শুরু হয় এবং এটি প্রতিটি প্রোগ্রামের জন্য অত্যবশ্যকীয়।

·         সি প্রোগ্রামিং ভাষা একটি case sensitive ভাষা; অর্থাৎ uppercase letter এবং lowercase letter ভিন্ন অর্থ বহন করে।

·         সি’ প্রোগ্রামের প্রতিটি স্টেটমেন্ট এর শেষে সেমিকোলন( ) দিতে হয়।

·         সি’ প্রোগ্রামিং ভাষাকে মধ্যস্তরের প্রোগ্রামিং ভাষা বলা হয়।

·         সি প্রোগ্রামিং ভাষাকে General purpose language বলা হয়।

·         সি প্রোগ্রামিং ভাষাকে একটি স্ট্রাকচার্ড বা প্রোসিডিউর প্রোগ্রামিং ভাষা বলা হয়।

·         সি প্রোগ্রামিং ভাষায় পর্যাপ্ত সংখ্যাক লাইব্রেরি ফাংশন এবং পর্যাপ্ত সংখ্যাক অপারেটর রয়েছে যা যেকোনো জটিল প্রোগ্রাম লিখতে ব্যবহৃত হয়।

·         সি প্রোগ্রামিং ভাষায় লেখা প্রোগ্রাম যন্ত্র নির্ভরশীল নয়।

·         সি প্রোগ্রামিং ভাষার গুরুত্তপূর্ণ বৈশিষ্ট্য হল; এটি নিজেই নিজের বৈশিষ্ট্য বর্ধিত করতে পারে।

 

 

 

 

 

 

 

 

 

 

সি প্রোগ্রামিং ভাষায় লেখা একটি  প্রোগ্রামের সাধারণ গঠনঃ 

Documentation Section: এটি প্রোগ্রামের ঐচ্ছিক অংশ। এই অংশে প্রোগ্রামের নামবিষয়বস্তুপ্রোগ্রামারের নামব্যবহারের নিয়ম প্রোগ্রামের উদ্দেশ্য কমেন্টস এর মাধ্যমে লেখা হয়। সি প্রোগ্রামিং ভাষায় কমেন্ট লেখার জন্য দুইটি পদ্ধতি আছে।

একাদিক লাইনের ক্ষেত্রে /*……………..*/ এবং

সিঙ্গেল লাইনের ক্ষেত্রে- //……………….

Link Section:  এটি প্রোগ্রামের অত্যবশ্যকীয় অংশ। প্রোগ্রামে ব্যবহৃত লাইব্রেরী ফাংশনগুলোর হেডার ফাইল এই অংশে সংযুক্ত করা হয়। হেডার ফাইল যুক্ত করার নিয়ম হল- #include<header_file_name.h>

Definition Section:  এই অংশে কনস্ট্যান্ট ঘোষণা করা হয়। কনস্ট্যান্ট ঘোষণা করার নিয়ম হল-

#define constant_name constant_value

Global Declaration Section: এই অংশে গ্লোবাল চলক ঘোষণা করা হয়। এছাড়া ইউজার ডিফাইন্ড ফাংশনও ঘোষণা করা হয়।

main() ফাংশন Section: main() ফাংশন হলো প্রতিটি সি প্রোগ্রামের প্রধান ফাংশন। এটি একটি ইউজার ডিফাইন্ড ফাংশনকারণ এই ফাংশনের ডেফিনেশন প্রোগ্রামার নিজে লিখে। সি প্রোগ্রামের মূল অংশ এই ফাংশনের আওতায় {} বন্ধনীর মধ্যে লিখতে হয়। এই ফাংশন ছাড়া কোনো সি প্রোগ্রাম লেখা সম্ভব নয়। main() ফাংশনের দুটি অংশ থাকে। একটি Declaration Part এবং অন্যটি Execution Part Declaration Part- প্রয়োজনীয় চলক, অ্যারেপয়েন্টারফাইল ইত্যাদি ঘোষণা করা হয় যা নির্বাহ অংশে ব্যবহার করা হয় এবং Execution Part  প্রোগ্রাম নির্বাহ হওয়ার জন্য কমপক্ষে একটি স্টেটমেন্ট থাকতে হয়। উভয় অংশের প্রত্যেক স্টেটমেন্টের শেষে সেমিকোলন(;) থাকতে হয়।

Subprogram Section: এই অংশে এক বা একাধিক ইউজার-ডিফাইন্ড ফাংশন থাকে যা main() ফাংশন থেকে Call করা হয়।

 

সি প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামের বিভিন্ন অংশের বিশ্লেষণঃ

দুটি সংখ্যা ইনপুট নিয়ে যোগফল নির্ণয় করে যোগফল প্রিন্ট করার জন্য একটি সি প্রোগ্রাম 

প্রোগ্রাম বিশ্লেষণ:

সি প্রোগ্রামে যেসব লাইব্রেরি ফাংশন ব্যবহার করা হয় তাদের ডেফিনেশন যে হেডার ফাইলে থাকে প্রোগ্রামের শুরুতে সেই হেডার ফাইলের নাম লিংক সেকশনে সংযুক্ত করতে হয়। প্রোগ্রামের ভিতরে printf() এবং scanf() নামে  দুটি লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। ফাংশন দুটির ডেফিনেশন stdio.h নামক হেডার ফাইলে রয়েছে। তাই প্রোগ্রামের শুরুতে  #include<stdio.h> ব্যবহার করা হয়েছে।

প্রোগ্রামের ভিতরে getch( ) লাইব্রেরি ফাংশন ব্যবহার করা হয়েছে। এই ফাংশনটির ডেফিনেশন conio.h  নামক হেডার ফাইলে রয়েছে। তাই #include<conio.h>  হেডার ফাইলটি সংযুক্ত করা হয়েছে।

main ( ) ফাংশন প্রোগ্রামের মূল ফাংশন। main( ) ফাংশন থেকেই প্রোগ্রামের কার্যকারিতা শুরু হয়। প্রতিটি প্রোগ্রামে  একটি main ( ) ফাংশন অবশ্যই থাকতে হবে।

  { দ্বিতীয় ব্রাকেটটি main ( )  ফাংশনটির কার্যক্রম শুরু বুঝানোর জন্য ব্যবহার করা হয়েছে।

integer (পূর্ণসংখ্যা) টাইপের x, y sum নামে তিনটি ভেরিয়েবল ঘোষণা করা হয়েছে।

  scanf() ফাংশনটির মাধ্যমে ব্যবহারকারীর কাছ থেকে x   y চলকের মান ইনপুট নেওয়া হয়েছে।

x   y চলকের মান যোগ করে sum চলকে রাখা হয়েছে।

  printf( )  ফাংশনটি ব্যবহার করে sum চলকের মান প্রদর্শন করা হয়েছে।

 getch( )  লাইব্রেরি ফাংশনটির কাজ হলো আউটপুট ব্যবহারকারী না সরানো পর্যন্ত ধরে রাখা।

১০ }’  ব্রাকেটটি main( ) ফাংশনের কার্যক্রম শেষ বুঝানোর জন্য ব্যবহার করা হয়েছে।

পঞ্চম অধ্যায় পাঠ-১০ ডেটা টাইপ, টোকেন, কি-ওয়ার্ড, কনস্ট্যান্ট ভেরিয়েবল।

 

ডেটা টাইপঃ ডেটা টাইপ ডেটার ধরনকে নির্দেশ করে; যেমন- পূর্ণসংখ্যা, ভগ্নাংশ, ক্যারেক্টার ইত্যাদি। প্রতিটি ডেটা টাইপের ভিন্ন ভিন্ন পরিমান মেমোরি প্রয়োজন হয় এবং প্রতিটি ডেটা টাইপের উপর নির্দিস্ট অপারেশন সম্পন্ন হয়।

সি প্রোগ্রামে নিমোক্ত ডেটা টাইপগুলো ব্যবহৃত হয়ঃ

 

Primary অথবা Basic অথবা Built-in ডেটা টাইপ:

·         char: এই ডেটা টাইপ একটি ক্যারেকটার সংরক্ষণ করে। যেমন- A, a, + ইত্যাদি।

·         int: এই ডেটা টাইপ পূর্ণসংখ্যা সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 10, 300, 6000 ইত্যাদি।

·         float: এই ডেটা টাইপ সিঙ্গেল প্রিসিশন বিশিষ্ট ডেসিম্যাল সংখ্যা( ভগ্নাংশ মান সহ) সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 9.81, 345.7633 ইত্যাদি।

·         double: এই ডেটা টাইপ ডাবল প্রিসিশন বিশিষ্ট ডেসিম্যাল সংখ্যা( ভগ্নাংশ মান সহ) সংরক্ষণ করতে ব্যবহৃত হয়। যেমন- 843.345678, 3293.837234 ইত্যাদি।

‘void’ data type: ‘void’ ডেটা টাইপ বলতে বুঝায় কোন ভ্যালু নেই। একটি ফাংশন কোন কিছুই রিটার্ন করবে না বুঝাতে এই ডেটা টাইপ ব্যবহৃত হয়।

 

বিভিন্ন ডেটা টাইপের মেমোরি পরিসর, ডেটা রেঞ্জ  এবং ফরম্যাট স্পেসিফায়ারঃ 

DATA TYPE

MEMORY (BYTES)

RANGE

FORMAT SPECIFIER

char

1

−128 to 127

%c

unsigned char

1

0 to 255

%c

int

2

−32,768 to 32,767

%d

unsigned int

2

0 to 65,535

%u

long int

4

-2,147,483,648 to 2,147,483,647

%ld

unsigned long int

4

0 to 4,294,967,295

%lu

float

4

%f

double

8

%lf

long double

10

%Lf

 

ডেটা টাইপ মডিফায়ারঃ মডিফায়ার হলো কিওয়ার্ড যা মৌলিক ডেটা টাইপের( float ব্যতীত ) পূর্বে ব্যবহার করে ডেটার ব্যাপ্তি এবং চলকের মেমোরি পরিসর কমানো বা বাড়ানো যায়। যেমন- signed unsigned মডিফায়ার char int টাইপ ডেটার জন্য এবং long short মডিফায়ার int double টাইপ ডেটার জন্য ব্যবহৃত হয়।

টোকেনঃ যে কোন প্রোগ্রাম কতগুলো স্টেটমেন্ট  নিয়ে গঠিত। আবার প্রতিটি স্টেটমেন্ট কতগুলো word বা character এর সমস্টি। সি প্রোগ্রামে ব্যবহৃত word বা character সমূহকে একত্রে টোকেন বলে। অন্যভাবে বলা যায়; টোকেন হলো একটি প্রোগ্রামের ক্ষুদ্রতম উপাদান যা কম্পাইলারের কাছে অর্থবহ। বিভিন্ন টোকেন সমূহ

·         1. Keywords ( eg: auto, break,int,short, while etc.)

·         2. Identifiers (eg: main, total, etc.)

·         3. Constants (eg: 9.81, 3.1416, 10, 20, etc.)

·         4. Strings      (eg: “total”, “hello” etc.)

·         5. Special symbols  (eg: (), {}, #, $, @, &, etc.)

·         6. Operators  (eg: +, /,-,*, etc.)

 

কিওয়ার্ড(Keywords): কিওয়ার্ড হলো একটি প্রোগ্রামিং ভাষার পূর্ব-নির্ধারিত বা সংরক্ষিত কিছু শব্দ। প্রতিটি কিওয়ার্ড প্রোগ্রামে একটি নির্দিস্ট কাজ সম্পাদন করে থাকে। যেহেতু কিওয়ার্ডগুলো কম্পাইলারের কাছে পরিচিত তাই তাদেরকে চলকের নাম হিসেবে ব্যবহার করা যায় না। কিওয়ার্ড সবসময় ছোট হাতের অক্ষরে লেখা হয়। সি ভাষা ৩২ কিওয়ার্ড সাপোর্ট করে যা নিচে দেওয়া হলঃ

 

আইডেন্টিফায়ার (Identifier): একটি প্রোগ্রামের প্রতিটি উপাদানের একটি নাম দেওয়া হয় যাকে বলা হয় আইডেন্টিফায়ার। প্রোগ্রামের একটি নির্দিস্ট উপাদানকে চিহ্নিত করতে বা চলক, ফাংশন, অ্যারে ইত্যাদির নাম দিতে এটি ব্যবহৃত হয়।আইডেন্টিফায়ার হলো ইউজার-ডিফাইন্ড নাম যা সি এর স্ট্যান্ডার্ড ক্যারেক্টার সেটের সমন্বয়ে লেখা হয়। একটি প্রোগ্রামের প্রতিটি আইডেন্টিফায়ারের অদ্বিতীয় নাম থাকতে হয়।

আইডেন্টিফায়ার লেখার জন্য নিচের নিয়মগুলো অনুসরণ হয়ঃ

·         প্রথম ক্যারেক্টার অবশ্যই অ্যালফাবেট অথবা underscore( _ ) হতে হবে। যেমন: Count, a7, _number ইত্যাদি সঠিক। কিন্তু  22Roll সঠিক নয়।

·         কেবলমাত্র অ্যালফাবেটিক ক্যারেক্টার (A-Z, a-z) ,সংখ্যা(-) এবং underscore( _ )  ব্যবহার করা যাবে। যেমন- roll_number, roll22 ইত্যাদি সঠিক। কিন্তু  dont_use, my@roll, &a ইত্যাদি সঠিক নয়।

·          কোন কি-ওয়ার্ড বা রির্জাভ ওয়ার্ড ব্যবহার করা যাবে না। যেমন: for, while, if  ইত্যাদি ব্যবহার করা যাবে না।

·         কোন white space ক্যারেক্টার বা ফাঁকা স্থান গ্রহন যোগ্য নয়। যেমন: roll_number সঠিক। কিন্তু roll  number সঠিক নয়।

·         ছোট বা বড় হাতের অক্ষর ব্যবহার করা যায়। তবে ছোট এবং বড় হাতের অক্ষর ভিন্ন অর্থ বহন করে।  যেমন: number এবং NUMBER এক নয়।

·         ৩১ ক্যারেক্টারের অধিক হতে পারে। তবে প্রথম ৩১ ক্যারেক্টার তাৎপর্যপূর্ণ।

 

চলক (Variable): চলক বা ভেরিয়েবল হলো মেমরির লোকেশনের নাম বা ঠিকানা। প্রোগ্রামে যখন কোনো ডেটা নিয়ে কাজ করা হয়প্রাথমিকভাবে সেগুলো কম্পিউটারের ্যামে অবস্থান করে। পরবর্তী সময়ে সেগুলো পুনরুদ্ধার বা পুনব্যবহারের জন্য নাম বা ঠিকানা জানা প্রয়োজন হয়। সুতরাং প্রোগ্রামে ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি চলক ব্যবহার করতে হয়। প্রতিবার প্রোগ্রাম নির্বাহের সময় মেমরিতে চলকগুলোর অবস্থান এবং সংরক্ষিত মান পরিবর্তন হয় বা হতে পারে বলে এদেরকে ভেরিয়েবল বা চলক বলা হয়। প্রোগ্রামে কোন চলক ব্যবহারের পূর্বে তা ঘোষণা করতে হয়। চলক ঘোষণার ক্ষেত্রে চলকের নাম লেখার সময় আইডেন্টিফায়ার লেখার নিয়মগুলো অনুসরণ করা হয়।  চলক ঘোষণার ফরম্যাট

·         Data_type variable_name;

·         যেমনঃ int number;

ডিক্লারেশনের উপর ভিত্তি করে ভেরিয়েবলকে দুই ভাগে ভাগ করা যায়। যথা:

·           লোকাল ভেরিয়েবল

·           গ্লোবাল ভেরিয়েবল

লোকাল ভেরিয়েবল: কোনো ফাংশনের মধ্যে ভেরিয়েবল  ডিক্লেয়ার করলে তাকে উক্ত ফাংশনের  লোকাল ভেরিয়েবল বা স্থানীয় চলক বলা হয়। ফাংশনের মধ্যে ঘোষণাকৃত চলক উক্ত ফাংশনের বাইরে ব্যবহার করা যায় না। লোকাল ভেরিয়েবলের  কর্মকান্ড শুধুমাত্র সংশ্লিষ্ট ফাংশনেই সীমাবদ্ধ থাকে। ভিন্ন ভিন্ন ফাংশনে একই নামের লোকাল ভেরিয়েবল থাকতে পারে।

গ্লোবাল  ভেরিয়েবল: সকল  ফাংশনের বাইরে প্রোগ্রামের  শুরুতে  ঘোষণাকৃত ভেরিয়েবলকে গ্লোবাল ভেরিয়েবল বলা হয়। গ্লোবাল ভেরিয়েবল সাধারণত প্রোগ্রামের শুরুতেই ডিক্লেয়ার করা হয়। ধরনের ভেরিয়েবলের কর্মকান্ড কোনো  ফাংশনের মধ্যে সীমাবদ্ধ নয় বলে একে গ্লোবাল বা সার্বজনীন ভেরিয়েবল বলে।

 

Constants (কনস্ট্যান্ট): প্রোগ্রাম নির্বাহের সময় সি প্রোগ্রামিং ভাষায় এমন কিছু মান আছে যা কখনো পরিবর্তন হয় না। যেমন π এর মান হলো বা .১৪১৬ যা কখনো পরিবর্তন হয় না। প্রোগ্রাম নির্বাহের সময় যে রাশির মান অপরিবর্তীত থাকে তাকে কনস্ট্যান্ট বা ধ্রুবক বলে।

সি প্রোগ্রামিং ভাষায় দুইভাবে কনস্ট্যান্ট ঘোষণা করা যায়। যথা-

·         const কীওয়ার্ড ব্যবহার করে

·           #define প্রিপ্রসেসর ব্যবহার করে

const কীওয়ার্ড ব্যবহার করে ধ্রুবক ঘোষণার ফরম্যাট হলো:

·         const  ConstType  ConstName = ConstValue;

·         যেমনঃ const float PI=3.1416;

#define প্রিপ্রসেসর ব্যবহার করে ধ্রুবক ঘোষণার ফরম্যাট হলো:

·         #define ConstName ConstValue

·         #define PI 3.1416

 

স্ট্রিং(Strings): স্ট্রিং হলো কতগুলো ক্যারেক্টারের সমষ্টি যার শেষ উপাদান হলো null ক্যারেক্টার(\0) এই null ক্যারেক্টার স্ট্রিং এর শেষ নির্দেশ করে। স্ট্রিং সবসময় ডাবল কোটেশনের ( ) সাহায্যে আবদ্ধ থাকে।

স্ট্রিং ডিক্লারেশন করার পদ্ধতিঃ

·         char string[20] = {‘s’,’t’,’u’,’d’,’y’, ‘\0’};

·         char string[20] = “demo”;

·         char string [] = “demo”;

 

Special symbols: 

বিশেষ চিহ্ন (Special symbols): নিচের বিশেষ চিহ্নগুলোসিভাষায় ব্যবহৃত হয়; যার প্রত্যেকটির বিশেষ অর্থ আছে তাই অন্য উদ্দেশ্য ব্যবহার করা যায় না। [] () {}, ; * = # 

·         Brackets[]: অ্যারে এলিমেন্টের রেফারেন্স বুঝাতে ওপেনিং এবং ক্লোজিং ব্র্যাকেট ব্যবহৃত হয়। এটি সিঙ্গেল এবং মাল্টি-ডাইমেনশনাল সাবস্ক্রিপ্ট নির্দেশ করে। 

·         Parentheses(): ফাংশন কল এবং ফাংশন প্যারামিটার নির্দেশ করতে এই বিশেষ চিহ্ন ব্যবহৃত হয়। 

·         Braces{}: ওপেনিং এবং ক্লোজিং কার্লি ব্রেস যথাক্রমে একটি কোড ব্লকের শুরু শেষ নির্দেশ করে। 

·         comma (,): একাধিক উপাদানকে পৃথক করতে এই চিহ্ন ব্যবহৃত হয়। 

·         semi colon(; ): একাধিক স্টেটমেন্টকে পৃথক করতে এই চিহ্ন ব্যবহৃত হয়। 

·         asterick (*): পয়েন্টার ভেরিয়েবল তৈরি করতে এই বিশেষ চিহ্ন ব্যবহৃত হয়। 

·         assignment operator: ভ্যালু অ্যাসাইন করতে এটি ব্যবহৃত হয়। 

·         pre processor(#): প্রোগ্রাম ফাইল লিঙ্ক করতে কম্পাইলার অটোমেটিক্যালি এই চিহ্ন ব্যবহার করে।

অপারেটর (Operators): পরবর্তী পাঠে অপারেটর সম্পর্কে বিস্তারিত আলোচনা করা হবে।

 

 

পঞ্চম অধ্যায় পাঠ-১১সিপ্রোগ্রামিং ভাষার অপারেটরসমূহ এবং রাশিমালা।

 

অপারেটরঃসিপ্রোগ্রামিং ভাষায় গাণিতিক এবং যৌক্তিক কাজ সম্পাদন করার জন্য কতগুলো বিশেষ চিহ্ন বা সিম্বল ব্যবহৃত হয়এই সিম্বল বা চিহ্নগুলোকে অপারেটর বলা হয়। অপারেটরগুলো যার উপর কাজ করে তাকে অপারেন্ড বলা হয়।      যেমনঃ A + B * 5 এই  এক্সপ্রেশনটিতে +, * হলো অপারেটর A, B হলো অপারেন্ড, 5 হলো ধ্রুবক এবং A + B * 5 হলো এক্সপ্রেশন।

অপারেটর কতগুলো অপারেন্ড নিয়ে কাজ করে তার উপর ভিত্তি করে তিন প্রকার। যথা-

·         ইউনারি(Unary) অপারেটর

·         বাইনারি(Binary) অপারেটর

·         টারনারি(Ternary) অপারেটর

ইউনারি(Unary) অপারেটরঃ যেসব অপারেটর শুধুমাত্র একটি অপারেন্ড নিয়ে কাজ করে তাদেরকে ইউনারি(Unary) অপারেটর বলে। যেমনঃ Increment (++) and decrement () operators

বাইনারি(Binary) অপারেটরঃ যেসব অপারেটর দুইটি অপারেন্ড নিয়ে কাজ করে তাদেরকে বাইনারি(Binary) অপারেটর বলে। যেমনঃ

·         1. Arithmetic operators (+, -, * etc.)

·         2. Relational Operators ( <, >, ==)

·         3. Logical Operators (&&, ||)

·         4. Assignment Operators (=, +=, -=)

·         5. Bitwise Operators (&, |)

টারনারি(Ternary) অপারেটরঃ যেসব অপারেটর তিনটি অপারেন্ড নিয়ে কাজ করে তাদেরকে টারনারি(Ternary) অপারেটর বলে। যেমনঃ Conditional Operators(?:)

 

কাজের প্রকৃতির উপর ভিত্তি করে সি প্রোগ্রামিং ভাষার অপারেটর সমূহ:

·         গাণিতিক অপারেটর (Arithmetic Operators)

·         রিলেশনাল অপারেটর (Relational Operators)

·         লজিক্যাল অপারেটর (Logical Operators)

·         অ্যাসাইনমেন্ট অপারেটর (Assignment Operators)

·         ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর (Increment and Decrement Operators)

·         কন্ডিশনাল অপারেটর (Conditional Operators)

·         বিট ওয়াইজ অপারেটর (Bitwise Operators)

·         বিশেষ অপারেটর (Special Operator)

 

গাণিতিক অপারেটর (Arithmetic Operators): সি প্রোগ্রামে বিভিন্ন গাণিতিক কাজ (যেমন-যোগ, বিয়োগ, গুণ, ভাগ প্রভৃতি) করার জন্য যেসব অপারেটর ব্যবহৃত হয়, সেসব অপারেটরকে গাণিতিক অপারেটর বলা হয়।

সি প্রোগ্রামিং ভাষায় গাণিতিক অপারেটর গুলোর অগ্রগণ্যতা হলঃ  *, /, %, +,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

রিলেশনাল অপারেটর (Relational Operators): প্রোগ্রাম নির্বাহের সময় দুটি চলকের মধ্যে তুলনার ক্ষেত্রে রিলেশনাল অপারেটর ব্যবহৃত হয়। রিলেশন বলতে একটি অপারেন্ড অপর অপারেন্ড থেকে ছোট কিংবা বড় বা সমান ইত্যাদি বুঝায়।

 

লজিক্যাল অপারেটর (Logical Operators): প্রোগ্রামে যুক্তিমূলক এক্সপ্রেশন নিয়ে কাজ করার জন্য যেসব অপারেটর ব্যবহার করা হয় সেগুলোকে লজিক্যাল অপারেটর বলা হয়।

 

অ্যাসাইনমেন্ট অপারেটর (Assignment Operators): কোনো এক্সপ্রেশন বা ভেরিয়েবলের মানকে অন্য কোনো ভেরিয়েবলের মান হিসেবে নির্ধারণ করতে যেসব অপারেটর ব্যবহার করা হয়, সেগুলোকে অ্যাসাইনমেন্ট অপারেটর বলা হয়।

 

ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর (Increment and Decrement Operators):

সি প্রোগ্রামে দুটি গুরুত্বপূর্ণ অপারেটর ব্যবহার করা হয় যা সাধারণত অন্য ভাষায় ব্যবহার করা হয় না। অপারেটর দুটি হচ্ছে Increment ( ++ ) and Decrement ( ) Operators  ইনক্রিমেন্ট অপারেটর ব্যবহার করা হয় কোন একটি ভেরিয়েবলের মান বৃদ্ধি করতে এবং ডিক্রিমেন্ট অপারেটর ব্যবহার করা হয় কোন একটি ভেরিয়েবলের মান হ্রাস করতে। ইনক্রিমেন্ট এবং ডিক্রিমেন্ট উভয় অপারেটর একটি অপারেন্ডের উপর কাজ করে। তাই এদেরকে  ইউনারি অপারেটর বলা হয়।

ইনক্রিমেন্ট অপারেটরের প্রকারভেদঃ 

·         pre-increment

·         post-increment

pre-increment (++ variable): pre ইনক্রিমেন্ট এর ক্ষেত্রে চলকের মান আগে বৃদ্ধি করে এবং তারপর আপডেট মানটি নিয়ে কাজ করে।

Output:

 

 

 

 

 

 

 

post-increment (variable ++): post ইনক্রিমেন্ট এর ক্ষেত্রে চলকের বর্তমান মান নিয়ে কাজ করে তারপর চলকের মান বৃদ্ধি করে।

Output:

ডিক্রিমেন্ট অপারেটরের প্রকারভেদঃ 

·         pre-decrement

·         post-decrement

Pre-decrement (– variable): pre ডিক্রিমেন্ট এর ক্ষেত্রে চলকের মান আগে হ্রাস করে এবং তারপর আপডেট মানটি নিয়ে কাজ করে।

Output:

post-decrement (variable –): post ডিক্রিমেন্ট এর ক্ষেত্রে চলকের বর্তমান মান নিয়ে কাজ করে তারপর চলকের মান  হ্রাস করে।

Output:

 

কন্ডিশনাল অপারেটর (Conditional Operators): 

সি প্রোগ্রামে শর্ত সাপেক্ষে কোন কাজ করার জন্য কন্ডিশনাল অপারেটর ব্যবহৃত হয়। কন্ডিশনাল অপারেটরের গঠন নিম্নরুপঃ

Syntax     :        (Condition? true_value: false_value);

Example :         (A < 0  ? Negative  :  Positive);

উপরের উদাহরণে, যদি A , 0 এর চেয়ে ছোট হয় তাহলে Negative  রিটার্ন করবে অন্যথায় Positive রিটার্ন করবে

কন্ডিশন সত্য হলে  Expr1 সম্পাদিত হবে এবং কন্ডিশন মিথ্যা হলে Expr2 সম্পাদিত হবে। এই অপারেটরকে টারনারি অপারেটরও বলা হয়।

 

বিট ওয়াইজ অপারেটর (Bitwise Operators): সি প্রোগ্রামে বিট পরীক্ষা করার জন্য বা কোনো বিট ডানে বা বামে সরানোর জন্য বিট ওয়াইজ অপারেটর ব্যবহার করা হয়। Float বা Double টাইপের ডেটার ক্ষেত্রে বিট ওয়াইজ অপারেটর ব্যবহার করা যায় না।

বিট ওয়াইজ অপারেটর এর সত্যক সারনিঃ 

 বিশেষ অপারেটর (Special Operator): সি প্রোগ্রামে বিশেষ কিছু কাজের জন্য ব্যবহৃত অপারেটরকে বিশেষ অপারেটর বলে। যেমনঃ

অপারেটর

বর্ননা

&

চলকের অ্যাড্রেস পেতে এই অপারেটর ব্যবহৃত হয়

উদাহরণ : &a, a এর অ্যাড্রেস দিবে

*

চলকের পয়েন্টার হিসেবে ব্যবহৃত হয়

উদাহরণ : * a যেখানে, * হলো a চলকের পয়েন্টার

Sizeof ()

চলকের মেমোরি সাইজ রিটার্ন করে

উদাহরণ: size of (char); রিটার্ন করবে

 

 

 

 

 

 

 

রাশিমালা (Expression): চলক, ধ্রুবক বিভিন্ন অপারেটরের সমন্বয়ে রাশিমালা বা Expression  তৈরি হয়। গাণিতিক Expression গুলো সি প্রোগ্রামে নিম্নরুপে লেখা হয়-

Expression বা রাশিমালায় অপারেটরের precedence এবং associativity:

একটি রাশিমালায় একাধিক অপারেটর থাকলে কম্পাইলার অপারেটরগুলোর অগ্রগণ্যতা দেয় এবং অগ্রগণ্যতা অনুযায়ী কাজ করে। প্রোগ্রামিং ভাষায় একে  অপারেটরের precedence বলে। সি প্রোগ্রামিং ভাষায় গাণিতিক অপারেটর গুলোর অগ্রগণ্যতা হলঃ  *, /, %, +, অর্থাৎ x+y*x-a এই রাশিমালায় আগে গুণের কাজ, তারপর যোগের কাজ এবং সবশেষে বিয়োগের কাজ সম্পন্ন হবে।

আবার একটি রাশিমালায় একই precedence বিশিষ্ট একাদিক অপারেটর থাকলে কম্পাইলার কিছু অপারেটরের ক্ষেত্রে বামদিক থেকে ডানদিকে এবং কিছু অপারেটরের ক্ষেত্রে ডানদিক থেকে বামদিকে কাজ করে। প্রোগ্রামিং ভাষায় একে  অপারেটর associativity বলে। যেমনx+y+z+a রাশিমালায় + অপারেটর একাধিকবার ব্যবহৃত হয়েছে। এই + অপারেটরের associativity হল বাম থেকে ডান। তাই উপরের রাশিমালায় প্রথমে x y যোগ করে তার সাথে z এর যোগ এবং অবশেষে প্রাপ্ত যোগফলের সাথে a এর যোগ।

নিচের টেবিলে, সর্বোচ্চ precedence (অগ্রাধিকার) বিশিষ্ট অপারেটর টেবিলের শীর্ষে অবস্থিত এবং সর্বনিম্ন precedence (অগ্রাধিকার) বিশিষ্ট অপারেটর টেবিলের সর্বনিম্ন নীচে অবস্থিত। 

Category

Operator

Associativity

Postfix

() [] -> . ++ – –

Left to right

Unary

+ – ! ~ ++ – – (type)* & sizeof

Right to left

Multiplicative

* / %

Left to right

Additive

+ –

Left to right

Shift

<< >>

Left to right

Relational

< <= > >=

Left to right

Equality

== !=

Left to right

Bitwise AND

&

Left to right

Bitwise XOR

^

Left to right

Bitwise OR

|

Left to right

Logical AND

&&

Left to right

Logical OR

||

Left to right

Conditional

?:

Right to left

Assignment

= += -= *= /= %=>>= <<= &= ^= |=

Right to left

Comma

,

Left to right

 

 

পঞ্চম অধ্যায় পাঠ-১২সিপ্রোগ্রামিং ভাষায় ইনপুট এবং আউটপুট ফাংশন সমূহ।

 

সিপ্রোগ্রামিং ভাষায় ইনপুট এবং আউটপুট ফাংশনসমূহঃ 

কোন প্রোগ্রামে ডেটা প্রক্রিয়া করার জন্য প্রথমে ডেটা ইনপুট নিতে হয়। প্রোগ্রামে ডেটা ইনপুট নেওয়ার জন্য ব্যবহৃত ফাংশনকে ইনপুট ফাংশন বলে। আবার প্রক্রিয়া পরবর্তী তথ্য আউটপুটে প্রদর্শনের জন্য ব্যবহৃত ফাংশনকে আউটপুট ফাংশন বলে। সি প্রোগ্রামিং ভাষায় ইনপুট নেওয়া এবং আউটপুট দেখানোর জন্য বিভিন্ন লাইব্রেরী ফাংশন রয়েছে। ফাংশনসমূহঃ

ফরমেট স্পেসিফায়ারঃ সি প্রোগ্রামের কোন চলকে ফরমেটেড আকারে ডেটা গ্রহণ বা ফরমেটেড আকারে কোন চলকের মান প্রদর্শনের জন্য যথাক্রমে ইনপুট আউটপুট ফাংশনে যে সকল ক্যারেক্টার সেট ব্যবহৃত হয় তাদেরে ফরমেট স্পেসিফায়ার বলা হয়। প্রতিটি ফরমেট স্পেসিফায়ার পার্সেন্টেজ ক্যারেক্টার(%) দিয়ে শুরু হয়।

 

বিভিন্ন ডেটা টাইপের জন্য ফরমেটেড ইনপুট আউটপুট ফাংশনে ব্যবহৃত ফরমেট স্পেসিফায়ারসমূহঃ

ফরমেট স্পেসিফায়ার

ব্যবহার

উদাহরণ 

%c

char টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%c”,&a); printf(“%c”,a);

%d

int টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%d”,&a); printf(“%d”,a);

%f

float টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%f”,&a); printf(“%f”,a);

%lf

double টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%lf”,&a); printf(“%lf”,a);

%ld

long int টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%ld”,&a); printf(“%ld”,a);

%u

unsigned int টাইপের ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%u”,&a); printf(“%u”,a);

%o

Octal ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%o”,&a); printf(“%o”,a);

%x

Hexadecimal ডেটা ইনপুট/আউটপুটের জন্য

scanf(“%x”,&a); printf(“%x”,a);

scanf() ফাংশনের ব্যবহারঃ

পূর্বে ঘোষণাকৃত একটি চলকে ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশন ব্যবহারের ফরমেটঃ

scanf(“format_specifier “, &variable_name);

উদাহরণঃ

·         a চলকে char টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ  scanf(“%c”, &a);

·         a চলকে int টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ  scanf(“%d”, &a);

·         a চলকে float টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ  scanf(“%f”, &a);

·         a চলকে double টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ  scanf(“%lf”, &a);

 

পূর্বে ঘোষণাকৃত একাধিক চলকের ডেটা একসাথে ইনপুট নেওয়ার জন্য scanf() ফাংশন ব্যবহারের ফরমেটঃ

scanf(” format_specifier1 format_specifier2….”, &variable_name1, &variable_name2…….);

উদাহরণঃ

একসাথে একাধিক চলকে একই ধরণের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনের ব্যবহারঃ

·         a,b c চলকে int টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ

·         scanf(“%d %d %d”, &a, &b, &c);

একসাথে একাধিক চলকে ভিন্ন ভিন্ন ধরণের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনের ব্যবহারঃ

·         a,b c চলকে যথাক্রমে int, float double টাইপের ডেটা ইনপুট নেওয়ার জন্য scanf() ফাংশনঃ

·         scanf(“%d %f %lf”, &a, &b, &c);

 

printf() ফাংশনের ব্যবহারঃ

printf() ফাংশন দুইভাবে ব্যবহার করা যায়। প্রথমত, কোন কিছু হুবহু আউটপুটে দেখানো। দ্বিতীয়ত, কোন এক বা একাধিক চলকের মান আউটপুটে দেখানো।

কোন কিছু হুবহু আউটপুটে দেখানোর জন্য printf() ফাংশনের ফরমেটঃ 

আউটপুটে দেখানোর প্রয়োজনীয় টেক্সটি printf( ); ফাংশনের ডাবল কোটেশনের মধ্যে লিখতে হয়। যেমন-

printf(” Output text should be here “);

কোন একটি চলকের মান আউটপুটে দেখানোর জন্য printf() ফাংশনের ফরমেটঃ 

printf(“format_specifier”, variable_name);

উদাহরণঃ

·         a চলকের char টাইপের ডেটা আউটপুটে দেখানোর printf() ফাংশনঃ  printf(“%c”, a);

·         a চলকের int টাইপের ডেটা আউটপুটে দেখানোর printf() ফাংশনঃ  printf(“%d”, a);

·         a চলকের float টাইপের ডেটা আউটপুটে দেখানোর printf() ফাংশনঃ  printf(“%f”, a);

·         a চলকের double টাইপের ডেটা আউটপুটে দেখানোর printf() ফাংশনঃ  printf(“%lf”, a);

 

একাধিক চলকের মান একসাথে আউটপুটে দেখানোর জন্য printf() ফাংশনের ফরমেটঃ

printf(“format_specifier1, format_specifier2….”, variable_name1, variable_name2…);

একসাথে একাধিক চলকের একই ধরণের ডেটা আউটপুটে দেখানোর printf() ফাংশনের ব্যবহারঃ

·         a, b c চলকের ডেটা আউটপুটে int টাইপের দেখানোর জন্য printf() ফাংশনঃ

·         printf(“%d %d %d”, a, b, c);

একসাথে একাধিক চলকের ভিন্ন ভিন্ন ধরণের ডেটা আউটপুটে দেখানোর printf() ফাংশনের ব্যবহারঃ

·         a,b c চলকের ডেটা আউটপুটে যথাক্রমে int, float double টাইপের দেখানোর printf() ফাংশনের ব্যবহারঃ

·         printf(“%d %f %lf”, a, b, c);

 

ব্যাকস্ল্যাশ ক্যারেক্টারঃ বিশেষ কিছু ক্যারেক্টার আছে যেগুলো printf() ফাংশনের মাধ্যমে সরাসরি প্রদর্শন করা যায় না। এই বিশেষ ক্যারেক্টারগুলো প্রদর্শনের জন্য অতিরিক্ত একটি ক্যারেক্টার\ ) ব্যবহৃত হয় যাকে ব্যাকস্ল্যাশ ক্যারেক্টার বলে।

ব্যাকস্ল্যাশ ক্যারেক্টারের ব্যবহারঃ

ব্যাকস্ল্যাশ ক্যারেক্টার

ব্যবহার 

উদাহরণ 

আউটপুট

\n

আউটপুট নতুন লাইনে প্রদর্শনের জন্য

printf(“Learning\n ICT”);

Learning                          ICT

\t

আউটপুটে horizontal tab প্রদর্শনের জন্য

printf(“Learning\t ICT”);

Learning      ICT

\v

আউটপুটে vertical tab    প্রদর্শনের জন্য

printf(“Learning\v ICT”);

Learning                                                                        ICT

\a

সতর্ক সংকেত প্রদানের জন্য

printf(“\aLearning ICT”);

 Alerm!

\”

আউটপুটে ডাবল কোটেশন( ) প্রদর্শনের জন্য

printf(“Learning \”ICT\” “);

Learning “ICT”

\’

আউটপুটে সিঙ্গেল কোটেশন( ) প্রদর্শনের জন্য

printf(“Learning \’ICT\’ “);

Learning ‘ICT’

\\

আউটপুটে ব্যাকস্ল্যাশ ক্যারেক্টার \ ) প্রদর্শনের জন্য

printf(“Learning \\ICT\\ “);

Learning \ICT\

\?

আউটপুটে প্রশ্নবোধক চিহ্ন ( ? ) প্রদর্শনের জন্য

printf(” Are you learning ICT\? “);

Are you learning ICT?

 

 

পঞ্চম অধ্যায় পাঠ-১৩ সাধারণ গাণিতিক সমস্যা সম্পর্কিত প্রোগ্রামসমূহ।

 

দুইটি সংখ্যা ইনপুট নিয়ে যোগফল নির্নয় করার জন্যসিপ্রোগ্রামিং ভাষায় একটি প্রোগ্রাম। 

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে যোগফল নির্নয় করার প্রোগ্রাম তৈরি কর।

 

 

 

 

 

 

 

 

দুইটি সংখ্যা ইনপুট নিয়ে বিয়োগফল নির্নয় করার জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম। 

 

 

দুইটি সংখ্যা ইনপুট নিয়ে গুণফল নির্নয় করার জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে গুণফল নির্নয় করার প্রোগ্রাম তৈরি কর।

 

দুইটি সংখ্যা ইনপুট নিয়ে ভাগফল নির্নয় করার জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

অনুশীলনঃ পাঁচটি সংখ্যা ইনপুট নিয়ে তাদের গড় নির্নয় করার প্রোগ্রাম তৈরি কর।

 

সেলসিয়াস স্কেলের তাপমাত্রাকে ফারেনহাইট স্কেলের তাপমাত্রায় রুপান্তরের প্রোগ্রাম। 

তাপমাত্রা পরিমাপের বিভিন্ন স্কেলের মধ্যে সম্পর্ক- C/5 = F-32 / 9 = K-273 / 5

অনুশীলনঃ সেলসিয়াস স্কেলের তাপমাত্রাকে কেলভিন স্কেলের তাপমাত্রায় রুপান্তরের প্রোগ্রাম তৈরি কর।

 

ফারেনহাইট স্কেলের তাপমাত্রাকে সেলসিয়াস স্কেলের তাপমাত্রায় রুপান্তরের প্রোগ্রাম। 

তাপমাত্রা পরিমাপের বিভিন্ন স্কেলের মধ্যে সম্পর্ক- C/5 = F-32 / 9 = K-273 / 5

অনুশীলনঃ ফারেনহাইট স্কেলের তাপমাত্রাকে কেলভিন তাপমাত্রায় রুপান্তরের প্রোগ্রাম তৈরি কর।

 

ত্রিভুজের ভুমি উচ্চতা দেওয়া থাকলে ক্ষেত্রফল বের করার প্রোগ্রাম লেখ।

 

ত্রিভুজের তিনটি বাহুর দৈর্ঘ্য যথাক্রমে a,b এবং c দেওয়া আছে। ত্রিভুজের ক্ষেত্রফল বের করার প্রোগ্রাম।

 

 

 

 

 

 

 

 

 

 

আয়তক্ষেত্রের ক্ষেত্রফল নির্নয় করার প্রোগ্রাম।

 

১০ বৃত্তের ক্ষেত্রফল নির্নয় করার প্রোগ্রাম।

 

প্রশ্নের ধরণঃ

·         কোন অ্যালগোরিদম বা ফ্লোচার্ট দেওয়া থাকলে তার প্রোগ্রাম লিখতে হতে পারে

·         কোন প্রোগ্রাম দেওয়া থাকবে তার ভূল নির্নয় এবং সমাধান করতে হতে পারে

 

 

পঞ্চম অধ্যায় পাঠ-১৪সিপ্রোগ্রামিং ভাষায় কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট।

 

কন্ট্রোল স্টেটমেন্টঃ সিপ্রোগ্রামিং ভাষায় স্টেটমেন্টসমূহ সাধারণত স্বয়ংক্রিয়ভাবে পর্যায়ক্রমে নির্বাহ হয়। কিন্তু বিভিন্ন পরিস্থিতিতে প্রোগ্রামের নির্বাহ নিয়ন্ত্রণ (যেমন- এক বা একাধিক স্টেটমেন্ট একাধিক বার নির্বাহ, শর্ত সাপেক্ষে কোন এক বা একাধিক স্টেটমেন্ট নির্বাহ, এক স্টেটমেন্ট থেকে অন্য স্টেটমেন্টে প্রোগ্রামের নিয়ন্ত্রণ স্থানান্তর ইত্যাদি) করার প্রয়োজন হয়।যে সকল স্টেটমেন্ট এর সাহায্যে প্রোগ্রাম স্টেটমেন্টসমূহের পর্যায়ক্রমিক নির্বাহ নিয়ন্ত্রণ করা যায়, তাদেরকে কন্ট্রোল স্টেটমেন্ট বলে।

কন্ট্রোল স্টেটমেন্ট সমূহঃ

·          কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট/ ডিসিশন কন্ট্রোল স্টেটমেন্ট

·         লুপ কন্ট্রোল স্টেটমেন্ট

·         জাম্পিং কন্ট্রোল স্টেটমেন্ট

 

কন্ডিশনাল কন্ট্রোল স্টেটমেন্টঃ সি প্রোগ্রামে শর্তসাপেক্ষে এক বা একাদিক স্টেটমেন্ট নির্বাহের জন্য কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট ব্যবহৃত হয়। কন্ডিশনাল কন্ট্রোল স্টেটমেন্টে ব্যবহৃত শর্ত সত্য হলে প্রোগ্রামে এক ধরনের ফলাফল পাওয়া যায় এবং মিথ্যা হলে অন্য ধরনের ফলাফল পাওয়া যায়।

সি প্রোগ্রামিং ভাষায় কন্ডিশনাল কন্ট্রোল স্টেটমেন্টসমূহঃ 

·          if স্টেটমেন্ট

·          if-else স্টেটমেন্ট

·         else if স্টেটমেন্ট

·          nested if-else স্টেটমেন্ট

·          switch স্টেটমেন্ট

 

if স্টেটমেন্টঃ প্রোগ্রামে শর্ত সাপেক্ষে এক বা একাধিক স্টেটমেন্ট নির্বাহের জন্য if স্টেটমেন্ট ব্যবহার করা হয়। এক্ষেত্রে if স্টেটমেন্ট তার কন্ডিশনটি চেক করে। যদি কন্ডিশন সত্য হয় তাহলে বডির মধ্যে অবস্থিত স্টেটমেন্টসমূহ নির্বাহ হয়। আর যদি কন্ডিশন মিথ্যা হয় তাহলে বডির মধ্যে অবস্থিত স্টেটমেন্টসমূহ নির্বাহ হয় না। if স্টেটমেন্ট ব্যবহারের ফরম্যাট হলো-

 

কীবোর্ড থেকে কোনো সংখ্যা ইনপুট দিয়ে দেখবে সংখ্যাটি ধনাত্নক কিনা?

 

if-else স্টেটমেন্ট: if-else স্টেটমেন্টের ক্ষেত্রে if এর কন্ডিশনটি সত্য হলে নির্দিস্ট স্টেটমেন্টসমূহ নির্বাহ হয়। আর যদি প্রোগ্রামের কোন কন্ডিশন সত্য না হয়, তাহলে else এর স্টেটমেন্টসমূহ নির্বাহ হয়। সি প্রোগ্রামে অন্যথায় অর্থে  else স্টেটমেন্ট ব্যবহৃত হয়। else স্টেটমেন্টে কোন কন্ডিশন থাকে না। if-else স্টেটমেন্ট ব্যবহারের ফরম্যাট হলো-

 

 

কীবোর্ড থেকে কোনো সংখ্যা ইনপুট দিয়ে দেখবে সংখ্যাটি ধনাত্নক  না ঋনাত্নক।

else if স্টেটমেন্ট: প্রোগ্রামে যদি একাধিক কন্ডিশন যাচাই করতে হয় তাহলে প্রথম কন্ডিশন যাচাই করার জন্য if  স্টেটমেন্ট ব্যবহার করা হয়। তারপরের কন্ডিশন গুলো যাচাই করার জন্য else if  স্টেটমেন্ট ব্যবহার করা হয়। সি প্রোগ্রামে অন্যথায় যদি অর্থে  else if  স্টেটমেন্ট ব্যবহার করা হয়। else if স্টেটমেন্ট ব্যবহারের ফরম্যাট হলো-

 

কীবোর্ড থেকে কোনো সংখ্যা ইনপুট দিয়ে দেখবে সংখ্যাটি শূন্য, ধনাত্নক  অথবা ঋনাত্নক।

 

 

 

 

 

 

 

 

nested if-else স্টেটমেন্টঃ একটি if-else স্টেটমেন্টের মধ্যে যখন অন্য এক বা একাধিক if-else স্টেটমেন্ট ব্যবহৃত হয় তখন তাকে nested if-else স্টেটমেন্ট বলে। nested if-else স্টেটমেন্ট ব্যবহারের ফরম্যাট হলো-

লিপ ইয়ার( অধিবর্ষ) নির্নয়ের প্রোগ্রাম। 

নোটঃ প্রতিটি কন্ট্রোল স্টেটমেন্টের জন্য একাধিক স্টেটমেন্ট ব্যবহৃত হলে স্টেটমেন্টসমূহ কার্লিব্রেস {} এর মধ্যে লিখতে হয়। আর যদি একটি স্টেটমেন্ট ব্যবহৃত হয় তাহলে কার্লিব্রেস {} এর মধ্যে না লিখলেও সমস্যা নেই। উপরের উদাহরণে প্রতিটি কন্ট্রোল স্টেটমেন্টের জন্য একটি স্টেটমেন্ট লেখা আছে তাই কার্লিব্রেস {} এর মধ্যে লেখা হয় নি।

 

switch স্টেটমেন্টঃ প্রোগ্রামে একাধিক কন্ডিশন লেখার ক্ষেত্রে else if স্টেটমেন্ট ব্যবহার করা হয়। অনেক বড় প্রোগ্রামের ক্ষেত্রে else if স্টেটমেন্ট ব্যবহার করে প্রোগ্রাম লেখা কষ্টকর। তাই এই ক্ষেত্রে else if স্টেটমেন্ট এর পরিবর্তে switch স্টেটমেন্ট ব্যবহার করে প্রোগ্রাম লেখা সহজ। switch স্টেটমেন্ট ব্যবহারের ফরম্যাট হলো-

 

switch স্টেটমেন্টের expression এর মানের সাথে যে case constant টি ম্যাচিং করবে সেই case এর কোড ব্লকটি নির্বাহ হবে।যদি কোন case constant এর সাথে না মিলে তাহলে default কোড ব্লকটি নির্বাহ হবে।

switch স্টেটমেন্ট সম্পর্কে গুরুত্বপূর্ণ তথ্যঃ

·          switch স্টেটমেন্টে case constant গুলোর মান char(A, B../ a,b’…/+,-‘…ইত্যাদি) অথবা int(,,) টাইপ হতে হবে। case constant এর মান char টাইপের হলে তা সিঙ্গেল কোটেশনের( ) মধ্যে লিখতে হয়।

·           একটি switch স্টেটমেন্টের case constant গুলোর মান অবশ্যই ভিন্ন ভিন্ন হতে হবে।

·         case constant গুলোর শেষে কোলন ( : ) থাকতে হবে।

·         প্রতিটি case এর শেষে break কিওয়ার্ড থাকতে হবে।

·         একাধিক case এর জন্য একই কোড ব্লক হতে পারবে।

·         একটি মাত্র ডিফল্ট case থাকতে পারে।

 

উদাহরণ-১ঃ দুইটি সংখ্যা ইনপুট নিয়ে switch স্টেটমেন্টের সাহায্যে যোগ অথবা বিয়োগ অথবা গুন অথবা ভাগ করার একটি প্রোগ্রাম।

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ-১৫ কন্ডিশনাল কন্ট্রোল স্টেটমেন্ট সম্পর্কিত প্রোগ্রাম সমূহ।

 

কোন সংখ্যা জোড়/বিজোড় নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

কোন সংখ্যা ধনাত্মক/ঋণাত্মক নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

কোন একটি সাল লিপ ইয়ার(Leap Year ) নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

অধিবর্ষ বা লিপ ইয়ার হচ্ছে একটি বিশেষ বছর, যাতে সাধারণ বছরের তুলনায় একটি দিন বেশি থাকে।জোতির্বৈজ্ঞানিক বছর বা পৃথিবী যে সময়ে সূর্যের চারপাশে একবার ঘুরে আসে তার সময়কাল হচ্ছে প্রায় ৩৬৫ দিন ঘন্টা ৪৮ মিনিট ৪৭ সেকেন্ড, অথচ প্রচলিত গ্রেগরীয় বর্ষপঞ্জিমতে বছর হিসাব করা হয় ৩৬৫ দিনে। এভাবে প্রতিবছর প্রায় ছয় ঘণ্টা সময় গোনার বাইরে থেকে যায় চার বছরে সেটা প্রায় এক দিনের সমান হয়। এই ঘাটতি পুষিয়ে নেয়ার জন্য প্রতি চার বছর পরপর ৩৬৬ দিনে বছর হিসাব করা হয়। গ্রেগরীয় বর্ষপঞ্জিমতে, প্রতি চার বছরে একবার ফেব্রুয়ারি মাসে  বাংলা সনমতে ফাল্গুন মাসে এই অতিরিক্ত দিন যোগ হয়। যেমন: ২০১২ একটি অধিবর্ষ এর ফেব্রুয়ারি মাস হয়েছে ২৯ দিনে।

 

দুটি সংখ্যার মধ্যে বড় সংখ্যা নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

দুটি পূর্ণ সংখ্যার .সা.গু. নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

.সা.গু শব্দের পূর্ণরুপ হল লঘিষ্ঠ সাধারণ গুণিতক। একটি সংখ্যা কোন সংখ্যা দ্বারা বিভাজ্য হলে প্রথম সংখ্যাটিকে দ্বিতীয় সংখ্যার গুণিতক বলে আর দ্বিতীয় সংখ্যাটিকে প্রথম সংখ্যার গুণনীয়ক বলে। যেমনঃ ১২ কে দ্বারা ভাগ করলে নিঃশেষে বিভাজ্য হবে সেক্ষেত্রে ১২ সংখ্যাটি এর গুণিতক আর ১২ এর গুণনীয়ক হচ্ছে

 

 

 

 

 

 

 

 

 

 

 

 

 

 

দুটি পূর্ণ সংখ্যার .সা.গু. নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

.সা.গু. শব্দের পূর্ণরুপ হল গরিষ্ঠ সাধারণ গুণনীয়ক। একটি সংখ্যা কোন সংখ্যা দ্বারা বিভাজ্য হলে প্রথম সংখ্যাটিকে দ্বিতীয় সংখ্যার গুণিতক বলে আর দ্বিতীয় সংখ্যাটিকে প্রথম সংখ্যার গুণনীয়ক বলে। যেমনঃ ১২ কে দ্বারা ভাগ করলে নিঃশেষে বিভাজ্য হবে সেক্ষেত্রে ১২ সংখ্যাটি এর গুণিতক আর ১২ এর গুণনীয়ক হচ্ছে

 

  তিনটি সংখ্যার মধ্যে সবচেয়ে ছোট সংখ্যা নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

 

 

 

তিনটি সংখ্যার মধ্যে মাঝারি সংখ্যা নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

তিনটি সংখ্যার মধ্যে সবচেয়ে বড় সংখ্যা নির্নয়ের জন্য সি প্রোগ্রামিং ভাষায় একটি প্রোগ্রাম।

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ-১৬সিপ্রোগ্রামিং ভাষায় লুপ কন্ট্রোল স্টেটমেন্ট।

 

লুপঃ প্রোগ্রামের এক বা একাধিক স্টেটমেন্ট নির্দিস্ট সংখ্যক বার পুনরাবৃত্তি করাকে লুপ বা লুপিং বলে।

লুপের প্রকারভেদ:

·         সসীম লুপ – যদি কোন লুপ নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি হয়, তখন তাকে সসীম লুপ বলে।

·         অসীম লুপ  যদি কোন লুপ অনবরত পুনরাবৃত্তি হতে থাকে, অর্থাৎ কখনো শেষ না হয় তবে তাকে অসীম লুপ বলে।

·         মধ্যবর্তী লুপ  একটি লুপের মধ্যে যদি অপর একটি লুপ থাকে তাহলে তাকে মধ্যবর্তী বা নেস্টেড লুপ বলে।

 

লুপ কন্ট্রোল স্টেটমেন্টঃ প্রোগ্রামের এক বা একাধিক স্টেটমেন্ট নির্দিস্ট সংখ্যক বার পুনরাবৃত্তি করার জন্য যে কন্ট্রোল স্টেটমেন্ট ব্যবহৃত হয় তাকে লুপ কন্ট্রোল স্টেটমেন্ট বলে।

লুপ কন্ট্রোল স্টেটমেন্ট সমূহঃ 

·         for লুপ স্টেটমেন্ট

·         while লুপ স্টেটমেন্ট

·         dowhile লুপ স্টেটমেন্ট

 

প্রত্যেক লুপ কন্ট্রোল স্টেটমেন্টের  দুটি অংশ থাকে। যথা-

·         লুপ ডিক্লারেশন

·         লুপ বডি

লুপ ডিক্লারেশন তিনটি প্রধান অংশ- 

·         Initialization Statement- এই অংশে ভেরিয়েবলের প্রাথমিক মান নির্ধারন করা হয়।

·         Test Expression – এই অংশে শর্ত লেখা হয়। শর্ত মিথ্যা না হওয়া পর্যন্ত লুপ বডি পুনরাবৃত্তি হয়।

·         Update Statement- প্রতিবার লুপ বডি পুনরাবৃত্তির পর ভেরিয়েবলের মান হ্রাস/বৃদ্ধি নির্ধারণ করা হয় এই অংশে।

লুপ বডি- যে স্টেটমেন্টগুলো পুনরাবৃত্তি হবে তা { } এর মধ্যে থাকে, যা লুপ বডি হিসেবে বিবেচিত হয়।

 

লুপ স্টেটমেন্টের লুপ বডি এবং টেস্ট কন্ডিশনের অবস্থানের ভিত্তিতে লুপ স্টেটমেন্টসমূহকে দুই ভাগে ভাগ করা যায়। যথা-

·         এন্ট্রি কন্ট্রোল লুপ স্টেটমেন্ট

·         এক্সিট কন্ট্রোল লুপ স্টেটমেন্ট

এন্ট্রি কন্ট্রোল লুপ স্টেটমেন্টঃ লুপ বডি নির্বাহের পূর্বে টেস্ট কন্ডিশন যাচাই করা হয়। কন্ডিশন সত্য হলেই কেবলমাত্র লুপ বডি নির্বাহ হয়। উদাহরণঃ for লুপ স্টেটমেন্ট, while loop স্টেটমেন্ট।

এক্সিট কন্ট্রোল লুপ স্টেটমেন্টঃ প্রথমবার টেস্ট কন্ডিশন যাচাই না করেই লুপ বডি নির্বাহ হয়। তারপর কন্ডিশন যাচাই করা হয়। কন্ডিশন সত্য হলে লুপ বডি নির্বাহ হয়। উদাহরণঃ do-while loop স্টেটমেন্ট।

 

 

 

for লুপ স্টেটমেন্টঃ সি প্রোগ্রামে শর্ত সাপেক্ষে এক বা একাধিক স্টেটমেন্ট নির্দিষ্ট সংখ্যকবার নির্বাহ করতে for লুপ স্টেটমেন্ট ব্যবহার করা হয়। লুপ বডির কোড নির্বাহের পূর্বে কন্ডিশন চেক করে। লুপ কতবার নির্বাহ হবে তা জানা থাকলেই কেবলমাত্র for লুপ ব্যবহার করা যায়। নিম্নে for লুপ স্টেটমেন্টের ফরম্যাট দেওয়া হলো-

for loop যেভাবে কাজ করে-

·         প্রথমে Initialization Statement নির্বাহ হয়  লুপ স্টেটমেন্টে Initialization Statement কেবলমাত্র একবার নির্বাহ হয়।

·         তারপর Test Expression চেক করে। যদি Test Expression সত্য হয় তাহলে লুপ বডির কোড নির্বাহ হয় এবং Update Expression এর মান আপডেট হয়। Test Expression মিথ্যা না হওয়া পর্যন্ত ধাপ- পুনরাবৃত্তি হতে থাকে।

·         যদি Test Expression মিথ্যা হয়, তাহলে প্রোগ্রাম নির্বাহ লুপ থেকে বের হয়ে আসে।

 

for লুপের ফ্লোচার্টঃ

 

 

 

 

 

 

এবারে আমরা for loop ব্যবহার করে Hello World লেখাটি বার প্রিন্ট করার প্রোগ্রাম তৈরি করব।

while loop স্টেটমেন্টঃসিপ্রোগ্রামে শর্ত সাপেক্ষে এক বা একাধিক স্টেটমেন্ট নির্দিষ্ট সংখ্যকবার নির্বাহ করতে while loop স্টেটমেন্ট ব্যবহার করা হয় লুপ বডির কোড নির্বাহের পূর্বে কন্ডিশন চেক করে while loop কে for loop এর বিকল্প হিসাবে ব্যবহার করা যায় লুপ কতবার নির্বাহ হবে তা অজানা থাকলে while লুপ ব্যবহার করা হয় while loop স্টেটমেন্টের ফরম্যাট হলো-

 

while loop যেভাবে কাজ করে-

·         প্রথমে Test Expression চেক করে। যদি Test Expression সত্য হয় তাহলে লুপ বডির কোড নির্বাহ হয় এবং পূনরায় Test Expression চেক করে। Test Expression মিথ্যা না হওয়া পর্যন্ত এই প্রক্রিয়া পুনরাবৃত্তি হতে থাকে।

·         যদি Test Expression মিথ্যা হয়, তাহলে প্রোগ্রাম নির্বাহ লুপ থেকে বের হয়ে আসে।

 

while লুপের ফ্লোচার্টঃ

 

 

do-while loop স্টেটমেন্ট: ‘সিপ্রোগ্রামে শর্ত সাপেক্ষে এক বা একাধিক স্টেটমেন্ট নির্দিষ্ট সংখ্যকবার নির্বাহ করতে          do-while loop স্টেটমেন্ট ব্যবহার করা হয়। do-while লুপের কন্ডিশন যাচাই না করে লুপ বডি অন্ততপক্ষে একবার নির্বাহ হয়। কারণ এখানে কন্ডিশন পরে যাচাই হয়। do-while loop  টি do loop নামেও পরিচিত। তবে প্রোগ্রামে for এবং while লুপের চেয়ে do-while loop লুপ কম ব্যবহৃত হয়। do-while loop এর গঠন হচ্ছে-

 

do-while loop যেভাবে কাজ করে-

·          প্রথমে লুপ বডির কোড একবার নির্বাহ হয়।

·         তারপর Test Expression চেক করে। যদি Test Expression সত্য হয় তাহলে লুপ বডির কোড নির্বাহ হয় এবং পূনরায় Test Expression চেক করে। Test Expression মিথ্যা না হওয়া পর্যন্ত এই প্রক্রিয়া পুনরাবৃত্তি হতে থাকে।

·         যদি Test Expression মিথ্যা হয়, তাহলে প্রোগ্রাম নির্বাহ লুপ থেকে বের হয়ে আসে।

 

 

 

 

 

 

 

 

 

 

do-while লুপের ফ্লোচার্টঃ

 

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ-১৭ লুপ কন্ট্রোল স্টেটমেন্ট সম্পর্কিত প্রোগ্রাম সমূহ।

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ-১৮ continue স্টেটমেন্ট, break স্টেটমেন্ট goto স্টেটমেন্ট।

continue স্টেটমেন্টঃ ‘সিপ্রোগ্রামে লুপ কন্ট্রোল স্টেটমেন্টের লুপ বডির এক বা একধিক স্টেটমেন্ট নির্বাহ না হয়ে পুনরায় প্রথম থেকে নির্বাহের জন্য continue স্টেটমেন্ট ব্যবহৃত হয়। continue স্টেটমেন্ট শর্তযুক্ত এবং শর্তবিহীন উভয় ভাবে ব্যবহার করা যায়। তবে শর্তবিহীন continue স্টেটমেন্ট অসীম লুপের সৃস্টি করে। continue স্টেটমেন্টের ফরম্যাটঃ

 

 

 

break স্টেটমেন্টঃ লুপ কন্ট্রোল স্টেটমেন্টের লুপ বডির স্টেটমেন্টগুলো সাধারণত Test Expression মিথ্যা না হওয়া পর্যন্ত পুনরাবৃত্তি করতে থাকে।  কিন্তু Test Expression মিথ্যা হওয়ার পুর্বেই লুপ থেকে বের হওয়ার জন্য break স্টেটমেন্ট ব্যবহার করা হয়। break স্টেটমেন্ট loops অথবা switch স্টেটমেন্টে ব্যবহৃত হয়। যখন break স্টেটমেন্ট কাজ করে তখন প্রোগ্রাম কন্ট্রোল লুপ থেকে বের হয়ে যায় এবং লুপের বাইরে প্রথম স্টেটমেন্ট থেকে প্রোগ্রাম নির্বাহ হতে থাকে।  নেস্টেড লুপের ক্ষেত্রে প্রোগ্রাম কন্ট্রোল, প্রথমে ভেতরের লুপ থেকে বের হয়ে আসে এবং পরে বাইরের লুপ থেকে বের হয়ে আসে। সাধারণত break স্টেটমেন্ট এমন একটি অবস্থায় ব্যবহার করা হয় যখন লুপটি কতবার পুনরাবৃত্তি হবে তা আমাদের কাছে অজানা অথবা কোন শর্তের ভিত্তিতে প্রোগ্রাম কন্ট্রোল লুপ থেকে বের হয়ে আসা।

break স্টেটমেন্টের ফরম্যাটঃ

 

 

 

goto স্টেটমেন্টঃ goto স্টেটমেন্টকে জাম্পিং স্টেটমেন্ট বলা হয়।  ‘সিভাষায় প্রোগ্রাম নির্বাহের নিয়ন্ত্রণ শর্তযুক্ত বা শর্তবিহীন ভাবে এক স্টেটমেন্ট থেকে উপরে বা নিচে অপর কোন স্টেটমেন্টে বা প্রোগ্রামের পূর্বনির্ধারিত কোন স্থানে স্থানান্তরের জন্য goto স্টেটমেন্ট ব্যবহার করা হয়। একটি নির্দিস্ট শর্তের জন্য প্রোগ্রামের একটি নির্দিস্ট অংশ পুনরাবৃত্তি করতেও goto স্টেটমেন্ট ব্যবহার করা যায়। এছাড়া মাল্টিপল লুপ ব্রেক করতেও goto স্টেটমেন্ট ব্যবহার করা যায় যা একটি সিঙ্গেল break স্টেটমেন্ট দিয়ে সম্ভব নয়। যাইহোক, goto স্টেটমেন্টের এর ব্যবহার খুবই কম। কারণ এটি প্রোগ্রামকে জটিল বিব্রান্তি করে। 

goto স্টেটমেন্টের ফরম্যাটঃ

 

 

 

 

 

 

পঞ্চম অধ্যায় পাঠ-১৯সিপ্রোগ্রামিং ভাষায় অ্যারে।

 

অ্যারেঃ অ্যারে হলো এক ধরণের ডেটা স্ট্রাকচার, যা একই ধরনের বা সমপ্রকৃতির চলকের সমাবেশ। অ্যারে একটি ডিরাইভড ডেটা টাইপ। একই টাইপের অনেকগুলো চলক নিয়ে কাজ করার প্রয়োজন হলে তখন চলক ঘোষনার পরিবর্তে অ্যারে ঘোষণা করা হয়। অ্যারেকে সাধারণত দুই ভাগে ভাগ করা হয়। যথা:

·         একমাত্রিক অ্যারে

·         বহুমাত্রিক অ্যারে (দ্বিমাত্রিক অ্যারে,..)

 

একমাত্রিক অ্যারে: একমাত্রিক অ্যারে হলো এক ধরণের লিনিয়ার অ্যারে। অ্যারের অন্তর্ভুক্ত উপাদান বা ডেটাগুলো যদি একটি মাত্র কলাম একাধিক সারি অথবা একটি মাত্র সারি এবং একাধিক কলামে উপস্থাপন করা হয় তাকে একমাত্রিক অ্যারে বলা হয়। একমাত্রিক অ্যারে ঘোষণার ফরম্যাটঃ

Data_Type Array_Name [ array_size ]; 

array_size বলতে বুঝায় অ্যারেতে কয়টি চলক থাকবে। এই array_size অবশ্যই একটি পূর্ণসংখ্যা হতে হবে এবং এর মান শূন্য() এর চেয়ে বড় হতে হবে।   Array_Name লেখার ক্ষেত্রে চলক ঘোষণার নিয়ম মেনে লিখতে হবে। Data_Type  বলতে বুঝায় চলকগুলোতে কী ধরণের ডেটা থাকবে এবং এটি ‘সিভাষার যেকোন বৈধ্য ডেটা টাইপ হতে পারে।

উদাহরণঃ

·         int id [5];

·         float marks[5];

ব্যাখ্যাঃ যখন int id [5]; অ্যারে ঘোষণা করা হয়, তখন int টাইপের নিচের মত পাঁচটি চলক ঘোষণা হয়।

·         int id [0];

·         int id [1];

·         int id [2];

·         int id [3];

·         int id [4];

 

অ্যারের মান নির্ধারণঃ অ্যারের মান  তিনটি উপায়ে নির্ধারন করা যায়। যথা-

·         অ্যারে ঘোষণার সময়

·         অ্যারে ঘোষণার পরে

·         প্রোগ্রাম নির্বাহের সময়

 

অ্যারে ঘোষণার সময় মান নির্ধারণঃ  int id [5]; এই অ্যারের মান অ্যারে ঘোষণার সময় নিমোক্ত উপায়ে নির্ধারণ করা যায়।

int id [5]={101, 102, 103, 104, 105};

মানগুলো অ্যারেতে নিমোক্ত ভাবে নির্ধারণ হবে-

·         int id [0]=101;

·         int id [1]=102;

·         int id [2]=103;

·         int id [3]=104;

·         int id [4]=105;

অ্যারে ঘোষণার পরে মান নির্ধারণঃ  int id [5]; এই অ্যারের মান অ্যারে ঘোষণার পর নিমোক্ত উপায়ে নির্ধারণ করা যায়।

int id [5]; // অ্যারে ঘোষণা

তারপর অ্যারের মান নির্ধারণ-

·         id [0]=101;

·         id [1]=102;

·         id [2]=103;

·         id [3]=104;

·         id [4]=105;

 

প্রোগ্রাম নির্বাহের সময় মান নির্ধারণঃ অ্যারের সিঙ্গেল চলকের মান নির্ধারণ করা যায়। আবার লুপ স্টেটমেন্ট ব্যবহার করে অ্যারের সবগুলো চলকের মানও নির্ধারণ করা যায়।  লুপ ব্যবহার করে int id [5]; অ্যারের মান নির্ধারণ-

দ্বিমাত্রিক অ্যারে: যে অ্যারের উপাদানগুলো একই সাথে একাধিক সারি একাধিক কলামে উপস্থাপন করা হয় তাকে দ্বিমাত্রিক অ্যারে বলা হয়। দ্বিমাত্রিক অ্যারে ঘোষণার ফরম্যাটঃ

Data_Type Array_Name [ row_size ][ column_size ]; 

row_size এবং column_size যথাক্রমে দ্বিমাত্রিক অ্যারের সারি এবং কলাম সংখ্যা বুঝায়। এই row_size এবং column_size অবশ্যই একটি পূর্ণসংখ্যা হতে হবে এবং এর মান শূন্য() এর চেয়ে বড় হতে হবে।   Array_Name লেখার ক্ষেত্রে চলক ঘোষণার নিয়ম মেনে লিখতে হবে। Data_Type  বলতে বুঝায় চলকগুলোতে কী ধরণের ডেটা থাকবে এবং এটি ‘সি ভাষার যেকোন বৈধ্য ডেটা টাইপ হতে পারে।

উদাহরণঃ একটি 3×4 ম্যাট্রিক্স এর ডেটাগুলো অ্যারেতে রাখার জন্য নিমোক্ত ভাবে দ্বিমাত্রিক অ্যারে ঘোষণা করতে হবে-

int mat [3][4];

 

অ্যারে ব্যবহারের সুবিধা:

·         একই প্রকৃতির অনেকগুলো ডেটা আইটেম একটি সিঙ্গেল নামের মাধ্যমে উপস্থাপন করা যায়।

·         বিভিন্ন ডেটা স্ট্রাকচার যেমন- লিংক লিস্ট, স্ট্যাক, কিউ, ট্রি, গ্রাফ ইত্যাদি বাস্তবায়নে অ্যারে ব্যবহার করা যায়।

·         প্রোগ্রাম নির্বাহ দ্রুত হয়।

·         উপাদানগুলোর জন্য অতিরিক্ত মেমোরি স্পেস বরাদ্ধ করে না। ফলে অ্যারেতে মেমোরি ওভারফ্লো মেমোরি আন্ডারফ্লো হয় না।

·         দ্বিমাত্রিক অ্যারের সাহায্যে ম্যাট্রিক্স উপস্থাপন করা যায়।

 

অ্যারে ব্যবহারের অসুবিধা:

·         অ্যারেতে কতোগুলো উপাদান থাকবে তা পূর্বে থেকেই জানা থাকতে হয়।

·         অ্যারে একটি স্ট্যাটিক স্ট্রাকচার। অর্থাৎ প্রোগ্রাম নির্বাহের সময়ে ঘোষণাকৃত অ্যারের সাইজ কখনো পরিবর্তন করা যায় না।

·         যেহেতু অ্যারের সাইজ পরিবর্তন করা যায় না, তাই প্রকৃত ডেটা অপেক্ষা অ্যারের সাইজ অনেক বেশি ঘোষণা করলে মেমোরির অপচয় হবে। আবার প্রকৃত ডেটা অপেক্ষা অ্যারের সাইজ কম ঘোষণা করলেও সমস্যা সৃষ্টি করতে পারে।

·         অ্যারের উপাদানগুলো মেমোরিতে পাশাপাশি অবস্থান করে। তাই ডেটা ইনসার্ট এবং ডিলেট করা কঠিন এবং সময় সাপেক্ষ।

 

 

 

পঞ্চম অধ্যায় পাঠ-২০সিপ্রোগ্রামিং ভাষায় ফাংশন।

 

ফাংশন: ফাংশন হলো কতগুলো স্টেটমেন্টের সমষ্টি যা একত্রে একটি নির্দিষ্ট কাজ সম্পাদন করে। প্রতিটি ফাংশন ইনপুট নেয়, প্রসেস করে এবং একটি আউটপুট দেয়। প্রতিটিসিপ্রোগ্রাম এরূপ এক বা একাধিক ফাংশনের সমষ্টি।

Syntax of a function:

ফাংশন ডিক্লারেশনঃ ফাংশন ডিক্লারেশন ফাংশনের রিটার্ন টাইপ, ফাংশনের নাম, ফাংশনের প্যারামিটার সম্পর্কে কম্পাইলারকে তথ্য দেয়।

·         ফাংশনের রিটার্ন টাইপ – প্রতিটি ফাংশন একটি মান রিটার্ন করে থাকে ফাংশনটি কী টাইপের ডেটা রিটার্ন করবে তা Return_type নির্ধারণ করে কিছু ফাংশন কাঙ্ক্ষিত অপারেশন করলেও অনেক সময় কোন মান রিটার্ন করে না এই ক্ষেত্রে Return_type হয় void

·         ফাংশনের নামফাংশনের নাম একটি আইডেন্টিফায়ার যা যেকোন নাম হতে পারে তবে ফাংশনের নাম অর্থপূর্ণ হওয়া উচিৎ, যাতে নাম দেখেই ফাংশনের উদ্দেশ্য বুঝা যায় ফাংশনের নাম লেখার ক্ষেত্রে আইডেন্টিফায়ার এর নিয়ম অনুসরণ করে লেখতে হয়

·         ফাংশন প্যারামিটার– প্যারামিটার অংশে ডেটা টাইপ সহ চলক থাকে, যা ফাংশনটি কী ধরণের কয়টি ডেটা ইনপুট নিবে তা নির্ধারণ করে এটি অপশনাল অর্থাৎ ফাংশনে প্যারামিটার থাকতেও পারে নাও পারে

ফাংশন ডেফিনেশনঃ ফাংশনটি যে কাজ করবে তার জন্য প্রয়োজনীয় কোড এই অংশে লেখা হয়।

 

সি প্রোগ্রামে ব্যবহৃত ফাংশন সমূহকে দুটি ভাগে ভাগ করা হয়। যথা

·         লাইব্রেরি ফাংশন

·         ইউজার-ডিফাইন্ড ফাংশন

লাইব্রেরি ফাংশনঃ লাইব্রেরি ফাংশন হলো এমন একটা ফাংশন যার ডেফিনেশন প্রোগ্রামারকে লিখতে হয় না। যেগুলো বিশেষ কিছু কার্য সম্পাদনের জন্য সি কম্পাইলারে বিল্ট-ইন থাকে। শুধু প্রয়োজনে সেগুলোকে তাদের  নিজস্ব ফরম্যাট অনুযায়ী main () ফাংশনে ব্যবহার বা কল করা হয়। যেমন- scanf(), printf(), gets(), puts(), getchar(), putchar(), abs(), pow(b,p), sqrt(), sin(), cos(), tan(), rand() ইথ্যাদি হচ্ছে লাইব্রেরি ফাংশন। এক্ষেত্রে প্রতিটি লাইব্রেরী ফাংশনের নিজস্ব হেডার ফাইল প্রোগ্রামের শুরুতে লিখে দিতে হয়। লাইব্রেরি ফাংশন দুই প্রকার

সংখ্যাবাচক ফাংশন : যে ফাংশন গাণিতিক কার্য সম্পাদন  করে  তাকে  সংখ্যাবাচক ফাংশন বলে। যেমন- pow(b,p), sqrt(), sin(), rand() ইত্যাদি।

স্ট্রিং ফাংশন: যে ফাংশন কোনো স্ট্রিং নিয়ে কাজ করে তাকে স্ট্রিং ফাংশন বলে। যেমন- strcpy(), strcat(), strcmp() ইত্যাদি।

 

বিভিন্ন লাইব্রেরী ফাংশন তাদের হেডার ফাইলঃ

লাইব্রেরী ফাংশন

হেডার ফাইল

scanf(),printf(), gets(), puts(), getchar(), putchar()

<stdio.h>

sqrt(), pow(), abs(), sin(), cos(), tan(), rand()

<math.h>

clrscr(), getch()

<conio.h>

strcpy(), strcat(), strcmp()

<string.h>

 

ইউজার-ডিফাইন্ড ফাংশন: ইউজার-ডিফাইন্ড ফাংশন হলো এমন একটা ফাংশন যার ডেফিনেশন প্রোগ্রামারকে লিখতে হয়। যেমন main() ফাংশন একটি ইউজার-ডিফাইন্ড ফাংশন। কারণ এর  ডেফিনেশন প্রোগ্রামার লিখে থাকে। একটি প্রোগ্রামে অবশ্যই একটি main() ফাংশন থাকতে হবে। কারণ কম্পাইলার প্রথমে main() ফাংশন খুজে বের করে এবং সেখান থেকে কাজ শুরু করে। main() ফাংশন ছাড়াও প্রোগ্রামে প্রয়োজনে ইউজার-ডিফাইন্ড ফাংশন তৈরি করে ব্যবহার করা যায়।

 

ফাংশনের প্রয়োজনীয়তা: 

·         ফাংশনের সাহায্যে প্রোগ্রাম সংক্ষিপ্ত আকারে রচনা করা যায়

·         ফাংশন ব্যবহারে একই ধরনের কাজের জন্য একই ধরনের স্টেটমেন্ট বার বার লেখার প্রয়োজন হয় না অর্থাৎ কোড পুনব্যবহার করা যায়

·         প্রোগ্রামের ভুল সংশোধন বা ডিবাগিং করা সহজ হয়

·         ব্যবহারকারী তার প্রয়োজন অনুযায়ী ফাংশন তৈরি করে কার্য সম্পাদন করতে পারে

 

ফাংশনের উপাদানঃ সি প্রোগ্রামে কোনো ইউজার ডিফাইন্ড ফাংশন ব্যবহার করতে গেলে সাধারণত নিম্ন লিখিত চারটি বিষয় বিবেচনা করতে হয়।

·         () ফাংশন বর্ণনা

·         () ফাংশন কল

·         () ফাংশনের প্রোটোটাইপ

·         () ফাংশনের রিটার্ন টাইপ রিটার্ন স্টেটমেন্ট

 

রিকার্সিভ ফাংশনঃ একটি ফাংশন অন্য যেকোনো ফাংশনকে যেকোনো সংখ্যক বার কল করতে পারে। আবার একটি ফাংশন নিজেও নিজেকে কল করতে পারে। যখন কোনো ফাংশন নিজেই নিজেকে কল করে তখন সেই ফাংশনকে রিকার্সিভ ফাংশন বলা হয় এবং এই প্রক্রিয়াকে রিকার্সন বলা হয়। যখন রিকার্সন ব্যবহার করা হয়, তখন প্রোগ্রামারকে অবশ্যই সচেতন থাকতে হবে যেন একটি এক্সিট কন্ডিশন থাকে, অন্যথায় অসীম লুপের সৃষ্টি হবে। বিভিন্ন গাণিতিক সমস্যা যেমন- একটি সংখ্যার ফ্যাক্টরিয়াল গণনা, ফিবোনাচি সিরিচ তৈরি ইত্যাদি সমাধান করতে রিকার্সিভ ফাংশন খুবই কার্যকরি।

 

রিকার্সিভ ফাংশন ব্যবহারের সুবিধা:

·         ফাংশনের অপ্রয়োজনীয় কলিং করতে হয় না

·         রিকার্সনের সাহায্যে সমস্যাকে সহজভাবে সমাধান করা যায়, যেখানে ইটারেটিভ(লুপিং) সমাধান অনেক বড় এবং জটিল

·         একই সমাধান প্রয়োগের ক্ষেত্রে এটি খুবই কার্যকরী

রিকার্সিভ ফাংশন ব্যবহারের অসুবিধা: 

·         রিকার্সিভ সমাধান সর্বদা লজিক্যাল এবং এর সমস্যা সনাক্ত করা কঠিন

·         ইটারেটিভ(লুপিং) সমাধানের চেয়ে রিকার্সিভ ফাংশন নির্বাহে বেশি সময় লাগে

·         বেশি স্ট্যাক স্পেসের প্রয়োজন হয়

 

ফাংশন চেনার সহজ উপায়ঃ  ফাংশন চেনার সহজ উপায় হলো ফাংশনের নামের শেষে এক জোড়া প্রথম বন্ধনী ( ) থাকে, এই প্রথম বন্ধনীর মধ্যে অনেক কিছু থাকতে পারে, আবার নাও থাকতে পারে। প্রতিটি ফাংশনের একটি নাম থাকে, যে নামে কম্পাইলার তাকে সনাক্ত করে। প্রোগ্রাম নির্বাহের সময়ে কম্পাইলার যখন কোনো ফাংশন কল করে তখন মূল প্রোগ্রামের  কাজ স্থগিত রেখে কল  ফাংশনে  নির্বাহ শুরু করে এবং নির্বাহ শেষে মূল ফাংশনে প্রত্যাবর্তন পূর্বক পরবর্তী লাইন থেকে নির্বাহ চালিয়ে যায়। তবে এই প্রক্রিয়ায় অতিরিক্ত কিছুটা সময় ব্যয় হয়। তাই ছোট কোনো প্রোগ্রামের জন্য সাধারণত ফাংশন ব্যবহার করা হয় না।

 

 

 

 

 

 

 

 

 

 

 

পঞ্চম অধ্যায়অনুধাবন প্রশ্ন উত্তর সমূহ।

 

দিয়ে লেখা ভাষা ব্যাখ্যা কর। / মেশিন ভাষায় লিখিত প্রোগ্রাম দ্রুত নির্বাহ হয় কেন?/ “শব্দ ছাড়া শুধু মাত্র সংখ্যার মাধ্যমে ভাষা প্রকাশ সম্ভব”- ব্যাখ্যা কর।

কম্পিউটারের নিজস্ব ভাষা হচ্ছে মেশিন ভাষা। এটি কম্পিউটারের মৌলিক ভাষা। এই ভাষায় শুধু মাত্র এবং ব্যবহার করা হয় বলে এই ভাষায় দেওয়া যেকোনো নির্দেশ কম্পিউটার সরাসরি বুঝতে পারে। মেশিন ভাষার সবচেয়ে বড় সুবিধা হচ্ছে সরাসরি কম্পিউটারের সাথে যোগাযোগ করা যায়। মেশিন ভাষায় লেখা প্রোগ্রাম নির্বাহের জন্য কোনো প্রকার অনুবাদক প্রোগ্রামের প্রয়োজন হয় না। ফলে দ্রুত কাজ করে। মেশিন ভাষায় লিখিত প্রোগ্রামে অতি অল্প মেমোরি প্রয়োজন হয়। কম্পিউটারের ভেতরের গঠন ভালোভাবে বুঝতে হলে এই ভাষা জানতে হয়। ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লিখিত প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। মেশিন ভাষাকে নিম্ন স্তরের ভাষাও বলা হয়।

লোলেভেল প্রোগ্রামিং ভাষার দুর্বলতায় হাইলেভেল প্রোগ্রামিং ভাষার উৎপত্তির কারণ/ উচ্চ স্তরের ভাষা মেশিন ভাষা থেকে উন্নতর-ব্যাখ্যা কর।

নিম্নস্তরের ভাষা যেমন মেশিন ভাষা এবং অ্যাসেম্বলি ভাষায় যথাক্রমে , এবং বিভিন্ন নেমোনিক এর সাহায্যে প্রোগ্রাম লেখা হয়।নিম্নস্তরের ভাষায় লিখিত কোনো প্রোগ্রাম সাধারণত বোঝা কষ্টকর। ভাষায় প্রোগ্রাম লিখতে প্রচুর সময় লাগে এবং ভুল হবার সম্ভাবনা খুব বেশি থাকে। ভুল হলে তা বের করা এবং ভুল-ত্রুটি দূর করা খুব কঠিন। ভাষার সবচেয়ে বড় অসুবিধা হচ্ছে এক ধরনের কম্পিউটারের জন্য লিখিত প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। কিন্তু উচ্চস্তরের ভাষায় প্রোগ্রাম লেখা সহজ লিখতে সময় কম লাগে। এতে ভুল হবার সম্ভাবনা কম থাকে এবং প্রোগ্রামের ত্রুটি বের করে তা সংশোধন করা সহজ। ভাষায় প্রোগ্রাম লেখার জন্য কম্পিউটারের  ভেতরের সংগঠন সম্পর্কে ধারণা থাকার প্রয়োজন নেই। এক মডেলের কম্পিউটারের জন্য লিখিত প্রোগ্রাম অন্য মডেলের কম্পিউটারে চলে উপরের আলোচনা থেকে দেখা যায় নিম্নস্তরের ভাষার অসুবিধাসমূহ উচ্চস্তরের ভাষায় নেই। তাই বলা যায় লো-লেভেল ল্যাংগুয়েজের দুর্বলতাই হাই-লেভেল ল্যাংগুয়েজের উৎপত্তির কারণ বা উচ্চ স্তরের ভাষা মেশিন ভাষা থেকে উন্নতর।

 

হাইলেভেল প্রোগ্রামিং ভাষায় প্রোগ্রামিং করা সহজব্যাখ্যা কর।

মেশিন অ্যাসেম্বলি ভাষায় রচিত প্রোগ্রামের প্রধান অসুবিধা হল- এক ধরনের কম্পিউটারে রচিত প্রোগ্রাম অন্য ধরনের কম্পিউটারে ব্যবহার করা যায় না। আবার এই লো-লেভেল ভাষায় রচিত প্রোগ্রাম কম্পিউটার বুঝলেও মানুষের পক্ষে তা বোঝা অনেক কষ্টসাধ্য। অপরদিকে হাই লেভেল প্রোগ্রামিং ভাষায় প্রোগ্রাম রচনা করলে এই ধরনের কোনো সমস্যার সৃষ্টি হয় না। এই ভাষায় লিখিত প্রোগ্রাম যেকোনো কম্পিউটারে ব্যবহার করা যায়। এই ভাষায় রচিত প্রোগ্রাম মানুষের পক্ষে বোঝা অনেক সহজ। প্রোগ্রাম লিখতে সময় অনেক কম লাগে। লো-লেভেল ভাষায় প্রোগ্রাম লিখতে যেখানে / টি নির্দেশের দরকার হয়, সেখানে হাই-লেভেল ভাষায় মাত্র একটি বাক্য লিখলেই চলে। প্রোগ্রাম লেখার সময় কম্পিউটার হার্ডওয়্যার সম্পর্কে ধারণা থাকার প্রয়োজন নেই। তাই বলা যায় হাই-লেভেল প্রোগ্রামিং ভাষায় প্রোগ্রামিং করা সহজ।

 

অ্যাসেম্বলি ভাষা মেশিন ভাষা থেকে উন্নত কেন?

যান্ত্রিক ভাষায় প্রোগ্রাম রচনা করার মতো কঠিন কাজকে অপেক্ষাকৃত সহজ করার জন্য এবং সেই সাথে রচিত প্রোগ্রামের ভুল সংশোধন পরিবর্তনের কাজ সহজতর করে প্রোগ্রামিং গতি সঞ্চারণের লক্ষ্যে অ্যাসেম্বলি ভাষার উন্নয়ন সাধিত হয়। অ্যাসেম্বলি ভাষায় রচিত প্রোগ্রাম মেশিন ভাষার তুলনায় অনেক সহজ হয়। প্রোগ্রাম রচনায় তুলনামূলক সময় অনেক কম লাগে। সহজে ভুল সংশোধন করা যায় এবং প্রোগ্রাম পরিবর্তন করা যায়।

 

অ্যালগরিদম কোডিং এর পূর্বশর্তব্যাখ্যা কর। /প্রোগ্রাম কোডিং অ্যালগরিদমের গুরুত্ব লেখ।

কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিসম্মত ধাপে ধাপে সমাধান করার যে পদ্ধতি, তাকে অ্যালগরিদম বলা হয়। অপরদিকে কোনো সমস্যাকে কম্পিউটার দ্বারা সমাধান করার জন্য প্রোগ্রামিং ভাষায় নির্দেশনা দেওয়াকেই বলে কোডিং। এক্ষেত্রে কোনো সমস্যাকে কম্পিউটার দ্বারা সমাধান করার পূর্বে অ্যালগরিদম অনুসরণ করলে যে সুবিধাগুলো পাওয়া যায়, তা হলো- সহজে প্রোগ্রামের উদ্দেশ্যে বোঝা যায়। সহজে প্রোগ্রামের ভুল নির্ণয় করা যায়। প্রোগ্রাম প্রবাহের দিক বুঝা যায়। জটিল প্রোগ্রাম সহজে রচনা করা যায়। প্রোগ্রাম পরিবর্তন পরিবর্ধনে সহায়তা করে।অর্থাৎ কোডিং করার পূর্বে অ্যালগরিদম অনুসরণ করলে অনেক সুবিধা পাওয়া যায়। তাই বলা যায় অ্যালগরিদম কোডিং বা প্রোগ্রামিং এর পূর্বশর্ত।

 

অ্যালগরিদমের চেয়ে ফ্লোচার্টের মাধ্যমে সমস্যা শনাক্ত করা সহজ-ব্যাখ্যা কর।

সমস্যা সমাধানের ধাপসমূহের লিখিত পদ্ধতিকে অ্যালগরিদম বলে। অ্যালগরিদম বর্ণনা নির্ভর। অ্যালগরিদম তৈরির পূর্বে সুডোকোড তৈরির প্রয়োজন হতে পারে। অ্যালগরিদমে প্রোগ্রাম বুঝতে সময় বেশি লাগে। অন্যদিকে চিত্র বা সাংকেতিক চিহ্নের মাধ্যমে সমস্যা সমাধানের ধাপসমূহকে ফ্লোচার্ট বলে। ফ্লোচার্ট চিত্র নির্ভর। ফ্লোচার্ট রচনার ক্ষেত্রে সুডোকোডের কোন প্রয়োজন হয় না। ফ্লোচার্টে প্রোগ্রাম বুঝতে সময় অনেক কম লাগে। সুতরাং বলা যায় যে, অ্যালগরিদমের চেয়ে ফ্লোচার্টের মাধ্যমে সমস্যা শনাক্ত করা সহজ।

 

প্রবাহচিত্রে ব্যবহৃত প্রতীকগুলো ব্যাখ্যা কর। / ফ্লোচার্ট হলো চিত্রভিত্তিক অ্যালগোরিদম –ব্যাখ্যা কর।

প্রবাহচিত্রে ব্যবহৃত প্রতীকগুলোর কাজ নিচে দেওয়া হলঃ

 

সি প্রোগ্রামিং ভাষাকে মিড লেভেল প্রোগ্রামিং ভাষা বলা হয় কেন?

কম্পিউটারের সাহায্যে কোন সমস্যা সমাধান তথা প্রোগ্রাম রচনার জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রামিং ভাষা বলা হয়। সি প্রোগ্রামিং ভাষাকে  মিড লেভেল ভাষা বলা হয়।কারণ এতে নিম্নস্তরের ভাষার সুবিধা যেমন বিট, বাইট মেমোরি অ্যাড্রেস নিয়ে কাজ করা যায়। আবার উচ্চস্তরের ভাষার সুবিধা যেমন বিভিন্ন ডেটা টাইপ নিয়ে কাজ করা যায়। অর্থাৎ সি প্রোগ্রামিং ভাষায় নিম্নস্তরের ভাষার সুবিধার পাশাপাশি উচ্চস্তরের ভাষার সুবিধাও পাওয়া যায় তাই সি প্রোগ্রামিং ভাষাকে  মিড লেভেল প্রোগ্রামিং ভাষা বলা হয়।

 

সি একটি উচ্চ স্তরের প্রোগ্রামিং ভাষাব্যাখ্যা কর।

 

অনুবাদক প্রোগ্রাম হিসেবে কম্পাইলার বেশি উপযোগীব্যাখ্যা কর।

যে প্রোগ্রামের সাহায্যে উৎস (Source) প্রোগ্রামকে বস্তু (Object) প্রোগ্রামে পরিণত করা হয় তাকে অনুবাদক প্রোগ্রাম বলে। মেশিন ভাষায় লেখা প্রোগ্রামকে বলা হয় বস্তু প্রোগ্রাম (Object Program) এবং অন্য যেকোনো প্রোগ্রামিং ভাষায় লেখা প্রোগ্রামকে বলা হয় উৎস প্রোগ্রাম (Source program) কম্পাইলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা হাইলেভেল ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করে।  অর্থাৎ সোর্স প্রোগ্রামকে অবজেক্ট প্রোগ্রামে রূপান্তর করে। অনুবাদক প্রোগ্রাম হিসেবে কম্পাইলার বেশি উপযোগী কারণ- কম্পাইলার সম্পূর্ণ প্রোগ্রামটিকে একসাথে অনুবাদ করে ফলে প্রোগ্রাম নির্বাহের গতি দ্রুত হয়। প্রোগ্রাম নির্বাহে কম সময় লাগে, কম্পাইলারের মাধ্যমে রূপান্তরিত প্রোগ্রাম সম্পূর্ণরূপে মেশিন প্রোগ্রামে রূপান্তরিত হয়, একবার প্রোগ্রাম কম্পাইল করা হলে পরবর্তিতে আর কম্পাইলের প্রয়োজন হয় না, প্রোগ্রামে কোন ভুল থাকলে তা মনিটরে একসাথে প্রদর্শন করে।উপরোক্ত বৈশিষ্ট্য থেকে বলা যায় অনুবাদক প্রোগ্রাম হিসেবে কম্পাইলার বেশি উপযোগী। 

 

প্রত্যেকবার প্রোগ্রাম নির্বাহের সময় কম্পাইল করা প্রয়োজন –ব্যাখ্যা কর।

কম্পাইলারের তুলনায় ইন্টারপ্রেটার কোন ক্ষেত্রে ভালো –ব্যাখ্যা কর।

উৎস প্রোগ্রামকে কম্পাইল করার প্রয়োজন হয় কেন? ব্যাখ্যা কর।

 

সি প্রোগ্রামিং ভাষা একটি কেস সেনসিটিভ ভাষাবুঝিয়ে লিখ।  

সি প্রোগ্রামিং ভাষা একটি উচ্চস্তরের ভাষা। এই ভাষা প্রায় মানুষের ভাষার কাছাকাছি তাই এই ভাষার সাহায্যে প্রোগ্রাম রচনা করা সহজ। সি প্রোগ্রামিং ভাসাটির একটি বৈশিষ্ট্য হল  এটি case sensitive প্রোগ্রামিং ভাষা। অর্থাৎ এই ভাষায় লেখা প্রোগ্রামে ছোট হাতের অক্ষর এবং বড় হাতের অক্ষর আলাদা অর্থ বহন করে। যেমন: a এবং A দুটি আলাদা চলক। তাই বলা হয় সি প্রোগ্রামিং ভাষা একটি case sensitive প্রোগ্রামিং ভাষা।

 

চলক তৈরির ক্ষেত্রে কিছু বিধিবদ্ধ নিয়ম কানুন রয়েছেব্যাখ্যা কর।/সি ভাষায় int roll@no; স্টেটমেন্টটি বৈধ/অবৈধ ব্যাখ্যা কর।

চলক হলো মেমোরি লোকেশনের নাম বা ঠিকানা। অর্থাৎ প্রোগ্রামে ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি চলকের ব্যবহার করতে হয়। প্রতিবার প্রোগ্রাম নির্বাহের সময় মেমরিতে ভেরিয়েবলগুলো অবস্থান এবং সংরক্ষিত মান পরিবর্তন হয় বা হতে পারে বলে এদেরকে ভেরিয়েবল বা চলক বলা হয়। একটি প্রোগ্রামের শুরুতে প্রয়োজনীয় সংখ্যক চলক বা ভেরিয়েবল ঘোষণা করা হয়। এই চলক ঘোষণা করার কিছু নিয়ম আছে। যেমন-

·         . ভেরিয়েবল এর নাম হিসাবে কেবল অ্যালফাবেটিক ক্যারেক্টার (A-Z,a-z),সংখ্যা (0-9) এবং আন্ডারস্কোর (_) ব্যবহার করা যায়। যেমন: Roll_number,Counta7 ইত্যাদি।

·         . ভেরিয়েবলের নামের প্রথম ক্যারেক্টার অবশ্যই অক্ষর হতে হবে। যেমন: Roll_number, number, amount, Roll_22 সঠিক ভেরিয়েবল কিন্তু 22Roll সঠিক ভেরিয়েবল নয়।

·         . ভেরিয়েবল কোন প্রকার স্পেশাল ক্যারেক্টার যেমন !,@,#,%,&,$ ইত্যাদি ব্যবহার করা যাবে না। যেমন- my@roll, ashek$mizan$amir, &a ইত্যাদি অবৈধ ভেরিয়েবল

·         . কোন কী-ওয়ার্ড বা রির্জাভ ওয়ার্ড ভেরিয়েবল এর নাম হিসাবে ব্যবহার করা যাবে না। যেমন: for, while ইত্যাদি তাই বলা যায় চলক তৈরির ক্ষেত্রে কিছু নিয়ম কানুন রয়েছে।

 

সি প্রোগ্রামিং ভাষার লাইব্রেরি ফাংশনের হেডার ফাইল বলতে কী বুঝায়?

সি প্রোগ্রামের সোর্স কোডের লিঙ্ক সেকশনে লাইব্রেরিতে সংরক্ষিত যে সব ফাইলকে যুক্ত করা হয় তাদেরকে header ফাইল বলে। এই ফাইলের এক্সটেনশন হলো h যেমন- stdio.h  সি প্রোগ্রামিং ভাষার একটি হেডার ফাইল। উক্ত ফাইলে printf() বা scanf() ফাংশনের বর্ণনা রয়েছে। ফলে printf() ফাংশন প্রোগ্রামে ব্যবহার করলে stdio.h হেডার ফাইলটি প্রোগ্রামে অন্তর্ভুক্ত করতে হয়। এখানে #include<stdio.h> লিখে প্রোগ্রামে উক্ত হেডার ফাইলটি সংযুক্ত করা হয়েছে।

 

সি প্রোগ্রামিং ভাষায় লিখিত প্রোগ্রামে #include<stdio.h> আবশ্যক কেন? ব্যাখ্যা কর।

একটি আদর্শ প্রোগ্রামে ইনপুট, প্রসেস আউটপুট এর ব্যবস্থা থাকতে হয়। সি প্রোগ্রামিং ভাষায় লেখা একটি প্রোগ্রামে ইনপুট এবং আউটপুট এর জন্য যথাক্রমে  scanf() এবং printf() নামক লাইব্রেরী ফাংশন ব্যবহার করা হয়। এই ফাংশন দুটির জন্য #include<stdio.h> হেডার ফাইল ব্যবহার করা হয়। তাই বলা যায়, সি প্রোগ্রামিং ভাষায় লিখিত প্রোগ্রামে #include<stdio.h> আবশ্যক।

 

সি প্রোগ্রামিং ভাষায় লিখিত প্রোগ্রামে main() ফাংশনের গুরুত্ব লেখ।

প্রোগ্রামে লাইব্রেরী ইউজার ডিফাইন্ড ফাংশন এক নয়ব্যাখ্যা কর।  

প্রোগ্রামে যখন কতগুলো স্টেটমেন্ট কোনো  নামে একটি ব্লকের মধ্যে অবস্থান করে কোনো  নির্দিষ্ট কাজ সম্পাদন করে তখন ব্লকটিকে ফাংশন বলা হয়। একটি ফাংশনের দুইটি অংশ থাকে। ফাংশন ডিক্লারেশন ফাংশন ডেফিনেশন। যে ফাংশনের ডেফিনেশন প্রোগ্রামার দ্বারা নির্ধারিত হয়,সে ফাংশনকে ইউজার ডিফাইন্ড ফাংশন বলে। অন্যদিকে যে ফাংশনের ডেফিনেশন পূর্ব নির্ধারিত থাকে, তাকে লাইব্রেরী ফাংশন বলে। প্রোগ্রামে কোন লাইব্রেরী ফাংশন ব্যবহার করলে তার জন্য নির্দিস্ট হেডার ফাইল প্রোগ্রামের শুরুতে যুক্ত করতে হয়। তাই বলা যায় লাইব্রেরী ফাংশন এবং ইউজার ডিফাইন্ড ফাংশন এক নয়।

 

আউটপুট ফাংশন বলতে কি বুঝায়?

সি প্রোগ্রামে যখন কোনো  নির্দিষ্ট কাজ সম্পাদনের জন্য কতগুলো স্টেটমেন্ট কোনো  নামে একটি ব্লকের মধ্যে রাখা হয় তখন তাকে ফাংশন বলা হয়। প্রতিটি ফাংশন একটি নির্দিষ্ট কাজ করে। আউটপুট ফাংশন হচ্ছে এমন একটি ফাংশন যা মনিটরে কোন কিছু প্রদর্শন করে। যেমন- printf() হচ্ছে একটি আউটপুট ফাংশন যা প্রোগ্রামে কোনকিছু আউটপুট হিসেবে দেখায়।

 

সি প্রোগ্রামিং ভাষায় ব্যবহৃত ইনপুট আউটপুট ফাংশনগুলো লেখ।

সি প্রোগ্রামে যখন কোনো  নির্দিষ্ট কাজ সম্পাদনের জন্য কতগুলো স্টেটমেন্ট কোনো  নামে একটি ব্লকের মধ্যে রাখা হয় তখন তাকে ফাংশন বলা হয়। প্রতিটি ফাংশন একটি নির্দিষ্ট কাজ সম্পাদন করে। সি প্রোগ্রামে কোনো মান ইনপুট হিসেবে গ্রহণ করার জন্য scanf(), gets() getchar() ফাংশন ব্যবহৃত হয়। মনিটরে কোন কিছু প্রদর্শন করার জন্য printf(), puts() putchar() আউটপুট ফাংশন ব্যবহৃত হয়।

 

printf(“%d %d”, a, b); স্টেটমেন্টটি ব্যাখ্যা কর।

printf(“%d %d”, a, b); স্টেটমেন্টটিকে সি প্রোগ্রামিং ভাষায় আউটপুট স্টেটমেন্ট বলা হয়। আউটপুট স্টেটমেন্ট হলো যার মাধ্যমে ব্যবহারকারীকে আউটপুট দেখানো হয়। উপরের স্টেটমেন্টটির মাধ্যমে দুটি চলক  a b এর মান প্রদর্শন করা হয়েছে।

 

scanf(“%f”, &a); স্টেটমেন্টটি ব্যাখ্যা কর।  

scanf(“%f”, &a); এই স্টেটমেন্ট কে সি প্রোগ্রামিং ভাষায় ইনপুট স্টেটমেন্ট বলা হয়। ইনপুট স্টেটমেন্ট হলো যার মাধ্যমে প্রোগ্রাম ইউজারের কাছ থেকে ডেটা ইনপুট নেয়। এই স্টেটমেন্টের মাধ্যমে প্রোগ্রাম ইউজারের কাছ থেকে একটি ভগ্নাংশ ধরনের সংখা ইনপুট নিয়ে a চলকে সংরক্ষণ করে যা পরবর্তীতে ব্যবহার করে।

 

printf()  scanf() উদাহরণ দ্বারা ব্যাখ্যা কর।

সি প্রোগ্রামিং ভাষায় বহুল ব্যবহৃত গুরুত্বপূর্ণ ফাংশন হলো printf() এবং scanf() প্রোগ্রামে কোনো মান ইনপুট নেওয়ার জন্য scanf() ফাংশন ব্যবহৃত হয় এবং কোনো ফলাফল প্রদর্শনের জন্য printf() ফাংশন ব্যবহৃত হয়। যেমন- scanf(%d, &a);  এবং printf(%d, a); স্টেটমেন্ট দুটির সাহায্যে যথাক্রমে a চলকে ইনপুট নেওয়া a চলকের মান আউটপুটে দেখানো হয়।

 

Integer এর পরিবর্তে কখন Long Integer ব্যবহার করা হয়? বুঝিয়ে লেখ।

integer হল একধরনের ডেটা টাইপ যা পূর্ণসংখ্যা ইনপুট নেওয়ার জন্য সি প্রোগ্রামে ব্যবহৃত হয়। এটি সাধারণত ভেরিয়েবল ডিক্লারেশন এর সময় ভেরিয়েবল এর সামনে লিখে দিতে হয়। যেমনঃ int a=32; এর রেঞ্জ -৩২৭৬৮ থেকে +৩২৭৬৭ পর্যন্ত। এর চেয়ে বড় কোন রেঞ্জের সংখ্যা ইনপুট নেওয়ার জন্য long integer ব্যবহৃত হয়।

 

সি ভাষায় Float type বলতে কি বুঝ? উদাহরণ সহ লিখ।

যদি কোনো ডেটার মান সংখ্যাসূচক কিন্তু ভগ্নাংশ হয় তবে তার জন্য ব্যবহৃত চলক অথবা ধ্রুবকের ডেটা টাইপকে float বলা হয়। ধরনের চলকের জন্য মেমোরিতে বাইট জায়গা লাগে। যেমন- ধরি x=৩২, printf(%f, x); তাহলে আউটপুট হবে x=32.000000

 

কখন ইউনারি অপারেটর ব্যবহার করা হয়? ব্যাখ্যা কর।

সি ভাষায় গাণিতিক এবং যৌক্তিক কাজ নিয়ন্ত্রণ করার জন্য কতগুলো বিশেষ চিহ্ন ব্যবহৃত হয়এগুলোকে অপারেটর বলা হয়। আর যা ডেটা ধারণ করে তাকে অপারেন্ড বলা হয়। যে সকল অপারেটর একটি মাত্র অপারেন্ড নিয়ে কাজ করে তাদের ইউনারি অপারেটর বলে। অর্থাৎ যখন প্রোগ্রামিং এর ক্ষেত্রে একটি মাত্র অপারেন্ড নিয়ে কাজ করতে হয়, সেই ক্ষেত্রে ইউনারি অপারেটর ব্যবহার করা হয়। যেমন- ইনক্রিমেন্টাল অপারেটর (++) এবং ডিক্রিমেন্টাল অপারেটর() ইত্যাদি।

 

প্রোগ্রামে অপারেটরের গুরুত্ব লেখ।

সি ভাষায় গাণিতিক এবং যৌক্তিক কাজ নিয়ন্ত্রণ করার জন্য কতগুলো বিশেষ চিহ্ন/symbol (যেমন- +, -, *, /, ++, , <, >, >= ইত্যাদি) ব্যবহৃত হয় যা অপারেটর নামে পরিচিত। এই অপারেটর সমূহ না থাকলে সি ভাষায় কখনো গাণিতিক বা যৌক্তিক কাজ করা সম্ভব হতো না।

 

i++ এবং ++i ব্যাখ্যা কর।

i++ হলো পোস্ট ইনক্রিমেন্ট বা পোস্টফিক্স। পোস্টফিক্স প্রথমে বাম পাশে চলকের মান অ্যাসাইন করে তারপর অপারেন্ডের মান 1 বৃদ্ধি করে। ++i হলো প্রিইনক্রিমেন্ট বা প্রিফিক্স। প্রিফিক্স প্রথমে অপারেন্ডের সাথে 1 যোগ করে। তারপর ফলাফলকে বাম পাশের চলকে অ্যাসাইন করে।

 

“=” এবং “= =” এর মধ্যে পার্থক্য লেখ।

“=” হচ্ছে অ্যাসাইনমেন্ট অপারেটর। কোনো চলকের মানকে বা কোন সংখ্যাকে অন্য কোনো চলকের মান হিসেবে নির্ধারণ করতে যেসব অপারেটর ব্যবহার করা হয়, তাকে অ্যাসাইনমেন্ট অপারেটর বলে। যেমন- C=A+B এখানে A B চলকের মান যোগ করে যোগফল C চলকে অ্যাসাইন করা হয়েছে। = =”  হলো রিলেশনাল অপারেটর। দুটি অপারেন্ডের মধ্যে তুলনা করতে যে অপারেটরসমূহ ব্যবহৃত হয় তাদেরকে সম্পর্কযুক্ত অপারেটর বলা হয়। যেমন- a==b হলো a এবং b এর মান সমান।

 

for loop এবং Do while loop এর মধ্যে কোনটি ব্যবহার করা সহজ?  

for এবং do while loop এর মধ্যে for loop ব্যবহার করা সহজ। কারণ সি প্রোগ্রামে কোন স্টেটমেন্ট দুই বা ততোধিক বার ব্যবহার করার জন্য for loop ব্যবহৃত হয়। loop কতবার নির্বাহ করা হবে তা জানা থাকলে for loop ব্যবহার করা উপযোগী। তাই do while loop এর চেয়ে for loop ব্যবহার করা সহজ।

 

গ্লোবাল ভেরিয়েবলকে প্রোগ্রামের সকল অংশে জুড়ে দেওয়া সম্ভব-ব্যাখ্যা কর।

কোনো চলক বা ভেরিয়েবল যদি main() ফাংশনের বাইরে ঘোষণা করা হয় তবে সেই ভেরিয়েবলের কার্যকারিতা main() ফাংশন বা প্রোগ্রামে ব্যবহৃত সকল ফাংশনের মধ্যে বিস্তৃত থাকে। আর এই ধরনের চলককে গ্লোবাল ভেরিয়েবল বলা হয়। এই ধরনের চলক প্রোগ্রামের সকল ফাংশনেই ব্যবহার করা সম্ভব।       

  

অ্যারে এবং চলক এক নয়-ব্যাখ্যা কর।

একই ধরনের বা সমপ্রকৃতির চলকের সমাবেশকে অ্যারে বলা হয়। অ্যারের একটি নাম থাকে, ইনডেক্স নাম্বার এবং আইটেম সমূহকে বন্ধনীর মধ্যে উপস্থাপন করা হয়। অ্যারে একমাত্রিক বহুমাত্রিক হতে পারে। মেমোরি অ্যাড্রেস সরাসরি ব্যবহার না করে একটি নাম দিয়ে নামের অধীনে ডেটা রাখা হয়। এই ডেটা পরিবর্তনশীল তাই নামকে চলক বলা হয়। চলক হলো প্রোগ্রামের দেওয়া মেমোরির কয়েক বাইট স্থানের একটি নাম। তাই বলা যায় যে, অ্যারে এবং চলক এক নয়।

 

অ্যারে প্রোগ্রামের জটিলতা কমায়ব্যাখ্যা কর।

একই জাতীয় একাধিক ডেটা একটি চলকের আন্ডারে রাখা সম্ভব –ব্যাখ্যা কর।

 

 

পঞ্চম অধ্যায়জ্ঞানমূলক প্রশ্ন উত্তর সমূহ।

 

প্রোগ্রাম কী?

কম্পিউটার বা যন্ত্রের সাহায্যে কোন সমস্যা সমাধানের জন্য প্রোগ্রামিং ভাষায় লেখা প্রয়োজনীয় নিদের্শমালার সমষ্টিকে প্রোগ্রাম (program) বলা হয়।

প্রোগ্রামিং কী?

প্রোগ্রাম রচনার পদ্ধতি বা কৌশলকে প্রোগ্রামিং (programming) বা কোডিং বলা হয়।

প্রোগ্রামার কী?

যে বা যিনি কম্পিউটার বা যন্ত্রের সাহায্যে কোন সমস্যা সমাধানের জন্য প্রোগ্রামিং ভাষায় প্রয়োজনীয় নিদের্শমালা বা প্রোগ্রাম লিখে  তাকে  প্রোগ্রামার বলা হয়।

প্রোগ্রামিং ভাষা কী?

কম্পিউটারের মাধ্যমে কোন সমস্যা সমাধান তথা প্রোগ্রাম রচনার জন্য ব্যবহৃত শব্দ, বর্ণ, অংক, চিহ্ন প্রভৃতির সমন্বয়ে গঠিত রীতিনীতিকে প্রোগ্রামিং ভাষা (Programming Language) বলা হয়।

4GL কী?

4GL বলতে 4th Generation Language বা চতুর্থ প্রজন্মের ভাষা বুঝায়। 4GL এর সাহায্যে সহজেই অ্যাপ্লিকেশন তৈরি করা যায় বলে একে Rapid Application Development (RAD) টুলও বলা হয়।

উচ্চস্তরের প্রোগ্রামিং ভাষা কী?

যে প্রোগ্রামিং ভাষার প্রতীক এবং শব্দ  সমূহ সাধারণত গাণিতিক ইংরেজি ভাষার মত এবং যা মানুষের জন্য সহজে বোধগম্য, সে প্রোগ্রামিং ভাষাকে উচ্চস্তরের প্রোগ্রামিং ভাষা বলে। এটি মেশিন নির্ভর নয়।

মেশিন ভাষা কী?

কম্পিউটারের নিজস্ব ভাষা হচ্ছে মেশিন ভাষা। এটি কম্পিউটারের মৌলিক ভাষা। এই ভাষায় শুধু মাত্র এবং ব্যবহার করা হয় বলে এই ভাষায় দেওয়া কোনো নির্দেশ কম্পিউটার সরাসরি বুঝতে পারে। এর সাহায্যে সরাসরি কম্পিউটারের সাথে যোগাযোগ করা যায়।

অ্যাসেম্বলি ভাষা কী?

যে প্রোগ্রামিং ভাষায় প্রোগ্রাম লেখার জন্য বিভিন্ন নেমোনিক বা সংকেত ব্যবহার করা হয়, সে প্রোগ্রামিং ভাষাকে অ্যাসেম্বলি ভাষা বলা হয়। এটি দ্বিতীয় প্রজন্মের এবং নিম্নস্তরের প্রোগ্রামিং ভাষা।

নেমোনিক কী?

অ্যাসেম্বলি ভাষায় ব্যবহৃত বিভিন্ন সংকেতকে নিমোনিক বলে। যেমনঃADD, SUB, MUL DIV ইত্যাদি।

অনুবাদক প্রোগ্রাম কী?

যে প্রোগ্রামের সাহায্যে উৎস (Source) প্রোগ্রামকে বস্তু (Object) প্রোগ্রামে পরিণত করা হয় তাকে অনুবাদক প্রোগ্রাম বলে। মেশিন ভাষায় লেখা প্রোগ্রামকে বলা হয় বস্তু প্রোগ্রাম (Object Program) এবং অন্য যেকোনো ভাষায় লেখা প্রোগ্রামকে বলা হয় উৎস প্রোগ্রাম (Source program)

আসেম্বলার কী?

আসেম্বলার একটি অনুবাদক প্রোগ্রাম যা অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় অনুবাদ করার জন্য ব্যবহার করা হয়। এটি অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে যান্ত্রিক ভাষায় রূপান্তর করে অর্থাৎ, নেমোনিক কোডকে মেশিন ভাষায় অনুবাদ করে।

কম্পাইলার কী?

কম্পাইলার হলো এক ধরনের অনুবাদক প্রোগ্রাম যা হাইলেভেল ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করে। কম্পাইলার সম্পূর্ণ প্রোগ্রামটিকে একসাথে অনুবাদ করে।

ইন্টারপ্রেটার কী?

ইন্টারপ্রেটার হলো এক ধরণের অনুবাদক প্রোগ্রাম যা কম্পাইলারের মতো হাইলেভেল ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় রূপান্তর করে। তবে ইন্টারপ্রেটার লাইন বাই লাইন অনুবাদ করে।

ডিবাগিং কী?

প্রোগ্রামে যে কোনো ভুল চিহ্নিত করতে পারলে ভুলকে বলা হয় বাগ (Bug) উক্ত বাগকে সমাধান করার প্রক্রিয়াকে বলা হয় ডিবাগ (Debug) বা ডিবাগিং।

প্রোগ্রাম টেস্টিং?

প্রোগ্রাম টেস্টিং হচ্ছে কোনো প্রোগ্রাম কোডিং সম্পন্ন করার পর প্রোগ্রামটির বিভিন্ন ইনপুটের জন্য যে ধরনের আউটপুট বা ফলাফল হওয়া উচিৎ তা ঠিকমতো আসছে কিনা বা রান করছে কিনা তা যাচাই করা।

সিনট্যাক্স ভুল/ব্যাকরণগত ভুল?

প্রোগ্রামে প্রোগ্রামিং ভাষার সিনট্যাক্স বা ব্যাকরণগত যেসব ভুল থাকে তাকে বলা হয় সিনট্যাক্স ভুল। যেমন- বানান ভুল,কমা, ব্র্যাকেট ঠিকমতো না দেয়া, কোনো চলকের মান না জানানো প্রভৃতি। এসব ভুল সংশোধন করা খুবই সহজ, কারণ সিনট্যাক্স ভুলের বেলায় অনুবাদক প্রোগ্রাম ভুলের বার্তা ছাপায়।

লজিক্যাল ভুল কী?

প্রোগ্রামে যুক্তির ভুল থাকলে তাকে বলে লজিক্যাল ভুল।সাধারণত সমস্যা ঠিকমতো না বোঝার জন্যই ভুল হয়। যেমন- a>b এর স্থলে a<b বা s=a+b এর স্থানে s=a-b লিখলে লজিক্যাল ভুল হয়।

অ্যালগরিদম কী?

কোনো একটি নির্দিষ্ট সমস্যা সমাধানের জন্য যুক্তিসম্মত সসীম সংখ্যক ধাপে সমাধান করার যে পদ্ধতি, তাকে অ্যালগরিদম বলা হয়। কোনো সমস্যাকে কম্পিউটার প্রোগ্রামিং দ্বারা সমাধান করার পূর্বে কাগজে-কলমে সমাধান করার জন্যই অ্যালগরিদম ব্যবহার করা হয়।

ফ্লোচার্ট কী?

যে চিত্রভিত্তিক পদ্ধতিতে বিশেষ কতকগুলো চিহ্নের সাহায্যে কোনো একটি নির্দিষ্ট সমস্যার সমাধান করা হয় তাকে ফ্লোচার্ট বলা হয়।

সুডোকোড কী?

প্রোগ্রাম রচনার ধারাবাহিক বর্ণনাই হল সুডোকোড়। সুডোকোড মানুষের ভাষা ব্যবহার করে লেখা হয়।

OOP কী?

OOP এর পূর্নরুপ হল Object Oriented Programing.

চলক কী?

প্রোগ্রাম নির্বাহের সময় যার মান পরিবর্তনশীল তাকে চলক বলে। প্রোগ্রামে ডেটা নিয়ে কাজ করার সময় প্রতিটি ডেটার জন্য একটি ভেরিয়েবল বা চলক ব্যবহার করা হয়।

ধ্রুবক কী?

প্রোগ্রাম নির্বাহের সময় যার মান অপরিবর্তীত থাকে তাকে ধ্রুবক বলে। যেমন π এর মান হলো বা .১৪২৮৫ কখনো π এর মানের কোনো পরিবর্তন হয় না।

কী-ওয়ার্ড কী?

প্রত্যেক প্রোগ্রামিং ভাষার নিজস্ব কিছু সংরক্ষিত শব্দ আছে যা প্রোগ্রাম রচনার সময় ব্যবহার করা হয়। এই সংরক্ষিত শব্দগুলোকে কী-ওয়ার্ড বলা হয়।

ডেটা টাইপ কী?

ডেটার ধরনকে ডেটা টাইপ বলে। যেমন- int, float, double ইত্যাদি।

অপারেটর কী?

প্রোগ্রামিং ভাষায় গাণিতিক এবং যৌক্তিক কাজ নিয়ন্ত্রণ করার জন্য কতগুলো বিশেষ চিহ্ন  ব্যবহৃত হয়এগুলোকে অপারেটর বলা হয়। যেমন- +, , *, % ইত্যাদি।

কন্ট্রোল স্টেটমেন্ট কী?

সি প্রোগ্রামের স্টেটমেন্টসমূহ সাধারণত পর্যায়ক্রমিকভাবে নির্বাহ হয়। কিন্তু কখনও কখনও স্টেটমেন্টসমূহ দুই বা ততোধিকবার নির্বাহ এবং শর্ত সাপেক্ষে নির্বাহের প্রয়োজন হয়। এক্ষেত্রে স্টেটমেন্টসমূহের নির্বাহ প্রোগ্রামার কর্তৃক নিয়ন্ত্রিত হয়। যে স্টেটমেন্টের সাহায্যে এরুপ স্টেটমেন্টসমূহের নির্বাহ নিয়ন্ত্রন করা হয় তাকে কন্ট্রোল স্টেটমেন্ট বলে।

লুপ কন্ট্রোল স্টেটমেন্ট কী?

সি প্রোগ্রামে কোন স্টেটমেন্ট একাধিকবার নির্বাহের জন্য যে কন্ট্রোল স্টেটমেন্ট ব্যবহৃত হয় তাকে লুপ কন্ট্রোল স্টেটমেন্ট বলে।

লুপ কী?

প্রোগ্রামের অংশ বিশেষ কোনো শর্তে না পৌঁছা পর্যন্ত নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করাকে লুপিং বা লুপ বলা হয়।

অ্যারে কী?

অ্যারে হলো একই ধরনের বা সমপ্রকৃতির চলকের সমাবেশ।

ফাংশন কী?

প্রোগ্রামে যখন কতগুলো স্টেটমেন্ট কোনো  নামে একটি ব্লকের মধ্যে অবস্থান করে কোনো  নির্দিষ্ট কাজ সম্পাদন করে তখন ব্লকটিকে ফাংশন বলা হয়।

 

Post a Comment

أحدث أقدم

Ads