Thursday, July 23, 2020

Tutorial 14: while loop.

 Example: print (1 - 33).

#include<stdio.h>

int main()
{
    int i=0;
    while(i<34)
    {
        printf("%d\n",i);
        i=i+1;
    }
    return 0;
}

Tuesday, July 14, 2020

C programming language _Tutorial: 1

▪️ Translator program: 
1. Compilar
2. Interpeoter
3. Assembler

▪️ Token:
1. keywords
2. Escope
3. sequence
4. Funcuators
5. Variable
6. Operators
7. Data types

▪️  Input - Output (printf, scanf).

▪️ Operator:
{ ত্রিভুজের ক্ষেত্রফল, রম্বসের ক্ষেত্রফল, সামান্তরিকের ক্ষেত্রফল, সংখ্যার যোগ ও গড়, fharenh -c}
স্তস্তট্র( Algorithm, flow chart, c program)

▪️ Control statement:
1.Condition (if, else, switch) 
{Even\odd, positive\negative, largest\smallest, leep year, 
Vowel\consonant}

2.loop control (do while, while, for)
{Gcd\lcm, prime, multiplication, factorial}
[1,2,3,4..... 100; 1-100(even); 1-99(odd); 2+4+6+8+......+100; 1+3+9+....+99; Fibonacci series]
[Algorithm, flow chart, c program]

▪️ Array

▪️ Function

        অনুবাদক প্রোগ্রাম (Translator program)

১. প্রোগ্রাম কী? প্রোগ্রামিং ভাষা কী?
= প্রোগ্রাম: কোন একটি সমস্যা সমাধানের জন্য কম্পিউটারের ভাষায় (০,১) লিখিত নির্দেশের সমষ্টিকে 
প্রোগ্রাম বলা হয়। যেমন: (২+২=৪ কে ০,১ এ নির্দেশ করা) 

প্রোগ্রামিং ভাষা: প্রোগ্রাম রচনার জন্য বিভিন্ন বর্ণ, অঙ্ক, সঙ্কেত এবং এইগুলো বিন্যাসের নিয়ম মিলিয়ে তৈরি করা হয় প্রোগ্রামিং ভাষা। যেমন: (C, C++, Assembly language, Java ইত্যাদি)

সোর্স কোড: উচ্চতর ভাষায় লিখিত প্রোগ্রামকে সোর্স কোড ( source code ) বলে।
অবজেক্ট কোড: মেশিন ভাষার ‌( binary ) কোডকে অবজেক্ট কোড (object code) বলে।

২. অনুবাদক প্রোগ্রাম কী? অনুবাদক প্রোগ্রাম এর প্রোগ্রাম আলোচনা কর?
অনুবাদক প্রোগ্রাম: যে প্রোগ্রাম সোর্স কোডকে অবজেক্ট কোডে রুপান্তরিত করে তাকে অনুবাদক প্রোগ্রাম বলে।

 ▪️ অনুবাদক প্রোগ্রাম (Translator program) তিন প্রকার: 
১. অ্যাসেম্বলার (Assembler)
২. কম্পাইলার (Compiler)
৩. ইন্টারপ্রেটার (Interpreter)
                
                  অ্যাসেম্বলার (Assembler)

Assembly language program কে Machine language এ রুপান্তরিত করে Assembler. 

 ▪️  যে অনুবাদক অ্যাসেম্বলি ভাষায় লিখিত প্রোগ্রামকে মেশিন ভাষায় রুপান্তর করে তাকে অ্যাসেম্বলার বলে।  যেমন: নেমনিক কোড (mov ax, 5 inc bx, ad ax, bx) কে মেশিন ভাষা (০,১) এ রুপান্তর করে অ্যাসেম্বলার।

▪️ অ্যাসেম্বলার এর সুবিধা:
১. নেমনিক কোডকে মেশিন ভাষায় রুপান্তর করে।
২. প্রোগ্রামে কোন ভুল থাকলে Error message প্রদর্শন করে।
৩. প্রোগ্রামে ভুল সংশোধন করা সহজ।
৪. ডিবাগিং (ভুল সংশোধন করা) ও টেস্টিং এর কাজ দ্রুত গতি সম্পন্ন।
৫. মেমোরিতে কম জায়গা নেয়।

▪️ অ্যাসেম্বলার এর অসুবিধা:
১. প্রোগ্রাম নির্বাহের জন্য অনেক বেশি সময় লাগে, কম্পাইলার এর তুলনায় ৫ থেকে ২৫ গুণ সময় বেশি লাগে।

▪️ জেনে রাখা ভালো:
◽ যে সব প্রোগ্রামিং ভাষাকে  কম্পাইল করা  হয় - (C, C++ , Objective - C, C#, Pascal, COBOL, ADA,  Visual Basic, Smalltalk, Scheme ইত্যাদি)

◽  যে সব প্রোগ্রামিং ভাষাকে ইন্টারপ্রেটার  করা  হয় -
(BASIC, php, Python, perl, Ruby, JavaScript, ইত্যাদি) 

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

▪️ Source code কে Object code এ রুপান্তর করে কম্পাইলার।

▪️ যে অনুবাদক প্রোগ্রাম সোর্স কোডকে অবজেক্ট কোডে রুপান্তরিত করে তাকে কম্পাইলার বলে।

▪️ কম্পাইলারের  কাজের ধাপসমূহ:
▪️ প্রথম ধাপ:
                                                 ↗️ List of Errors
Source code➡️Compiler➡️ 
                                                 ↘️ Object code

▪️ Total program translate at a time then execute.

▪️ দ্বিতীয় ধাপ:
 Input ➡️ Object code(.obj) ➡️ Output (.exe)

▪️ Language processing system:
◽ Source code - preprocessor - compiler - Assembler - linker - Binary executable. 

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

▪️ ইন্টারপ্রেটার (Interpreter) এর কাজের ধাপসমূহ:

Source code↘️
                          ➡️Interpreter➡️Output(.exe)
            Input↗️

▪️ Line by line translate then execute.

▪️ কম্পাইলার ও ইন্টারপ্রেটার এর পার্থক্য: 
◽ কম্পাইলার:
১. সম্পূর্ণ প্রোগ্রাম একসাথে অনুবাদ করে। 
২. প্রোগ্রামের ভুল একসাথে প্রদর্শন করে।
৩. কম্পাইলার দ্রুত কাজ করে।
৪. প্রোগ্রাম একবার কম্পাইল করার পর আর কম্পাইল করার প্রয়োজন হয় না।
৫. বড় ধরনের কম্পিউটারে বেশি ব্যাবহার হয়।

◽ ইন্টারপ্রেটার:
১. এক লাইন এক লাইন করে অনুবাদ করা হয়।
২. এক লাইন করে ভুল প্রদর্শন করে।
৩. ইন্টারপ্রেটার ধীরে কাজ করে।
৪. প্রতিটি কাজের পূর্বে অনুবাদ করার প্রয়োজন হয়। 
৫. মাইক্রো কম্পিউটারে বেশি ব্যাবহার হয়।
 
                  অ্যালগরিদম,ফ্লোচার্ট,সুডোকোড
 
                               অ্যালগরিদম


১. অ্যালগরিদম কী? অ্যালগরিদম এর নিয়ম ও বৈশিষ্ট্য লিখ এবং সুবিধা লেখ?  
অ্যালগরিদম: যে পদ্ধতিতে কোন একটি ধাপে ধাপে সমাধান করা হয় তাকে অ্যালগরিদম বলে। অ্যালগরিদম অর্থ ধাপে ধাপে সমাধান।

উদাহরণ: তিনটি সংখ্যার যোগফল নির্ণয়ের অ্যালগরিদম লিখ?
ধাপ-১: শুরু।
ধাপ-২: তিনটি সংখ্যা  গ্রহণ করা।
ধাপ-৩: যোগফল প্রদর্শন (print) করা।
ধাপ-৪: শেষ।

▪️ অ্যালগরিদম এর নিয়ম ও বৈশিষ্ট্য:
১. অ্যালগরিদম সহজবোধ্য হতে হবে।
২. প্রত্যেকটি ধাপ স্পষ্ট হতে হবে যাতে যেকোন প্রোগ্রামার সহজেই বুঝতে পারে।
৩. ধাপে ধাপে সমস্যার সমাধান করতে হবে।
৪. একে ব্যাপকভাবে প্রয়োগ করার উপযোগী হতে হবে।

▪️  অ্যালগরিদম  এর সুবিধা:
১. সহজে প্রোগ্রামের উদ্দেশ্যে বুঝতে সাহায্য করে।
২. প্রোগ্রামের ভুল নির্ণয়ে সাহায্য করে।
৩. প্রোগ্রাম পরিবর্তন ও পরিবর্ধনে সাহায্য করে।
৪. সহজে জটিল প্রোগ্রাম লিখতে সাহায্য করে।

▪️  অ্যালগরিদম এর কয়েকটি উদাহরণ:

১. একটি ত্রিভুজের ক্ষেত্রফল নির্ণয়ের অ্যালগরিদম লিখ?
ধাপ-১: শুরু।
ধাপ-২: ত্রিভুজের ভূমি ও উচ্চতা  গ্রহণ।
ধাপ-৩: ক্ষেত্রফল = ১/২ * ভূমি * উচ্চতা সূত্র ব্যাবহার করে ত্রিভুজের ক্ষেত্রফল নির্ণয় করা।
ধাপ-৪:  ত্রিভুজের ক্ষেত্রফল প্রদর্শন করা।
ধাপ-৫: শেষ।

২. দুইটি পূর্ণ সংখ্যার মধ্যে বড় সংখ্যাটি বের করার জন্যে অ্যালগরিদম লিখ?
ধাপ-১: শুরু।
ধাপ-২: সংখ্যা দুইটি গ্রহণ।
ধাপ-৩: প্রথম সংখ্যা কী দ্বিতীয় সংখ্যা হতে বড়?
            ক) হ্যা, ফলাফল ছাপি প্রথম সংখ্যাটি বড়।
            খ) না, ফলাফল ছাপি দ্বিতীয় সংখ্যা ছোট।
