تبليغاتX
آموزش زبانهای برنامه نویسی و ترفندستان

errorist

هادی بهارلو

errorist

http://errorist.blogfa.com

آموزش زبانهای برنامه نویسی و ترفندستان

آموزش زبانهای برنامه نویسی و ترفندستان

آموزش زبانهای برنامه نویسی و ترفندستان

کاش همه مثل گوسفند ساده و بی آلایش بودن!! وبلاگ تخصصی - آموزشی گروه برنامه نویسی فینال شهرستان داران

آموزش زبانهای برنامه نویسی و ترفندستان

 
دوست من خوش آمديد!   امروز  
 
فهرست اصلی
لینکهای سریع
صفحه اول
آرشیو
ایمیل
موضوعات





آرشیو مطالب

لینکستان
اگر می خواهید با وبلاگ ما تبادل لینک کنید لینک ما را با نام " آموزش زبانهای برنامه نویسی و ترفندستان " قرار دهید و در بخش تماس با ما و یا نظرات لینک خود را قرار دهید.
آرشیو تماس با ما


رتبه بندی سایتها در موتورهای جستجوگر

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

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

يك راه براي دستيابي به اين هدف توجه به مكان قرارگيري و تراكم عبارات جستجو يا كلمات كليدي  در يك
صفحه وب است. موتور جستجو بررسي مي كند که كلمات كليدي در بخش عنوان(Title)، بخش سرآغاز(Head)، در ابتداي پاراگراف يا در متن آمده اند. فرض بر اينست كه صفحات مرتبط با کلمات مورد جستجو، اين عبارات كليدي را برجسته تر و چشمگيرتر مورد استفاده قرار مي دهند.
موتور جستجو تحليل مي كند كه كلمات كليدي در مقايسه با ديگر كلمات چند مرتبه به كار رفته اند.
 Meta tag ها نيزممكن است در تشخيص ارتباط نقش داشته باشند، هرچند بسياري از موتورهاي جستجو آنها را در نظر نمي گيرند و آن دسته كه به آن اهميت مي دهند، ممكن است به صورتهاي
متفاوتي آنها را ارزشگذاري كنند.

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

در پايان، موتورهاي جستجو تحليل ارتباط (Link Analysis) را نيز در مشخص كردن ارزشيابي خود به كار مي برند. با تحليل اينكه صفحات چگونه به يكديگر متصل مي شوند يك موتور جستجو مي تواند مشخص كند  که آن
صفحه در چه مورد است و آيا آن صفحه به اندازه كافي مهم است كه در رتبه بندي به حساب آيد يا خير؟
مهم است كه به ياد داشته باشيم , با اينكه اكثر موتورهاي جستجو از اصول
يكساني پيروي مي كنند، الگوريتم هاي  متفاوتي دارند. به اين دليل است كه انجام يك جستجو در موتورهاي جستجوي مختلف، نتايج بسيار متفاوتي به بارمي آورد. براي مثال ممكن است برخي موتورهاي جستجو تعداد بيشتري از صفحات وب را فهرست کنند و برخي ديگر در فاصله هاي زماني کم تر اين کار را انجام دهند.


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

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

با توضيحات فوق، به نظر مي رسد بايد در مورد خدماتي که ادعا مي کنند سايت شما را با اندک هزينه اي در صدها و هزاران موتور جستجو در مکان مناسبي قرار مي دهند،  بيشتر احتياط کرد.

حسن لاچینانی سه شنبه بیستم اسفند 1387  نظر بدهید!

توجه

به زودی قسمت پرسش و پاسخ راه اندازی خواهد شد .

البته منوط به ارسال نظرات دوستان .

با تشکر مدیر وبلاگ

هادی بهارلو جمعه یازدهم بهمن 1387  نظر بدهید!

babylon هم جاسوس از آب در امد

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

يك كارشناس برنامه نويسي و شبكه هاي  اينترنتي گفت كه   در هنگام تحقيق و كار بروي برنامه مترجم چند زبانه بابيلون" babylon dictionary" متوجه مساله مشكوكي در اين برنامه رايانه اي  شده است .
 
به گزارش قدسنا،  اين كارشناس رايانه اي گفت :  در سال 2000 كه اين برنامه را به دست آوردم بسيار خوشحال شدم ،چون اين برنامه چندين زبان را پشتيباني مي كند و جالب آنكه برخلاف ساير نرم افزارهاي ترجمه نسخه عبري آن بسيار كامل بود و با تحقيق و موشكافي در برنامه و با بكار بردن يك فاير وال غير صهيونيستي متوجه شدم كه اين برنامه اطلاعات پاكت هاي تي سي پي  را به سروري با دامين منتهي به "سي او . آي ال" ارسال مي كند .
 
 tcp pockets to a sercer that ends with the name .co.il ) ) و با علم به اينكه اين دامنه (دومين) متعلق به سرورهاي سايتهاي اسرائيلي است ،اطمينان پيدا كردم كه اين يك شركت يهودي با برنامه نويسان يهودي است كه هر چند به امريكا يا كشوري ديگر مهاجرت كرده است اما سياستهاي صهيونيستي را دنبال مي كند و در سيستم جاسوسي يهوديان اسرائيل بكار مي رود .

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

 شركتهاي يهودي جهان به شدت در امور تجسسي دخالت مي كنند  و اخيرا با خريد تمام شركتهاي بزرگ firewall سهم خود را از بازار تجسس و دزدي اطلاعات بشدت بالا برده اند و در صورت ترديد در اين مساله مي توان با جستجويي اندك درباره شركت سرمايه گذاري  mashov در اينترنت اطلاعاتي در اين باره بدست آورد .

وي مي افزايد كه برنامه جاسوسي موجود در بابيلون كاركرد سي پي يو ( cpu performance) را به شدت تضعيف كرد و آنرا تحت فشار مي گذارد تا سرانجام بتواند اطلاعات جمع آوري شده را از روي خطوط اينترنتي به سوي سازندگان خود ارسال كند .

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

 

هادی بهارلو سه شنبه هشتم بهمن 1387  نظر بدهید!

حذف کردن ویستا بدون از بین رفتن XP

 افراد زيادي هستند که پس از نصب ويندوز ويستا و کار کردن با آن از اين ويندوز خوششان نمي آيد و با وجود تبليغات مايکروسافت درباره اين ويندوز
باز هم ويندوز اکس پي را به آن ترجيح ميدهند و ميخواهند ويندوز ويستا را از رايانه خود حذف کنند. چنانچه فقط ويندوز ويستا روي رايانه شما نصب باشد ، براي حذف آن کار خاصي لازم نيست و کافيست طبق معمول درايو مربوط به ويندوز را فرمت و اقدام به نصب ويندوز مورد نظر خود کنيد. اما اگر ويندوز ويستا را در کنار ويندوز اکس پي نصب کرده باشيد، چکار ميکنيد؟ درايو مربوط به فايل هاي نصب شده ويندوز ويستا را فرمت ميکنيد و هر بار که رايانه تان روشن ميشود ، از ليست انتخاب ويندوز هاي نصب شده، ويندوز ويستا را رد و ويندوز اکس پي را انتخاب ميکنيد؟ گرچه اين روش عملي است، اما اصولي نيست و روش درستي به حساب نمي آيد. اگر ميخواهيد ويندوز ويستا را درست حذف کنيد ميتوانيد به روش زير عمل کنيد:
1_ وارد ويندوز اکس پي خود شويد.
2_ دي وي دي نصب ويندوز ويستا را در درايو مربوطه قرار دهيد.
3_ گزينه Run را از منوي شروع انتخاب و اين عبارت را تايپ کنيد: e:\boot\bootsect.exe\nt52ALL\force (دقت کنيد که به جاي عبارت e: بايد نام درايو مربوط به دي وي دي را وارد کنيد)
4_ رايانه را مجددا راه اندازي کنيد. خواهيد ديد که گزينه هاي انتخاب ويندوز وجود ندارند و ويندوز شما با ويندوز اکس پي اجرا ميشود.
5_ درايو مربوط به ويندوز ويستا را فورمت و دو فايل Boot.bak و Bootsect.bak را از درايو مربوط به نصب ويندوز اکس پي نيز حذف کنيد.
6_ در نهايت نيز براي اطمينان از صحت حذف ويندوز ويستا يک بار ديگر رايانه را مجددا راه اندازي کنيد.

هادی بهارلو سه شنبه هفدهم دی 1387  نظر بدهید!

آموزش برنامه نویسی به زبان C (جلسه سوم:)

همانطور که گفته شد این زبان ، یک زبان ساخت یافته است و هر برنامه در این زبان ، شامل یک یا چند تابع است.یکی از این توابع main() است.این تابع به عنوان تابع اصلی بوده و بقیه ی تئوابع جزء توابع فرعی هستند.

اجرای یک برنامه باید با تابع اصلی شروع شود یعنی همان main() .ابتدا باید تابع اصلی و سپس تابع فرعی را بنویسیم. بعد از main() متغیر های مورد استفاده ی این تابع تعریف می شود.

سپس تابع اصلی با یک } شروع و به{ ختم می شود.تعریف توابع فرعی پس از توابع اصلی صورت می گیرد.

نباید فراموش کرد که توابع مورد استفاده ی برنامه نویس در کجا قرار دارند و برنامه چگونه به آنها دسترسی پیدا می کند.این توابع و سایر اطلاعاتی که کامپایلر برای ترجمه ی برنامه به آنها وجود دارد،در تعدادی از فایل ها به نام فایل های سرآیند (header)قرار دارند.

پسوند فایل های سرآیند .h است.و معمولا بر روی فهرستی از دیسک به نام INCLUDE  قرار دارند.برنامه نویس باید بداند که که هر تابع مورد استفاده در برنامه در کدام فایل سرآیند قرار دارد و همان فایل را به برنامه اضافه کند.

برای اتصال فیل های سرآیند از دستوری به نام #include استفاده می شود.این دستور قبل از main() قرار می گیرد.

                                                                                                        <فایل سرآیند>#include

int main()                                                                                                                          

{                                                                                                                                        

                                                                                                              اعلان متغیرها

                                                                                                             دستورات اجرایی

}                                                                                                                                       

Printf

این تابع در فایل stdio.h قرار دارد و برای چاپ اطلاعات در صفحه ی نمایش به کار می رود.

 نحوه کاربرد تابع printf  :

به دوصورت به کار می رود :

                                                                                                      (" <عبارت 1> ")printf

                                                                                        (<عبارت 2>،"<عبارت1>")printf

 <عبارت2> اطلاعاتی است که باید به خروجی منتقل شود و <عبارت1> می تواند شامل موارد ذیل باشد:

1.اطلاعاتی که باید عینا در خروجی چاپ شود.

2.کاراکترهای تعیین کننده ی فرمت خروجی.(این نوع کاراکترها نوع اطلاعاتی را که در <عبارت2>ذکر شده اند و باید به خروجی بروند مشخص می کنند.این کاراکتر ها با % شروع می شوند.)

3.کاراکترهای کنترلی.(این نوع کاراکتر ها شکل خروجی اطلاعات را مشخص میکنند و با \ شروع می شوند)

 کاراکترهای فرمت (عمومی ترین آنها)

%c                                       یک کاراکتر یه خروجی می رود.

d%          اعداد صحیح دهدهی مثبت و منفی به خروجی می رود.

%f           اعداد صحیح دهدهی مثبت و منفی به خروجی می رود.

                                                                                   %%علامت%

 البته ناگفته نماند که حدود17 کاراکتر فرمت را زبان c می شناسد که در اینجا به همین چهار کاراکتر اکتفا می کنیم.

 کاراکترهای کنترلی

\f                       موجب انتقال کنترل به صفحه ی جدید می شود.

\n                              موجب انتقال کنترل به خط جدید می شود.

\"                                                           چاپ کوتیشن( " )

 back slash                                                                 \\

 و چند نوع دیگر که در صورت لزوم به توضیح آنها نیز می پردازیم.

 مثال:

برنامه ای که دو رشته را به خروجی می برد:    (برای درج توزیحات از : /*توزیحات*/ یا : توزیحات/ استفاده میشود)

include "stdio.h" /tabe baraye ehzare :printf#

int  main()

{

  printf("errorist.blogf."); /chape ghesmati az jomle

        printf("com");   /chape edameye jomle

}

و جمله ای که در خروجی چاپ می گردد:

errorist.blogfa.com  

سه شنبه هفدهم دی 1387  نظر بدهید!

آموزش برنامه نویسی به زبان C (جلسه دوم:)

انواع داده

هدف از برنامه نویسی ،ورود داده ها به کامپیوتر ، پردازش داده ها و استخراج نتایج است . پس داده ها نقش مهمی را در برنامه نویسی ایفا می کنند.

 انواع داده ها و مقادیر قابل قبول آنها

 هشت بیت :

char,  -127 to 127

unsignec char,  0 to 255

signed char,  -127 to 127

 شانزده بیت :

short int,  -32767 to 32767

unsigned short int,  0 to 65535

signed short int , -32767 to 32767

 بین شانزده تا سی و دو بیت :

int , -32767 to 32767

unsigned int,  0 to 65535

singned int , -32767 to 32767

 سی و دو بیت :

long int,  -2147483647 to 2147483647

signed long int , -2147483647 to 2147483647

unsigned  int,  0 to 4294967295

float,  7raghame deghat

 شصت و چهار بیت :

double , 15raghame deghat

 هشتاد بیت :

longf double , 19 raghame deghat

 متغیر ها

متغیر نامی برای کلمات حافظه است که داده ها در آنها قرار می گیرند و ممکن است در طول اجرای برنامه  تغییر کنند.برای مراجعه به متغبر از نامشان استفاده می کنیم.بنابرابن متغیرها امکان نامگذاری برای کلمات حافظه را فراهم می کنند.متغیر ها باید دارای نوع باشندویعنی متغیر های بدون نوع در C شناخته نمی شوند.

تعیین نوع متغیر را تعریف متغیر گویند.

برای تغینن نوع متغیر اینگونه عمل می کنیم :

 ;        نام متغیر    نوع داده

 تعریف متغیر ها :

int            x.y ;

float        m.n;

char         ch1.ch2;

double     d1;

long int    p1;

 اسامی مجاز برای متغیر ها :

count

test23

sum

S_1

 سامی غیر مجاز برای متغیر ها :

1test

high!there

grade.1

.pcx

 برای مقدار دادن به متغیر ها :

 ۱.هنگام تعریف نوع متغیر

int      x,y =5 ;

 ۲.پس از تعریف نوع متغیر و با دستور انتساب(=)

int        x,y,z ;

float     f1,f2 ;

x=12 ;

y=z=2 ;

f1=f2=12.34 ;

 ۳.با دستورات ورودی

int x,z ;

