(In Bengali) C – Scope Rules (Arrays)

C – Scope Rules (Arrays)

আপনাকে স্বাগতম আমাদের টিউটোরিয়াল সাইটে। এখানে আমরা সি প্রোগ্রামিং এর ARRAYS সম্পর্কে আলোচনা করবো। আপনারা আগের লেসন এ জেনেছেন সি প্রোগ্রামিং কি তাই এই লেসন এ আর কথা বাড়াতে চাই না। আসুন জেনে নেই Arrays সম্পর্কে…
কোন প্রোগ্রামিং মধ্যে একটি সুযোগ বা একটি সংজ্ঞা পরিবর্তনশীল, তার অস্তিত্ব থাকতে পারে এবং যে পরিবর্তনশীল অতিক্রম ব্যবহার করা যাবে না কারণ প্রোগ্রাম যেখানে একটি অঞ্চল. ভেরিয়েবল সি কে প্রোগ্রামিং এর ভাষা হিসেবে ঘোষণা করা যেতে পারে যেখানে তিনটি জায়গা আছে:

১. একটি ফাংশন বা স্থানীয় ভেরিয়েবল যা বলা হয় একটি ব্লক ভিতরে।

২. সব ফাংশন এর বাইরে এদের গ্লোবাল ভেরিয়েবল যা বলা হয়।

৩. আনুষ্ঠানিক পরামিতি যা বলা হয় ফাংশন পরামিতি সংজ্ঞা।

এবারন ব্যাখা করা যাক স্থানীয় এবং গ্লোবাল ভেরিয়েবল কি।

Local Variables

গ্লোবাল ভেরিয়েবল সাধারণত একটি প্রোগ্রাম যা একটি ফাংশন এর বাইরে সংজ্ঞায়িত করা হয়। গ্লোবাল ভেরিয়েবল আপনার প্রোগ্রাম জীবনকাল জুড়ে তাদের মূল্য রাখা হবে এবং তারা প্রোগ্রামের জন্য নির্ধারিত কর্ম কোনো ভিতরে প্রবেশ করা যেতে পারে।

বিশ্বব্যাপী পরিবর্তনশীল কোনো ফাংশন দ্বারা ব্যবহার করা যাবে। এটা বিশ্বব্যাপী একটি পরিবর্তনশীল এর ঘোষণার পর আপনার সম্পূর্ণ প্রোগ্রাম সারা ব্যবহারের জন্য উপলব্ধ করা হয়. বৈশ্বিক এবং স্থানীয় ভেরিয়েবল ব্যবহার করে উদাহরণ অনুসরণ করা হয়:

#include <stdio.h>/* global variable declaration */
int g;

int main ()
{
/* local variable declaration */
int a, b;

/* actual initialization */
a = 10;
b = 20;
g = a + b;

printf (“value of a = %d, b = %d and g = %d\n”, a, b, g);

return 0;
}

একটি ফাংশন ভিতরে স্থানীয় এবং গ্লোবাল ভেরিয়েবল কিন্তু স্থানীয় পরিবর্তনশীল এর মান পছন্দের নিতে হবে জন্য একটি প্রোগ্রাম একই নাম থাকতে পারে. নিম্নলিখিত একটি উদাহরণ:

#include <stdio.h>/* global variable declaration */
int g = 20;

int main ()
{
/* local variable declaration */
int g = 10;

printf (“value of g = %d\n”, g);

return 0;
}

উপরের কোড কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়, এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:

value of g = 10

Formal Parameters

ফাংশন পরামিতি, আনুষ্ঠানিক পরামিতি, যে ফাংশন সঙ্গে স্থানীয় ভেরিয়েবল হিসেবে গণ্য করা হয় এবং তারা গ্লোবাল ভেরিয়েবল উপর পক্ষপাত নিতে হবে. নিম্নলিখিত একটি উদাহরণ:

#include <stdio.h>/* global variable declaration */
int a = 20;

int main ()
{
/* local variable declaration in main function */
int a = 10;
int b = 20;
int c = 0;

printf (“value of a in main() = %d\n”, a);
c = sum( a, b);
printf (“value of c in main() = %d\n”, c);

return 0;
}

/* function to add two integers */
int sum(int a, int b)
{
printf (“value of a in sum() = %d\n”, a);
printf (“value of b in sum() = %d\n”, b);

return a + b;
}

উপরের কোড কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়, এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

Initializing Local and Global Variables

একটি স্থানীয় পরিবর্তনশীল সংজ্ঞায়িত করা হয়, এটি সিস্টেমের সক্রিয়া করা হয় না, আপনি এটি নিজের আরম্ভ হবে. গ্লোবাল ভেরিয়েবল অনুসরণ হিসাবে আপনি তাদের সংজ্ঞায়িত যখন সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে আরম্ভ হয়:
Data Type Initial Default Value

Data Type Initial Default Value
int 0
char ‘\0’
float 0
double 0
pointer NULL

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

সি স্টোরেজ ক্লাস (C – Storage Classes)

সি স্টোরেজ ক্লাস  (C – Storage Classes):

                                            লিখেছেনঃ মোঃ আমিরুল ইসলাম (আরিফ)

ওয়েব ডিজাইনার অ্যান্ড ডেভেলপার

একটি স্টোরেজ ক্লাস বলতে বুঝায় যে একটি সি প্রোগ্রামের মধ্যে ভ্যেরিয়াবল অথবা ফাংশন এর নির্দিষ্ট লক্ষ এবং লাইফ-টাইম ।

একটি একটি সি প্রোগ্রামে যে গুলো টাইপ ব্যাবহার করা হয় তা হলঃ

  • auto
  • register
  • static
  • extern

 

অটো স্টোরেজ ক্লাস (The auto Storage Class):

সকল লোকাল ভ্যেরিয়াবলের জন্য অটো স্টোরেজ ক্লাস হল ডিফল্ট স্টোরেজ ক্লাস।

{   int mount;   auto int month;}

উদাহরণস্বরূপ উপরে একই স্টোরেজ ক্লাসের সঙ্গে দুটি ভেরিয়েবল, অটো শুধুমাত্র ফাংশন মধ্যে ব্যবহার হয়েছে।

যেমনঃ লোকাল ভ্যেরিয়াবল.

রেজিস্টার স্টোরেজ ক্লাস (The register Storage Class):

রেজিস্টার স্টোরেজ ক্লাস এটা লোকাল ভ্যেরিয়াবলকে সংজ্ঞায়িত করতে ব্যাবহার করা হয় যা র্যামের স্থলে জমা করা হয়। এর অর্থ, এই ভ্যেরিয়াবলের সর্বাধিক মাপ রেজিস্টারের আকারের (সাধারণত এক শব্দ) সমান এবং এটি আপ্লাইড ইউনারী ‘ও’ অপারেটর থাকতে পারে না. (এটি মেমরির অবস্থান না)

{   register int  miles;}

রেজিস্টার শুধু মাত্র ভ্যেরিয়াবলে ব্যাবহার করা উচিৎ যেন তা প্রয়োজনে দ্রুত অ্যাক্সেস করা যায়, যেমনঃ কাউন্টার। এটা উল্লেখ করা উচিৎ যে defining ‘register’ বলতে এটা বুঝায় না যে ভ্যেরিয়াবল রেজিস্টারে সেভ হবে। এটার মানে হচ্ছে একটি রেজিস্টার সংরক্ষিত হওয়াটা হার্ডওয়্যার ও বাস্তবায়ন সীমাবদ্ধতার  উপর নিরভর করবে ।

স্ট্যাটিক স্টোরেজ ক্লাস (The static Storage Class):

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

যখন এটি করা হয়, তখন ভেরিয়াবলের স্কোপে যে ফাইলটি ঘোষণা করা হবে তা সীমিত হবে ।

সি প্রোগ্রামে যখন ক্লাস ডাটা মেম্বারে স্ট্রাটিক ব্যাবহার করা হবে, তখন এটা যে মেম্বার এর মধ্যে শুধুমাত্র একটি কপি তার ক্লাসের সব অবজেক্ট দ্বারা ভাগ করা হবে।

 

#include <stdio.h> /* function declaration */void func(void); static int count = 5; /* global variable */ main(){   while(count–)   {      func();   }   return 0;}/* function definition */void func( void ){   static int i = 5; /* local static variable */   i++;    printf(“i is %d and count is %d\n”, i, count);}

 

আপনি এখন এই উধাহরনটি নাও বুজতে পারেন কারন আমি এটাতে ফাংশন এবং গ্লোবাল ভেরিয়াবল ব্যাবহার করেছি।  যা আমি বিস্তারিত বর্ণনা করিনি। তাই এখন এগিয়ে যাওয়ার জন্য, যদিও এটা আপনি পুরপুরি ভাবে না বুঝেন । যখন উপরের কোড গুলো প্রণীত ও অনুষ্ঠিত (compiled and executed)। তখন এটি নিম্নলিখিত ফলাফল সৃষ্টি করে:

i is 6 and count is 4i is 7 and count is 3i is 8 and count is 2i is 9 and count is 1i is 10 and count is 0

বাহ্যিক স্টোরেজ ক্লাস (The extern Storage Class):

বাহ্যিক স্টোরেজ ক্লাস (The extern Storage Class) টি ব্যাবহার করা হয় গ্লোবাল ভেরিয়াবলকে উল্লেখ করতে যেটা সকল প্রোগ্রাম ফাইল এ দৃশ্যমান । যখন আপনি এক্সট্রান স্টোরেজ ক্লাস ব্যাবহার করবেন ভেরিয়াবল সক্রিয় করা যাবে না। যাতে সব এটি ভেরিয়াবলের নাম নির্দেশ করতে পারে না, সংগ্রহস্থলের অবস্থান যা পূর্বে নির্ধারিত করা হয়েছে ।

যখন আপনার একাধিক ফাইল আছে এবং আপনি গ্লোবাল ভেরিয়াবল অথবা ফাংশন ডিফাইন করবেন, যা ব্যাবহার করা হবে অন্য ফাইলেও, তারপর এক্সট্রান ব্যাবহার করা হবে অন্য ফাইলে যা ভেরিয়াবল অথবা ফাংশনকে সংজ্ঞায়িত করার রেফারেন্সে । শুধুমাত্র বোঝার জন্য,  এক্সট্রান অন্য ফাইলের গ্লোবাল ভেরিয়াবল অথবা ফাংশন ঘোষণা (declare) করতে ব্যবহার করা হয়।

এক্সট্রান মডিফাইয়ার সবচাইতে বেসি ব্যাবহার করা হয় যখন সেখানে দুই বা ততোধিক ফাইল শেয়ার করে একই গ্লোবাল ভেরিয়াবল অথবা ফাংশন ।

উধারন স্বরূপঃ

First File: main.c

#includeint count;externvoid write_extern();main(){   count=5;   write_extern();}

Second File: support.c

#include <stdio.h> extern int count; void write_extern(void){   printf(“count is %d\n”, count);}এখানে, এক্সট্রান শব্দটি ব্যাবহার করা হয়েছে দ্বিতীয় ফাইল কাউন্ট ডিক্লেয়ার করতে যেখানে এটি প্রথম ফাইল এর সংজ্ঞা আছে, main.c. হিসাবে । এখন, এই দুটি ফাইল কম্পাইল:$gcc main.c support.c

(In Bengali) C – Functions

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

একটি ফাংশন যা অনেক গুলো গ্রুপ এর বিবৃতি যা সকলে একত্রে কাজ করে। প্রত্যেক সি প্রোগ্রাম এ কমপক্ষে একটি ফাংশন থাকে যা main(), এবং সব সবচেয়ে তুচ্ছ প্রোগ্রাম অতিরিক্ত ফাংশন নির্ধারণ করতে পারবেন.
আপনি পৃথক ফাংশন মধ্যে আপনার কোড ভাগ করতে পারেন. আপনি বিভিন্ন ফাংশন মধ্যে আপনার কোড বিভক্ত কিভাবে আপনি আপ হয়, কিন্তু যুক্তি বিভাগ সাধারণত, তাই প্রতিটি ফাংশন একটি নির্দিষ্ট টাস্ক সম্পাদন করে হয়.
একটি ফাংশন ঘোষণা একটি ফাংশন এর নাম, রিটার্ন টাইপ, এবং পরামিতি সম্পর্কে কম্পাইলার বলে. একটি functiondefinition ফাংশন প্রকৃত শরীর উপলব্ধ করা হয়.
সি মান লাইব্রেরি আপনার প্রোগ্রাম কল করতে পারেন যে অনেক বিল্ট ইন ফাংশন প্রদান করে. উদাহরণস্বরূপ, ফাংশন strcat () অন্য অবস্থান এবং আরো অনেক ফাংশন এক মেমোরি কপি দুই স্ট্রিং ফাংশন memcpy () কনক্যাটেনেট. একটি ফাংশন একটি পদ্ধতি বা একটি উপ-রুটিন বা একটি পদ্ধতি, বিভিন্ন নামের সাথে পরিচিত।
Defining a Function:
অনুসরণ হিসাবে সি প্রোগ্রামিং ভাষায় একটি ফাংশন সংজ্ঞা সাধারণ ফর্ম:
return_type function_name( parameter list )
{
body of the function
}
সি প্রোগ্রামিং ভাষা একটি ফাংশন সংজ্ঞা একটি ফাংশন হেডার এবং একটি ফাংশন শরীরের নিয়ে গঠিত. এখানে একটি ফাংশন সমস্ত অংশ:
• Return Type: একটি ফাংশন একটি মান ফিরে যেতে পারে. Return_type ফাংশন প্রদান করে মান ডাটা টাইপ. কিছু ফাংশন একটি মান ফিরে ছাড়া পছন্দসই অপারেশন সম্পাদন. এই ক্ষেত্রে, return_type শব্দ অকার্যকর হয়.
• Function Name: এই ফাংশন প্রকৃত নাম. ফাংশন নাম এবং পরামিতি তালিকা একসঙ্গে ফাংশন স্বাক্ষর গঠন করে.
• Parameters: একটি প্যারামিটার একটি স্থানধারক ভালো হয়. একটি ফাংশন প্রার্থনা করা হয়, আপনি পরামিতি একটি মান পাস. এই মান হিসাবে প্রকৃত পরামিতি অথবা যুক্তি উল্লেখ করা হয়. পরামিতি তালিকা একটি ফাংশন পরামিতি টাইপ, আদেশ, এবং সংখ্যা বোঝায়. পরামিতি ঐচ্ছিক; যে, একটি ফাংশন কোন প্যারামিটার থাকতে পারে.
• Function Body: ফাংশন শরীরের ফাংশন কি নির্ধারণ করুন যে বিবৃতির একটি সংগ্রহ রয়েছে.
Example:
একটি ফাংশন জন্য সোর্স কোড সর্বোচ্চ বলা হল (). এই ফাংশন দুটি পরামিতি num1 ও num2 নেয় এবং দুই মধ্যে সর্বোচ্চ আয়:
/* function returning the max between two numbers */
int max(int num1, int num2)
{
/* local variable declaration */
int result;

if (num1 > num2)
result = num1;
else
result = num2;

return result;
}
Function Declarations:
একটি ফাংশন ঘোষণা একটি ফাংশন নাম এবং কিভাবে ফাংশন কল সম্পর্কে কম্পাইলার বলে. ফাংশন প্রকৃত শরীর আলাদাভাবে সংজ্ঞায়িত করা যায়.
একটি ফাংশঙ্কে কয়েকটি অংশে বর্ণনা করা যায়ঃ
return_type function_name( parameter list );
উপরে বর্ণিত ফাংশন সর্বোচ্চ () জন্য, নিম্নলিখিত ভাবে ফাংশন বর্ণনা করা হয়:
int max(int num1, int num2);
পরামিতি নাম বৈধ ঘোষণা করা হয় শুধুমাত্র তাদের টাইপ যাতে নিম্নলিখিত প্রয়োজন বোধ করা হয় ফাংশন ঘোষণা গুরুত্বপূর্ণ নয়:
int max(int, int);
আপনি এক উৎস ফাইলের মধ্যে একটি ফাংশন নির্ধারণ এবং আপনি অন্য ফাইলে যে ফাংশন কল যখন ফাংশন ঘোষণা প্রয়োজন বোধ করা হয়. যেমন ক্ষেত্রে আপনি ফাংশন আহ্বান ফাইল শীর্ষে ফাংশন ঘোষণা করা উচিত.
Calling a Function:
একটি সি ফাংশন তৈরি করার সময়, আপনি ফাংশন কি আছে কি একটি সংজ্ঞা দিতে. একটি ফাংশন ব্যবহার করতে, আপনাকে সংজ্ঞায়িত কাজ করার যে ফাংশন কল করতে হবে। একটি প্রোগ্রাম একটি ফাংশন কল করার সময়, প্রোগ্রাম নিয়ন্ত্রণ ফাংশন বলা স্থানান্তর করা হয়। একটি ফাংশন বলা টাস্ক নির্ধারিত কর্ম করে এবং তার ফিরতি বিবৃতি মৃত্যুদন্ড কার্যকর করা হয় বা যখন তার কার্যকারিতা শেষ বন্ধ যুগল পৌঁছেছেন হয়। এটা প্রধান প্রোগ্রাম প্রোগ্রাম নিয়ন্ত্রণ ফেরৎ।একটি ফাংশন কল করার জন্য, আপনি কেবল ফাংশন নাম সহ পরামিতি, পাস করতে হবে, এবং ফাংশন তারপর আপনি ফিরে মান সংরক্ষণ করতে পারেন, একটি মান প্রদান করে।
উদাহরণস্বরূপ:
#include <stdio.h>

/* function declaration */
int max(int num1, int num2);

int main ()
{
/* local variable definition */
int a = 100;
int b = 200;
int ret;

/* calling a function to get max value */
ret = max(a, b);

printf( “Max value is : %d\n”, ret );

return 0;
}

/* function returning the max between two numbers */
int max(int num1, int num2)
{
/* local variable declaration */
int result;

if (num1 > num2)
result = num1;
else
result = num2;

return result;
}
I kept max() function along with main() function and compiled the source code. While running final executable, it would produce the following result:
Max value is : 200
Function Arguments:
একটি ফাংশন আর্গুমেন্ট ব্যবহার করা হয়, তাহলে এটি আর্গুমেন্ট মান গ্রহণ ভেরিয়েবল ঘোষণা করা উচিত. এই ভেরিয়েবল ফাংশন আনুষ্ঠানিক পরামিতি বলা হয়.The formal parameters behave like other local variables inside the function and are created upon entry into the function and destroyed upon exit.
একটি ফাংশন কলিং, যখন আর্গুমেন্ট একটি ফাংশন প্রেরণ করা যেতে পারে যে দুটি উপায় আছে:
Call Type Description
Call by value
This method copies the actual value of an argument into the formal parameter of the function. In this case, changes made to the parameter inside the function have no effect on the argument.
Call by reference
This method copies the address of an argument into the formal parameter. Inside the function, the address is used to access the actual argument used in the call. This means that changes made to the parameter affect the argument.

ডিফল্টরূপে, সি আর্গুমেন্ট পাস মান দ্বারা কল ব্যবহার করে. সাধারণভাবে, এই ফাংশন একই পদ্ধতি ব্যবহার () সর্বোচ্চ আহ্বান করার সময় একটি ফাংশন মধ্যে যে কোড ফাংশন কল ব্যবহৃত আর্গুমেন্ট পরিবর্তন এবং উল্লিখিত উদাহরণ উপরে না করতে পারেন।

HTML Iframe (এইচটিএমএল আইফ্রেম)

একটি iframe একটি ওয়েব পৃষ্ঠার মধ্যে আরো একটি ওয়েব পেজ প্রদর্শন করতে ব্যবহৃত হয়।

Iframe Syntax (iframe সিনট্যাক্স)

একটি iframe যোগ করার সিন্টেক্স হল :


<iframe src=”URL” width=”300″ height=”150″></iframe>


 

src অ্যাট্রিবিউট আইফ্রেম পৃষ্ঠার URL টি (ওয়েব ঠিকানা) নির্দিষ্ট করে

 

Iframe – এর উচ্চতা এবং প্রস্থতা নির্ধারন

Iframe – এর এর আকার নির্ধারণ করার জন্য height এবং width অ্যাট্রিবউট ব্যবহার করুন

অ্যাট্রিবিউট এর মান ডিফল্ট হিসেবে পিক্সেল এ থাকে, কিন্তু আপনি ইচ্ছা করলে একে পারসেন্ট হিসেবেও ব্যবহার করতে পারেন (যেমন: 80%)

 

উদাহরণ:


<iframe src=”demo_iframe.htm” width=”200″ height=”200″></iframe>


 

 

Iframe – এর বর্ডার মুছে ফেলা

