টেকটিউনের সি এর উপর বিগত কিছুদিনের পোষ্ট দেখে ও মন্তব্য পড়ে মনে হলো আপনাদের অনেকেই সি শিখতে আগ্রহী।সি আমার এত ভাল লাগে যে টিউন না করে থাকতে পারলাম না। জাকির ও কায়সার আহমেদ ভাই কে অনেক ধন্যবাদ যে তারা কিছু বেসিক নিয়ে আলোচনা করাতে আমার কাজটা সহজ হয়ে গেল।
আমি আমার এই কোর্স আউটলাইন কয়েকটি ভাগে ভাগ করছি।
C languale শিখার জন্য practice ই সবচেয়ে বড় কথা।
C fundamental
বেসিক কনসেপ্ট : ইতোমদ্ধে পূর্ববর্তী টিউন থেকে আপনারা কিছু শিখেছেন।তবুও আবার একটু ঝালিয়ে নিন।
Variable: Variable মানে চলক।আপনি যখন কোন প্রোগ্রাম করবেন, তখন বিভিন্ন ধরনের মান এর প্রয়োজন পড়বে যা variable এ জমা থাকবে। যেমন: a=5;b=3;
এখানে a,b দুইটি variable যার মান যথাক্রমে ৫ ও ৩।
Variable লিখার নিয়ম।
১-> A-Z, a-z, 0-9 এবং ‘_’ যেকোন character এর মাধ্যমে variable declare করা যায়।
২-> তবে প্রথম character হিসেবে number ব্যবহার করা যায় না।
Valid variable names: _asdf , name , value , i , j , etc (all combination of valid
character set)
Invalid variable names: 3name (প্রথম character এ Number ব্যবহার করা হয়েছে), @data (@ is not a valid character)
কোন keyword কে variable এর নাম হিসেবে লিখা যায় না। যেমনঃ case, break, int, float, double। এম্ন অল্প কিছু keyword রয়েছে।আস্তে আস্তে তা জেনে যাবেন।
Data type: Data type নিয়েও পূর্বে আলোচনা হয়েছে। চাইলে দেখে নিতে পারেন।
কমন ডাটাটাইপঃ
int -> পূর্ণসংখ্যা(integer) জমা রাখার জন্য।
float -> ভগ্নাংশ(floating) রাখার জন্য।
char -> character জমা রাখে।
ASCII Character set: এটিও আপনারা পূর্বে দেখেছেন। আমাদের কীবোর্ড এর সকল কী এর corresponding কিছু value রয়েছে। যেমন A এর ASCII value 65. অর্থাৎ আমরা যখন্ কোন
variable এ character ‘A’ টা জমা রাখি তখন ঐ variable এ ৬৫ জমা থাকে।
Statement: আমরা যখন কোন প্রোগ্রাম লিখব তখন বিভিন্ন ধরনের কাজ করব।যেমন এক variable এর সাথে আরেক variable যোগ করা এবং তা অন্য কোন variable এ জমা রাখা।
A=3; // A variable e 3 রাখা.
c=A+3; // c variable e A এর সাথে 3 যোগ করে c variable এ রাখা।এতে A এর value পরিবর্তিত হয় না।
উল্লেখ্য C language এ সকল statement এর পর ; দেয়া লাগে। //(double forwardslash) এর পর যা লিখা হয় তা কমেন্ট হিসেবে গন্য হয়।
আপাতত যা দেখালাম তা দিয়ে প্রোগ্রাম লিখা শুরু করা যায়।
আমাদের প্রথম প্রোগ্রাম।
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
এখানে প্রত্যেকটি statement এর পর কমেন্ট করা আছে। এখানে ব্যবহৃত int main() এর int এর কাজ কি এবং return 0 statement এর কাজ function আলোচনা করার সময় বুঝতে পারবেন।
প্রোগ্রামটি compile করুন। আমি CodeBlocks IDE ব্যবহার করি। compile এর জন্য ctrl+f9 চাপতে হয়। প্রোগ্রাম এ কোন ভুল থাকলে তা নিচে দেখাবে।
রান করতে শুধু f9 চাপুন।
Output:
.
.
.
.
.
আপনারা ইতোমধ্যেই %d এর কাজ বুঝতে পারছেন। এটি variable ,var এর মান দিয়ে পরিবর্তিত হয়েছে।
এমন আরও অনেক specifier আছে। যেমনঃ
%c-> shows a single character.
%f-> shows float value upto six decimal digit
%s-> shows a string.
String সম্পর্কে ধারনা পাবেন array নিয়ে আলোচনা করার সময়।
এবার ঝটপট করে যা শিখেছেন তা দিয়ে নিচের প্রোগ্রামগুলো করে ফেলুন।
Operator: +,-,*,/,% এগুলো সাধারন কিছু mathematical operator. C language এও এদের ব্যবহার পূর্বের মত।যেমন *,/ এর কাজ +,- এর আগে হবে। এখানেও ব্র্যাকেট এর ব্যবহার রয়েছে। তবে expression এ {},[] ব্যবহার হয় না। শুধু () ব্যবহৃত হয়। কিছু arithmetic expression
A+B+C
(A+B)*C
(A+B)*(C+D)
(A-(B*(C+D))) …etc.
% à modulus operator.
C=A%B; এই expression এ A কে B দ্বারা ভাগ করলে যে ভাগশেষ থাকবে তা C তে জমা রাখা।
C=570%10;
C=A%5;
Modulus Operator এর একটি নিয়ম হলো operator এর আগে বা পড়ে যে variable বা ভ ব্যবহৃত হয় তা অবশ্যই integer type (int) হতে হবে।
C=A%5.1; an error
float A=5.1;
int C;
C=A%2; an error কারন A variable টা float type.
Assignment Operator: Assignment operator হচ্ছে ‘=’ সাইন।
general form of assignment operator:
identifier (variable) = expression
Variable কে identifier ও বলা হয়।
A=33;
A=B;
A=33*B-C;
এই সবগুলো statement এ কোন একটি value, A variable এ জমা হচ্ছে। value নির্ভর করে expression এর value’র উপর।
Type Casting: বিভিন্ন গানিতিক কাজ করার পূর্বে আমাদের type casting সম্পর্কে জানা দরকার। ধরুন একটি integer type (int) variable এর মধ্যে একটি float type variable এর value assign করতে চান।
তখন int variable এর মধ্যে float variable এর মানের শুধুমাত্র integer part টা জমা হয়।
Consider following statements in a program.
int a;
float b=5.3;
a =b; //এই statement এর পর a এর মান হবে 5.
b=a; // এই statement এর পর a এর মান হবে 5.00.
এগুলো হলো auto type casting. তবে কখনো কখনো manually typecast করা লাগতে পারে।
int a,c,d;
float b=5.3;
c=503;
//a=c%b; এই লাইন টা ভুল কারন b float type variable.
//to do that task
d=(int) b; //manual type casting.
a=c%d;
এখানে d variable এ মান রাখার সময় manual type casting করা হয়েছে। এই কাজটি আরও অনেকভাবে করা যায়।যেমনঃ
int a,c=505;
float b=5.3;
a=c%(int)b; //doing the same thing.
Relational and Logical operator: mathematical operator ছাড়াও C language এ relational and logical operator রয়েছে। যা আমাদের control statement ও আরও বিভিন্ন কাজে পরবর্তীতে লাগবে।
Relational operator Meaning
< less than
> greater than
>= greater or equal to
<= less or equal to
== equal to
!= Not equal to
Logical operator Meaning
&& And
|| Or
কোনকিছু তুলনা করার জন্য এই operator গুলো ব্যবহৃত হয়। ব্যবহার আপনারা control statement এ পাবেন।
Unary Operator: mathematical operator গুলোকে binary operator ও বলা হয়।Unary operator গুলো একটিমাত্র variable এর উপ্র কাজ করে। এগুলো হল ++, - - .
Variable এর আগে বা পরে ব্যবহার করা হয়।
int varr=5;
varr++; অথবা ++varr; // এই statement এর meaning: varr=varr+1; varr এর মান এক বাড়ানো।
varr- -; অথবা - -varr; // এই statement এর meaning: varr=varr-1; varr এর মান এক কমানো।
Conditional Operator: এটাও আমরা control statement এর সময় দেখব।
Data Input And Output
Input নেয়ার কিছু ফাংশনঃ scanf(),gets(),getchar(),getch();
scanf(): এই ফাংশনটা দিয়ে int, float, double, single character, string input হিসেবে নেয়া যায়।
example টা দেখুন।
.
.
.
.
.
.
.
.
.
এখানে উল্লেখযোগ্য ব্যাপার হচ্ছে scanf()function এর মধ্যে & সাইন ব্যবহার। যখন কোন variable declare করা হয় তখন র্যাম এ ঐ variable এর জন্য জায়গা তৈরি হয়। input নেয়ার সময় C তে ঐ memory location উল্লেখ করা লাগে। তাই &সাইন দেয়া হয়েছে। যদি & সাইন ব্যবহার না করেন তবে প্রোগ্রাম compile করলেও কোন ভুল ধরবে না। কিন্তু প্রোগ্রাম রান করে ইনপুট দেয়ার সময় প্রোগ্রাম্ ক্রাশ করবে। একে runtime error ও বলা হয়। আউটপুট এ শুধুমাত্র ভেরিএবল এর নাম দিলেই হয়।সেখানে & সাইন ব্যবহার করা লাগে না।
scanf() function এর আলাদাকারী(separator) কী হচ্ছে Enter ও space। scanf() এ int,float,double
ইনপুট দেয়ার সময় নাম্বার ইনপুট না দেয়া পর্যন্ত সে wait করে। কিন্তু charater(char)type data ইনপুট নেয়ার সময় space বা enter এর ASCII value নিয়ে নেয়।
getchar() function কোন একটি character (single) ইনপুট নেয়ার জন্য ব্যবহার হয়। তাই তৃতীয় ব্লক এ single character ইনপুট নেয়ার আগে getchar() ব্যবহার করা হয়েছে float এবং character এর মধ্যবর্তী separator টা নেয়ার জন্য। getchar() টা ব্যবহার না করলে আউটপুট এর character এ কিছু দেখাবে না।
Output with getchar() function:
.
.
.
.
Typing 512 then enter
.
.
.
.
.
.
.
Type 3.565 then enter
.
.
.
.
.
3.565 টাইপ করার পরবর্তী এন্টার টা getchar() function এ ঢুকেছে। তারপর একটি character type করে এন্টার দিন।
.
.
.
.
.
.
.
.
প্রোগ্রাম এর শেষ লাইন return 0; execute করে প্রোগ্রাম শেষ হল।
printf() ফাংশন এ একাধিক ভেরিএবল এর আউটপুট একসাথে দেখার জন্য প্রতিটি specifier এর জন্য ভেরিএবল এর নাম ক্রমানূসারে লিখলেই হয়।
printf(“var1=%d, var2=%f ,var3=%c\n” , var1,var2,var3);
char type variable এর specifier হল %c. যদি %c এর জায়গায় %d ব্যবহার করা হয় তবে ঐ variable এর ASCII value দেখাবে।
char ch=’A’;
printf(“ch=%d”,ch);
ইনপুট নেয়ার আরো ফাংশন পরবর্তীতে দেখব।
এখন পর্যন্ত যা দেখলেন তা দিয়ে নিচের প্রোগ্রামগুলো করে ফেলুন।
আগামী দিন control statement নিয়ে আলোচনা করব। প্রোগ্রামীং এর মূল মজাই পাবেন সেখানে।
ভাল লাগলে কমেন্ট করুন। এটি আমার প্রথম টিউন। আর কোন টপিক সম্পর্কে জানতে চাইলে বা সমস্যা হলে জানান।আমি যথাসাধ্য চেষ্টা করব। সকলকে ধন্যবাদ।
আমি বাকের। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 10 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 12 টি টিউন ও 81 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
লেখাটা আরও গুছিয়ে লিখা যেত। অনেক কিছুই পরিস্কার নয়। ধাপে ধাপে বর্ণনা করা যেত। এখানে অনেকটা খিচুড়ী হয়ে গেছে।