تبليغاتX
.:: لوتوس دنیای موبایل ::.
.:: لوتوس دنیای موبایل ::.
دانلود برنامه موبایل - ترفندهای موبایل - دانلود نرم افزار کامپیوتر)نظر یادتون نره(
قال رسول الله (ص) : ايها الناس ! انه قد اقبل اليكم شهر الله بالبركة و الرحمة و المغفرة
زيارت عاشورا

دسته بندی : / لینک ثابت

با سلام خدمت دوستان عزیز من به خاطر ارادت به مولا حسین(ع) زیارت معروف ایشان را در وبلاگم میگزارم و ان شا الله از هفته آینده مطالب جدید را قرار میدم.

التماس دعا

زيارت معروفه امام حسين در روز عاشوراء

 
 
السلام عليك يا أبا عبد الله السلام عليك يابن رسول الله السلام عليك يابن أمير المؤمنين وابن سيد الوصيّين السلام عليك يابن فاطمة سيدة نساء العالمين السلام عليك يا ثار الله وابن ثاره والوتر الموتور السلام عليك وعلى الأرواح التي حلت بفنائك عليكم مني جميعاً سلام الله أبدا ما بقيت وبقي الليل والنهار يا أبا عبد الله لــقد عظمت الرّزية وجلّت وعظمت المصيبة بك علينا وعلى جميع أهل الإسلام وجلت وعظمت مصيبتك في السماوات على جميع أهل السماوات فلعن الله أمة أسست أساس الظلم والجور عليكم أهل البيت ولعن الله أمة دفعتكم عن مقامكم وأزالتكم عن مراتبكم التي رتبكم الله فيها ولعن الله أمة قتلتكم ولعن الله الممهدين لهم بالتمكين من قتالكم برئت إلى الله واليكم منهم ومن اشياعهم واتباعهم واوليائهم يا أبا عبد الله اني سلمٌ لمن سالمكم وحرب لمن حاربكم إلى يوم القيامة ولعن الله آل زياد وآل مروان ولعن الله بني امية قاطبةً ولعن الله ابن مرجانة ولعن الله عمر بن سعد ولعن الله شمراً ولعن الله أمة أسرجت وألجمت وتنقبت لقتالك بأبي أنت وأمي لقد عظم مصابي بك فأسأل الله الذي أكرم مقامك وأكرمني بك أن يرزقني طلب ثارك مع إمام منصور من أهل بيت محمد صلّى الله عليه وآله اللهم اجعلني عندك وجيهاً بالحسين عليه السلام في الدنيا والآخرة يا أبا عبد الله اني اتقرّب إلى الله وإلى رسوله وإلى أمير المؤمنين وإلى فاطمة وإلى الحسن واليك بموالاتك وبالبراءة ممن قاتلك ونصب لك الحرب وبالبراءة ممن أسس أساس الظلم والجور عليكم وأبرأ إلى الله وإلى رسوله ممن أسس أساس ذلك وبنى عليه بُنيانه وجرى في ظلمه وجوره عليكم وعلى اشياعكم برئت إلى الله واليكم منهم واتقرب إلى الله ثم اليكم بموالاتكم وموالاة وليكم وبالبراءة من أعدائكم والناصبين لكم الحرب وبالبراءة من اشياعهم واتباعهم إني سلم لمن سالمكم وحرب لمن حاربكم وولي لمن والاكم وعدو لمن عاداكم فأسأل الله الذي أكرمني بمعرفتكم ومعرفة اوليائكم ورزقني البراءة من أعدائكم أن يجعلني معكم في الدنيا والآخرة وأن يُثبت لي عندكم قدم صدق في الدنيا والآخرة وأسأله أن يُبلغني المقام المحمود لكم عند الله وأن يرزقني طلب ثاري مع إمام هدىً ظاهر ناطق بالحق منكم وأسأل الله بحقكم وبالشأن الذي لكم عنده أن يعطيني بمصابي بكم افضل ما يعطي مصاباً بمصيبة، مصيبة ما أعظمها وأعظم رزيتها في الإسلام وفي جميع السماوات والأرض اللهم اجعلني في مقامي هذا ممن تناله منك صلوات ورحمة ومغفرة اللهم اجعل محياي محيا محمد وآل محمد ومماتي ممات محمد وآل محمد اللهم إن هذا يوم تبركت به بنو أمية وابن آكلة الاكباد اللعين بن اللعين على لسانك ولسان نبيك صلّى الله عليه وآله في كل موطن وموقف وقف فيه نبيك صلّى الله عليه وآله اللهم ألعن أبا سفيان ومعاوية ويزيد بن معاوية عليهم منك اللعنة ابد الآبدين وهذا يوم فرحت به آل زياد وآل مروان بقتلهم الحسين صلوات الله عليه اللهم فضاعف عليهم اللعن منك والعذاب الأليم اللهم إني اتقرب إليك في هذا اليوم وفي موقفي هذا وايــام حياتي بالبراءة منهم واللعنة عليهم وبالــموالاة لنبيك
 وآل نبيك عليه وعليهم السلام.
سپس صد بار ميگوئى:
اللهم العن أول ظالم ظلم حق محمد وآل محمد وآخر تابع له على ذلك اللهم العن العصابة التي جاهدت الحسين وشايعت وبايعت وتابعت على قتله اللهم
 العنهم جميعاً.
سپس صد بار ميگوئى:
السلام عليك يا أبا عبد الله وعلى الارواح التي حلت بفنائك عليك مني سلام الله أبدا ما بقيت وبقي الليل والنهار ولا جعله الله آخر العهد مني لزيارتكم السلام على الحسين وعلى علي بن الحسين وعلى اولاد الحسين وعلى أصحاب الحسين.
سپس ميگوئى:
اللهم خص أنت أول ظالم باللعن مني وأبدأ به أولا ثم العن الثاني والثالث والرابع اللهم العن يزيد خامساً والعن عبيد الله بن زياد وابن مرجانة وعمر بن سعد وشمراً وآل أبي سفيان وآل زياد وآل مروان إلى يوم القيامة.
 
سپس به سجده ميروى و ميگوئى:
اللهم لك الحمد حمد الشاكرين لك على مصابهم الحمد لله على عظيم رزيتي اللهم ارزقني شفاعة الحسين يوم الورود وثبت لي قدم صدق عندك مع الحسين واصحاب الحسين الذين بذلوا مهجهم دون الحسين عليه السلام.

التماس دعاء     
 

نویسنده مطلب : لوتوس   \  تاریخ درج : جمعه 21 بهمن1384   16:33 \

با محرم و صفر است كه اسلام زنده است.

دسته بندی : / لینک ثابت

  این مصیبت را به همگی تسلیت عرض می کنم ان شا الله که حضرت ما را از یارانش قرار دهد.

 

 

 

 

يا سقاي كربلا

 

 

 

 

 

 


نویسنده مطلب : لوتوس   \  تاریخ درج : دوشنبه 17 بهمن1384   15:39 \

مبانی دا ت نت ( بخش اول )

دسته بندی : / لینک ثابت

دات نت ، پلات فرم جديد ماکروسافت بمنظور تحقق نظريه : " نرم افزار بعنوان سرويس " ، است . دات نت يک محيط پياده سازي است که بکمک آن مي توان اقدام به ايجاد و بکارگيري نرم افزار و نسل جديدي از عناصر موسوم به " سرويس هاي وب " ، نمود. تمامي محصولات اصلي ماکروسافت از ويژوال استوديو دات نت تا ويندوز و نهايتا" مجموعه آفيس ، متاثر از پلات فرم فوق شده و خواهند شد . دات نت به پياده کنندگان اين امکان را خواهد داد که با زبان برنامه نويسي مورد علاقه خود ، اقدام به پياده سازي برنامه ها نمايند. ويژگي ( پتانسيل ) فوق از طريق معرفي CLR)Common Language Runtime )، ميسر شده است . در اين مقاله قصد داريم به بررسي دات نت پرداخته و پتانسيل ها و قابليت هاي آن را تشريح نمائيم .
در جولاي سال 2000 ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه اي (PDC ) ، در شهر Orlando ايالت کاليفرنيا ، جزئيات بيشتري از نسل جديد پلات فرم خود ( دات نت ) بمنظور پياده سازي برنامه هاي ويندوز و اينترنت را در اختيار علاقه مندان خصوصا" پياده کنندگان نرم افزار قرار داد . محوريت ابتکار فوق ، بر فريمورک دات نت استواربوده ونشاندهنده يک پلات فرم مناسب بهمراه کتابخانه هاي کلاس گسترده اي است که پتانسيل هاي متعددي را در اختيار قرار مي دهد. يکي از نکات قابل توجه در پلات فرم فوق،استفاده از XML و SOAP بمنظور ارتباط بين نرم افزارها ي موجود در اينترنت ( نرم افزارهاي مبتني بر وب ) ، است . در اين راستا مجموعه اي از محصولات مبتني بر سرويس دهنده با نام سرويس دهندگان Enterprise دات نت، مطرح که بمنزله نسل جديدي از محصولات Backoffice ماکروسافت ، مي باشند.
فريمورک دات نت ، مدلي کاملا" جديد بمنظور برنامه نويسي و بکارگيري نرم افزار را ارائه نموده است. "بيل گيتس "، در سخنراني خود در PDC ، بدين نکته اشاره داشتند که در هر پنج تا شش سال ما شاهد يک تحول عمده در رابطه با پياده سازي نرم افزار بوده ايم . آخرين موارد در اين زمينه به سوئيچ از DOS به ويندوز در سال 1990 و گذر از پياده سازي شانزده بيتي به سي و دو بيتي ( از ويندوز widows 3.x به ويندوز NT/95 ) در اواسط دهه 90 ميلادي ، است.
با معرفي دات نت در PDC ، پياده کنندگان آن را معماري مناسبي براي پياده سازي نرم افزار ( برنامه هاي Desktop و برنامه هاي وب ) مشاهده نمودند . ويژوال استوديو دات نت ، اولين محصول مبتني بر دات نت ماکروسافت بوده که در سال 2001 در اختيار علاقه مندان قرار گرفت . اهميـت دات نت براي ماکروسافت تا بدين حد است که در سال 2001 ، بيش از هشتاد درصد منابع بخش تحقيق و توسعه اين شرکت در رابطه با آن صرف شده است . زبان سي شارپ ، که زباني جديد براي برنامه نويسي در دات نت است بعنوان زبان استاندارد براي پياده سازي داخلي در شرکت ماکروسافت پذيرفته شده است .

يک پلات فرم مناسب براي آينده
دات نت، اولين پلات فرم طراحي شده از صدر تا ذيل با در نظر گرفتن واقعيتي با نام اينترنت است . دات نت از يک ماشين مجازي خاص در اين زمينه استفاده مي نمايد . ماهيت ماشين مجازي فوق ، بگونه اي است که از API ويندوز فاصله و در اين رابطه از يک کتابخانه کلاس استفاده مي نمايد که مي توان به جرات اين ادعا را داشت که تاکنون نظير آن ، ايجاد نشده است . امکان استفاده از زبانهاي متعدد برنامه نويسي ، وجود خواهد داشت .معماري دات نت ، امکان ارتباط بين زبانها را بسادگي فراهم خواهد کرد .دات نت ، يک رويکرد جديد در رابطه با پياده سازي نر م افزار را مطرح نموده است . نگاه به دات نت ، عمدتا" بصورت سيستم هاي توزيع شده است. با استفاده از XML ،امکان اجراي توابع بر روي کامپيوترهاي متفاوت يک سازمان ويا جهان فراهم و جلوه اي زيبا در همياري بمنظور اجراي يک برنامه ، به نمايش در خواهد آمد. از اين منظر ، سيستم ها از سرويس دهندگان تا سيستم هاي بدون کابل ، قادر به اشتراک پلات فرم عمومي يکساني خواهند بود . با استفاده از نسخه هاي دات نت که براي تمام آنها در دسترس خواهد بود، امکان ارتباط مناسب آنها با يکديگر فراهم خواهد شد. دات نت ، بمنظور طراحي و پياده سازي برنامه هاي سنتي نيز راهکارها و امکانات مناسبي را ارائه تا از اين طريق امکان پياده سازي و بکارگيري اين نوع از نرم افزارها ، بسادگي انجام گيرد . برخي از تکنولوژي ها ي ارائه شده در دات نت نظير فرم هاي ويندوز، تلاشي در اين راستا است .

ايده هاي اوليه
از اواخر سال 1995 ، شرکت ماکروسافت توجهي خاص و قابل توجه نسبت به اينترنت نمود . هدف ماکروسافت در اين زمينه پيوند بين پلات فرم ويندوز و اينترنت بود. ماحصل تلاش ماکروسافت در اين زمينه ارائه مدل برنامه نويسي Windiws DNA ، بود . در اين راستا مجموعه اي از ابزارها و تکنولوژي هاي مبتني بر اينترنت ، طراحي و ارائه گرديد . ASP ، از اولين تلا ش هاي ماکروسافت در اين زمينه است . عملا" در اين زمينه ( مطرح شدن اسکريپت ها ي مفسري ) يک برگشت به عقب نسبت به پياده سازي ساختيافته و شي گراء را شاهد بوده ايم . طراحي ، اشکال زدائي و نگهداري چنين کدهاي غير ساختيافته اي مسائل خاص خود را خواهد داشت . ساير زبانها نظير ويژوال بيسيک بصورت موفقيت آميز در رابطه با برنامه نويسي بر روي اينترنت و پلات فرم ماکروسافت استفاده مي گرديد ولي اغلب از آن بمنظور ايجاد عناصري که از طريق ASP ، بخدمت گرفته مي شدند ، استفاده مي گرديد .در اين رابطه تلاش هاي اندکي نيز در جهت ايجاد يک اينترفيس مبتني بر وب بر روي زبان هاي سنتي نظير webclasses در VB ، نيز انجام شد ولي هيچکدام از تلاش هاي فوق ، در سطح گسترده اي مورد استقبال و پذيرش قرار نگرفت . ماکروسافت در صدد حل آشفتگي هاي همراه برنامه هاي ويندوز DNA بود . ويندوز DNA ، تصويري مناسب از يک معماري Three-Tire و مبتني بر COM بود که تکنولوژي ASP در لايه Presentation ، اشياء Bussiness در لايه مياني و يک engine بانک اطلاعاتي رابطه اي در لايه Data ، قرار مي گرفت . مفاهيم همراه DNA ،کامل و بي عيب بود اما در زمان استفاده عملياتي چالش هاي خاص خود را بدنبال داشت . پياده سازي عناصر COM ، مستلزم يک سطح مناسب از دانش و مهارت است و مي بايست زمان زيادي در اين رابطه صرف گردد . بکارگيري نرم افزارهاي DNA ، نيز مسائل خاص خود را داشت ( مسائل مربوط به ورژن ، نصب عناصر و عناصري که با آن مرتبط مي باشند ) .
بموازات تلاش ساير شرکت ها در رابطه با ارائه راهکارهائي خاص بمنظور پياده سازي برنامه ها ي وب ، شرکت ماکروسافت در صدد برطرف نمودن محدوديت هاي مدل برنامه نويسي DNA گرديد.

تولد دات نت
در اوايل سال 1998 ، گروهي از پياده کنندگان نرم افزار در ماکروسافت ، کار خود را بر روي نسخه اي جديد از IIS ( نسخه چهار) ، به اتمام رساندند که داراي چندين ويژگي جديد در رابطه با ASP بود .در اين راستا ، قابليت هاي جديدي بمنظور پياده سازي برنامه هاي وب در ويندوز NT ، فراهم گرديد.گروه پياده کننده داراي ايده هاي متعددي براي اعمال اصلاحات جديد بودند . گروه فوق ، کار خود را بر روي يک معماري جديد براي پياده سازي ايده هاي مطرح شده ، آغاز نمود . اين پروژه ، NGWS)Netx Generation Window Services) ، ناميده گرديد. پس از ارائه ويژوال استوديو شش ، در اواخر سال 1998 ، تلاش براي ايجاد نسخه اي جديد از ويژوال استوديو در دستور NGWS ، قرار گرفت . گروه COM+/MTS در مدل پيشنهادي خود از يک Runtime ، عمومي براي تمامي زبانهاي استفاده شده در ويژوال استوديو ، استفاده نمودند . تلاش افراد درگير در پروژه NGWS ادامه تا در نهايـت ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه اي (PDC) ، دات نت را معرفي نمود.

