ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1)

Posted: জুলাই 9, 2010 in প্রোগ্রামিং
Tags: , , , ,

লিখেছেনঃ বাকের

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

আমি আমার এই কোর্স আউটলাইন কয়েকটি ভাগে ভাগ করছি।

  1. C fundamental, Variable, Operator and Expressions.
  2. Data input and output
  3. Control Statement and array concept
  4. Array and Function
  5. Structure
  6. File

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) এর পর যা লিখা হয় তা কমেন্ট হিসেবে গন্য হয়।

আপাতত যা দেখালাম তা দিয়ে প্রোগ্রাম লিখা শুরু করা যায়।

আমাদের প্রথম প্রোগ্রাম।

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

এখানে প্রত্যেকটি statement এর পর কমেন্ট করা আছে। এখানে ব্যবহৃত int main() এর int এর কাজ কি এবং return 0 statement এর কাজ function আলোচনা করার সময় বুঝতে পারবেন।

প্রোগ্রামটি compile করুন। আমি CodeBlocks IDE ব্যবহার করি। compile এর জন্য ctrl+f9 চাপতে হয়। প্রোগ্রাম এ কোন ভুল থাকলে তা  নিচে দেখাবে।

রান করতে শুধু f9 চাপুন।

Output:

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.

.

.

.

.

আপনারা ইতোমধ্যেই %d এর কাজ বুঝতে পারছেন। এটি variable ,var এর মান দিয়ে পরিবর্তিত হয়েছে।
এমন আরও অনেক specifier আছে। যেমনঃ

%c-> shows a single character.
%f-> shows float value upto six decimal digit
%s-> shows a string.

String সম্পর্কে ধারনা পাবেন array নিয়ে আলোচনা করার সময়।

এবার ঝটপট করে যা শিখেছেন তা দিয়ে নিচের প্রোগ্রামগুলো করে ফেলুন।

  1. আউটপুট স্ক্রীন এ আপনার নাম প্রিন্ট করুন।
  2. একটি variable এ 5 and আরেকটি variable এ 10 রেখে যোগ, বিয়োগ, গুন, ভাগ করুন এবং প্রতিবার ফলাফল আউটপুট স্ক্রীন এ প্রিন্ট করুন।

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 টা দেখুন।

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.

.

.

.

.

.

.

.

.

এখানে উল্লেখযোগ্য ব্যাপার হচ্ছে 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:
 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.
.
.
.

Typing 512 then enter

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.
.
.
.
.
.
.
Type 3.565 then enter

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.
.

.

.

.

3.565 টাইপ করার পরবর্তী এন্টার টা getchar() function এ ঢুকেছে। তারপর একটি character type করে এন্টার দিন।

 ধাপে ধাপে সি ল্যাঙ্গুয়েজ শিখুন (Part 1) | Techtunes

.
.
.
.
.
.
.
.

প্রোগ্রাম এর শেষ লাইন 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);

ইনপুট নেয়ার আরো ফাংশন পরবর্তীতে দেখব।

এখন পর্যন্ত যা দেখলেন তা দিয়ে নিচের প্রোগ্রামগুলো করে ফেলুন।

  1. দুইটি পূর্ণসংখ্যা ইনপুট নিয়ে আউটপুট এ দেখান।
  2. একটি float type সংখ্যা ইনপুট নিন।তারপর তা একটি integer type variable এ রাখুন এবং দুইটির মান আউটপুট এ দেখুন।
  3. যেকোন character ইনপুট দিয়ে সেই character ও তার ASCII value আউটপুট স্ক্রীন এ দেখান।
  4. বিভিন্ন operator ব্যবহার করে প্রোগ্রাম লিখুন।

আগামী দিন control statement নিয়ে আলোচনা করব। প্রোগ্রামীং এর মূল মজাই পাবেন সেখানে।

ভাল লাগলে কমেন্ট করুন। এটি আমার প্রথম টিউন। আর কোন টপিক সম্পর্কে জানতে চাইলে বা সমস্যা হলে জানান।আমি যথাসাধ্য চেষ্টা করব। সকলকে ধন্যবাদ।

CodeBlocks IDE ডাউনলোড করুন

Source

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / পরিবর্তন )

Twitter picture

You are commenting using your Twitter account. Log Out / পরিবর্তন )

Facebook photo

You are commenting using your Facebook account. Log Out / পরিবর্তন )

Google+ photo

You are commenting using your Google+ account. Log Out / পরিবর্তন )

Connecting to %s