ইন্টারনেটে আইওএস ডেভেলপমেন্টের বাংলায় কোন মেটেরিয়াল পাওয়া না গেলেও, ইংরেজিতে প্রচুর। সেইসব লিখা, টিউটোরিয়াল কিংবা বই আর আমার এই লিখার পার্থক্য হল- সেখানে ধরে নেয়া হয়- আপনি সি, সি++, সি#, জাভা, রুবি, পাইথন যে কোন একটি ভাষায় অভিজ্ঞ - এখন অবজেক্টিভ সি শিখতে এসেছেন। আর, আমি ধরে নিচ্ছি- আপনার প্রোগ্রামিঙে কোন প্রকার পূর্ব অভিজ্ঞতা নেই। তবে, আগ্রহ আছে।
কোডাররা সাধারণত নিরস হয়। তাই, ভাষাগত ত্রুটির জন্য ক্ষমা চেয়ে নিচ্ছি। কিছু ভুমিকা করেই কাজে চলে যাবো!
আই ও এস এবং ম্যাক ও এস (iOS & MAC OS)
আইওএস হল আই ফোন এবং আই প্যাড অপারেটিং সিস্টেম। ২০০৮ সালে স্যার স্টিভ জবস আই প্যাড ছাড়ার আগে এইটি ছিল আই ফোন ওএস। আর ম্যাক ওএস হল মেকিন্টশ অপারেটিং সিস্টেম। যা অ্যাপল কম্পিউটারে ব্যাবহার করা হয়। এই দুই প্লাটফর্মের জন্য সফটওয়্যার/এপ্লিকেশন তৈরিতে যেই প্রোগ্রামিং ভাষা ইউজ করা হয়, তাহল- অবজেক্টিভ সি।
অবজেক্টিভ সি
১৯৭০ সালে, ডেনিশ রিচি সাহেব বেল ল্যাবে কম্পিউটার প্রোগ্রামিঙের সবচে জনপ্রিয় ভাষা সি ল্যাঙ্গুয়েজ আবিস্কার করেন। তারপর, সি ভাষা থেকে অনুপ্রাণিত অনেক ভাষা যেমন- সি++, সি#, জাভা এইসব আবিষ্কৃত হয়। বিভিন্ন প্রয়োজনে বিভিন্ন প্লাটফর্মে এই সব ভাষা ব্যাবহার করা হয়। আই ও এস ও ম্যাক প্লাটফর্মে যেই ভাষা বেবহ্রিত হয়, তার নাম- অবজেক্টিভ সি। এইটি সি অনুপ্রাণিত কোন ভাষা নয়। এটি সি এর একটি সুপার সেট/ এক্সটেনশন। এখানে যেমনি অত্যাধুনিক কোড ইউজ করা যায়- আবার ৭০ দশকের সি প্রোগ্রামিং এর কোন কোড এনে বসিয়ে দিলেও তা অনায়াশে চলে যাবে।
এক্স কোড
এক্স কোড ম্যাক-এ বেবহ্রিত আইডিই (Integrated Development Environment). এইটি আপনার কোড ও গ্রাফিক্যাল ইন্টারফেসকে সমন্বিত করে- একটি পরিপূর্ণ অ্যাপ তৈরি করে। অ্যাপল এইটি ম্যাক কম্পিউটারের সাথে ফ্রি দেয় অথবা অ্যাপস্টোর থেকে বিনামুল্লে ডাউনলোড করে নেয়া যায়।
ভুমিকা শেষ। আসুন কাজের কথায় আসি।
আপনি যদি, ড্রাইভিং করতে যান, আপনাকে যেমন ক্লাচ, গ্যাস, ব্রেক পেডালসহ অনেক কিছু মাথায় রেখে চালাতে হবে- তেমনি প্রোগ্রামিং করার সময়ও অনেক কিছু ভেবে চিনতে করতে হয়- না হয় আপনার প্রোগ্রাম উইল ক্র্যশ! তবে, আমরা মুল প্রোগ্রামিঙে যাওার আগে কিছু পরিচিত ম্যাথ করে প্রোগ্রামিঙের পরিবেশটা তৈরি করে নিবো- যাতে আপনার মনে না হয়- হটাত করে সাগরে পরে গেছি 😉
প্রাইমারী স্কুলে যখন ভর্তি হয়েছেন, কি করাতো মনে আছে? দেখিয়ে দিচ্ছিঃ
২ + ৬ = ...
... = ৩ * ৫ [ কম্পিউটার কীবোর্ডে গুন বোঝাতে এই তারকা (*) ইউজ করা হয় ]
তারপর, যখন আপনি হাই স্কুলে উঠলেন, তখন কি করানো হতো?
2 + 6 = x
y = 3 * 5
কি হল! ডটগুলাকে এক্স ওয়াই করা হল, বাংলাটা ইংরেজি হল। গাল ভরা নাম দেয়া হল- এলজেব্রা। এই এক্স ওয়াই কে নাম দেয়া হল চলক। ইংরেজিতে বলা হল- ভেরিএবল। এতটুকুই! আমি বুঝিনা, এই ছোট পরিবর্তনটাকেই তখন এতো ভয় পেতাম ক্যান ;-/
ভেরিয়েবল ( Variable )
অবজেক্টিভ সি প্রোগ্রামেও ভেরিয়েবল ইউজ করা হয়। আপনাকে একটি অবজেক্টিভ সি এর স্টেটমেন্ট ( কোডের এক লাইন) দেখাই।
x = 4;
এখানে ভেরিয়েবলটির নির্দিষ্ট মান দেয়া হয়েছে। সংজ্ঞা দরকার নাই। বুঝতে পারলেই হল। এবার খেয়াল করুন, স্টেটমেন্টটির শেষে একটি সেমিকোলন দেয়া হয়েছে। সেমিকোলনই কেন? ডট, কমা, কোলন, কোয়াসচন, এক্সক্লেমেশন নয় কেন? আসুন পরের প্যারায় যাই।
সেমিকোলন ব্যাবহার
দেখুন আমরা মানুষ। ক বললেই কুমিল্লা কিংবা কুয়াকাটা বুঝা আমাদের স্বভাব। কিন্তু কম্পিউটার আমাদের মতো নয়। সে অপেক্ষা করবে কখন আমি বাক্যটি শেষ করবো। তখন সে কাজ শুরু করবে। আমি সেমিকোলন দিয়ে বললাম- আমার বাক্য শেষ হয়েছে। তুমি কাজ শুরু কর। কমা, দাড়ি নয় কেন? কারন অবজেক্টিভ সিতে এইগুলার অন্য ব্যাবহার আছে। আস্তে আস্তে আমরা তা শিখতে পারবো।
ভেরিয়েবলের নাম দেয়া
আপনি ভেরিয়েবলকে এক্স বলেন আর ওয়াই বলেন তাতে কম্পিউটারের কিছু যায় আসেনা। কিন্তু কোন মানুষ সেই কোড পরতে গিয়ে ঝামেলায় পরবে। এমন কি, আপনি নিজেও ডিবাগ করার সময় বুঝতে পারবেন না, এক্স দিয়ে কি বুঝিয়েছেন। ওয়াই দিয়ে কি বুঝিয়েছেন। তাই অর্থবহ নাম দিন। যেমন একটা ইমেজের ক্ষেত্রফল বের করার জন্য আপনি কোড করছেন।
x = 8 ;
y = 4.5 ;
z = x * y ;
এইবার দেখুন, এইভাবে লিখে গেলে পরবর্তীতে আপনার কোড কেউ বুঝতে পারবেনা এমনকি আপ্নিও না। তাই ভেরিয়েবলের নামগুলা ব্যাখ্যামূলক করুন। যেমন, এইভাবে লিখতে পারেনঃ
imageWidth = 8 ;
imageHight = 4.5 ;
imageSurfaceArea = imageWidth * imageHight ;
" কোডিং -এ যে ভুল হয় তাকে বলে বাগ, আর সেই ভুল বের করা এবং তা শুদ্ধ করার প্রক্রিয়াকে বলে ডিবাগিং "
আপনি যদি কোন স্টেটমেন্ট লিখার শেষে সেমিকোলন ভুল করে যান তাহলে আপনার কম্পাইলার ভুল ধরবে। আপনাকে মনে রাখতে হবে প্রোগ্রামিং একটি ডিটেইল ওরিয়েন্টেড কাজ। এইখানে সামান্য ভুল আপনার পুরো প্রগরামকে জলে ফেলতে পারে। তাই লিখার আগেই জানতে হবে- কি কি এলাউড আর কি কি এলাউড নয়।
ভেরিয়েবলের নাম দেয়ার ক্ষেত্রে আপনার স্বাধীনতা আছে। আপনি চাইলে যেকোন নাম ইউজ করতে পারবেন। তবে কখনোই ওয়ার্ডের মাঝখানে স্পেস দিতে পারবেন না। আপনি প্রতিটা ওয়ার্ডকে আলাদা করে দেখানোর জন্য প্রথম লেটারটাকে কেপিটালাইজ করতে পারেন। তবে কখনোই ভেরিয়েবলের প্রথম লেটার নয়। যেমন আমি লিখেছি ঃ imageSurfaceArea। নট - Image Surface Area
তবে, এমন নাম ইউজ করতে পারবেন না, যার অবজেক্টিভ সিতে অন্য মিনিং আছে। যেমন NSLog; NSString ইত্যাদি।
আপনি ভেরিয়েবলের মাঝে সংখ্যা ইউজ করতে পারবেন তবে কখনোই শুরুতে নয়। আন্ডারস্কোর ইউজ করতে পারবেন। নিচে কয়েকটি ভেরিয়েবলের উদাহারন দেয়া হল।
উপযুক্ত ভেরিয়েবল নাম।
door8k
do8or
do_or
অনুপুযুক্ত ভেরিয়েবল নেম
door 8 (contains a space)
8door (starts with digit)
Door8 (starts with capital)
গাণিতিক কাজে ভেরিয়েবলের ব্যাবহার
আমরা এখন ভেরিয়েবলের নাম দিতে পারছি। আসুন মান সহ ভেরিয়েবল ইউজ করি। নিচের কোডটি দেখুনঃ
imageWidth=8;
imageHeight=6;
imageSurfaceArea=imageWidth*imageHeight;
জেনে খুশী হবেন, আপনি কয়টি স্পেস/ ট্যাব ইউজ করছেন তা নিয়ে অবজেক্টিভ সির কোন মাথা ব্যাথা নেই ( ভেরিয়েবল নেম, কি-ওয়ার্ড ছাড়া)।
সুতরাং - কোড দেখতে সহজ ও সুন্দর করার জন্য পর্যাপ্ত স্পেস রাখুন। যেমনঃ
imageWidth = 8;
imageHeight = 6;
imageSurfaceArea = imageWidth * imageHeight;
আসুন আমরা এই কোডে কিছুটা পরিবর্তন করিঃ
imageWidth = 8;
imageHeight = 4.5;
imageSurfaceArea = imageWidth * imageHeight;
পূর্ণ সংখ্যা এবং ভগ্নাংশ ( Integer and Float )
সাধারণত সংখ্যাকে দুই ভাগে ভাগ করা যায় পূর্ণ সংখ্যা ( ইন্টেজার) এবং ভগ্নাংশ (ফ্লোটিং পয়েন্ট বা ফ্রেকশনাল নাম্বার), উপরের উদাহারনটা দেখুন। imageWidth = 8; একটি ইন্টেজার এবং imageHeight = 4.5; একটি ফ্লোটিং নাম্বার।
যেমন একটি কারখানায় কতজন শ্রমিক কাজ করে? এই ভেরিয়েবলটি অবশ্যই একটি ইন্টেজার। কিন্তু তাদের মজুরী অবশ্যই ফ্লোট। এই ব্যাপারটি আগে থেকেই জানার প্রয়োজন আছে। কারন, উপরের কোডটি লিখে এক্স-কোড বা কোন সাধারণ কম্পাইলারে রান করালে চলবে না।
সমস্যা হল- কম্পাইলার আগে থেকেই জানতে চায়, আপনি যেই ভেরিয়েবলটি ইউজ করবেন, তা ইন্টেজার নাকি ফ্লোটিং নাম্বার। সে অনুযায়ী সে মেমোরি রাখবে ওই ভেরিয়েবল টির জন্য।
জিকদের ভাষায় একেই বলা হয় - " ভেরিয়েবল ডিক্লারেশন"!
সুতরাং চূড়ান্ত ভাবে আমাদের কোডটি দাঁড়াবে,
int imageWidth;
float imageheight, imageSurfaceArea;
imageWidth = 8;
imageHeight = 4.5;
imageSurfaceArea = imageWidth * imageHeight;
যাই হোক, ইন্ট- ফ্লোট দুই ধরণের ভেরিয়েবলই নেগেটিভ হতে পারে। যেমন আপনার ব্যাংকের কারেন্ট একাউন্টের ব্যাল্যান্স। তবে, কিছু কিছু ডাটা কখনোই নেগেটিভ হয়না। যেমন- চকলেট ফ্যাক্টরিতে চকলেট সংখ্যা। যেসব ক্ষেত্রে আপনি নিশ্চিত থাকবেন যে আপনার, আউটপুট কখনোই নেগেটিভ হবেনা, সেক্ষেত্রে ভেরিয়েবল ডিক্লারেশনের সময় আপনাকে লিখতে হবেঃ
unsigned int chocolateBarsInStock;
আন্সাইন্ড ইন্টেজার এমন ডাটাকে বুঝায়, যা >0/=0।
এক লাইনেই ভেরিয়েবল ডিক্লেয়ার ও মান এসাইন সম্ভব। যেমনঃ
int x = 10;
float y= 3.5, z = 42;
এতে আপনার সময় বাচবে।
প্রথম পর্ব শেষ করছি। ভালো থাকবেন। ভালো রাখবেন। সবাইকে ধন্যবাদ।
(ডিসক্লেইমারঃ মূল লিখাটি আমার বেক্তিগত ওয়েব সাইট থেকে নেয়া। আমার প্রোগ্রামিঙের অভিজ্ঞতা নাম মাত্র। প্রতিদিন যা সিখছি, তা এইখানে লিখে রাখবো ভাবছি। কারো উপকারে আসলে বুকমার্ক করে রাখতে পারেন। আপনাদের মন্তব্য লিখতে উৎসাহিত করবে, ধন্যবাদ। )
আমি অরিজিনাল যামীর। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 3 টি টিউন ও 70 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
মরুন্মিত কষ্টকর জীবন নিয়ে কিছুই বলার নাই......।
wao jotil laglo kintu kichi buji nai.tobe IN SHAA ALLAH ekdin amio parbo.ato sundor poster jonno thx