টাইপস্ক্রিপ্ট পুনরাবৃত্তি বিবৃতি

টাইপস্ক্রিপ্ট পুনরাবৃত্তি বিবৃতি

এই প্রবন্ধটি টাইপস্ক্রিপ্টে পুনরাবৃত্তি বিবৃতিগুলি ব্যাখ্যা করে।

YouTube Video

TypeScript-এ for বিবৃতি

TypeScript-এ for বিবৃতি পুনরাবৃত্ত অপারেশন সম্পাদনের জন্য একটি মৌলিক লুপ কাঠামো। for লুপে, নির্দিষ্ট সংখ্যক বার বা শর্তের উপর ভিত্তি করে একই কোড ব্লক বারবার কার্যকর করা যেতে পারে।

মূল সিনট্যাক্স

1for (initialization; condition; update) {
2    // Code to execute repeatedly while the condition is true
3}
  • **Rile-র অবস্থা: এই অংশ একবার আরম্ভের পূর্বে সঞ্চালিত হবে। স্পিন-বারের মত পরিবর্তন করুন।
  • Confers (IOP) লুপটি চিহ্নিত করে কিনা তা নির্ধারণ করে। মান true (সত্য) হলে, false (সত্য নয়) হলে প্রস্থান করা হবে।
  • **শূণ্য হালনাগাদ করুন (কনফিগারড): প্রতিটি লুপের শেষে ট্র্যাক বিভাজন ও আপডেট করুন।

উদাহরণ ১: সাধারণ for লুপ

নীচের উদাহরণে, এটি ক্রমনুসারে 0 থেকে 4 পর্যন্ত সংখ্যা প্রদর্শন করে।

1for (let i = 0; i < 5; i++) {
2    console.log("The value of i is: " + i);
3}
4// Outputs:
5// The value of i is: 0
6// The value of i is: 1
7// The value of i is: 2
8// The value of i is: 3
9// The value of i is: 4

উদাহরণ ২: অ্যারের সাথে for লুপ

তুমি একটি অ্যারের উপাদানগুলো ক্রমানুসারে প্রসেস করতে for লুপ ব্যবহার করতে পারো।

1let fruits: string[] = ["apple", "banana", "cherry"];
2
3for (let i = 0; i < fruits.length; i++) {
4    console.log("Fruit: " + fruits[i]);
5}
6// Outputs:
7// Fruit: apple
8// Fruit: banana
9// Fruit: cherry

উদাহরণ ৩: for-in লুপ

for-in লুপ একটি অবজেক্টের বৈশিষ্ট্য বা একটি অ্যারের সূচকের উপর ক্রমনুযায়ী পুনরাবৃত্তি করতে ব্যবহৃত হয়।

1let car = { brand: "Toyota", model: "Corolla", year: 2020 };
2
3for (let key in car) {
4    console.log(key + ": " + car[key]);
5}
6// Outputs:
7// brand: Toyota
8// model: Corolla
9// year: 2020

উদাহরণ ৪: for-of লুপ

for-of লুপ ব্যবহার করে অ্যারে বা স্ট্রিংয়ের মতো ক্রমানুযায়ী ইটারেবল অবজেক্ট থেকে প্রতিটি উপাদানের মান অর্জন করা হয়।

1let colors: string[] = ["red", "green", "blue"];
2
3for (let color of colors) {
4    console.log("Color: " + color);
5}
6// Outputs:
7// Color: red
8// Color: green
9// Color: blue

উদাহরণ ৫: Nested for লুপ

আরেকটি for লুপের মধ্যে একটি for লুপ ব্যবহার করাও সম্ভব, যা নেস্টেড লুপ নামে পরিচিত। এটি বিভিন্ন কাজের মধ্যে ডাবল লুপ তৈরির অনুমতি দেয়।

 1for (let i = 0; i < 3; i++) {
 2    console.log("Outer loop i: " + i);
 3    for (let j = 0; j < 2; j++) {
 4        console.log("  Inner loop j: " + j);
 5    }
 6}
 7// Outputs:
 8// Outer loop i: 0
 9//   Inner loop j: 0
10//   Inner loop j: 1
11// Outer loop i: 1
12//   Inner loop j: 0
13//   Inner loop j: 1
14// Outer loop i: 2
15//   Inner loop j: 0
16//   Inner loop j: 1

সারসংক্ষেপ

  • for স্টেটমেন্ট নির্দিষ্ট গণনা বা শর্তের ভিত্তিতে পুনরাবৃত্তি প্রক্রিয়া সম্পন্ন করে।
  • for-in একটি অবজেক্টের বৈশিষ্ট্য বা একটি অ্যারের সূচক পুনরুদ্ধারের জন্য ব্যবহৃত হয়।
  • for-of অ্যারের মতো ইটারেবল অবজেক্ট থেকে উপাদানগুলোর মান পুনরুদ্ধার করে।
  • Nested for লুপ ব্যবহার করে জটিল পুনরাবৃত্তি প্রক্রিয়াও সম্ভব।