scanf ("%d%d,&x,&z) ;

عملگرها

نمادهایی هستند که اعمال خاصی را انجام میدهند.

 عملگرهای محاسباتی

 این نوع عملگر ها، محاسباتی را روی عملوندها انجام می دهند.

 -         تفریق و منهای یکانی

      +         جمع

      *         ضرب

      /          تقسیم

    %          باقیمانده ی تقسیم

    --          کاهش

   ++          افزایش

 تقدم عملگرهای محاسباتی

(از بالاترین تقدم به پایین ترین تقدم)

  --  ++

  - (منهای یکانی)

  % / *

  - +

 عملگرهای رابطه ای

این نوع عملگرها ، ارتباط بین عملوندها را مشخص می کنند.

 <              بزرگتر

>              کوچکتر

=<            بزرگتر یا مساوی

=>            کوچکتر یا مساوی

= =           متساوی

=!             نا مساوی

 عملگرهای منطقی

این نوع عملگرها بر روی عبارات منطقی عمل می کنند. عبارات منطقی دارای دو ارزش درستی و نادرستی اند.(ارزش نادرستی با مقدار صفر و ارزش درستی با مقادیر غیر صفر مشخص می شوند.)

 !            نقیض(not)    

&&       و((and

||           یا(or)

 تقدم عملگرهای منطقی و رابطه ای

           !

  = > > = < <

     =!  = =

       &&

||        

(تقدم این عملگرها پایین تر از سایر عملگرها ست)

 عملگرهای ترکیبی

از ترکیب عملگرهای محاسباتی و علامت = مجموعه دیگری از عملگر ها ایجاد می شود که عمل محاسباتی و انتساب را انجام دهند.

 = +       انتساب جمع

= -        انتساب تفریق

= *       انتساب ضرب

= /        انتساب تقسیم

= %      انتساب باقیمانده ی تقسیم

سه شنبه هفدهم دی 1387  نظر بدهید!

آموزش برنامه نویسی به زبان C (جلسه اول:)

زبان C در سال 1972 توسط دنیس ریچی طراحی شد.این زبان تکامل یافته ی زبانBCPL از زبانB   میباشد که طراح آن کن تامپسون می باشد،نتیجه شده است.علت نامگذاری C این است که بعد از B طراحی شد.

    کسانی که تا حدودی با زبانهای برنامه سازی آشنایی دارند،می دانند که زبان دیگری به نام C++ وجود دارد و آن از C ناشی شده است.C++ علاوه بر ویژگیهای C ،ویژگیهای جدیدی دارد که در C موجود نیست.

زبانC یک زبان میانی است.زبانهای برنامه سازی را می توان به سه دسته تقسیم کرد:زبانهای سطح بالا،زبانهای میانی،زبانهای سطح پایین.

    علت میانی بودن زبان C این است که، از طرفی همانند زبان سطح پایینی مثا اسمبلی قادر است مستقیما به حافظه دستیابی داشته باشد و با مفاهیم بیت،بایت و آدرس کارکند و از طرف دیگر،برنامه های این زبان،همچون زبانهای سطح بالایی مثل پاسکال،از قابلیت خوانایی بالایی برخوردارند.به عبارت دیگر،دستورالعملهای این زبان،به زبام محاوره ای انسان نزدیک است،که این ویژگی،مربوط به زبانهای سطح بالا است.

زبان  C،یک زبان ساخت یافته است.در این زبان با استفاده از حلقه های تکراری مثل while،for، do while میتوان برنامه هایی نوشت که قابلیت خوانایی و درک آنها بالا باشد.

 زبانهای ساخت یافته:

پاسکال

ادا

C،(C++)

ماجولا-2

جاوا

 زبانهای غیر ساخت یافته:

فرترن

بیسیک

کوبول

 کلمات کلیدی زبان            

auto,break,case,char,const,cntinue,default,do,

double,else,enum,extern,float,

for,goto,if,int,long,register,return,short,signed, 

  sizedof,static,struct,switch,typedof,union,unsigned,void,volatile,while

این زبان برنامه نویسی ،قابل انعطاف و بسیار قدرتمند است.در این زبان ،هیچ محدودیتی برای برنامه نویس وجود ندارد.هر آنچه را که فکر می کنید،میتوانید در این زبان پیاده سازی کنید.                                     

  این زیان،زبان برنامه نویسی سیستم است.برنامه های سیستم برنامه هایی هستند که امکان بهره برداری از سخت افزار و سایر نرم افزارها ر فرام می کنند.بعضی از برنامه های سیستم عبارت اند از :سیستم عامل ،مفسر،کامپایلر،ویراستارها،واژه پردازها،مدیریت بانکهای اطلاعاتی واسمبلر.                                       ارتباط تنگاتگی بین این زبان و اسمبلی وجود دارد و به این ترتیب می توان از تمتام قابلیت های اسمبلی در این زبان استفاده کرد.                                                                                                               قابل حم است.معنای قابل حمل این است کهبرنامه هایی که به این زبان، در یک نوع کامپیوتر(مثل آی.بی.ام)نوشته شدند،بدون انجام تغییرات با انجام تغییرات اندک،در کامپیوترهای دیگر(مثل VAX -DEC) قابل استفاده اند.

C،زبان کوچکی است.تعداد کلمات کلیدی این زبان انگشت شمار است(30 کلمه ی کلیدی).تصور نشود که هر چه تعداد کلمات کلیدی زبان بیشتر باشد،آن زبان قدرتمند است.به عنون مثال زبان بیسیک در حدود صد وپنجاه کلمه ی کلیدی دارد ولی قدرت زبان---به مراتب بیشتر از زبان بسیک است.تجه داشته باشید که بعضی از کامپایلر هایC،علاوه بر این 32 کلمه ی کلیدی ،کلمات دیگری را به زبان اضافه کده اند.

esm,_ss,interrupt,_cs,cdecl,near,_ds,far,pascal,_es,huge

سه شنبه هفدهم دی 1387  نظر بدهید!

آیا الان دوستمون آن لاین هست

برای اینکه بفهمیم دوستمون آیا در حال حاضر آنلاین هست و مشغول چت با از ما بهترونه! یا نه می تونیم از سایت زیر استفاده کنیم. یعنی بعد از ورود به این سایت در قسمت بالا کافیه که آی دی اونا وارد کنیم .

 

هادی بهارلو پنجشنبه پنجم دی 1387  نظر بدهید!

آموزش XML (بخش چهارم)

آشنايي با XML قسمت چهارم
در این قسمت به تعریف یک نوع دیگر از خواننده های XML میپردازیم که من بیشتر از این نوع استفاده میکنم بجز موارد خواص. البته این مبحث زیاد جای بحث نداره به همین دلیل بسیار مختصر به شرح اون میپردازم.

XMLNodeReader
همین طور که از اسمش معلومه برای برسی XML بر اساس گره ها (Node) طراحی شده. این Reader از DTD و XML Schema پشتیبانی نمیکند ولی تعریف های داخل DTD رو میشناسه.

خوب طبق معمول با یک مثال این Reader رو تعریف میکنیم.که من فکر میکنم هیچ آموزشی نمیتونه مانند مثال به یک نفر کمک کنه پس ما هم... :


Imports System.Xml

Dim Reader As XMLNodeReader
Dim DOC As New XmlDocument
DOC.Load("\Data\Setting.Xml")
Reader = New XMLNodeReader(DOC)
Do Until Reader.EOF
Reader.Read()
MsgBox("---")
MsgBox("Depth: " & Reader.Depth)
MsgBox("LocalName: " & Reader.LocalName)
MsgBox("Attribute: " & Reader.ReadAttributeValue)
MsgBox("Value: " & Reader.Value)
MsgBox("---")
Loop


همینطور که میبینید این Reader هم بسیار شبیه Reader قبلی است. ولی در Open کردن فایل کمی تفاوت دارد. مهمترین قسمت این قسمت طریقه بازشدن فایل بوسیله XMLNodeReader است چون بقیه قسمتهای NodeReader و TextReader فرق چندانی با هم ندارد. ولی یک Object اضافه بر سازمان در این قسمت برای باز کردن فایل استفاده کردم. این Object بسیار قدرتمند است و در آینده حتما بر روی اون بحث خواهم کرد. من به شما سفارش میکنم اگر از XML به صورت ابتدایی استفاده میکنید از همین Reader استفاده کنید چون بسیار سریع تر و دقیقتر ( نه از نظر من حتی از نظر Microsoft) از TextReader است. من برای مطرح کردن بقیه مسایل در XML باید به آموزش کوتاهی درباره DTD بپردازم پس تا یادداشت بعد.

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش XML (بخش سوم)



آشنايي با XML قسمت سوم

یک حالت ساده از خواننده های فایلهای XML در .Net همین XMLTextReader است.
این راننده (Driver) فقط رو به جلو حرکت میکند وهرچی در سر راهش باشد در حافظه اش ذخیره میکند.و مهمترین قسمت اینکه از DTD و XMLSchema نیز پشتیبانی نمیکند.و این برای شروع کار ما که با این دو نوع آشنا نیستیم بسیار مناسب است.


Imports System.Xml

Dim Reader as XmlTextReader
Reader = New XmlTextReader("Data\Setting.Xml")'فایل مورد نظر
Do Until Reader.EOF'در صورت به اتمام رسیدن فایل حلقه متوقف میشود
Reader.Read()'خواندن تگ بعدی
MsgBox(">---")
MsgBox("Depth: " & Reader.Depth)
'مقدار فرو رفتگی یک تگ داخل تگهای بالای خودش
MsgBox("LocalName: " & Reader.LocalName)
'خواندن اسم تگ localName is Book
MsgBox("Attribute: " & Reader.ReadAttributeValue)
'مقدار خاصیت قرار داده شده
MsgBox("Value: " & Reader.Value)
'محتوای داخلی تگ
MsgBox("---<")
Loop


همینطور که میبینید بسیار ساده میشه از این Object استفاده کرد. شمامیتونید به راحتی فایل XML خود رو باز کرده و اون رو به ترتیب بخونید.

*همانطور که میبینید در قسمت خواصیت تگ اگر تگ خواصیتی رو نداشته باشه مقدار
برگشتی False میباشد.
*در قسمت Depth ؛ اگر تگی در داخل روت اصلی باشد مقدار 1 رو بر مگردونه و اگریک تگ در داخل این تگ باشه پس مقدار 2 رو بر میگردونه و اگر خود روت باشه
مسلماً مقدار صفر 0 را بر میگردونه.
*شما میتوانید با استفاده از LocalName یک فیلتر قرار دهید که هر LocalName که مقداری در بر نگیرد نمایش ندهد.

البته من فقط این Reader ها رو معرفی میکنم و اگر نکته مهمی وجود داشته باشد گفته میشود.پس اگر در این زمینه مشکلی بوجود اومد میتونید اونو مطرح کنید چون این مبحث خیلی وسیع هست و نمیشه به این راحتی با اون کنار اومد.

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش XML (بخش دوم)

آشنايي با XML قسمت دوم


اکثر افرادی که قصد یادگیری XML رو دارند، نمی تونند XML رو خوب بفهمند. شما سعی کنید XML رو یک سیستم ذخیره اطلاعات بدونید.بعدا با یادگیری قسمتهای بعدی XML با کاربردهای XML آشنا میشید و راحتتر میتونید به صورت حرفه ای از اون استفاده کنید.البته این یادآوری کنم که من فقط قصد آشنا سازی شما با XML رو دارم نه آموزش کامل XML.
XML برای خود یک دستوره نگارشی و املایی دارد. شما در حین یادگیری عبارتهای XML با اون آشنا میشید.
تگها:
شما با عبارتهای HTML یا همان TAG ها آشنا هستید < تگ> در XML از همان تگها استفاده میشود ولی نکته مهم اینجاست که XML به شدت به حروف کوچک و بزرگ حساسیت داره پس اگر شما تگ ابتدای خودتون رو به دین صورت نوشتید < TaG> باید تگ پاییانی هم بدین صورت بنویسید < /TaG>.

اعلان شروع فایل XML:
فایل XML با یک اعلان شروع میشه که باید در اولین خط باشه (کاملا اختیاری):

حتما به بزرگی و کوچکی حروف دقت کنید. تگ اعلان XML به صورت < ؟ و بعد کلمه XML و بعد از اون نوع version که تا کنون آخرین اون "1.0" بوده قرار میگیره و سپس تگ پایانی اون ؟ >.
نوشتن تگها:
تگها در حقیقت همان رکوردها هستند که فیلدهای متغییری میتوانند داشته باشند(البته اگر با Database آشنا باشید). شما اطلاعات خودتون رو با استفاده از تگها ذخیره میکنید مثلا برای ذخیره اسمتون: AraSoft< /Name >
برای ذخیره اطلاعات شما به دو تگ نیاز دارید یکی آغازی و دیگری پایانی این دو در حقیقت تشکیل یک تگ صحیح را میدهند. یک تگ آغازی به صورت اول > و بعد اسم مورد نظر و سپس < نوشته میشود. تگ پایانی تنها یک تفاوت کوچک دارد که آن در آولین بخش تگ است. تگ پایانی به صورت یک علامت / هم وجود دارد:


Begin: < Name >
End: < /Name >


برای نوشتن تگها باید به این توجه کنید که اسم تگ شروع (< Name>) و اسم تگ پایانی (< /Name>) نباید از نظر کوچکی و بزرگی فرق کند. و نکته مهم اینکه شما باید XML خود رو با یک تگ اصلی بپوشانید و بقیه تگها رو داخل اون قرار دهید مثل:



< ? Xml version="1.0" ?>
< Root>
< /Child1 >
< /Child2>

< / Root>


تداخل تگها:
اگر شما تگی رو شروع کردید و میخواهید تگی رو داخل اون قرار دهید شروع و پایان تگ باید در داخل تگ اصلی باشد مانند زیر:


درست:
< ? Xml version="1.0" ?>
< root>
< child1/>

:غلط
< ? Xml version="1.0" ? >
< root >
< child1 >

< /child1 > ß-----Error


تگ پوچ:
شاید در مرور Xml های که من نوشتم یه این تگ < Child1 /> رسیده و تعجب کنید که چرا من قانون نوشتن تگها رو نقض کردم و لی در حقیقت این خود یک دستور نگارشی است مبنی بر اینکه اگر تگی هیچ مقداری رو در بر نمیگیرد بهتر است به صورت < Name/> نوشته شود "شبیه به HTML" تا به راحتی برسی XML افزوده شود.
افزوردن ویژگی به تگ:
تگ ها قدرت داشتن ویژگی رو دارند (Attribute).



1.Home< /SectionOfSite>
2.Home< /SectionOfSite>


شما میتوانید برای مقدار هر تگ یک خاصیت یا ویژگی تعیین کنید. مثلا من در شماره 1 گفتم قسمت سایت=خانه و با زبان فارسی و در شماره 2 گفتم که قسمت سایت=خانه و به زبان انگلیسی.

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش XML (بخش اول)

آموزش XML (بخش اول)

XML چيست ؟

یکی از ابزاری است که این مدته به شدت وارد بورس شده و حیفه، که من حرفی از این مبحث مطرح نکنم.
XML یک سیستم ذخیره اطلاعات است که میتوان در زمینه های مختلف تعمیمش داد. حال من آموزش گوشه های از XML رو میخوام با یک مثال شروع کنم. شما فقط سعی کنید مکانیزم کاری و کاربرد XML رو درک کنید. درک مطالب و مباحث کمکه زیادی به شما در برنامه نویسی میکنه پس مثال زیر رو با دقت بخونید، اگه گوشه های از کد رو متوجه نشدید مهم نیست چون در درس های بعدی این Object ها و باقیه Object های مربوط به XML رو آموزش میدم.

من یک فایل در آدرس "C:\Data1.XML" دارم با محتوای زیر:



< ?xml version="1.0" ?>
< Person>
AraSoft< /Name >
18< /Age>
Male< /Sex>


حال لازمه که این اطلاعات که شامل اسم ، سن ، جنسیت من هست در برنامه استفاده کنیم.پس ابتدا Namespace مورد نظر " System.Xml " رو به برنامه اضافه کرده و Imports System.Xml ... استاد میکنید.
و در قسمت مورد نظر کد مربوط رو مینویسیم:



Dim Reader as XMLNodeReader
Dim DC as New XMLDocument
Dim NickName, Sex as String
Dim Age as Long

DC.load ("C:\Data1.Xml")
Reader = New XMLNodeReader (DC)
Do until Reader.EOF
Reader.Read
Select Case Reader.LocalName
Case "Name"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Age"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
Case "Sex"
If Reader.IsStartElement then
Reader.MoveToElement
If Not Reader.Value.Trim = Nothing then
MSGbox (Reader.Value)
End IF
End If
End Select
Loop


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

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش زبان XML

آموزش XML

XML برای شرح و بيان اطلاعات طراحی شده است.
• HTML برای نمايش اطلاعات و برای تمركز روی چگونگی ديده شدن اطلاعات طراحی شده است.

قبل از ادامه اين بحث، شما بايد مقداری درك پايه ای از موارد زير داشته باشيد:
• WWW,HTML و اساس ساخت صفحات وب
• زبانهای اسكريپت وب مانند JavaScript , VBScript

XMLچيست؟

• XML برگرفته شده از كلمات Extensible Markup Language است.
• XML يك Markup Language مانند HTML است.
• tag (برچسب) های XML از قبل تعريف شده نيستند، شما خودتان بايد آنها را تعريف كنيد.
• XML از يك (Document Type Definition) DTD برای شرح اطلاعات استفاده ميكند.
• XML با يك DTD طراحی ميشود تا خود-توصيف باشد.

تفاوت اصلی بين XML و HTML
• XML برای حمل اطلاعات طراحی شده است.
• XML يك جايگزين برای HTML نيست.
• XML و HTML برای هدفهای مختلفی طراحی شده اند.
• HTML برای نمايش اطلاعات و XML برای شرح و حمل و نقل اطلاعات است.

XML كاری انجام نميدهد!
شايد اين موضوع برای درك كردن كمی مشكل باشد، اما XML كاری انجام نميدهد. XML ساخته نشده تا كاری انجام دهد. XML به عنوان يك راه برای سازماندهی كردن، ذخيره كردن و فرستادن اطلاعات ساخته شده است. مثال زير يك يادداشت از Jani به Tove است كه در ساختار XML ذخيره شده است:

note.xml - ۱ مثال


< note >
< to>Tove< /to>
< from>Jani< /from>
< heading>Reminder< /heading>
< body>Dont forget me this weekend!< /body>
< /note >


يادداشت يك سرباره (header) و يك بدنه اصلی پيغام دارد، همچنين اطلاعات فرستنده و گيرنده را هم در بر دارد. اما هنوز اين سند XML كاری انجام نميدهد. آن فقط اطلاعات محضی است كه در برچسبهای XML قرار گرفته است.

XML آزاد و قابل گسترش
• برچسبهای XML از قبل تعريف شده نيستند، شما بايد برچسبها را خودتان درست كنيد.
• برچسبهايی كه در HTML بكار ميروند از پيش تعريف شده هستند و مؤلف سندهای HTML فقط ميتواند از برچسبهای تعريف شده در HTML استاندارد استفاده كند ( مانند
و< h1>).
• XML به مؤلف اجازه ميدهد تا برچسبهای خود و ساختار آنها را تعريف كند.
• برچسبهای مثال بالا ( مانند < to >و< from >) در XML استاندارد تعريف شده نيستند، اين برچسبها توسط مؤلف سند XML تعريف شده اند.

XML يك مكمل برای HTML
• XML يك جايگزين برای HTML نيست.
• درك اينكه XML يك جايگزين برای HTML نيست خيلی مهم است.
• در آينده گسترش وب احتمال داده ميشود كه XML برای شرح اطلاعات به كار خواهد رفت،درحاليکه كه HTML برای فرمت و نمايش اطلاعات به كار خواهد رفت.
• شايد اين بهترين تعريف از XML باشد: ابزاری مستقل از سخت افزار و نرم افزار برای انتقال اطلاعات است.

XML ميتواند اطلاعات را از HTML جدا كند
• با XML اطلاعات شما در خارج از HTML ذخيره ميشود.
• هنگامی كه HTML برای نمايش اطلاعات استفاده ميشود، اطلاعات در درون HTML ذخيره شده است. با XML اطلاعات ميتواند در فايلهای جدای XML ذخيره شود. در اين روش شما ميتوانيد HTML را به عنوان لايه ای روی اطلاعات و برای نمايش آنها فرض كنيد و مطمئن باشيد كه تغيير در اطلاعات لايه های زيرين احتياج به تغيير HTML شما نخواهد داشت.

برای داد و ستد اطلاعات
با XML اطلاعات ميتواند بين سيستم های ناسازگار داد و ستد شود.
در دنيای واقعی، سيستم های كامپيوتری و بانك های اطلاعاتی شامل اطلاعات در فرمت های ناسازگار هستند. يكی از وقت گيرترين چالش ها برای گسترش دهندگان، انتقال اطلاعات بين چنين سيستمهايی شده است.

XML و B2B
با استفاده از XML اطلاعات تجاری می تواند روی اينترنت داد و ستد شود. در آينده ای نزديك بايد منتظر شندن خبرهای بيشتری از XML و B2B(Business to Business) باشيم.
XML می رود تا زبان اصلی برای داد و ستد اطلاعات اقتصادی بين تجارت ها، روی اينترنت بشود. امروزه تعداد زيادی از برنامه های B2B در حال گسترش است.

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

XML برای ذخيره اطلاعات
با XML فايل های متنی ميتوانند برای ذخيره اطلاعات استفاده بشوند.
XML همچنين ميتواند برای ذخيره اطلاعات در فايلها و بانك های اطلاعاتی مورد استفاده قرارگيرد. برنامه هايی ميتواند نوشته شوند كه اطلاعات را در منابع ذخيره و فراخوانی كنند و برنامه های اصلی ميتوانند برای نمايش اطلاعات استفاده شود.

XML ميتواند اطلاعات شما را مفيدتر كند
XML اطلاعات شما را برای كاربرهای بيشتری قابل دسترس ميكند.
به دليل مستقل بودن XML از سخت افزار و نرم افزار و برنامه، شما ميتوانيد اطلاعات خود را برای برنامه هايی غير از جستجوگرهای HTML هم قابل دسترس نماييد.
به اين ترتيب اطلاعات شما در همه انواع برنامه های كاربردی ديگر قابل استفاده است، برای مثال يك برنامه كاربردی ميتواند اطلاعات شما را كه در يك بانك اطلاعاتی ذخيره شده است برای نابينايان به خروجی مخصوص خود انتقال دهد.

XML و زبان های جديد
XML مادر WAP و WML است. WML كه برای دستگاه های دستی مانند موبايل ها به منظور ارتباط با اينترنت مورد استفاده قرار ميگيرد، در XML نوشه شده است.

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش برنامه نویسی شبکه و اینترنت با ویژوال بیسیک

آموزش برنامه نویسی شبکه و اینترنت با ویژوال بیسیک برای همه به زبان فارسی این هم عیدی من به همه عزیزان . از اینجا دانلود کنید

عید همگی مبارک باشه

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

مقايسه سيستم عامل هاي UNIX و Windows

مقايسه سيستم عامل هاي  UNIX  و Windows
مقدمه
در روزهاي اوليه صنعت كامپيوتر (دهه هفتاد )، بيشتر كامپيوترهايي كه  توليد مي شد  mainframe بودند و افراد خاصي از آنها استفاده مي كردند .
هر سازنده براي سخت افزار خود يك سيستم عامل مجزا مي نوشت كه فقط بر روي آن سخت افزا ر خاص اجرا مي شد؛ يعني سخت افزار و سيستم عامل مربوط به آن با هم بعنوان يك محصول فروخته مي شدند . در آن زمان آزمايشگاه  Bell  كه قسمتي از شركت  AT&T بود (امروزه بصورت مستقل  و تحت نام  Lucent Technologies فعاليت مي كند ) به علت مشكلات  كارمندان شركت در كار كردن با سيتمهاي  mainframe شروع به نوشتن  سيستم عامل  UNIX  و زبان برنامه نويسي  C براي استفاده داخلي كارمندان خود نمود.
 در آن زمان  AT&T اجازه فروش سخت افزار و نرم افزار بنام خود را  نداشت، لذا پس از مدتي كد سيستم عامل  UNIX را براي مصارف آكادميك به دانشگاهها عرضه كرد. از آنجايي كه سيستم عامل طوري طراحي شده بود كه به سادگي قابل انتقال بر روي سخت افزارهاي  مختلف بود، مورد توجه دانشگاهها قرار گرفت. آنها با استفاده از مي توانستند يك سيستم عامل واحد بر روي سخت افزارهاي مختلف خود داشته باشند Ken Thompson  يكي از پديد آورندگان ، UNIX آن را به ،  دانشگاههاي  California  و  Berkeley برد و در آنجا تغييرات عمده اي  توسط دانشجويان در كد  UNIX  اعمال شد كه منجر به پديد آمدن   UNIX 1 گرديد.
پس از مدتي كه شركت اجازه ورود به تجارت كامپيوتر را پيدا كرد استفاده  رايگان  UNIX ممنوع شد و همين امر باعث شد عده اي به فكر ايجاد يك  نسخه رايگان  UNIX  بيفتند. پروژه هاي FreeBSD  ، NetBSD  ،  و بعدها  Linux از اين جمله مي باشند. از طرفي شركتهاي بزرگي مانند  Sun  ، IBM  ، DEC  ،  SCO  و  HP به توليد سيستم عاملهاي مخصوص خود   Berkeley Standard Distribution form of UNIX 1  بر پايه  BSD  پرداختند. شركت  AT&T نيز سرگرم توليد نسخه خاص خود به نام  System V  بود. ورود سيستم عاملهاي جديد بر پايه  UNIX باعث كنار زدن ساير سيستم عاملهاي انحصاري شد. تنها سيستم عاملهايي كه  توانستند بازار خود را حفظ كنند  MVS  محصول شركت  IBM و   OpenVMS  محصول شركت  DEC  بودند  MVS) به علت تعداد بالاي  نسخه هاي نصب شده و  OpenVMS به علت امنيت و قابليت اطمينان بالا).
با توليد ريزكامپيوترها و كامپيوترهاي شخصي سازندگان سخت افزار دوباره شروع به ارائه سيستم عاملهاي انحصاري خود نمودند؛ حتي با ارتقاء  سخت افزار سيستم عاملها نيز تغيير مي كردند. شركتهاي  Commodore و   Apple  سيستم عاملهاي نسبتًا گرافيكي براي كامپيوترهاي PET 64 ،  C و   Apple  ارائه كردند. شركت  Digital Research  نيز سيستم عامل CP/M را ارائه كرد كه روي عده اي از سخت افزارها قابل اجرا بود. پس از مدتي و با همه گير شدن كامپيوترهاي شخصي شركتهاي Commodore  ،  Atari و   Apple  سيستم عاملهاي گرافيكي خود را با نامهاي Amiga  ،  GEM و  Macintosh  به بازار عرضه كردند. بعدها شركت  Microsoft يك كپي از M /  CP  بنام  MS-DOS  و يك كپي از  Macintosh  بنام  Windows را وارد بازار كرد. نقطه قوت اين سيستم عاملها واسط كاربر گرافيكي آنها بود كه استفاده كردن از آنها را خيلي ساده تر مي كرد و همين نكته باعث شد در بين عموم طرفداران زيادي پيدا كنند.
 در ميان اين سيستم عاملها  Amiga  و  GEM داراي پايه هاي بسيار قوي  بودند درحاليكه  Macintosh  و  Windows  . چنين وضعيتي نداشتند  به علت مديريت نامناسب و تصميم گيريهاي بد شركت  Commodore و   GEM  نيز به علت مشكلات مالي شركت  Atari از دور رقابت كنار رفتند.
 Microsoft  ، با ارائه نسخه هاي 95 ،98  NT و 2000 مرتبًا سعي در بهبود دادن وضعيت سيستم عامل  Windows  . نمود  Apple نيز سعي كرد اين كار را با ارائه  Copeland  كه (هيچوقت به بازار عرضه نشد) و Mac OS X انجام دهد. در ميان سيستم عاملهاي كامپيوترهاي شخصي، 2 / OS كه توسط  شركت  IBM عرضه شد تنها سيستم عاملي بود كه واسط كاربر گرافيكي خوب و يك ساختار پايه اي محكم را باهم دارا بود، ولي  Microsoft با تاكتيكهايي كه در پيش گرفت (از جمله ائتلاف با  Intel بعنوان مطرحترين سازنده قطعات كامپيوترهاي شخصي) مانع از گسترش و همگاني شدن آن شد.  از زماني كه كامپيوترهاي شخصي وارد بازار شدند نسخه هايي از  نيز براي آنها ايجاد شد، مانند گونه هاي مختلف پروژه هاي  BSD  و Linux .   Linux  اولين سيستم عامل مبتني بر  UNIX است كه در دنياي كامپيوترهاي شخصي متداول شد و براي اين منظور طراحي شده كه بعنوان يك جايگزين براي  Windows  باشد. كار بر روي  Linux  توسط   Torvalds شروع شد و امروزه دهها هزار برنامه نويس داوطلب در سرتاسر دنيا روي آن كار مي كنند. دو گروه  KDE  و  GNOME بر روي  واسط كاربر گرافيكي  Linux كار مي كنند و حاصل كار آنها اين است كه امروزه، صرفنظر از مشكلات موجود در نصب كردن سيستم، عده زيادي از افراد غيرمتخصص مي توانند از  Linux استفاده كنند. پيش بيني مي شود كه در آينده نزديك  Linux بعنوان يك سيستم عامل با ساختار پايه اي محكم و واسط كاربر گرافيكي مدرن بتواند جاي خود را در بين كاربران كامپيوتر پيدا كند.

در اين قسمت نگاهي اجمالي مي اندازيم به تفاوتهاي موجود در سيستم  عاملهاي  Windows  و UNIX اين تفاوتها از چند نظر مورد بررسي قرار مي گيرند، از جمله:
 قابليت اطمينان
 مديريت
 هزينه
 امنيت
 سرعت
قابليت اطمينان
 سيستمهاي مبتني بر  UNIX معمولا از قابليت اطمينان بالايي نسبت به  سيستمهاي  Windows  برخوردارند. پديده هايي مانند  hang  و  crash در  سيستمهاي  Windows بيشتر اتفاق مي افتد. اغلب كاربران سيستمهاي   Windows  با آن صفحه آبي معروف به  Blue Screen of Death آشنا  هستند 2. علاوه بر اين در سيستمهاي  Windows براي ايجاد تغييرات كوچك  يا حتي نصب يك نرم افزار سيستم بايد  reboot شود. معمولا براي ارائه سرويسهايي كه قرار است 24 ساعته در دسترس باشند (مانند وب) از  سيستمهاي  Windows  استفاده نمي كنند چون  reboot شدن سيستمي كه چنين سرويسي را ارائه مي كند اصلا جنبه خوشايندي ندارد، مخصوصًا اگر سرويس ارائه شده تجاري باشد در دسترس نبودن سرويس ممكن است زيانهاي اقتصادي فراواني به همراه داشته باشد. در مقابل براي ارائه سرويس چاپ مي توان از  Windows استفاده كرد چون براي مثال يك بار در هفته  reboot شدن يك سرور چاپ براي كسي اهميت چنداني ندارد. سيستم عاملهاي  Windows در اصل يك مشكل بزرگ دارند و آن در مورد استفاده از  registry  مي باشد. سيستم عاملهاي مبتني بر  UNIX از دايركتوري etc براي نگهداري اطلاعات پيكربندي و تنظيمات خود سيستم عامل و كاربردهاي نصب شده بر روي آن استفاده مي كنند ولي سيستم  عامل  Windows از يك پايگاه داده براي نگهداري اين اطلاعات استفاده مي كند. اين ايده ممكن است از لحاظ منطقي خيلي بهتر از روش  UNIX و نگهداري فايلهاي پيكربندي بصورت پراكنده در دايركتوريهاي مختلف باشد،  ولي عمل ثابت كرده كه اينگونه نيست. كل  registry در يك فايل باينري نگهداري مي شود كه سيستم عامل و تمام كاربردها قبل از اجرا محتويات آن فايل را تمامًا بررسي مي كنند. از اينجا اين نكته روشن مي شود كه يك فايل بزرگ است كه مدام نيز در حال تغيير است و در نتيجه امكان صدمه ديدن آن نيز بسيار زياد است و در صورت صدمه ديدن
نه سيستم عامل و نه هيچ كاربرد ديگر نمي تواند به درستي بر روي سيستم  اجرا شود. سيستمهاي  UNIX فايلهاي پيكربندي و تنظيمات مربوط به  سيستم عامل و كاربردها را در فايلهاي متني جداگانه در دايركتوري etc / نگهداري مي كنند. گذشته از پراكندگي فايلها كه يك عيب براي اين روش محسوب مي شود مزاياي قابل توجهي از آن حاصل مي شود. هر نرم افزار براي اجرا شدن فقط فايلهاي مربوط به خودش را مي خواند و در صورت معيوب بودن يكي از فايلها فقط در نرم افزار مربوطه تاثير مي گذارد نه در كل سيستم، بعلاوه اينكه تصحيح فايلهاي متني خيلي ساده تر از تصحيح فايل  باينري  registry مي باشد.
 يك شاهد بر اين مدعا راه اندازي سايت  MSN مي باشد. موقع راه اندازي  اين سايت مهندسان شركت  Microsoft  سعي در استفاده از   NT براي سرورهاي شبكه داشتند ولي پس از دو هفته تلاش موفق به اين  كار نشدند و بالاجبار از سيستمهاي  UNIX استفاده كردند. استفاده از   UNIX براي آنها متضمن پرداخت هزينه اضافي بود در صورتيكه براي استفاده از  Windows هيچ هزينه اي متحمل نمي شدند، از طرف ديگر  مهندسان شركت كار ديگري مهمتر از يافتن و رفع مشكلات نداشتند؛ يعني اگر مشكل قابل رفع شدن بود مسلمًا آنها اين كار را انجام  مي دادند و هزينه اضافي صرف خريد سيستمهاي  UNIX نمي كردند. تنها نتيجه معقولي كه حاصل مي شود اين است كه سيستمهاي  Windows داراي مشكلات اساسي بودند كه استفاده از آنها را بعنوان سرورهاي عملياتي غيرممكن مي ساخت، مشكلاتي در پايه كه رفع آنها به معناي دور ريختن  تمامي كدهاي نوشته شده بود. مهمترين اين مشكلات استفاده از registry مي باشد كه همچنان به قوت خود باقيست. هم اكنون نيز بخش عظيمي از  سرورهاي شبكه  MSN  را سيستمهاي  UNIX تشكيل مي دهد، هرچند ادعاي  خود  Microsoft اين است كه فقط قسمت كوچكي از شبكه از سيستمهاي   UNIX استفاده مي كند و شركت در حال تبديل اين قسمت به سيستمهاي   Windows مي باشد.

مديريت
 سيستمهاي  Windows نياز به مديريت و مراقبت بيشتري نسبت به سيستمهاي  UNIX  دارند. از آنجا كه سيستمهاي  Windows امكانات زيادي جهت مديريت اتوماتيك ندارند به همين علت لزوم مديريت مستقيم و حضور فيزيكي مدير سيستم بيشتر مي شود كه همين باعث صرف وقت و هزينه زيادي مي شود. يكي از ابزارهايي كه مديريت يك سيستم را ساده تر مي كند اجراي اتوماتيك دستورات و برنامه ها مي باشد  Windows طوري طراحي نشده است كه امكانات زيادي براي اجراي اتوماتيك دستورها داشته  باشد. در  Windows مي توان اجراي دستورات را زمان بندي كرد ولي از  آنجا كه اكثر كارها در  Windows نيازمند مداخله كاربر مي باشد و اغلب با ماوس انجام مي شود اتوماتيك كردن اين كارها دشوار است. در بسياري از  مواقع با نصب برخي ابزارها مانند  perl مي توان انجام اين كار را ساده تر  كرد ولي مديران سيستمهاي  Windows با اين قبيل ابزارها كمتر آشنا هستند.
در مقابل در سيستمهاي  UNIX  از دستور  at  و سرويس  cron براي اجراي برنامه ها و دستورات در سر زمانهاي خاص استفاده مي شود كه با استفاده از آنها تقريبًا تمام كارهاي لازم را مي توان بر روي سيستم انجام داد. يكي از ضعفهاي ديگر سيستمهاي  Windows  مربوط به سرويس  telnet مي باشد.  در سيستمهاي  Windows  با استفاده از  telnet فقط مي توان يك سري  اعمال محدود را انجام داد، يعني فقط همانهايي كه از طريق اعلان  امكانپذيرند. در مقابل در سيتمهاي  UNIX كاربر هنگام استفاده از سرويس   telnet از اكثر امكانات سيستم بصورت متني (بدون گرافيك) مي تواند  استفاده كند. تفاوت  Windows  و  UNIX  در اين است كه در  UNIX تمام قابليتهاي سيستم از طريق اعلان دستور قابل دسترسي است و نيازي به  استفاده از محيط گرافيكي نمي باشد. امروزه با گسترش سيستمهاي  (بخصوص  (Linux در بازار تعداد كساني كه به دنبال مديريت اين نوع سيستمها مي روند بيشتر شده و از اين ميان بيشتر آنها ترجيح مي دهند واسط گرافيكي و كار كردن با كاربردهاي موجود را ياد بگيرند تا اصول كار و كار كردن با محيط متني و دستورات كه همين امر تاثيرات سوئي را در آينده به دنبال خواهد داشت.

هزينه
هزينه اي كه بابت خريد سخت افزار و سيستم عامل صرف مي شود معمولا قسمت كوچكي از كل هزينه هاي يك سرور را شامل مي شود. هزينه هاي ديگر و حتي مهمتري نيز هستند كه اغلب ناديده گرفته مي شوند كه منجر به اتخاذ تصميم اشتباه هنگام خريد سيستم مي گردد. هزينه هايي كه مي توان براي يك سرور در نظر گرفت شامل موارد زير مي باشد:
 هزينه خريد سخت افزار
 هزينه خريد سيستم عامل و نرم افزارهاي ديگر
 هزينه پشتيباني فني
 هزينه ارتقاء سخت افزار
 هزينه ارتقاء سيستم عامل و نرم افزارها
 هزينه ها و ضررات ناشي از در دسترس نبودن سرويس
 هزينه بازيابي اطلاعات ناشي از بروز اشكالات در سخت افزار يا سيستم عامل
 هزينه پرسنل جهت نگهداري و مديريت سيستم
اگر در خريد سخت افزار و سيستم عامل دقت كافي صورت نگيرد ساير هزينه ها كه هزينه هاي پنهان ناميده مي شوند به شدت افزايش خواهند  يافت. براي مثال ممكن است خريد يك سيستم  Intel Pentium به همراه   Advanced Server  2000  Windows ...  ، ـ , چيزي كمتر از ?,??? دلار هزينه  داشته باشد ولي در عوض هزينه خريد يك سيستم  Sun UltraSparc به  همراه  Solaris ...ـ بيش از ??,??? دلار خواهد بود. در صورت خريد يك سيستم Windows-Intel,  صرفه جويي زيادي در هزينه خريد انجام مي شود ولي در مقابل هزينه هاي پنهاني كه اين سيستم به مرور زمان اعمال مي كند جبران صرفه جويي در هزينه اوليه را خواهد كرد.

امنيت
سيستمهاي مبتني بر  UNIX  از امنيت بالايي نسبت به سيستمهاي Windows برخوردارند. سيستم عامل  UNIX چيزي فراتر از ?? سال عمر دارد و در اين مدت عده زيادي برنامه نويس داوطلب بدون هيچگونه چشمداشتي بر  روي آن كار كرده اند. كوچكترين  bug يا اشكال امنيتي فورًا بر روي اينترنت اعلام مي شود و عده زيادي در جهت حل آن دست بكار مي شوند، به همين  علت تعداد سايتها و گروههاي خبري مربوط به  UNIX خيلي بيشتر از تعداد  سايتهاي مربوط به  Windows  مي باشد. در مقابل  Windows يك سيستم عامل نسبتًا جديد است كه بيش از ?? سال سابقه ندارد. كد اين سيستم  عامل در انحصار شركت  Microsoft است و بنابراين تنها مرجع رفع مشكلات بوجود آمده خود شركت مي باشد. بديهي است كه مدت زمان رفع مشكلات و  bug  هاي  Windows بسيار طولانيتر از همين زمان براي سيستم  عامل  UNIX خواهد بود. همين مي تواند مهمترين دليل براي اين باشد كه  سيستمهاي  Windows بيشتر در معرض حملات مهاجمين يا ويروسها قرار مي گيرند.
 موسسه امريكايي  NSA  3 در سال 1983 استانداردي بنام  TCSEC 4 يا   Orange Book تدوين كرده كه در سال ???? يك استاندارد اروپايي بنام  ITSEC 5 نيز از روي آن تهيه شده است. اين استانداردها بعنوان يك ابزار  براي سنجش ميزان امنيت سيستمها بكار مي روند. چهار طبقه  D  تا  A در اين  استانداردها وجود دارد كه  D  نشانگر كمترين امنيت و  A نشانگر بيشترين امنيت مي باشد.

 تمام سيستم عاملهاي  Windows  كه بر پايه تكنولوژي  NT ساخته شده اند در طبقه بندي C2 مي باشند. اين در حالي است كه بسياري از سيستمهاي   UNIX  از جمله Solaris  ، HP-UX  ،  Ultrix  و  IRIX  در طبقه بندي B قرار دارند (براي مثال  Solaris  در طبقه بندي B1 قرار دارد). همين نكته تفاوت اين دو نوع سيستم عامل را از نظر امنيتي روشن مي كند. اين طبقه بنديها بر اساس حداكثر امكانات موجود در سيستم عامل صورت مي گيرد ولي ميزان بهره برداري از سيستم بستگي به مدير سيستم دارد كه بتواند به نحو مقتضي از اين امكانات استفاده نمايد.

سرعت
سرعت يك سيستم هم به مشخصات سخت افزار بستگي دارد و هم به  سيستم عامل. ميزان فضاي حافظه، نوع پردازنده  RISC)  يا  CISC بودن معماري پردازنده)، سرعت كار پردازنده و ساير قطعات (از جمله برد اصلي، ديسك، كارت شبكه، ...) از جمله فاكتورهاي سخت افزاري تعيين كننده سرعت مي باشند. نحوه عملكرد سيستم عامل نقش مهمي در سرعت  سيستم دارد. سرعت سيستمهاي  UNIX به مراتب بهتر از سيستمهاي   Windows  . مي باشند  Windows مشكلات زيادي در مديريت حافظه دارد  ولي  UNIX از حافظه استفاده بهينه مي كند و فضاي حافظه را هدر نمي دهد  بطوريكه حتي قسمتهايي از خود سيستم عامل نيز بصورت module مي باشند كه فقط در صورت نياز در حافظه قرار مي گيرند. يكي از مشكلات   Windows  در زمينه سرعت مربوط به استفاده از  registry مي باشد. همانطور كه قبلا توضيح داده شد اطلاعات پيكربندي و تنظيمات سيستم  عامل و كاربردها همگي در  registry ذخيره مي شوند. سيستم عامل و كاربردها قبل از اجرا شدن اين پايگاه داده را بطور كامل خوانده و آن را بررسي مي كنند. به همين علت نصب چند نرم افزار باعث مي شود سرعت كل سيستم پايين بيايد حتي اگر نرم افزارهاي نصب شده هرگز مورد  استفاده قرار نگيرند. يك سيستم  Windows در روزهاي اول نصب شدن با حداكثر سرعت خود كار مي كند و به مرور زمان با اضافه كردن نرم افزارهاي مختلف از سرعت آن كاسته مي شود.

منبع : www.parsibook.4t.com

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

آموزش نصب لینوکس فدورا

شروع
راهنمای نصب قدم به قدم لینوکسfedora :
راههای زیادی برای اغاز نصب فدورا وجود دارد از جمله boot از روی CD ، فایل های FTP ،HTTP ،از روی یک هارد دیگر(هارد رو هارد کردن) و بسیاری روشهای دیگر.
شاید متداول ترین روش نصب، وارد کردن CD های نصب در داخل کامپیوتر و راه اندازی مجدد ان از روی CD ها باشد.ما در طول این راهنما فرض میکنیم که شما نصب فدورا را با استفاده از CD های نصب انجام می دهید.
بعد از اینکه CD اول را داخل کامپیوتر گذاشتید و کامپیوتر از روی CD بالا امد، صفحه fedora core را مشاهده می کنید .بازدن enter مراحل کار را ادامه دهید.
بعد از ان ازشما سوال می شود که ایا سالم بودن CD ها رو چک کند یا نه،معمولا این test،پیشنهاد خوبیست، به خصوص اگر از درستی CD ها اطمینان نداشته باشید.و همچنین مانع از این می شود که در هنگام نصب به علت خرابی CD ها دچار وقفه شوید.
اگر قبلا برنامه درستی CD ها رو تصدیق کرده است در این صورت نیاز به test مجدد نیست و می توانید ادامه دهید.

Welcome to fedora
در اینجا نصب برنامه اغاز می شود.این اولین صفحه در نصب گرافیکی است.همانطور که خواهید دید تمام صفحات نصب دارای طرح بندی یکسانی هستند.هر مرحله نصب شامل یک متن توضیحی کمکی برای ان مرحله است.(این یکی از مزیت های این نسخه از لینوکس نسبت به نسخه mandrake می باشد.)
برای ادامه next را فشار دهید.

welcome.jpg

Language Selection
در ابتدا شما نیاز دارید ، زبانی را که در حین نصب استفاده می کنید انتخاب کنید.این زبان همچنین زبان پیش فرض نصب شده برای سیستم عامل بعدی می باشد.بعدا می توانید زبانهای دیگری را برای نصب انتخاب کنید.


language selection.jpg

Keyboard Layout
سپس شما نیاز به انتخاب نوع صفحه کلید مورد استفاده تان را دارید.

keyboard.jpg

Mouse Configuration
اغلب اوقات برنامه نصب به صورت خود کار نوع mouse مورد استفاده را انتخاب می کند.و در این صورت نیازی به تغییر ان نخواهید داشت.

mouse.jpg

The Search Begins...
پس از اینکه next را در صفحه Mouse Configuration زدید، برنامه شروع به جستجوی نسخه های قبلی فدورا (و یا ردهت) می کند.

search.jpg

Installation Type
در اینجا احتیاج دارید تعیین کنید چه سیستمی را می خواهید نصب کنید.در مورد انواع روش های نصب در قسمت قبل توضیحات لازم داده شد.در این مرحله طبق قرار قبلی گزینه workstation را انتخاب می کنیم.
انتخاب یکی از گزینه های از پیش تعریف شده امکان انتخاب بسته های شخصی را از شما می گیرد.برای استفاده از انها باید گزینه custom را انتخاب کنید.

installation.jpg

Disk Setup
این مرحله مهم ترین و حساس ترین قسمت نصب است:پارتیشن بندی دیسک.
در ابتدا باید بگویم اکثر کاربران معمولی لینوکس(به ویژه کاربران جدید) نیازی ندارند که درباره RAID یا LVM نگران باشند.بنا بر این شما می توانید این دو گزینه را در نظر نگیرید.
اگر فدورا را به تنهایی روی یک درایو هاردتان نصب می کنید باید از گزینه پارتیشن بندی خودکار استفاده کنید.اگر نصب دو گانه فدورا را در کنار ویندوز یا سیستم عامل دیگری انجام می دهید باید قبل از شروع یک پارتیشن خالی ایجاد کنید.
اگر پارتیشن ها را خودتان ایجاد می کنید، حداقل به دو پارتیشن root و swap نیاز پیدا خواهید کرد.پارتیشن root شامل تمام فایل های سیستمی است و باید به اندازه کافی برای نصب بزرگ باشد.(معمولا حداقل بین 2 تا 4 گیگ برای root در نظر می گیرند.)
پارتیشن swap باید تقریبا دو و نیم برابر RAM کامپیوترتان باشد.
با وجودیکه از لحاظ فنی نیازی نیست ولی من پیشنهاد می کنم پارتیشن /home را نیز بسازید.این پارتیشن محلی است که همه داده های کاربر ذخیره می شود(مانند my document در ویندوز).
ایجاد پارتیشن مجزای home این امکان را به شما می دهد که بدون از دست دادن داده های شخصیتان مجدادا همین لینوکس یا سایر نسخه های ان را نصب کنید.
مجموعه اصطلاحات: در لینوکس درایوهای هاردتان به این ترتیب نامگذاری می شوند:(شماره)(حرف)hd .حرف به محل مربوطه در درایو کامپیوتر اشاره می کند. و شماره نیز به پارتیشن درایو اشاره می کند.به عنوان مثال اولین پارتیشن در اولین درایو IDE ، hda1 نامیده می شود.

disk setup.jpg

Boot Loader Configuration
Boot loader به شما اجازه می دهد که سیستم عامل را اغاز کنید.همچنین به شما این اجازه را می دهد که در صورت داشتن بیش از یک سیستم عامل بر روی کامپیوتر، سیستم عامل مورد نظر را انتخاب کنید.در اینجا به راحتی می تواید از عناصر پیش فرض استفاده کنید.

boot loader.jpg

Network Configuration
در صورتی که کامپیوترتان بر روی یک شبکه محلی((LAN قرار داشته باشد و یا یک مودم کابلی یا DSL داشته باشید، نیاز دارید که پیکر بندی شبکه را انجام دهید.برنامه نصب به صورت پیش فرض انرا DHCP قرار می دهد به طوریکه اطلاعات لازم را به صورت خودکار از Internet Service Provider))ISP تان می گیرد. بیشتر خدمات دهندگان اینترنت چه از نوع کابلی و چه پهن باند،از DHCP استفاده می کنند.بنا بر این این قسمت را بدون تغییر بگذارید.
اگر خواستید خودتان ادرس IP(Internet Protocol) تان را وارد کنید به سادگی روی قسمت edit کلیک کنید و سپس ادرس را وارد کنید.

network.jpg

Firewall Configuration
دیواره های اتش خوب است همواره فعال باشند به ویژه اگر که یک ارتباط پهنباند دارید و یا در یک شبکه محلی هستید.بهتر است که در ساختار این قسمت تغییری ایجاد نکنید مگر اینکه بخواهید web ،mail ، ویا FTP server را بر روی کامپیوترتان اجرا کنید. در این زمان تنها بر روی پروتکل مناسب کلیک کنید تا به ان اجازه دهید که از میان دیواره اتش عبور کند.به یاد داشته باشید که در اینجا سئوال می شود که چه نوع سرویس هایی اجازه ورود دارند نه اجازه خروج. بنا بر این اگر که می خواهید تنها به گشت و گذار در وب بپردازید و نمی خواهید که یک web server باشید، پروتکل HTTP را بدون تغییر بگذارید.

firewall.jpg
Additional Language Support
در اینجا باید انتخاب کنید که کدام زبان ،زبان پیش فرضی است که در کامپیوتر استفاده شده است.همچنین فرصت دارید در صورت تمایل زبان دیگری را برای اضافه شدن انتخاب کنید.

additional language.jpg
Time Zone Selection
اکنون باید یک منطقه زمانی مناسب را برای کامپیوترتان انتخاب کنید.برای این کار به دو طریق می توانید عمل کنید.یا میتوانید بر روی منطقه مورد نظر روی نقشه کلیک کنید و یا از لیست پایین نقشه منطقه زمانی مورد نظر را انتخاب کنید.

time zone.jpg

Set Root Password
در دنیای لینوکس و یا یونیکس root در واقع مدیر کامپیوتر محسوب می شود.(منظور همان Admin است).برای انجام کارهای مدیریتی تنها کافیست که root را اجرا کنید. اگر هنگام log on کردن root هم به صورت پیش فرض اجرا شود بسیار زیان اور است.این حالت نه تنها یک خطر امنیتی است بلکه ممکن است باعث شود شما در موقعیتی قرار گیرید که فایل ها و یا ساختار های اصلی کامپیوتر ناگهان تغییر یابند و یا به کل پاک شوند و کامپیوتر را بلا استفاده بگذارند.در این حالت مجبورید مجدد سیستم عامل را نصب کنید.

root pass.jpg
Package Group Selection
در این بخش از نصب شما قادرید بسته هایی را که مایلید روی کامپیوترتان نصب شوند، انتخاب کنید.برای کاربران جدید شاید این مرحله کمی گیج کننده باشد.در این حالت بهتر است تغییری در گزینه های پیش فرض ندهید.اگر مایلید بسته های منحصر به فردی را از هر گروه مورد نظر انتخاب کنید، تنها کافیست روی قسمت details (جزئیات) کلیک کرده و سپس از میان لیست ارائه شده، بسته های مورد نظر را انتخاب کنید.

packages.jpg

About To Install
اخرین فرصت برای بازگشت...
پس از کلیک کردن روی next در این قسمت، فرمت شدن پارتیشن های دیسک اغاز شده و بسته های انتخابی نصب می شوند.

about to install.jpg

Required Install Media
سپس برنامه نصب به شما یاد اوری می کند که برای تکمیل فرایند به هر 3 CD نیاز خواهید داشت.(البته گاهی تعداد CD ها 4 تا خواهد بود و در واقع این تعداد بستگی به بسته های نرم افزاری دارد.)

media.jpg
Formatting "/"
پس از ان فرمت کردن پارتیشن های مربوط ادامه می یابد.

formatting.jpg

Transfer Install Image To Hard Drive
پیش از نصب بسته های شخصی، تصویر نصب اصلی به هارد درایو منتقل می شود...

transferring.jpg

Installing Packages
سپس نصب بسته ها اغاز می شود...
بسته به اینکه چه تعداد از این بسته ها را انتخاب کرده اید و سرعت کامپیوتر شما چقدر است، این قسمت 15 تا 40 دقیقه وقت می گیرد.اکنون زمان مناسبی برای مطالعه است!!
installing.jpg

Installing Packages Continued...
احتمالا به یک مجله دیگر نیاز پیدا می کنید....

continue.jpg

Insert Disc 2
دیسک دوم را وارد کنید.

insert disk 2.jpg

Insert Disc 3
دیسک سوم را وارد کنید.

insert disk 3.jpg

Boot Disk Configuration
ایجاد یک دیسکت boot معمولا فکر خوبیست.این کار به شما اجازه می دهد زمانی که فایل های boot خرابند یا پاک شده اند با استفاده از این دیسکت بتوانید کامپیوترتان را بالا بیاورید.(boot کنید.)

boot disk.jpg
Installation Complete!
در این قسمت عملیات نصب به پایان می رسد.

complete.jpg

پس از اینکه عملیات نصب به پایان رسید و کامپیوترتان مجددا بالا امد،با صفحات زیر رو به رو می شوید.
که کارهای اصلی زیر را شامل می شوند.

Welcome
welcome.jpg
License Agreement
license.jpg
Date & Time
date and time.jpg

User Accounts
باز هم باید یاد اوری کنم که ایجاد یک حساب کاربری بسیار مهم است.اگر بیش از یک کاربر از کامپیوتر استفاده می کنند می توانید برای هر یک حساب کاربری خاص خودش را ایجاد کنید.

user accounts.jpg
Sound Card Setup
در اینجا می توانید کارت صوتی تان را در صورتی که توسط برنامه نصب شناخته شده است، تست کنید.در غیر این صورت می توانید وضعیت انرا تغییر رهید.

sound card.jpg

Additional CD's
اغلب اوقات می توانید این صفحه را skip کنید.

additional CD.jpg

Finish Setup
حالا دیگر می توانید از لینوکس فدورای جدیدتان لذت ببرید.

finish.jpg

منبع:

http://linuxreview.net/FedoraInstallGuide

هادی بهارلو چهارشنبه بیست و هفتم آذر 1387  نظر بدهید!

ASP.NET 2.0 (بخش اول)

State Management در ASP. NET 2.0  

يكی از مهمترين تفاوت های موجود بين برنامه های وب و Desktop  ، مديريت state است كه در آن می بايست به اين پرسش پاسخ داده شود كه نحوه نگهداری اطلاعات در ارتباط با كاربر جاری به چه صورت است ؟
در يك برنامه سنتی ويندوز ،
state بطور اتوماتيك مديريت می گردد . حافظه به حد فراوان يافت می شود و همواره در دسترس است . در برنامه های وب داستان بگونه ای ديگر است . هزاران كاربر ممكن است بطور همزمان برنامه ای مشابه را بر روی كامپيوتری يكسان ( سرويس دهنده وب ) اجراء و هر يك از آنان از طريق پروتكل HTTP ( برگرفته شده از  Hypertext Transfer Protocol) كه دارای ماهيتی stateless است با سرويس دهنده وب ارتباط برقرار نمايند . مجموعه شرايط فوق باعث شده است كه نتوان برنامه های وب را با سناريوئی دقيقا" مشابه با برنامه های سنتی ويندوز طراحی و پياده سازی كرد .
هيچگونه فريمورك برنامه نويسی وب ، صرفنظر از ميزان پيشرفته بودن آن ، نمی تواند ماهيت
stateless بودن پروتكل HTTP را تغيير دهد. پس از هر درخواست و پاسخ به آن ، ارتباط منطقی سرويس گيرنده با سرويس دهنده قطع خواهد شد . معماری فوق ، اين اطمينان را ايجاد می نمايد كه برنامه های وب بتوانند به هزاران كاربر بطور همزمان و بدون نگرانی در خصوص حافظه پاسخ دهند . استفاده از روش های مختلف برای ذخيره اطلاعات بين درخواست های متعدد يك كاربر و بازيابی آنها در زمانی كه به آنها نياز است از جمله مشكلات معماری فوق برای پياده كنندگان برنامه های وب محسوب می گردد . 
آشنائی و درك مناسب نسبت به محدوديت های
  state ، يكی از مفاهيم كليدی در زمان ايجاد برنامه های وب كارآ و قدرتمند است .
در مجموعه مقالاتی كه در اين خصوص آماده و بتدريج بر روی سايت منتشر خواهد شد به بررسی موارد زير خواهيم پرداخت :

  • آشنائی با مفاهيم ، جايگاه و لزوم مديريت state در برنامه های وب
  • آشنائی با پتانسيل های ارائه شده در ASP. NET 2.0 برای ذخيره سازی و مديريت اطلاعات
  • آشنائی با گزينه های متفاوت موجود به منظور مديريت state نظير View state ، Session state ، كوكی های سفارشی  
  • نحوه انتقال اطلاعات از يك صفحه به صفحه ديگر

 مديريت state و مسائل در ارتباط با آن

 در يك برنامه سنتی ويندوز ، كاربران با يك برنامه در حال اجراء بطور پيوسته ارتباط برقرار می نمايند . بخشی از حافظه موجود بر روی كامپيوتر Desktop  برای ذخيره  تنظيمات جاری اطلاعات محيط كار كاربر اختصاص داده می شود .
در يك برنامه وب ، داستان كاملا" متفاوت است . شايد از ديد كاربران يك سايت حرفه ای اينگونه برداشت شود كه يك برنامه بطور مستمر در حال اجراء است و به آنان سرويس های لازم را می دهد . علی رغم اين كه ظاهر موضوع درست بنظر می آيد ولی در پس پرده داستان بگونه ای ديگر دنبال می شود .
  برنامه های وب از يك الگوی دستيابی غيرمتصل كارآ استفاده می نمايند . در اين الگو ، سرويس گيرنده پس از ارتباط با سرويس دهنده از آن درخواست يك صفحه را می نمايد . پس از پاسخ به سرويس گيرنده ،ارتباط منطقی ايجاد شده قطع و سرويس دهنده بی خيال هر گونه اطلاعاتی در رابطه با سرويس گيرنده می گردد . پس از دريافت صفحه درخواستی توسط سرويس گيرنده ، برنامه اجراء خود را متوقف و ASP.NET engine اشياء مربوط به صفحه را دور می اندازد .
با توجه به اين كه سرويس گيرندگان لازم است در اكثر موارد صرفا" برای چندين ثانيه متصل باشند ، يك سرويس دهنده وب می تواند به هزاران درخواست با كارآئی مطلوب پاسخ دهد .
در صورتی كه لازم است اطلاعات بين چندين عمليات كاربر نگهداری شوند ، می بايست از راهكارهای مختلفی به منظور مديريت
state استفاده كرد .

View state

همانگونه كه اطلاع داريد كنترل های سرويس دهنده ASP.NET از view state برای بخاطر سپردن state استفاده می نمايند . اطلاعات view state در يك فيلد مخفی نگهداری شده و بطور اتوماتيك پس از هر postback برای سرويس دهنده ارسال می گردد . view state محدود به كنترل های سرويس دهنده نمی گردد و در صورت ضرورت می توان مجموعه ای از اطلاعات مورد نياز را مستقيما" در مجموعه view state ذخيره تا امكان بازيابی آنها پس از هر postback فراهم شود . نوع های مختلفی را می توان در view state ذخيره نمود . نوع های داده ساده و اشياء سفارشی نمونه هائی در اين زمينه می باشند .
خصلت
ViewState صفحه، مجموعه view state را ارائه می نمايد . اين خصلت يك نمونه از كلاس مجموعه StateBag است .برای اضافه كردن و حذف آيتم هائی در اين كلاس ، از گرامری  مشابه با يك ديكشنری استفاده می گردد  كه در آن هر آيتم دارای يك نام منحصر بفرد  است .
كد زير نحوه استفاده از
view state را نشان می دهد .

 ViewState("Counter") = 1

دستور فوق ، مقدار 1 را در مجموعه view state قرار داده و به آن يك نام منحصربفرد را نسبت می دهد ( Counter  ) . در صورتی كه آيتم ديگری با همين نام در view state موجود نباشد ، يك آيتم جديد بطور اتوماتيك به آن اضافه می گردد . در صورتی كه يك آيتم با نام Counter در view state موجود باشد ، با مقدار فوق جايگزين می گردد . 
برای بازيابی آيتم های ذخيره شده در
view state  از نام نسبت داده شده به هر يك از آنها استفاده می گردد . همچنين ، لازم است كه مقدار بازيابی شده را با استفاده از گرامر casting به نوع داده مناسب تبديل نمود چراكه مجموعه ViewState تمامی آينم ها را به عنوان اشياء عام ذخيره می نمايد تا بتواند با نوع های داده مختلف سرو كار داشته باشد . 
كد زير نحوه بازيابی مقدار نسبت داده شده به
Counter از view state  و تبديل آن به يك عدد صحيح را نشان می دهد .

Dim counter As Integer
counter = CType(ViewState("Counter"), Integer)

در صورت عدم وجود اطلاعات مورد نظر در view state با يك NullReferenceException مواجه خواهيم شد . بنابراين ، لازم است كه همواره قبل از بازيابی و تبديل داده ذخيره شده در view state از وجود آن در ساختار فوق اطمينان حاصل نمود . 
برای آشنائی بيشتر با نحوه بكارگيری
view state در برنامه های وب به بررسی يك نمونه مثال كاربردی خواهيم پرداخت .

مثال : ثبت تعداد دفعاتی كه بر روی يك دكمه كليك می گردد
كد زير يك برنامه ساده شمارنده را نشان می دهد كه در آن تعداد دفعاتی كه بر روی يك دكمه كليك می شود تشخيص داده شده و تعداد آن در خروجی نمايش داده می شود . بدون استفاده از يك راهكار مناسب برای مديريت state ، شمارنده بطور دائم عدد 1 را در خروجی نشان خواهد داد .
برای ايجاد خروجی مورد نظر ، می بايست از يك راهكار مناسب (
view state ) جهت مديريت state استفاده گردد .

<%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>

<script runat="server">
Sub
cmdIncrement_Click(ByVal sender As Object,ByVal e As EventArgs) Handles cmdIncrement.Click
 Dim Counter As Integer
 If
ViewState("Counter") Is Nothing Then
    Counter = 1
 Else
     Counter = CType(ViewState("Counter"), Integer) + 1
 End If
 ViewState("Counter") = Counter
 lblCount.Text = "
مقدار شمارنده برابر است با : " & Counter.ToString()
End Sub
script>

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" >
<
head id="Head1" runat="server">
    <
title>تست view state title>
head>
<
body style="font-family: Tahoma">
    <
form id="form1" runat="server">
    <
div>
       <
asp:Button ID="cmdIncrement" runat="server"
                          Text
="افزايش شمارنده" Font-Names="Tahoma" /><br /><br />
       <
asp:Label ID="lblCount" runat="server"
                       
Font-Names="Tahoma">asp:Label> 
   
div>
    form>
body>
html>

در كد فوق قبل از تلاش برای بازيابی آيتم مورد نظر  از view state ، وجود آن در ساختار فوق بررسی می گردد .  شكل 1 خروجی برنامه فوق را نشان می دهد .

برای حل مسئله مديريت state در مثال فوق و نگهداری مقدار  counter در بين چندين postback از روش هائی ديگر نيز می توان استفاده كرد . به عنوان مثال ، می توان برای كنترل سرويس دهنده label ويژگی view state را فعال و از label برای ذخيره مقدار counter استفاده نمود . هر مرتبه كه بر روی دكمه "افزايش شمارنده " كليك گردد ،  مقدار جاری از طريق خصلت text كنترل label بازيابی و پس از تبديل به يك عدد صحيح در خروجی نمايش داده می شود .
از روش فوق نمی توان همواره به عنوان يك راهكار مناسب استفاده كرد . مثلا" ممكن است قصد ايجاد برنامه ای را داشته باشيم كه تعداد دفعاتی را كه بر روی يك دكمه كليك می گردد ثبت نمايد ولی قصد نمايش نتايج را در خروجی نداشته باشيم . در چنين مواردی می توان همچنان اطلاعات را در يك كنترل سرويس دهنده ذخيره نمود ولی مجبور خواهيم بود كه آن را مخفی نگاه داريم .
پس از انجام تمامی اين كارها ، به چيزی می رسيم كه
view state  آن را در اختيار ما قرار می دهد . view state ، اطلاعات را بطور اتوماتيك در يك فيلد مخفی خاص در صفحه نگهداری می نمايد . با توجه به اين كه ASP. NET با جزئيات اين كار سروكار دارد ، كد نوشته شده توسط پياده كنندگان از خوانائی بيشتری برخوردار خواهد بود .
در بخش دوم به بررسی نحوه ايمن سازی اطلاعات ذخيره شده در
view state خواهيم پرداخت .

هادی بهارلو چهارشنبه سیزدهم آذر 1387  نظر بدهید!

مدیریت بر سیستم عامل ویندوز ویستا

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

 

 

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

 

 

 

Vista Manager نام نرم افزاری می باشد که به منظور مدیریت راحت بر سیستم عامل ویندوز ویستا طراحی شده است. شما به وسلیه این نرم افزار می توانید از جزئییات اطلاعات نرم افزاری مربوط به سیستم مطلع شده ، اقدام به بهینه سازی ویندوز نمایید ، تمامی تنظیمات مربوط به امنیت و شبکه ویندوز را به صورت یکپارچه در اختیار داشته باشید و ... .

 

 

 

در زیر به این امکانات و ویژگی های نرم افزاری ویندوز اشاره می کنیم:

 

- Information : در این قسمت شما از تمامی جزئیات مربوط به سیستم خود آگاه شده و قابلیت ایجاد تغییر در آن را خواهید داشت.

 

- Optimizer : این قسمت از نرم افزار وضیفه بهینه سازی ویندوز را بر عهده خواهد داشت. رسیدگی به مشکلاتی نظیر کاهش سرعت سیستم به این قسمت مربوط می شود

 

- Cleaner : این قسمت مسئولیت پاکسازی سیستم از فایل های اضافی و بدون استفاده را بر عهده دارد تا برای هرچه بیشتر شدن سرعت ویندوز فعالیت کند.

 

- Customization : در این قسمت شما توانایی انجام تنظیمات اختیاری سیستم را بر عهده خواهید داشت. تنظیماتی نظیر تغییر Logo ویندوز و ...

 

- Security : در این بخش شما به تنظیمات امنیتی ویندوز دسترسی خواهید داشت و امنیت ویندوز را می توانید بر حسب نیاز و موقعیت خود تنظیم کنید.

 

- Network : رفع مشکلات مربوط به شبکه و تنظیمات شبکه ای نیز در این قسمت قرار گرفته اند

 

و ... .

هادی بهارلو دوشنبه یازدهم آذر 1387  نظر بدهید!

نصب ویندوز ایکس پی در ویستا

برای نصب ویندوز ایکس پی روی ویستا از ابزارها و نرم افزار های مختلفی استفاده کرد از جمله Os Selector  و يا Partition Magic استفاده كرد Acronis OS Selector 8.0 يك نرم افزار قدرتمند، قابل اعتماد و با كاربري بسيار آسان هست براي مديرت چندين سيستم عامل بر روي يك كامپيوتر ! اين نرم افزار به كاربر اين امكان رو ميده كه هم زمان بيش از 100 سيستم عامل رو نصب و مديرت كنه! به كمك اين نرم افزار ميتونيد تصميم بگيريد كه عمليات بوت از روي كدام پارتيشن و يا هارد ديسك انجام بشه . حتي به وسيله اين برنامه ميشه چند سيستم هامل رو روي يك پارتيشن نصب كرد! يكي از موارد استفاده از اين نرم افزار اينه كه بعد از ويروسي شدن يه سيستم عامل ميتونيد از يك سيستم عامل ديگه براي بوت كردن سيستم استفاده كنيد ...
علاوه بر قابليت هاي فوق ، Acronis OS Selector 8.0 به شما اجازه تغيير سايز پارتيشن هاييFAT16, FAT32, NTFS, Linux Ext2, Ext3, ReiserFS, Linux Swap رو ميده !!! اين عمليات بدون اينكه فايلي گم و يا از بين بره انجام خواهد شد!
به كمك اين نرم افزار ميتونيد چندين سيستم عامل رو براي كارهاي مختلف نصب و مديرت كنيد . يكي براي اجراي بازي هاي ، يكي براي امور اداري ، يكي براي تست انواع و اقسام نرم افزار و .... يه قابليت ديگه اين نرم افزار اينه كه ميتونه براي اجراي هر سيستم عامل يه پاسورد تعيين كنه تا از اجرا و سوء استفاده به وسيله ديگران جلوگيري كنه!
دانلود با حجم 8 مگابايت

هادی بهارلو شنبه نهم آذر 1387  نظر بدهید!

تمام ميانبر هاي ويندوز

در این مقاله قصد داریم به معرفی یک لیست واقعأ فوق العاده بپردازیم. با استفاده از دستورات موجود در این لیست که بیش از 110 دستور را شامل میشود شما میتوانید تنها از طریق Run ویندوز ، و تایپ ساده دستور کوتاه بلافاصله برنامه مورد نظر را اجرا نمایید. این برنامه میتواند برنامه های معمولی ویندوز و حتی برنامه های متفرقه نصب شده باشد. در صورتی که بتوانید تعداد زیادی از این دستورات را به خاطر بسپارید و آنها را در کار روزانه خود هنگام کار با کامپیوتر به کار بگیرید ، آنگاه شما را میتوان یک کاربر واقعأ حرفه ای نامید.
برای شروع کار کافی است از منوی Start وارد Run شوید.


نام برنامه اجرایی
دستور
Accessibility Controls access.cpl
Add Hardware Wizard hdwwiz.cpl
Add/Remove Programs appwiz.cpl
Administrative Tools control admintools
Automatic Updates wuaucpl.cpl
Bluetooth Transfer Wizard fsquirt
Calculator calc
Certificate Manager certmgr.msc
Character Map charmap
Check Disk Utility chkdsk
Clipboard Viewer clipbrd
Command Prompt cmd
Component Services dcomcnfg
Computer Management compmgmt.msc
Date and Time Properties timedate.cpl
DDE Shares ddeshare
Device Manager devmgmt.msc
Direct X Control Panel - If Installed directx.cpl
Direct X Troubleshooter dxdiag
Disk Cleanup Utility cleanmgr
Disk Defragment dfrg.msc
Disk Management diskmgmt.msc
Disk Partition Manager diskpart
Display Properties control desktop
Display Properties desk.cpl
Display Properties w/Appearance Tab Preselected control color
Dr. Watson System Troubleshooting Utility drwtsn32
Driver Verifier Utility verifier
Event Viewer eventvwr.msc
File Signature Verification Tool sigverif
Findfast findfast.cpl
Folders Properties control folders
Fonts control fonts
Fonts Folder fonts
Free Cell Card Game freecell
Game Controllers joy.cpl
Group Policy Editor - XP Pro gpedit.msc
Hearts Card Game mshearts
Iexpress Wizard iexpress
Indexing Service ciadv.msc
Internet Properties inetcpl.cpl
IP Configuration - Display Connection Configuration ipconfig /all
IP Configuration - Display DNS Cache Contents ipconfig /displaydns
IP Configuration - Delete DNS Cache Contents ipconfig /flushdns
IP Configuration - Release All Connections ipconfig /release
IP Configuration - Renew All Connections ipconfig /renew
IP Configuration - Refreshes DHCP & Re-Registers DNS ipconfig /registerdns
IP Configuration - Display DHCP Class ID ipconfig /showclassid
Java Control Panel - If Installed jpicpl32.cpl
Java Control Panel - If Installed javaws
Keyboard Properties control keyboard
Local Security Settings secpol.msc
Local Users and Groups lusrmgr.msc
Logs You Out Of Windows logoff
Microsoft Chat winchat
Minesweeper Game winmine
Mouse Properties control mouse
Mouse Properties main.cpl
Network Connections control netconnections
Network Connections ncpa.cpl
Network Setup Wizard netsetup.cpl
Notepad notepad
Nview Desktop Manager - If Installed nvtuicpl.cpl
Object Packager packager
ODBC Data Source Administrator odbccp32.cpl
On Screen Keyboard osk
Opens AC3 Filter - If Installed ac3filter.cpl
Password Properties password.cpl
Performance Monitor perfmon.msc
Performance Monitor perfmon
Phone and Modem Options telephon.cpl
Power Configuration powercfg.cpl
Printers and Faxes control printers
Printers Folder printers
Private Character Editor eudcedit
Quicktime - If Installed QuickTime.cpl
Regional Settings intl.cpl
Registry Editor regedit
Registry Editor regedit32
Remote Desktop mstsc
Removable Storage ntmsmgr.msc
Removable Storage Operator Requests ntmsoprq.msc
Resultant Set of Policy - XP Pro rsop.msc
Scanners and Cameras sticpl.cpl
Scheduled Tasks control schedtasks
Security Center wscui.cpl
Services services.msc
Shared Folders fsmgmt.msc
Shuts Down Windows shutdown
Sounds and Audio mmsys.cpl
Spider Solitare Card Game spider
SQL Client Configuration cliconfg
System Configuration Editor sysedit
System Configuration Utility msconfig
System File Checker Utility - Scan Immediately sfc /scannow
System File Checker Utility - Scan Once At Next Boot sfc /scanonce
System File Checker Utility - Scan On Every Boot sfc /scanboot
System File Checker Utility - Return to Default Setting sfc /revert
System File Checker Utility - Purge File Cache sfc /purgecache
System File Checker Utility - Set Cache Size to size x sfc /cachesize=x
System Properties sysdm.cpl
Task Manager taskmgr
Telnet Client telnet
User Account Management nusrmgr.cpl
Utility Manager utilman
Windows Firewall firewall.cpl
Windows Magnifier magnify
Windows Management Infrastructure wmimgmt.msc
Windows System Security Tool syskey
Windows Update Launches wupdmgr
Windows XP Tour Wizard tourstart
Wordpad write

هادی بهارلو دوشنبه بیست و نهم مهر 1387  نظر بدهید!

آموزش کامل فایلهای دسته ای (batch file)

مرجع كامل آموزش كار با فايل هاي دسته اي يا همون ‌بچ فايل :

فايل هاي دسته اي فايلهايي هستند كه مجموعه اي از دستورات سيستم عامل را شامل مي شوند كه اگر بخواهيم پشت سر هم اجرا شوند از اين ساختار استفاده مي كنيم

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

هادی بهارلو جمعه بیست و ششم مهر 1387  نظر بدهید!

آموزش FSO (فایل سیستم)

ایجاد رشته تصادفی (ویروس نویسا با دقت بخونن)


tmpname=""
randomize(timer)
namel=int(rnd(1)*20)+1
For lettre = 1 To namel
randomize(timer)
tmpname=tmpname & chr(int(rnd(1)*26)+97)
Next
typext = "execombatbmpjpggifdocxlsppthtmhtthta"
randomize(timer)
tmpext = int(rnd(1)*11)+1
tmpname=tmpname & "." & mid(typext,((tmpext-1)*3)+1,3) & ".vbs"

MsgBox tmpname

----------------------------------------------------------------------------------------------------------------------------------------

ایجاد فایل متنی

dim fso , sp
Set fso=CreateObject("Scripting.FileSystemObject")
set sp=fso.CreateTextFile("C:\ali.txt",True,8)
sp.WriteLine "Hello"
sp.WriteLine "Ok"
sp.WriteLine "Errorist"
sp.WriteLine "BYE

-----------------------------------------------------------------------------------------------------------------------------------------

خواندن از فایل متنی


dim FSO , F1
Set fso=CreateObject("Scripting.FileSystemObject")
Set f1=fso.OpenTextFile(WScript.ScriptFullname,1)
virus=f1.ReadAll
f1.Close

-----------------------------------------------------------------------------------------------------------------------------------------

نمایش درایوها و نوع سیستم فایل آنها


Function ShowDriveType(drvpath)
On Error Resume Next
Dim fso, d, t
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(drvpath)
Select Case d.DriveType
Case 0: t = "Unknown"
Case 1: t = "Removable"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
if t = "" then t = "None"
ShowDriveType = t
End Function

---------------------------------------------------------------------------------------------------------------------------------------

انشاال.. که خوشتون اومده باشه

نظر نداده از دنیا نری !!






 

هادی بهارلو جمعه دهم خرداد 1387  نظر بدهید!

ترفند رجیستری قسمت اول

سلام به همه

کاش همه می دانستند عشق بالاتر از دوست داشتن است!

کاش آبها به جای اینکه آبی باشند آبی بودند مثل آسمون!

کاش به جای دوست داشتن همه یک دوست خوب داشتند!

کاش همه یک جا زندگی می کردند تا دیگه نه مسافری باشه و نه سفری و نه چشم براهی !!

کاش .....

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

دوست عزیز Fantom از اینکه زحمت کشیدی و به اینجا سر زدی ممنونم.

 تقدیم به او که هر وقت نیازش داشتم دست رد به سینه ام نزد و کسی که وقتی که احساس کردم از او بی نیازم خود را غرق نیاز در او دیدم . کسی که سالها برای بزرگ کردن من زحمت کشید و مرا تا آخرین نفس شرمنده خویش ساخت

ساده بیا دست منا بگیر و ساده نگیر این همه سادگی را

ساده نگیر اگه هنوز می تونی پای همه سادگیهات بمونی

خسته نشو اگه تموم راه ها پیش تو و سادگیهات بسته شن

طاقت بیار اگه همه آدما از اینکه پا به پات بیان خسته شن

آخر خط جاده های خسته بگو چقدر راه نرفته مونده 

پشت دلت وقتی به خون نشسته چندتا ترانست که کسی نخونده 

دووم بیار خسته نشو از سفر  تنهاییتم بزار رو دوشت ببر 

ترانه باش اون ور آخر خط به نقطه می رسی بیا سر خط.

انشا الله که هیچ وقت به نقطه نرسی.

++++++++++++++++++++++++++++++++++++++++++++++++++++++

ترفند رجیستری قسمت اول

ترفند شماره 1

نمايش سازندگان ويندوز Me و 98

را انتخاب نماييد Properties كليك راست كنيد وگزينه Desk Top براي اين منظور روي

گزينه د3ِِِ Screen Saver Name رفته و در قسمت Screen Saver سپس رويه زبانه

تغيير دهيد volcano آن را به  Text را كليك كرده و Settings را انتخاب كنيد دكمه  Text

--------------------------------------------------------------------------------

ترفند شماره 2

بالا بردن سرعت

را انتخاب نماييد Properties كليك راست كنيد وگزينه  My Computerروي

را كليك كنيد File Systemرفته و Performance بر روي زبانه

را  Desk Top Computer گزينه Settings درقسمت

تغيير دهيد  Network Server به

بالا بردن سرعت باز شدن پنجره ها

 را اجرا كنيد و به مسيرزير برويد  Registry Editor

HKEY_CURRENT_URER\Control Panel\Desk Top.

اضافه كنبد ((String Value))REG_SZ  را از نوع MenuShow Delayپارامتر

ارزش آن را برابر 0  قرار دهيد

--------------------------------------------------------------------------------

ترفند شماره 3

Web View Background تغيير

را اجرا كنيد و به مسير زير برويد  Registry Editor

HKEY_LOCAL_MACHINE\Software\microsoft\windows\Current Version

اضافه كنيد ((String Value))REG_SZ را از نوع WebView پارامتر

تنظيم كنيد  Gif ارزش آن را برابر  تصويري

--------------------------------------------------------------------------------

ترفند شماره 4

Recycle Bin تغيير نام

 را اجرا كنيد Registry Editor.

تايپ كنيد Recycle Bin عبارت  Findرا زده ودر قسمت  F3كليد

آن را به  عبارت مورد نظر تغيير دهيد Recycle bin بعد از پيدا شدن

--------------------------------------------------------------------------------

ترفند شماره 5

بهينه سازي سرعت مودم

 خود را پيدا كنيد Port Modemبرويد [Port]را پيدا كرده و به قسمت  win.ini فايل

و آن را به صورت زير تغيير بدهيد

COM3:=921600,n,8,1,p

--------------------------------------------------------------------------------

ترفند شماره 6

 Auto Run  ايجاد فايل

بسازيد ودر ريشه درايو مورد نظر خود قرار دهيد Autorun.inf يك فايل متني بانام

 را بنويسيد[Autorun]در اولين خط فايل هميشه عبارت

Icon=مسير آيكون مورد نظر را در اين قسمت مي توانيد بنويسيد  

Open=مسير فايل اجرايي مورد نظر را هنگام دوبار كليك كردن بر روي  درايو

--------------------------------------------------------------------------------

ترفند شماره 7

  مخفي كردن Device Manager :

به زير كليد زير برويد:

[HKEY_USERS\.DEFAULT\Software\Windows\CurrentVersion\Policies\System]

و يك مقدار DWORD به نام NoDevMgrPage بسازيد و به آن مقدار يك بدهيد.

--------------------------------------------------------------------------------

ترفند شماره 8

  كاغذ ديواري ثابت(Wallpaper):

به زير كليد زير برويد:

[HKEY_USERS\.DEFAULT\Software\Windows\CurrentVersion\Policies\ActiveDesktop]

و يك مقدار DWORD به نام NoChangingWallpaper بسازيد و به آن مقدار يك بدهيد.

--------------------------------------------------------------------------------

ترفند شماره 9

  بدون كليك راست بر روي دسك تاپ:

به زير كليد زير برويد:

[HKEY_USERS\.DEFAULT\Software\Windows\CurrentVersion\Policies\Explorer]

و يك مقدار DWORD به نام  NoViewContextMenu بسازيد و به آن مقدار يك بدهيد.

--------------------------------------------------------------------------------

ترفند شماره 10

  بدون كليك راست بر روي نوار وظيفه:

به زير كليد زير برويد:

[HKEY_USERS\.DEFAULT\Software\Windows\CurrentVersion\Policies\Explorer]

و يك مقدار DWORD به نام NoSetTaskbar بسازيد و به آن مقدار يك بدهيد.

--------------------------------------------------------------------------------

ترفند شماره 11

 ويرايش يا حذف آخرين دستورات Run :

به زير كليد زير برويد:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU]

