OpenModelica/C2/Control-flow-and-Event-handling/Bengali
From Script | Spoken-Tutorial
Time | Narration |
00:01 | Control flow and Event handling এর টিউটোরিয়ালে আপনাদের স্বাগত। |
00:07 | এখানে আমরা শিখব: if-else স্টেটমেন্টের ব্যবহার, time এবং state ইভেন্ট পরিচালনা করা, when স্টেটমেন্টের ব্যবহার। |
00:19 | টিউটোরিয়ালটি রেকর্ড করতে ব্যবহার করছি: OpenModelica 1.9.2 এবং উবুন্টু অপারেটিং সিস্টেম সংস্করণ 14.04. |
00:30 | কিন্তু এই প্রক্রিয়াটি Windows, Mac OS X বা ARM এ FOSSEE OS এ অনুরূপ। |
00:38 | টিউটোরিয়ালটি বুঝতে এবং অনুশীলন করতে নিম্ন জানতে হবে: physical সিস্টেমের সমীকরণ ভিত্তিক মডেলিং। |
00:47 | যে কোনো প্রোগ্রামিং ল্যাংগুয়েজে ব্রানচিং, Modelica তে সংজ্ঞায়িত করা। |
00:53 | পূর্বাবশ্যক টিউটোরিয়াল স্পোকেন টিউটোরিয়াল ওয়েবসাইটে রয়েছে, তা দেখুন। |
01:00 | freeFall ক্লাস আগেই আগের টিউটোরিয়ালে আলোচনা করা হয়েছিল। |
01:05 | এখন এত constraint যোগ করুন। |
01:08 | বল t = 0.5 সেকেন্ড পর্যন্ত থেমে থাকে। gravity তে Free fall t = 0.5 সেকেন্ডে শুরু হয়। |
01:19 | আমি timeEventExample নামে একটি মডেল বানিয়েছি যা এই কন্ডিশন সিমুলেট করে। |
01:25 | timeEventExample ফাইল স্পোকেন টিউটোরিয়ালে Code Files লিঙ্কে উপলব্ধ। |
01:32 | ডাউনলোড করুন এবং সকল ফাইল Code Files লিঙ্কে সংরক্ষণ করুন। |
01:38 | আপনার সুবিধার জন্য freeFall ক্লাসও উপলন্ধ। |
01:43 | এখন OMEdit এ যাই। |
01:45 | আমি এটি ইতিমধ্যেই আমার সিস্টেমে রেখেছি। |
01:49 | উবুন্টু অপারেটিং সিস্টেমে OMEdit খুলতে উপরে বামদিকে Dash Home আইকনে ক্লিক করুন। |
01:58 | সার্চ বারে OMEdit লিখুন এবং OMEdit আইকনে ক্লিক করুন। ফিরে যান। |
02:06 | দ্রষ্টব্য: উইন্ডোজ ইউসার একইভাবে Start মেনুতে OMEdit সনাক্ত করুন এবং এটি খুলুন। |
02:13 | timeEventExample ফাইল খুলতে Open Model/Library File নামে টুলে ক্লিক করুন। |
02:21 | আপনার timeEventExample ফাইল সনাক্ত করুন এবং Open এ ক্লিক করুন। |
02:28 | আপনি এই ফাইলটি খুলতে বিকল্পরূপে File মেনুও ব্যবহার করতে পারেন। |
02:34 | লক্ষ্য করুন timeEventExample, Libraries browser এ দেখায়। |
02:39 | এই আইকনে ডান ক্লিক করুন এবং View class চয়ন করুন। |
02:44 | মডেল এখন Diagram view তে খোলে। |
02:47 | তৃতীয় বোতামে Text View তে ক্লিক করুন। |
02:51 | আমরা ইতিমধ্যে আলোচনা করেছি Modelica তে model এবং class সমঞ্জসে ব্যবহৃত হয়। |
02:58 | এই মডেলের নাম হল timeEventExample. |
03:02 | এই ধরনের Comments, model বা class এর প্রথম লাইনে লেখা হতে পারে। |
03:08 | h, v এবং g freeFall ক্লাসে একই মান পরিমান বোঝায়। |
03:16 | initial equation সেকশনে ইনিশিয়াল কন্ডিশন রয়েছে। |
03:21 | h এর ভ্যালু t = 0 সময়ে 30m. |
03:26 | v এর ভ্যালু t = 0 সময়ে 0. |
03:31 | Equation এই মডেলের সমীকরণ সেকশনের সূচনা নির্দেশ করে। |
03:36 | এখন দেখি যে স্লাইডে বর্ণিত constraint কিভাবে প্রবিষ্ট করে। |
03:43 | লক্ষ্য করুন এখানে equation সেকশনে if-else block রয়েছে। |
03:48 | এই if-else block এর প্রতিটি স্টেটমেন্ট বোঝার চেষ্টা করি। |
03:53 | if statement time ভ্যারিয়েবলে constraint রাখে। |
03:58 | time Modelica তে বিল্ট-ইন ভ্যারিয়েবল। |
04:01 | এটি class বা model এ স্পষ্টভাবে ঘোষণা করা প্রয়োজন নেই। |
04:06 | ball এর 0.5 সেকেন্ডের পরে free fall অভিজ্ঞতা হয়। |
04:12 | তাই এই দুটি equation, freeFall ক্লাসের অনুরূপ equation প্রদর্শন করে। |
04:19 | else branch এ equations রয়েছে যা 0.5 সেকেন্ডের কম সময়ে নিষ্পাদিত হয়। |
04:27 | বল থেমে যায় যখন সময় 0.5 সেকেন্ডের কম হয়। |
04:32 | এই ক্ষেত্রে এই দুটি equations সঠিক। |
04:36 | end if, if-else block এর শেষ দেখায়। |
04:41 | model এখন সম্পূর্ণ। |
04:44 | Simulate বোতামে ক্লিক করে এটি সিমুলেট করি। |
04:48 | Plotting perspective খোলে। |
04:51 | Variables browser এ h চয়ন করুন। |
04:55 | এটি h versus time প্লট বানায়। |
04:58 | যেহেতু সময় t=0.5 সেকেন্ডে বল থেমে যায়, উচ্চতা একই থাকবে। |
05:06 | ফলাফল মুছে ফেলতে, Variables browser এ timeEventExample এ ডান ক্লিক করুন এবং Delete Result চয়ন করুন। |
05:15 | Modeling perspective এ ফিরে যেতে, নীচে ডানদিকে Modeling বোতামে ক্লিক করুন। |
05:21 | এখন else branch এ দ্বিতীয় equation মুছে ফেলি। |
05:26 | মডেলটি সংরক্ষণ করতে টুলবারে Save বোতামে ক্লিক করুন। |
05:31 | Simulate এ ক্লিক করুন। |
05:34 | সিমুলেশন ব্যর্থ হয়েছে। |
05:37 | Messages browser এ যান এবং এরর ম্যাসেজ দেখতে উপরে স্ক্রোল করুন। |
05:42 | এরর ম্যাসেজ বলে যে প্রতিটি branch এ equations এর সংখ্যা একই হওয়া উচিত। |
05:49 | তাই if এবং else branches এ equations এর সংখ্যা ভ্যারিয়েবলের সংখ্যার সমান হওয়া উচিত। |
05:58 | আবার equation তার জায়গায় সন্নিবেশ করি এবং Save বোতামে ক্লিক করুন। |
06:05 | উল্লেখ্য, der(h) = v একটি equation যা if এবং else branches উভয়ের জন্য অনুরূপ। |
06:14 | তাই if-else block দুটি স্টেটমেন্ট দ্বারা বদলানো যেতে পারে। |
06:20 | আমি আপনাকে দেখাই যে এটি কিভাবে হয়। |
06:23 | প্রথমে if-else block মুছুন। |
06:26 | এখানে লেখা equation, if else-statement.txt নামক ফাইলে উপলব্ধ। |
06:34 | এই ফাইল Code Files লিঙ্কেও উপলব্ধ। |
06:39 | যেহেতু এটি একটি টেক্সট ফাইল, আমি এটি খুলতে gedit ব্যবহার করেছি। |
06:45 | gedit এ যান। |
06:47 | উইন্ডোজ ইউসার Notepad বা অন্য কোনো টেক্সট এডিটর দ্বারা এই ফাইলটি খুলতে পারে। |
06:54 | দুটি equation কপি করুন। |
06:57 | OMEdit এ ফিরে যান। |
07:00 | ডান ক্লিক করুন এবং Paste চয়ন করুন। |
07:04 | আবার টুলবারে Save বোতামে ক্লিক করুন। |
07:08 | Simulate এ ক্লিক করুন। |
07:11 | pop up উইন্ডো বন্ধ করুন। |
07:14 | আবার Variables browser এ h চয়ন করুন। |
07:18 | মনে রাখবেন h versus time প্লট পূর্ববর্তী ক্ষেত্রে একই যা দেখায় যে উভয় মডেল একই। |
07:27 | ফলাফল মুছে ফেলতে, timeEventExample এ ডান ক্লিক করুন এবং Delete Result চয়ন করুন। |
07:34 | নীচে ডানদিকে Modeling বোতামে ক্লিক করুন। |
07:38 | এটি একটি if-else statement স্টেটমেন্ট যা দেখায় যে time >= 0.5 হলে dv/dt = g অন্যথায় dv/dt = 0. |
07:52 | এখন স্লাইডে ফিরে আসি। |
07:55 | লক্ষ্য করুন if branch এ equation এর সংখ্যা else branch এ equation সংখ্যার সমান হওয়া উচিত। |
08:03 | উভয় class বা model এ ভ্যারিয়েবলের সংখ্যা সমান হওয়া উচিত। |
08:10 | Event সিস্টেমের আচরণে আকস্মিক পরিবর্তন। |
08:15 | Event কে time events এবং state events এ শ্রেণীভুক্ত করা যেতে পারে। |
08:20 | time event এ, ইভেন্ট ঘটার সময় যথাযথভাবে জানা যায়। |
08:25 | timeEventExample, t = 0.5 সেকেন্ডে টাইম ইভেন্ট পরিচালনা করে। |
08:32 | state event তখন হয় যখন সিস্টেম ভ্যারিয়েবল একটি নির্দিষ্ট ভ্যালু ক্রস করে। |
08:38 | একটি উদাহরণ দ্বারা স্টেট ইভেন্ট বোঝার চেষ্টা করুন। |
08:43 | free fall এ বল, মাটি স্পর্শ করলে state event এর মুখোমুখি হয়। |
08:48 | এটি মাটি স্পর্শ করলে নিম্ন আচরণ দেখা যায়। |
08:52 | বলের গতি দিকে বদলায়। |
08:55 | বেগের ম্যাগনিটিউড বদলায় যদি সংঘর্ষ স্থির হয়। |
09:00 | আমি এই আচরণ সিমুলেট করে bouncingBall নামে মডেল বানিয়েছি। |
09:06 | এই ফাইলটি স্পোকেন টিউটোরিয়াল ওয়েবসাইটে উপলব্ধ। |
09:10 | এই মডেলটি দেখতে এবং এটি সিমুলেট করতে OMEdit এ ফিরে যান। |
09:15 | OpenModel/LIbrary File টুলে ক্লিক করুন। |
09:19 | সিস্টেমে bouncingBall ফাইল খুঁজুন এবং Open এ ক্লিক করুন। |
09:25 | Libraries browser এ bouncingBall আইকনে ডান ক্লিক করুন এবং bouncingBall চয়ন করুন। |
09:33 | মডেল Text View এ না খুললে modeling area এর উপরে যান এবং Text View বোতামে ক্লিক করুন। |
09:41 | e হল পৃথিবীর সাথে বলের অস্তরক সংঘর্ষের জন্য ক্ষতিপূরণের সহগ। |
09:48 | এটি একটি প্যারামিটার এবং সম্পূর্ণ সিমুলেশনের দরুন এর ভ্যালু 0.8 এ স্থির থাকে। |
09:56 | radius, m এ বলের ব্যাসার্ধ বোঝায়। |
10:00 | h, v এবং g, timeEventExample এর মত একই পরিমান প্রদর্শন করে। |
10:07 | গতির এই দুটি equation এর আলোচনা ইতিমধ্যে freeFall ক্লাসে করেছি। |
10:13 | when statement ইভেন্টের সিগন্যালের জন্য ব্যবহৃত হয়। |
10:17 | এর ব্যবহার ইভেন্ট ঘটার সময় নেওয়া অ্যাকশন নির্ধারণ করতে করা হয়। |
10:22 | h <= radius true রাখে যখন বলের যোগাযোগ মাটির সাথে হয়। |
10:29 | এই statement নিষ্পাদিত হয় যখনই ইভেন্ট কার্যকর হয়। |
10:34 | reinit() ফাংশনের ব্যবহার ভ্যারিয়েবল ইনিসিয়েলাইজ করতে করা হয়। |
10:39 | এখানে এটি e এর নেগেটিভ প্রোডাক্টের সাথে বলের বেগ এবং মাটি ছোঁয়ার আগে বলের বেগ ইনিসিয়েলাইজ করে। |
10:49 | মডেলটি সিমুলেট করতে টুলবারে Simulation Setup বোতামে ক্লিক করুন। |
10:55 | General ট্যাবে, Stop Time ফীল্ড 30 units এ বদলান এবং Simulate এ ক্লিক করুন। |
11:04 | pop-up উইন্ডো বন্ধ করুন। |
11:06 | Variables browser এ h চয়ন করুন। |
11:10 | লক্ষ্য করুন h শূন্যের নীচের রয়েছে যা অগ্রহণযোগ্য। |
11:16 | freeFall ক্লাস সিমুলেট করার সময় আমরা অনুরূপ আচরণ দেখেছি। |
11:21 | এর ভুল আচরণ সংখ্যাসূচক এররের কারণে হয়। |
11:25 | সংখ্যাসূচক এররের আলোচনা এই টিউটোরিয়ালের সুযোগের বাইরে। |
11:30 | ভালোমত বুঝতে বাউনসিং বলের Zeno আচরণ দেখুন। |
11:36 | h অচয়নিত করুন। |
11:39 | স্লাইডে ফিরে যান। |
11:42 | when statement এর ব্যবহার ইভেন্টের সিগন্যালের জন্য করা হয়। |
11:45 | reinit(a,b) b এর ভ্যালু ভ্যারিয়েবল a কে নির্দিষ্ট করে এবং সিমুলেশন পুনরায় চালু করে। |
11:54 | pre(a) ইভেন্টের আগে ভ্যারিয়েবল a এর ভ্যালু ফেরৎ দেয়। |
11:59 | উদাহরণস্বরূপ, reinit(a, 10), ইভেন্ট ঘটার সময় a কে 10 নির্ধারণ করে। |
12:08 | bouncingBall মডেলের ত্রুটিপূর্ণ আচরণ bouncingBallWithHysteresis এ সঠিক হয়। |
12:15 | bouncingBallWithHysteresis মডেল স্পোকেন টিউটোরিয়াল ওয়েবসাইটে উপলব্ধ। |
12:21 | bouncingBallWithHysteresis সিমুলেট করুন এবং h versus time প্লট বানান। |
12:27 | bouncingBall এবং bouncingBallWithHysteresis এর মাঝে পার্থক্য লক্ষ্য করুন। |
12:33 | এর সাথেই আমরা টিউটোরিয়ালের শেষে এসেছি। |
12:36 | নিম্ন লিঙ্কে উপলব্ধ ভিডিওটি দেখুন: http://spoken-tutorial.org/ http://spoken-tutorial.org] /What\_is\_a\_Spoken\_Tutorial |
12:40 | এটি প্রকল্পকে সারসংক্ষেপে দেখায়। |
12:42 | স্পোকেন টিউটোরিয়াল প্রকল্প দল কর্মশালার আয়োজন করে এবং প্রশংসাপত্র দেয়। আরো জানতে আমাদের লিখুন। |
12:48 | আপনার এই স্পোকেন টিউটোরিয়ালে কোন প্রশ্ন থাকলে নিম্ন সাইটে যান। |
12:55 | Textbook Companion Project এ আমরা জনপ্রিয় বইগুলির সমাধানকৃত উদাহরণের কোডিং নির্দেশ করি। |
13:03 | যারা এটি করে আমরা তাদের মানদণ্ড এবং সার্টিফিকেট দেই। আরো জানতে এই সাইটে যান। |
13:10 | Lab Migration Project এ আমরা কমার্শিয়াল সিমুলেটর ল্যাবগুলি OpenModelica তে মাইগ্রেট করতে সহায়তা করি। |
13:17 | আরো জানতে এই সাইটে যান। |
13:21 | Spoken Tutorial প্রকল্প ভারত সরকারের NMEICT, MHRD দ্বারা সমর্থিত। |
13:28 | আমরা OpenModelica উন্নয়ন দলকে তাদের সমর্থনের জন্য ধন্যবাদ জানাই। |
13:33 | আই আই টী বোম্বে থেকে আমি বিদায় নিচ্ছি। |