TypeScript-এ for বিবৃতি শক্তিশালী এবং নমনীয় পুনরাবৃত্ত প্রক্রিয়া প্রদান করে, যা অন্যান্য লুপগুলোর মতোই।

TypeScript-এ While বিবৃতি

টাইপস্ক্রিপ্টে, একটি while বিবৃতি একটি লুপ গঠন যা নির্দিষ্ট শর্ত true থাকা পর্যন্ত পুনরাবৃত্তিমূলক প্রক্রিয়া সম্পাদন করে। for লুপের মতো, while লুপ এমন ক্ষেত্রে উপযুক্ত যেখানে পুনরাবৃত্তির সংখ্যা পূর্ব নির্ধারিত নয়, অথবা যখন আপনি শর্তের ভিত্তিতে পুনরাবৃত্তি নিয়ন্ত্রণ করতে চান।

মূল সিনট্যাক্স

1while (condition) {
2    // Code to execute repeatedly while the condition is true
3}
  • শর্ত: যে শর্তে লুপ কার্যকর হয়। এই শর্তটি true থাকা পর্যন্ত লুপ চলতে থাকে এবং এটি false হলে থেমে যায়।

উদাহরণ ১: সাধারণ while লুপ।

নিচের উদাহরণে, এটি i এর মান ৫-এর কম থাকা পর্যন্ত ফলাফল প্রদর্শন করে।

 1let i: number = 0;
 2
 3while (i < 5) {
 4    console.log("The value of i is: " + i);
 5    i++;
 6}
 7// Outputs:
 8// The value of i is: 0
 9// The value of i is: 1
10// The value of i is: 2
11// The value of i is: 3
12// The value of i is: 4

এই উদাহরণে, লুপটি তখন শেষ হয় যখন i ৫ বা তার চেয়ে বড় হয়ে যায়, কারণ শর্তটি false হয়ে যায়।

উদাহরণ ২: অপরিসীম লুপ উদাহরণ।

যদি while লুপের শর্তটি সর্বদা true হয়, তবে এটি একটি অপরিসীম লুপে পরিণত হতে পারে। এটি সাধারণত প্রোগ্রামটিকে ইচ্ছামতো বন্ধ হতে ব্যর্থ করে, তাই সতর্কতা প্রয়োজন।

 1let x: number = 0;
 2
 3while (true) {
 4    console.log("The value of x is: " + x);
 5    x++;
 6    if (x >= 5) {
 7        break; // Exit the loop when the condition is met
 8    }
 9}
10// Outputs:
11// The value of x is: 0
12// The value of x is: 1
13// The value of x is: 2
14// The value of x is: 3
15// The value of x is: 4

আপনি break বিবৃতি ব্যবহার করতে পারেন একটি শর্ত পূরণ হলে জোরপূর্বক লুপ থেকে বেরিয়ে আসার জন্য।

উদাহরণ ৩: do-while লুপ।

do-while লুপ একটি গঠন যেখানে লুপ প্রক্রিয়াটি অন্তত একবার সম্পন্ন হয়। প্রক্রিয়ার পরে শর্তটি নির্ণয় করা হয় বলে, শর্তটি false হলেও প্রক্রিয়াটি অন্তত একবার চলে।

1let j: number = 5;
2
3do {
4    console.log("The value of j is: " + j);
5    j++;
6} while (j < 5);
7// Outputs: The value of j is: 5

এই উদাহরণে, শুরুতেই j এর মান 5, এবং j < 5 প্রকৃতপক্ষে false, তবে do-while লুপে শর্ত নির্বিশেষে এটি অন্তত একবার সম্পন্ন হয়।

সারসংক্ষেপ

  • একটি while লুপ শর্ত true থাকা পর্যন্ত প্রক্রিয়াটি পুনরায় সম্পন্ন করে।
  • যদি লুপ শেষ করার শর্ত অস্পষ্ট হয়, তবে আপনাকে অপরিসীম লুপ সম্পর্কে সতর্ক হতে হবে।
  • do-while লুপ সাধারণ while লুপ থেকে আলাদা কারণ এটি অন্তত একবার প্রক্রিয়াটি সম্পন্ন করে।

টাইপস্ক্রিপ্টে while বিবৃতি অনিশ্চিত পুনরাবৃত্তি সংখ্যা বা যখন গতিশীল শর্ত যাচাই প্রয়োজন হয় তখন লুপ প্রক্রিয়ার জন্য সহায়ক।

break এবং continue