و هر تغييري را كه دوست داريد بدهيد.

--------------------------------------------------------------------------------

ترفند شماره 12

  بدون كليك راست بر روي منوي Start :

به 2 زير كليد زير برويد:

[HKEY_CLASSES_ROOT\Directory\shell]

[HKEY_CLASSES_ROOT\Folder\shell]

و نام زير كليد Shell را به Shell.old تغيير دهيد.

--------------------------------------------------------------------------------

ترفند شماره 13

 برداشتن علامت ميان بر از آيكون ها(فلش كوچك در سمت چپ در پايين آيكون):

به 2 زير كليد زير برويد:

[HKEY_CLASSES_ROOT\Inkfile]

[HKEY_CLASSES_ROOT\piffile]

و مقدار IsShortcut را حذف كنيد.

--------------------------------------------------------------------------------

ترفند شماره 14

  تغييرعنوان مرورگر اينترنت:

مرورگر Internet Explorer به طور پيش فرض داراي عنوان Microsoft Internet Explorer است. براي تغيير آن به زير كليد زير برويد:ِ

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]

و يك مقدار رشتهاي به نام Window Title بسازيد و به آن هر عبارتي را كه دوست داريد , بدهيد.

--------------------------------------------------------------------------------

هادی بهارلو پنجشنبه بیست و دوم فروردین 1387  نظر بدهید!

