☸️সি প্রোগ্ৰামিং ভাষা || Part 04 ☸️☸️☸️☸️☸️☸️☸️☸️☸️☸️



 


আজ আমরা শিখবো কিভাবে ডেটা টাইপ ভেরিয়েবলের মেমরি সংরক্ষণের কৌশল  বণনা করা হয় । Char টাইপ 

                                             


 সি প্রোগ্ৰামে ক্যারেক্টার টাইপ ডেটা ।  অর্থাৎ  বিভিন্ন অক্ষর নিয়ে কাজ করার জন্য Char টাইপ








 





















ভেরিয়েবলের জন্য কম্পাইলার ঐ ভেরিয়েবলের 

  

নামে ১বাইট বা ৮বিট জায়গা সংরকণ করে অর্থাৎ প্রোগ্ৰামে Char .

C h =65 


 মেমরি এ্যাড্রেস : ১২৩১,১২২৯,১২২৮,১২২৭,

 

 ১২২৬,১২২৫,১২২৪, ...............,


 ‌            0| 1| 0 |0 |0| 0|0 |0| 1


↑সাইন ↑বিট_৬ →ডেটা বিট →বিট‌


# Char টাইপ ভেরিয়েবলে  জন্য মেমরিরতেডেটা 

সংরক্ষণ  ।


সি প্রোগ্ৰামে Char টাইপ ভেরিয়েবল মূলত ASCII


অক্ষর ক্যারেক্টারের জন্য ব্যবহৃত হয় । সি প্রোগ্ৰামে সাধারণত দুইভাবে

 Char টাইপ 


ভেরিয়েবলের মান দেয়া যায় : ‌ক্যারেক্টারের ASCII



 



মান ব্যবহার করে, আথবা সরাসরি অক্ষর ব্যবহার 


করে। তবে দ্বিতীয়ক্ষেত্রে ক্যারেক্টারটিকে সিঙ্গেল 


কোটেশনের মধ্যে রাখাতে হয় । যমন : 


Char  Ch1= "A"


Char Ch2= "65 ; 


ASCII কোডে  A এর মান 65;সুতরাং উভয় স্টেটমেন্ট একই ফলাফল প্রদান করে । 

Char টাইপ  ASCII ক্যারেক্টার এবং নিউমেরিক  সংখ্যা উভয়ের জন্য ব্যবহৃত হতে পারে । সে ক্ষেত্রে ASCII ক্যারেক্টার এবং নিউমোরিক সংখ্যা ইনপুট 



 





/ আউটপুটের জন্য ফরম্যাট স্পেসিফায়ার হিসেবে

যথাক্রমে % C %d ব্যবহৃত হয় । নিম্নে এরূপ একটি প্রোগ্ৰাম (cpo4 _23.c) দেয়া হল ।



*/       cpo4 _23.c 


Char type using different type formot Specifiers    */


# include <studio.h > 


Void main (    )


