প্রোগ্রামারদের জন্য কোটলিন বুটক্যাম্প 2: কোটলিন বেসিক

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

ভূমিকা

এই কোডল্যাবে, আপনি কোটলিন প্রোগ্রামিং ভাষার মূল বিষয়গুলি শিখতে পারেন: ডেটা টাইপ, অপারেটর, ভেরিয়েবল, কন্ট্রোল স্ট্রাকচার এবং বাতিলযোগ্য বনাম নন-নালেবল ভেরিয়েবল। এই কোর্সটি এমন প্রোগ্রামারদের জন্য তৈরি যারা অবজেক্ট-ভিত্তিক ভাষা জানেন এবং কোটলিন শিখতে চান।

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

আপনি ইতিমধ্যে কি জানা উচিত

  • কিভাবে IntelliJ IDEA এ একটি প্রকল্প তৈরি করবেন
  • IntelliJ IDEA ( টুলস > কোটলিন > কোটলিন REPL ) তে কোটলিনের আরইপিএল (রিড-ইভাল-প্রিন্ট লুপ) এ কীভাবে কোড খুলবেন এবং কার্যকর করবেন

আপনি কি শিখবেন

  • কোটলিন ডেটা প্রকার, অপারেটর এবং ভেরিয়েবলগুলি কীভাবে ব্যবহার করবেন
  • বুলিয়ান এবং শর্তগুলির সাথে কীভাবে কাজ করবেন
  • nullable এবং non-nullable ভেরিয়েবলের মধ্যে পার্থক্য
  • কোটলিনে কীভাবে অ্যারে, তালিকা এবং লুপ কাজ করে

আপনি কি করবেন

  • Kotlin এর মূল বিষয়গুলি শিখতে Kotlin REPL-এর সাথে কাজ করুন৷

এই কাজটিতে, আপনি কোটলিন প্রোগ্রামিং ভাষায় অপারেটর এবং প্রকারগুলি সম্পর্কে শিখবেন।

ধাপ 1: সংখ্যাসূচক অপারেটর অন্বেষণ করুন

  1. IntelliJ IDEA খুলুন, যদি এটি ইতিমধ্যে খোলা না থাকে।
  2. Kotlin REPL খুলতে, Tools > Kotlin > Kotlin REPL নির্বাচন করুন।

অন্যান্য ভাষার মতো, কোটলিন + , - , * এবং / এর জন্য প্লাস, বিয়োগ, সময় এবং বিভাজন ব্যবহার করে। Kotlin এছাড়াও বিভিন্ন ধরনের সংখ্যা সমর্থন করে, যেমন Int , Long , Double , এবং Float

  1. REPL-এ নিম্নলিখিত এক্সপ্রেশনগুলি লিখুন। ফলাফল দেখতে, প্রতিটির পরে Control+Enter ( একটি Mac-এ Command+Enter ) টিপুন।
1+1
⇒ res8: kotlin.Int = 2

53-3
⇒ res9: kotlin.Int = 50

50/10
⇒ res10: kotlin.Int = 5

1.0/2.0
⇒ res11: kotlin.Double = 0.5

2.0*3.5
⇒ res12: kotlin.Double = 7.0

লক্ষ্য করুন যে অপারেশনের ফলাফলগুলি অপারেন্ডের ধরন রাখে, তাই 1/2 = 0, কিন্তু 1.0/2.0 = 0.5।

  1. পূর্ণসংখ্যা এবং দশমিক সংখ্যার বিভিন্ন সমন্বয় সহ কিছু এক্সপ্রেশন চেষ্টা করুন।
6*50
⇒ res13: kotlin.Int = 300

6.0*50.0
⇒ res14: kotlin.Double = 300.0

6.0*50
⇒ res15: kotlin.Double = 300.0
  1. নম্বরে কিছু পদ্ধতিতে কল করুন। কোটলিন সংখ্যাগুলিকে আদিম হিসাবে রাখে, তবে এটি আপনাকে সংখ্যাগুলিতে পদ্ধতিগুলিকে কল করতে দেয় যেন সেগুলি বস্তু।
2.times(3)
⇒ res5: kotlin.Int = 6

3.5.plus(4)
⇒ res8: kotlin.Double = 7.5