آشنایی با شی پرینتر در ویژوال بیسیک 6

آشنایی با شی پرینتر در ویژوال بیسیک 6
مقدمه

شی پرينتر ، شیي است که پرينتر پيش فرض سيستم را کنترل می کند . استفاده از شی پرينتر در ويژوال بيسيک 6 مانند کار با ساير اشيا است و بايستی از خواص و متدهای آن استفاده کرد . در ادامه با برخی از اين خواص و متدها آشنا خواهيد شد .

چاپ متن توسط شی پرينتر

برای چاپ متن توسط شی پرينتر کافيست خواص CurrentX و CurrentY که محل قرار گرفتن کرسر می باشد را تنظيم نوده و سپس با استفاده از متد Print متن مورد نظر را چاپ نموده و در پايان با استفاده از متد EndDoc صفحه چاپی را از پرينتر بيرون بدهيم . مثال :


Printer.CurrentX=150
Printer.CurrentY=200
Printer.Print "Visual Basic Printer Object Test"
Printer.EndDoc


در مثال فوق فرض شده که ScaleMode برابر Pixel قرار داده شده است . توجه داشته باشيد که تا قبل از اجرای متد EndDoc عمل چاپ انجام نمی شود و فقط بعد از اين متد است که چاپ انجام شده و کاغذ بيرون می آيد .

