প্রোগ্রামিং ফাংশন (Function)

প্রোগ্রামিং ফাংশন (Function)
তোমরা কি একটি মজার ব্যাপার জানো? একজন লেখক সারা জীবনে যতটা সময় লেখেন তার চেয়ে বেশি সময় তিনি অন্যের লেখা পড়েন? ব্যাপারটি প্রোগ্রামারদের বেলাতেও সত্য। একজন প্রোগ্রামার তার প্রোগ্রামিং জীবনে যতটা সময় নিজে কোড লেখে তার চেয়ে বেশি সময় অন্যের লেখা কোড পড়ে! তাই কোড লিখার সময় খেয়াল রাখতে হবে, যেন সেটি পড়াও সুবিধাজনক হয়।
যারা বইটি শুরু থেকে পড়ে এসেছ তারা ইতিমধ্যে অনেকবার ফাংশন শব্দটি দেখেছ। যারা আরও বেশি মনোযোগ দিয়ে পড়েছ তারা এটিও খেয়াল করেছ যে printf, scanf ইত্যাদি, যেগুলো তোমরা ব্যবহার করছ সেগুলো একেকটি ফাংশন। আবার mainও একটি ফাংশন। আমরা এবার দেখব ফাংশন ব্যাপারটি আসলে কী, এর দরকারটাই বা কী। আর তারপর আমরা নিজেদের ফাংশন তৈরি করা শিখব।
ফাংশন ব্যবহার করা হয় কোনো একটি নির্দিষ্ট কাজ করার জন্য। যেমন printf ফাংশনটি দিয়ে আমরা মনিটরে আউটপুট দিই। আবার scanf, getchar এসব ফাংশন দিয়ে আমরা কিবোর্ড থেকে ইনপুট নিই। এখন printf ফাংশনটি যে আমরা লিখলাম, কম্পিউটারের তো আর এটি বোঝার কথা নয়। printf ফাংশনটি কী কাজ করবে, কীভাবে করবে সেটি আসলে বলে দেওয়া আছে stdio.h নামের একটি হেডার (header) ফাইলের মধ্যে। এজন্যই আমরা আমাদের প্রোগ্রামগুলোতে (যেখানে printf, scanf ইত্যাদি ব্যবহার করেছি) ওই হেডার ফাইলটির কথা বলে দিই (#include )। আবার স্ট্রিং-সংক্রান্ত ফাংশনগুলো ব্যবহার করলে string.h – এই হেডার ফাইলটির কথাও বলে দিই। এখন চিন্তা করো, printf ফাংশনের এই কোডটি যদি আমাদের নিজেদের লিখতে হতো, তাহলে ব্যাপারটি কী বিরক্তিকরই না হতো! এরকম অনেক ফাংশন আছে যেগুলোর ব্যবহার তোমরা আস্তে আস্তে জেনে যাবে।
আচ্ছা, main কে ও তো আমি একটি ফাংশন বলেছি, কিন্তু এটি দিয়ে আমরা আবার কী করি? সি ল্যাঙ্গুয়েজে এই ফাংশনটি দিয়েই আসলে আমরা একটি প্রোগ্রাম চালাই। কম্পাইলার জানে যে main ফাংশন যেখানে আছে, সেখান থেকেই কাজ শুরু করতে হবে। তাই একটি প্রোগ্রামে কেবল একটিই main ফাংশন থাকে।
এবারে দেখি, আমরা নিজেরা কীভাবে ফাংশন তৈরি করতে পারি। একটি ফাংশন যখন আমরা তৈরি করব সেটির গঠন হবে মোটামুটি এই রকম:
return_type function_name (parameters) { function_body return value }
return_type: এখানে বলে দিতে হবে ফাংশনটি কাজ শেষ করে বের হবার সময় কী ধরনের ডাটা রিটার্ন করবে। সেটি, int, double এসব হতে পারে। আবার কিছু রিটার্ন করতে না চাইলে সেটি void হতে পারে। অর্থাৎ সে কিছুই রিটার্ন করবে না। এর মানে দাঁড়াচ্ছে, তুমি আসলে ফাংশনকে দিয়ে কোনো একটি কাজ করাবে, সেজন্য কাজ শেষে সে তোমাকে কী ধরনের ডাটা ফেরত দেবে সেটি বলে দিতে হবে। ফাংশনের কোনো জায়গাতে তুমি যখনই return ব্যবহার করবে, ফাংশনটি সেই জায়গা থেকেই রিটার্ন করবে বা বের হয়ে যাবে। অনেক ফাংশনের ভেতর দেখবে একাধিক রিটার্ন আছে এবং সঙ্গে বিভিন্ন শর্ত দেওয়া আছে। শর্তের উপর নির্ভর করে যখনই প্রোগ্রামটি কোনো রিটার্ন পাবে তখনই ফাংশন থেকে বের হয়ে যাবে।
function_name: এখানে আমাদের ফাংশনের নাম লিখতে হবে। ফাংশনের নাম হতে হবে অর্থপূর্ণ যাতে নাম দেখেই ধারনা করা যায় যে ফাংশনটি কী কাজ করবে। যেমন কোন সংখ্যার বর্গমূল নির্ণয়ের জন্য যদি আমরা একটি ফাংশন লিখি তবে সেটির নাম আমরা দিতে পারি square_root বা sqrt। আমরা নিশ্চয়ই সেটির নাম beautiful দিব না, যদিও কম্পাইলার তাতে কোন আপত্তি করবে না।
parameters: এখানে ফাংশনটি কাজ করার জন্য প্রয়োজনীয় ডাটা আমরা দেব। যেমন স্ট্রিং-এর দৈর্ঘ্য নির্ণয়ের জন্য আমরা যখন strlen ফাংশনটি ব্যবহার করি সেখানে কোন স্ট্রিং-এর দৈর্ঘ্য নির্ণয় করতে হবে সেটি বলে দিতে হয় (নইলে সেটি কার দৈর্ঘ্য নির্ণয় করবে?)। আবার বর্গমূল নির্ণয়ের জন্য ফাংশন লিখলে কোন সংখ্যার বর্গমূল বের করতে হবে সেটি বলে দিতে হবে। প্যারামিটারের মাধ্যমে আমরা সেসব ডাটা ওই ফাংশনের কাছ পাঠাতে পারি। আবার কোনো কিছু পাঠাতে না চাইলে সেটি খালিও রাখতে পারি। যেমন, getchar() বা main() ফাংশন। একাধিক প্যারামিটার পাঠানোর সময় প্রতিটি প্যারামিটার কমা (,) দিয়ে আলাদা করতে হবে।
function_body: ফাংশনটি কীভাবে কী কাজ করবে সেটি বডিতে বলে দিতে হবে। মানে কোড লিখতে হবে আর কি।
return value: ফাংশনটি কাজ শেষ করে, তাকে যে জায়গা থেকে কল করা হয়েছে সে জায়গায় ফিরে যায়। ফেরার সময় আমরা কোনো মান পাঠাতে পারি। যেমন sqrt() ফাংশনে আমরা চাই সে বর্গমূল বের করবে। তো বর্গমূলটি বের করে তো সেটি ফেরত পাঠাবার ব্যবস্থা রাখতে হবে? বর্গমূলটির মান যদি x হয়, তবে আমরা return x; স্টেটমেন্ট দিয়ে সেটির মান ফেরত পাঠাব।
int root = sqrt(25);
এখানে sqrt ফাংশন 25-এর বর্গমূল নির্ণয় করার পর বর্গমূলটি ফেরত পাঠাবে এবং সেটি root নামের একটি ইন্টিজার ভেরিয়েবলে জমা হবে।
একটি উদাহরণ দিই। তোমরা যারা ত্রিকোণমিতি পড়েছ তারা নিশ্চয়ই sin, cos, tan ইত্যাদির সঙ্গে পরিচিত। sin 300-এর মান হচ্ছে 0.5। এখানে sin কিন্তু আসলে একটি ফাংশন, যার প্যারামিটার হিসেবে আমরা কোণের মান দিচ্ছি। আর ফাংশনটি ওই কোণের sine (সংক্ষেপে sin)-এর মান রিটার্ন করছে।
এবারে চলো, আর বকবক না করে প্রোগ্রামিং শুরু করে দিই। তারপর দেখি কী করলে কী হয়।
#include <stdio.h> int main() { double a, b, c; a = 2.5; b = 2.5; c = a + b; printf("%lf\n" c); return 0; } প্রোগ্রাম: ৭.১
প্রোগ্রামটি চালাও। আউটপুট কী? 5.000000।
এবার আমরা দুটি সংখ্যা যোগ করার জন্য একটি ফাংশন লিখে ফেলি। যোগের কাজটি আর main ফাংশনের ভেতরে করব না।
#include <stdio.h> int add(int num1, int num2) { double sum = num1 + num2; return sum; } int main() { double a, b, c; a = b = 2.5; c = add(a, b); printf("%lf\n", c); return 0; } প্রোগ্রাম: ৭.২
প্রোগ্রামটি চালাও। আউটপুট কী? 4.000000! ওহ‍্‍ আমরা তো গাধার মতো একটি ভুল করেছি। num1 ও num2 তো আসলে int টাইপের হবে না, double টাইপের
হবে না, double টাইপের হবে। ওই দুটি ভেরিয়েবল ইন্টিজার হিসেবে ডিক্লেয়ার করার কারণে 2.5 হয়ে গিয়েছে 2 (টাইপ কাস্টিংয়ের কথা মনে আছে তো?)। আমরা ভুল ঠিক করে ফেলি:
int add(double num1, double num2) { double sum = num1 + num2; return sum; }
এবারে প্রোগ্রামটি রান করলে আউটপুট কী? 5.000000। যাক, সমস্যার সমাধান হয়ে গেল! আচ্ছা, এবারে আমরা a, b-এর মান একটু বদলাই। a = 2.8; b = 2.7; করে দিই। আউটপুট কত হবে? 5.500000? এটিই হওয়া উচিত (2.8 + 2.7 = 5.5) কিন্তু প্রোগ্রামটি রান করে দেখো তো কত হয়? তুমি আউটপুট পাবে 5.000000। কারণ কী?
কারণ, আমাদের ফাংশনের রিটার্ন টাইপ int, যা কিনা একটি ইন্টিজার রিটার্ন করতে সক্ষম। num1 ও num2 যোগ করার পর sum-এর মধ্যে 5.5 ঠিকই থাকবে কিন্তু রিটার্ন করার সময় সেটি ইন্টিজারে বদলে যাবে। সুতরাং রিটার্ন টাইপ আমরা double করে দেব। এবার আমাদের প্রোগ্রাম ঠিকঠাক কাজ করবে:
#include <stdio.h> double add(double n1, double n2) { double sum = n1 + n2; return sum; } int main() { double a, b, c; a = 2.8; b = 2.7; c = add(a, b); printf("%lf\n", c); return 0; } প্রোগ্রাম: ৭.৩
এখন আমরা একটি এক্সপেরিমেন্ট করব। add ফাংশনটি main ফাংশনের পরে লিখব:
#include <stdio.h> int main() { double a = 2.8, b = 2.7, c; c = add(a, b); printf("%lf\n", c); return 0; } double add(double n1, double n2) { double sum = n1 + n2; return sum; } প্রোগ্রাম: ৭.৪
এবারে প্রোগ্রামটি রান করতে গেলে দেখবে, কম্পাইলার এরর দিচ্ছে: "error: ‘add’ was not declared in this scope", অর্থাৎ সে আর add ফাংশনটিকে চিনতে পারছে না। তবে চিন্তা নেই, এটিকে চিনিয়ে দেওয়ার ব্যবস্থাও আছে। সেটি হচ্ছে main ফাংশনের আগে add ফাংশনের প্রোটোটাইপ (prototype) বলে দেওয়া:
double add(double n1, double n2);
প্রোটোটাইপে পুরা ফাংশনটি লিখতে হয় না। এর অংশগুলো হচ্ছে:
return_type function_name (parameters) ;
সেমিকোলন দিতে ভুল করবে না কিন্তু। আর প্রোটোটাইপের প্যারামিটারে যে ভেরিয়েবল ব্যবহার করবে তার সঙ্গে মূল ফাংশনের ভেরিয়েবলের নাম একরকম না হলে কোনো অসুবিধা নেই, তবে ডাটা টাইপ একই হতে হবে। এখন নিচের প্রোগ্রামটি ঠিকঠাক কাজ করবে:
#include <stdio.h> double add(double x, double y); int main() { double a = 2.8, b = 2.7, c; c = add(a, b); printf("%lf\n", c); return 0; } double add(double n1, double n2) { double sum = n1 + n2; return sum; } প্রোগ্রাম: ৭.৫
এবার আমরা আরও কিছু পরীক্ষা-নিরীক্ষা করব
।
#include <stdio.h> int test_function(int x) { int y = x; x = 2 * y; return (x * y); } int main() { int x = 10, y = 20, z = 30; z = test_function(x); printf("%d %d %d\n", x, y, z); return 0; } প্রোগ্রাম: ৭.৬
প্রোগ্রামটি না চালিয়ে শুধু কোড দেখে বলো তো আউটপুট কী হবে? আমাদের কোনো তাড়া নেই, তাই ধীরেসুস্থে চিন্তা করে বলো।
এবার কে কে আমার সঙ্গে একমত যে আউটপুট হবে: 20 10 200 (অর্থাৎ x = 20, y = 10, z = 200)?
কারণ x, y-এর মান তো test_function-এর ভেতরে আমরা বদলে দিয়েছি। প্রথমে x-এর মান 10 যাচ্ছে প্যারামিটার হিসেবে, তারপরে সেই মানটি আমরা y-তে বসাচ্ছি। মানে y-এর মান এখন 10। তারপর x-এর মান বসাচ্ছি 2 * y মানে 20। তারপর রিটার্ন করছি x * y (যার মান, 20 * 10 বা 200)। সুতরাং z-এর মান হবে 200।
এবারে প্রোগ্রামটি চালাও, আউটপুট দেখবে: 10 20 200 (অর্থাৎ x = 10, y = 20, z = 200)। এমন হওয়ার কারণ কী? z-এর মান নিয়ে কোনো আপত্তি নেই, ফাংশনটি 200 রিটার্ন করে আর সেটি আমরা z-এ বসিয়ে দিয়েছি। কথা হচ্ছে, x আর y-এর মান নিয়ে। আসলে test_function-এর ভেতরে আমরা x, y-এর মান পরিবর্তন করায় main ফাংশনের x, y-এর কিছু আসে-যায় না। প্রত্যেক ফাংশনের ভেরিয়েবলগুলো আলাদা। একে বলে লোকাল ভেরিয়েবল (local variable)। আমরা main ফাংশনের x, y-এর মান প্রিন্ট করেছি test_function ফাংশনের x, y-এর মান প্রিন্ট করিনি। এক ফাংশনের লোকাল ভেরিয়েবলের অস্তিত্ব অন্য ফাংশনে থাকে না। তুমি এখন কিছু প্রোগ্রাম লিখে আরও পরীক্ষা-নিরীক্ষা করে দেখতে পারো। কী প্রোগ্রাম লিখবে সেটি তোমার ওপর ছেড়ে দিলাম।
আমরা যদি চাই, কোনো ভেরিয়েবলের অস্তিত্ব আমাদের প্রোগ্রামের সব ফাংশনের ভেতরে থাকতে হবে, তবে আমরা সেটি করতে পারি গ্লোবাল (global) ভেরিয়েবল ডিক্লেয়ার করার মাধ্যমে। আমরা প্রোগ্রামের শুরুতে কোনো ফাংশন বা ফাংশনের প্রোটোটাইপ লিখার আগে সেগুলো ডিক্লেয়ার করে দেব। যেমন:
#include <stdio.h> double pi = 3.14; void my_fnc() { pi = 3.1416; /* এখানে আমরা pi-এর মান একটু পরিবর্তন করে দিলাম */ return; /* ফাংশনের রিটার্ন টাইপ void হলে এই return; না দিলেও কিন্তু চলে */ } int main() { printf("%lf\n", pi); /* এখানে pi-এর মান হবে 3.14 */ my_fnc(); printf("%lf\n", pi); /* এখানে pi-এর মান হবে 3.1416 কারণ আমরা সেটি my_fnc ফাংশনে গিয়ে বদলে দিয়েছি। */ return 0; }
আবার আমরা যদি my_fnc ফাংশনের ভেতরে গিয়ে pi নামে একটি ভেরিয়েবল ডিক্লেয়ার করতাম (double pi;), তবে সেটি একটি লোকাল ভেরিয়েবল হতো এবং গ্লোবাল pi-এর মানের কোন পরিবর্তন হতো না।
এতক্ষণ আমরা ফাংশনের প্যারামিটার হিসেবে কেবল ভেরিয়েবল ব্যবহার করেছি। এবারে আসো আমরা ফাংশনের প্যারামিটার হিসেবে অ্যারে পাঠাই। আমরা একটি প্রোগ্রাম লিখব যেটি কোনো একটি ইন্টিজার অ্যারে থেকে সবচেয়ে বড় সংখ্যাটি খুঁজে বের করবে। অ্যারে থেকে সর্বোচ্চ সংখ্যা খুঁজে বের করার কাজটি করার জন্য একটি ফাংশন লিখে ফেলি, কী বলো?
int find_max(int ara[], int n) { /* এখানে আমরা দুটি প্যারামিটার দিচ্ছি। প্রথমটা হচ্ছে একটি অ্যারে, আর তারপর একটি সংখ্যা যেটি নির্দেশ করবে অ্যারেতে কয়টি সংখ্যা আছে। লক্ষ করো, প্যারামিটারে যখন অ্যারের কথাটি বলে দিচ্ছি তখন সেখানে কয়টি উপাদান আছে সেটি না দিলেও চলে, যেমন আমরা int ara[11] ও লিখতে পারতাম। */
int max = ara[0]; /* এখানে একটি ভেরিয়েবলে ধরে নিচ্ছি যে সবচেয়ে বড় সংখ্যাটি হচ্ছে অ্যারের প্রথম সংখ্যা। তারপরে আমরা অ্যারের বাকি উপাদানগুলোর সঙ্গে maxকে তুলনা করব আর যদি অ্যারের কোনো উপাদানের মান max-এর চেয়ে বড় হয় তখন সেই মানটি max-এ রেখে দেব। অর্থাৎ তখন আবার max হয়ে যাবে ওই অ্যারের সর্বোচ্চ সংখ্যা। */
int i; for(i = 1; i < n; i++) { if (ara[i] > max) { max = ara[i]; /* ara[i] যদি max-এর চেয়ে বড় হয় তবে max-এ ara[i]-এর মানটি অ্যাসাইন করে দিচ্ছি। */ } } return max; /* ফাংশন থেকে সর্বোচ্চ মানটি ফেরত পাঠাচ্ছি */ }
এখন কথা হচ্ছে এই ফাংশনকে আমরা কল করব কীভাবে? ভেরিয়েবলের জায়গায় তো এর নাম দিয়ে কল করতে হয়, কিন্তু অ্যারের বেলায় কী দেব? অ্যারের বেলাতেও শুধু নাম দিলেই চলবে। পুরো প্রোগ্রামটি এবারে রান করে দেখো:
#include <stdio.h> int find_max(int ara[], int n); int main() { int ara[] = {-100, 0, 53, 22, 83, 23, 89, -132, 201, 3, 85}; int n = 11; int max = find_max(ara, n); printf("%d\n", max); return 0; } int find_max(int ara[], int n) { int max = ara[0]; int i; for(i = 1; i < n; i++) { if (ara[i] > max) { max = ara[i]; } } return max; } প্রোগ্রাম: ৭.৭
এখন তোমরা find_min নামে আরেকটি ফাংশন লেখো যার কাজ হবে সবচেয়ে ছোট সংখ্যাটি খুঁজে বের করা। find_sum, find_average এসব ফাংশনও লিখে ফেলতে পারো। আর তোমাদের নিশ্চয়ই বলে দিতে হবে না এইসব ফাংশন কী কাজ করবে।
ফাংশনে ভেরিয়েবল পাস করা (pass, পাঠানো অর্থে) আর অ্যারে পাস করার মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে। আমরা ইতিমধ্যে দেখেছি যে ফাংশনের ভেতর ভেরিয়েবল পাস করলে ওই ফাংশনের ভেতরে সেটির আরেকটি কপি তৈরি হয়, সুতরাং সেখানে ওই ভেরিয়েবলের মান পরিবর্তন করলে মূল ফাংশন (যেখান থেকে ফাংশন কল করা হয়েছে) ভেরিয়েবলের মানের কোনো পরিবর্তন হয় না। তবে অ্যারের বেলায় ব্যাপারটি আলাদা। আগে আমরা একটি প্রোগ্রাম লিখে দেখি:
#include <stdio.h> void test_function(int ara[]) { ara[0] = 100; return; } int main() { int ara [] = {1, 2, 3, 4, 5}; printf("%d\n", ara[0]); test_function(ara); printf("%d\n", ara[0]); return 0; } প্রোগ্রাম: ৭.৮
এই প্রোগ্রামের আউটপুট কী হবে? প্রথম printf ফাংশনটি 1 প্রিন্ট করবে সেটি নিয়ে তো কোনো সন্দেহ নেই, কিন্তু দ্বিতীয় printf কী প্রিন্ট করবে? test_function-এর ভেতর আমরা অ্যারের প্রথম উপাদানের মান 100 অ্যাসাইন করেছি। এখন যদি সেটি মূল অ্যারেকে পরিবর্তন করে, তবে ara[0]-এর মান হবে 100, আর পরিবর্তন না হলে মান হবে আগে যা ছিল তা-ই, মানে 1।
আমরা আউটপুট দেখব 100, কারণ অ্যারেটির প্রথম উপাদানের মান পরিবর্তিত হয়েছে। অর্থাৎ আমরা বুঝতে পারলাম ফাংশনের ভেতরে অ্যারে পাস করলে ওই অ্যারের আলাদা কোনো কপি তৈরি হয় না। কারণ হচ্ছে আমরা ফাংশনের ভেতর অ্যারের নামটি কেবল পাঠাই, যেটি কিনা ওই অ্যারেটি মেমোরির কোন জায়গায় আছে তার অ্যাড্রেস। এখন তোমরা বৃত্তের ক্ষেত্রফল নির্ণয়ের জন্য একটি ফাংশন লিখে ফেলো। ক্ষেত্রফল বের করার সূত্রটি মনে আছে তো? মনে না থাকলে জ্যামিতি বই থেকে দেখে নাও
Share:

মেয়েদের বিষয়ে কিছু আশ্চর্যজনক তথ্য !

মেয়েদের বিষয়ে কিছু আশ্চর্যজনক তথ্য 
প্রতি ৯০ সেকেন্ডে গর্ভপাত ও সন্তান জন্মদানের কারনে একজন মহিলা মৃত্যুবরন করেন।
মেয়েরা বছরে প্রায় ৩০ থেকে ৬৪ বার কান্নাকাটি করে আর ছেলেরা ০৬ থেকে ১৭ বার কান্না করে।
রাশিয়ায় পুরুষের তুলনায় নারীর সংখ্যা প্রায় নয় লক্ষ বেশি।
মেয়েরা তাদের সম্পূর্ণ জীবনের প্রায় এক বছরের মত সময় শুধুমাত্র কোন কাপড়টি পরিধান করবে তা চিন্তা করেই কাটিয়ে দেন।
মেয়েরা দিনে গড়ে প্রায় ২০০০০ শব্দের ব্যাবহার করে কথা বলার জন্য। যেখানে ছেলেরা গড়ে মাত্র ৭০০০ শব্দ ব্যাবহার করে।
মেয়েরা দিনে তিন বার মিথ্যা বললে, ছেলেরা দিনে ছয় বার মিথ্যা কথা বলে।
বিশ্বের সব থেকে কম বয়সে ডিভোর্সপ্রাপ্ত নারীর বয়স ছিল মাত্র ১০ বছর।
যেসব নারীদের হার্ট ও বুকে ব্যথার সমস্যা রয়েছে, তাদের বিষণ্ণতা, বদহজম ও কাঁধে ব্যথার সমস্যাও রয়েছে।
মহিলাদের হৃদকম্পন পুরুষের তুলনায় বেশি। একই সময়ে পুরুষের তুলনায় মহিলাদের হৃদকম্পনের পরিমান বেশি ও দ্রুত। এর কোন বৈজ্ঞানিক ব্যাখ্যা এখনও জানা যায় নি।
ছেলেদের তুলনায় মেয়েরা স্বাদ পরীক্ষায় বেশি পারদর্শী।
লম্বা নারীদের ক্যান্সার হওয়ার ঝুঁকি বেশি।
মহিলাদের মৃত্যুর প্রধান কারন হৃদরোগ। তাই কোন নারী যদি কখনো বলে যে তার হার্ট নেই, তাহলে বিশ্বাস করবেন না।
সকল মহিলারাই সুন্দর। শুধু কমতি আছে আত্মবিশ্বাসের। তাই নিজের আত্মবিশ্বাস বৃদ্ধি করুন। পৃথিবীতে মাত্র ২ শতাংশ নারী নিজেকে সুন্দর বলে মনে করেন ও প্রকাশ করেন।
মেয়েরা এক মিনিটে প্রায় ১৯ বার তাদের চোখের পলক ঝাপটায়। যেখানে ছেলেরা মাত্র ১১ বার। নিজে পরীক্ষা করে দেখতে পারেন।
মেয়েরা প্রচুর পরিমানে স্বপ্ন দেখে। একটি মেয়েকে স্বপ্নের কথা জিজ্ঞেস করলে তার কাছে বলার জন্য অনেক গল্প পাবেন, কিন্তু একজন পুরুষকে কাল রাতের স্বপ্নের কথা জিজ্ঞেস করলে সে বলতে পারবে না।
Share:

দাড়ি কাটতে গিয়ে রক্তপাত

দাড়ি কাটতে গিয়ে রক্তপাত
 গজ বা পরিষ্কার রুমাল দিয়ে জায়গাটা চেপে ধরুন কিছুক্ষণ, রক্তপাত বন্ধ না হওয়া পর্যন্ত।
চিকিৎসা
* ফিটকিরি পানিতে ভিজিয়ে লাগান।
* গাঁদা ফুলের পাপড়ি হাতে ঘষে লাগালে রক্ত পড়া বন্ধ হবে।
* রক্তজবার কুঁড়ি হাতে ঘষে লাগালেও রক্ত পড়া বন্ধ হবে।
hi
গরম কিছু খেয়ে জিভ পোড়া জিভে বরফ ঘষুন।
চিকিৎসা
* মধু ও কর্পূর মিশিয়ে লাগান।
* গোলাপজল ও লবঙ্গ তেল ২ ফোঁটা একসঙ্গে মিশিয়ে লাগালে উপকার পাবেন।
* মাখন, মধু ও গুড় একত্রে মিশিয়ে লাগালেও জ্বালা কমবে।
Share:

বৈদ্যুতিক শকের চিকিৎসা

বৈদ্যুতিক শকের চিকিৎসা
 আপনি কখনো খালি হাতে বিদ্যুতায়ন হয়া ব্যক্তিকে স্পর্শ করবে না , যদি করে এতে আপনাকে দেহে বিদ্যুতায়ন হয়ে যাবে । এ সময় নিচের ফাস্ট এইড বা প্রাথমিক চিকিৎসা গুলো দিতে ভুলবেন না যথা ,
* বিদ্যুতায়ন ব্যক্তির শাস প্রশাস সাভাবিক না হয়া পর্যন্ত কৃতিম শাস প্রশাস প্রক্রিয়া চালু রাখতে হবে ।
* গলা , বুক ও কোমরের কাপড় আলগা করে দিতে হবে ।
* যেই স্থান পোড়া গেছে তাতে জরুরী চিকিৎসা দিতে হবে ।
* স্নায়বিক আঘাতের চিকিৎসা চালাতে হবে , এবং
* যত দ্রুত সম্ভব ডাক্তারের কাছে নিতে হবে বা হাসপাতালে নিতে হবে ।
Share:

প্রোগ্রামিং অ্যারে

প্রোগ্রামিং অ্যারে
এতক্ষণে তোমাদের প্রোগ্রামিং জ্ঞান-বুদ্ধি একটু বেড়েছে। চলো, এবার তাহলে কিছু জনসেবামূলক কর্মকাণ্ড করা যাক। আমরা স্কুলের প্রিয় গণিত শিক্ষকের জন্য পরীক্ষার ফলাফল বের করার প্রোগ্রাম লিখে দেব। ওই স্কুলে প্রথম সাময়িক, দ্বিতীয় সাময়িক ও বার্ষিক এই তিনটি পরীক্ষাই 100 নম্বরের হয়। তারপর বার্ষিক পরীক্ষার 50%, দ্বিতীয় সাময়িক পরীক্ষার 25% ও প্রথম সাময়িক পরীক্ষার 25% নিয়ে চূড়ান্ত ফলাফল প্রকাশ করা হয়। তাহলে আমাদের প্রোগ্রামের ইনপুট হচ্ছে ওই তিনটি পরীক্ষার নম্বর। আমাদেরকে চূড়ান্ত ফলাফল দেখাতে হবে। এটি কোনো ব্যাপারই নয়:
#include <stdio.h> int main() { int ft_marks, st_marks, final_marks; double total_marks; ft_marks = 80; st_marks = 74; final_marks = 97; total_marks = ft_marks / 4.0 + st_marks / 4.0 + final_marks / 2.0; printf("%0.0lf\n", total_marks); return 0; } প্রোগ্রাম: ৬.১
প্রোগ্রামটির আউটপুট 87। (কিন্তু আমি যদি total_marks = ft_marks / 4.0 + st_marks / 4.0 + final_marks / 2.0; না লিখে এভাবে লিখতাম total_marks = ft_marks / 4 + st_marks / 4 + final_marks / 2; তাহলে আউটপুট আসে 86। কারণ কী? কম্পিউটারের মাথা খারাপ নাকি আমার?)
আমরা কিন্তু আমাদের প্রিয় শিক্ষকের তেমন কোনো উপকার করতে পারলাম না। কারণ তাঁর ক্লাসে মোট ছাত্রছাত্রীর সংখ্যা চল্লিশ। তাহলে স্যারকে চল্লিশবার প্রোগ্রামটি চালাতে হবে! কিন্তু এটি তো কোনো কাজের কথা হলো না। আমাদের উচিত, সবার চূড়ান্ত ফলাফল একটি প্রোগ্রামের মাধ্যমে নির্ণয় করা। তেমন কোনো কঠিন কাজ নয় এটি। আমরা এমন একটি প্রোগ্রাম লেখা শুরু করে দিতে পারি:
#include
int main() { int ft_marks_1, st_marks_1, final_marks_1, ft_marks_2, st_marks_2, final_marks_2, ft_marks_3, st_marks_3, final_marks_3,
তোমরা নিশ্চয়ই বুঝতে পারছ, আমি কী করতে যাচ্ছি? বলো তো এভাবে প্রোগ্রামটি লিখতে গেলে মোট কয়টি ভেরিয়েবলের দরকার? 160টি। স্যারের কষ্ট কমাতে গিয়ে আমাদের কষ্ট এত বাড়ানোর কোনো মানে হয় না। কিন্তু এধরনের প্রোগ্রাম তো আমাদের প্রায়ই লিখতে হবে। চিন্তা নেই! প্রায় সব প্রোগ্রামিং ল্যাংগুয়েজেই অ্যারে (Array) নামে একটি চমৎকার জিনিস আছে। এতে একই ধরনের অনেকগুলো ভেরিয়েবল একসঙ্গে রাখা যায়। ভেরিয়েবলের যেমন নাম রাখি, অ্যারের বেলাতেও তেমন একটি নাম দিতে হয়। Cতেও অ্যারে আছে।
ভেরিয়েবলের যেমন একটি ডাটা টাইপ থাকে, অ্যারেরও থাকে। অ্যারেটি যে ডাটা টাইপের হবে তাতে কেবল সেই রকম ডাটাই রাখা যাবে। যেমন char টাইপের অ্যারেতে কেবল char টাইপের জিনিস থাকবে।
অ্যারেতে কয়টি উপাদান থাকবে সেটি শুরুতেই বলে দিতে হয়। int ara[10]; এভাবে আমরা একটি অ্যারে ডিক্লেয়ার করতে পারি, যার নাম হচ্ছে ara, যেটিতে কেবল ইন্টিজার টাইপের ডাটা থাকবে আর এই অ্যারেতে মোট দশটি সংখ্যা রাখা যাবে। প্রথমটি হচ্ছে ara[0] (হ্যাঁ, ara[1] না কিন্তু), দ্বিতীয়টি ara[1], তৃতীয়টি ara[2], এভাবে দশম সংখ্যাটি হচ্ছে ara[9]। অর্থাৎ, ara[i] হচ্ছে i+1তম উপাদান।
এবারে চলো অ্যারে নিয়ে একটু খেলাধুলা করা যাক। প্রতিটি প্রোগ্রাম কিন্তু অবশ্যই কম্পিউটারে চালিয়ে দেখবে।
#include <stdio.h> int main() { int ara[5] = {10, 20, 30, 40, 50}; printf("First element: %d\n", ara[0]); printf("Third element: %d\n", ara[2]); return 0; } প্রোগ্রাম: ৬.২
আউটপুট ঠিকঠাক দেখতে পাচ্ছ?
আরেকটি প্রোগ্রাম:
#include <stdio.h> int main() { int ara[5] = {6, 7, 4, 6, 9}; printf("%d\n", ara[-1]); printf("%d\n", ara[5]); printf("%d\n", ara[100]); return 0; } প্রোগ্রাম: ৬.৩
এটির জন্য কী আউটপুট আসা উচিত? আমি জানি না এবং এটি জানা সম্ভব নয়। যেকোনো ধরনের সংখ্যা আসতে পারে। এগুলোকে গারবেজ (garbage) বলে। কারণ আসলে তো ওই অ্যারেতে -1, 5, 100 এই ইনডেক্স বলতে কিছু নেই। অ্যারেটির দৈর্ঘ্যই হচ্ছে 5 সুতরাং ইনডেক্স হবে 0 থেকে 4।
এখন কোনো অ্যারের সব উপাদান যদি একসঙ্গে দেখাতে চাই, তাহলে উপায় কী? উপায় হচ্ছে প্রথম উপাদান (ara[0]), দ্বিতীয় উপাদান (ara[1]), তৃতীয় উপাদান (ara[2]) … এভাবে একে একে সবগুলো প্রিন্ট করা। আর তার জন্য অবশ্যই আমরা লুপের সাহায্য নেব।
#include <stdio.h> int main() { int ara[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; int i; for(i = 0; i < 10; i++) { printf("%d th element is: %d\n", i+1, ara[i]); } return 0; } প্রোগ্রাম: ৬.৪
আর যদি শেষ উপাদান থেকে প্রথম উপাদান পর্যন্ত দেখাতে হতো? কোনো সমস্যা নেই, শুধু লুপে এ indexটি 9 থেকে 0 পর্যন্ত আনলেই চলবে। এখন তোমরা প্রোগ্রামটি লিখে ফেলো।
এবারে একটি ছোট সমস্যা। কোনো একটি অ্যারেতে দশটি উপাদান আছে, সেগুলো বিপরীত ক্রমে রাখতে হবে। অর্থাৎ দশম উপাদানটি হবে প্রথম উপাদান, প্রথমটি হবে দশম, দ্বিতীয়টি হবে নবম, নবমটি হবে দ্বিতীয়.. এই রকম। তার জন্য আমরা যেটি করতে পারি, আরেকটি অ্যারের সাহায্য নিতে পারি। দ্বিতীয় অ্যারেটিতে প্রথম অ্যারের উপাদানগুলো বিপরীত ক্রমে রাখবো। তারপর দ্বিতীয় অ্যারেটি প্রথম অ্যারেতে কপি করে ফেলব।
#include <stdio.h> int main() { int ara[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; int ara2[10]; int i, j; for(i = 0, j = 9; i < 10; i++, j--) { ara2[j] = ara[i]; } for(i = 0; i < 10; i++) { ara[i] = ara2[i]; } for(i = 0; i < 10; i++) { printf("%d\n", ara[i]); } return 0; } প্রোগ্রাম: ৬.৫
এখানে লক্ষ করো যে
প্রথম অ্যারেটির ক্ষেত্রে আমি তৃতীয় বন্ধনীর ভেতর অ্যারের উপাদান সংখ্যা বলে দিইনি, কারণ সি-এর কম্পাইলার দ্বিতীয় বন্ধনীর ভেতর সংখ্যাগুলো দেখেই বুঝে নিতে পারে যে araতে দশটি উপাদান আছে। দ্বিতীয় অ্যারে অর্থাৎ ara2তে এখন কোনো কিছু নেই। তাই শুরুতেই বলে দিতে হবে যে তাতে কয়টি উপাদান থাকবে। তাহলে কম্পাইলার সেই অনুসারে কম্পিউটারের মেমোরির মধ্যে অ্যারের জন্য জায়গা করে নেবে।
প্রোগ্রামটি ভালোভাবেই কাজ করছে। কিন্তু তোমরা একটু চিন্তাভাবনা করলেই বুঝতে পারবে যে দ্বিতীয় অ্যারেটি ব্যবহার করার কোনো দরকার ছিল না। আমরা একটি বহুল প্রচলিত পদ্ধতিতেই কাজটি করতে পারতাম। int temp; temp = ara[9]; ara[9] = ara[0]; ara[0] = temp; প্রথম ও দশম উপাদান অদলবদল হয়ে গেল। তারপর temp = ara[8]; ara[8] = ara[1]; ara[1] = temp; দ্বিতীয় ও নবম উপাদান অদলবদল হয়ে গেল। তাহলে চলো প্রোগ্রামটি লিখে ফেলি:
#include <stdio.h> int main() { int ara[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; int i, j, temp; for(i = 0, j = 9; i < 10; i++, j--) { temp = ara[j]; ara[j] = ara[i]; ara[i] = temp; } for(i = 0; i < 10; i++) { printf("%d\n", ara[i]); } return 0; } প্রোগ্রাম: ৬.৬
প্রোগ্রামটি চালাও। কী দেখলে? আউটপুট কি এরকম? 10 20 30 40 50 60 70 80 90 100
তারমানে কাজ হয়নি! আসলে আমি একটি ছোট্ট ভুল করেছি, সেটি তোমরা খুঁজে বের করো। এ ধরনের ভুলকে বলে বাগ (bug), তখন প্রোগ্রাম ঠিকমতো রান করে কিন্তু সঠিক আউটপুট দেয় না। আমার কোডে বাগ আছে, তোমরা ডিবাগ (debug) করো (মানে বাগটি বের করে ঠিক করো)।
এখন চলো আমাদের আগের সমস্যায় ফিরে যাই। আমরা এখন প্রথম সাময়িক পরীক্ষায় সবার গণিতের নম্বর একটি অ্যারেতে রাখব, দ্বিতীয় সাময়িক পরীক্ষার নম্বর আরেকটি অ্যারেতে, বার্ষিক পরীক্ষার নম্বরের জন্য আরও একটি এবং রেজাল্টের জন্যও একটি অ্যারে ব্যবহার করব।
int ft_marks[40], st_marks[40], final_marks[40]; double total_marks[40];
যার রোল নম্বর 1 তার নম্বরগুলো থাকবে অ্যারের প্রথম ঘরে (মানে index 0 হবে)। এখন বলো তো total_marks[34]-এ কার সর্বমোট নম্বর আছে? যার রোল নম্বর 35। তাহলে কারও রোল নম্বর n হলে তার সর্বমোট নম্বর হচ্ছে total_marks[n-1]।
এখন প্রোগ্রামটি লিখে ফেলা যাক:
#include <stdio.h> int main() { int ft_marks[40] = {83, 86, 97, 95, 93, 95, 86, 52, 49, 41, 42, 47, 90, 59, 63, 86, 40, 46, 92, 56, 51, 48, 67, 49, 42, 90, 42, 83, 47, 95, 69, 82, 82, 58, 69, 67, 53, 56, 71, 62}, st_marks[40] = {86, 97, 95, 93, 95, 86, 52, 49, 41, 42, 47, 90, 59, 63, 86, 40, 46, 92, 56, 51, 48, 67, 49, 42, 90, 42, 83, 47, 95, 69, 82, 82, 58, 69, 67, 53, 56, 71, 62, 49}, final_marks[40] = {87, 64, 91, 43, 89, 66, 58, 73, 99, 81, 100, 64, 55, 69, 85, 81, 80, 67, 88, 71, 62, 78, 58, 66, 98, 75, 86, 90, 80, 85, 100, 64, 55, 69, 85, 81, 80, 67, 88, 71}; int i; double total_marks[40]; for(i = 0; i < 40; i++) { total_marks[i] = ft_marks[i] / 4.0 + st_marks[i] / 4.0 + final_marks[i] / 2.0; } for(i = 1; i <= 40; i++) { printf("Roll NO: %d\tTotal Marks: %0.0lf\n", i, total_marks[i-1]); } return 0; } প্রোগ্রাম: ৬.৭
রান করে দেখো, কী সুন্দর আউটপুট! printf ফাংশনের ভেতরে দেখো এক জায়গায় আমি \t লিখেছি, এতে ট্যাব (Tab) প্রিন্ট হবে (কিবোর্ডের বাঁ দিকে দেখো)। রোল নং প্রিন্ট করার পরে একটি ট্যাব দিয়ে টোটাল মার্কস প্রিন্ট করলে দেখতে একটু ভালো লাগে এই জন্য \t ব্যবহার করেছি, এমনিতে কোনো দরকার নেই
।
কিন্তু এত সুন্দর প্রোগ্রাম দেখে তোমার শিক্ষক কোথায় তোমাকে একটু চটপটি খাওয়াবেন না উল্টা আরেকটি আবদার করে বসলেন। কোন নম্বর কতজন পেয়েছে সেটি উনি দেখতে চান। মানে 50 কতজন পেল, 51 কতজন পেল … এই রকম আর কি। বাকি অংশ পড়ার আগে প্রোগ্রামটি তোমরা নিজে নিজে লিখার চেষ্টা করো। এখন ইচ্ছা না করলে বইটি পড়া বন্ধ করে দাও এবং পরে কোনো একসময় চেষ্টা করবে।
আশা করি, তোমাদের মধ্যে কেউ কেউ প্রোগ্রামটি লিখে ফেলেছ। যদি কমপক্ষে এক ঘণ্টা চেষ্টার পরেও লিখতে না পারো তাহলে এখন আমরা সমাধানের চেষ্টা করতে পারি। শুরুতেই একটি ব্যাপার খেয়াল করো যে কেউ কিন্তু 50-এর নিচে নম্বর পায়নি। তাই 50 থেকে 100 পর্যন্ত কোন নম্বর কতজন পেল সেটি বের করলেই চলবে। আমার মাথায় প্রথমেই যে সমাধান আসছে সেটি হলো total_marks অ্যারেতে প্রথমে দেখব, কয়টি 50 আছে, তারপর আবার দেখব কয়টি 51 আছে … এভাবে 100 পর্যন্ত দেখব। মানে 50 থেকে 100 পর্যন্ত সব সংখ্যার জন্য total_marks অ্যারেতে সংখ্যাগুলো চেক করব। for(marks = 50; marks <= 100; marks++) { লুপের সাহায্যে প্রথমে marks-এর মান 50, তারপরে 51, এভাবে এক এক করে বাড়াব 100 পর্যন্ত। count = 0; ধরে নিচ্ছি শূন্য জন 'marks' নম্বর পেয়েছে। marks-এর সব কটি মানের জন্যই প্রথমে আমরা এই কাজটি করব। এবারে total_marks অ্যারেতে দেখব যে কোনো নম্বর যদি marks-এর সমান হয়, তবে count-এর মান এক বাড়িয়ে দেব। তাহলে কোনো একটি নম্বর (marks) যতবার অ্যারেতে আছে, count-এর মান তত হবে।   for(i = 0; i < 40; i++) {       if(total_marks[i] == marks) {           count++;       }   }    printf("Marks: %d Count: %d\n", marks, count); এখানে আমরা প্রতিটি marks এবং সেটি  কতবার আছে (count) তা প্রিন্ট করে দিচ্ছি। } তাহলে পুরো প্রোগ্রাম লিখে ফেলি: #include <stdio.h> int main() { int marks, i, count; int total_marks[] = {86, 78, 94, 68, 92, 78, 64, 62, 72, 61, 72, 66, 65, 65, 80, 72, 62, 68, 81, 62, 56, 68, 58, 56, 82, 70, 74, 78, 76, 84, 88, 73, 62, 66, 76, 70, 67, 65, 77, 63}; for(marks = 50; marks <= 100; marks++) { count = 0; for(i = 0; i < 40; i++) { if(total_marks[i] == marks) { count++; } } printf("Marks: %d Count: %d\n", marks, count); } return 0; } প্রোগ্রাম: ৬.৮
তেমন কঠিন কিছু নয়। নেস্টেড ফর লুপ ব্যবহার করে সহজ-সরল সমাধান করে ফেললাম। আচ্ছা বলো তো if-এর ভেতর যে শর্তটি আমরা পরীক্ষা করছি (total_marks[i] == marks) এই কাজটি প্রোগ্রামে কতবার হয়? বাইরের লুপটি ঘুরবে 51 বার এবং প্রতিবারের জন্য ভেতরের লুপটি ঘুরবে 40 বার। তাহলে মোট 51 x 40 = 2040 বার।
ওপরের প্রোগ্রামটি আমরা এখন একটু অন্যভাবে লিখার চেষ্টা করব। নিচের প্রোগ্রামটি চটপট টাইপ করে ফেলো এবং রান করো:
#include <stdio.h> int main() { int i; int total_marks[] = {86, 78, 94, 68, 92, 78, 64, 62, 72, 61, 72, 66, 65, 65, 80, 72, 62, 68, 81, 62, 56, 68, 58, 56, 82, 70, 74, 78, 76, 84, 88, 73, 62, 66, 76, 70, 67, 65, 77, 63}; int marks_count[101]; for(i = 0; i < 101; i++) { marks_count[i] = 0; } for(i = 0; i < 40; i++) { marks_count[total_marks[i]]++; } for(i = 50; i <= 100; i++) { printf("Marks: %d Count: %d\n", i, marks_count[i]); } return 0; } প্রোগ্রাম: ৬.৯
এখানে আমি যেটি করেছি, একটি অতিরিক্ত অ্যারে ব্যবহার করেছি। marks_count একটি ইন্টিজার টাইপের অ্যারে এবং marks_count[n] দিয়ে আমরা বুঝব n সংখ্যাটি কতবার total_marks-এর মধ্যে আছে। নম্বর যেহেতু 0 থেকে 100-এর মধ্যে হতে পারে তাই আমরা ওই অ্যারেতে মোট 101টি সংখ্যা রাখার ব্যবস্থা করলাম। int marks_count[101]; শুরুতে যেহেতু কিছুই জানি না, তাই ধরে নিই, সব সংখ্যা শূন্য বার আছে। তাই marks_count অ্যারের সব ঘরে 0 বসিয়ে দিই: for(i = 0; i < 101; i++) { marks_count[i] = 0; } এখন total_marks অ্যারের প্রতিটি সংখ্যার জন্য marks_count অ্যারের ওই ঘরের মান এক বাড়িয়ে দিই। for(i = 0; i < 40; i++) { marks_count[total_marks[i]]++; } বুঝতে সমস্যা হচ্ছে নাকি? একটু চিন্তা করো। যখন i-এর মান 0, তখন total_marks[i] হচ্ছে total_marks[0], অর্থাৎ 86। এখন আমাদের দরকার হচ্ছে marks_count অ্যারের ওই ঘরটার (মানে marks_count[86]) মান এক বাড়িয়ে দেওয়া। শুরুতে ছিল শূন্য, এখন হবে এক। আমরা কিন্তু সে কাজটিই করেছি marks_count[total_marks[i]]-এর মান এক বাড়িয়ে দিয়েছি marks_count[total_marks[i]]++; আসলে ব্যাপারটি এইভাবেও লেখা যেত: t_m = total_marks[i]; marks_count[t_m]++; এখনো যারা মাথা চুলকাচ্ছ তারা নিচের প্রোগ্রামটি কম্পিউটারে রান করাও। এখানে প্রতিবার marks_count[total_marks[i]]++; করার পরে marks_count অ্যারেটি আমরা এক লাইনে প্রিন্ট করেছি। #include <stdio.h> int main() { int i, j; int total_marks[] = {6, 7, 4, 6, 9, 7, 6, 2, 4, 3, 4, 1}; int marks_count[11]; for(i = 0; i < 11; i++) { marks_count[i] = 0; } for(i = 0; i < 12; i++) { marks_count[total_marks[i]]++; for(j = 0; j <= 10; j++) { printf("%d ", marks_count[j]); } printf("\n"); } return 0; } 
 প্রোগ্রাম: ৬.১০
Share:

ব্যবিলনের শূন্যদ্যান সম্পর্কে অজানা

 তথ্য ঝুলন্ত উদ্যান সম্পর্কে কিছু চমকপ্রদ তথ্য
=> ঝুলন্ত উদ্যানের কোন অস্তিত্ব নেই কিন্তু এটি পৃথিবীর প্রধান সপ্তাশ্চার্যের একটি।
=> ব্যবিলনের শুন্যদ্যানের আজ পর্যন্ত কোন অস্তিত্ত্ব পাওয়া যায়নি কিন্তু এটি থাকার কিছু পৌরানিক প্রমান পাওয়া যায়।
=> বিভিন্ন রোমান এবং গ্রিক সাহিত্যিকগণ বাগান সম্পর্কে প্রচুর লেখা লিখেছেন। এবং ইহা কে, কেন, কার জন্য, আকৃতি এবং কোথায় তৈরি করা হয়েছিলো এসব তথ্যও তাদের লিখা হতেই জানা যায়।
=> তবে রাজা ২য় নেবুচাঁদনেজার তার স্ত্রীকে খুশী করতে এটি তৈরি করেন এ সম্পর্কে সবচাইতে বেশি ইতিহাসবীদ ও কবি সাহিত্যিক একমত হয়েছেন।
=> রাজা ২য় নেবুচাঁদনেজার খ্রিস্টপুর্ব ৬০সালে (সময়কাল ৪৩ বছর) এটি তৈরি করেন।
=> ব্যাবিলনের শূন্য উদ্যান বা ঝুলন্ত বাগান ইরাকের ইউফ্রেটিস নদীর তীরে খ্রিস্টপূর্ব ৬০০ অব্দে নির্মিত হয়।
=> জানা যায় প্রায় ৪০০০ শ্রমিক রাতদিন পরিশ্রম করে তৈরি করেছিল এই বাগান। বাগান পরিচর্যার কাজে নিয়োজিত ছিল ১০৫০ জন মালী।
=> ৫ থেকে ৬ হাজার প্রকার যুলের চারা রোপণ করা হয়েছিল এই ঝুলন্ত বাগানে।
=> বাগানে প্রতিদিন বিরাশী হাজার গ্যলন পানি প্রয়োজন ছিল যা একটি পাইপের সাহায্যে জলাশয় হতে তোলা হতো।
=> ৫১৪ খ্রিস্টাব্দে পার্শ্ববর্তী পারস্য রাজ্যের সাথে এক ভয়াবহ রক্তক্ষয়ী যুদ্ধে এই সুন্দর উদ্যানটি সম্পূর্ণরূপে ধ্বংস হয়ে যায়।
জানা যায় রাজা ২য় নেবুচাঁদনেজার সৈন্দর্য পিপাসু ছিলেন। তার ছিল সৌখিন মন তাই শুধু মাত্র তার পক্ষেই সম্ভব হয়ছিল এরুপ আশ্চর্যজনক সুন্দর রূপ সমৃদ্ধ বিলাসী বাগান তৈরির।
Share:

বৈদ্যুতিক শকের চিকিৎসা

বৈদ্যুতিক শকের চিকিৎসা 
আপনি কখনো খালি হাতে বিদ্যুতায়ন হয়া ব্যক্তিকে স্পর্শ করবে না , যদি করে এতে আপনাকে দেহে বিদ্যুতায়ন হয়ে যাবে । এ সময় নিচের ফাস্ট এইড বা প্রাথমিক চিকিৎসা গুলো দিতে ভুলবেন না যথা ,
* বিদ্যুতায়ন ব্যক্তির শাস প্রশাস সাভাবিক না হয়া পর্যন্ত কৃতিম শাস প্রশাস প্রক্রিয়া চালু রাখতে হবে ।
* গলা , বুক ও কোমরের কাপড় আলগা করে দিতে হবে ।
* যেই স্থান পোড়া গেছে তাতে জরুরী চিকিৎসা দিতে হবে ।
* স্নায়বিক আঘাতের চিকিৎসা চালাতে হবে , এবং
* যত দ্রুত সম্ভব ডাক্তারের কাছে নিতে হবে বা হাসপাতালে নিতে হবে ।
Share:

জরুরী ওষুধ

জরুরী ওষুধ *
 এন্টিসেপটিক সল্যুশন (যেমন বিটাডিন/স্যাভলন/ডেটল ইত্যাদি)। * এন্টিবায়োটিক ওয়েস্টম্যান (যেমন ব্যাকট্রোবেন)। * নরমাল স্যালাইন (ছোট বোতল)। * সিলভার সালফা ডায়াজিন (সিল্ক ক্রিম), পোড়া বা ক্ষতের জন্য। * হাইড্রোকর্টিসন ক্রিম_পোকায় কামড়ের চিকিৎসায় কাজে লাগে। * জ্বর ও মাথাব্যথার জন্য_প্যারাসিটামল সিরাপ, ট্যাবলেট ও সাপোজিটরি। * এন্টিহিস্টামিন জাতীয় ওষুধ_ঠাণ্ডা, অ্যালার্জির জন্য (যেমন অ্যালাট্রল/এভিল/লরাটিডিন)। * বমিবমি ভাব বা বমি রোধের জন্য_ডমপেরিডন ট্যাবলেট,সাপোজিটরি, সিরাপ। * ডায়রিয়ার জন্য মুখে খাবার স্যালাইন। * এসিডিটি রোধের জন্য এন্টাসিড ট্যাবলেট, সিরাপ। * এ ছাড়াও পরিবারের সদস্যদের প্রয়োজনভিত্তিক কিছু ওষুধ যোগ করা যেতে পারে। যেমন তীব্র ব্যথানাশক হিসাবে আইবুপ্রোফেন রাখা যেতে পারে
Share:

পৃথিবীর ভয়ংকর বিখ্যাত ৫ ভৌতিক স্থান

 বোরলে রেকটরি
ইংল্যান্ডের সবচেয়ে ভৌতিক জায়গা হিসেবে পরিচিত। এটি যুক্তরাজ্যের বোরলে গ্রামে অবস্থিত। ১৮৬৩ সালে Reverend Henry dawson Ellis Bull এর জন্য এটি নির্মান করা হয়। এখানে নুন কে হাটতে দেখা যায় যাকে পেট্রোল মেরে মেরে ফেলা হয়েছিল। পুরোনো একটি গল্প প্রচলিত আছে যে নুন বোরলে সম্প্রদায়ের এক সন্ন্যাসীনীর প্রেমে পড়েন। দুজনে চেয়েছিলেন পালিয়ে যেতে কিন্তু ধরা পড়ে যায়। সন্ন্যাসীনীকে বধ করা হয় আর নুনকে পুড়িয়ে মারা হয় এই ভবনে ।
স্ট্যানলি হোটেল
সারা পৃথিবীতে ভূতের অসংখ্য গল্প রয়েছে। স্টিফেন কিং এর উপন্যাস অবলম্বনে নির্মিত The Shining হরর মুভি দেখলে বুঝা যায় । বইটি লেখার ক্ষেত্রে তাঁকে অনুপ্রানিত করেছিল স্ট্যানলি হোটেল যেটি কলোরাডোর এস্টেস পার্কে অবস্থিত। তিনি যখন এই হোটেলের ২১৭ নাম্বার রুমে অবস্থান করেন তখন নিজেই অনেক ভৌতিক ঘটনা দেখেন। তিনি শুনতে পেতেন ভূতের ছেলেরা পাশের রুমে খেলা করছে! অনেক আত্মা ওখানে ঘুরে বেড়াতো। যখন গেস্ট আসতো তারা দেখতে পেত পিয়ানোর কীগুলো নিজে নিজে মুভ হচ্ছে, মিউজিক বাজছে। এই সকল ভৌতিক ঘটনা যারা দেখতো তাদের জীবন ক্ষতিগ্রস্থ হয় ।
টাওয়ার অব লন্ডন
ছবিটি অনেক বিখ্যাত ভৌতিক স্থান টাওয়ার অব লন্ডন এর। ১৫৩৬ সালে হেনরি VIII এর একজন স্ত্রীকে এই টাওয়ারে শিরচ্ছেদ করা হয়। ঐ স্ত্রীলোকের আত্মাকে বিভিন্ন অনুষ্ঠানে দেখা যেত, মাঝে মাঝে তিনি তার খণ্ডিত মাথা হাতে নিয়ে টাওয়ার গ্রীন এবং টাওয়ার চাপেল রয়েলে হাটতেন ।
উডচেস্টার ম্যানশন
ইংল্যান্ডের গ্লস্টারশায়ারে অবস্থিত উডচেস্টার ম্যানশনটির ভৌতিক বাড়ি হিসেবে খ্যাতি আছে।দালানটির নির্মান কাজ শেষ হয়নি। গত ২০০ বছর আগে এটির কাজ করা হয়েছিল শেষ বারেব মত। গুজব আছে এখানে যারা কাজ করতে আসে তারা অনাক্ষাঙ্কিতভাবে মারা যায়। অদ্ভুত নাকের শব্দ পাওয়া যায়, নির্মান কাজের শব্দের মত শব্দ পাওয়া যায়, রোমান সৈন্য এবং যুবতী মেয়েদের দেখতে পাওয়া যায় বলে অভিযোগ রয়েছে ।
প্যারিসের কাটাকম্ব
প্যারিসের কাটাকম্ব ফ্রান্সের প্যারিসের একটি আণ্ডারগ্রাউন্ড অসারি (যেখানে মরা মানুষের মাথার খুলি, কঙ্কাল রাখা হয় )।১৭০০ সালের মাঝা মাঝি এটি নির্মান করা হয় । যারা ৩০ কমপক্ষে ৩০ বছর আগে মারা গেছে তাদের খুলি এখানে সংরক্ষন করা হয়, এখানকার খুলি, হাড়গুলো রাতের বেলা নিজে নিজে এক জায়গা থেকে অন্য জায়গার যাতায়ার করে বলে কথিত আছে।
Share:

সাধারণ সর্দি জ্বর

সাধারণ সর্দি জ্বর 
সর্দি জ্বর আমাদের দেশের অত্যন্ত পরিচিত একটি রোগ । একে ঠাণ্ডাজনিত সাধারণ সর্দি বলা যায়৷ এ রোগটি সাধারণত ভাইরাসের আক্রমণে হয়ে থাকে৷ যাদের শরীরে রোগ প্রতিরোধ ক্ষমতা কম থাকে (যেমন- অপুষ্টিতে ভোগা শিশু) তাদের এই রোগ হওয়ার সম্ভাবনা বেশি থাকে৷ এই রোগ ঠাণ্ডা-গরমের হঠাৎ পরিবর্তন, ঋতু পরিবর্তনের সময় বেশি দেখা যায়৷ একটানা অতি বর্ষণ, স্যাঁতস্যাঁতে পরিবেশ, খুব ঠাণ্ডা, খুব গরম এ ধরনের অবস্থায়ও এ রোগ হতে পারে । এ রোগ একজনের শরীর থেকে অন্যের শরীরে খুব সহজেই ছড়ায় ।
প্রাথমিক চিকিৎসা :
রোগীকে বিশ্রামে থাকতে হবে৷ ঠাণ্ডা জাতীয় সব কিছু এড়িয়ে চলতে হবে৷ গরম খাবার ও পানীয় বেশি বেশি খেতে হবে পুষ্টিকর খাবার ও প্রচুর পানীয় গ্রহণ করতে হবে ভিটামিন-সি জাতীয় খাবার যেমন লেবু, আনারস, পেয়ারা, আমলকি ইত্যাদি প্রচুর পরিমাণে খেতে হবে এই রোগটি ছোঁয়াচে হওয়ায় রোগীর সাথে অন্যান্য সুস্থ মানুষের মেলামেশা সাবধানে করতে হবে৷ রোগীর ব্যবহৃত তোয়ালে, গামছা, রুমাল ইত্যাদি ব্যবহার করা যাবে না৷ রোগী হাঁচি দেয়ার সময় মুখে রুমাল দিতে হবে এবং যেখানে সেখানে কফ, থুথু বা নাকের শ্লেষ্মা ফেলবেন না প্রয়োজনে চিকিৎসকের পরামর্শ গ্রহণ করতে হবে ঔষুধ সেবন ও ব্যবহারের ক্ষেত্রে রেজিষ্টার চিকিৎসকের পরামর্শ নিন
Share:

Pages

Theme Support