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

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

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

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

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

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

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

এখানে প্রত্যেকটি 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 নিয়ে আলোচনা করার সময়।

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

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

.

.

.

.

.

.

.

.

.

এখানে উল্লেখযোগ্য ব্যাপার হচ্ছে 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);

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

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

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

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

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

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

Level 0

আমি বাকের। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 2 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 12 টি টিউন ও 81 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

লেখাটা আরও গুছিয়ে লিখা যেত। অনেক কিছুই পরিস্কার নয়। ধাপে ধাপে বর্ণনা করা যেত। এখানে অনেকটা খিচুড়ী হয়ে গেছে।

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

    প্রাকটিস করে বেধে গেলে প্রশ্ন করবো।

অসাধারন লেখা। অনেক অনেক ধন্যবাদ।

Level 0

ভাই আরো ছোট ছোট করে টিউন করুন ।

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

জটিল টিউনস।
এরকম অসাধারন একটা টিউন উপহার দেয়ার জন্য আপনাকে অনেক অনেক ধন্যবাদ। ==এত ধন্যবাদ দেয়ার কারনটা নিচে ব্যাখ্যা করছি।==
আপনাকে যে কি বলবো বলার ভাষা নেই টিকটিউনস এ ঘুরে ফিরে বেরানোর পাশাপাশি C প্রাকটিস করতেছি।
আমাকে C প্রগ্রামিং শিখতেই হবে।

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

নিটন গুপের বাংলা বই থেকে আমি

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 নিয়ে আরো টিউন হচ্ছে কিন্তু তা নতুন দের জন্য কাজে আসবে। তাদের টিউনে নিয়মিত আছি ঝালাই হচ্ছে।
আমার বইটার উচ্চতার দিকে তাকালেই বুঝতে পারি প্রাথমিক আলোচনা শেষ করতে কত পর্বের প্রয়োজন হবে।
সবাই চালিয়ে যাবেন আশাকরি তাতে আমাদের বাংলা টিউটোরিয়ালই সম্মৃদ্ধ হবে।
কারো কস্টই বৃথা যাবে না

ভাই সি নিয়ে অনেকই টিউন শুরু করে ঠিকই কিন্তু মাঝ পথে গিয়ে আর পাওয়া যায় না তাদের , আসলে ল্যাগুয়েজ ভিত্তিক টিউন করা অনেক ঝামেলা হয় ত তাই এমন হয় , তবে যাই হোক আপনি শেষ করবেন বলে আশা করি।
_______________________________________________________টিউন এর জন্য ধন্যবাদ

বাকের ভাই, single character input করার জন্য অনেক সময় if, for অথবা while statement – এর সাথে (ch != EOF) ব্যবহার করা হয়, যেমনটি এই প্রোগ্রামে করা হয়েছেঃ

#include
int main (void)
{
int ch = getchar();
if (ch != EOF)
printf(“You typed: %c\n”, ch);
return 0;
}

আপনি খুব সহজ করে কিভাবে single character ইনপুট করতে হয় তা দেখিয়ে দিয়েছেন। কিন্তু উপরের উদাহরনটি মাথা থেকে সরাতে পারছিনা, প্রোগ্রামটি খুব জটিল। এখানে character ইনপুটের জন্য “char” এর পরিবর্তে “int” data type ব্যবহার করা হয়েছে আবার if statement – এর মধ্যে (ch != EOF) ব্যবহার করা হয়েছে। এখানে EOF (End of file) অর্থ কি? এই ব্যাপারে আপনার টিওনসে একটু আলোচনা করবেন?

    আপনি নিশ্চই জ়েনে থাকবেন getchar() ফাংশন এর কাজ। এটি মূলত সিঙ্গেল ক্যারেক্টার ইনপুট নেয়ার জন্য ব্যবহৃত হয়। এবার আশা যাক int type এর ক্ষেত্রে। একটি character type এর ডাটা সর্বোচ্চ -১২৮ থেকে +১২৭ পর্যন্ত ভ্যালু সে রাখতে পারে। আর একটি int type এর ডাটা -৩২৭৬৮ থেকে +৩২৭৬৭ পর্যন্ত ভ্যালু রাখতে পারে।তাই সিঙ্গেল ক্যারেক্টার ইনপুট এর ক্ষেত্রে int type ব্যবহারে কোন সমস্যা নেই।

    এবার আশা যাক EOF এর কথায়। আমরা যখন কোন ফাইল থেকে ইনপুট নিয়ে কাজ করি, তখন ফাইল এর আর কোন content বা data না থাকলে তখন ঐ ফাইল একটি তথ্য পাঠায় যে তার ফাইল এর ডাটা read শেষ হয়েছে যা EOF, আর while,for,etc লুপ এর ক্ষেত্রে getchar() function দিয়ে ইনপুট নেয়ার সময় condition হিসেবে EOF দেয়া হলে যতক্ষন না EOF signal দেয়া হচ্ছে ততক্ষনই সে ইনপুট নিয়ে কাজ করবে। কীবোর্ড থেকে EOF signal দেয়ার জন্য ‘ctrl+z’ একসাথে চাপুন। ইনপুট হিসেবে কনসোল এ ^z আসবে। ‘ctrl+z’ বা EOF ভ্যালু হিসেবে -1 return করে।
    নিচের উদাহরনটি দেখুন।

    #include
    int main()
    {
    int ch;
    ch=getchar();
    while(ch!=EOF) // condition can be written as: while(ch!=-1)….
    {
    printf(“You typed: %c\n”,ch);
    ch=getchar();
    }
    return 0;
    }

    আশা করি আপনার কাছে ব্যাপারটা কিছুটা সহজ হয়েছে। চাইলে আমাকে ইমেইল করতে পারেনঃ [email protected]

আসলে আমি কোন কম্পিউটার রিলেটেড সাবজেক্টের স্টুডেন্ট না। ফাইনাল পরীক্ষা শেষ তাই কেন যেন একটু প্রোগ্রামিং শিখতে ইচ্ছে করছে। আপনার সুন্দর উত্তরের জন্য অনেক ধন্যবাদ। আমার নিচের প্রোগ্রামটিতে হয়তো কোন বাগ আছে, তাই কাজ করছেনা, দয়া করে একটু দেখবেন কি? আমি No এর জন্য N অথবা n টাইপ করে প্রোগ্রামটি টারমিনেট করতে চাই অথবা স্ক্রিনে Thank you প্রিন্ট করে বেরিয়ে আস্তে চাই। কি করব জানেবেন কি?

প্রোগ্রামঃ

#include
#include

main()
{
int answer, count;
int ch;

for(count=1; count<11; count++) {
printf("What is %d + %d? ", count, count);
scanf("%d", &answer);
if(answer == count + count) printf("Right!\n");
else{
printf("Sorry, you're wrong\n");
printf("Would you like to try again? Y/N: \n");
ch = getche();

if(ch == 'Y' || 'y') {
printf("\nWhat is %d + %d? ", count, count);
scanf("%d", &answer);
if(answer == count + count) printf("Right!\n");
else
printf("Wrong, the answer is %d\n", count + count);
}
else
printf("\nThank you");
}
}
return 0;
}

N.B.: ই-মেইল এড্রেস দেবার জন্য অনেক ধন্যবাদ।

baker vai apnar sob c programming tutorial gulor copy amar dorkar aktu kosto kore upload kore amake link ta mail korun.onek upokrito hotam.:)
[email protected]