اگر پس از يک دستور Print ، دستور Print ديگری را استفاده کنيم متن روی خط بعدی چاپ خواهد شد . اگر بخواهيم متن بلافاصله بعد از متن اول چاپ شود بايد بعد از دستور Print اول از علامت ; استفاده کنيم .

نکته : برای کنترل دقيق محل چاپ از CurrentX و CurrentY استفاده نمائيد .

چاپ گرافيک توسط شی پرينتر

به 4 روش می توان اشکال گرافيکی را توسط شی پرينتر چاپ کنيد :
1 – چاپ دايره : با استفاده از متد Circle می توان يک دايره ، قوس و يا بيضی را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است :

Circle (x,y),radius,[color],[start],[end],[aspect]

که x و y مختصات مرکز دايره و radius شعاع آن می باشد .
پارامترهای color ، start ، end و aspect اختياری هستند و بترتيب رنگ ، محل شروع قوس ، محل خاتمه قوس و نسبت شعاع بيضی را نشان می دهند .

2 – چاپ خط : با استفاده از متد Line می توان يک خط و مستطيل را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است :

Line (x1,y1)-(x2,y2),[color],[B[F]]

که x1 و y1 مختصات شروع خط ( يا مستطيل ) و x2 و y2 مختصات انتهای خط ( يا مستطيل ) هستند .
پارامتر color اختياری بوده و رنگ خط ( يا مستتطيل ) را نشان می دهد .
پارامتر B اختياری بوده و نشان می دهد يک مستيل رسم  شود .
پارامتر F اختياری بوده و بهمراه B می آيد و نشان می دهد يک مستطيل توپر رسم شود .

3 – چاپ نقطه : با استفاده از متد PSet می توان نقطه ای روی صفحه چاپ کرد و فرمت کلی آن بصورت زير است :

PSet (x,y),[color]

که x و y مختصات نقطه می باشند .
پارامتر color اختياری بوده و رنگ نقطه را نشان می دهد .

4 – چاپ تصوير : با استفاده از متد PaintPicture می توان محتويات يک فايل گرافيکی را چاپ کرد . فرمت کلی اين متد بصورت زير است :

Printer.PaintPicture picture, x1, y1, [width1], [height1], [x2], [y2], [width2], [height2], [opcode]

x1 و y1 مختصات قرارگرفتن تصوير در صفحه بوده و picture يک شی از کلاس IPictureDisp است . اين شی را می توان از يک PictureBox يا از خاصيت Picture فرم گرفت و يا از دستور LoadPicture استفاده کرد .

مثال 1 :


Printer.PaintPicture Picture1.Picture, 100, 100

مثال 2 :

PaintPicture LoadPicture("C:\sample.jpg"), 100, 100

width1 و height1 طول و عرض تصوير چاپی  می باشند . x2 و y2 نيز بهمراه width2 و height2 می توانند ميزان برش از تصوير اصلی برای چاپ را مشخص کنند .

ساير خواص مهم شی پرينتر

ColorMode : اگر پرينتر رنگی باشد ، رنگی يا تک رنگ بودن چاپ را تعيين می کند .
Copies : تعداد چاپ را مشخص می کند .
Font : نوع فونت چاپ متن را مشخص می کند .
FontSize : سايز فونت چاپ متن را مشخص می کند .
PrintQuality : کيفيت چاپ را مشخص می کند .

ساير متدهای مهم شی پرينتر

KillDoc : پرينت در حال چاپ را از صف چاپ حذف می کند .
NewPage : صفحه جاری را به پايان برده و صفحه جديدی را برای چاپ آماده می کند .
Scale : سيستم مختصات کاربر را تعيين می کند .
TextHeight : ارتفاع متن پس از چاپ شدن در مختصات Scale را تعيين می کند .
TextWidth : عرض متن پس از چاپ شدن در مختصات Scale را تعيين می کند

تمام

هادی بهارلو سه شنبه بیستم فروردین 1387  نظر بدهید!

API هاي ويندوز

API هاي ويندوز

امروز قصد دارم در مورد API هاي ويندوز و چگونگي استفاده از آنها در ويژوال بيسيک بطور خلاصه توضيح دهم و همچنين دو مثال پراستفاده را نيز در اين زمينه بيان کنم که عبارتند از چگونگي پخش فايلهاي Wav و ساخت يک تايمر با دقت بالا :

۱ - آشنايي با Windows API : واژه API مخفف Application Programming Interface مي باشد . API هاي ويندوز مجموعه اي از توابع از پيش آماده موجود در سيستم عامل هستند که شما مي توانيد آنها را در برنامه هاي خود فراخواني کنيد . اين توابع در چندين کتابخانه DLL ويندوز ذخيره شده اند . براي دسترسي به اين توابع در ويژوال بيسيک ابتدا بايد آنها را برنامه خود declare کنيد . براي مثال :

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long


همانطور که مي بينيد مثال فوق يک Declare از تابع sndPlaySound مي باشد که اين تابع در کتابخانه Winmm.dll موجود است . کلمه Alias نشان مي دهد که اين تابع نام ديگري در dll دارد . ساير بخشها مربوط به تعريف پارامترهاي تابع مي باشند که در مورد مثال فوق ، اين تابع دو پارامتر ورودي و يک خروجي از نوع Long دارد .
پس از Delare کردن API در برنامه مي توانيد از آن استفاده نمائيد .