ডিফল্ট হিসেবে iframe এর চারদিকে একটি কালো বর্ডার থাকে

বর্ডারটি মুছার জন্য একটি স্টাইল অ্যাট্রিবিউট যোগ করুন এবং CSS এর বর্ডার প্রোপার্টি ব্যবহার করুন

 

উদাহরণ :


<iframe src=“demo_iframe.htm” style=“border:none”></iframe>


 

CSS এর সাহায্যে iframe বর্ডার এর সাইজ, রং এবং স্টাইলও পরিবর্তন করা যায়

উদাহরণ :


<iframe src=“demo_iframe.htm” style=“border:5px dotted red”></iframe>


 

কোন একটি লিংক এর টার্গেট হিসাবে আইফ্রেম ব্যবহার করন

একটি আইফ্রেমকে কোন একটি লিঙ্ক এর টারগেট ফ্রেম হিসেবে ব্যবহার করা যায়
লিঙ্কটির target অ্যাট্রিবিউটটি অবশ্যই আইফ্রেম এর name অ্যাট্রিবিউটটিকে নির্দেশ করতে হবে

 

উদাহরণ :


<iframe src=“demo_iframe.htm” name=“iframe_a”></iframe>
<p><a href=“http://bangla.salearningschool.com” target=“iframe_a”>http://bangla.salearningschool.com</a></p>


 

এইচটিএমএল এ আইফ্রেম ট্যাগ

এইচটিএমএল এ আইফ্রেম ট্যাগ হচ্ছে : </iframe>

যা একটি ইনলাইন ফ্রেম সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়।

 

 

জাভাস্ক্রিপ্ট অবজেক্ট (JavaScript Objects)

জাভাস্ক্রিপ্ট অবজেক্ট (JavaScript Objects)

-পায়েল চৌধুরী

 

বাস্তব জীবনের দৃষ্টান্তে অবজেক্টস, প্রপার্টিস এবং মেথডস

বাস্তবে একটি গাড়ী হল একটা অবজেক্ট.

গাড়ীর ওজন, রং এসব হল একটি গাড়ীর প্রপার্টিজ এবং এর চালু হবার এবং থামার মেথড আছে.

 

Object Properties Methods
 Car car.name = Fiat car.start()
car.model = 500 car.drive()
car.weight = 850 kg car.brake()
car.color = white car.stop()

 

সকল গাড়ির বৈশিষ্ট্য (Prperties) একই, কিন্ত এর মান গাড়ী থেকে গাড়ী থেকে পৃথক।
সকল গাড়ির পদ্ধতি (Methods) একই, কিন্তু মেথড সম্পন্ন হওয়ার সময় ভিন্ন হয়।

জাভাস্ক্রিপ্ট অবজেক্ট

আমরা জানি যে, জাভাস্ক্রিপ্ট ভেরিয়েবল তথ্য মানের ধারক (data values) হিসাবে কাজ করে।

নীচের কোডের ভেরিয়েবলটি গাড়ীর নামের (Fiat) একটি সাধারণ মান (simple value) হিসাবে দেয়া হয়েছে:


var car = “Fiat”;