{


int Ch1 = 65; Ch2= A


Print ("\ Inch 1=%c" Ch1).;


Print ("\ Inch 1=%c" Ch1).;


Print ("\ Inch 1=%c" Ch1).;


Print ("\ Inch 1=%c" Ch1).;


Print (" \Inch 1=%c" Ch1).;


Output 


Ch1= A


Ch1= 65


Ch1= A 


Ch1= 65  



 









 














int টাইপ সি প্রোগ্রামে পূর্ণসংখ্যা ( যেমন :২৩ ,

 

৪৫৬, ২৩৪৫,)  নিয়ে কাজ করার জন্য int টাইপের 

 


ভেরিয়েবল ঘোষণার জন্য int কীওয়ার্ড ব্যবহৃত 


হয়। প্রতিটি int টাইপ ভেরিয়েবল জন্য কম্পাইলার

মেমোরিতে ২ বাইট বা ১৬বিট জায়গা সংরক্ষণ করে অর্থাৎ প্রোগ্রামে,

 int Value 1= 65; 


float টাইপ সি প্রোগ্রামে বিয়ের বা পূর্ণসহ কোনো পরিবর্তনশীল সংখ্যা(floating number) (যেমন: 

 

 

23,45,456,50,2345,23, ইত্যাদি ) নিয়ে কাজ করার জন্য float টাইপ ভেরিয়েবল জন্য কম্পাইলার মেমোরিতে ৪ বাইট বা ৩২ বিট জায়গা সংরক্ষণ করে অর্থাৎ প্রোগ্রামে float Valve 1; 






স্টেটমেন্টের মাধ্যমে Value নামে ৩২ বিট জায়গা 

সংরক্ষণ করবে । float টাইপ ভেরিয়েবল জন্য মেমোরিতে ডেটা সংরক্ষিত। 



# double  টাইপ সি প্রোগ্রামে float টাইপ ভেরিয়েবল মত ভগ্নাংশ বা পূণমানের বৃহৎ পরিবর্তনশীল সংখ্যা ( যেমন: 3.5*10_20, 3.5*10_200, _4.5*10_200 ইত্যাদি) নিয়ে কাজ





করার জন্য double টাইপ ভেরিয়েবলঘোষণা করা

হয় ,তবে float টাইপ অপেক্ষা double টাইপ ভেরিয়েবল ঘোষণা করা হয়, বেঞ্জ বেশি। double টাইপ ভেরিয়েবল ঘোষণার জন্য double কীওয়ার্ড




ব্যবহৃত হয়।  



# float‌ টাইপ মত double টাইপের সংখ্যাও ইক্সপো নেনশিয়াল আকারে লেখা যায় । নিম্নে double টাইপ ভেরিয়েবল ব্যবহার করে একটি প্রোগ্ৰাম  ( Cpo4_ 26.C ) দেয়া হল ।





/*         Cpo4_ 26.C     */


/* Display in Exp .Format using % e Specifiers   */


# include<studio.h>


Void main (. )


{

double valuer = 3.5; 

Value 2= 3.5EO2;


 double sum .


Sum = Valuel+ Value 2;


Printf ("\n Value 1 = %e" Value 1) ; 


Printf ("\n Value 1 = %e" Value 1) ; 


Printf ("\n Value 1 = %e" Value 1) ; 


}


Output : 


Value 1 = 3. 500000 e+ 00


Value 2 =. 3.500000 e+ 00


 Sum  =   6.000000+00 



 

 













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

         মোভরিতে কত বাইট জায়গা নেয় তা জানার জন্য 

 

Sizeofঅপারেট ব্যবহার করা যেতে পারে। নিম্নে 


এরূপ একটি প্রোগ্ৰাম ( cpo4_27.C ) দেয়া হল ।


*/     cpo4_27.C     */


/* Using sizeof operator. */


# include<studio.h> 

# include <conio . h >


main (    ) 


{


Printf ( "\n char type reserves % d bytes ". 

Sizeof ( char) );


Printf ( "\n char type reserves % d bytes ". 

Sizeof ( int ) );


Printf ( "\n char type reserves % d bytes ". 

Sizeof 


Printf ( "\n char type reserves % d bytes ". 

Sizeof ( float) );



Printf ( "\n char type reserves % d bytes ". 

Sizeof ( long int) );



Printf ( "\n char type reserves % d bytes ". 

Sizeof ( long float) );


Printf ( "\n char type reserves % d bytes ". 

Sizeof ( long double) );


getch (.  ); 


}


Output: 


Char typee reserves 1 bytes 



int   typee reserves 2 bytes 



float  typee reserves 3 bytes 



double  typee reserves 4 bytes 



 long   typee reserves 5 bytes 



long  typee reserves 6 bytes 




void main  ( ) 



int x; 


flooat y 5.5 ; 


Printf (" \nsize of x is % d bytes " sizecof ..  


  ( y)) ; 



Printf (" \nsize of x is % d bytes " sizecof ..  


  ( y)) ; 


Printf (" \nsize of 25535 is % d bytes " sizecof ..  


  ( 25535 )) ; 

 


 Printf (" \nsize of 75535 is % d bytes "  sizecof   ( 75535 )) ; 


getch (   ) 


}



Output : 


Sizie of x is 2 bytes 



Sizie of y is 4 bytes 



Sizie of 25535 is 2 bytes 



Sizie of 75535  is 4 bytes 



নতুন ডেটা টাইপ এর অধ্যায় ধরনের ডেটা টাইপ ভেরিয়েবলের যেমন: char, int, signed, int, unsigned, int, long int, short int, float,  double ইত্যাদি ব্যবহারবিধি সম্পর্কে আলোচনা করা হয়েছে।  



 



এখন প্রশ্ন জাগতে পারে এতসব ডেটা টাইপ থাকতে নতুন কোন টাইপ দরকার আছে কি? এর উত্তর বলা অবশ্যই আছে!  আমরা জানি বাস্তব প্রতিষ্ঠানের শিক্ষার্থীদের ফলাফল সংরক্ষণের ইত্যাদি | 



 



>যদিও সকল সমস্যা কেবল built-in টাইপ ভেরিয়েবল ব্যবহার করে সমস্যার সমাধান সম্ভব, তবুও সমস্যার ধরণ অনুযায়ী নিজস্ব ডেটা টাইপ ঘোষণা করে অতি সহজে তার সমাধান করা যায় 





এতে বাস্তবতার খুব কাছাকাছি পৌঁছে অতি সহজে 

সমস্যার সমাধান সম্ভব।  সি প্রোগ্রামে ব্যবহারকারীর নিজস্ব প্রয়োজন অনুযায়ী নিজস্ব  ডেটা টাইপ এবং ঐ টাইপের যে কোনো সংখ্যাক  ভেরিয়েবল তৈরি করে প্রয়োজনীয় সকল কাজ সম্পন্ন করা যায়।  অনেক সময় এই টাইপ গুলো built-in টাইপের মতন ক্ষমতা সম্পন্ন হয়। 








>এগুলোকে কাস্টম ডেটা টাইপ বলা হয়। সি তে ব্যবহৃত এরূপ কয়েকটি ডেটা টাইপ হল : স্ট্রাকচার, ইউনিয়ন, এবং ইনুমারেটর,। সি ++ ভাষায় এগুলো ছাড়াও অতিরিক্ত ক্লাশ টাইপ ঘোষণা করা যায়।