۲ - پخش فايلهاي Wav : تابعي که براي پخش فايلهاي Wav استفاده مي شود تابع sndPlaySound است که در بالا با آن آشنا شديد . پارامتر lpzSoundName نام و مسير فايل Wavو پارامتر uFlags چگونگي پخش فايل را مشخص مي کند . مقادير ممکن اين پارامتر عبارتند از :
- SND_ASYNC : اجازه مي دهد طوري فايل Wav پخش شود که آنرا بتوان وقفه داد . بعبارت ديگر قادر خواهيد بود فايل Wav تان را هر زمان که بخواهيد پخش کنيد و مطمئن باشيد که حتماً شنيده مي شود .
- SND_LOOP : فايل Wav را بطور ممتد پخش مي کند .
- SND_NODEFAULT : اگر فايل Wav پيدا نشود صداي ديگري پخش نخواهد شد ( مثلاً برخي صداهاي default ويندوز )
- SND_SYNC : در طول پخش فايل Wav کنترل به برنامه داده نمي شود . اين پارامتر در زمانيکه مي خواهيد فايل Wav اي را در پس زمينه برنامه تان پخش کنيد مناسب نمي باشد .
- SND_NOSTOP : اگر فايل Wav اي قبلاً در حال پخش باشد ، فايل Wav شما آنرا دچار وقفه نمي کند . از اين پارامتر زماني استفاده مي شود که بخواهيم فايل Wav مان هيچوقت در وسط کار قطع نشود .
اگر بخواهيد از بيش از يکي از اين پارامترها استفاده کنيد توسط Or آنها را ترکيب نمائيد مثال :

sndPlaySound App.path & "\ding.wav", SND_ASYNC or SND_LOOP



نکته : براي استفاده از توابع صوتي پيچيده تر بايستي از DirectSound که يکي از اجزاي DirectX مي باشد استفاده کنيد . در مورد DirectSound بعداً صحبت خواهم کرد .

۳ - ساخت يک تايمر با دقت بالا : شايد تا بحال از کنترل تايمر موجود در نوار ابزار ويژوال بيسيک استفاده کرده باشيد . اين تايمر داراي دقت حدود ۵۵ ميلي ثانيه است . براي دستيابي به زمانهاي با دقت بالاتر اين کنترل مفيد نخواهد بود .
تابع GetTickCount يک API موجود در کتابخانه Kernel32.dll است . اين تابع طول زماني را که سيستم شروع به کار کرده است را برحسب ميلي ثانيه برمي گرداند :

Private Declare Function GetTickCount Lib "kernel32" () As Long

براي بررسي طي شدن يک مدت زماني خاص شما ابتدا بايد مقدار اين تابع را در يک متغير کمکي مثل TempTime قرار دهيد سپس در يک حلقه Do-Loop بايد اختلاف زمان GetTickCount جديد و زمان TempTime را با مقدار زماني که مي خواهيد سپري شود مقايسه کنيد :

TempTime = GetTickCount()x
Do While DesiredTime < GetTickCount() - TempTime
Do some things'
Loop


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

ExitFunction = False
TempTime = GetTickCount()x
Do While not(ExitFunction)x
If DesiredTime < GetTickCount() - TempTime then
Reset the temporary variable'
TempTime = GetTickCount()x
Do some things'
End If
Loop


همچنين از تابع GetTickCount مي توان براي benchmark برنامه ها استفاده کرد . بعبارت ديگر مي توان زمان اجراي يکسري دستورات خاص را بدست آورد .

تمام

هادی بهارلو سه شنبه بیستم فروردین 1387  نظر بدهید!

آموزش پاسکال بخش آخر

آموزش پاسکال بخش آخر

دستورات زير را در نظر بگيريد:

Var y1,y2:real;
St1,st2 : string;
Y1:=352.768
Y2:=476.395
Str(y1:7:2,st1);
Str(y2:3:1,st2);

با اجراي دستور str اول مقدار 352.768 به رشته '352.768' تبديل ميشود و در st1 قرار ميگيرد و با اجراي دستورstr دوم مقدار 476.395 به رشته '476.395'تبديل ميشود و در st2 قرار ميگيرد.
جدا كردن زيررشته اي از رشته:
زيررشته بخشي از رشته است و براي جدا كردن زيررشته از رشته از تابع copy استفاده ميشودتابع copy به صورت زير به كار ميرود.

Copy (source,index,size)
S:='I am learning pascal ';
S1:=copy(s,15,6);

دستور copy باعث ميگردد تا با شروع از محل 15 تعداد 6 كاراكتر از رشته s استخراج شود و در s1 قرار گيرد. بنابراين محتويات رشته s1 برابر است با 'pascal'.
الحاق رشته ها :
منظور از الحاق رشته ها اتصال رشته ها به يكديگر است به عنوان مثال اگرs1:='ab' و s2:='cde' الحاق دو رشته (s1,s2) به صورت 'abcde' خواهد بود براي الحاق رشته ها از تابع concat استفاده ميشود:
(اسامي رشته ها)concat
دستورات زير را در نظر بگيريد:

S1:='pascal';
S2:='is a ;
S3:='language';
S4:=concat(s1,s2,s3);

با اجراي اين دستور s3 به انتهاي s2 متصل ميشود و رشته نتيجه به انتهاي s1 متصل ميگردد و در نتيجه رشته s4 عبارت است از'pascal is a language': . اگر طول رشته حاصل بيش از 255 باشد بقيه كاراكترها حذف ميشوند.
جستجوي رشته اي در رشته ديگر:
براي اين كار از تابع pos استفاده ميشود كاربرذ اين تابع به صورت زير است:

Pos(s1,s2)

S1 رشته اي است كه بايد در s2 وجود داشته باشد محل اولين وقوع آن برگردانده ميشود و گر نه مقدار صفر برگردانده ميشود دستورات زير را در نظر بگيريد:

S1:='learning'
S2:='I am learning pascal';
S3:='english'
X:=pos(s1,s2)
y:=pos(s3,s2)

چون رشته s1 در s2 وجود دارد دستور pos اول مقدار 6 را در x قرار ميدهد و معنايش اين است كه رشته 'learning' در محل 6 رشته s2 وجود ندارد مقدار صفر در y قرار ميگيرد.
محاسبه طول رشته :
براي محاسبه طول رشته از تابع length به صورت زير استفاده ميشود:
(رشته)length
دستورات زير را در نظر بگيريد:

S1:='xymn'
X:=length(s1)

چون طول رشته s1 برابر 4 است مقدار x برابر 4 خواهد بود.
حذف و درج زيررشته:
زير رشته اي را ميتوان از رشته اي حذف كرد و يا زيررشته اي را ميتوان در رشته اي درج كرد براي حذف زير رشته از زيربرنامه ها به صورت زير به كار ميروند:

Delete(source,index,size)
Insert(pattern,destination,index)

در زيربرنامه delete زيررشته اي به طول size با شروع از محل index از رشته source حذف ميشود و در زيربرنامه insert زيررشته pattern با شروع از محل index در رشته destination درج ميشوددستورات زير را در نظر بگيريد:

S1:=pas***cal
Delete(s1,4,3)
S2:='paal';
S3:='sc';
Insert(s3,s2,);

دستور delete باعث ميشود تا با شروع از محل 4 رشته s1 حذف شده و رشته s1 به pascalتبديل شود دستور insert موجب ميشود تا رشته s3 در s2 درج شود و در نتيجه رشته s2 به 'pascal' تبديل شود.
مثال : برنامه اي بنويسيد كه يك اسم را از ورودي دريافت و آنرا بر عكس چاپ كند

Readln(name);
For i:=length(name) downto 1 do
Write (name[i])

مثال : برنامه اي بنويسيد كه كه يك نام را از ورودي دريافت و به ما بگويد كه آيا اين نام با حرف a شروع ميشود يا خير؟

Readln(name);
If name[1]='a' then
Writeln('ok')
Else
Writeln('not ok');

مثال : برنامه اي بنويسيد كه يك نام را از ورودي دريافت و حروف آنرا يك در ميان چاپ كند.

Readln(name);
For i:=1 to length(name) do
If I mod 2 = 0 then
Writeln(name[i]);

روش ديگر:"

For i:=1 to int(length(name)/2) do
Writeln(name[i*2]);

مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و متقارن بودن آنرا چك كند.
1 2 3 4 5 5 4 3 2 1

var
N:string;
Begin
Readln(n);
For i:=1 to int(length(n)/2) do
Begin
If n[i] <> n[length(n)-i+1] then
K:=0;
End;
If k=1 then
Writeln ('ok')
Else
Writeln('no');
End.

مثال : برنامه اي بنويسيد كه تعداد حروف a موجود در يك رشته ورودي را بشمارد.

Var st:string;
Begin
Readln(st);
C:=0;
For i:=1 to length(st) do
If st[i]='a' then ?if st[i] in ['a','A'] then
C:=c+1;
Writeln(c)

مثال : برنامه اي بنويسيد كه تعداد اسامي alireza موجود در رشته را بشمارد.

Begin
Readln(st);
C:=0;
While pos('alireza',st) <> 0 do
Begin
C:=c+1;
J:=pos('alireza',st);
Delete(st,pos('ali',st),3);
End;
Write ( c );
End.

مثال : برنامه اي بنويسيد كه دو رشته را از ورودي دريافت و بعد از كاراكترمساوي كه در رشته اول وجود دارد رشته دوم را چاپ كند.

Readln(st,st1);
J:=pos('=',st);
Writeln(copy ((st,1 j) , st1, copy (st,j+1,100));

تكليف : برنامه اي بنويسيد كه با دريافت سه حرف و قرار دادن آنها در يك آرايه سه تايي كليه تركيبات ممكن را كه سه حرف تركيباتشان به هم نخورد چاپ كند.
W a x
A x w
W a x
مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و كليه كلمات موجود در آن را بشمارد.

Readln(st);
S:=0;
St:=st+' '
While pos(' ',st) <> 0 do
Begin
S;=s+1;
Delete(st,1,pos(' ',st));
While st[1]=' 'do
Delet (st,1,1);
End;
End.

تكليف : برنامه اي بنويسيد كه 100 رسته را از ورودي دريافت و در يك آرايه به طول 100 از نوع string بريزيد و به سؤالات زير جواب دهد.
1- تعداد كل كلمات
1- تعداد كل حروف
2- تعداد حروف صدا دار

ذخيره اطلاعات :
Log file : فايلي است كه تمام تغييرات مربوط به يك محيط را ثبت ميكند
فايلها :
1- متني text
2- ركوردي typed
3-بدون نوع
4-untyped

معرفي فايلهاي متني :
Var

Text : نام فايل

نسبت دادن فايل :

; ('نام خارجي ,'نام فايل ) assign

مثال :

Assign(f,'c:\a1.dat.ddd');

باز كردن جهت خواندن

;( نام فايل)reset

باز كردن جهت نوشتن

; ( نام فايل)rewrite
) ___,نام فايل)readln
) ___,نام فايل)writeln
) نام فايل)close

تا close انجام نشود data ذخيره نميشود .
نكته بسيار مهم : در هر يك از مسائلي كه در مورد فايلها مطرح ميشود مي بايستي به نحوي از يكي از تكنيكهاي نگهداري اطلاعات در حافظه اصلي استفاده نمود اين تكنيكها ممكن است استفاده از متغيرها و آرايه ها و ماتريسها و ودرختهاو...استفاده نمود ولي تنها با دو عمل خواندن و نوشتن به روي فايل كار انجام ميشود
Update : ميخوانيم ولي دوباره ميريزيم سر جاش
Append : بهش يك چيزي اضافه ميكنيم
نكته : عمل rewrite باعث ميگردد چنانچه فايل وجود نداشته باشد ايجاد و چنانچه وجود دارد اطلاعاتش به طور كامل پاك شود.
مثال : برنامه اي بنويسيد كه100 اسم را از ورودي دريافت و آنها را در يك فايل به نام a1.dat))بنويسد.

Var
F:text;a:string;
Begin
Assign(f,'a1.dat');
Rewrite(f);
For i:=1 to 100 do
Readln(a);
Writeln(f,a);
End;
Close(f);
End.

مثال : برنامه اي بنويسيد كه فايل a1.dat را خوانده و به ما بگويد چند بار اسم ali تكرار شده است؟

Var
A:text;
B:string;
Begin
Assign(a,'a1.dat');
Reset(a);
Sum:=0;
For i:=1 to 00 do
Begin
Readln(a,b);
If b='ali' then
Sum:=sum+1;
End;
Close(a,b);
End;

مثال : برنامه اي بنويسيد كه تعدادي اسم را كه آخرين آنها end است از ورودي دريافت و در يك فايل به نام aa.dat بريزد آنگاه فايل را بسته و قسمتهاي زير را به طور جداگانه انجام دهد.
1- تعداد حسنها بيستر است يا علي ها
2- چند اسم وجود دارد كه با حرف z شروع ميشود.

Var
f:text;
Name:string;
Begin
Assign(f,'aa.dat');
Rewrite(f);
Readln(name);
While name<> 'end' do
Begin
Writeln(f,name);
Readln(name);
End;
Close(f);
H:=1;
A:=1;
Z:=1;
Reset(f);
While not eof (f) do
Begin
Readln(f,name);
If name='ali' then
A:=a+1;
If name ='hassan' then
H:=h+1;
End;
Close(a);
If h>a then writeln('h>a');
If h
If h=a then writeln('h=a');
End;
Close(f);
Reset(f);
While not eof (f) do
Begin
Readln(f,name);
If name[i]='z' then
Z;=z+1;
End;
Close(f);
Writeln('sum of z is :'z);
End.

تكليف : برنامه اي بنويسيد كه تعدادي نام را از ورودي دريافت و در يك فايل بريزد سپس فايل تشكيل شده را باز كرده و از روي اين فايل دو فايل ديگر تشكيل دهيد كه در يكي از آنها اسامي كه بين a تا z قرار گرفته اند ريخته و در فايل دوم كليه اسامي كه از v تا z هستند را بريزد.

Program test;
Var
Name : string;
F,f1,f2:text;
Begin
Assign(f,'a.dat');
Rewrite(f);
Writeln('enter a name ');
Readln(name);
While length(name)>0 do
Begin
Writeln(f,name);
Writeln('enter a name');
Readln(name);
End;
Close(f);
Reset(f);
Assign(f1,'a1.dat');
Assign(f2,'a2.dat');
Rewrite(f1);
Rewrite(f2);
While not eof (f) do
begin
Readln(f,name);
Case name[1] of
'a'..'u':writeln(f1,name);
'v'..'z':writeln(f2,name);
end;
end;
close(f2);
close(f1);
close(f);
end.

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

var
h,f,g:text;
a:string;
begin

writeln('enter first filename') ;
readln(a);
assign(h,a);
writeln('enter second filename') ;
readln(a);
assign(f,a);
reset(h);
reset(f);
assign(g,'out.dat');
rewrite(g);
while not eof(h) do
begin
readln(h,a);
writeln(g,a);
end;
while not eof(f) do
begin
readln(f,a);
writeln(g,a);
end;
close(f);
close(h);
close(g);
End.

تكليف :برنامه اي بنويسيد كه در ضمن عمل merge دو فايل مرتب شده را با يكديگر تركيب و يك فايل مرتب شده به دست آوريم.

پایان

هادی بهارلو سه شنبه بیستم فروردین 1387  نظر بدهید!

آموزش پاسکال بخش سوم

آموزش پاسکال بخش سوم

مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد

3 2 1 a
B+...+3+2+1 1..b b..1 واكنش

Begin
Writeln (' enter a,b :');
Readln(a,b);
Case a of
1:begin
for i:=1 to b do
write(i);
end;
2:begin
or I;=b downto 1 do
write(i);
end;
3:begin
sum:=0;
for i:=1 to b do
sum:=sum+I;
write(sum);
end;
end.
آرايه ها :
آرايه ها به عناصري اتلاق ميشود كه با يك نام تعدادي محل از حافظه را كنترل كند براي تشخيص محلها از انديس استفاده ميشود
انواع آرايه ها :
1- آرايه هاي يك بعدي
2- عناصر دو بعدي
3- آرايه هاي سه بعدي

تعريف آرايه ها :
var
نوع of ]انديس پايان..انديس شروع: array [ نام آرايه
نوع متغير آرايه : متغير آرايه
خواندن آرايه :
مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و در يك آرايه بريزد.
Var
A:array[1..100] of real;
Begin
For i:=1 to 100 do
Readln(a[i]);

مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و 50 تاي اول را چاپ كند سپس تعداد نمرات 20 را مشخص كند.
Var
A:array[1..100] of real;
Begin
For I;=1 to 100 do
Writeln('enter no(',I,')');
Readln(a[i]);
For i:=1 to 50 do
Writeln(a[i]);
S:=0;
For i:=1 to 100 do
If i:=1 to 100 do
If a[i]=20 then
S:=s+1;
Writeln(s);
End.

پيدا كردن max,min
عنصر اول =min
حلقه براي گردش در آرايه
Min < عنصر فعلي if
عنصر فعلي min :=
Write(min);
مثال : برنامه اي بنويسيد كه با دريافت نمرات 100 دانش آموز بالاترين و پايين ترين نمره را در بين اين 100 نفر پيدا كند.

Var
A:array[1..100] of real;
I:integer;
Begin
For i:=1 to 100 do
Readln(a[i]);
Min:=a[1];
Max:=a[1];
For i:=2 to 100 do
Begin
If a[1]< min then
Min:=a[i];
If a[i]>max then
Max := a[i];
End;
Writeln('max is :',max,'min is :',min);
End.
مثال : برنامه اي بنويسيد كه با دريافت 100 اسم به ما بگويد تعداد تكرار اسم ali چند بار است وآيا اسم hassan بيشتر ذكر شده يا اسم reza ؟
Var
A:array [1..100] of string;
Begin
For i:=1 to 100 do
Readln(a[i]);
Ali:=0;
Reza:=0;
Hassan:=0;
For i:=1 to 100 do
Begin
If a[i]='ali' then
Ali:=ali+1;
If a[i]='reza' then
Reza:=reza+1;
If a[i]='hassan' then
Hassan:=hassan+1;
Endd
Writeln(ali is :',ali);
If reza>hassan then
Writeln('reza')
Else
Writeln('hassan');
End.
مثال : برنامه اي بنويسيد كه با دريافت نام و نمره 100 دانش آموز تنبل ترين فرد كلاس را مشخص كند.
Var
Name:array[1..100] of string;
No:array[1..100] of real;
Begin
For i:=1 to 100 do
Begin
Readln(name[i]);
Readln(no[i]);
End;
Min:=no[1];
Namemin:=name[1];
For i:=2 to 100 do begin
If no[i] Begin
Min:=no[i];
Namemin:=name[i];
Writeln(namemin);
End.
آرايه هاي دو بعدي:
وقتي از آرايه دوبعدي استفاده ميكنيم بايد از دو حقه for استفاده كنيم.
مثال : برنامه اي بنويسيد كه نمرات 4 كلاس كه هر يك 20 دانش آموز دارد را از ورودي دريافت وتنبل ترين فرد را در اين 4 كلاس مشخص كند.
Var
A:array[1..20,1..4] of real;
Begin
For i:=1 to 4 do
Begin
For j:=1 to 20 do
Readln(a[j,i]);
End;
Min:=a[1,1];
For i:=1 to 4 do
For j:=1 to 20 do
If a[j,i]< min then
Min:=a[j,i];
Writeln(min);
End.
مثال : در يك آرايه 100*20دوهزار كاراكتر نگهداري ميشود برنامه اي بنويسيد كه تعداد تكرار حرف A را با a مقايسه كند و همچنين به ما بگويد آيا كاراكتر z در اين ماتريس وجود دارد ؟
Var
A:array[1..20,1..100] of character;
Bool:Boolean;
B,b1:integer;
Begin
For i:=1 to 100 do
For j:=1 to 20 do
If a[I,j]='A' then
B:=b+1;
If a[I,j]='a' then
B1:=b1+1;
If a[I,j]='z' then
Bool:=true;
End;
If b>b1 then writeln('A>a');
If b If b=b1 then writeln('A=a');
If true then writeln('''z''exist');
End.

تكليف : ميخواهيم نام و نمره تعدادي دانش آموز يك كلاس را از ورودي دريافت كنيم و مشخص كنيم كه تنبل ترين و زرنگ ترين فرد كلاس كيست.چند نفر نمره زير 10 گرفتند؟نام كساني كه نمره آنها در بازه 17 تا 15 مي باشد ب همراه نمره آنها چاپ شود آخرين نفر نامش end است حداكثر تعداد دانش آموزان 100 نفر است.
Var

a:array [1..100] of string ;
b:array[1..100] of real;
begin
i:=1;
read(a[i]);
while a[i]<>'end' do begin
readln(b[i]);
i:=i+1;
readln(a[i]);
end;
j:=i-1;
min:=a[1];
max:=a[1];
for i:= 2 to j do
begin
if b[i] >max then
begin
max:=b[i];
name:a[i];
end;
end
writeln(name);
count:=0;
for i:=1 to j do
if b[i]<=10 then
count:=count+1;
writeln(count);
for i:=1 to j do
if (b[i]<17) and (b[i]>15) then
write(b[i],a[i]);
end.
تكليف : برنامه اي بنويسيد كه حاصل اين عبارت را حساب كند.
i/i!=1/1!+2/2!+3/3!+4/4!+5/5!
N!= 1*2*3*4*…*n
Begin
Sum:=0;
For n:=1 to 5 do
Begin
For m:=1 to n do
F:=f*m;
Sum:=sum+n/f;
End;
Writeln(sum);
End.
تكليف : برنامه اي بنويسيد كه نمرات 80 دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودي دريافت كند سپس به سوالات زير جواب دهد.
1- معدل هر يك از كلاسها
2- نمره تنبل ترين و زرنگترين شخص در هر كلاس به طور جداگانه
Var
A:array [1..4,1..20] of real;
Begin
For i:=1 to 4 do
For j:=1 to 20 do
Begin
Writeln('please enter nomreh');
Readln(a[I,j]);
End;
For i:=1 to 4 do
Begin
Sum:=0 ;
For j:=1 to 20 do
Begin
Sum:=a[I,j]+sum;
End;
Writeln(sum/20,'average of this class');
End;
For i:=1 to 4 do
Begin
Max :=a[1,1];
Min:=a[1,1];
For j:=2 to 20 do
Begin
If a[I,j]>max then
Max :=a[I,j];
End;
Writeln(I,min,max);
End;
End.
- String :
String آرايه اي از كاراكترهاست .اغلب لازم است كاراكترهايي در رشته موجود درج شوندو يا كاراكترهايي به جاي بخشي از رشته نوشته شوند , زيررشته اي در رشته جستجو گردد و يا دو رشته با هم الحاق شوند.
رشته تهي : طول رشته ثابت نيست و با داداه هايي كه در آن ذخيره شده است مشخص مي گردد.كاراكترهايي كه در رشته قرار مي گيرد از حداكثر طولي كه براي آن تعيين ميشود بيشتر نخواهد بود. اگر name رشته كاراكتري باشد دستور زير name را به رشته تهي تبديل ميكند:
Name:='';
تبديل رشته به اعداد :
در پاسكال زير برنامه هايي وجود دارند كه به آساني ميتوانند رشته ها را پردازش كنند. زيربرنامه val رشته عددي را گرفته به مقدار عددي تبديل ميكند.
رشته عددي رشته اي است كه حاوي كاراترهاي '0' تا '9' و نقطه مميز باشد مثل '12.5' و'13.5' زيربرنامه val به صورت زير به كار ميرود.
Val (st,number,error)
St رشته اي است كه بايد به عدد تبديل شود و number متغيري است كه رشته تبديل شده به عدد در آن قرار ميگيرد. چنانچه در رشته st كاراكتر نا معتبري (كاراكترهاي غير از( '0' تا '9' و'.' ) , محل وجود آن كاراكتر در پارامتر error قرار ميگيرد. اگر error برابر با صفر باشد معنايش اينست كه كاراكتر نا معتبري وجود ندارد. اگر number از نوع صحيح باشد st به مقدار صحيح و اگر number از نوع اعشاري باشد st به مقدار اعشاري تبديل ميشود .
مثال زير را در نظر بگيريد:
Var st :string;
Num,e:integer;
St:='352';
Val (st,num,e);
مقدار 352 در متغير num ومقدار صفر در متغير e قرار ميگيرد اكنون دستورات زير را در نظر بگيريد :
St:='35#'2;
Val (st,num,e);
با اجراي دستور val به دليل وجود كاراكتر' # ' كه كاراكتر نامعتبري در اعداد است عدد 2 در متغير e قرار ميگيرد و معنايش اينست كه كاراكتر شماره 2 ( شماره گذاري از صفر شروع ميشود) نامعتبر است و عمل تبديل صورت نميگيرد و مقدار num تعريف نشده است.
تبديل عدد به رشته :
براي تبديل مقدار عددي به رشته عددي از زيربرنامهstr استفادهميشود و به صورت زير به كار ميرود:
Str (number : format,numstring)
با اين دستور مقداري كه در number قرار دارد به رشته اي به طول format تبديل ميشود و در رشته numstring قرار ميگيرد . دستورات زير را در نظر بگيريد:
Var x:integer;
St:string;
X=352;
Str(x:5,st);
با اجراي اين دستور مقدار 352 به رشته '352' تبديل شده در st قرار ميگيرد
 
پایان

هادی بهارلو سه شنبه بیستم فروردین 1387  نظر بدهید!

كامل ترين مرجع خطاهاي مودم به فارسی

به نام تنها برنامه نویس هستی

كامل ترين مرجع خطاهاي مودم به فارسی 
 


600 . اگر سيستم در حال شماره گيري باشد و دوباره شماره گيري نماييد اين خطا نمايش داده مي شود .

601 . راه انداز Port بي اعتبار مي باشد .

602 . Port هم اكنون باز مي باشد براي بسته شدن آن بايد كامپيوتر را مجددا راه اندازي نمود.

603 . بافر شماره گيري بيش از حد كوچك است .

604 . اطلاعات نادرستي مشخص شده است .

605 . نمي تواند اطلاعات Port را تعيين كند .

606 . Port شناسايي نمي شود .

607 . ثبت وقايع مربوط به مودم بي اعتبار مي باشد .

608 . راه انداز مودم نصب نشده است .

609 . نوع راه انداز مودم شناسايي نشده است .

610 . بافر ندارد .

611 . اطلاعات مسير يابي غير قابل دسترس مي باشد .

612 . مسير درست را نمي تواند پيدا نمايد .

613 . فشرده سازي بي اعتباري انتخاب شده است .

614 . سرريزي بافر .

615 . Port پيدا نشده است .

616 . يك درخواست ناهمزمان در جريان مي باشد .

617 .Port يا دستگاه هم اكنون قطع مي باشد .

618 . Port باز نمي شود. ( وقتي رخ مي دهد كه يك برنامه از Port استفاده كند ).

619 . Port قطع مي باشد (وقتي رخ مي دهد كه يك برنامه از Port استفاده كند).

620 . هيچ نقطه پاياني وجود ندارد .

621 . نمي تواند فايل دفتر راهنماي تلفن را باز نمايد .

622 . فايل دفتر تلفن را نمي تواند بارگذاري نمايد .

623 . نمي تواند ورودي دفتر راهنماي تلفن را بيابد .

624 . نمي توان روي فايل دفتر راهنماي تلفن نوشت .

625 . اطلاعات بي اساسي در دفتر راهنماي تلفن مشاهده مي شود .

626 . رشته را نمي تواند بارگذاري كند .

627 . كليد را نمي تواند بيابد .

628 . Port قطع شد .

629 . Port بوسيله دستگاه راه دور قطع مي شود. (درست نبودن راه انداز مودم با برنامه ارتباطي).

630 . Port به دليل از كارافتادگي سخت افزار قطع مي شود .

631 . Port توسط كاربر قطع شد .

632 . اندازه ساختار داده اشتباه مي باشد .

633 . Port هم اكنون مورد استفاده مي باشد و براي Remote Access Dial-up پيكر بندي نشده است (راه انداز درستي بر روي مودم شناخته نشده است) .

634 . نمي تواند كامپيوتر شما را روي شبكه راه دور ثبت نمايد .

635 . خطا مشخص نشده است .

636 . دستگاه اشتباهي به Port بسته شده است .

637 . رشته ( string ) نمي تواند تغيير يابد .

638 . زمان درخواست به پايان رسيده است .

639 . شبكه ناهمزمان قابل دسترس نيست .

640 . خطاي NetBIOS رخ داده است .

641 . سرور نمي تواند منابع NetBIOS مورد نياز براي پشتيباني سرويس گيرنده را بدهد .

642 . يكي از اسامي NetBIOS شما هم اكنون روي شبكه راه دور ثبت مي گردد ، ( دو كامپيوتر مي خواهند با يك اسم وارد شوند ) .

643 .Dial-up adaptor در قسمت network ويندوز وجود ندارد .

644 . شما popus پيغام شبكه را دريافت نخواهيد كرد .

645 . Authentication داخلي اشكال پيدا كرده است.

646 . حساب در اين موقع روز امكان log on وجود ندارد .

647 . حساب قطع مي باشد .

648 . اعتبار password تمام شده است .

649 . حساب اجازه Remote Access را ( دستيابي راه دور ) را ندارد . ( به نام و كلمه عبور اجازه dial-up داده نشده است ) .

650 . سرور Remote Access ( دستيابي راه دور ) پاسخ نمي دهد .

651 . مودم شما ( يا ساير دستگاههاي اتصال دهنده ) خطايي را گزارش كرده است . ( خطا از طرف مودم بوده است ) .

652 . پاسخ نا مشخصي از دستگاه دريافت مي گردد .

653 . Macro (دستورالعمل كلان). ماكرو خواسته شده توسط راه انداز در ليست فايل .INF موجود نمي باشد .

654 . يك فرمان يا يك پاسخ در قسمت .INF دستگاه به يك ماكرو نامشخص اشاره مي نمايد .

655 . دستور العمل (پيغام) در قسمت فايل .INF دستگاه مشاهده نمي شود .

656 . دستورالعمل (ماكرو) (default off) در فايل .INF دستگاه شامل يك دستور العمل نامشخص مي باشد .

657 . فايل .INF دستگاه نمي تواند باز شود .

658 . اسم دستگاه در فايل .INF دستگاه يا در فايل .INI رسانه بيش از حد طولاني مي باشد .

659 . فايل .INI رسانه به نام ناشناخته يك دستگاه اشاره مي نمايد .

660 . فايل .INI رسانه براي اين فرمان پاسخي را ندارد .

661 . فايل .INF دستگاه فرمان را از دست داده است .

662 . تلاش براي قرار دادن يك ماكرو ليست نشده در قسمت فايل .INF صورت نگرفته است.

663 . فايل .INI رسانه به نوع ناشناخته يك دستگاه اشاره مي نمايد .

664 . نمي تواند به حافظه اختصاص دهد .

665 . Port براي Remote Access (دستيابي راه دور) پيكر بندي نشده است.

666 . مودم شما (ياساير دستگاههاي اتصال دهنده) در حال حاضر كار نمي كنند .

667 . فايل .INI رسانه را نمي تواند بخواند .

668 . اتصال از بين رفته است .

669 . پارامتر به كار برده شده در فايل .INI رسانه بي اعتبار مي باشد .

670 . نمي تواند نام بخش را از روي فايل .INI رسانه بخواند .

671 . نمي تواند نوع دستگاه را از روي فايل .INI رسانه بخواند .

672 . نمي تواند نام دستگاه را از روي فايل .INI رسانه بخواند .

673 . نمي تواند كاربر را از روي فايل .INI رسانه بخواند .

674 . نمي تواند بيشترين حد اتصال BPS را از روي فايل .INI رسانه بخواند .

675 . نمي تواند بيشترين حد BPS حامل را از روي فايل .INI رسانه بخواند .

676 . خط اشغال مي باشد .

677 . شخص به جاي مودم پاسخ مي دهد .

678 . پاسخي وجود ندارد .

679 . نمي تواند عامل را پيدا نمايد .

680 . خط تلفن وصل نيست .

681 . يك خطاي كلي توسط دستگاه گزارش مي شود .

682 . Writing section name دچار مشكل مي باشد .

683 . Writing device type با مشكل روبرو شده است .

684writing device name .684 با مشكل روبرو مي باشد .

685 . Writing maxconnectbps مشكل دارد .

686 . Writing maxcarrierBPS دچار مشكل مي باشد .

687 . Writing usage با مشكل مواجه است .

688 . Writing default off دچار مشكل مي باشد .

689 . Reading default off با مشكل مواجه است .

690 . فايل INI خالي ست .

691 . دسترسي صورت نمي پذيرد زيرا نام و كلمه عبور روي دامين بي اعتبار مي باشد

692 . سخت افزار در درگاه يا دستگاه متصل شده از كار افتاده است .

693 . Binary macro با مشكل مواجه مي باشد .

694 . خطاي DCB يافت نشد .

695 . ماشين هاي گفتگو آماده نيستند .

696 . راه اندازي ماشين هاي گفتگو با مشكل روبرو مي باشد .

697 . Partial response looping با مشكل روبرو مي باشد .

698 . پاسخ نام كليدي در فايل INF . دستگاه ، در فرمت مورد نظر نمي باشد .

699 . پاسخ دستگاه باعث سر ريزي بافر شده است .

700 . فرمان متصل به فايل INF . دستگاه بيش از حد طولاني مي باشد .

701 . دستگاه به يك ميزان BPS پشتيباني نشده توسط گرداننده com تغيير مي يابد .

702 . پاسخ دستگاه دريافت مي گردد زماني كه هيچكس انتظار ندارد .

703 . در فعاليت كنوني مشكلي ايجاد شده است .

704 . شماره اشتباه callback .

705 . مشكل invalid auth state .

706 . Invalid auth state دچار مشكل مي باشد .

707 . علامت خطاياب . x. 25

708 . اعتبار حساب تمام شده است .

709 . تغيير پسورد روي دامين با مشكل روبرو مي باشد .

710 . در زمان ارتباط با مودم شما خطاهاي سري يش از حد اشباع شده مشاهده مي گردد.

711 . Rasman initialization صورت نمي گيرد گزارش عملكرد را چك كنيد

712 . درگاه Biplex در حال اجرا مي باشد . چند ثانيه منتظر شويد و مجددا شماره بگيريد .

713 . مسيرهاي ISDN فعال در خط اصلي قطع مي باشد .

714 . كانال هاي ISDN كافي براي ايجاد تماس تلفني در دسترس نمي باشند .

715 . به دليل كيفيت ضعيف خط تلفن خطاهاي فراواني رخ مي دهد .

716 . پيكر بندي remote access IP غير قابل استفاده مي باشد .

717 . آدرسهاي IP در static pool remote access IP وجود ندارد .

718 . مهلت بر قراري تماس PPP پايان پذيرفته است .

719 . PPP توسط دستگاه راه دور پايان مي يابد .

720 . پروتكل هاي كنترلppp پيكر بندي نشده اند .

721 . همتاي PPP پاسخ نمي دهد .

722 . بسته PPPبي اعتبار مي باشد .

723 . شماره تلفن از جمله پيشوند و پسوند بيش از حد طولا ني مي باشد .

724 . پروتكل IPXنمي تواند بر روي درگاه dial –out نمايد زيرا كامپيوتر يك مسير گردان IPX مي باشد .

725 . IPX نمي تواند روي port (درگاه) dial – in شود زيرا مسير گردان IPX نصب نشده است .

726 . پروتكل IPX نمي تواند براي dial – out ، روي بيش از يك درگاه در يك زمان استفاده شود .

727 . نمي توان به فايل TCPCFG . DLL دست يافت .

728 . نمي تواند آداپتور IP متصل به remote access را پيدا كند .

729 . SLIP استفاده نمي شود مگر اينكه پروتكل IP نصب شود .

730 . ثبت كامپيوتر كامل نمي باشد .

731 . پروتكل پيكر بندي نمي شود .

732 . توافق بين PPP صورت نگرفته است .

733 . پروتكل كنترل PPP براي پروتكل اين شبكه ، در سرور موجود نمي باشد .

734 . پروتكل كنترل لينك PPP خاتمه يافته است .

735 . آدرس مورد نياز توسط سرور رد مي شود .

736 . كامپيوتر راه دور پروتكل كنترل را متوقف مي نمايد .

737 . نقطه برگشت ( LOOPBACK DETECTED ) شناسايي شد .

738 . سرور آدرس را مشخص نمي كند .

739 . سرور راه دور نمي تواند از پسورد ENCRYPTED ويندوز NT استفاده نمايد.

740 . دستگاه هاي TAPI كه براي remote access پيكر بندي مي گردند به طور صحيح نصب و آماده نشده اند .

741 . كامپيوتر محلي از encryption پشتيباني نمي نمايد .

742 . سرور راه دور از encryption پشتيباني نمي نمايد .

743 . سرور راه دور به encryption نياز دارد .

744 . نمي تواند شماره شبكه IPX را استفاده نمايد كه توسط سرور راه دور در نظر گرفته شده است گزارش وقايع را باز بيني نماييد .

745 . يك فايل مهم و ضروري آسيب ديده است . Dial – up networking را مجددا نصب نماييد .

751 . شماره callback شامل يك كاراكتر بي اعتبار مي باشد . كاراكترهاي زير فقط مجاز دانسته مي شوند : Space, T, P, W, (,), - , @. 0تا9 .

752 . در زمان پر دازش script يك خطاي نحوي صورت مي گيرد .

753 . اتصال نمي تواند قطع شود زيرا توسط مسير گردان چند پروتكلي ايجاد شده است .

754 . سيستم قادر به يافتن bundle چند انصالي نمي باشد .

755 . سيستم قادر به اجراي شماره گيري خودكار نمي باشد زيرا اين ورودي يك شماره گير عادي را دارد .

756 . اين اتصال هم اكنون در شماره گيري مي باشد .

757 . خدمات دستيابي راه دور خود به خود آغاز نمي شوند اطلا عات بيشتري در گزارش وقايع در اختيار شما قرار مي گيرد .

758 . اشتراك اتصال اينترنت هم اكنون روي اين اتصال ميسر مي گردد .

760 . در زمان فراهم آوري امكانات مسير يابي ، اين خطا رخ مي دهد .

761 . در زمان فراهم شدن اشتراك اتصال اينترنت براي اين اتصال اين خطا ايجاد مي گردد.

763 . اشتراك اتصال اينترنت فعال نمي باشد . دو اتصال LAN و يا بيشتر به علاوه اتصالي كه با اين LANها مشترك شده است وجود دارد .

764 . دستگاه كارت خوان smartcard نصب نيست .

765 . اشتراك اتصال اينترنت ميسر نمي باشد . اتصال LAN با آدرس IP در حال حاضر پيكر بندي مي شود كه براي آدرس گذاري اتوماتيك IP مورد نياز مي باشد .

766 . سيستم نمي تواند هيچ گواهي اي را بيابد .

767 . اشتراك اتصال اينترنت ميسر نمي گردد اتصال LAN بر روي شبكه شخصي انتخاب مي گردد كه بيش از يك آدرس IP را پيكر بندي كرده است . اتصال LANرا با يك آدرسIP مجزا ، مجددا پيكر بندي نماييد قبل از اينكه اشتراك اتصال اينترنت صورت گيرد .

768 . به دليل رمز دار نكردن داده ها اتصال صورت نمي پذيرد .

769 . مقصد مشخصي قابل دست يابي نمي باشد .

770 . دستگاه راه دور تلا ش براي ايجاد اتصال را نمي پذيرد .

771 . اقدامات اتصال صورت نمي گيرد زيرا شبكه اشغال مي باشد .

772 . سخت افزار شبكه كامپيوتر راه دور با نوع تلفن مورد نياز سازگاري ندارد .

773 . امكان ايجاد اتصال موثر نمي باشد زيرا شماره مقصد تغيير كرده است .

774 . به دليل از كار افتارگي موقت ، اتصال صورت نمي گيرد .

775 . مكالمه تلفني توسط كامپيوتر راه دور متوقف شد .

776 .مكالمه تلفني نمي تواند وصل گردد زيرا مقصد خواسته است كه ويژگي را حفظ نمايد .

777 . اتصال صورت نمي گيرد زيرا مودم ( يا ساير وسايل ارتباط دهنده ) روي كامپيوتر راه دور دچار مشكل مي باشند .

778 . تاييد هويت سرور غير ممكن مي باشد .

779 . براي بر قراري dial – out اين اتصال بايد از smartcard استفاده نماييد .

780 . عمل انجام شده براي اين اتصال بي اعتبار مي باشد .

781 . تلاش براي رمز گذاري (encryption) صورت نمي گيرد زيرا گواهي معتبري يافت نمي گردد .

782 . ترجمه آدرس شبكه (NAT) در حال حاضر به عنوان يك پروتكل مسير يابي نصب مي گردد و بايد قبل از اينكه اشتراك اتصال اينترنت فراهم گردد حذف شود .

783 . اشتراك اتصال اينترنت ميسر نمي باشد . اتصال LAN كه به عنوان شبكه شخصي انتخاب مي گردد يا فراهم نمي شود و يا از شبكه قطع مي باشد . لطفا قبل از فراهم شدن اشتراك اتصال اينترنت از اتصال آداپتور LAN مطمئن شويد .

784 . در حالي كه اين اتصال را در زمان log on استفاده مي كنيد شما نمي توانيد شماره بگيريد زيرا اين اتصال براي استفاده از نام كاربري پيكر بندي شده است كه متفاوت از نام كاربر روي smartcard مي باشد . چنانچه بخواهيد آنرا در زمان log on استفاده نماييد بايد براي استفاده از (username) روي كارت smart آنرا پيكربندي كنيد .

785 . در صورت استفاده از اين اتصال در زمان log on شما نمي توانيد شماره گيري نماييد زيرا براي استفاده از يك smartcard پيكر بندي نشده است . چنانچه بخواهيد آنرا در زمان log on به كار ببريد بايد امكانات اين اتصال را تصحيح و آماده نماييد به طوري كه smartcard استفاده نمايد .

786 . مبادرت به اتصال L2TP صورت نمي پذيرد زيرا هيچ گواهينامه معتبري براي تصديق (authentication) امنيت روي كامپيوتر شما وجود ندارد .

787 . اتصال L2TP غير ممكن است زيرا لايه امنيتي نمي تواند كامپيوتر راه دور را authentication نمايد .

788 . تلاش براي ايجاد اتصال L2TP بي نتيجه مي باشد زيرا لايه امنيتي نمي تواند پارامترهاي سازگار با كامپيوتر راه دور را فراهم نمايد .

789 . تلاش براي اتصال L2TP فراهم نمي گردد زيرا لايه امنيتي با يك خطاي پردازشي در طول سازگاري با كامپيوتر راه دور مواجه است .

790 . تلاش براي اتصال L2TP صورت نمي گيرد زيرا تاييد گواهينامه بر روي كامپيوتر راه دور ميسر نمي باشد .

791 . اتصال L2TP ميسر نمي باشد زيرا خط مشي امنيتي (security policy) براي اتصال يافت نمي شود .

792 . اتصال L2TP صورت نمي گيرد زيرا زمان توافق امنيتي به پايان رسيده است .

793 . اتصال L2TP ميسر نمي گردد زيرا اين خطا رخ مي دهد در حالي كه در مورد امنيت به توافق مي رسند .

794 . ويژگي RADIUS ا ين كاربر PPP نمي باشد .

795 . ويژگي RADIUS نوع تونلي براي اين كاربر ، نادرست مي باشد .

796 . ويژگي RADIUS نوع خدمات براي اين كار نه قالب بندي مي شود و نه callback قالب بندي مي شود .

797 . مودم پيدا نشد .

798 . گواهينامه اي شناسايي نمي شود كه بتواند پروتكل قابل ارائه استفاده شود .

799 . اشتراك اتصال اينترنت ميسر نمي گردد زيرا دو IP شبيه به هم در شبكه وجود دارد . IC ها به ميزباني نيازمند مي باشند كه براي استفاده از 192 ، 168 ، 0 ، 1 پيكر بندي شده است . مطمئن شويد كه هيچ سرويس گيرنده ديگري براي استفاده از 192 ، 168 ، 0 ، 1 پيكر بندي نشده است .

800 . قادر به ايجاد اتصال VPN نمي باشد . سرويس دهنده VPN در دسترس نمي باشد و يا ممكن است پارامترهاي امنيتي براي اتصال به درستي پيكربندي نشده باشند .

امیدوارم بهره کافی برده باشید

هادی بهارلو جمعه شانزدهم فروردین 1387  نظر بدهید!

TAPI چيست ؟

آموزش ویژوال بیسیک

TAPI چيست ؟

TAPI يا Telephony API يک کتابخانه استاندارد برای کار با مودم و نوشتن برنامه های تلفنی می باشد . برای نمونه می توان از برنامه های Phone Dialer ( شماره گير تلفن ) ، برنامه شبکه سازی تلفنی ( Dialup Networking ) ، برنامه تشخيص پالس مودم برای ضبط اطلاعات وارد شده از طرف کاربران و کاربردهای ديگر در اين زمينه نام برد . اين کتابخانه به شما کمک کمک می کند تا بدون درگير شدن با برنامه نويسی سخت افزار مودم و درايور آن بطور مستقيم بتوانيد برنامه های کاربردیي در اين زمينه بنويسيد .
مروری بر Microsoft Telephony :

Telephony امکان مجتمع سازی کامپيوترها با دستگاههای ارتباطی و شبکه ها را فراهم نموده است . معمولاً دستگاه ارتباطی يک مودم و خط ارتباطی نيز شبکه PSTN ( شبکه عمومی تلفن سوئيچينگ ) می باشد . برخی از کاربردهای Telephony عبارتند از :

۱ - کنفرانسهای مالتی مديا بصورت Multicast
۲ - VoIP
۳ - مرکز پاسخ گويي اتوماتيک
۴ - تماس تلفنی از طريق کامپيوتر روی شبکه PSTN

دياگرام زير معماری Microsoft Telephony را نشان می دهد :
برنامه های TAPI :

برای نوشتن برنامه های کاربردی با استفاده از TAPI بايستی ابتدا در مورد سطح سرويسی که می خواهيم ارائه دهيم تصميم گيری کنيم . برای مثال برای نوشتن يک برنامه شماره گير تلفن نياز به استفاده کامل از TAPI نيست و می توان از قابليتهای خود ويندوز در اين زمينه استفاده کرد ( Assisted Telephony ) . در بخشهای بعدی در مورد سطوح مختلف سرويس در TAPI بيشتر صحبت خواهم کرد .
دومين مطلبی که بايد مورد توجه قرار داد اينست که می خواهيم از TAPI 2.x استفاده کنيم يا از TAPI 3.x . تفاوت ايندو آنست که TAPI ورژن ۲ يک API برمبنای C است در حاليکه ورژن ۳ آن بر مبنای تکنولوژی COM می باشد . در بخشهای بعدی مطالب بيشتری در مورد تفاوتهای اين دو نسخه بيان خواهم کرد .
بخشهای اصلی يک برنامه کامل TAPI عبارتند از :

۱ - TAPI Initialization : شامل load کردن TAPI dll ، اتصال به TAPI Server ، مذاکره در مورد ورژن TAPI و برپاسازی سيستم اطلاع رسانی event می باشد .

۲ - Session Control : مقداردهی اوليه ، دريافت و کنترل تماسها

۳ - Device Control : دريافت و تنظيم اطلاعات دستگاه

۴ - Media Control : تشخيص و يا توليد تونها و ارقام ، کنترل stream

۵ - TAPI Shutdown : آزاد سازی منابع
مقداردهی اوليه TAPI :

عملکرد درست اجزای TAPI نياز به برپاسازی محيط ارتباطی روی کامپيوتر مورد نظر دارد . مراحل اين امر عبارتند از :

۱ - نصب TAPI : زمانيکه سخت افزار و يا نرم افزار برای اولين بار به کامپيوتر اضافه می شود انجام می گيرد . جزئيات کار به سيستم عامل و نرم افزار بستگی دارد .

۲ - مقداردهی ابتدائی : ساخت اشيا و مسيرهای ارتباطی

۳ - مذاکره در مورد ورژن TAPI : برای اطمينان از اينکه اجزای TAPI قادر به تبادل داده ها باشند .

۴ - استخراج اطلاعات منابع : بدست آوردن اطلاعاتی در مورد دستگاهی که می توان از آن در برنامه TAPI مورد نظرمان استفاده نمود .

۵ - Event notification : برپاسازی سيستم اطلاع رسانی event
مقداردهی اوليه TAPI در ويژوال بيسيک :

از منوی Project گزينه References را انتخاب کرده و از ليست مربوطه مورد Microsoft TAPI 3.0 Type Library را انتخاب کنيد .
حال وارد بخش کد نويسی فرمتان شويد و متغير objTAPI را بصورت زير تعريف کنيد :

Dim objTapi As TAPI


سپس در بخش مربوط به Form Load شی objTAPI را بصورت زير ايجاد می کنيم :

Set objTapi = New TAPI


همانطور که در بخشهای قبلی گفته شد ، قبل از فراخوانی هر تابع TAPI ابتدا بايستی آنرا مقداردهی اوليه کنيم . برای مقداردهی اوليه کردن شی TAPI عبارت زير را بنويسيد :

Call objTapi.Initialize


انتخاب يک آدرس :
کد زير نشان می دهد که چگونه می توان با استفاده از شی TAPI در ويژوال بيسيک منابع تلفنی در دسترس را برای يک آدرس که بتواند يک مجموعه مشخص از نيازها را مديريت کند ، بررسی کرد .
توجه داشته باشيد که قبل از انجام اين کار بايستی عمل مقداردهی اوليه TAPI را که در بخش قبل ررسی شد ، انجام دهيد .

نکته : در کد زير عمل error checking انجام نگرفته است و برای استفاده از کد زير در برنامه های واقعی بايستی بخش بررسی خطا را به آن اضافه کنيد .
۱ - تعريف يک شی آدرس و يک شی مجموعه آدرس :

Dim gobjAddress As ITAddress
Dim objCollAddresses As ITCollection


۲ - تنظيم شی objCollAddress بعنوان يک مجموعه آدرس از شی objTapi :

Set objCollAddresses = objTapi.Addresses


۳ - پيدا کردن آدرسی که بتواند از واسط مورد نظر ما پشتيبانی کند :

bFound = False
For indexAddr = 1 To objCollAddresses.Count
Set objCrtAddress = objCollAddresses.Item(indexAddr)x
Set objMediaSupport = objCrtAddress
Set objAddressCapabilities = objCrtAddress

If objMediaSupport.QueryMediaType( nSelectedType ) x
bFound = True
End If

Set objAddressCapabilities = Nothing
Set objMediaSupport = Nothing
Set objCrtAddress = Nothing

If bFound = True Then Exit For
Next indexAddr



در صورتيکه آدرس مورد نظزر پيدا شود برنامه از حلقه خارج شده و gobjAddress يک آدرس قابل استفاده خواهد بود :

Set gobjAddress = objcollAddresses.Item(indexAddr)x


انجام Event Handling در TAPI :

کد زير شامل يک event handler ساده برای TAPI ، رجيستر کردن واسط event ، تنظيم فيلتر event و رجيستر کردن تمام فراخوانيهای دادن اخطار است . هدف اصلی از اين کد اينست که مطمئن شويم بخشی از TAPI که event ها را دريافت می کند پردازشی را قبل از انتقال به بخشهای ديگر انجام دهد .

تعاريفها :

Dim WithEvents gobjTapiWithEvents As TAPI
Attribute gobjTapiWithEvents.VB_VarHelpID = -1
Dim glRegistrationToken As Long


 

Const TAPI3_CALL_EVENTS =TE_CALLMEDIA Or
TE_CALLNOTIFICATION Or TE_CALLSTATE



تنظيم eventfilter بصورتيکه تمام event های تعريف شده برای TAPI را بپذيرد :

objTapi.EventFilter = TAPI3_CALL_EVENTS


رجيستر کردن event ها :

Set gobjTapiWithEvents = objTapi
Dim fOwner As Boolean, fMonitor As Boolean
Dim lMediaTypes As Long, lCallbackInstance As Long

fOwner = True
fOwner = True
fMonitor = False
lMediaTypes = TAPIMEDIATYPE_AUDIO
lCallbackInstance = 1

glRegistrationToken = gobjTapi.RegisterCallNotifications(gobjAddress,fMonitor,
fOwner,lMediaTypes,lCallbackInstance)x


انتخاب يک ترمينال :

+ قبل از اينکه يک ترمينال را برای برقراری ارتباط انتخاب کنيد بايستی TAPI Initialization و عمل انتخاب آدرس را انجام داده باشيد .

ابتدا يک متغير از نوع ITBasicCallControl ( واسط کنترل تماس ) تعريف می کنيم :

Dim objCallControl As ITBasicCallControl
Set objCallControl = gobjReceivedCallInfo


سپس يک متغير از نوع ITTerminalSupport ( کوئری از شی آدرس ) تعريف می کنيم :

Dim objTerminalSupport As ITTerminalSupport
Set objTerminalSupport = gobjAddress


سپس متغير ترمينال را تعريف کرده و توسط شی objTerminalSupport يک ترمينال را برای آن استخراج می کنيم :

Dim objTerminal As ITTerminal
Set objTerminal = objTerminalSupport.GetDefaultStaticTerminal(lMediaType, dir)x


در اينجا ديگر نيازی به شی objTerminalSupport نيست بنابراين آنرا آزاد می کنيم :

Set objTerminalSupport = Nothing


سپس نياز به تعريف شی objStreamControl برای کنترل ترمينال است :

Dim objStreamControl As ITStreamControl
Set objStreamControl = objCallControl


در صورتيکه اين شی ايجاد شود ، به ازای استريم های موجود در ITCollection امکان ايجاد ترمينال در يک حلقه for بررسی می شود و ترمينال مناسب انتخاب می گردد :

If Not (objStreamControl Is Nothing) Then
Dim objITCollStreams As ITCollection

Set objITCollStreams = objStreamControl.Streams

Dim nIndex As Long, objCrtStream As ITStream

For nIndex = 1 To objITCollStreams.Count
Set objCrtStream = objITCollStreams.Item(nIndex)x
If objCrtStream.MediaType = lMediaType Then
If objCrtStream.Direction = dir Then
Call objCrtStream.SelectTerminal(objTerminal)x
End If
End If
Set objCrtStream = Nothing
Next nIndex

Set objITCollStreams = Nothing
Set objStreamControl = Nothing
End If



ايجاد يک تماس ( Make a Call ) :
+ قبل از اين بخش بايستی مراحل TAPI Initialization و عمل انتخاب آدرس انجام شده باشد .
اين بخش برای ايجاد يک شی تماس ، بررسی و مشخص کردن استريمی که با اين تماس در ارتباط است ، انتخاب و ايجاد ترمينالهای مناسب و کامل کردن ارتباط استفاده می شود .
قبل TAPI Initialization و عمل انتخاب آدرس و انتخاب ترمينال انجام شده باشد .
در ابتدا با استفاده از متد CreateCall يک شی تماس ساخته می شود :

Set gobjCall = gobjOrigAddress.CreateCall(strDestAddress, nSelectedType,lMediaTypes)x


سپس در اينجا بايستی کدی که در بخش اول اين درس برای انتخاب ترمينال نوشته شد آورده شود :

}
Select Terminal Code
{


سپس بايستی دستور Connect اجرا شود :

gobjCall.Connect (False)x


False بدين معناست که ارتباط بصورت آسنکرون برقرار می شود .
دريافت يک تماس :

کد زير برای يافتن و يا ايجاد يک ترمينال مناسب برای دريافت يک تماس بکار می رود . بايستی توجه داشته باشيد که قبل از اجرای کد زير بايستی مراحل مقداردهی اوليه ، انتخاب يک آدرس و رجيسر کردن event ها را انجام دهيد . همچنين در کد زير بايستی مرحله انتخاب ترمينال را نيز انجام دهيد . توجه داشته باشيد که در کد زير متغير pEvent يک اشاره گر برای واسط ITCallNotificationEvent است که توسط TAPI به event Handler داده می شود :

If TapiEvent = TE_CALLNOTIFICATION Then
Dim objCallNotificationEvent As ITCallNotificationEvent
Set objCallNotificationEvent = pEvent
Dim gobjReceivedCallInfo As ITCallInfo
Set gobjReceivedCallInfo = objCallNotificationEvent.Call
Dim objCallControl As ITBasicCallControl
Set objCallControl = gobjReceivedCallInfo
objCallControl.Answer
End If

WWW.DEV.IR

هادی بهارلو سه شنبه سیزدهم فروردین 1387  نظر بدهید!

آموزش پاسکال قسمت دوم

آموزش پاسکال قسمت دوم
 
مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ كند چنانچه 68 بود حاصلضرب دو عدد را چاپ كند و در غير اينصورت مقادير مجاز را چاپ كند.
BEGIN
WRITELN('ENTER TWO NUMBER');
READLN(A,B);
CASE A OF
0..5 :WRITELN(B*B);
68:WRITELN(A*B)
ELSE
WRITELN('ENTER 0..5 OR 68');
END;
END.
- معادل برنامه بالا با دستور If :

Begin
Writeln('enter 2 number');
Readln(a,b);
If (a>=0)and(a<=5) then
Writeln(b*b)
Else
If a=68 then
Writeln(a*b)
Else
Writeln('enter 0..5 or68');
End.
تكليف : روشي براي تلفظ اعداد پيدا كنيد.

حلقه تكرار :
1- تعداد معين
2- تعداد معين
Do مقدار نهايي to { مقدار شروع=: متغير for
downto
begin
___
___
___
end;
توجه مهم : در برخي از حلقه ها دستورات داخل حلقه به متغير حلقه مرتبط مي باشند و در برخي موارد هيچگونه ارتباطي وجود ندارد.
حلقه for براي تعداد تكرار معين به كار ميرود
Downto : در مواردي به كار ميرود كه مقدار اوليه از مقدار نهايي بيشتر باشد

مثال : برنامه اي بنويسيد كه توان دوم اعداد 100 تا 200 را چاپ كند.
Begin
For i:=100 to 200 do
Begin
Writeln(i*i);
End;
End.
نكته : اجازه نداريد مقدار متغير حلقه را در داخل بدنه عوض كنيد .
مثال : برنامه اي بنويسيد كه حاصلجمع اعداد 100..1 را چاپ كند.
Begin
Sum:=0;
For i:=1 to 10 do
Begin
Sum:=sum+i
End;
Write(sum);
End.


مثال : برنامه اي بنويسيد كه حاصلجمع مضارب 5 بين 0 تا 100را به دست آورد.
Begin
Sum:=0;
For I:=1 to 20 do
Begin
Sum:=sum+i*5;
End;
Writeln(sum);
End.
مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و اعداد ما بين اين دو عدد را چاپ كند (a
Begin
Writeln('enter a,b');
Readln(a,b);
For I:= a to b do
Writeln(i);
End.

مثال : برنامه اي بنويسيد كه با يك حلقه for اعداد بين100..1 و738..353و 950..940 را چاپ كند
Begin
For i:=1 to 950 do
Begin
If ( i>=1) and (i<=100) then
Writeln(i);
If (i>353) and (i<=738) then
Writeln(i);
If (i>=940) and (i<=950) then
Writeln(i);
End;
End.
معادل برنامه بالا با استفاده از دستور case :
Begin
For i:=1 to 950 do
Case I of
1..100,353..738,940..950: writeln(i);
end;
end.

باقيمانده  mod
مثال :
X mod y
مثال : برنامه اي بنويسيد كه مضارب 7 بين 1 تا 100 را چاپ كند
Begin
For i:= 1 to 100 do
Begin
If I mod 7 = 0 then
Writeln(i);
End;
End.
مثال : برنامه اي بنويسيد كه تعداد مضارب 5و7 را در بازه 231~846 چاپ كند.
Begin
K:=0;
C:=0;
For i:=846 downto 231 do
Begin
If I mod 5 = 0 then
C:=c+1;
If I mod 7 = 0 then
K:=k+1;
End;
Writeln('5=',c,'7=',k);
End;
End.
مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان 100 كارگر را از ورودي دريافت و مبلغ حقوق آنها را بر اساس فرمول زير حساب كند0
1000*تعداد فرزند + حقوق پايه = حقوق كل

Begin
For i:=1 to 100 do
Begin
Writeln('enter salary and number of children');
readln(salary,num);
kol := salary + num * 1000;
writeln(kol);
end;
end.

مثال : برنامه اي بنويسيد كه 100 عدد را از ورودي دريافت و ميانگين و حاصلجمع آنها را به ما بدهد.
Begin
Sum:=0;
For i:= 1 to 100 do
Begin
Writeln('enter num');
Readln(num);
Sum:=sum+num;
End;
Ave:=ave/100;
Writeln(sum,ave);
End.



تعداد تكرار نامعين :
Do شرط while
begin
___
___
___
end;
مثال : برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند
Begin
I:=1;
While i<=100 do
Begin
Write(i);
I:=i+1;
End;
مثال : برنامه اي بنويسيد كه تعدادي اسم را از ورودي دريافت و به ما بگويد چند بار اسم ali تكرار شده است(آخرين اسم end است).
Var
S:integer;
St:string;
Begin
Read(st);
While st<> 'end' do
Begin
If st='ali' then
S:=s+1;
Read(st);
End;write(s);
End.

مثال : برنامه اي بنويسيد كه تعدادي عدد كه آخرين آنها صفر است را از ورودي دريافت و حاصلجمع آنها را چاپ كند.
Begin
Readln(num);
T:=1;
While num<>0 do
Begin
Sum:=sum+num;
Readln(num);
T:=t+1;
End;
Writeln('s=',s,'average',s/t);
End;
تكليف : براي دانش آموزان يك كلاس برنامه اي بنويسيد كه نام آنها به همراه تعداد نمرات و سپس نمرات آنها را به فرم زير از ورودي دريافت كند.تعداد دانش آموزان كلاس نامعين است ولي آخرين نفر نامش end است .برنامه ميبايستي پس از دريافت هر يك از اطلاعات پيامي به شكل زير چاپ كند.

Average: Sum: Ali Name:
3
18
20
13.5

program test;
var
name:string[10];
ave,sum,nomreh:real;
num,i:integer;
begin
writeln('enter name ' );
readln(name);
while name <> 'end' do
begin
writeln('enter num:');
readln(num);
for i:=1 to num do
begin
writeln('enter nomreh: ');
readln(nomreh);
sum:=sum+nomreh;
end;
ave:=sum/num;
writeln('name:',name,'sum:',sum,'ave:',ave);
writeln('enter name ');
readln(name);
end;
end.

تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است
1) load
2) save
3) edit
4) exit
please select a number :

program test;
var
num:integer;
begin
writeln(' 1) load');
writeln(' 2) save');
writeln(' 3) edit');
writeln(' 4) exit');
writeln(please select a number : ');
readln(num);
while num<>4 do
begin
case num of
1:writeln('loading');
2:writeln('saving');
3:writeln('editing');
end;
end;
end.
منبع : ایران دولوپر

هادی بهارلو سه شنبه سیزدهم فروردین 1387  نظر بدهید!

آخرین مطالب ارسالی
رتبه بندی سایتها در موتورهای جستجوگر
توجه
babylon هم جاسوس از آب در امد
حذف کردن ویستا بدون از بین رفتن XP
آموزش برنامه نویسی به زبان C (جلسه سوم:)
آموزش برنامه نویسی به زبان C (جلسه دوم:)
آموزش برنامه نویسی به زبان C (جلسه اول:)
آیا الان دوستمون آن لاین هست
آموزش XML (بخش چهارم)
آموزش XML (بخش سوم)
درباره وب
کاش همه مثل گوسفند ساده و بی آلایش بودن!!

آمار کاربران
 
چه کسانی به ما لینک دادند؟

نوسندگان
هادی بهارلو
حسن لاچینانی
محسن

لینک دوستان

بخش ویژه

صفحه اصلي  |  آرشیو |  لینکستان  |  تماس با ما




 Design By ParsTheme & Publish By ParsTheme


www.parstheme.com