2.4.div(2)
⇒ res9: kotlin.Double = 1.2

ধাপ 2: প্রকারগুলি ব্যবহার করে অনুশীলন করুন

কোটলিন পরোক্ষভাবে সংখ্যার ধরনগুলির মধ্যে রূপান্তর করে না, তাই আপনি সরাসরি একটি দীর্ঘ ভেরিয়েবলে একটি ছোট মান বা Int এ একটি Byte নির্ধারণ করতে পারবেন না। এর কারণ হল অন্তর্নিহিত সংখ্যা রূপান্তর প্রোগ্রামগুলির ত্রুটির একটি সাধারণ উত্স। আপনি সর্বদা কাস্ট করার মাধ্যমে বিভিন্ন ধরণের মান নির্ধারণ করতে পারেন।

  1. সম্ভাব্য কিছু কাস্ট দেখতে, REPL-এ Int টাইপের একটি পরিবর্তনশীল সংজ্ঞায়িত করুন।
val i: Int = 6
  1. একটি নতুন ভেরিয়েবল তৈরি করুন, তারপর উপরে দেখানো ভেরিয়েবলের নাম লিখুন, তারপরে .to
val b1 = i.to

IntelliJ IDEA সম্ভাব্য সমাপ্তির একটি তালিকা প্রদর্শন করে। এই স্বয়ংক্রিয়-সম্পূর্ণতা ভেরিয়েবল এবং যেকোনো ধরনের বস্তুর জন্য কাজ করে।

  1. তালিকা থেকে toByte() নির্বাচন করুন, তারপর ভেরিয়েবলটি প্রিন্ট করুন।
val b1 = i.toByte()
println(b1)
⇒ 6
  1. বিভিন্ন ধরনের ভেরিয়েবলের জন্য একটি Byte মান বরাদ্দ করুন।
val b2: Byte = 1 // OK, literals are checked statically
println(b2)
⇒ 1

val i1: Int = b2
⇒ error: type mismatch: inferred type is Byte but Int was expected

val i2: String = b2
⇒ error: type mismatch: inferred type is Byte but String was expected

val i3: Double = b2
⇒ error: type mismatch: inferred type is Byte but Double was expected
  1. যে অ্যাসাইনমেন্টগুলি ত্রুটি ফিরিয়ে দিয়েছে, তার পরিবর্তে সেগুলি কাস্ট করার চেষ্টা করুন৷
val i4: Int = b2.toInt() // OK!
println(i4)
⇒ 1

val i5: String = b2.toString()
println(i5)
⇒ 1

val i6: Double = b2.toDouble()
println(i6)
⇒ 1.0
  1. দীর্ঘ সাংখ্যিক ধ্রুবকগুলিকে আরও পঠনযোগ্য করে তুলতে, কোটলিন আপনাকে সংখ্যাগুলিতে আন্ডারস্কোর স্থাপন করার অনুমতি দেয়, যেখানে এটি আপনার কাছে বোধগম্য হয়। বিভিন্ন সাংখ্যিক ধ্রুবক প্রবেশ করার চেষ্টা করুন।
val oneMillion = 1_000_000
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

ধাপ 3: পরিবর্তনশীল প্রকারের মান জানুন

Kotlin দুই ধরনের ভেরিয়েবল সমর্থন করে: পরিবর্তনযোগ্য এবং অপরিবর্তনীয়। val দিয়ে, আপনি একবার একটি মান নির্ধারণ করতে পারেন। আপনি যদি আবার কিছু বরাদ্দ করার চেষ্টা করেন, আপনি একটি ত্রুটি পান। var দিয়ে, আপনি একটি মান নির্ধারণ করতে পারেন, তারপর প্রোগ্রামে পরে মান পরিবর্তন করতে পারেন।

  1. val এবং var ব্যবহার করে ভেরিয়েবল সংজ্ঞায়িত করুন এবং তারপর তাদের নতুন মান নির্ধারণ করুন।
var fish = 1
fish = 2
val aquarium = 1
aquarium = 2
⇒ error: val cannot be reassigned

আপনি fish একটি মান নির্ধারণ করতে পারেন, তারপরে এটি একটি নতুন মান নির্ধারণ করতে পারেন, কারণ এটি var দিয়ে সংজ্ঞায়িত করা হয়েছে। aquarium একটি নতুন মান নির্ধারণ করার চেষ্টা করা একটি ত্রুটি দেয় কারণ এটি val দিয়ে সংজ্ঞায়িত করা হয়েছে।

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

  1. কিছু ভেরিয়েবল সংজ্ঞায়িত করুন এবং টাইপটি স্পষ্টভাবে উল্লেখ করুন।
var fish: Int = 12
var lakes: Double = 2.5

একবার আপনার বা কম্পাইলার দ্বারা একটি টাইপ বরাদ্দ করা হলে, আপনি টাইপ পরিবর্তন করতে পারবেন না, বা আপনি একটি ত্রুটি পাবেন।

ধাপ 4: স্ট্রিং সম্পর্কে জানুন

কোটলিনের স্ট্রিংগুলি অনেকটা অন্য যেকোন প্রোগ্রামিং ভাষার স্ট্রিংয়ের মতো কাজ করে " স্ট্রিংগুলির জন্য এবং একক অক্ষরের জন্য ' ব্যবহার করে, এবং আপনি + অপারেটরের সাথে স্ট্রিংগুলিকে সংযুক্ত করতে পারেন৷ আপনি স্ট্রিং টেমপ্লেটগুলিকে মানগুলির সাথে একত্রিত করে তৈরি করতে পারেন; $ variable নামটি প্রতিস্থাপিত হয় টেক্সট মান প্রতিনিধিত্ব করে। একে ভেরিয়েবল ইন্টারপোলেশন বলে।

  1. একটি স্ট্রিং টেমপ্লেট তৈরি করুন।
val numberOfFish = 5
val numberOfPlants = 12
"I have $numberOfFish fish" + " and $numberOfPlants plants"
⇒ res20: kotlin.String = I have 5 fish and 12 plants
  1. এটিতে একটি অভিব্যক্তি সহ একটি স্ট্রিং টেমপ্লেট তৈরি করুন। অন্যান্য ভাষার মতো, মান একটি অভিব্যক্তির ফলাফল হতে পারে। অভিব্যক্তি সংজ্ঞায়িত করতে কোঁকড়া ধনুর্বন্ধনী {} ব্যবহার করুন।
"I have ${numberOfFish + numberOfPlants} fish and plants"
⇒ res21: kotlin.String = I have 17 fish and plants

এই টাস্কে, আপনি কোটলিন প্রোগ্রামিং ল্যাঙ্গুয়েজে বুলিয়ান এবং চেক কন্ডিশন সম্পর্কে শিখবেন। অন্যান্য ভাষার মতো, কোটলিনেরও বুলিয়ান এবং বুলিয়ান অপারেটর রয়েছে যেমন কম, সমান, এর চেয়ে বড় ইত্যাদি ( < , == , > , != , <= , >= )।

  1. একটি if / else বিবৃতি লিখুন।
val numberOfFish = 50
val numberOfPlants = 23
if (numberOfFish > numberOfPlants) {
    println("Good ratio!") 
} else {
    println("Unhealthy ratio")
}
⇒ Good ratio!
  1. একটি if বিবৃতিতে একটি পরিসীমা চেষ্টা করুন। কোটলিনে, আপনি যে শর্তটি পরীক্ষা করেন তাও রেঞ্জ ব্যবহার করতে পারে।
val fish = 50
if (fish in 1..100) {
    println(fish)
}
⇒ 50
  1. একাধিক ক্ষেত্রে একটি if লিখুন। আরও জটিল অবস্থার জন্য, লজিক্যাল এবং && এবং লজিক্যাল বা || ব্যবহার করুন . অন্যান্য ভাষার মতো, আপনি else if ব্যবহার করে একাধিক ক্ষেত্রে থাকতে পারেন।
if (numberOfFish == 0) {
    println("Empty tank")
} else if (numberOfFish < 40) {
    println("Got fish!")
} else {
    println("That's a lot of fish!")
}
⇒ That's a lot of fish!
  1. একটি when বিবৃতি চেষ্টা করুন. কোটলিনে if / else if / else স্টেটমেন্টের সিরিজ লেখার একটি সুন্দর উপায় আছে, when স্টেটমেন্ট ব্যবহার করে, যা অন্যান্য ভাষায় switch স্টেটমেন্টের মতো। when স্টেটমেন্টের শর্তগুলিও রেঞ্জ ব্যবহার করতে পারে।
when (numberOfFish) {
    0  -> println("Empty tank")
    in 1..39 -> println("Got fish!")
    else -> println("That's a lot of fish!")
}
⇒ That's a lot of fish!

এই টাস্কে, আপনি nullable বনাম নন-nullable ভেরিয়েবল সম্পর্কে শিখবেন। নাল জড়িত প্রোগ্রামিং ত্রুটি অগণিত বাগ উৎস হয়েছে. কোটলিন নন-নাললেবল ভেরিয়েবল প্রবর্তন করে বাগ কমাতে চায়।

ধাপ 1: শূন্যতা সম্পর্কে জানুন

ডিফল্টরূপে, ভেরিয়েবল null হতে পারে না।

  1. একটি Int ঘোষণা করুন এবং এটি null বরাদ্দ করুন.
var rocks: Int = null
⇒ error: null can not be a value of a non-null type Int
  1. প্রশ্ন চিহ্ন অপারেটর ব্যবহার করুন ? , টাইপের পরে বোঝাতে যে একটি পরিবর্তনশীল নাল হতে পারে। একটি Int? এবং এটি null বরাদ্দ করুন.
var marbles: Int? = null

যখন আপনার জটিল ডেটা প্রকার থাকে, যেমন একটি তালিকা:

  • আপনি তালিকার উপাদান শূন্য হতে অনুমতি দিতে পারেন.
  • আপনি তালিকাটিকে শূন্য করার অনুমতি দিতে পারেন, তবে যদি এটি নাল না হয় তবে এর উপাদানগুলি নাল হতে পারে না।
  • আপনি তালিকা বা উপাদান উভয়ই শূন্য করার অনুমতি দিতে পারেন।

তালিকা এবং কিছু অন্যান্য জটিল ডাটা টাইপ পরবর্তী টাস্কে কভার করা হয়েছে।

ধাপ 2: সম্পর্কে জানুন? এবং?: অপারেটর

আপনি সঙ্গে null জন্য পরীক্ষা করতে পারেন ? অপারেটর, আপনাকে অনেক if / else স্টেটমেন্ট লেখার যন্ত্রণা বাঁচায়।

  1. fishFoodTreats ভেরিয়েবলটি null নয় কিনা তা পরীক্ষা করার জন্য দীর্ঘতর উপায়ে কিছু কোড লিখুন। তারপর যে পরিবর্তনশীল হ্রাস.
var fishFoodTreats = 6
if (fishFoodTreats != null) {
    fishFoodTreats = fishFoodTreats.dec()
}
  1. এখন কোটলিনের লেখার পদ্ধতিটি দেখুন, ব্যবহার করে ? অপারেটর.
var fishFoodTreats = 6
fishFoodTreats = fishFoodTreats?.dec()
  1. আপনি ?: অপারেটরের সাথে নাল পরীক্ষা চেইন করতে পারেন। এই উদাহরণ দেখুন:
fishFoodTreats = fishFoodTreats?.dec() ?: 0

এটি "যদি fishFoodTreats null না হয়, তাহলে এটি হ্রাস করুন এবং এটি ব্যবহার করুন; অন্যথায় ?: এর পরে মানটি ব্যবহার করুন, যা 0।" যদি fishFoodTreats null হয়, মূল্যায়ন বন্ধ করা হয়, এবং dec() পদ্ধতি বলা হয় না।

নাল পয়েন্টার সম্পর্কে একটি বিন্দু

আপনি যদি সত্যিই NullPointerExceptions পছন্দ করেন, NullPointerExceptions আপনাকে সেগুলি রাখতে দেয়৷ নট-নাল অ্যাসারশন অপারেটর, !! (ডাবল-ব্যাং), যেকোনো মানকে নন-নাল টাইপে রূপান্তরিত করে এবং মানটি null হলে একটি ব্যতিক্রম নিক্ষেপ করে।

val len = s!!.length   // throws NullPointerException if s is null

এই কাজটিতে, আপনি অ্যারে এবং তালিকা সম্পর্কে শিখবেন এবং আপনি কোটলিন প্রোগ্রামিং ভাষায় লুপ তৈরি করার বিভিন্ন উপায় শিখবেন।

ধাপ 1: তালিকা তৈরি করুন

তালিকাগুলি কোটলিনের একটি মৌলিক প্রকার, এবং অন্যান্য ভাষার তালিকার মতোই।

  1. listOf ব্যবহার করে একটি তালিকা ঘোষণা করুন এবং এটি মুদ্রণ করুন। এই তালিকা পরিবর্তন করা যাবে না.
val school = listOf("mackerel", "trout", "halibut")
println(school)
⇒ [mackerel, trout, halibut]
  1. mutableListOf ব্যবহার করে পরিবর্তন করা যেতে পারে এমন একটি তালিকা ঘোষণা করুন। একটি আইটেম সরান.
val myList = mutableListOf("tuna", "salmon", "shark")
myList.remove("shark")
⇒ res36: kotlin.Boolean = true

remove() পদ্ধতিটি true ফিরে আসে যখন এটি সফলভাবে পাস করা আইটেমটি সরিয়ে দেয়।

ধাপ 2: অ্যারে তৈরি করুন

অন্যান্য ভাষার মতো, কোটলিনের অ্যারে রয়েছে। কোটলিনের তালিকার বিপরীতে, যার পরিবর্তনযোগ্য এবং অপরিবর্তনীয় সংস্করণ রয়েছে, একটি Array কোন পরিবর্তনযোগ্য সংস্করণ নেই। একবার আপনি একটি অ্যারে তৈরি করলে, আকারটি স্থির হয়। আপনি একটি নতুন অ্যারে অনুলিপি ছাড়া উপাদান যোগ বা অপসারণ করতে পারবেন না.

val এবং var ব্যবহার করার নিয়মগুলি তালিকার মতো অ্যারেগুলির সাথে একই।

  1. arrayOf ব্যবহার করে স্ট্রিংগুলির একটি অ্যারে ঘোষণা করুন। এটি প্রিন্ট করতে java.util.Arrays.toString() অ্যারে ইউটিলিটি ব্যবহার করুন।
val school = arrayOf("shark", "salmon", "minnow")
println(java.util.Arrays.toString(school))
⇒ [shark, salmon, minnow]
  1. arrayOf এর সাথে ঘোষিত একটি অ্যারের উপাদানগুলির সাথে সম্পর্কিত একটি প্রকার নেই, তাই আপনি প্রকারগুলি মিশ্রিত করতে পারেন, যা সহায়ক। বিভিন্ন ধরনের সঙ্গে একটি অ্যারে ঘোষণা.
val mix = arrayOf("fish", 2)
  1. আপনি সমস্ত উপাদানের জন্য এক প্রকারের সাথে অ্যারে ঘোষণা করতে পারেন। intArrayOf() ব্যবহার করে পূর্ণসংখ্যার একটি অ্যারে ঘোষণা করুন। অন্যান্য ধরণের অ্যারের জন্য সংশ্লিষ্ট নির্মাতা বা ইনস্ট্যান্টিয়েশন ফাংশন রয়েছে।
val numbers = intArrayOf(1,2,3)
  1. + অপারেটরের সাথে দুটি অ্যারে একত্রিত করুন।
val numbers = intArrayOf(1,2,3)
val numbers3 = intArrayOf(4,5,6)
val foo2 = numbers3 + numbers
println(foo2[5])
=> 3
  1. নেস্টেড অ্যারে এবং তালিকার বিভিন্ন সমন্বয় চেষ্টা করুন। অন্যান্য ভাষার মতো, আপনি অ্যারে এবং তালিকা নেস্ট করতে পারেন। অর্থাৎ, আপনি যখন একটি অ্যারের মধ্যে একটি অ্যারে রাখেন, তখন আপনার কাছে অ্যারের একটি অ্যারে থাকে-দুটির বিষয়বস্তুর একটি সমতল অ্যারে নয়। একটি অ্যারের উপাদানগুলিও তালিকা হতে পারে এবং তালিকার উপাদানগুলি অ্যারে হতে পারে।