ধাপ-৪: শেষ।

                                 ফ্লোচার্ট

▪️ ফ্লোচার্ট বা প্রবাহচিত্র কী? ফ্লোচার্ট কত প্রকার ও কী কী? বর্ণনা কর?
ফ্লোচার্ট: যে পদ্ধতিতে প্রোগ্রামকে চিত্র বা প্রতীকের সাহায্যে প্রকাশ করা হয় তাকে ফ্লোচার্ট বলে।

উদাহরণ: তিনটি সংখ্যার যোগফল নির্ণয়ের ফ্লোচার্ট লিখ?
 •                   ডিম্বক আকৃতির
                            (start)
                 ‌              ⬇️
                   সামান্তরিক আকৃতির
                        (Input A, B,c)
                          ‌      ⬇️   
                    আয়তকার আকৃতির
                        (sum=A+B+C)
                                ⬇️
                    সামান্তরিক আকৃতির
                         (Print sum) 
                                 ⬇️
                        ডিম্বক আকৃতির
                               (End)

• ফ্লোচার্ট মুলত দুই প্রকার: 
১. সিস্টেম ফ্লোচার্ট।
২. প্রোগ্রাম ফ্লোচার্ট।

১. সিস্টেম ফ্লোচার্ট: যে ফ্লোচার্টে ডেটার প্রবাহ, প্রক্রিয়াকরন, সংরক্ষণ ও ফলাফল, প্রদর্শনের দিক চিহ্নিত হয়  তাকে সিস্টেম ফ্লোচার্ট বলে।

• সিস্টেম ফ্লোচার্ট এর প্রতীক গুলো লিখ?
° ডকুমেন্ট (); 
° প্রক্রিয়াকরণ (); 
° সর্টিং বা সাজানো (🔶);
° ম্যানুয়াল ইনপুট ();
° অন-লাইন স্মৃতি ();
° কার্ড ();
° ম্যাগনেটিক টেপ ();
° ম্যাগনেটিক ডিস্ক ();
   