আপনি লুপের মধ্যে break এবং continue ব্যবহার করতে পারেন।

  • break একটি লুপকে পূর্বে বন্ধ করতে ব্যবহৃত হয়।
  • continue বর্তমান পুনরাবৃত্তি এড়িয়ে পরবর্তী পুনরাবৃত্তিতে যাওয়ার জন্য ব্যবহৃত হয়।

break এর উদাহরণ

 1for (let i = 0; i < 10; i++) {
 2    if (i === 5) {
 3        break;  // Exits the loop when i is 5
 4    }
 5    console.log(i);
 6}
 7// Outputs 0, 1, 2, 3, 4
 8
 9let i = 0;
10
11while (i < 10) {
12    if (i === 5) {
13        break;  // Ends the loop when i is 5
14    }
15    console.log(i++);
16}
17// Outputs 0, 1, 2, 3, 4

এই ক্ষেত্রে, i যখন 5 হয় তখন break কার্যকর হয়। ফলস্বরূপ, 0 থেকে 4 পর্যন্ত সংখ্যাগুলি প্রদর্শিত হয়।

continue এর উদাহরণ

 1for (let i = 0; i < 5; i++) {
 2    if (i === 2) {
 3        continue;  // Skips when i is 2
 4    }
 5    console.log(i);
 6}
 7// Outputs 0, 1, 3, 4
 8
 9let i = 0;
10
11while (i < 5) {
12    i++;
13    if (i === 3) {
14        continue;  // Skips when i is 3
15    }
16    console.log(i);
17}
18// Outputs 1, 2, 4, 5

এই ক্ষেত্রে, i যখন 2 হয়, তখন continue কার্যকর হয়। ফলস্বরূপ, 2 ব্যতীত সংখ্যাগুলি প্রদর্শিত হয়।

টাইপস্ক্রিপ্টে নেস্টেড লুপ

একটি নেস্টেড লুপ এমন একটি কাঠামো যেখানে একটি লুপের ভেতরে আরেকটি লুপ ব্যবহৃত হয়। টাইপস্ক্রিপ্টে, লুপ কাঠামোগুলি যেমন for, while, এবং do-while সমর্থিত। নেস্টেড লুপ ব্যবহার করে, আপনি দ্বিমাত্রিক অ্যারে (ম্যাট্রিক্স) প্রক্রিয়া করতে এবং একাধিক শর্তের উপর ভিত্তি করে প্রক্রিয়াকে সহজতর করতে পারেন।

মূল সিনট্যাক্স

নেস্টেড লুপের মৌলিক সিনট্যাক্স নিম্নরূপ।

1for (let i: number = 0; i < n; i++) {
2  for (let j: number = 0; j < m; j++) {
3    // Processing for the inner loop
4  }
5}

বাহ্যিক লুপের প্রতিটি কার্য সম্পাদনের জন্য, অভ্যন্তরীণ লুপ তার সমস্ত পুনরাবৃত্তি সম্পন্ন করে। এই কাঠামোটি একাধিক লুপ বা ডেটা কাঠামো পরিচালনার ক্ষেত্রে খুবই উপযোগী।

টাইপস্ক্রিপ্টে নেস্টেড লুপের উদাহরণ

একটি দ্বিমাত্রিক অ্যারে অতিক্রম করা

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

 1const matrix: number[][] = [
 2  [1, 2, 3],
 3  [4, 5, 6],
 4  [7, 8, 9]
 5];
 6
 7for (let row: number = 0; row < matrix.length; row++) {
 8  for (let col: number = 0; col < matrix[row].length; col++) {
 9    console.log(`matrix[${row}][${col}] = ${matrix[row][col]}`);
10  }
11}
12// Output
13// matrix[0][0] = 1
14// matrix[0][1] = 2
15// matrix[0][2] = 3
16// matrix[1][0] = 4
17// matrix[1][1] = 5
18// matrix[1][2] = 6
19// matrix[2][0] = 7
20// matrix[2][1] = 8
21// matrix[2][2] = 9

এই উদাহরণে, আমরা দ্বিমাত্রিক অ্যারে matrix অতিক্রম করছি। বাইরের লুপ সারি পরিচালনা করে, এবং ভেতরের লুপ কলাম পরিচালনা করে, প্রতিটি উপাদান ক্রমানুসারে প্রদর্শন করে।

দুটি অ্যারের সমন্বয়

এরপর, আমরা দুটি অ্যারের সবসম্ভাব্য সমন্বয় গণনা করার একটি উদাহরণ উপস্থাপন করব। উদাহরণস্বরূপ, আপনি দুটি অ্যারের প্রত্যেকটি থেকে একটি উপাদান নিতে পারেন এবং সবসম্ভাব্য যুগল ফলাফল হিসেবে দিতে পারেন।

 1const array1: string[] = ['A', 'B', 'C'];
 2const array2: number[] = [1, 2, 3];
 3
 4for (let i: number = 0; i < array1.length; i++) {
 5  for (let j: number = 0; j < array2.length; j++) {
 6    console.log(`Pair: (${array1[i]}, ${array2[j]})`);
 7  }
 8}
 9// Output
