পাইথন দিয়ে প্রোগ্রামিং শেখা,
পাইথন দিয়ে প্রোগ্রামিং শেখা ২য় খণ্ড - অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব ক্রলিং,
পাইথন দিয়ে প্রোগ্রামিং শেখা ৩য় খণ্ড : ডেটা স্ট্রাকচার ও অ্যালগরিদম পরিচিতি,
পাইথন দিয়ে প্রোগ্রামিং শেখা - ৪র্থ খণ্ড
"পাইথন দিয়ে প্রোগ্রামিং শেখা ৩য় খণ্ড : ডেটা স্ট্রাকচার ও অ্যালগরিদম পরিচিতি" ভূমিকা একজন সফটওয়্যার প্রকৌশলীর কাজ হচ্ছে সফটওয়্যার তৈরি করা। এই সফটওয়্যারের আবার নানান রকমফের রয়েছে― ছোটোখাটো মোবাইল কিংবা ওয়েব অ্যাপ্লিকেশন, যেমন― সফটওয়্যার, তেমনি কম্পিউটার চালানোর জন্য যে অপারেটিং সিস্টেম (উইন্ডোজ, লিনাক্স ইত্যাদি), চালকবিহীন গাড়ি নিয়ন্ত্রণের জন্য যে প্রোগ্রাম, সেগুলোও কিন্তু সফটওয়্যার। বাংলাদেশের সফটওয়্যার ইন্ডাস্ট্রিতে যে ধরনের কাজ হয়, তার বেশিরভাগই অপেক্ষাকৃত সহজ ও সাধারণ। এসব কাজ করার জন্য কম্পিউটার বিজ্ঞানের জ্ঞান খুব বেশি দরকার হয় না। কিন্তু কিছু কিছু কাজ করতে গেলে আবার কম্পিউটার বিজ্ঞানের জ্ঞান-বুদ্ধি অপরিহার্য। এসব জটিল সফটওয়্যার তৈরি করতে গেলে কম্পিউটার বিজ্ঞানের যে জিনিসটি না জানলেই নয়, তার নাম হচ্ছে ডেটা স্ট্রাকচার ও অ্যালগরিদম। ডেটা স্ট্রাকচার ও অ্যালগরিদম আলাদা জিনিস, কিন্তু তারা পরস্পরের সঙ্গে খুবই সম্পৃক্ত। তাই অনেক সময় বিষয় দুটো একই সঙ্গে উচ্চারিত হয়। এই বইতে আমি এই দুটো বিষয় নিয়েই লিখেছি।
পাইথন দিয়ে প্রোগ্রামিং শেখা সিরিজে আমি চেষ্টা করছি, একেবারে গোড়া থেকে শুরু করে কেউ যেন যোগ্য ও দক্ষ সফটওয়্যার নির্মাতা হিসেবে গড়ে ওঠে। প্রথম বইতে পাইথন দিয়ে প্রোগ্রামিং জগতের সঙ্গে পরিচয় করানো হয়েছে। দ্বিতীয় বইতে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের সঙ্গে পরিচয় করানোর পাশাপাশি ওয়েব ক্রলিং শেখানো হয়েছে। এরপর শিক্ষার্থীরা যেন তাদের বেসিক প্রোগ্রামিং জ্ঞান আরো শক্ত করতে পারে, সেজন্য এই সিরিজের তৃতীয় বই― ডেটা স্ট্রাকচার ও অ্যালগরিদম পরিচিতি-তে আমি চেষ্টা করেছি পাঠকদেরকে প্রাথমিক ডেটা স্ট্রাকচার ও অ্যালগরিদমগুলোর সঙ্গে পরিচয় করিয়ে দিতে। এই বইতে যেটুকু দেখানো হয়েছে, তার বাইরেও আরো শিখতে হবে, কিন্তু এটুকু না জানলেই নয়। ডেটা স্ট্রাকচার ও অ্যালগরিদমের জ্ঞান কেবল শিক্ষার্থীদেরই কাজে লাগবে তা নয়, বরং যারা স্বশিক্ষিত প্রোগ্রামার বা সফটওয়্যার নির্মাতা, তাদের আরো কার্যকর হতে সাহায্য করবে।
এই বইটি রিভিউ করেছেন তাহমিদ রাফি, আবু আশরাফ মাসনুন, তানভীরুল ইসলাম, শহীদুল ইসলাম (সুমন), রুহুল আমীন (সজীব)। তাঁরা বেশ কিছু ভুলত্রুটি বের করার পাশাপাশি অনেক পরামর্শও দিয়েছেন, যা বইটিকে সমৃদ্ধ করেছে। তাই তাদের কাজে আমি কৃতজ্ঞ এবং পাশাপাশি পাঠকদের পক্ষ থেকেও তাঁরা বিশেষ ধন্যবাদ প্রাপ্য।
পাইথন একটি আধুনিক প্রোগ্রামিং ভাষা। এই ভাষা যেমন প্রোগ্রামিং শেখার ক্ষেত্রে অনেক সহায়ক, তেমনি বাস্তব জীবনেও নানা সফটওয়্যার তৈরিতে এর ব্যবহার ব্যাপক। ডেটা স্ট্রাকচার ও অ্যালগরিদম শেখার জন্যও যে পাইথন একটি ভালো প্রোগ্রামিং ভাষা― আশা করি এই বইটি পাঠকদের কাছে তা তুলে ধরতে সমর্থ হবে। সবাই আরো ভালো প্রোগ্রামার হিসেবে গড়ে উঠুক। সবার জন্য ভালোবাসা।
বইটি সম্পর্কে যে-কোনো মতামত ও পরামর্শ দিতে চাইলে আমাকে ইমেইল করা যাবে
[email protected] ঠিকানায়।
সূচীপত্র ভূমিকা
লেখক পরিচিতি
অধ্যায় ১ : ডেটা স্ট্রাকচার (Data Structure) ও অ্যালগরিদম (Algorithm) • ডেটা স্ট্রাকচার (Data Structure)
• অ্যালগরিদম (Algorithm)
• ডেটা স্ট্রাকচার ও অ্যালগরিদম কেন শিখব?
• বইটি কাদের জন্য এবং কীভাবে পড়তে হবে?
অধ্যায় ২ : টাইম ও স্পেস কমপ্লেক্সিটি (Time and Space Complexity) • টাইম কমপ্লেক্সিটি (Time Complexity)
• স্পেস কমপ্লেক্সিটি (Space Complexity)
• কিছু উদাহরণ
অধ্যায় ৩ : কোড টেস্ট করার পদ্ধতি • প্রথম পদ্ধতি
• assert-এর ব্যবহার
• ইউনিট টেস্টিং
অধ্যায় ৪ : সার্চিং অ্যালগরিদম (Searching Algorithm) • লিনিয়ার সার্চ (Linear search)
• বাইনারি সার্চ (Binary Search)
অধ্যায় ৫ : সর্টিং অ্যালগরিদম (Sorting Algorithm) • সিলেকশন সর্ট (Selection sort)
• বাবল সর্ট (Bubble sort)
• ইনসার্শন সর্ট (Insertion sort)
ধ্যায় ৬ : স্ট্যাক (Stack) ও কিউ (Queue) • স্ট্যাক (Stack)
• কিউ (Queue)
অধ্যায় ৭ : লিংকড লিস্ট (Linked List) • লিংকড লিস্টের ধারণা
• পাইথন দিয়ে লিংকড লিস্ট তৈরি
• ডবলি লিংকড লিস্ট
• লিংকড লিস্টের ব্যবহার
অধ্যায় ৮ : রিকার্শন অধ্যায় ৯ : ট্রি (Tree) • বাইনারি ট্রি
• ট্রি ট্রাভার্স করা
অধ্যায় ১০ : বাইনারি সার্চ ট্রি অধ্যায় ১১ : হিপ, হিপ সর্ট ও প্রায়োরিটি কিউ • হিপ
• হিপ সর্ট
• প্রায়োরিটি কিউ (Priority Queue)
অধ্যায় ১২ : হ্যাশ টেবিল অধ্যায় ১৩ : আরো সর্টিং অ্যালগরিদম • মার্জ সর্ট
• কুইক সর্ট (Quick Sort)
• কাউন্টিং সর্ট
অধ্যায় ১৪ : পাইথনের বিল্ট-ইন ডেটা স্ট্রাকচার পরিশিষ্ট
• গাণিতিক রাশির মান নির্ণয়
• ইনফিক্স থেকে পোস্টফিক্সে রূপান্তর
"পাইথন দিয়ে প্রোগ্রামিং শেখা -২য় খণ্ড - অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব ক্রলিং" ভূমিকা: বিশ্বের প্রোগ্রামিং ভাষাগুলোর মধ্যে নানান রকমের র্যাংকিং করা হয়। যেসব গ্রহণযোগ্য র্যাংকিং আছে, সবগুলোতেই প্রথম তিনটি প্রোগ্রামিং ভাষার একটি হচ্ছে পাইথন। গত এক দশকে প্রোগ্রামিং শেখা ও প্রফেশনাল জগতে পাইথনের ব্যবহার অনেক বেড়েছে। আগামী দশকেও পাইথন বিশ্বব্যাপী একটি শীর্ষস্থানীয় প্রোগ্রামিং ভাষা হিসেবেই থাকবে বলে আমার দৃঢ় বিশ্বাস। ইতিপূর্বে সবাইকে পাইথন দিয়ে প্রোগ্রামিংয়ের সঙ্গে পরিচয় করিয়ে দেওয়ার জন্য ‘পাইথন দিয়ে প্রোগ্রামিং শেখা’ নামে একটি বই লিখেছি। আর এই বইতে আমরা পাইথন দিয়ে কিছু বাস্তব সমস্যা সমাধানের চেষ্টা করব এবং সেটি করতে গিয়ে আরো বেশি পাইথন শিখব।
বইটি রিভিউ করেছেন তাহমিদ রাফি ও আবু আশরাফ মাসনুন। তাঁদের প্রতি অশেষ কৃতজ্ঞতা। এ ছাড়া যেসব পাঠক আমাকে উৎসাহ দিয়েছে, তাদের জন্য ভালোবাসা রইল। আমরা সবাই মিলে বাংলাদেশকে প্রোগ্রামিংয়ের পথে অনেকদূর নিয়ে যাব।
সূচীপত্র ভূমিকা লেখক পরিচিতি অধ্যায় ১ – আরো বেশি পাইথন* বইটি কাদের জন্য?
* বইতে কী লিখেছি, কেন লিখেছি
* বইটি কীভাবে পড়তে হবে?
অধ্যায় ২ – মডিউল ও প্যাকেজ* স্ট্যান্ডার্ড লাইব্রেরি (Standard Library)
* নতুন মডিউল তৈরি করা
অধ্যায় ৩ – অবজেক্ট ও ক্লাস* অবজেক্ট তৈরি ও ব্যবহার
* নতুন ক্লাস তৈরি করা
অধ্যায় ৪ – রিকোয়েস্টস মডিউল ও ফাইল তৈরি* রিকোয়েস্টস মডিউল
* ফাইল তৈরি ও ফাইলে লেখা
* ওয়েবপেজ ফাইলে সেভ করা
* ইন্টারনেট থেকে ছবি ডাউনলোড করা
* কমান্ড লাইন আরগুমেন্ট
* বই ডাউনলোড করা (cpbook পিডিএফ)
অধ্যায় ৫ – ফাইলের আরো কিছু কাজ এবং এক্সেপশন* ফাইল থেকে পড়া
* এক্সেপশন হ্যান্ডেল করা
অধ্যায় ৬ – ইনহেরিটেন্স (Inheritance)* পাইথনে ইনহেরিটেন্স
* মেথড ওভাররাইডিং (Method Overriding)
* আজব টার্টল
অধ্যায় ৭ – রেগুলার এক্সপ্রেশন (Regular Expression)* রেগুলার এক্সপ্রেশন কম্পাইল করা
* খুদে প্রজেক্ট – ইমেইল ঠিকানা বের করা
* খুদে প্রজেক্ট – ওয়েবপেজ থেকে তথ্য সংগ্রহ করা
অধ্যায় ৮ – ওয়েব ক্রলিং (Web Crawling)* ওয়েবপেজ থেকে তথ্য সংগ্রহ
* সিএসভি (CSV) ফাইল
* লগিং (logging) মডিউল
* সম্পূর্ণ ওয়েব ক্রলার কোড
অধ্যায় ৯ – প্রোগ্রামিংয়ের আনন্দযাত্রা* এরপর আমরা কী শিখব?
"পাইথন দিয়ে প্রোগ্রামিং শেখা" ভূমিকা: বাংলাদেশের অর্থনীতি তিনটি পিলারের ওপর দাঁড়িয়ে আছে। প্রথমটি পোশাকশিল্প, দ্বিতীয়টি কৃষি ও তৃতীয়টি হচ্ছে প্রবাসী বাংলাদেশিদের শ্রম। কিন্তু চতুর্থ পিলারটি অনুপস্থিত। সেই পিলারটি হতে পারত তথ্যপ্রযুক্তি। কিন্তু সঠিক দিকনির্দেশনা ও চেষ্টার অভাবে বাংলাদেশ এই খাতে এখনো অনেক অনেক পেছনে।
তথ্যপ্রযুক্তি নিয়ে যে যতই কথা বলুক, যত শর্টকাটে বড়লোক হওয়ার স্বপ্নই দেখাক, এতে কাজের কাজ কিছু হবে না। তথ্যপ্রযুক্তির মূল বিষয় হচ্ছে প্রোগ্রামিং আর সেটাকে ধরেই আমাদের আগাতে হবে। অনেক দেরিতে হলেও বাংলাদেশের অনেকেই সেটা বুঝতে শুরু করেছে, আর তাই স্কুল-কলেজের শিক্ষার্থীরাও তাদের নিয়মিত পড়াশোনার বাইরে প্রোগ্রামিং শেখার চেষ্টা করে যাচ্ছে, বিভিন্ন প্রোগ্রামিং প্রতিযোগিতায়ও অংশগ্রহণ করছে। বিষয়টি আমার জন্য অত্যন্ত আনন্দের ও গর্বের যে, বাংলাদেশের স্কুল-কলেজ পর্যায়ের শিক্ষার্থীদের অধিকাংশই প্রোগ্রামিং শেখা শুরু করে আমার লেখা কম্পিউটার প্রোগ্রামিং ১ম খণ্ড বইটি দিয়ে। বইটিতে সি (C) প্রোগ্রামিং ভাষা ব্যবহার করে প্রোগ্রামিংয়ের সঙ্গে শিক্ষার্থীদের পরিচয় করানোর চেষ্টা করেছি।
বর্তমানে পৃথিবীর বিভিন্ন দেশে প্রোগ্রামিং শেখা শুরু করার জন্য পাইথন (Python) নামক প্রোগ্রামিং ভাষাটি বেশ জনপ্রিয়তা অর্জন করছে। স্কুল পর্যায়ের শিক্ষার্থীরা যেমন পাইথন দিয়ে প্রোগ্রামিং শেখা শুরু করছে, তেমনি এমআইটি (MIT)–এর মতো পৃথিবীর শ্রেষ্ঠ বিশ্ববিদ্যালয়গুলোও তাদের সিলেবাসে পাইথন দিয়ে প্রোগ্রামিং ও কম্পিউটার বিজ্ঞান শেখা শুরু করার কোর্স নিয়ে এসেছে। বাংলাদেশের শিক্ষার্থীরাও যেন এদিক থেকে পিছিয়ে না পড়ে, সেজন্য আমার ক্ষুদ্র প্রয়াস এই বইটি। আমি এর আগে পাইথন নিয়ে ‘পাইথন পরিচিতি’ নামক একটি বই লিখেছি, কিন্তু সেটি আসলে প্রোগ্রামিং শেখা শুরু করার জন্য নয়, বরং যারা প্রোগ্রামিং পারে কিন্তু পাইথন শিখতে চায়, তাদের জন্য। আর এই বইটি হচ্ছে যাদের প্রোগ্রামিং সম্পর্কে কোনো ধারণা নেই, তাদের জন্য। ষষ্ঠ শ্রেণি ও তার ওপরের ক্লাসের শিক্ষার্থীদের বইটি পড়ে বুঝতে কোনো সমস্যা হওয়ার কথা নয়। বইটি রিভিউ করেছেন তাহমিদ রাফি, তানভীরুল ইসলাম, আবু আশরাফ মাসনুন ও মাফিনার খান। তাঁদের রিভিউ আমাকে অনেক সাহায্য করেছে বইটির বিভিন্ন ভুলত্রু টি সংশোধন করতে। তাই তাঁদের কাছে রইল কৃতজ্ঞতা। আর আমার স্ত্রী সিরাজুম মুনিরা পারমিতাও বইটি লেখার সময় অনেক উৎসাহ দিয়েছে। তার প্রোগ্রামিং ভীতি কাটানোর জন্যই বইটা তাড়াতাড়ি শেষ করা, নইলে আলসেমি করে আরো অনেক সময় কাটিয়ে দিতাম।
বছর দুয়েক আগে আমার প্রোগ্রামিং গুরু এস এম শাহরিয়ার হোসেনের সঙ্গে যখন আমার দেখা হয়, তখন তিনি আমাকে খুব গুরুত্বপূর্ণ কথা বলেছিলেন, “যেকোনো কাজ করার সময়ই মান বজায় রাখতে হবে এবং ভালো করার চেষ্টা করতে হবে। তোমার লেখা বই বাংলাদেশের ছেলেমেয়েরা পড়ে, খুব ভালো কথা। এখন তুমি যদি আরেকটা বই লিখো, তাহলে সেই বইটা যেন আগের বইয়ের চেয়ে আরো ভালো হয়। এরকম যেন মনে না হয় যে, একটা বই লেখা দরকার, কিছু একটা লিখে ফেললাম। কিংবা আর কেউ তো লিখে না, তাই আমি যা খুশি লিখে ফেলি।” তো আমি চেষ্টা করেছি তাঁর উপদেশ মেনে চলতে।
আমার হাইস্কুল জীবন কেটেছে ঢাকার এ কে হাই স্কুলে। সেখানে আমার অন্যতম প্রিয় শিক্ষক ছিলেন ইসলাম স্যার (বিজ্ঞান ও গণিত) ও এরশাদ উল্যাহ স্যার (ইংরেজি)। স্কুল জীবনের পরে দুয়েকবার এরশাদ উল্যাহ স্যারের সঙ্গে দেখা হলেও ইসলাম স্যারের সঙ্গে দেখা হয় নি। অনেকবার ভেবেছি যে স্যারদের বাসায় গিয়ে দেখা করবো, কিন্তু ঠিক কী উছিলায় যে যাবো, তা খুঁজে বের করতে পারি না। তাই এই বইটি আমি তাঁদেরকে উৎসর্গ করছি। নিশ্চয়ই এবারে বইটি উপহার দেওয়ার ছুঁতোয় স্যারদের সঙ্গে দেখা করতে পারবো।
আশা করি, এ বই লক্ষ লক্ষ বাংলা ভাষাভাষী ছেলেমেয়েকে প্রোগ্রামিংয়ের আনন্দময় জগতের সঙ্গে পরিচিত করাবে। বইটি পড়ে তারা প্রোগ্রামিং শিখতে উৎসাহ পাবে। আর হ্যাঁ, বাংলাদেশের অর্থনীতির যেই চতুর্থ পিলার, সেটি আমাদের ছেলেমেয়েরা একসময় তৈরি করে ফেলবে।
তামিম শাহরিয়ার সুবিন
গ্র্যাব আর অ্যান্ড ডি সেন্টার, সিঙ্গাপুর।
মে, ২০১৭।
পাইথন দিয়ে প্রোগ্রামিং শেখা বই এর - সূচীপত্র ভূমিকা লেখক পরিচিতি অধ্যায় ১ – প্রোগ্রামিং ও পাইথন প্রোগ্রামিং কী?
পাইথন কী?
এই বইটি কাদের জন্য?
পাইথন ইনস্টল করা
অধ্যায় ২ – পাইথন দিয়ে প্রথম প্রোগ্রাম অধ্যায় ৩ – ভ্যারিয়েবল, ডেটা টাইপ ও গাণিতিক অপারেশন অধ্যায় ৪ – কন্ডিশনাল লজিক (Conditional Logic) if স্টেটমেন্ট
লিপ ইয়ার (Leap Year)
অধ্যায় ৫ – টার্টলের সঙ্গে পরিচয় অধ্যায় ৬ – লুপ– একই কাজ অনেকবার লুপের ভেতর লুপ
লিস্টের ওপর লুপ চালানো
while লুপ
break এবং continue
অধ্যায় ৭ – ফাংশন (Function) অধ্যায় ৮ – স্ট্রিং নিয়ে কাজকারবার অধ্যায় ৯ – পাইথনের বিভিন্ন ডেটা স্ট্রাকচার লিস্ট (list)
লিস্ট কমপ্রিহেনশনস (list comprehensions)
টাপল (Tuple)
সেট (set)
ডিকশনারি (Dictionary)
অধ্যায় ১০ – মজার কিছু প্রোগ্রাম Random নম্বর
সংখ্যার খোঁজ
মৌলিক সংখ্যা (Prime Number)
টার্টল দিয়ে আঁকিবুঁকি
ফিবোনাচ্চি সংখ্যা (Fibonacci Number)
অধ্যায় ১১ – আরো বেশি প্রোগ্রামিং পরিশিষ্ট
উইন্ডোজে পাইথন ইনস্টল করা
ইনডেনটেশন কীভাবে করতে হয়