val numbers = intArrayOf(1, 2, 3)
val oceans = listOf("Atlantic", "Pacific")
val oddList = listOf(numbers, oceans, "salmon")
println(oddList)
⇒ [[I@89178b4, [Atlantic, Pacific], salmon]

প্রথম উপাদান, numbers , একটি Array । আপনি যখন অ্যারে ইউটিলিটিটি এটি প্রিন্ট করতে ব্যবহার করেন না, তখন কোটলিন অ্যারের বিষয়বস্তুর পরিবর্তে ঠিকানাটি মুদ্রণ করে।

  1. কোটলিনের একটি চমৎকার বৈশিষ্ট্য হল যে আপনি অ্যারেগুলিকে 0-তে শুরু করার পরিবর্তে কোড দিয়ে শুরু করতে পারেন। এই উদাহরণটি চেষ্টা করুন:
val array = Array (5) { it * 2 }
println(java.util.Arrays.toString(array))
⇒ [0, 2, 4, 6, 8]

ইনিশিয়ালাইজেশন কোডটি কোঁকড়া ধনুর্বন্ধনীর মধ্যে রয়েছে, {} । কোডে, it 0 দিয়ে শুরু হওয়া অ্যারে সূচককে বোঝায়।

ধাপ 3: লুপ তৈরি করুন

এখন আপনার কাছে তালিকা এবং অ্যারে আছে, উপাদানগুলির মাধ্যমে লুপ করা আপনার প্রত্যাশা অনুযায়ী কাজ করে।

  1. একটি অ্যারে তৈরি করুন। অ্যারের মাধ্যমে পুনরাবৃত্তি করতে এবং উপাদানগুলি মুদ্রণের for একটি লুপ ব্যবহার করুন।
val school = arrayOf("shark", "salmon", "minnow")
for (element in school) {
    print(element + " ")
}
⇒ shark salmon minnow
  1. কোটলিনে, আপনি একই সময়ে উপাদান এবং সূচকগুলি লুপ করতে পারেন। এই উদাহরণ চেষ্টা করুন:
for ((index, element) in school.withIndex()) {
    println("Item at $index is $element\n")
}
⇒ Item at 0 is shark
Item at 1 is salmon
Item at 2 is minnow
  1. বিভিন্ন ধাপের আকার এবং ব্যাপ্তি চেষ্টা করুন। আপনি বর্ণানুক্রমিকভাবে সংখ্যা বা অক্ষরের পরিসীমা নির্দিষ্ট করতে পারেন। এবং অন্যান্য ভাষার মতো, আপনাকে 1 এগিয়ে যেতে হবে না। আপনি downTo ব্যবহার করে পিছনে যেতে পারেন।
for (i in 1..5) print(i)
⇒ 12345

for (i in 5 downTo 1) print(i)
⇒ 54321

for (i in 3..6 step 2) print(i)
⇒ 35

for (i in 'd'..'g') print (i)
⇒ defg
  1. কিছু লুপ চেষ্টা করুন. অন্যান্য ভাষার মতো, Kotlin-এর আছে while loops, do...while loops, এবং ++ এবং -- অপারেটর। কোটলিনেরও repeat লুপ রয়েছে।
var bubbles = 0
while (bubbles < 50) {
    bubbles++
}
println("$bubbles bubbles in the water\n")

do {
    bubbles--
} while (bubbles > 50)
println("$bubbles bubbles in the water\n")

repeat(2) {
     println("A fish is swimming")
}
⇒ 50 bubbles in the water
49 bubbles in the water
A fish is swimmingA fish is swimming

অপারেটর, তালিকা এবং লুপের মতো মৌলিক বিষয়গুলির ক্ষেত্রে কোটলিন অন্যান্য ভাষার সাথে খুব মিল, তবে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।

নিম্নলিখিত বৈশিষ্ট্যগুলি আপনি অন্যান্য ভাষায় যা ব্যবহার করেন তার থেকে কোটলিনে ভিন্ন হতে পারে:

  • কোটলিনের ধরনগুলি নিহিতভাবে রূপান্তরিত করা যাবে না—কাস্টিং ব্যবহার করুন।
  • val দিয়ে ঘোষিত ভেরিয়েবল শুধুমাত্র একবার বরাদ্দ করা যেতে পারে।
  • Kotlin ভেরিয়েবল ডিফল্টরূপে বাতিলযোগ্য নয়। ব্যবহার ? ভেরিয়েবল শূন্য করতে।
  • কোটলিনের সাহায্যে, আপনি একটি for লুপে একই সময়ে একটি অ্যারের সূচক এবং উপাদানগুলির মাধ্যমে লুপ করতে পারেন।

নিম্নলিখিত কোটলিন প্রোগ্রামিং নির্মাণ অন্যান্য ভাষার অনুরূপ:

  • অ্যারে এবং তালিকার একক প্রকার বা মিশ্র প্রকার থাকতে পারে।
  • অ্যারে এবং তালিকা নেস্ট করা যেতে পারে।
  • আপনি for , while , do / while , এবং repeat করে লুপ তৈরি করতে পারেন।
  • when বিবৃতিটি switch স্টেটমেন্টের কোটলিনের সংস্করণ, তবে when আরও নমনীয়।

কোটলিন ডকুমেন্টেশন

আপনি যদি এই কোর্সে কোনো বিষয়ে আরও তথ্য চান, বা আপনি যদি আটকে যান, https://kotlinlang.org আপনার সেরা শুরুর পয়েন্ট।

কোটলিন টিউটোরিয়াল

https://try.kotlinlang.org ওয়েবসাইটটিতে Kotlin Koans নামে সমৃদ্ধ টিউটোরিয়াল রয়েছে, একটি ওয়েব-ভিত্তিক দোভাষী , এবং উদাহরণ সহ রেফারেন্স ডকুমেন্টেশনের একটি সম্পূর্ণ সেট।

উদ্যতা কোর্স

এই বিষয়ে Udacity কোর্সটি দেখতে, প্রোগ্রামারদের জন্য Kotlin Bootcamp দেখুন।

ইন্টেলিজ আইডিয়া

IntelliJ IDEA-এর জন্য ডকুমেন্টেশন জেটব্রেইন্স ওয়েবসাইটে পাওয়া যাবে।

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

  • প্রয়োজনে হোমওয়ার্ক বরাদ্দ করুন।
  • শিক্ষার্থীদের সাথে যোগাযোগ করুন কিভাবে হোমওয়ার্ক অ্যাসাইনমেন্ট জমা দিতে হয়।
  • হোমওয়ার্ক অ্যাসাইনমেন্ট গ্রেড.

প্রশিক্ষকরা এই পরামর্শগুলি যতটা কম বা যতটা চান ততটা ব্যবহার করতে পারেন, এবং তাদের উপযুক্ত মনে করে অন্য কোনও হোমওয়ার্ক বরাদ্দ করতে নির্দ্বিধায় করা উচিত।

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

এই প্রশ্নগুলোর উত্তর দাও

প্রশ্ন 1

নিচের কোনটি স্ট্রিংগুলির একটি অপরিবর্তনীয় তালিকা ঘোষণা করে?

val school = arrayOf("shark", "salmon", "minnow")

var school = arrayOf("shark", "salmon", "minnow")

val school = listOf("shark", "salmon", "minnow")

val school = mutableListOf("shark", "salmon", "minnow")

প্রশ্ন 2

নিচের কোডের আউটপুট কি হবে?
for (i in 3..8 step 2) print(i)

▢ 345678

▢ 468

▢ ৩৮

▢ 357

প্রশ্ন 3

এই কোডে প্রশ্ন চিহ্নের উদ্দেশ্য কি?
var rocks: Int? = 3

▢ পরিবর্তনশীল rocks ধরন স্থির নয়।

▢ পরিবর্তনশীল rocks নাল সেট করা যেতে পারে.

▢ পরিবর্তনশীল rocks নাল সেট করা যাবে না.

▢ পরিবর্তনশীল rocks এখনই শুরু করা উচিত নয়।

পরবর্তী পাঠে এগিয়ে যান: 3. ফাংশন

অন্যান্য কোডল্যাবগুলির লিঙ্ক সহ কোর্সের একটি ওভারভিউয়ের জন্য, "প্রোগ্রামারদের জন্য কোটলিন বুটক্যাম্প: কোর্সে স্বাগতম" দেখুন।