২. প্রোগ্রাম ফ্লোচার্ট: প্রোগ্রাম রচনার জন্য যে ফ্লোচার্ট তৈরি করা হয় তাকে প্রোগ্রাম ফ্লোচার্ট বলে।

• প্রোগ্রাম  ফ্লোচার্ট এর প্রতীকগু অর্থসহ লিখ?

 ° ডিম্বক আকৃতি (): টার্মিনাল প্রতীক, এটি একটি ডিম্বক আকৃতির। এটি প্রোগ্রামের শুরু বা শেষ করতে ব্যাবহার হয়। (Start/End)

 ° সামান্তরিক আকৃতি (): গ্রহণ/নির্গমন প্রতীক, এটি একটি সামান্তরিক আকৃতির। এটি প্রোগ্রামে ইনপুট ও আউটপুট এর ক্ষেত্রে ব্যাবহার করা হয়। (Input/Output)

° আয়তকার আকৃতি (): প্রক্রিয়াকরণ প্রতীক, এটি একটি আয়তাকার আকৃতির। এটি প্রোগ্রামে প্রক্রিয়াকরণে ব্যাবহার করা হয়। (গাণিতিক হিসাব নিকাশ ও বিভিন্ন ধরনের প্রক্রিয়াকরণ)

 ° হীরক (Diamond) আকৃতি (🔶): সিদ্ধান্ত প্রতীক, এটি একটি হীরক আকৃতির। এটি সিদ্ধান্ত গ্রহণের জন্য ব্যাবহার হয়, যার সম্ভাব্য মান থাকে - হ্যাঁ বা না।

° তীরচিহ্ন আকৃতি (➡️⬆️⬇️⬅️) : তীরচিহ্ন বিশিষ্ট সরলরেখা প্রোগ্রাম প্রবাহের দিক নির্ণয় করে।

° বৃত্ত আকৃতি (⚪): সংযোগ প্রতীক, যখন একটি বড় ফ্লোচার্ট যখন এক পৃষ্ঠায় জায়গা হয় না, তখন এই প্রতীক ব্যাবহার করে বাকি অংশ অপর পৃষ্ঠায় আঁকা হয়। ( End)

° বিশেষ দাগাঙ্কিত আয়তক্ষেত্রে  ():  সাব প্রোগ্রাম বা সাব রুটিন প্রতীক, এটি একটি বিশেষ দাগাঙ্কিত আয়তক্ষেত্রে আকৃতির। এটি সাব প্রোগ্রাম বা সাব রুটিন থেকে মান গ্রহণ করে।

 • ফ্লোচার্ট অঙ্কনের নিয়মাবলী লিখ?
  ১. নির্দিষ্ট কিছু প্রতীক ব্যাবহার করে ফ্লোচার্ট অংকন করতে হবে।
 ২. ফ্লোচার্ট এর প্রবাহ উপর থেকে নিচের দিকে বা বাম হতে ডান দিকে তীর চিহ্ন দিয়ে দেখাতে হবে।  
 ৩. প্রতিটি প্রতীকের ভিতরের লেখা সহজবোধ্য হতে হবে।
 ৪. অতিরিক্ত প্রতীকের ব্যবহার করা যাবে না।
 ৫. নির্দিষ্ট কোন প্রোগ্রামিং ভাষা ব্যাবহার করা উচিত নয়।