10// Pair: (A, 1)
11// Pair: (A, 2)
12// Pair: (A, 3)
13// Pair: (B, 1)
14// Pair: (B, 2)
15// Pair: (B, 3)
16// Pair: (C, 1)
17// Pair: (C, 2)
18// Pair: (C, 3)

এই উদাহরণে, স্ট্রিং অ্যারের array1 এবং সংখ্যা অ্যারের array2 এর মধ্যে সব যুগল তৈরি করা হয়েছে। বাইরের লুপ থেকে array1 এর উপাদানগুলি নির্ধারণ করে, এবং ভেতরের লুপ থেকে array2 এর উপাদান নির্ধারণ করে, প্রতিটি যুগল প্রদর্শন করে।

ত্রিপল লুপ দিয়ে স্থানাঙ্ক তৈরি করা

উদাহরণস্বরূপ, ত্রিপল নেস্টেড লুপ ব্যবহার করে আপনি একটি ত্রিমাত্রিক স্থানে স্থানাঙ্ক তৈরি করতে পারেন।

 1for (let x: number = 0; x < 3; x++) {
 2  for (let y: number = 0; y < 3; y++) {
 3    for (let z: number = 0; z < 3; z++) {
 4      console.log(`Coordinate: (${x}, ${y}, ${z})`);
 5    }
 6  }
 7}
 8// Output
 9// Coordinate: (0, 0, 0)
10// Coordinate: (0, 0, 1)
11// Coordinate: (0, 0, 2)
12// ...
13// Coordinate: (2, 2, 1)
14// Coordinate: (2, 2, 2)

এইভাবে, ত্রিপল নেস্টেড লুপ ব্যবহার করে আপনি সহজেই ত্রিমাত্রিক স্থানে স্থানাঙ্ক তৈরি করতে পারেন।

নেস্টেড লুপের কর্মক্ষমতা

নেস্টেড লুপ সুবিধাজনক, তবে লুপের গভীরতা বাড়ার সাথে সাথে গণনা খরচ দ্রুত বাড়ে। উদাহরণস্বরূপ, যদি বাইরের লুপে n পুনরাবৃত্তি এবং ভেতরের লুপে m পুনরাবৃত্তি হয়, তবে মোট পুনরাবৃত্তির সংখ্যা হবে n * m। যখন এটি আরও নেস্টেড হয়, তখন গণণা জটিলতা গাণিতিকভাবে বাড়ে, যা সম্ভবত প্রোগ্রামের কর্মক্ষমতাকে প্রভাবিত করতে পারে।

তিনটি অ্যারে অতিক্রম করার সময় নিচে গণনাজনিত জটিলতাগুলি প্রদর্শিত।

 1const array1: number[] = [1, 2, 3];
 2const array2: number[] = [4, 5, 6];
 3const array3: number[] = [7, 8, 9];
 4
 5for (let i: number = 0; i < array1.length; i++) {
 6  for (let j: number = 0; j < array2.length; j++) {
 7    for (let k: number = 0; k < array3.length; k++) {
 8      console.log(`Combination: (${array1[i]}, ${array2[j]}, ${array3[k]})`);
 9    }
10  }
11}

এই ক্ষেত্রে, আপনাকে array1.length * array2.length * array3.length গণনা করতে হবে, যা সব মিশ্রণ প্রক্রিয়াকরণের জন্য 3 * 3 * 3 = 27 পুনরাবৃত্তি দেয়।

নেস্টেড লুপের অপ্টিমাইজেশন

নেস্টেড লুপ ব্যবহারের সময়, আপনি নিম্নলিখিত অপ্টিমাইজেশনগুলি বিবেচনা করে কর্মক্ষমতা উন্নত করতে পারেন।

  1. শুরুর দিকে রিটার্ন প্রয়োগ করুন: প্রয়োজনহীন পুনরাবৃত্তি এড়ানোর জন্য লক্ষ্য অর্জিত হলে দ্রুত লুপ থেকে বেরিয়ে আসুন।
  2. লুপ ভেরিয়েবল ক্যাশ করুন: লুপে ব্যবহৃত ভেরিয়েবলগুলোর মান (বিশেষ করে দৈর্ঘ্য ও সীমা) পূর্বে ক্যাশ করে রাখুন, যাতে প্রতিবার গণনার খরচ কমে যায়।
  3. ডেটা কাঠামো পরিবর্তন করুন: অ্যারে এবং অবজেক্টগুলোর কাঠামো সংশোধন করা নির্দিষ্ট পুনরাবৃত্তিমূলক প্রক্রিয়াগুলোকে ত্বরান্বিত করতে কার্যকর হতে পারে।

উপসংহার

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

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

YouTube Video