برنامه جعبه لایتنر با استفاده از متلب
پس از احساس نیاز به یک جعبه لایتنر، تصمیم گرفتم که با استفاده از متلب، برنامه ای بنویسم که کار جعبه لایتنر را انجام دهد. دیگر احتیاجی نیست که کاغذ و قلم بردارید و تک تک فلش کارت های مورد نیاز خود را بسازید. تنها کافی است که از مطالب خود، عکس هایی با فرمت (jpeg) jpg داشته باشید. برای گرفتن عکس های مورد نیاز خود از صفحه نمایش کامپیوتر، نرم افزار TechSmith SNAGIT را به شما توصیه می کنم. مثلا می توانید هنگامی که بخشی از یک pdf آموزشی را می خوانید، از نکات مهم آن با این نرم افزار عکس بگیرید.
تنها عیبی که این برنامه دارد، این است که جواب و سوال را باید در یک عکس قرار دهید و همچنین هر بار که تمامی عکس ها را مشاهده کردید، برای دیدن دوباره عکس هایی که به یاد نیاورده اید، باید دوباره برنامه را اجرا کنید (البته با یک کلیک ساده).
در ادامه، کدهای برنامه را در اختیارتان قرار می دهم و همچنین شیوه استفاده از آنها را شرح خواهم داد. برای کسانی که دوست دارند برنامه را تغییر داده و یا توسعه دهند نیز توضیحاتی را در مورد کدهای نوشته شده، در انتهای این صفحه، ارائه خواهم کرد. هر مشکلی که داشتید حتما از طریق ایمیل تماس بگیرید.
برنامه در دو فایل جداگانه نوشته شده است. می توانید این دو فایل را از لینک های زیر دانلود کنید :
دانلود برنامه لایتنر (فایل اول)
دانلود برنامه لایتنر (فایل دوم)
حال برای استفاده از برنامه ها مراحل زیر را به دقت اجرا کنید :
مرحله اول :
در درایو C کامپیوتر خود، فولدری به نام mind_power بسازید (حتما همین نام).
مرحله دوم :
برای شروع و تست برنامه، تنها سه عکس کافی است (تا ابتدا از عملکرد صحیح برنامه اطمینان حاصل کنید). برنامه به گونه ای نوشته شده که باید نام اولین عکس برابر 1 و دومین عکس برابر 2 و همین طور تا آخرین عکس ادامه پیدا کند. بنابراین سه عکس با نام های 1 و 2 و 3 خواهیم داشت که آنها را باید در فولدر ساخته شده mind_power کپی کنیم. فرمت عکس ها حتما باید (jpeg) jpg باشد. اگر شخصی می خواهد از فرمتی متفاوت استفاده کند، حتما بخش توضیح کدها را بخواند.
مرحله سوم :
فایل litnear1.m که یک m-file می باشد را باید با نرم افزار متلب باز کنید. برای باز کردن فایل، ابتدا برنامه متلب را باز کرده و سپس با دکمه Open file ، در بالای پنجره اصلی متلب، فایل را باز کنید. کدهای درون فایل به صورت زیر می باشند :
starting_day=today;
flashcard_total_number=2;
order_of_repeat=[1 2 4 8 15 30 60];
day_last_view=starting_day*ones(1,flashcard_total_number);
what_day_repeat_flashcard=zeros(1,flashcard_total_number);
save('C:/mind_power/variables.mat','what_day_repeat_flashcard','day_last_view','order_of_repeat','flashcard_total_number');
این کدها را باید کمی تغییر دهید. تعداد فلش کارت ها را باید در جلوی عبارت flashcard_total_number= بنویسید. بنابراین به جای عدد 2 ، باید بنویسیم 3 (تعداد فلش کارت ها). در جلوی عبارت order_of_repeat= تعدادی عدد نوشته شده است که در واقع همان اعدادی است که مشخص می کند که تعداد روزهایی که برای تکرار بعدی لازم است، چقدر است. مثلا در این حالت، اگر فلش کارت را به خاطر بیاوریم، ابتدا پس از 1 روز، باید دوباره آن را مشاهده کنیم و اگر پس از 1 روز نیز دوباره فلش کارت را به خاطر آوردیم، باید دوباره آن را پس از 2 روز مشاهده کنیم و همین طور تا آخر. بنابراین ترتیب روزهای مورد نظر خود را در این قسمت وارد کنید (تعداد اعداد را تغییر ندهید).
پس از وارد کردن مقادیر، فایل را با استفاده از گزینه Save ذخیره کنید و سپس آن را با استفاده از گزینه Run ، اجرا کنید.
تذکر مهم :
فایل litnear1.m تنها باید یک بار اجرا شود تا تعداد فلش کارت ها و ترتیب روزها را مشخص کند. دیگر ((هرگز)) نباید این برنامه را اجرا کنید، وگرنه اطلاعات فلش کارت هایی که قبلا مرور کرده اید، به طور کامل از بین می رود. در واقع این برنامه، عمل Reset کردن اطلاعات را انجام می دهد.
مرحله چهارم :
این مرحله، شروع استفاده از برنامه و مرور فلش کارت ها می باشد. فایل litnear2.m را توسط متلب باز کرده و بر روی گزینه Run کلیک کنید تا برنامه اجرا شود. اولین عکس، توسط برنامه ای که ویندوز برای باز کردن فایل های jpeg مشخص کرده است، باز می شود. در ویندوز می توانید برنامه انتخابی را عوض کنید، به عنوان مثال برنامه ای مثل photoshop اصلا مناسب نیست، زیرا مرتبا باید برنامه را باز و بسته کنید که این عمل برای photoshop خیلی طول می کشد. من از برنامه Windows Photo Viewer خود ویندوز استفاده می کنم که در یک چشم به هم زدن، باز یا بسته می شود.
پس از مشاهده عکس، آن را ببندید، بر روی پنجره Command متلب، عبارت زیر نوشته شده است :
که معنای آن این است که اگر فلش کارت را به یاد می آورید، عدد 0 را تایپ کنید و اگر به یاد نمی آورید، عدد 1 را تایپ کنید. پس از تایپ عدد مورد نظر، کلید enter از کیبورد را فشار دهید.
سپس اگر عکس دیگری باقی مانده باشد، نمایش داده خواهد شد.
پس از آنکه برنامه همه فلش کارت ها را نمایش بدهد، پیامی به صورت زیر در پنجره Command نمایش داده می شود :
حال اگر بخواهید کارت هایی را که به یاد نیاورده اید، یک بار دیگر ببینید، باید دوباره برنامه litnear2.m را اجرا کنید. برنامه litnear2.m را باید هر روز اجرا کنید (یا مثلا هر روز صبح و عصر) تا ببینید آیا زمان مشاهده فلش کارت ها رسیده است یا نه.
شرح کدها :
برای کسانی که دوست دارند برنامه را توسعه بدهند، کدها را در این قسمت شرح خواهم داد.
کدهای برنامه فایل litnear1.m :
starting_day=today;
flashcard_total_number=2;
order_of_repeat=[1 2 4 8 15 30 60];
day_last_view=starting_day*ones(1,flashcard_total_number);
what_day_repeat_flashcard=zeros(1,flashcard_total_number);
save('C:/mind_power/variables.mat','what_day_repeat_flashcard','day_last_view','order_of_repeat','flashcard_total_number');
دستور clear all ، تمامی متغیرهایی که قبلا در متلب تعریف شده اند را پاک می کند تا در برنامه تداخلی ایجاد نشود.
دستور today ، میزان روزهای گذشته از تقویم میلادی را تا امروز محاسبه می کند و در برنامه برای سنجش این که در چه روزی هستیم، به کار می رود. بنابراین مقداری را که دستور today بر می گرداند را در متغیر starting_day ذخیره می کنیم.
تعداد کل فلش کارت ها را در متغیر flashcard_total_number ذخیره می کنیم.
در جعبه لایتنر، معمولا مشخص می کنند که در صورت به یاد آوردن جواب فلش کارت، پس از چند روز، دوباره آن فلش کارت باید مرور شود. مثلا ترتیب مرور می تواند به صورت 1 روز، 2 روز، 3 روز و 5 روز باشد که این اعداد را باید به ترتیب در متغیر order_of_repeat ، به صورت یک بردار ،ذخیره کنیم.
در متغیر day_last_view ، روز آخرین مرور هر فلش کارت، ذخیره می شود.
در متغیر what_day_repeat_flashcard، تعداد روزهایی که باید از زمان آخرین مرور هر فلش کارت بگذرد تا دوباره آن را مرور کنیم، ذخیره می شود.
دستور save ، متغیرهای تعریف شده را در فایل با آدرس C:/mind_power/variables.mat ذخیره می کند.
کدهای برنامه فایل litnear2.m :
load('C:/mind_power/variables.mat');
today_date=today;
for m=1:flashcard_total_number
if (today_date-day_last_view(1,m)>=what_day_repeat_flashcard(1,m))
file_directory=strcat('C:/mind_power/',num2str(m),'.jpg');
winopen(file_directory)
reply = input('remember >> 0 not remember >> 1 : ');
if (what_day_repeat_flashcard(1,m)==0)
what_day_repeat_flashcard(1,m)=1;
end
if (reply==0)
day_last_view(1,m)=today_date;
if (what_day_repeat_flashcard(1,m)==order_of_repeat(1))
what_day_repeat_flashcard(1,m)=order_of_repeat(2);
else if (what_day_repeat_flashcard(1,m)==order_of_repeat(2))
what_day_repeat_flashcard(1,m)=order_of_repeat(3);
else if (what_day_repeat_flashcard(1,m)==order_of_repeat(3))
what_day_repeat_flashcard(1,m)=order_of_repeat(4);
else if (what_day_repeat_flashcard(1,m)==order_of_repeat(4))
what_day_repeat_flashcard(1,m)=order_of_repeat(5);
else if (what_day_repeat_flashcard(1,m)==order_of_repeat(5))
what_day_repeat_flashcard(1,m)=order_of_repeat(6);
else if (what_day_repeat_flashcard(1,m)==order_of_repeat(6))
what_day_repeat_flashcard(1,m)=order_of_repeat(7);
end
end
end
end
end
end
end
if (reply==1)
what_day_repeat_flashcard(1,m)=0;
end
end
end
fprintf('you finished the flashcards %s\n');
save('C:/mind_power/variables.mat','what_day_repeat_flashcard','day_last_view','order_of_repeat','flashcard_total_number');
دستور clear all ، تمامی متغیرهایی که قبلا در متلب تعریف شده اند را پاک می کند تا در برنامه تداخلی ایجاد نشود.
دستور load ، متغیرهای ذخیره شده در فایل با آدرس C:/mind_power/variables.mat را در برنامه متلب وارد (load) می کند.
تعداد روزهای گذشته از تقویم میلادی را با استفاده از دستور today ، در متغیر today_date ، ذخیره می کنیم.
تمامی دستورات نوشته شده در حلقه for برای این است که عکس هایی که زمان مشاهده آنها امروز است و یا از زمان مشاهده آنها گذشته است، توسط برنامه باز شوند و سپس بر اساس این که آنها را به یاد آورده اید یا نه، زمان بعدی مشاهده فلش کارت ها (عکس ها) مشخص می شود.
آدرس هر فلش کارت را با استفاده از دستور strcat که برای وصل کردن چند رشته به هم می باشد، می سازیم. دقت شود که از دستور num2str استفاده کرده ایم تا عدد مربوط به نام هر عکس را به یک رشته تبدیل کنیم. سپس آدرس را که به صورت یک رشته است، در متغیر file_directory ذخیره کرده ایم. کسانی که می خواهند از فرمت دیگری غیر از jpg برای عکس ها استفاده کنند، باید در پرانتز مربوط به دستور strcat ، بخش آخر آدرس را که jpg است با فرمت دلخواه خود جایگزین کنند.
دستور winopen ، آدرس عکس را از متغیر file_directory دریافت کرده و آن را، با نرم افزار تعیین شده توسط ویندوز، باز می کند.
دستور input ، پیامی را در پنجره Command نرم افزار متلب نمایش داده و سپس عدد وارد شده توسط کاربر را دریافت می کند و آن را در متغیر reply ذخیره می کند.
در ادامه، بر اساس اینکه فلش کارت را به خاطر آورده اید یا نه، زمان بعدی برای مرور فلش کارت تعیین می شود.
زمانی که یک بار تمامی فلش کارت هایی که باید مرور می شدند، توسط برنامه مرور شود، پیامی توسط دستور fprintf در پنجره Command به کاربر نمایش داده می شود.
در انتهای برنامه، متغیرهای برنامه را مجددا در فایل با آدرس C:/mind_power/variables.mat ذخیره می کنیم.