• একটি ত্রিভুজের ক্ষেত্রফল নির্ণয়ের ফ্লোচার্ট লিখ?
 °                           ডিম্বক আকৃতির
                                   (Start)
                                       ⬇️
                           সামান্তরিক আকৃতির
                         (Input Base, height)
                                       ⬇️
                           আয়তাকার আকৃতির
                       (Area=1/2*base*hight)
                                       ⬇️
                            সামান্তরিক আকৃতির 
                                 (Print area)
                                       ⬇️
                                 বৃত্ত আকৃতির
                                     (End)
                                       
 • দুটি পূর্ণ সংখ্যার মধ্যে বড় সংখ্যাটি বের করার জন্য ফ্লোচার্ট লিখ? 
 °                           ডিম্বক আকৃতির                                                                 (Start)
                                       ⬇️
                           সামান্তরিক আকৃতির
                         (Input num1, num2)                  
                                       ⬇️
                              হীরক আকৃতির
                            (num1>num2)
                                       ⬇️
                         ⬅️⬅️⬅️    ➡️➡️➡️
                         ⬇️                       ⬇️
                  Yes ⬇️                       ⬇️ no
        সামান্তরিক আকৃতির      সামান্তরিক আকৃতির    
          (Print num1)                  (Print num2) 
                ⬇️                                       ⬇️
                ⬇️                                       ⬇️
                ⬇️➡️➡️বৃত্ত আকৃতির⬅️⬅️⬇️
                                   (End) 

 • অ্যালগরিদম ও ফ্লোচার্ট এর পার্থক্য লিখ?
 ° অ্যালগরিদম: 
 ১. যে পদ্ধতিতে কোন একটি সমস্যাকে ধাপে ধাপে সমাধান করা হয় তাকে অ্যালগরিদম বলে।
 ২. এটি বর্ণনা নির্ভর।
 ৩. প্রোগ্রাম বুঝতে বেশি সময় লাগে।
 ৪. প্রোগ্রাম প্রবাহের দিক সহজে বুঝা যায় না।
 ৫. প্রোগ্রামের ভুল - ত্রুটি দূর করা কঠিন।

 ° ফ্লোচার্ট:
 ১. সমস্যা সমাধানের ধাপগুলোকে  বিভিন্ন সাংকেতিক চিহ্ন ব্যাবহার করে চিত্রের সাহায্যে প্রকাশ করাকে ফ্লোচার্ট বলে।
 ২. এটি চিত্র নির্ভর।
 ৩. প্রোগ্রাম বুঝতে বেশি সময় লাগে না।
 ৪. প্রোগ্রাম প্রবাহের দিক সহজে বুঝা যায়।
 ৫. প্রোগ্রামের ভুল - ত্রুটি দূর করা সহজ।

                                  অনুশীলন

 ১. ফারেনহাইট তাপমাত্রাকে সেলসিয়াস তাপমাত্রায় রুপান্তরের অ্যালগরিদম ও ফ্লোচার্ট লিখ?
 ° অ্যালগরিদম: 
 ধাপ - ১: শুরু।
 ধাপ - ২: ফারেনহাইটের মান গ্রহণ।
 ধাপ - ৩: সেলসিয়াস = (5/9)*(Fahrenheit-32)
 ধাপ - ৪: সেলসিয়াসের তাপমাত্রা প্রদর্শন করা।
 ধাপ - ৫: শেষ।

 ° ফ্লোচার্ট: 
                              ডিম্বক আকৃতি
                                  (start)
                                      ⬇️
                          সামান্তরিক আকৃতি
                                 (Input F)
                                       ⬇️
                           আয়তাকার আকৃতি
                   {C=(5/9)*( Fahrenhite-32)
                                      ⬇️
                           সামান্তরিক আকৃতির
                                  (Print C)
                                       ⬇️
                                 বৃত্ত আকৃতির
                                     (End)

 ২. বৃত্তের ক্ষেত্রফল নির্ণয়ের অ্যালগরিদম ও ফ্লোচার্ট লিখ?
 ধাপ - ১: শুরু।
 ধাপ - ২: ব্যাসার্ধ r এর মান গ্রহণ।
 ধাপ - ৩: ক্ষেত্রফল = 3.1416*r*r.
 ধাপ - ৪: ক্ষেত্রফল প্রদর্শন করা।
 ধাপ - ৫: শেষ।

 ° ফ্লোচার্ট :
                    ডিম্বক আকৃতি
                        (Start)
                            ⬇️
                 সামান্তরিক আকৃতি
                      (Input r)
                            ⬇️
                 আয়তাকার আকৃতি
              (Area = 3.1416*r*r)   
                            ⬇️
                সামান্তরিক আকৃতি
                   (Print area) 
                             ⬇️  
                      বৃত্ত আকৃতি  
                          (End)

 ৩.   একটি ধনাত্মক পূর্ণ সংখ্যার ফ্যাক্টরিয়ল নির্ণয়ের জন্য অ্যালগরিদম ও ফ্লোচার্ট লিখ?
 ° অ্যালগরিদম: 
 ধাপ - ১: শুরু।
 ধাপ - ২: ফ্যাক্টোরিয়ল n এর মান গ্রহণ।
 ধাপ - ৩: ধরি f = 1, c = 1;
 ধাপ - ৪: ধরি, f = f+c, c = c+1;
 ধাপ - ৫: যদি c এর থেকে n এর মান বড় হয়,
                • তাহলে ৪ নং ধাপে যাবে।
                • যদি ছোট হয় তাহলে ৭ নং ধাপে যাবে।
 ধাপ - ৬: ফ্যাক্টরিয়ল (f) এর মান প্রদর্শন।
 ধাপ - ৭: শেষ।

 • ফ্লোচার্ট:                                   
                     ডিম্বক আকৃতি
                        (Start)
                            ⬇️
                 সামান্তরিক আকৃতি
                      (Input n) 
                            ⬇️
                আয়তাকার আকৃতি
                      (f=1, c=1)
                            ⬇️
                 আয়তাকার আকৃতি
     ⬆️➡️➡️➡️ (f=f+c, c=c+1)
 S  ⬆️                  ⬇️ 
 E  ⬆️           হীরক আকৃতির
 Y  ⬅️⬅️⬅️⬅️ (C<=n)
                            ⬇️
                 সামান্তরিক আকৃতি
                       (Print f) 
                            ⬇️  
                       বৃত্ত আকৃতি  
                           (End)   

 • দুটি সংখ্যার মধ্যে ছোট / বড় সংখ্যাটি বের করার জন্য অ্যালগরিদম ও ফ্লোচার্ট লিখ?
 ° অ্যালগরিদম:
 ধাপ - ১: শুরু।
 ধাপ - ২: num 1, num 2 মান গ্রহণ।
 ধাপ - ৩: num 1<num 2
 ধাপ - ৪: যদি num 1 এর মান থেকে num 2,
                 ° বড় হলে, বড় সংখ্যাটি প্রদর্শন করবে।
                 ° ছোট হলে, ছোট সংখ্যাট প্রদর্শন করবে।

 ° ফ্লোচার্ট:
                               ডিম্বক আকৃতির                                                              (Start)
                                       ⬇️
                           সামান্তরিক আকৃতির
                         (Input num1, num2)                  
                                       ⬇️
                              হীরক আকৃতির
                            (num1<num2)
                                       ⬇️
                         ⬅️⬅️⬅️    ➡️➡️➡️
                         ⬇️                       ⬇️
                  Yes ⬇️                       ⬇️ no
        সামান্তরিক আকৃতির      সামান্তরিক আকৃতির    
          (Print num1)                  (Print num2) 
                ⬇️                                       ⬇️
                ⬇️                                       ⬇️
                ⬇️➡️➡️বৃত্ত আকৃতির⬅️⬅️⬇️
                                   (End) 

 • তিনটি সংখ্যার মধ্যে ছোট / বড় সংখ্যাটি বের করার জন্য অ্যালগরিদম ও ফ্লোচার্ট লিখ?
° অ্যালগরিদম: 
1. Start
2. Input num1,num2, num3
3. Is num1> num2 and num1>num3
     a. Yes, print num1
     b. No, go to next step
4. Is num2> num1 and num2> num3
     a. Yes, print num2
     b. No, go to next step.
5. Is num3> num2 and num3> num1
     a. Yes, print num3
     b. Print equal
6. End

• ফ্লোচার্ট: