X
تبلیغات
پروژه دانشجوی - تاریخ میلادی به شمسی

برنامه تبدیل تاریخ میلادی به شمسی به زبان اسمبلی AVR وC و�

این هم برنامه تبدیل تاریخ میلادی به شمسی به زبان اسمبلی AVR و(C(codevision همراه با ذکر چند نکته راجع به الگوریتم تبدیل تاریخهای میلادی وشمسی به یکدیگر و منظور کردن سالهای کبیسه

هر دو برنامه را دانلود کنید و به دلخواه و سلیقه خود در برنامه اصلی بگنجانید.مقادیر تاریخ میلادی را در مکانهای year,month,day وارد کرده و پس از فرآخوان برنامه تاریخ شمسی را در همان مکان ها بخوانید!

چند نکته راجع به الگوریتم تبدیل تاریخ میلادی به شمسی(و بالعکس) و سالهای کبیسه شمسی و میلادی

1-سالهاي شمسي و ميلادي هر دو 365 روزه هستند مگر در سالهاي کبيسه که 366 روز ميباشند که اين استثناء هر 4 سال يکبار اتفاق ميافتد. و دليل آن هم اينست که طول يکسال شمسي و يا ميلادي دقيقأ 365 روز يا (ساعت)24 *(روز)365 =8760 ساعت نميباشد بلکه تقريبأ 365 روز و 4/1 روز يا 6 ساعت است.
[مقدار دقیق یک سال خورشیدی یا اعتدالی (Solar Year,tropical Year)برابر با 365.2422 روز است بعبارت دیگر مدت زمان یکبار گردش کامل زمین به دور خورشید راکه آنراسال خورشیدی مینامندبرابر است با 365.2422 یا (4.1288192 /1 + 365 )روز متوسط .دائره المعارف دریائی - خسرو مشتری خواه] 
براي جبران و احتساب اين شش ساعت اضافه هر سال بدين ترتيب عمل ميشود که 4 تا از اين شش ساعت ها که 24 ساعت يا يکروز ميشوند را هر 4 سال يکبار سر جمع حساب کرده و به يک سال (که به آن کبيسه ميگويند) اضافه ميکنند و درواقع بدين ترتيب تقويم تنظيم وکاليبزه ميشود که اين موضوع 6 ساعت اختلاف در هر سال را ميتوان در زمان تحويل سال شمسي مشاهده کرد که هر سال نسبت به سال قبل يا بعد حدود 6 ساعت اختلاف ساعت دارد و هر 4 سال يکبار تقريبأ تحويل سال يکي ميشودکه در نهايت اين اختلاف ساعت ها را هر 4 سال يکبار سر جمع کرده و به يکي از سالها(سال کبيسه)همانطوريکه ذکر شد اعمال ميکنند.
يافتن سالهاي کبيسه ميلادي وشمسي آسان است کافيست يک سال کبيسه را بدانيم و سالهاي 4+يا4- آنرا بدست اوريم مثلأ سال 2008 يک سال کبيسه است و همينطور سالهاي ...و 2000و2004و2008و2012و2016و2020و... سالهاي کبيسه بوده يا هستند.
در مورد سالهاي کبيسه شمسي نيز مثلأ سال 1387 سال کبيسه بوده و ...و1379و1383و1387و1391و1395و1399و1403و... نيزسال کبيسه ميباشند.
در واقع سالهاي آتي کبيسه قابل پيش بيني و منظور شدن در محاسبات هستند.و تقریبا هر 128 سال سالهای کبیسه همان مضارب 4 سال یکبار را تعقیب میکنند.
[هر 4 سال(هریک سال کبیسه) 0.7486 ساعت کم می آورد که در مجموع حدود هر 128 سال یکبار نیاز به تنظیم دارد]
2-شناسائي و دانستن تعداد روزهاي هرماه ازسال ميلادي و يا شمسي لازم است که تعداد روزهاي ماه هاي شمسي تا حدودي منطقي تر ومنظم تر هستند ليکن در هر 2 مورد تعداد روزهاي يک سال ميلادي يا شمسي مجموعأ 365 روز است به استثناء سال کبيسه که 366 روز بوده وآن يک روز اضافه را هم به انتهاي يکي از ماه هاي مشخص سال مربوطه اضافه ميشود که به قرار زير ميباشند:

+ (31 روز)تيـر[4] + (31 روز)خرداد[3] + (31 روز)ارديبهشت[2] + (31 روز)فروردين[1] = (365 روز)يـک سال شمســي 
+ (30 روز)آبان[8] + (30 روز)مهــر[7] + (31 روز)شهريور[6] + (31 روز)مــرداد[5] 
(29 روز)اسفند[12] + (30 روز)بهمـن[11] + (30 روز)دي[10] + (30 روز)آذر[9]

+ (30 روز)آوريل[4] + (31 روز)مارس [3] + (28 روز)فوريه[2] + (31 روز)زانويه[1] = (365 روز)يـک سال ميــلادي
+ (31 روز)آگوست[8] + (31 روز)جولاي[7] + (30 روز)ژوئن[6] + (31 روز)مــي[5] 
(31 روز)دسامبر[12] + (30 روز)نوامبر[11] + (31 روز)اکتبر[10] + (30 روز)سپتامبر[9]

ملاحظه ميشود که جمع تعداد روزه هاي سال شمسي و ميلادي يکسان و 365 روز است اما تعداد روزهاي هر ماه آنها نسبت به يکديگر متفاوت است. شش ماه اول سال شمسي 31 روزه و 5ماه بعدي 30 روزه و ماه آخر 29 روزه ميباشدو ماهاي ميلادي هم که نظم بخصوي ندارند.
براي اضافه کردن يک روز سال کبيسه (که دانستن آن براي محاسبات تبديل مهم است)در سال شمسي آن را به آخرين ماه سال يعني اسفند اضافه ميکنند و ماه اسفند در سال کبيسه 30 روزه ميشود و در سال ميلادي آن را به ماه دوم سال يعني فوريه اضافه ميکنند که ماه فوريه در يک سال کبيسه ميلادي 29 روزه ميشود.[بنابراين اشتباه نشود سال کبيسه ميلادي از آخرين روز ماه دوم يعني فوريه عمل ميکند و ميبايست در محاسبات تبديل اعمال نمود لکن در سال شمسي در آخرين روز از ماه آخر يعني اسفند منظور ميشود][...اي ول وبارک اله به تقويم شمسي و ايراني خودمان که قرن ها پيش ایجاد و این قدر دقیق و منطقی وحساب شده تنظیم شده است ]

پس براي نوشتن و درک الگوريتم برنامه تبديل تقويم ها به يکديگر دانستن اطلاعات مربوط به تعداد روزه هاي هر ماه و اينکه سال کبيسه کدام سال بوده و روز اضافه شده در چه روزي از چه ماهي ميبايست اعمال گردد مهم است .

4-اغاز سال ميلادي يعني اولين روز زانويه در روز يازدهم از ماه دي سال شمسي ميباشدو آغاز سال شمسي يعني اولين روز فروردين در روز بيستم از ماه سوم ميلادي ميباشد بعبارت ديگر:
تاريخ ( 01/01/سال ميلادي ) مصادف است با ( 11/10/سال شمســي ) 
تاريخ ( 20/03/سال ميلادي ) مصادف است با ( 01/01/سال شمســي ) 
همينطور:
تاريخ ( 28/02/سال ميلادي ) مصادف است با ( 10/12/سال شمســي )

همه اين موارد فقط در مورد سالهاي غير کبيسه درست است و براي سال هاي کبيسه بطور مختصر اينگونه است :

کبيسه ميلادي : (31/12/سال کبيسه ميلادي) --> ( 11/10/سال شمسي)
(01/01/سال کبيسه ميلادي) --> ( 12/10/سال شمسي)
(02/28/سال کبيسه ميلادي) --> ( 09/12/سال شمسي)

 

کبيسه شمسي : (30/12/سال کبيسه شمسي) --> ( 20/03/سال ميلادي)
(01/01/سال کبيسه شمسي) --> ( 21/03/سال ميلادي)

5-يکي از راه هاي ساده تبديل تاريخ ميلادي به شمسي (وبالعکس) آنست که تعداد روزهاي سال ميلادي را تا تاريخ مورد نظر شمارش کرده و سپس سال شمسي را با توجه به تعداد روزهاي مفروض بدست امده بازسازي کنيم(وبالعکس)
مثلأ براي تبديل تاريخ 23/4/2007 داريم: 
23[از ماه چهارم] + 31[ماه سوم] + 28[ماه دوم] + 31[ماه اول] = تعداد روزه هاي گذشته از اول سال ميلادي تا اين تاريخ 
[روز] 113 =
حال اين تعداد روز را ميبايست با توجه به تعداد روزهاي هر ماه شمسي بازسازي نمود که البته دانستن اينکه از کجا و از چه مبدأي ميبايست شروع کنيم مهم است که نکته آن در بند 4 ذکر شد

+ نوشته شده توسط هادی بشنیجی در یکشنبه بیست و ششم اردیبهشت 1389 و ساعت 10:17 |