Sponsored

বাংলায় Swift প্রোগ্রামিং ল্যাঙ্গুয়েজ টিউটোরিয়াল

0
50

১। সেটআপ এবং সাধারণ ধারনাঃ 

অ্যাপলের নতুন ল্যাঙ্গুয়েজ হচ্ছে Swift. যা C এবং Objective-C এর উপর ভিত্তি করে ডেভেলপ করা হয়েছে। এবং সুইফট এ  কোড করা C এবং Objective-C এর থেকে সহজ… সুইফট শিখতে হলে আমাদের অ্যাপলের নিজস্ব IDE Xcode লাগবে। আর Xcode এর জন্য লাগবে ম্যাক অপারেটিং সিস্টেম। অ্যাপলের ডেভেলপার সাইট থেকে Xcode ডাউনলোড করে ইন্সটল করে নিলে আমরা সুইফট প্রোগ্রামিং শুরু করতে পারি।

Xcode ওপেন করলে আমাদের অনেক গুলো অপশন দেখাবে। আমরা Get Started with Playground দিয়ে শুরু করব। Get Started with Playground এ ক্লিক করলে আমাদের নতুন একটা অপশন দেখাবে, প্লেগ্রাউন্ডের নাম পছন্দ করার জন্য। যে কোন একটা দিয়ে Next এ ক্লিক করব। এরপর কোথায় প্লেগ্রাউন্ডটি সেভ করব তা দেখিয়ে দিলেই প্লেগ্রাউন্ডে সুইফট কোড লেখার জন্য আমরা প্রস্তুত হয়ে যাবো। আমাদের ডিফল্ট ভাবে Hello World! প্রোগ্রামটি দেখাবে। swift hello world

 

এই প্লে গ্রাউন্ডেই আমরা সুইফট প্রোগ্রামিং এর উপর আমাদের ব্যাসিক ক্লিয়ার করব। এরপর এই ব্যাসিক জ্ঞান কাজে লাগিয়ে কিভাবে iOS অথবা Mac OS X এর জন্য সফটোয়ার তৈরি করা যায়, তা পরে   এ শিখে নিব।

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

Hello World প্রোগ্রামে প্রথম লাইনটি একটি কমেন্ট। যাকে বলে Single Line Comment. যা ডাবল স্ল্যাস দিয়ে লেখা হয়। দ্বিতীয় লাইনে একটি লাইব্রেরি ইম্পোর্ট করা হয়েছে, UIKit, যেখানে সুইফট প্রোগ্রামিং এর স্টান্ডার্ড ইনপুট আউটপুটের প্রয়োজনীয় কোড লেখা রয়েছে। তৃতীয় লাইনে একটি ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে। সুইফট এ var দিয়ে কোন ভেরিয়েবল ডিফাইন করা হয়। এখানে ভেরিয়েবলটির নাম দেওয়া হছে str. এবং যার ভ্যালু, Hello World!

আমাদের কোন কিছু প্রিন্ট করতে হয়নি, ভ্যারিয়েবলের মান ডানপাশে দেখাচ্ছে। আমরা চাইলে প্রিন্ট করতে পারি, তার জন্য লিখতে হবেঃ


println("Hello World!")

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

উপরের ছোট্ট লাইনে আমরা একটা String আউটপুট হিসেবে প্রিন্ট করিয়েছি। ইচ্ছে করলে আমাদের ডিফল্ট প্রোগ্রামটিতে যে ভ্যারিয়েবল ডিক্লেয়ার করেছি, তাও আমরা প্রিন্ট করতে পারি। যেমনঃ

 

// Playground - noun: a place where people can play
import UIKit
var str = "Hello, playground"
println(str)

আমরা দেখে থাকব যে // Playground – noun: a place where people can play এবং import UIKit এ দুই লাইন ছাড়াও আমাদের কোড রান করবে। এরপরবর্তীতে আমরা ইচ্ছে করলে এ দুই লাইন না লিখেও কোড রান করাতে পারব।