বস্তু (Objects) সমূহও ভেরিয়েবল। কিন্তু এরা অনেক মান ধারণ করতে পারে। নীচের কোডের ভেরিয়েবলটি গাড়ীর নামের অনেকগুলো মান (Fiat, 500, white হিসাবে দেয়া হয়েছে:


var car = {type:”Fiat”, model:500, color:”white”};


 

মানসমূহ name:value এভাবে জোড়ায় (name কোলন value) লেখা হয়।
জাভাস্ক্রিপ্ট অবজেক্টস নামকৃত মানসমূহের (named values) ধারক হিসাবে কাজ করে।

অবজেক্ট প্র্রপার্টিজ

name:value জোড়াকে (জাভাস্ক্রিপ্ট অবজেক্টস এ) প্র্রপার্টিজ বলে।


var person = {firstName:”John”, lastName:”Doe”, age:50, eyeColor:”blue”};


Property Property Value
firstName John
lastName Doe
age 50
eyeColor blue

 

অবজেক্টস মেথডস

মেথডস হল ক্রিয়াসমূহ যা অবজেক্টস এর উপর সম্পন্ন করা হয়।
মেথডস সমূহ ফাংশন ডেফিনেশন হিসাবে প্র্রপার্টিজ এর মধ্যে সংরক্ষণ করা হয়।

Property Property Value
firstName John
lastName Doe
age 50
eyeColor blue
fullName function() {return this.firstName + ” ” + this.lastName;}

জাভাস্ক্রিপ্ট অবজেক্ট যে নামকৃত ভেলু সমূহের ধারক হিসাবে কাজ করে তাদের প্র্রপার্টিজ এবং মেথডস বলে।

অবজেক্ট নির্ধারণ

জাভাস্ক্রিপ্ট অবজেক্ট এর উদাহারণ:


var person = {firstName:”John”, lastName:”Doe”, age:50, eyeColor:”blue”};


স্পেস এবং লাইন ব্রেক গুরুত্বপূর্ণ নয়। একটি অবজেক্ট নির্ধারণ করতে একাধিক লাইন জুড়ে লিখতে হতে পারে:
উদাহারণ:


var person = {
     firstName:"John",
     lastName:"Doe",
     age:50,
     eyeColor:"blue"
 };

 

অবজেক্ট প্র্রপার্টিজ এর ব্যবহার( Accessing Object Properties)

আমরা দু’ভাবে অবজেক্ট প্র্রপার্টিজ ব্যবহার করতে পারি:


objectName.propertyName


অথবা


objectName[propertyName]


উদাহারণ ১:


person.lastName;


 

 

উদাহারণ ২:


person[“lastName”];


 

 

অবজেক্ট মেথডস এর ব্যবহার (Accessing Object Methods)

নিম্নলিখিত অনুযায়ী আমরা Object Methods ব্যবহার করতে পারি:


objectName.methodName()


 

উদাহারণ 1


name = person.fullName();


 

যদি fullName প্র্রপার্টি, () ছাড়া ব্যবহার করা হয়, তবে এটা আমাদের ফাংশন ডেফিনেশন এ ফেরত নিয়ে যাবে:
উদাহারণ 2


name = person.fullName;


 

আপনি কি জাভাস্ক্রিপ্ট এ Strings, Numbers, and Booleans কে Objects হিসেবে নির্ধারণ করেন

জাভাস্ক্রিপ্ট এ Strings, Numbers, and Booleans কে Objects হিসাবে কখনো ডিক্লেয়ার করবেননা!
যখন জাভাস্ক্রিপ্ট এ কোন ভেরিয়েবলকে “new”, কিওয়ার্ড দ্বারা ডিক্লেয়ার করা হয় তখন সে ভেরিয়েবলটি একটা অবজেক্ট তৈরী করে :


var x = new String();        // Declares x as a String object
var y = new Number();        // Declares y as a Number object
var z = new Boolean();       // Declares z as a Boolean object

String, Number, and Boolean অবজেক্টস পরিহার করুন। এগুলো আপনার কোডকে জটিল করবে এবং কাজের গতিকে ধীর করে দিবে।

আমাদের সাথে থাকুন, পরবর্তীতে অবজেক্টের উপর আরো টিউটোরিয়াল পাবেন।

জাভাস্ক্রিপ্ট ইভেন্ট (JavaScript Events)

শরিফুল ইসলাম
Job category-Php Coder

এইচটিএমএল ইভেন্ট হল এমন কিছু জিনিস যা এইচটিএমএল এর উপাদানের মধ্যে ঘটে থাকে। যখন javascript এইচটিএমএল পেজ এর মধ্যে ব্যবহার হয় ,তখন javascript ওই ইভেন্ট গুলোর উপর প্রতিক্রিয়া করে।

এইচটিএমএল ইভেন্ট

একটি এইচটিএমএল ইভেন্ট তাই করে যা ব্রাউজার করে অথবা কোন ইউজার কিছু করে।

এখানে কিছু এইচটিএমএল ইভেন্ট দেয়া হল

  • এইচটিএমএল ওয়েবপেজ লোড হওয়া শেষ হয়েছে
  • ইনপুট ফিল্ড পরিবর্তন হয়েছে
  • এইচটিএমএল বাটন এ ক্লিক করা হয়েছে।

আপনি যখন কিছু করতে চান তখন কোন ইভেন্ট ঘটতে পারে।

ইভেন্ট চিহ্নিত হওয়ার পর javascript আপনার কোড কার্যে পরিণত করে।

এইচটিএমএল জাভাস্ক্রিপ্ট কোড এর সাথে ইভেন্ট handler attribute ব্যবহারের অনুমতি দেয় এবং এইচটিএমএল এলিমেন্ট এর সাথে যুক্ত করতে হয়।

একক উদ্ধৃতি চিহ্ন দিয়ে:


<some-HTML-element some-event=’some JavaScript’>


 

ডবল উদ্ধৃতি চিহ্ন দিয়ে:


<some-HTML-element some-event=”some JavaScript”>


 

এই উদাহরনে কোড এর মাধ্যমে বাটন এলিমেন্ট এর মধ্যে একটি onclick attribute ব্যবহার করা হয়েছে।
যেমন


<button onclick=”getElementById(‘demo’).innerHTML=Date()”>The time is?</button>


উপরের উদাহরণ এ javascript কোড এর একটি উপাদান এবং সেই সাথে id=”demo” এ পরিবর্তন করবে।

 

পরবর্তী উদাহরনে innerhtml ব্যবহার করে javascript কোড নিজের উপাদানের কোন কনটেন্ট কে পরিবর্তন করবে।
যেমন


<button onclick=”this.innerHTML=Date()”>The time is?</button>


 

অনেকসময় javascript কোড কয়েক লাইনের হয়ে থাকে। ইভেন্ট অ্যাট্রিবউট ফাংশন কল করার ক্ষেত্রে এটি খুবই সাধারন।
যেমন :


<p>Click the button to display the date.</p>

<button onclick="displayDate()">The time is?</button>

<script>
function displayDate() {
    document.getElementById("demo").innerHTML = Date();
}
</script>

<p id="demo"></p>

অধিক ব্যবহৃত এইচটিএমএল ইভেন্ট

ইভেন্ট

বিবরণ

Onchange এইচটিএমএল উপাদান পরিবর্তন হয়।
Onclick ব্যবহারকারী এইচটিএমএল উপাদান এর উপর ক্লিক করতে পারে।
Onmouseover ব্যবহারকারী এইচটিএমএল উপাদান এর উপর মাউস মুভ করলে ইভেন্ট কার্যকর হয়।
Onmouseout ব্যবহারকারী এইচটিএমএল এর কোন উপাদান এর উপর থেকে মাউস সরালে ইভেন্ট কার্যকর হয়।
Onkeydown ব্যবহারকারী কিবোর্ড এর কোন বাটন প্রেস করলে ইভেন্ট কার্যকর হয়।
Onload ব্রাউজার পেজ লোড হওয়া বন্ধ করে।

জাভাস্ক্রিপ্ট নাম্বার মেথড (JavaScript Number Methods)

জাভাস্ক্রিপ্ট সংখ্যা পদ্ধতি

নয়ন চন্দ্র দত্ত

 

সংখ্যা পদ্ধতি আপনাকে সংখ্যা নিয়ে কাজ করতে সাহায্য করবে।

গ্লোবাল পদ্ধতি

জাভাস্ক্রিপ্ট গ্লোবাল ফাংশন সমস্ত জাভাস্ক্রিপ্ট ডেটা টাইপে ব্যবহার করা যেতে পারে। যখন সংখ্যা নিয়ে কাজ করবেন, এইগুলো সবচেয়ে প্রাসঙ্গিক পদ্ধতিঃ

পদ্ধতিঃ Number()

ব্যাখ্যাঃ তার বিচার থেকে রূপান্তরিত একটি নম্বর প্রদান করে।

পদ্ধতিঃ parseFloat()

ব্যাখ্যাঃ Parses যা এটি বিচার করে এবং একটি ফ্লোটিং পয়েন্ট সংখ্যা ফিরিয়ে দেয়।

পদ্ধতিঃ parseInt()

ব্যাখ্যাঃ Parses যা এটি বিচার করে এবং একটি পূর্ণসংখ্যা ফিরিয়ে দেয়।

 

সংখ্যা পদ্ধতি

জাভাস্ক্রিপ্ট সংখ্যা পদ্ধতি এমন পদ্ধতি যা সংখ্যার উপর ব্যবহার করা যেতে পারেঃ

পদ্ধতিঃ toString()

ব্যাখ্যাঃ স্ট্রিং হিসেবে একটি নম্বর ফিরিয়ে দেয়।

পদ্ধতিঃ toExponential()

ব্যাখ্যাঃ বৃত্তাকার এবং সূচক স্বরলিপি ব্যবহার করে লেখা একটি সংখ্যা সঙ্গে একটি স্ট্রিং ফিরিয়ে দেয়।

পদ্ধতিঃ toFixed()

ব্যাখ্যাঃ দশমিকে একটি নির্দিষ্ট নম্বর সঙ্গে বৃত্তাকার এবং লিখিত একটি সংখ্যা সঙ্গে একটি স্ট্রিং ফিরিয়ে দেয়।

পদ্ধতিঃ toPrecision()

ব্যাখ্যাঃ একটি নির্দিষ্ট দৈর্ঘ্য সঙ্গে লিখিত নম্বর দিয়ে একটি স্ট্রিং ফিরিয়ে দেয়।

পদ্ধতিঃ valueOf()

ব্যাখ্যাঃ নম্বর হিসাবে একটি সংখ্যা ফিরিয়ে দেয়।

[ সব সংখ্যা পদ্ধতি একটি নতুন ভেরিয়েবল এ ফিরে আসে। কিন্তু তারা মূল পরিবর্তনশীল পরিবর্তন করবেন না। ]

 

toString() পদ্ধতি

toString () স্ট্রিং হিসেবে একটি নম্বর ফিরিয়ে দেয়। সব সংখ্যা পদ্ধতিতে যেকোনো ধরনের সংখ্যা ব্যবহার করা যেতে পারে (লিটারেল, ভেরিয়েবল, বা এক্সপ্রেশন)।

উদাহরণ


<!DOCTYPE html>
<html>
<body>
<p>The toString() method converts a number to a string.</p>
<p id="demo"></p>
<script>
var x = 123;
document.getElementById("demo").innerHTML =
   x.toString() + "<br>" +
   (123).toString() + "<br>" +
   (100 + 23).toString();
</script>
</body>
</html>

 

toExponential() পদ্ধতি

toExponential () বৃত্তাকার এবং সূচক স্বরলিপি ব্যবহার করে লেখা সংখ্যার সঙ্গে একটি স্ট্রিং ফিরিয়ে দেয়। একটি প্যারামিটার দশমিক পয়েন্ট পিছনে অক্ষর সংখ্যা সংজ্ঞায়িত করেঃ উদাহরণ


<!DOCTYPE html>
<html>
<body>

<p>The toExponential() method returns a string, with the number rounded and written 
using exponential notation.</p>

<p>An optional parameter defines the number of digits behind the decimal point.</p>

<p id="demo"></p>

<script>
var x = 9.656;
document.getElementById("demo").innerHTML =
    x.toExponential() + "<br>" + 
    x.toExponential(2) + "<br>" + 
    x.toExponential(4) + "<br>" + 
    x.toExponential(6);
</script>

</body>
</html>

প্যারামিটারটি ঐচ্ছিক। যদি আপনি এটি উল্লেখ না করেন, জাভাস্ক্রিপ্ট নম্বর সুসম্পন্ন হবে না।

 

toFixed() পদ্ধতি

toFixed () দশমিক দিয়ে লেখা সংখ্যার সঙ্গে একটি স্ট্রিং ফিরিয়ে দেয়।

উদাহরণ


<!DOCTYPE html>
<html>
<body>
<p>The toFixed() method rounds a number to a given number of digits.</p>
<p>For working with money, toFixed(2) is perfect.</p>
<p id="demo"></p>
<script>
var x = 9.656;
document.getElementById("demo").innerHTML =
     x.toFixed(0) + "<br>" +
     x.toFixed(2) + "<br>" +
     x.toFixed(4) + "<br>" +
     x.toFixed(6);
</script>
</body>
</html>

[ toFixed(2) টাকা দিয়ে কাজ করার জন্য যতোপযুক্ত। ]

 

toPrecision() পদ্ধতি

toPrecision () একটি নির্দিষ্ট দৈর্ঘ্য সঙ্গে লিখিত নম্বর দিয়ে একটি স্ট্রিং ফিরিয়ে দেয়।

উদাহরণ


<!DOCTYPE html>
<html>
<body>
<p>The toPrecision() method returns a string, with a number written with a 
specified length:</p>
<p id="demo"></p>
<script>
var x = 9.656;
document.getElementById("demo").innerHTML = 
     x.toPrecision() + "<br>" +
     x.toPrecision(2) + "<br>" +
     x.toPrecision(4) + "<br>" +
     x.toPrecision(6); 
</script>
</body>
</html>

 

ভেরিয়েবলকে নাম্বার এ  রূপান্তর

ভেরিয়েবলকে নাম্বার এ রূপান্তর করার জন্য জাভাস্ক্রিপ্ট এ তিনটি ফাংশন রয়েছে।

  1. Number() পদ্ধতি
  2. parseInt() পদ্ধতি
  3. parseFloat() পদ্ধতি

এই পদ্ধতিগুলো সংখ্যা পদ্ধতি না হলেও এগুলো গ্লোবাল জাভাস্ক্রিপ্ট পদ্ধতি।

 

Number() পদ্ধতি

Number() জাভাস্ক্রিপ্ট ভেরিয়েবল নাম্বার এ রূপান্তর কর‍্তে ব্যবহার করা যেতে পারেঃ

উদাহরণ


x = true;
Number(x);       // returns 1
x = false; 
Number(x);       // returns 0
x = new Date();
Number(x);       // returns 1404568027739
x = "10"
Number(x);       // returns 10
x = "10 20"
Number(x);       // returns NaN

 

parseInt() পদ্ধতি

parseInt () একটি স্ট্রিং এবং একটি পূর্ণ সংখ্যা ফিরিয়ে দেয়। স্পেস এর অনুমতি আছে। শুধুমাত্র প্রথম সংখ্যা প্রদান করেঃ উদাহরণ


parseInt("10");        // returns 10
parseInt("10.33");     // returns 10
parseInt("10 20 30");  // returns 10
parseInt("10 years");  // returns 10
parseInt("years 10");  // returns NaN


সংখ্যা রূপান্তরিত করা সম্ভব না হলে, NaN (না একটি নম্বর) ফিরিয়ে দেয়।

parseFloat() পদ্ধতি

parseFloat () একটি স্ট্রিং parses এবং একটি নম্বর parseInt () একটি স্ট্রিং parses এবং একটি সম্পূর্ণ নম্বর ফিরিয়ে দেয়। স্পেস এর অনুমতি আছে। শুধুমাত্র প্রথম সংখ্যা প্রদান করেঃ উদাহরণ


 parseFloat("10");        // returns 10
 parseFloat("10.33");    // returns 10.33
 parseFloat("10 20 30"); // returns 10
 parseFloat("10 years"); // returns 10
 parseFloat("years 10"); // returns NaN

সংখ্যা রূপান্তরিত করা সম্ভব না হলে, NaN (না একটি নম্বর) ফিরিয়ে দেয়।

 

valueOf() পদ্ধতি

valueOf () নম্বর হিসাবে একটি নম্বর প্রদান করে। উদাহরণ


 var x = 123;
 x.valueOf();          // returns 123 from variable x
 (123).valueOf();      // returns 123 from literal 123
 (100 + 23).valueOf(); // returns 123 from expression 100 + 23

জাভাস্ক্রিপ্ট এ, একটি সংখ্যা একটি আদি মান (typeof = number) হতে পারে বা একটি অবজেক্টও (typeof = object) হতে পারে।

[ জাভাস্ক্রিপ্ট এ, সব ডেটা টাইপ এর valueOf () এবং toString () পদ্ধতি আছে।]

 

জাভাস্ক্রিপ্ট ব্রেক এবং চলমান স্টেটমেন্ট (JavaScript Break and Continue)

মোঃ আব্দুল্লাহ

 

ব্রেক স্টেটমেন্ট সাধারনত একটি লুপ থেকে বেরিয়ে আসার জন্য ব্যবহৃত হয়।

কন্টিনিউ স্টেটমেন্ট লুপের একটি ইটারেশনকে অতিক্রম করে।

 

Break স্টেটমেন্ট

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

উদাহরণ


for (i = 0; i < 10; i++) {
    if (i === 3) { break }
    text += "The number is " + i + "<br>";
}

 

স্টেটমেন্টের যদি একটি লাইনের কোড থাকে, তবে ব্রেকেট উপেক্ষা করা যেতে পারে।


for (i = 0; i < 10; i++) {
    if (i === 3) break;
    text += "The number is " + i + "<Br>";
}


Continue স্টেটমেন্ট

যদি একটি নির্দিষ্ট যুক্তির উদ্ভব হয় এবং এটি পরবর্তী লুপের সাথে ইটারেশনকে চালিয়ে যায় continue স্টেটমেন্ট লুপের ইটারেশনকে ভেঙে দেয় ।
নিম্নের উদাহারণে 3 উপেক্ষা করে যাবেঃ

উদাহরণ


 

 for (i = 0; i < 10; i++) {
     if (i === 3) continue;
     text += "The number is " + i + "<Br>";
 }

 

JavaScript Labels

জাভা স্ক্রিপ্ট স্টেটমেন্টকে চিহ্নিত করার জন্য আগে স্টেটমেন্টটিকে একটি লেবেল নাম ও কোলোন দিয়ে চিহ্নিত করতে হবে।
সিনটেক্স:


label:
statements


ব্রেক এবং কনটিনিউ স্টেটমেন্ট হল একমাত্র জাভা স্ক্রিপ্ট স্টেটমেন্ট যা কোড ব্লক থেকে বের হয়ে আসতে পারে।

সিনটেক্স


break labelname;

continue labelname;


 

 

কনটিনিউ স্টেটমেন্ট ( লেবেল রেফারেন্স সহ বা ছাড়া ) কেবল মাত্র লুপের ভেতরে ব্যবহৃত হতে পারে।

ব্রেক স্টেটমেন্ট লেবেল রেফারেন্স ছাড়া লুপ বা সুইচের ভিতরে ব্যবহৃত হতে পারে।

এটি লেবেল রেফারেন্স সহ যেকোনো জাভা স্ক্রিপ্টের কোড ব্লক থেকে বের হয়ে আসার জন্য ব্যবহৃত হতে পারে।

উদাহরণ


var cars = ["BMW", "Volvo", "Saab", "Ford"];
list: {
      text += cars[0] + "<br>";
      text += cars[1] + "<br>";
      text += cars[2] + "<br>";
      text += cars[3] + "<br>";
      break list;
      text += cars[4] + "<br>";
      text += cars[5] + "<br>";
}



						
						
						
		

জাভাস্ক্রিপ্ট ডেটস (JavaScript Dates)

ডেট মেথডের সাহায্যে ডেট ভেলু পাওয়া যায় এবং তা বেবহার করা যায়, যেমন বছর, মাস, দিন, মিনিট, সেকেন্ড, মিলিসেকেন্ড।

Date Get মেথড

একটি ডেটের কোন একটি অংশকে পাওয়ার জন্য ডেট গেট মেথড বেবহার করা হয়:

মেথড বর্ণনা
getDate() ডেট নাম্বার পাওয়ার জন্য যেমন: ১-৩১
getDay() সপ্তাহ নাম্বার পাওয়ার জন্য
getFullYear() বছরের সবগুলো ডিজিট পাওয়ার জন্য যেমন: ২০১৫
getHours() ঘন্টা জানার জন্য
getMilliseconds() মিলিসেকেন্ড হিসেবের জন্য
getMinutes() মিনিট হিসেবের জন্য
getMonth() মাস হিসেবের জন্য
getSeconds() সেকেন্ড হিসেবের জন্য
getTime() ১৯৭০ থেকে এই পর্যন্ত সময়কে মিলিসেকেন্ডে হিসেবের জন্য

 

getTime() মেথড

১৯৭০ থেকে এই পর্যন্ত সময়কে মিলিসেকেন্ডে হিসেবের জন্য এই মেথড বেবহৃত হয়।

উদাহরণ:


<script>
var d = new Date();
document.getElementById("demo").innerHTML = d.getTime();
</script>

 

getFullYear() মেথড

বছরের সবগুলো ডিজিট পাওয়ার জন্য এই মেথড বেবহৃত হয়।

উদাহরণ:


<script>
var d = new Date();
document.getElementById("demo").innerHTML = d.getFullYear();
</script>

 

getDay() মেথড

সপ্তাহ নাম্বার পাওয়ার জন্য এই মেথড বেবহৃত হয়।

উদাহরণ:


<script>
var d = new Date();
document.getElementById("demo").innerHTML = d.getDay();
</script>

 

Array ব্যবহার করেও এই মেথডে দেখানো যায়:


<script>
var d = new Date();
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
document.getElementById("demo").innerHTML = days[d.getDay()];
</script>

 

ডেট ইনপুট-পার্সিং

ডেট ইনপুট এর মাধ্যমে কোনো ডেটের ভেলু নিয়ে তাকে Date.parse() মেথডের সাহায্যে মিলিসেকেন্ডে কনভার্ট করা যায়, Date.parse() মেথড কোনো একটি ভেলু/ডেট এবং ১৯৭০ থেকে সেই পর্যন্ত সময়কে মিলিসেকেন্ডে কনভার্ট করে।

উদাহরণ ১:


<script>
var msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;
</script>

 

উদাহরণ ২:


<script>
var msec = Date.parse("March 21, 2012");
var d = new Date(msec);
document.getElementById("demo").innerHTML = d;
</script>

 

ডেট কম্পেয়ার

দুইটি ডেটের মধ্যে খুব সহজেই কম্পেয়ার করা যায়।

উদাহরণ:


var today, someday, text;
today = new Date();
someday = new Date();
someday.setFullYear(2100, 0, 14);

if (someday > today) {
    text = "Today is before January 14, 2100.";
} else {
    text = "Today is after January 14, 2100.";
}
document.getElementById("demo").innerHTML = text;

 

হিন্টস: জাভাস্ক্রিপ্টে মাস গনণা শূন্য থেকে শুরু হয়, জানুয়ারী ০ ডিসেম্বর ১১

 

জাভাস্ক্রিপ্ট স্ট্রিক্ট (JavaScript Use Strict)

জাভাস্ক্রিপ্ট স্ট্রিক্ট (JavaScript Use Strict)

মোহাম্মাদ আমিরুল ইসলাম (আরিফ)

ওয়েব ডিজাইনার অ্যান্ড ডেভেলপার

 

জাভাস্ক্রিপ্ট স্ট্রিক্ট (JavaScript Use Strict)

Use Strict “ইউজ স্ট্রিক্ট” হল এমন একটি জাভাস্ক্রিপ্ট কোড যা Strict mode “স্ট্রিক্ট মোডে” চালু হয়।

 

ইউজ স্ট্রিক্ট নির্দেশিকা (The “use strict” Directive)

ইউজ স্ট্রিক্ট নির্দেশিকা (The “use strict” Directive) জাভাস্ক্রিপ্ট 1.8.5 (ECMAScript version 5) এ নতুন ।

এটা কোন স্টেটমেন্ট নয় কিন্তু এটি একটি আক্ষরিক অভিব্যক্তি। এটি জাভাস্ক্রিপ্টটের নতুন ভার্সন । পুরাতন ভার্সন এ এটি ব্যাবহার করা যায় না।

Use Strict (ইউজ স্ট্রিক্ট) ব্যাবহার করার উদ্দেশ্য একটি নির্দিষ্ট কোড যা Strict mode (স্ট্রিক্ট মোড) এ চালু হবে ।

 

Strict mode “স্ট্রিক্ট মোডে” সাপোর্ট করে ব্রাউজারেরে এই ভার্সন গুলোতে

  • Internet Explorer from version 10
  • Firefox from version 4
  • Chrome from version 13
  • Safari from version 5.1
  • Opera from version 12

 

 

স্ট্রিক্ট মোডে ঘোষণা (Declaring Strict Mode):

Strict mode “স্ট্রিক্ট মোডে” ঘোষণা করা হয় Use Strict (ইউজ স্ট্রিক্ট) এর মাধ্যমে । এটি জাভাস্ক্রিপ্ট ফাইলের শুরুতে অথবা জাভাস্ক্রিপ্ট ফাংশন এর ভিতর ব্যাবহার করা হয়ে থাকে।

জাভাস্ক্রিপ্টের শুরুতে ঘোষণা করা হলো এর গ্লোবাল ব্যপ্তি থাকবে। (সকল কোড স্ট্রিক্ট মোড এ কার্যকর হবে)

ফাংশনের ভিতরে ঘোষণা করা হলো এর লোকাল ব্যপ্তি থাকবে। (শুধুমাত্র ফাংশনের ভিতরের কোডগুলো স্ট্রিক্ট মোড এ কার্যকর হবে)

জাভাস্ক্রিপ্ট ফাইলের শুরুতেঃ


<!DOCTYPE html>
<html>
<body>
<p>Global "use strict" declaration.</p>
<p>Activate debugging in your browser to see the error report.</p>
<script>
"use strict";
y= 3.14;       // This will cause an error.
myFunction();  // This will also cause an error.
function myFunction() {
      x = 3.14;
}
</script>
</body>
</html>

 

 

জাভাস্ক্রিপ্ট ফাংশন এর ভিতরঃ


 

<!DOCTYPE html>
<html>
<body>
<p>Local "use strict" declaration.</p>
<p>Activate debugging in your browser to see the error report.</p>
<script>
y= 3.14;        // This will not cause an error.
myFunction();   // This will cause an error.
function myFunction() {
     "use strict";
     x = 3.14;
}
</script>
</body>
</html>


“ইউজ স্ট্রিক্ট” সিনট্যাক্স (The “use strict”; Syntax)

সিনট্যাক্স যেন জাভাস্ক্রিপ্টটের পুরোনো সংস্করণের সাথে সামঞ্জস্যপূর্ণ হয় সেভাবে সাজান হয়েছে।

কম্পাইল করার ক্ষেত্রে একটি সাংখ্যিক আক্ষরিক (4 + + 5) অথবা একটি আক্ষরিক স্ট্রিং (“jamal kamal”;) ব্যবহারে জাভাস্ক্রিপ্ট প্রোগ্রামে কোন পার্শ্ব প্রতিক্রিয়া নেই।এটি সাধারণত কম্পাইল হয় অবিদ্যমান ভেরিয়াবল এবং ডায়েস এর সাথে।

সুতরাং, “ইউজ স্ট্রিক্ট” শুধুমাত্র নতুন কম্পাইলার (সংগ্রহক) এ কাজ করে, যে কম্পইলাম এর মানে বুঝতে পারে ।

 

স্ট্রিক্ট মোড (Strict mode) কেন?

Strict mode “নিরাপদ” জাভাস্ক্রিপ্ট লিখতে সাহায্য করে ।

Strict mode পূর্ববর্তী  “bad syntax” পরিবর্তন করে  “real errors” গ্রহণ করে।

উদাহরণ হিসাবে, স্বাভাবিক জাভাস্ক্রিপ্ট, একটি মিসটাইপিং ভেরিয়াবল একটি গ্লোবাল ভেরিয়াবল সৃষ্টি করে।

Strict mode এর ক্ষেত্রে এগুলোকে “erorr” দেখাবে, এবং এখানে অসাবধানতাবশতঃ গ্লোবাল ভেরিয়াবল তৈরি হওয়া অসম্ভব।

সাধারন জাভাস্ক্রিপ্টটে একজন ডেভেলপার অ লিখনযোগ্য বৈশিষ্ট্য মান নির্ধারণের ক্ষেত্রে কোন ত্রুটি পাবেন না।

Strict mode যেকোন assignment to a non-writable property, a getter-only property, a non-existing property, a non-existing variable, or a non-existing object গুলোকে এরর “erorr” দেখাবে।

 

(Strict mode) স্ট্রিক্ট মোডে যা যা অনুমোদিত নয়

ঘোষণা না করে ভেরিয়েবল (প্রোপার্টি বা অবজেক্ট) ব্যবহার করা অনুমোদিত নয়।


"use strict";
x = 3.14;            // This will cause an error (if x has not been declared)

 

ভেরিয়াবল, ফাংশন অথবা এগ্রিমেন্ট মুছে ফেলা অনুমোদিত নয়।

 


"use strict";
x = 3.14;
delete x;                // This will cause an error

 

একাধিক বার প্রোপার্টি নির্ধারণ করা অনুমোদিত নয়।


"use strict";
var x = {p1:10, p1:20}; // This will cause an error


প্যারামিটার এর নাম নকল করা অনুমোদিত নয়।


"use strict";
function x(p1, p1) {};           // This will cause an error

 

অষ্টক গণনাপদ্ধতি এবং অব্যাহতি অক্ষর ব্যাবহার করা অনুমোদিত নয়।

 


"use strict";
var x = 010;           // This will cause an error
var y = \010;          // This will cause an error

 

রীড অনলি প্রপার্টি “read-only property” লেখা অনুমোদিত নয়।


"use strict";
var obj = {};
obj.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;               // This will cause an error

 

 

গেট অনলি প্রপার্টি “get-only property” লেখা অনুমোদিত নয়।


"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;           // This will cause an error

 

আন ডিলিটএবল প্রপার্টি ডিলিট করা অনুমোদিত নয়।


"use strict";
delete Object.prototype;      // This will cause an error

স্ট্রিং “eval” ভেরিয়াবল হিসাবে ব্যাবহার করা যাবে না।


"use strict";
var eval = 3.14;             // This will cause an error

 

স্ট্রিং “arguments” ভেরিয়াবল হিসাবে ব্যাবহার করা যাবে না।


"use strict";
var arguments = 3.14;       // This will cause an error

“with statement” অনুমোদিত নয়।


"use strict";
with (Math){x = cos(2)};        // This will cause an error

 

ভবিষ্যতের জন্য সংরক্ষিত কীওয়ার্ড “keywords” গুলোঅনুমোদিত নয়।  সেগুলো হল :

  • implements
  • interface
  • package
  • private
  • protected
  • public
  • static
  • yield