مروري بر فريمورک دات نت
فريمورک دات نت ، تمامي لايه هاي پياده سازي نرم افزار را از سطح سيستم عامل به بالا ، تحت پوشش قرار مي دهد. فريمورک فوق، سطحي مناسب وقدرتمند از ارتباط و همبستگي بين تکنولوژي Presentation ، تکنولوژي هاي Component و تکنولوژي هاي Data را ارائه مي نمايد ( نظير اين ارتباط و همبستگي تاکنون در پلات فرم ويندوز مشاهده نشده است) . معماري فوق ، امکان طراحي و پياده سازي برنامه هاي مبتني بر اينترنت و محيط هاي Desktop ، را بسادگي فراهم و نيازهاي هر گروه از نرم افزارهاي فوق را بخوبي جواب مي دهد . اجزاي اصلي فريمورک دات نت در شکل زير نشان داده شده است .


فريمورک دات نت از لايه پائين با عملياتي نظير مديريت حافظه آغاز و بسمت بالا بمنظور ارائه اينترفيس هاي برنامه ها و کاربران ، دنبال مي شود . در بين لايه ها ، لايه هاي سيستمي ديگر که هر يک داراي پتانسيل هاي خاصي براي پياده کنندگان مي باشند ، وجود دارد.
CLR) Common Language Runtime) ، بمنزله قلب فريمورک دات نت محسوب و engine لازم بمنظور ارائه قابليت هاي کليدي را ارائه مي نمايد . CLR ، شامل عناصر اساسي ديگري نظير: (Common Type System (CTS ، است. علاوه بر مديريت حافظه ، CLR ، مراجعات به اشياء و عمليات Garbage Collection را نيز انجام مي دهد .
در لايه مياني ، ما شاهد نسل جديدي از سرويس هاي استاندارد نظير ADO.NET و XML مي باشيم .سرويس هاي فوق ، تحت کنترل فريمورک بوده و امکان بکارگيري آنها بصورت جامع و استاندارد در بين تمامي زبانها ، فراهم مي گردد . بالاترين لايه ، شامل اينترفيس هاي برنامه و کاربر است . فرم هاي ويندوز ، روشي جديد بمنظور ايجاد برنامه هاي Desktop مبتني بر win32 مي باشند. فرم هاي وب ، يک رابط کاربر مناسب براي برنامه هاي مبتني بر وب را ارائه مي نمايند. سرويس هاي وب ، مکانيزمي بمنظور ارتباط برنامه ها از طريق اينترنت و با استفاده از SOAP ، مي باشد. سرويس هاي وب ، قابل مقايسه با عناصر COM و DCOM بوده با اين تفاوت مهم که در اين راستا از تکنولوژي هاي متعدد اينترنت ، استفاده مي گردد. فرم هاي وب و سرويس هاي وب ، اينترفيس اينترنت دات نت را تشکيل و پياد ه سازي آنان از طريق بخش ديگري در فريمورک دات نت که ASP.NET ، ناميده مي شود ، محقق مي گردد .
پتانسيل هاي موجود در هر لايه فريمورک دات نت ، توسط هر يک از زبان هاي سازگار با دات نت ، قابل استفاده خواهد بود. در پايان لازم است به اين نکته اشاره گردد که در اين رابطه ( فريمورک دات نت ) مي توان از اينترفيس هاي مبتني بر متن ( کاراکتري) نيز استفاده کرد . اين نوع برنامه ها اصطلاحا" Console Application ، ناميده مي شوند .

دربخش دوم اين مقاله به بررسي CLR و جايگاه آن در فريمورک دات نت، خواهيم پرداخت .

نویسنده مطلب : لوتوس   \  تاریخ درج : دوشنبه 17 بهمن1384   1:26 \

Java-9 آرايه ها

دسته بندی : / لینک ثابت

يك آرايه گروهي از متغيرهاي يك نوع است كه با يك نام مشترك به آنها ارجاع
مي شود . مي توان آرايه ها را براي هر يك از انواع ايجاد نمود و ممكن است اين
آرايه ها داراي يك يا چندين بعد باشند . براي دسترسي به يك عضو آرايه از نمايه
(index) آن آرايه استفاده مي شود . آرايه ها يك وسيله مناسب براي گروه بندي
اطلاعات مرتبط با هم هستند .
نكته : اگر با Cو C++و آشنايي داريد ، آگاه باشيد . آرايه ها در جاوا بطور
متفاوتي نسبت به زبانهاي ديگر كار مي كنند .

آرايه هاي يك بعدي
آرايه يك بعدي بطور ضروري فهرستي از متغيرهاي يكنوع است . براي ايجاد يك
آرايه ، بايد يك متغير آرايه از نوع مورد نظرتان ايجاد كنيد . فرم عمومي اعلان
يك آرايه يك بعدي بقرار زير است :

type var-name [];

نام متغير نوع
در اينجا type اعلان كننده نوع اصلي آرايه است . نوع اصلي تعيين كننده نوع
داده براي هر يك از اعضائ داخل در آرايه است . بنابراين ، نوع اصلي آرايه تعيين
مي كند كه آرايه چه نوعي از داده را نگهداري مي كند . بعنوان مثال ، در زير
يك آرايه با نام month-days با نوع آرايه اي از عدد صحيح اعلان شده است .

+ int month_days[];

اگر چه اين اعلان تثبيت مي كند كه month-days يك متغير آرايه است ، اما بطور
واقعي آرايه اي وجود ندارد . در حقيقت ، مقدار month-days برابر تهي (null)
مي باشد كه يك آرايه بدون مقدار را معرفي مي كند . براي پيوند دادن month-days
با يك آرايه واقعي و فيزيكي از اعداد صحيح ، بايد از يك عملگر new استفاده
نموده و به month-days منتسب كنيد. new يك عملگراست كه حافظه را اختصاص ميدهد.
بعداnew " را با دقت بيشتري بررسي مي كنيم ، اما لازم است كه هم اكنون از آن
استفاده نموده و حافظه را براي آرايه ها تخصيص دهيد . فرم عمومي new آنگونه كه
براي آرايه هاي يك بعدي بكار مي رود بقرار زير ظاهر خواهد شد :

array-var=new type [size];

اندازه نوع متغير آرايه
در اينجا type مشخص كننده نوع داده اي است كه تخصيص داده مي شود، size مشخص
كننده تعداد اعضائ آرايه است و array-var متغير آرايه است كه به آرايه پيوند
مي يابد . يعني براي استفاده از new در تخصيص يك آرايه ، بايد نوع و تعداد
اعضايي كه تخصيص مي يابند را مشخص نماييد . اعضائ آرايه كه توسط new تخصيص
مي يابند بطور خودكار با مقدار صفر مقدار دهي اوليه مي شوند . اين مثال يك
آرايه 12 عضوي از اعداد صحيح را تخصيص داده و آنها را به month-days پيوند
مي دهد .

+ month_days = new int[12];

بعد از اجراي اين دستور ، month-days به يك آرايه 12 تايي از اعداد صحيح
ارجاع خواهد نمود . بعلاوه كليه اجزائ در آرايه با عدد صفر مقدار دهي اوليه
خواهند شد .
اجازه دهيد مرور كنيم : بدست آوردن يك آرايه مستلزم پردازش دو مرحله اي است .
اول بايد يك متغير با نوع آرايه مورد نظرتان اعلان كنيد . دوم بايد حافظه اي كه
آرايه را نگهداري مي كند ، با استفاده از new تخصيص دهيد و آن را به متغير
آرايه نسبت دهيد . بنابراين در جاوا كليه آرايه ها بطور پويا تخصيص مي يابند .
اگر مفهوم تخصيص پويا براي شما ناآشناست نگران نباشيد . اين مفهوم را بعدا"
تشريح خواهيم كرد .
هر بار كه يك آرايه را تخصيص مي دهيد ، مي توانيد بوسيله مشخص نمودن نمايه
آن داخل كروشه [] به يك عضو مشخص در آرايه دسترسي پيدا كنيد . كليه نمايه هاي
آرايه ها با عدد صفر شروع مي شوند. بعنوان مثال اين دستور مقدار 28 را به دومين
عضو month-days نسبت مي دهد .

+ month_days[1] = 28;

خط بعدي مقدار ذخيره شده در نمايه 3 را نمايش مي دهد .

+ System.out.println(month_days[3]);

با كنار هم قرار دادن كليه قطعات ، در اينجا برنامه اي خواهيم داشت كه يك
آرايه براي تعداد روزهاي هر ماه ايجاد مي كند .

+ // Demonstrate a one-dimensional array.
+ class Array {
+ public static void main(String args[] ){
+ int month_days[];
+ month_days = new int[12];
+ month_days [0] = 31;
+ month_days [1] = 28;
+ month_days [2] = 31;
+ month_days [3] = 30;
+ month_days [4] = 31;
+ month_days [5] = 30;
+ month_days [6] = 31;
+ month_days [7] = 31;
+ month_days [8] = 30;
+ month_days [9] = 31;
+ month_days [10] = 30;
+ month_days [11] = 31;
+ System.out.println("April has " + month_days[3] + " days .");
+ }
+ }

وقتي اين برنامه را اجرا ميكنيد ، برنامه ، تعداد روزهاي ماه آوريل را چاپ
ميكند. همانطوريكه ذكر شد، نمايه هاي آرايه جاوا با صفر شروع مي شوند، بنابراين
تعداد روزهاي ماه آوريل در month-days[3] برابر 30 مي باشد .
اين امكان وجود دارد كه اعلان متغير آرايه را با تخصيص خود آرايه بصورت زير
تركيب نمود : + int month_days[] = new int[12];

اين همان روشي است كه معمولا" در برنامه هاي حرفه اي نوشته شده با جاوا مشاهده
مي كنيد .
مي توان آرايه ها را زمان اعلانشان ، مقدار دهي اوليه نمود . پردازش آن بسيار
مشابه پردازشي است كه براي مقدار دهي اوليه انواع ساده استفاده مي شود . يك
مقدار ده اوليه آرايه فهرستي از عبارات جدا شده بوسيله كاما و محصور شده بين
ابروهاي باز و بسته مي باشد . كاماها مقادير اجزائ آرايه را از يكديگر جدا
مي كنند . آرايه بطور خودكار آنقدر بزرگ ايجاد مي شود تا بتواند ارقام اجزايي
را كه در مقدار ده اوليه آرايه مشخص كرده ايد ، دربرگيرد . نيازي به استفاده از new
وجود ندارد . بعنوان مثال ، براي ذخيره نمودن تعداد روزهاي هر ماه ، كد
بعدي يك آرايه مقدار دهي اوليه شده از اعداد صحيح را بوجود مي آورد :

+ // An improved version of the previous program.
+ class AutoArray {
+ public static void main(String args[] ){
+ int month_days[] = { 31/ 28/ 31/ 30/ 31/ 30/ 31/ 31/ 30/ 31/ 30/ 31 };
+ System.out.println("April has " + month_days[3] + " days .");
+ }
+ }

وقتي اين برنامه را اجرا كنيد ، همان خروجي برنامه قبلي را خواهيد ديد .
جاوا بشدت كنترل مي كند تا مطمئن شود كه بطور تصادفي تلاشي براي ذخيره نمودن
يا ارجاع مقاديري خارج از دامنه آرايه انجام ندهيد . سيستم حين اجراي جاوا
كنترل مي كند كه كليه نمايه هاي آرايه ها در دامنه صحيح قرار داشته باشند . ( از
اين نظر جاوا كاملا"با Cاو C++و متفاوت است كه هيچ كنترل محدوده اي در حين اجرا
انجام نمي دهند . ) بعنوان مثال ، سيستم حين اجرا ، مقدار هر يك از نمايه ها به month-days
را كنترل مي كند تا مطمئن شود كه بين ارقام 0 و 11 داخل قرار داشته
باشند . اگر تلاش كنيد تا به اجزائ خارج از دامنه آرايه ( اعداد منفي يا اعدادي
بزرگتر از طول آرايه ) دسترسي يابيد، يك خطاي حين اجرا (run-time error) توليد
خواهد شد .
در زير يك مثال پيچيده تر مشاهده مي كنيد كه از يك آرايه يك بعدي استفاده
مي كند . اين برنامه ميانگين يك مجموعه از ارقام را بدست مي آورد .

+ // Average an array of values.
+ class Average {
+ public static void main(String args[] ){
+ double nums[] = {10.1/ 11.2/ 12.3/ 13.4/ 14.5};
+ double result = 0;
+ int i;
+
+ for(i=0; i<5; i++)
+ result = result + nums[i];
+
+ System.out.println("Average is " + result / 5);
+ }
+ }


آرايه هاي چند بعدي
در جاوا آرايه هاي چند بعدي در واقع آرايه اي از آرايه ها هستند . اين قضيه
همانطوريكه انتظار داريد ظاهر و عملكردي مشابه آرايه هاي چندبعدي منظم (regular)
دارد . اما خواهيد ديد كه تاوتهاي ظريفي هم وجود دارند . براي اعلان يك متغير
آرايه چند بعدي ، با استفاده از مجموعه ديگري از كروشه ها هر يك از نمايه هاي
اضافي را مشخص مي كنيد. بعنوان مثال ، عبارت زيرر يك متغير آرايه دو بعدي بنام twoD
را اعلان مي كند .

+ int twoD[][] = new int[4][5];

اين عبارت يك آرايه 4در 5ر را تخصيص داده و آن را به twoD نسبت مي دهد . از
نظر داخلي اين ماتريس بعنوان يك آرايه از آرايه نوع int پياده سازي خواهد شد .
بطور فرضي ، اين آرايه را مي توان بصورت شكل زير نمايش داد .

Right index determines column.

|| || || || ||
\/ \/ \/ \/ \/

|
| [0][4] | [0][3] | [0][2] | [0][1] | [0][0] >
|
| |
| [1][4] | [1][3] | [1][2] | [1][1] | [1][0] >
Left index
determines |
| [2][4] | [2][3] | [2][2] | [2][1] | [2][0] .> row
|
| |
| [3][4] | [3][3] | [3][2] | [3][1] | [3][0] >
Given :int twoD[][] = new int [4][5];

برنامه بعدي هر عضو آرايه را از چپ به راست ، و از بالا به پايين شماره داده
و سپس مقادير آنها را نمايش مي دهد :

+ // Demonstrate a two-dimensional array.
+ class TwoDArray {
+ public static void main(String args[] ){
+ int twoD[][] = new int[4][5];
+ int i/ j/ k = 0;
+
+ for(i=0; i<4; i++)
+ for(j=0; j<5; j++ ){
+ twoD[i][j] = k;
+ k++;
+
+ }
+
+ for(i=0; i<4; i++ ){
+ for(j=0; j<5; j++)
+ System.out.print(twoD[i][j] + " ");
+ System.out.println)(;
+ }
+ }
+ }

خروجي اين برنامه بقرار زير خواهد بود : 0 1 2 3 4

5 6 7 8 9
10 11 12 13 14
15 16 17 18 19

هنگام تخصيص حافظه به يك آرايه چند بعدي ، كافي است فقط حافظه براي اولين
بعد را مشخص نماييد . مي توانيد ابعاد ديگر را جداگانه تخصيص دهيد . بعنوان
مثال ، كد زير حافظه اولين بعد twoD را هنگام اعلان آن تخصيص مي دهد . اين كد
حافظه دومين بعد را بصورت دستي اختصاص مي دهد .

+ int twoD[][] = new int[4][];
+ twoD[0] = new int[5];
+ twoD[1] = new int[5];
+ twoD[2] = new int[5];
+ twoD[3] = new int[5];

اگرچه در اين حالت اختصاص انفرادي حافظه به دومين بعد هيچ مزيتي ندارد، اما
احتمال چنين مزيتهايي وجود دارد . بعنوان مثال ، هنگاميكه ابعاد را بصورت دستي
اختصاص مي دهيد ، نيازي نيست كه همان ارقام براي اجزائ هر بعد را تخصيص دهيد .
همانطوريكه قبلا" گفتيم ، از آنجاييكه آرايه هاي چند بعدي واقعا" آرايه اي از
آرايه ها هستند ، طول هر يك از آرايه ها تحت كنترل شما قرار مي گيرند . بعنوان
مثال ، برنامه بعدي يك آرايه دو بعدي ايجاد مي كند كه در آن اندازه هاي دومين
بعد نامساوي هستند .

+ // Manually allocate differing size second dimension.
+ class TwoDAgain {
+ public static void main(String args[] ){
+
+
+ int twoD[][] = new int[4][];
+ twoD[0] = new int[1];
+ twoD[1] = new int[2];
+ twoD[2] = new int[3];
+ twoD[3] = new int[4];
+
+ int i/ j/ k = 0;
+
+ for(i=0; i<4; i++)
+ for(j=0; j + towD[i][j] = k;
+ k++;
+ }
+
+ for(i=0; i<4; i++ ){
+ for(j=0; j + System.out.print(twoD[i][j] + " ");
+ System.out.println)(;
+ }
+ }
+ }

خروجي اين برنامه بقرار زير مي باشد : 0

1 2
3 4 5
6 7 8 9

آرايه اي كه توسط اين برنامه ايجاد مي شود ، بصورت زير خواهد بود :

| [0][0] |

| [1][0] | [1][1] |

| [2][0] | [2][1] | [2][2] |

| [3][0] | [3][1] | [3][2] | [3][3] |


از آرايه هاي چند بعدي ناجور ( يا نامنظم ) در اكثر برنامه ها استفاده نميشود
زيرا برخلاف آنچه مردم هنگام مواجه شدن با يك آرايه چند بعدي انتظار دارند
رفتار مي كنند . اما اين آرايه ها در برخي شرايط بسيار كارا هستند . بعنوان
مثال ، اگر نياز به يك آرايه دو بعدي خيلي بزرگ داريد كه داراي تجمع پراكنده
باشد ( يعني كه يكي و نه همه اجزائ آن مورد استفاده قرار مي گيرند ) ، آنگاه
آرايه بي قاعده احتمالا" يك راه حل كامل خواهد بود .
اين امكان وجود دارد كه آرايه هاي چند بعدي را مقدار دهي اوليه نمود . براي
اينكار ، فقط كافي است هر يك از مقدار ده اوليه ابعاد را داخل مجموعه ابروهاي
ختص خودش قرار دهيد . برنامه بعدي يك ماتريس ايجاد مي كند كه هر يك از اجزائ
آن شامل حاصلضرب نمايه هاي سطرها و ستونها هستند. همچنين دقت نماييد كه مي توان
از عبارات همچون مقادير لفظي داخل مقدار ده اوليه آرايه استفاده نمود .

+ // Initialize a two-dimensional array.
+ class Matrix {
+ public static void main(String args[] ){
+ double m[][] = {
+ { 0*0/ 1*0/ 2*0/ 3*0 };
+ { 0*1/ 1*1/ 2*1/ 3*1 };
+ { 0*2/ 1*2/ 2*2/ 3*2 };
+ { 0*3/ 1*3/ 2*3/ 3*3 };
+ };
+ int i/ j;
+
+ for(i=0; i<4; i++ ){
+ for(j=0 j<4; j++)
+ System.out.print(m[i][j] + " ");
+ System.out.println)(;
+ }
+ }
+ }

پس از اجراي اين برنامه ، خروجي آن بقرار زير خواهد بود : 0 0 0 0

0 1 2 3
0 2 4 6
0 3 6 9

همانطوريكه مشاهده مي كنيد، هر سطر در آرايه همانگونه كه در فهرستهاي مقدار
دهي اوليه مشخص شده ، مقدار دهي اوليه شده است .
مثالهاي بيشتري درباره استفاده از آرايه چند بعدي بررسي مي كنيم . برنامه
بعدي يك آرايه سه بعدي 3x4x5 ايجاد مي كند . سپس حاصل نمايه هاي مربوطه را براي
هر عضو بارگذاري مي كند . در نهايت اين حاصل ها را نمايش خواهد داد :

+ // Demonstrate a three-dimensional array.
+ class threeDDatrix {
+ public static void main(String args[] ){
+ int threeD[][][] = new int[3][4][5];
+ int i/ j/ k;
+ for(i=0; i<3; i++)
+ for(j=0; j<4; j++)
+ for(k=0; k<5; k++)
+ threeD[i][j][k] = i * j * k;
+
+ for(i=0; i<3; i++ ){
+ for(j=0; j<4; j++ ){
+ for(k=0; k<5; k++)
+ System.out.print(threeD[i][j][k] + " ");
+ System.out.println)(;
+ }
+ System.out.println)(;
+ }
+ }
+ }

خروجي اين برنامه بقرار زير خواهد بود : 0 0 0 0 0

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12

0 0 0 0 0
0 2 4 6 8
0 4 8 12 16
0 6 12 18 24


دستور زبان جايگزين اعلان آرايه
يك شكل دوم براي اعلان يك آرايه بصورت زير وجود دارد :

type [] var-name;

نام متغير نوع
در اينجا كروشه ها بعداز مشخص كننده نوع مي آيند نه بعداز نام متغير آرايه .
بعنوان مثال دو شكل اعلان زير يكسان عمل مي كنند :

+ int a1[] = new int[3];
+ int[] a2 = new int[3];

دو شكل اعلان زير هم يكسان عمل مي كنند :

+ char twod1[][] = n


نویسنده مطلب : لوتوس   \  تاریخ درج : دوشنبه 17 بهمن1384   1:25 \

C-63 ورودي خروجي كاراكترها

دسته بندی : / لینک ثابت

براي نوشتن يك كاراكتر در فايل ، از توابع ()putc و ()fputc استفاده ميشود.
طريقه استفاده از اين دو تابع يكسان است . تابع ()putc در گونه هاي جديد C و
()fputc در گونه هاي قديمي C وجود داشته است . چون تابع ()putc به صورت ماكرو
تعريف شده است سرعت عمل آن بالا است . لذا سعي ما در اين است كه از تابع ()putc
استفاده شود . الگوي تابع ()putc بصورت زير است : int putc( int ch/FILE *fp)

در الگوي فوق ، ch كاراكتري است كه بايد در فايل نوشته شود و fp اشاره گري
از نوع فايل است كه مشخص مي كند، كاراكتر موردنظر بايد در چه فايلي نوشته شود.
براي خواندن كاراكترها از فايل ، ميتوان از دو تابع ()getcو()fgetc) استفاده
نمود . نحوه بكارگيري اين دو تابع يكسان است . تابع ()fgetc در گونه هاي قديمي C
و ()getc در گونه هاي جديد C وجود دارد . چون تابع ()getc بصورت ماكرو پياده
سازي شده است از سرعت بيشتري برخوردار است . لذا ما سعي در استفاده از تابع
()getc داريم . الگوي اين تابع بصورت زير است : int getc( FILE *fp)

در الگوي فوق ، fp اشاره گري است كه مشخص مي كند كاراكتر مورد نظر از كدام
فايل بايد خوانده شود .
در مورد خواندن و نوشتن داده ها بر روي فايل بايد به نكاتي توجه داشت : 1
وقتي كاراكترهايي بر روي فايل نوشته مي شوند بايد مكان بعدي كه ، كاراكتر
آتي در آنجا قرار مي گيرد مشخص باشد . همچنين وقتي كه كاراكترهايي از فايل
خوانده ميشوند بايد مشخص باشد كه تاكنون تا كجا فايل خوانده شده است و كاراكتر
بعدي از كجا بايد خوانده شود . براي برآوردن اين هدف ، سيستم از يك متغير بنام "
موقعيت سنج فايل " استفاده مي كند كه با هر دستور خواندن و يا نوشتن بر روي
فايل ، مقدار اين متغير بطور اتوماتيك تغيير مي كند تا موقعيت فعلي فايل را
مشخص نمايد . لذا عمل نوشتن بر روي فايل و عمل خواندن از روي آن از جايي شروع
مي شود كه اين متغير نشان مي دهد . 2
در هنگام خواندن داده ها از فايل بايد بتوان انتهاي فايل را تست نمود .
يعني در برنامه بايد بتوان اين تست را انجام داد كه ، اگر در حين خواندن داده ها
از فايل ، " موقعيت سنج فايل " به انتهاي فايل رسيد دستور خواندن بعدي صادر
نگردد . چرا كه در غير اينصورت ، سيستم پيام خطايي را مبني بر نبودن اطلاعات در
فايل صادر مي كند .
در حين خواندن داده ها از فايل text پس از رسيدن به انتهاي فايل تابع ()getc
يا ()fgetc علامت EOF را برمي گرداند. لذا در هنگام خواندن داده ها از فايل text
مي توان به عمل خواندن ادامه داد . تا اين كه كاراكتر خوانده شده برابر با EOF
گردد. درفايل باينري براي تست كردن انتهاي فايل ازتابع ()feof استفاده ميگردد.
الگوي اين تابع بصورت زير است : int feof( FILE *fp)

در الگوي فوق ، fp اشاره گري است كه مشخص مي كند اين تابع بايد بر روي چه
فايلي عمل كند . تابع ()fopen علاوه بر تشخيص انتهاي فايلهاي باينري براي تشخيص
انتهاي فايل هاي text نيز استفاده مي شود . اكنون به بررسي مثال هايي در مورد
فايل هاي text و باينري و چگونگي تست انتهاي اين دو نوع فايل مي پردازيم .

مثال 1: برنامه اي كه كاراكترهايي را از ورودي خوانده و در يك فايل text قرار
مي دهد ( آخرين كاراكتر ورودي $ است ) و سپس داده هاي موجود در اين فايل را
خوانده و به فايل ديگري منتقل مي كند .

#include "stdio.h"
#include "stdlib.h"

void main(void)
{
FILE *in/*out ;
char ch;
in=fopen("test.dat"/"w");
if( in==NULL)
{
printf("cannot open file\n");
exit(1);
}
do {
ch=getchar)(;
putc(ch/in);
}while(ch!='$');
fclose(in);
out=fopen("output.dat"/"w");
if(out==NULL)
{
printf("cannot open out file");
exit(1);
}
in=fopen("test.dat"/"r");
if(in==NULL)
{
printf("cannot open input file");
exit(1);
}
ch=getc(in);
while(ch!=EOF)
{
putc(ch/out);
ch=getc(in);
}
fclose(in);
fclose(out);
}

نمونه اي از اجراي برنامه مثال 1 :

this is a sample file.
this is a text file.
text file is slow.
end of file.
$


مثال 2: برنامه اي كه كاراكترهايي رااز صفحه كليد گرفته و در يك فايل باينري
قرار ميدهد و سپس كاراكترهاي موجود در اين فايل را خوانده و به يك فايل باينري
ديگر منتقل مي كند . اسامي فايل هاي ورودي و خروجي بعنوان آرگومان تابع اصلي
به برنامه وارد مي شوند .

#include "stdio.h"
#include "stdlib.h"

void main(int argc/char *argv[])
{
FILE *in/*out ;
char ch;
clrscr )(;
if(argc!=3)
{
printf("you forget enter");
printf(" file name\n");
exit(1);
}
in=fopen(argv[1]/"wb");
if( in==NULL)
{
printf("cannt open(first)");
printf(" output file \n");
exit(1);
}
do {
ch=getchar)(;
putc(ch/in);
} while(ch!='$');
fclose(in);
in=fopen(argv[1]/"rb");
if(in==NULL)
{
printf("cannot open input");
printf(" file");
exit(1);
}
out=fopen(argv[2]/"wb);
if(out==NULL)
{
printf("cannot open output");
printf(" file");
exit(1);
}
ch=getc(in);
while(!feof(in))
{
putc(ch/out);
ch=getc(in);
}
fclose(in);
fclose(out);
}


مثال 3: برنامه اي كه برنامه ديگري را بعنوان فايل ورودي ، پذيرفته و تعداد
پرانتزهاي باز و بسته و همچنين تعداد آكولادهاي باز و بسته را شمارش مي كند .
نام فايل ورودي بعنوان آرگومان تابع اصلي ، به برنامه وارد مي شود .

#include "stdio.h"
#include "stdlib.h"

void main(int argc/char *argv[])
{
FILE *in ;
char ch;
int openbraket=0 / closebraket=0;
int openbraket=0 / closparant=0;
if(argc!=2)
{
printf("\n the number of");
printf(" argument is incorrect.");
exit(0);
}
in=fopen(argv[1]/"r");

if( in==NULL)
{
printf("\n file cannot open!.");
exit(0);
}
ch=getchar)(;
while( ch != EOF)
{
if( ch=='{')
openbraket ++ ;
else if( ch=='}')
closebraket ++;
else if( ch=='(')
openparant ++;
else if( ch==')')
closparant ++;
ch=getc(in );
}
printf("\n the number of open ");
printf("braket is:%d"/openbraket);
printf("\n the number of close ");
printf("braket is:%d"/closebraket);
printf("\n the number of open ");
printf("parantheses is:");
printf("%d"/openparant);
printf("\n the number of close");
printf(" parantheses is:");
printf("%d"/closparant);
fclose(in);
}

نمونه اي از خروجي برنامه مثال 3 :

E:\TC>9-3 11.7.c

the number of open braket is:37
the number of close braket is:37
the number of open parantheses is:177



نویسنده مطلب : لوتوس   \  تاریخ درج : دوشنبه 17 بهمن1384   1:24 \

C-62 بستن فايل

دسته بندی : / لینک ثابت

پس از اين كه برنامه نويس كارش را با فايل تمام كرد ، بايد آن را ببندد .
بستن فايل توسط تابع ()fclose انجام مي شود كه داراي الگوي زير است : int fclose(FILE *fp)

در الگوي فوق ، fp به فايلي اشاره مي كند كه بايد توسط تابع ()fclose بسته
شود . بعنوان مثال ، دستور ;(p)fclose موجب بستن فايلي ميشود كه p به آن اشاره
مي كند .


نویسنده مطلب : لوتوس   \  تاریخ درج : دوشنبه 17 بهمن1384   1:21 \

معرفي اوليه VB.NET

دسته بندی : / لینک ثابت

يک برنامه کامپيوتري ، از مجموعه اي دستورالعمل که نوع و نحوه انجام يک فعاليت را براي کامپيوتر مشخص مي نمايند ، تشکيل مي گردد. دستورالعمل هاي نوشته شده بعنوان نمونه ممکن است به کامپيوتر اعلام نمايند که تعدادي از اعداد را با يکديگر جمع و يا دو عدد را بايکديگر مقايسه و بر اساس نتيجه بدست آمده ، اتخاذ تصميم نمايد. دستورالعمل هاي نوشته شده ، صرفا" براي کامپيوتر قابل فهم و اجراء خواهند بود.کامپيوتر دستورالعمل هاي نوشته شده را اجراء و ماحصل آن رسيدن به اهدافي خواهد بود که بر اساس آن برنامه طراحي و پياده سازي شده است . دستورالعمل ها ، مي بايست با استفاده از يکي از زبانها ي برنامه نويسي نوشته شده ( کد ينگ ) و در ادامه در اختيار کامپيوتر قرار داده شوند. زبانهاي برنامه نويسي متعددي نظير : فرترن ، بيسيک ، کوبال ، پاسکال، ،C ، جاوا ، ويژوال بيسيک و ... وجود دارد.
برنامه نويسي کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان است . براي نيل به هدف فوق ، مي بايست تمامي مراحل لازم بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل هاي ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار براي آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم مي گردد ) . VB.NET ، زباني است که مي توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان ) مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، مي توان محصولاتي راايجاد که زمينه استفاده از آنان در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيري يک تکنولوژي در ابتدا مي بايست شيوه راه رفتن را بياموزيم و در ادامه اقدام به دويدن نمود .
VB.NET يکي از زبان هاي حمايت شده در دات نت مي باشد . با استفاده از زبان فوق علاوه بر اينکه مي توان برنامه هاي مبتني بر ويندوز را پياده سازي نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه هاي مبتني بر وب که از تکنولوژي ASP.NET استفاده مي نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان در دات نت ، مجموعه مقالاتي در رابطه با آموزش اصولي اين زبان آماده شده که بتدريج بر روي سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفي اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با ويژگي هاي منحصر بفرد برنامه هاي مبتني بر ويندوز در قياس با برنامه هاي مبتني بر DOS ، آشنا شده و پس از مروري مختصر به روند شکل گيري نسخه هاي متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم .

برنامه نويسي مبتني بر DOS در مقابل ويندوز
برنامه نويسي مبتني بر ويندوز داراي تفاوت هاي عمده اي نسبت به برنامه نويسي سنتي در محيط DOS است.برنامه هاي DOS ، مسيري دقيق و مشخص را ازابتدا تا پايان دنبال مي نمايند . رويکرد فوق ، باعث بروز محدوديت هائي در رابطه با عملکرد برنامه ها از يکطرف و تحميل محدوديت هائي به کاربران در طي نمودن مسير مشخص شده ، مي گردد. از زاويه اي خاص مي توان عملکرد يک برنامه مبتني بر DOS را مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائي سالن ، مي بايست طول سالن طي تا به انتهاي آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، مي بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا" امکان بازنمودن درب هاي خاصي ، وجود خواهد داشت . ويندوز ، دنياي جديدي از برنامه نويسي مبتني بر "رويداد" را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک Textbox ، نمونه هائي از يک "رويداد" مي باشند. کدهاي نوشته شده ، نحوه برخورد با يک رويداد را مشخص مي نمايد. براي رسيدن به انتهاي يک سالن کافي است بر روي "انتهاي سالن " ، کليک نمود و ديگر ضرورتي به پيمودن تمامي مسير تا رسيدن به انتهاي سالن نخواهد بود . درصورتيکه به انتهاي سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلي نيست که انتظار آن را داشته ايم ، بسادگي مي توان مقصد جديدي را براي خود انتخاب ، بدون اينکه ضرورتي به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل هاي لازم در ارتباط با حرکت شما را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ي مورد نظر انجام خواهد داد . با استفاده از VB.NET ، مي توان کدهاي لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان مي توانند کدهاي لازم در رابطه با رويدادهائي که امکان تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه مي توان از نوشتن کدهاي ديگر بمنظور برخورد با رويدادهاي غيرضروري ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معني است که اگر مي خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد "کليک" را داشته باشد ، مي بايست صرفا" کد مربوط به رويداد " کليک"، نوشته گردد و الزامي به نوشتن کدهاي لازم بمنظور برخورد با رويداد "کليک مضاعف" ، وجود نخواهد داشت . در دنياي برنامه نويسي DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام مي دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
يکي ديگر از مزاياي مهم برنامه هاي ويندوز ، عدم وابستگي برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بيني و برنامه نويسان نياز به آگاهي از نحوه عملکرد يک دستگاه سخت افزاري خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتي به آگاهي از نحوه عملکرد هر نوع چاپگر ليزري، بمنظور ايجاد خروجي مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين هاي عمومي که با درايورهاي مورد نظر مرتبط مي گردند ، فراهم مي نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد .
روتين هاي عمومي اصطلاحا" Windows (API ) Application Programming Interface ناميده مي شوند .

تاريخچه ويژوال بيسيک
قبل از معرفي ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه استفاده از ++C بهمراه موارد پيچيده اي در اين خصوص بودند . بدين ترتيب ، صرفا" افراد خاص آموزش ديده، قادر به خلق نرم افزارهاي قدرتمند بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و مي توان اين ادعا را داشت که امروزه خطوط زيادي از برنامه هاي نوشته شده با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسي تحت ويندوز را با حذف عمليات اضافي براي نوشتن کدهاي لازم جهت طراحي بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ، زمانيکه بخش رابط کاربر ، ترسيم مي گردد ، برنامه نويس مي تواند کدهاي لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنياي برنامه نويسي با تغيير مهمي مواجه گرديد. در اين راستا امکانات مناسبي براي نوشتن برنامه هاي مبتني بر بانک هاي اطلاعاتي ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدي با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه هاي شماره چهار و پنج ، قابليت هاي نسخه سه را افزايش و اين امکان را براي پياده کنندگان نرم افزار فراهم نمود تا برنامه هاي خود را جهت اجراء در محيط ويندوز 95 ، طراحي و پياده سازي نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن کدهائي گرديدند که امکان استفاده از آنان توسط ساير پياده کنندگان نرم افزار که از زباني ديگر استفاده مي کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدي بمنظور دستيابي به بانک هاي اطلاعاتي را ارائه نمود: ADO)ActiveX Data Objects ) . يکي از اهداف اوليه طراحي ADO ، امکان دستيابي به بانک هاي اطلاعاتي براي پياده کنندگان برنامه هاي مبتني بر وب است که از تکنولوژي ASP ، استفاده مي نمايند.
همزمان با ارائه جديدترين نسخه ويژوال بيسيک که VB.NET ناميده مي شود ، بسياري از محدوديت هاي مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته ويژوال بيسيک با انتفادات فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياري آن را نظير يک اسباب بازي در دنياي وسيع زبان هاي برنامه نويسي مي پنداشتند. VB.NET با غلبه بر مشکلات نسخه هاي پيشين ، توانسته است در مدت زمان کوتاهي ، بعنوان يک ابزار پياده سازي بسيار قدرتمند مطرح و گزينه اي مناسب براي برنامه نويسان در تمامي سطوح باشد .

نصب VB.NET
براي نصب VB.NET ، از دو رويکرد متفاوت مي توان استفاده کرد :

نصب بهمراه ويژوال استوديو دات نت

نصب نسخه استاندارد

هر يک از گزينه هاي فوق ، امکان ايجاد برنامه هاي مبتني بر ويندوز را فراهم مي نمايند . مراحلي که در ادامه ذکر مي گردد ، نحوه نصب ويژوال استوديو را تشريح مي نمايد .

مرحله اول : برنامه Setup.exe را از روي CD مربوطه فعال نمائيد.

مرحله دوم : جعبه محاوره اي ، مراحل و اولويت هاي عمليات نصب را نشان خواهد داد. بمنظور صحت عملکرد VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازي عناصر (Components) است . بر روي گزينه Windows Component Update ، کليک نمائيد.

مرحله سوم : برنامه نصب در ادامه سيستم را بررسي تا نوع عناصري را که مي بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازي به وضعيت ماشيني که بر روي آن ويژوال استوديو دات نت نصب مي گردد، بستگي خواهد داشت .

مرحله چهارم : با توجه به اينکه ممکن است در زمان بهنگام سازي لازم باشد چندين مرتبه سيستم راه اندازي گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتي به نشستن و نگاه کردن به کامپيوتر و واکنش لازم ( درج نام و رمز عبور به سيستم ) پس از هر مرتبه راه اندازي سيستم نباشد . بدين ترتيب در زمان راه انداري سيستم ، عمليات مربوطه بصورت اتوماتيک و بدون نياز به تايپ نام و رمز عبور ، انجام خواهد شد . عمليات فوق ، اختياري است و در صورتيکه گزينه فوق انتخاب نگردد ، با هر مرتبه راه اندازي سيستم، پيام مناسب ارائه و مي بايست واکنش لازم ( تايپ نام و رمز عبور) را انجام داد .

مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now ، بهنگام سازي عناصر (Components) آغاز مي گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده مي شود . در مقابل عنصر جاري براي بهنگام سازي نيز يک فلش قرمز رنگ نسان داده مي شود.

مرحله ششم : پس از بهنگام سازي عناصر ، مجددا" به صفحه اصلي Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم مي گردد.( کليک نمودن برروي گزينه Visiual Studio.NET )
نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازي نمائيد ، لازم است IIS و FrontPage Extensions قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روي کامپيوتري نصب مي گردد که داراي سيستم عامل ويندوز 2000 نسخه Professional است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمي توانيد برنامه هاي تحت وب را بصورت محلي بر روي کامپيوتر خود پياده سازي نمائيد .

مرحله هفتم : نظير اکثر برنامه هاي نصب ، ليستي از گزينه هاي موجود ( شامل عناصر ) براي نصب در اختيار شما قرار مي گيرد . شما مي توانيد ، صرفا" آنچيزي را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتي به استفاده از ويژوال ++C دات نت را نداريد ، مي توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه اي که در اين مرحله انتخاب نمي گردد ، مي توان در صورت ضرورت آن را در آينده نصب کرد. براي هر يک از امکاناتي که قرار است نصب گردند ، سه بخش اطلاعاتي متفاوت نمايش داده مي شود :
بخش Feature Properties . فايل ها ي مورد نظر براي نصب و ميزان فضاي مورد نياز را نشان مي دهد .
بخش Feature description . هر Feature چيست و چه عملياتي را انجام مي دهد .
بخش Space Allocation ، وضعيت فضاي ذخيره سازي هارد را با توجه به گزينه هاي انتخاب شده ، نشان خواهد داد .
نکته : زمانيکه ويژوال استوديو دات نت ، اجراء مي گردد مجموعه اي از اطلاعات بين ديسک و حافظه مبادله مي گردد . بنابراين لازم است به ميزان کافي ظرفيت آزاد بر روي هارد ديسک وجود داشته باشد ، در اين راستا نمي توان دقيقا" مشخص نمود که به چه ميزان فضاي آزاد نياز خواهد بود ولي حداقل يکصد مگابايت توصيه مي گردد .

مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه اي گسترده از فايل هاي مستندات ( راهنما ) است . در اين مرحله مي توان تنظيمات لازم در خصوص اجراي مستندات از طريق CD و يا دايرکتوري نصب شده بر روي هارد را انجام داد . در اين زمينه مي توان يک مسير بر روي هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روي CD باقي بمانند .

مرحله نهم : پس از انتخاب عناصر مورد نظر براي نصب ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز مي گردد . مدت زمان نصب ، بستگي به موارد انتخابي و نوع سيستم دارد . مثلا" نصب تمام ويژوال استوديو دات نت بهمراه تمامي مستندات بر روي يک ماشين با دارا بودن 256 مگابايت حافظه اصلي، سرعت 650 مگاهرتز و دوازده گيگابايـت هارد ديسک ، حدود يک ساعت طول خواهد کشيد .

مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسي لازم در خصوص بهنگام سازي انجام مي گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود .

پس از انجام مراحل فوق ، ويزوال استوديو دات نت بر روي سيستم نصب و محيط لازم براي نوشتن برنامه هاي VB.NET فراهم شده است .

 

نویسنده مطلب : لوتوس   \  تاریخ درج : چهارشنبه 12 بهمن1384   11:41 \

Java-8 ارتقائ خودكار انواع در عبارات

دسته بندی : / لینک ثابت

ارتقائ خودكار انواع در عبارات Automatic Type promotion in Expressions


علاوه بر انتسابها ، در شرايط ديگري هم تبديلات خاص انواع ممكن است اتفاق
بيفتد : در عبارات . حالتي را در نظر بگيريد كه در يك عبارت ، ميزان دقت لازم
براي يك مقدار واسطه گاهي از دامنه هر يك از عملوندهاي خود تجاوز مي نمايد .
بعنوان مثال ، عبارت زير را در نظر بگيريد :

+ byte a = 40;
+ byte b = 50;
+ byte c = 100;
+ int d = a * b / c;

نتيجه قلم واسطه a*b از دامنه هر يك از عملوندهاي byte خود تجاوز مي نمايد.
براي اداره اين نوع مشكلات ، جاوا بطور خودكار هر يك از عملوندهاي byteو shortو
را هنگام ارزشيابي يك عبارت به int ارتقائ مي دهد . اين بدان معني است كه زير
عبارت a*b با استفاده از اعداد صحيح و نه byte اجرا مي شود. بنابراين عدد 2000
نتيجه عبارت واسطه 50*40 مجاز است ، اگر چه aو bو هر دو بعنوان نوع byte مشخص
شده اند .
همانقدر كه ارتقائ خودكار مفيداست ، مي تواند سبب بروز خطاهاي زمان كامپايل
(compile-time) گردد . بعنوان مثال ، اين كد بظاهر صحيح يك مشكل را بوجود
مي آورد .

+ byte b = 50;
+ b = b * 2; // Error! Cannot assign an int to a byte!

اين كد تلاش مي كند تا 50*2 را كه يك مقدار كاملا" معتبر byte است به يك
متغير byte ذخيره كند . اما چون عملوندها بطور خودكار هنگام ارزشيابي عبارت به int
ارتقائ يافته اند ، جواب حاصله نيز به int ارتقائ يافته است . بنابراين
جواب عبارت اكنون از نوع int است كه بدون استفاده از تبديل cast امكان نسبت
دادن آن به يك byte وجود ندارد. اين قضيه صادق است ، درست مثل همين حالت ، حتي
اگر مقدار نسبت داده شده همچنان با نوع هدف سازگاري داشته باشد .
در شرايطي كه پيامدهاي سر ريز (overflow) را درك مي كنيد، بايد از يك تبديل
صريح cast نظير مورد زير استفاده نماييد .

+ byte b = 50;
+ b =( byte( )b * 2);

كه مقدار صحيح عدد 100 را بدست مي آورد .

قوانين ارتقائ انواع
علاوه بر ارتقائbyteو shortوبه int جاوا چندين قانون ارتقائانواع را تعريف
كرده كه قابل استفاده در عبارات مي باشند . اين قوانين بصورت زير هستند . اول
اينكه كليه مقادير byteو shortوبه int ارتقائ مي يابند ، همانگونه كه قبلا"
توضيح داده ايم . آنگاه اگر يك عملوند ، long باشد ، كل عبارت به long ارتقائ
مي يابد . اگر يك عملوند float باشد ، كل عبارت به float ارتقائ مي يابد . اگر
هر يك از عملوندها يك double باشند ، حاصل آنها double خواهد شد .
برنامه بعدي نشان مي دهد كه چگونه هر يك از مقادير در عبارت ارتقائ مي يابد
تا با آرگومان دوم به هر يك از عملگرهاي دودويي ، مطابقت يابد .

+ class Promote {
+ public static void main(String args[] ){
+ byte b = 42;
+ char c = 'a';
+ short s = 1024;
+ int i = 50000;
+ float f = 5.67f;
+ double d =. 1234;
+ double result =( f * b )+( i / c( - )d * s);
+ System.out.println((f * b )+ " + " +( i / c )+ " - " +( d * s));
+ System.out.println("result = " + result);
+ }
+ }

اجازه دهيد به ارتقائ انواع كه در اين خط از برنامه اتفاق افتاده ، دقيقتر
نگاه كنيم :

+ double result =( f * b )+( i / c( - )d * s);

در اولين زير عبارت يعني f*b، b، به يك نوع float ارتقائ يافته و جواب زير
عبارت نيز از نوع float خواهد بود . در زير عبارت بعدي يعني i/c، c، به يك نوع int
ارتقائ يافته و جواب آن زير عبارت نيز از نوع int خواهد بود . سپس در زير
عبارت d*s ، مقدار S به نوع double ارتقائ يافته و نوع زير عبارت نيز double
خواهد بود . در نهايت اين سه مقدار واسطه ، float، int،، double، در نظر گرفته
مي شوند . خروجي float بعلاوه int از نوع float خواهد شد . آنگاه اين نتيجه
منهاي آخرين double به نوع double ارتقائ يافته ، كه نوع مربوط به جواب نهايي

نویسنده مطلب : لوتوس   \  تاریخ درج : چهارشنبه 12 بهمن1384   11:34 \

C-61 تابع ()fopen

دسته بندی : / لینک ثابت

تابع ()fopen براي باز كردن فايل مورداستفاده قرار گرفته و داراي الگوي زير
است : FILE *fopen(char *filename / *mode)

در الگوي فوق ، filename به رشته اي اشاره مي كند كه حاوي نام فايل و محل
تشكيل يا وجود آن است . نام فايل داده از قانون نامگذاري فايل برنامه تبعيت
مي كند و شامل دو قسمت : نام و انشعاب است كه بهتر است انشعاب فايل داده ، dat
انتخاب گردد . محل تشكيل يا وجود فايل مي تواند شامل نام درايو و يا هر مسير
موجود روي ديسك باشد . mode مشخص مي كند كه فايل چگونه بايد باز شود ( ورودي
خروجي و يا ... ) . مقاديري كه ميتوانند بجاي mode در تابع ()fopen قرار گيرند
همراه با مفاهيم آنها در جدول زير آمده اند . mode
مفهوم
(rt)r فايلي از نوع text را به عنوان ورودي باز مي كند
(wt)w فايلي از نوع text را به عنوان خروجي باز مي كند
(at)a فايل را طوري بازميكند كه بتوان اطلاعاتي را به انتهاي آن اضافه
نمود rb
فايلي از نوع باينري را به عنوان ورودي باز مي كند wb
فايلي از نوع باينري را به عنوان خروجي باز مي كند ab
فايل موجود از نوع باينري را طوري باز مي كند كه بتوان اطلاعاتي
را به انتهاي آن اضافه نمود
(r+t)r+ فايل موجود از نوع text را به عنوان ورودي و خروجي باز مي كند
(w+t)w+ فايلي از نوع text را به عنوان ورودي و خروجي باز مي كند
(a+t)a+ فايل موجود از نوع text را به عنوان ورودي و خروجي باز مي كند r+b
فايل موجود از نوع باينري را به عنوان ورودي و خروجي باز ميكند w+b
فايل از نوع باينري را به عنوان ورودي و خروجي باز مي كند a+b
فايل از نوع باينري را به عنوان ورودي و خروجي باز ميكند ( اين
فايل مي تواند قبلا" وجود داشته باشد ) .
جدول مقادير معتبر mode در تابع ()fopen

براي باز كردن فايل بايد يك اشاره گر از نوع فايل تعريف گردد تا به فايلي كه
توسط تابع fopen باز مي شود اشاره نمايد . اگر فايل به دلايلي باز نشود اين
اشاره گر برابر با NULL خواهد بود. بعنوان مثال ، دستورات زير را درنظر بگيريد: FILE *fp;( 1)
fp=fopen("A:test"/"w");( 2)

دستور (1)، متغير fp رااز نوع اشاره گر فايل تعريف مي كند و دستور (2) فايلي
بنام test را بر روي درايو A ايجاد مي نمايد ( چون حالت "w" ، فايل را به صورت
خروجي باز مي كند ) .
براي تشخيص اين كه آيا فايل با موفقيت باز شده است يا خير مي توان اشاره گر
فايل را با NULL مقايسه كرد. ( NULL ماكرويي است كه در فايل stdio.h تعريف شده
است و با حروف بزرگ بكار مي رود ) . اگر اشاره گر فايل برابر با NULL باشد بدين
معني است كه فايل باز نشده است :

if((fp=fopen("A:test"/"w"))==NULL)
{
printf("cannot open file \ n");
exit( 0);


نویسنده مطلب : لوتوس   \  تاریخ درج : چهارشنبه 12 بهمن1384   11:30 \

C-60 باز كردن فايل

دسته بندی : / لینک ثابت

هر فايل قبل از اين كه بتواند مورد استفاده قرار گيرد ، بايد باز گردد .
مواردي كه در حين باز كردن فايل مشخص مي شوند عبارتند از : 1
نام فايل 2
نوع فايل از نظر ذخيره اطلاعات (textيا binaryا) 3
نوع فايل از نظر ورودي خروجي ( آيا فايل فقط به عنوان ورودي است ، آيا
فقط بعنوان خروجي است يا هم بعنوان ورودي است و هم بعنوان خروجي ) .
يك فايل ممكن است طوري باز شود كه فقط عمل نوشتن اطلاعات بر روي آن مجاز
باشد . به چنين فايلي ، فايل خروجي گفته مي شود . اگر فايل طوري باز گردد كه
فقط عمل خواندن اطلاعات از آن امكان پذير باشد به چنين فايلي ، فايل ورودي گفته
مي شود . اگر فايل طوري باز شود كه هم عمل نوشتن اطلاعات بر روي آن مجاز باشد و
هم عمل خواندن اطلاعات از آن ، به چنين فايلي ، فايل ورودي و خروجي گفته ميشود.
اگر فايلي قبلا" وجود نداشته باشد ، در حين باز شدن بايد بعنوان فايل خروجي باز
شود . اگر فايلي قبلا" وجود داشته باشد و بعنوان خروجي باز گردد ، اطلاعات قبلي مي رود ، براي باز كردن فايل از تابع ()fopen استفاده مي گردد .


نویسنده مطلب : لوتوس   \  تاریخ درج : چهارشنبه 12 بهمن1384   11:28 \

C-59 سازمان فايل

دسته بندی : / لینک ثابت

منظور از سازمان فايل اين است كه اطلاعات در فايل چگونه ذخيره شده و سپس به
چه روش هايي مورد بازيابي قرار مي گيرند . يا بعبارت ديگر قانون حاكم بر نحوه
ذخيره و بازيابي داده ها و فايل را سازمان فايل گويند . حال به دو سازمان فايل
پرداخته مي شود : 1
سازمان فايل ترتيبي (sequential) . 2
سازمان فايل تصادفي (random) .
در سازمان فايل ترتيبي ، ركوردها به همان ترتيبي كه از ورودي خوانده ميشوند
در فايل قرار مي گيرند و در هنگام بازيابي ، به همان ترتيبي كه در فايل ذخيره
شده اند مورد دسترسي قرار مي گيرند . بعنوان مثال اگر صدمين ركورد فايل بخواهد
مورد دسترسي قرار گيرد، بايد 99 ركورد قبل از آن از فايل خوانده شوند. فايلهاي
ترتيبي معمولا" داراي يك فيلد كليد هستند . ( فيلد كليد ، فيلدي است كه بعنوان
شاخص ركورد مورد استفاده قرار ميگيرد ) و بر اساس آن ، مرتب ميباشند ( شكل 1 ).
بعنوان مثال در مورد دانشجويان ، شماره دانشجويي و در مورد كارمندان شماره
كارمندي ، فيلد خوبي براي شاخص فرد مي باشند .
شماره شناسايي نام موضوع درس نمره 12
Ahmad پاسكال 20 23
Ali پاسكال 15 34
Reza پاسكال 18 20 C Jafar 56

شكل (1) . نمونه اي از يك فايل ترتيبي

در سازمان فايل تصادفي ، به هر ركورد يك شماره اختصاص مي يابد . لذا اگر
فايل داراي n ركورد باشد ، ركوردها از 1تا nا شماره گذاري خواهند شد . وقتي كه
ركوردي در يك فايل با سازمان تصادفي قرار گرفت ، محل آن توسط يك الگوريتم پيدا
كننده آدرس ، كه با فيلد كليد ارتباط دارد مشخص مي شود . در اين صورت دو ركورد
با فيلد كليد مساوي ، نمي توانند در فايل تصادفي وجود داشته باشند . در سازمان
فايل تصادفي مستقيما" مي توان به هر ركورد دلخواه دسترسي پيدا كرد ( بدون اين
كه ركوردهاي قبل از آن خوانده شوند ) . شكل (2) نمونه اي از يك فايل تصادفي را
نمايش مي دهد .
شماره ركورد شماره شناسايي نام موضوع درس نمره 13
12 Ahmad پاسكال 20 20 C Jafar 56 20
24
23 Ali پاسكال 15 31
34 Reza پاسكال 18
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ اي از فايل تصادفي


نویسنده مطلب : لوتوس   \  تاریخ درج : چهارشنبه 12 بهمن1384   11:26 \

جواب دادن به لطف دوستان (جواب دادن نظرات)

دسته بندی : / لینک ثابت

سلام امروز ميخوام دربازه نظرات و لطف هاي بچه‌ها بگم . جواب لطف هاشونو بدم:

۱-شادي خانم درباره هافمن خواستن كه براشون ميل زدم و كدي كه داشتم فرستادم باز هم اكه نياز به توضيح داشتن ميل بزنن.

۲- آقا ژرژ ژزف(http://www.shazdeh63.blogfa.com/) هم كه حسابي  لطف كردن ان شا الله موفق باشن.

۳- سارا خانوم ما خيلي مخلصتيم. ديگه نظر نميزاري؟

۴- عمو سعيد چشم سليقه هم به خرج داديم و الان داريم درباره جند زبان مينويسم.

 ۵- آقا محمد مرسي از لطفت

۶- مريم خانوم شما هم مرسي

۷- سيده جان شما هم مرسي به داداشتون هم سر زدم .

۸- sa2n مرسي كه شما هم سر زدي به سيده سلام برسون.

۹- همسفر جون( http://tekiyegah.blogfa.com/) مرسي.باز هم سوالا داشتي بپرس.

۱۰- آقا مصطفي (http://www.m-asemoni.blogfa.com/) مرسي از شعر هاي قشنگت بهمون سر نميزني ديگه دلمون براي شعرات تنگ شده.

۱۱- نرو همنفس (http://bachelor.mihanblog.com/) جوابتو برات نظر گذاشتن.

۱۲- نسترن جان مرسي(http://www.naassy.blogfa.com/) شما هم موفق باشيد

۱۳- شهرزاد خانوم چشم مثالهاي سخت تر يگم .شما بليد بقيه چي. همه كه كثل شما نيستن. بايد رعايت همه بشه.

۱۴- آسموني جان(http://www.m-asemoni.blogfa.com/) مرسي براي شعرات ديكه سر نميزني.

۱۵- چشم نرگس خانوم درباره خود برنامه نويسي هم توضيح ميدم. شما چون وسطاي كار اميد مطالب برات يكم سنگينه اما باشه درباره خود برنامه نويسي هم حتما مينويسم

۱۶- خدمت هنگامه خانوم بگم که برای گذاشتن عکس تو وبلاگتون اول باید عکسها رو روی یه سایت که کارش آپلود عکسه بزارید بعد بعد اون سایت یه آدرس به شما میده که با استفاده از اون میتونید اونو تو وبلاگتون بزارید گذاشتنش هم که سادس دکمه افزودن تصویر رو میزنید (کنتر لینکه از اونجایی که شکلکها رو میزارید ۲تا بیاین سمت چپ) بعد آدرس عکس رو میدین و براتون عکسو مینزاره تو متن. باز هم اگه سوالی داشتی بگو.

در آخر از همه‌ي دوستان عزيز تشكر ميكنم

از دوستاني كه اجازه دادن بهاشون تبادل لينك كنم هم تشكر ميكنم در ضمن هر كسي دوست داشت ميتون منو بلينكه.اگه تو اين متن آدرس بعضي از دوستان رو نذاشتم معذرت ميخوا بخاطر كمبود وقت بود  ان شا الله ناراحت نشن . همگي عزيزيد

مرسي از همتون نظراتتون باعث دلگرمي منه.


نویسنده مطلب : لوتوس   \  تاریخ درج : یکشنبه 9 بهمن1384   13:41 \

XML در دات نت ( بخش دوم )

دسته بندی : / لینک ثابت

در بخش اول اين مقاله به بررسي مفاهيم وچالش هاي موجود در زمينه طراحي و پياده سازي برنامه هاي کامپيوتري بمنظور استفاده در محيط اينترنت اشاره و محيط دات نت ماکروسافت از اين زاويه، مورد بررسي اوليه قرار گرفت . در بخش دوم ، به بررسي استانداردهاي کنسرسيوم وب در دات نت ، کلاس هاي XML در دات نت و امکانات امنيتي در ارتباط با XML ، خواهيم پرداخت .

استانداردهاي کنسرسيوم وب در دات نت
امکان استفاده از XML در محيط ها و برنامه هاي متعددي وجود دارد . تحقق خواسته فوق، بکمک استانداردهائي است که توسط کنسرسيوم وب ايجاد شده است. XML در دات نت، استانداردهاي ارائه شده توسط کنسرسيوم وب را حمايت تا زمينه ارتباط متقابل بين برنامه هاي استاندارد شده ، فراهم گردد.


Xml Information set : کنسرسيوم وب مشخصاتي را بعنوان مجموعه اطلاعات مرتبط با XML ، استاندارد و ارائه نموده است .استاندارد فوق، شامل مجموعه اي از تعاريف بمنظور استفاده توسط ساير مشخصاتي است که بنوعي به اطلاعات موجود در يک سند XML مراجعه مي نمايند. يک سند XML ، حاوي تعدادي از مجموعه اطلاعات ارائه شده در استاندارد فوق است . مشخصات فوق ، اطلاعات لازم بمنظورتشريح ساختار يک سند XML را ارائه مي نمايد .يک سند XML شامل يک مجموعه اطلاعات است، اگر " خوش - شکل " بوده و محدوديت هاي تعريف شده در رابطه با Namespace را در مجموعه اطلاعات ومشخصات XML ، تامين نمايد . اغلب استانداردهاي XML کنسرسيوم وب، از تعاريف ارائه شده در مشخصه فوق ، اقتباس ( مشتق ) شده اند.براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/xml-infoset مراجعه کرد .

XML 1.0 Namespace . استاندارد فوق ،ضوابط لازم بمنظور ايجاد يک شي داده بصورت يک سند XML ، را تعريف مي نمايد . مشخصات فوق همچنين ،ساختار فيزيکي و منطقي يک سند XML و ساير خصايص مربوطه را تعريف مي نمايد. براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/Tr/REC-xml مراجعه استفاده کرد.namespace ها درXML يک namespace را تعريف و نحوه استفاده از namespace در زمان ايجاد يک گرامر XML را که شامل المان ها و خصلت هائي است، مشخص مي نمايد . براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/REC-xml-names مراجعه کرد .

XML Path Language ( XPath) 1.0 : استاندارد XPath ، گرامر و سمنتيک مورد نياز براي آدرس دهي بخش هاي متفاوت يک سند XML را مشخص مي نمايد. XPath ، همچنين شامل امکانات پايه براي انجام عمليات در رابطه با رشته ها ، اعداد و منطق است . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XPath مراجعه کرد .

XSL Transformation (XSLT) 1.0 : استاندارد XSLT ، گرامر و سمنتيک XSLT را تعريف و زباني براي تبديل اسناد XML به فرمت هاي ديگر است . تبديل مورد نظر( بيان شده ) در XSLT يک Style Sheet ناميده مي شود . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XSLT مراجعه کرد .

Document Object Model )DOM) : استاندارد DOM سطح يک و دو، اينترفيس لازم را بمنظور دستيابي و انجام عملياتي نظير: بهنگام سازي Style ،محتويات و ساختار يک سند از طريق برنامه نويسي ، فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/DOM مراجعه کرد .

XML Schema Definition Language )XSD) : استاندارد XSD ، روشي براي تشريح ساختار ، محتويات و سمنتيک يک سند XML است . Schema امکان استفاده از واژه هاي مشترک را فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/XML/Schema مراجعه کرد .

جدول زير نسخه هاي پياده سازي شده هر يک از استانداردهاي فوق را در دات نت نشان مي دهد :

استاندارد کنسرسيوم وب

namespace مربوطه در دات نت

XML 1.0 and Namespaces in XML

System.Xml

XPath

System.Xml System.Xml.XPath

XSLT

System.Xml.Xsl

DOM Level 1

System.Xml

DOM Level 2 Core

System.Xml

XML Schemas

System.Xml System.Xml.Schemas

XML Schema Object Model(SOM)

System.Xml.Schemas

دات نت با ارائه namespace و کلاس هاي پايه از استانداردهاي ارائه شده توسط کنسرسيوم وب، حمايت مي نمايد . جدول زير نسخه هاي پياده سازي شده استانداردهاي کنسرسيوم وب، در دات نت را نشان مي دهد .

W3C XML standard

.NET Framework namespace

.NET Framework class

XML 1.0 and Namespaces in XML

System.Xml

Not applicable

XPath

System.Xml System.Xml.XPath XPath base class

XSLT

System.Xml.Xsl XslTransform base class

DOM Level 1

System.Xml XmlDocument class

DOM Level 2 Core

System.Xml XmlDocument class

XML Schemas

System.Xml System.Xml.Schemas XmlSchema

XML Schema Object Model(SOM)

System.Xml.Schemas XmlSchema

مروري بر کلاس هاي XML در دات نت
کلاس هاي پايه تجريدي در دات نت ، اساس مبادله اطلاعات مي باشند . جدول زير کلاس هاي پايه در فريمورک دات نت را نشان مي دهد :

Abstract base class

کلاس های  مشتق شده

XmlReader

XmlTextReader XmlNodeReader XmlValidatingReader

XmlWriter

XmlTextWriter

XmlNavigator

XmlPathNavigator

XmlResolver

XmlUrlResolver


مقايسه بين MSXML 4.0 و دات نت
ماکروسافت دو روش متفاوت بمنظور کار با XML ، در اختيار برنامه نويسان قرار داده است :

MSXML، که در ابتدا پارسر XML ناميده مي شد.
کلاس هاي XML فريمورک دات نت
MSXML 4.0 ، با پارسر MSXML جايگزين شده است . عملکرد MSXML 4.0 در اغلب موارد مشابه کلاس هاي فريمورک دات نت است . تفاوت عمده در نحوه استفاده از عناصر است . در MSXML بمنظور ارائه امکانات از اشياء COM)Componenet Object Model) استفاده شده ( ازManaged code استفاده نمي گردد ) و داراي امکانات از قبل ساخته اي براي SAX)Simple API for XML) است .
MSXML 4.0 ، شامل سرويس هاي زير است :

DOM
XSD
XPath 1.0
XSLT 1.0
SAX ( يک مدل برنامه نويسي و مشابه با DOM است )
Schema Object Model)SOM) ، شامل امکانات API اضافه ، بمنظور دستيابي به سندهاي XML Schema از طريق برنامه نويسي است .
کلاس هاي XML فريمورک دات نت ، عمليات مشابهي را نظير MSXML 4.0 انجام مي دهند. طراحي کلاس هاي فوق بگونه اي است که امکان استفاده از آنان در يک محيط مديريت يافته، خصوصا" سرويس هاي وب XML ،وجود دارد .
جدول زير ويژگي هر يک را نشان مي دهد :

استاندارد کنسرسيوم وب

MSXML  ( محيط مبتنی بر COM )

کلاس های XML فريمورک دات نت ( محيط مديريت يافته دات نت )

XML 1.0 and Namespaces in XML

yes yes

XPath

yes yes

XSLT

yes yes

DOM Level 1

yes yes

DOM Level 2 Core

no yes

XML Schemas

yes yes

XML Schema Object Model(SOM)

yes (فقط خواندنی) yes

Simple API for Xml (SAX)

yes no

XML و امنيت در دات نت
XML ،مهمترين امکان ذخيره سازي داده ها و انتقال اطلاعات د ر فريمورک دات نت محسوب مي گردد. بنابراين تمام ملاحظات امنيتي در فريمورک دات نت، به رويکردهاي امنيتي XML مربوط مي گردد . دستيابي به سرويس هاي وب XML مي تواند محدود به سرويس گيرندگان تائيد شده و مجاز باشد( مشابه دستيابي کاربران مجاز به يک وب سايت ) .

مدل مبتني بر شي XML براي رمزنگاري اشياء
کلاس SecurityElement ، مدل XML لازم بمنظور رمزکردن اشياء را ارائه مي نمايد. کلاس فوق ، بمنظور استفاده همراه يک سيستم ايمني در نظرگرفته شده است و امکان استفاده از آن بعنوان يک کلاس شي XML عمومي وجود نخواهد داشت .

XML signature . کنسرسيوم وب در حال پياده سازي مشخصه اي براي امضاء ديجيتالي مبتني بر XML است . System.Security.Cryphtography.xml ،مدلي مبتني بر XML براي استفاده از سيستم امنيتي فريمورک دات نت بوده که از امضاهاي XML حمايت مي نمايد. مدل فوق اين امکان را به اشياء XML خواهد داد که از طريق يک امضاء ديجيتالي تاييد گردند . رمزنگاري باعث حفاظت اطلاعات در مقابل نمايش و يا تغييرات شده وبدين ترتيب يک کانال ايمن ارتباطي ايجاد خواهد شد .

رمزنگاري سرويس هاي وب XML بمنظور انتقال . برنامه هاي مبتني بر دات نت از پروتکل SOAP ، بمنظور ارتباط با سرويس هاي وب XML استفاده مي نمايند( فرمت اوليه پيام ها ) . کتابخانه کلاس فريمورک دات نت ، ضمائم SOAP را بمنظور اجراء ، همراه با يک متد سرويس وب XML ، ارائه مي نمايد . namespace ، شامل کلاس هائي است که پروتکل هاي مورد نياز براي انتقال داده ها را فراهم مي نمايد .

ارسال مدارک تائيد شده .در موارديکه يک سند XML ايمن شده باشد ،بدون ارسال مدارک لازم، امکان دستيابي و استفاده از آن وجود نخواهد داشت. کلاس XmlTextReader ،امکان ارسال مدارک را از طريق استفاده از کلاس CredentialCache موجود در System.Net فراهم مي نمايد .


نویسنده مطلب : لوتوس   \  تاریخ درج : شنبه 8 بهمن1384   23:54 \

XML در دات نت ( بخش اول )

دسته بندی : / لینک ثابت

XML ، يکي از مهمترين دستاوردهاي بشريت در عرصه نرم افزارطي ساليان اخير است که بدون شک بيشترين تاثير را در ارتباط با طراحي و پياده سازي برنامه هاي کامپيوتري خصوصا" در اينترنت، بدنبال داشته و خواهد داشت . XML ، يکي از استانداردهاي ارائه شده توسط کنسرسيوم وب است که زمينه استفاده از آن براي تمامي توليدکنندگان نرم افزار، فراهم شده است . XML ، بهمراه خود مجموعه اي از تکنولوژي هاي ديگر را ايجاد نموده است، بطوريکه امروزه از آن بعنوان يک خانواده بزرگ ياد مي گردد (XSLT , XSD ,DOM , XPath ,...) . بديهي است توجه به استانداردهاي فوق براي توليدکنندگان نرم افزار بسيار حايز اهميت بوده و در اين راستا ،شرکت هاي عظيم نرم افزاري بدنبال ارائه بستر مناسب براي طراحي و پياده سازي نرم افزار بر اساس واقعيت هاي موجود، خصوصا" پديده شگرف اينترنت مي باشند . ماکروسافت، بعنوان يکي از شرکت هاي عظيم نرم افزاري ،پروژه دات نت را مطرح و در نهايت آن را در اختيار علاقه مندان قرار داده است . XML ، در دات نت داراي نقشي بسيار مهم و محوري بوده و لازم است با جايگاه آن بصورت اصولي آشنا شويم . در اين مقاله، به بررسي جايگاه XML در دات نت پرداخته مي گردد .

مقدمه
XML ، يک تکنولوژي استاندارد ايده آل براي برنامه هائي است که بر روي بستر اينترنت اجراء مي گردند. ماکروسافت در پروژه دات نت ،از استادنداردهاي کنسرسيوم وب پيروي و نسخه هاي اختصاصي خود را طراحي و پياده سازي نموده است. بدين ترتيب (با توجه به تبعيت ماکروسافت از استانداردهاي کنسرسيوم وب)، مي توان اين اطمينان را بدست آورد که نرم افزارهاي توليد شده در دات نت ، قابليت ارتباط با ساير برنامه هاي توليد شده مبتني بر استانداردهاي کنسرسيوم وب را بخوبي دارا مي باشند . در محيط اينترنت، داده ها مي توانند از منابع متفاوت و به اشکال گوناگون دريافت گردند . س