এখানের যে কোন কোডই আমরা প্লেগ্রাউন্ডে লিখলে আমাদের রেজাল্ট দেখাবে।  এবং নিজেয়া ইচ্ছে করলে নিজের মত করে কোড লিখতে পারব। বাড়তি কিছুই করতে হবে না। সিম্পল। 

২। Variable & Constant || ভ্যারিয়েবল এবং কনস্টেন্টঃ

কনস্টেন্ট হচ্ছে যার মান পরিবর্তন হবে না। পুরো প্রগ্রামে মাত্র একবার মান সেট করব, কিন্তু অনেক বার ব্যবহার করতে হবে, তাই হচ্ছে কনস্টেন্ট। সুইফট এ কনস্টেন্ট ডিক্লেয়ার করা হয়ে let দিয়ে। যেমনঃ

let catName = "billy"
let catAge = 2

এখানে আমরা দেখতে পাচ্ছি যে catName একটা স্টিং ভ্যালু। catAge হচ্ছে একটা ইন্টিজার। কিন্তু আমাদেরকে বলে দিতে হয় নি কোনটা ইন্টিজার, কোনটা স্টিং। সুইফট যথেষ্ঠ এডভান্স। যে বুঝতে পারে কোনটা কোন ধরনের কনস্টেন্ট। আবার আমরা ইচ্ছে করলে স্পস্ট ভাবে বলে দিতে পারি কোনটা কি ধরনের কন্সটেন্ট। যেমনঃ

let catName: String = "billy"
let catAge: Int = 2

ভ্যারিয়েবল হচ্ছে যার মান প্রোগ্রামের যে কোন জায়গায় পরিবর্তন হতে পারে। ভ্যারিয়েবল ডিক্লেয়ার করা হয়ে var কীওয়ার্ড দিয়ে। যেমনঃ

var catName = "billy"
var catAge = 2
var catWeight = 1.1

কন্সটেন্ট এর মত ভ্যারিয়েবলের টাইপ ও সুইফট নিজে নিজে বুঝে নিতে পারে। যেমন কোনটা কারেক্টার, কোনটা স্টিং, কোনটা ইন্টিজার, এসব বলে না দিলেও হয়। আমরা ইচ্ছে করলে বলেও দিতে পারিঃ

var catName: String = "billy"
var catAge: Int = 2
var catWeight: Double = 1.1

Boolean:

শুধু মাত্র True / False ভ্যারিয়েবল ডিক্লেয়ার করার জন্য Boolean ব্যবহার করা হয়।

যেমনঃ

var isWinter = ture
var sunnyDay = false

আমরা ইচ্ছে করলে স্পষ্ট করে বলে দিতে পারি যে এটা একটা boolean

var isWinter: Bool = ture
var sunnyDay: Bool = false

 

৩। Oparetor অপারেটর

যোগ, বিয়োগ, গুন, ভাগঃ

var x = 2
var y = 3
var addition = x + y
var multiply = x*y
var division =  y/x

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

var x = 2 , y = 3 , z =3
var catName ="billy" , dogName = "puppy"

কিন্তু ভিন্ন ধরনের টাইপ একই সাথে আমরা লিখতে পারব না, নিচের মত করে লেখে দেখুন, ভুল দেখাবেঃ

var catAge = 2 ,  catName ="billy"

কারণ আমরা একই সাথে ইন্টিজার এবং স্টিং ডিক্লেয়ার করতে চেষ্টা করেছি।

Increment & Decrement অপারেটর

Increment এর কাজ হচ্ছে একটা ভ্যারিয়েবল এর মান এক করে বাড়ানো। Decrements অপারেটরের কাজ হচ্ছে এক করে কমানো। দুইটাই একই সাথে দেখি।


var x = 4 , y = 5
x++
y--

আবার

var x = 4 , y = 5
++x
--y

এই দুই অপারেটর আমরা ভ্যারিয়েবলের আগেও দিতে পারি, পরেও দিতে পারি। আগে দিলে মান এক বাড়বে বা কমবে এবং তাই আউটপুট দিবে। কিন্তু ভ্যারিয়েবলের পরে দিলে আগে ভ্যারিয়েবলের বর্তমান মান দেখাবে এবং পরে এক কমবে বা বাড়বে।

Comparison Operator:

দুইটা ভ্যারিয়েবল কম্পেয়ার করার জন্য Comparison Operator ব্যবহার করা হয়। কম্পেয়ার করার পর একটা Boolean মান রিটার্ন করে। True অথবা False. যেমনঃ

a == b
a != b
a < b
a > b
a <= b
a >= b
a === b
a !== b

উপরের  Comparison Operator গুলো দিয়ে একটি প্রোগ্রাম লেখার চেষ্টা করিঃ

var a = 2 , b = 8;
if a < b {
    println( "a is less then b")
}

এখানে a < b, a যদি b থেকে ছোট হয়, তাহলে এটা true হবে এবং ব্র্যাকেটের ভেতরের কোড গুলো এক্সিকিউট করবে। যদি false হয়, তাহলে ব্র্যাকেটের ভেতরের কোড গুলো এক্সিকিউট করবে না।

আমরা ইচ্ছে করলে println এর ভেতরে আমাদের ভ্যারিয়েবল প্রিন্ট করতে পারি। তার জন্যঃ

var a = 2 , b = 8;
if a < b {
   println( "\(a) is less then \(b)") 
} 

আচ্ছা, println এ স্ট্রিং এর সাথে একটি ভ্যারিয়েবল এর মান দেখানোর জন্য একটি ব্ল্যাক স্ল্যাস (\) লিখে এরপর ব্র্যাকেটের ভেতর ভ্যারিয়েবলটি লিখলে তা স্ট্রিং এর ভেতরে দেখাবে। যেমন উপরে আমরা \(a) এবং \(b) দিয়ে স্টিং এর ভেতর একটি ভ্যারিয়েবল এর মান দেখিয়েছি।

উপরের মত অন্যান্য যে কোন Comparison করে আমরা প্রোগ্রাম লিখতে পারি, যেমনঃ

var a = 2 , b = 8;
if a > b {
    println( "\(a) is greater then \(b)") 
} else {
    println( "\(a) is less then \(b)")
}

if a==b {
    println( "\(a) is equal to \(b)") 
} else {
    println( "\(a) is not equal t  \(b)") 
}

এভাবে অন্যান্য গুলো। আমরা লক্ষ করে থাকব যে অন্যান্য ল্যাঙ্গুয়েজ এর মত Comparison এর জন্য ব্র্যাকেট ব্যবহার করতে হয় না। আবার ব্যবহার করলেও ভুল হবে না। যেমনঃ

var a = 2 , b = 8;
if (a != b) {
    println( "\(a) is  not equal to \(b)") 
} 

Logical Operators

তিন ধরনের লজিক্যাল অপারেটর রয়েছে। Logical AND, Logical OR, Logical NOT

Logical And তখনি সত্য হবে যখন এর প্রত্যেকটি Operand সত্য হবে। যেমনঃ

 

var a = 2 , b = 8;
if (a != b) && (a < b) {
    println( "\(a) is  not equal to \(b) and \(a) less then \(b)") 
} 

এখানে (a != b) এবং (a < b) দুইটাই যদি সত্য হয়, তাহলে ব্র্যাকেটের ভেতরের কোড এক্সিকিউট করবে। Comparison করার সময় ব্র্যাকেট গুলো ব্যবহার না করলেও প্রোগ্রাম কাজ করবেঃ

var a = 2 , b = 8;
if a != b && a < b {
    println( "\(a) is  not equal to \(b) and \(a) less then \(b)") 
} 

আবার একই সাথে দুই এর অধিক Comparison আমরা করতে পারি। যেমনঃ

var a = 2 , b = 8;
if a != b && a < b && b > 5 {
    println( "\(a) is  not equal to \(b) and \(a) less then \(b)") 
} 

Logical And তখনি সত্য হবে যখন এর যে কোন একটি Operand সত্য হবে। যেমনঃ

 

var a = 2 , b = 8;
if (a != b) || (a > b) {
    println( "it's a true comparison") 
} 

উপরের comparison এর একটি সঠিক, আরেকটি ভুল, তারপর ও আমাদের if স্টেটমেন্ট এর ভেতরের কোড গুলো এক্সিকিউট হচ্ছে। OR অপারেটরেও আমরা একের অধিক Comparison করতে পারি।

Logical NOT অপারেটর একটি অপারেন্ড এর উপর কাজ করে। কাজ করার পর যদি Operand টি true হয়, তাকে false করে দেয়। যদি Operand টি false থাকে, তাকে true করে দেয়। যেমনঃ

var isWinter  = ture
if !isWinter {
    println("it's not winter")
} else {
    println("it's winter")
}

৪।  Array & Dictionary  || অ্যারে এবং ডিকশনারি

অ্যারে ভ্যারিয়েবল নিচে মত করে ডিক্লেয়ার করা হয়ঃ

var catNames = ["billy", "catty", "pitty" ]

অ্যারের এর ভেতরে উপাদান গুলো প্রিন্ট করার জন্য লিখবঃ

 


var catNames = ["billy", "catty", "pitty" ]
println(catNames)

অ্যারে থেকে যে কোন একটা ইলিম্যান্ট এক্সেস করার জন্য লিখতে হয়ঃ

var catName = ["billy", "catty", "pitty" ]
catNames[0]
println(catName[0])

জেনে রাখা দরকার যে, ইন্ডেক্সিং শুরু হয় ০ থেকে। অর্থাৎ catName [0] তে থাকবে অ্যারের প্রথম ইলিম্যান্ট, এখানে যা হচ্ছে billy, দ্বিতীয় ইন্ডেক্স  catName[1] থাকবে catty এভাবে বাকি গুলো।

অ্যারেতে নতুন একটি ইলিমেন্ট এড করার জন্য লিখবঃ

var catNames = ["billy", "catty", "pitty" ]
catNames.append("buddy")

তাহলে নতুন একটি ইলিম্যান্ট যুক্ত হবে catNames এ। দুইটা অ্যারে আমরা ইচ্ছে করলে এক সাথ করতে পারি, তার জন্যঃ


var catNames = ["billy", "catty", "pitty"]
var dogNames = ["puppy", "dolly", "tommy"]
catNames += dogNames

অ্যারের যে কোন একটা ইলিম্যান্ট পরিবর্তন করতে চাইলেঃ


var catNames = ["billy", "catty", "pitty" ]
catNames[0] = "newBilly"

অ্যারে থেকে একটা ইলিমেন্ট রিমুভ করার জন্যঃ

var catNames = ["billy", "catty", "pitty", "buddy"  ]
catNames.removeAtIndex(0)
println(catNames)

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

var catInfo = ["catty" : 2 , "billy": 1 , "putty": 3]

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

var catInfo: Dictionary <String, Int> = ["catty" : 2 , "billy": 1 , "putty": 3]

 ৫। String  || স্ট্রিংঃ

 

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

var str = "My String"
println(str)

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

var str1 = "Hello "
var str2 = "World! "
var fullText = str1 + str2
println(fullText)

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

আবার আরো সহজেও করা যায়।


var str1 = "Hello "

var str2 = "World! "

str1 += str2

println(str1)

এখানে += ব্যবহার করে প্রথম স্ট্রিং এর সাথে দ্বিতীয় স্টিং যুক্ত করা হয়েছে। এবং পরে পুরো স্ট্রিং টা str1 এ এসাইন করা হয়েছে।

স্ট্রিং নিয়ে পরে আরো লেখার চেষ্টা করব…

৬। Control Flow

একই কোড বার বার রান করার জন্য লুপিং ব্যবহার করা হয়।  এগুলোর মধ্যে একটা হচ্ছে For Loop.
For Loop:

ফর লুপ অনেক ভাবেই লেখা যায়… for loop এর কয়েকটি অংশ রয়েছে, নিচের ছবিটি লক্ষ করিঃ

For Loop Illustrated

এ for loop এর তিনটি অংশ রয়েছে। তার আগে আমরা দেখেনি for loop সাধারন ব্যবহার নিয়ম।

for (exprission1; Exprission2;Expression3 ) {
   Statement
}

 

এখানে প্রথম exprission1  হচ্ছে for loop এর প্রথম অংশ। এটি দ্বারা একটি নির্দিষ্ট বিষয়ের প্রাথমিক মান দেওয়া হয় । যাকে বলা হয় initial অংশ। এই বিষয়টিকে বলা হয় Index. এটি পুরো লুপিং প্রক্রিয়াকে নিয়ন্ত্রন করে। প্রাথমিক মানটি কোন কিছু যাছাই না করেই আউটপুট দেয়। মানে হচ্ছে প্রথমিক মান টা কোন কিছু যাচাই না করেই আউটপুট দিবে (যেমন প্রিন্ট বা অন্য কোন কাজে)।

দ্বিতীয় অংশটি অর্থাৎ Exprission2 দ্বারা  একটি শর্ত দেওয়া হয়। লুপটি কতক্ষন পর্যন্ত চলবে তা এটি নির্নয় করে। Exprission2 তে সাধারনত একটি logical expression থাকে যা শুধু সত্য মিথ্যে বুঝতে পারে। যদি সত্য হয় তাহলে true রিটার্ন করে আর যদি মিথ্যে হয় তাহলে false রিটার্ন করে।  এটি যদি false ছাড়া অন্য কোন মান রিটার্ন করে তাহলে লুপটি চলবে, আর যদি false রিটার্ন করে তাহলে লুপটি আর চলবে না।

Expression3 কাজ হচ্ছে আমারা প্রথমে যে প্রাথমিক মান নিলাম তাকে আমাদের ইচ্ছে মত মডিফাই করা। এটি প্রত্যেক লুপের শেষ ধাপে কাজ করে।

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


for var x = 1; x  < 100; x++ { 

 println(x)

 }

Sponsored
Sponsored
Search
Categories
Read More
Tech
হোয়াটসঅ্যাপে সমস্যা দেখা দিলে ঠিক করার উপায় - Banglatech24.com
হোয়াটসঅ্যাপ ব্যবহার করতে গিয়ে অনেক সময় অনেক ধরনের সমস্যার মুখোমুখি হতে পারেন। ইন্টারনেট কানেকশন...
By Nettumi 2026-09-25 10:11:40 0 84
Hacking Course
বিকাশ অফার ২০২৩ - bKash Offers 2023
বিকাশ বাংলাদেশে সবথেকে জনপ্রিয় ডিজিটাল পেমেন্ট মাধ্যম। বিকাশের এই জনপ্রিয়তার অন্যতম কারণ...
By Nettumi 2026-09-25 10:01:21 0 56
Tech
হ্যাঁ, আপনার ফোনও ভাইরাসে আক্রান্ত হতে পারে! যেভাবে ফোনের ভাইরাস চিহ্নিত করবেন | Techtunes | টেকটিউনস
মজিলার নির্বাচিত সাতটি বেস্ট ফায়ারফক্স 3 অ্যাডঅন দুঃসাহসী টিনটিন
By Nettumi 2026-09-25 03:58:28 0 62
Nulled
জেনে নিন কিভাবে টরেন্টে Maximum আপলোড আর ডাউনলোড স্পীড পাবেন | Techtunes | টেকটিউনস
অ্যাপল মানুষকে ফিরিয়ে নিচ্ছে হাত ঘড়ির যুগে… অসামান্য প্রাযুক্তিক উৎকর্ষতায়! একটি Apple...
By Nettumi 2026-09-21 05:27:13 0 55
Nulled
Doctorino v1.0 - Doctor Chamber Management System PHP Script Nulled
Doctorino v1.0 – Doctor Chamber Management System PHP Script Free Download. Doctorino is...
By Nettumi 2026-09-18 04:00:13 0 63
‎ ‎ ‎
Nettumi https://nettumi.com