C Programing



প্রোগ্রামিং ভাষার প্রাথমিক ধারণা।



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



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

সিপ্রোগ্রামিং ভাষা একটি 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: এই অংশে গ্লোবাল চলক ঘোষণা করা হয়। এছাড়া ইউজার ডিফাইন্ড ফাংশনও ঘোষণা করা হয়

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

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



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


দুটি সংখ্যা ইনপুট নিয়ে যোগফল নির্ণয় করে যোগফল প্রিন্ট করার জন্য একটিসিপ্রোগ্রাম 
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<conio.h>
main()
{
   int x, y, sum;
   scanf("%d %d",&x,&y);
   sum = x + y;
   printf("Sum = %d", sum);
   getch();
}

প্রোগ্রাম বিশ্লেষণ:
১।সিপ্রোগ্রামে যেসব লাইব্রেরি ফাংশন ব্যবহার করা হয় তাদের ডেফিনেশন যে হেডার ফাইলে থাকে প্রোগ্রামের শুরুতে সেই হেডার ফাইলের নাম লিংক সেকশনে সংযুক্ত করতে হয়। প্রোগ্রামের ভিতরে 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( ) ফাংশনের কার্যক্রম শেষ বুঝানোর জন্য ব্যবহার করা হয়েছে



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

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

বিভিন্ন ডেটা টাইপের জন্য ফরমেটেড ইনপুট আউটপুট ফাংশনে ব্যবহৃত ফরমেট স্পেসিফায়ারসমূহঃ
ফরমেট স্পেসিফায়ার
ব্যবহার
উদাহরণ 
%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?
 






























কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন