| | #11 (permalink) |
| همکار انجمن ها ![]() | کد: کلاس پشته : همانطور که در بخش قبل گفته شد پشته نوعی ليست پيوندی است که گره هاي جديد فقط به انتهاي آن اضافه شوند . روالهاي اصلي پشته Push و Pop هستند . Push يک گره جديد به بالاي پشته اضافه مي کند و Pop از بالاي پشته گره اي را حذف کرده و مقدار داده آن را بر مي گرداند . يک کلاس پشته را با استفاده از کلاس Clist و بصورت زير پياده سازي مي کنيم : Private list As New Clist Public Sub Push(value as Variant)x List.InsertAtFront(value)x End sub Public Function Pop As Variant Pop=list.RemoveFromFront()x End Function Public Function IsStackEmpty() As Boolean IsStackEmpty=list.IsEmpty()x End function Public Property Get Iterator() as variant Set Iterator=list.Iterator End Property در اين کلاس ابتدا يک شی از نوع کلاس Clist تعريف شده است . سپس متدهای Push توسط متد InsertAtFront و Pop توسط متد RemoveFromFront پياده سازی شده اند . يک برنامه نمونه : برای نوشتن يک برنامه برای کار با پشته ابتدا کلاس Stack را که کد آن را در بالا ديديد به پروژه تان اضافه کنيد . سپس در بخش کد مربوط به فرمتان ابتدا يک شی از نوع کلاس Stack بصورت زير تعريف کنيد : Dim mStack as New Stack سپس در فرمتان سه CommandButton با نامهای Push و Pop و ShowStack و نيز يک TextBox با نام StackMember قرار دهيد . کد زير را برای کليک شدن دکمه Push بنويسيد : mStack.push(StackMember.text)x کد زير را برای کليک شدن دکمه Pop بنويسيد : StackMember.text=mStack.Pop()x کد زير را برای کليک شدن دکمه ShowStack بنويسيد : Dim elements as New ClistIterator Set elements=mStack.Iterator If elements.HasMoreItems=false then msgbox "stack is empty"x Else While elemets.HasMoreItems Msgbox elements.NextItem Wend |
| | |
| | |
| | #12 (permalink) |
| همکار انجمن ها ![]() | صف : صف نوعي ساختار داده اي است که گره ها از ابتداي صف ( سر صف head ) حذف مي شوند و از انتهاي صف ( ته صف tail ) اضافه مي شوند . بنابر اين ، صف يک ساختار داده اي FIFO است . صف دارای دو متد به نامهای AddQueue و DelQueue است که اولین متد ، عنصری را به انتهای صف اضافه می کند و دومين متد ، عنصری را از ابتدای صف حذف می کند . براي ايجاد کلاس Cqueue از کلاس Clist استفاده مي کنيم : Private list as New Clist Public Sub AddQueue(value as Variant)x List.InsertAtBack(value) End sub Public Function DelQueue() as Variant DelQueue=list.RemoveFromFront End function Public property Get Iterator() as Variant Set Iterator=list.Iterator End Property درخت : ليستهاي پيوندي ، پشته ها و صف ها جزو ساختارهاي داده اي خطي هستند در حاليکه يک درخت ، يک ساختار داده اي دو بعدي با خصوصيات ويژه اي است . گره هاي درخت داراي دو يا چند لينک هستند . در اينجا در مورد درختهاي دودويي يا باينري بحث مي کنيم که در آن همه گره ها داراي دو لينک هستند . گره ريشه اولين گره در درخت است . هر لينک گره ريشه ، به يک فرزند اشاره مي کند . به فرزندان يک گره Siblings مي گويند . به گره بدون فرزند ، برگ يا Leaf گفته مي شود . درختهاي جستجوي باينري درخت هايي هستند که در آنها مقدار فرزند چپ هر گره کمتر از گره پدر و مقدار فرزند سمت راست هر گره بيشتر از گره پدر مي باشد . در بخش ششم يک کلاس برای پياده سازی درختهای جستجوی باينری ايجاد خواهيم کرد . |
| | |
| | #13 (permalink) |
| همکار انجمن ها ![]() | کلاس درختهای جستجوی باينری برای ايجاد درختهای جستجوی باينری در ويژوال بيسيک نياز به ايجاد دو کلاس داريم : 1 - کلاس CTreeNode که هر ند درخت دودويي را توصيف می کند . اين کلاس دارای يک متغير به نام mNodeData از نوع Variant برای نگهداری داده هر گره است . همچنين دارای دو متغير اشاره گر به نامهای mLeft و mRight می باشد که به ترتيب به فرزند چپ و فرزند راست درخت اشاره می کنند . متد Get Data مقدار داده هر گره را بر می گرداند و متد Let Data مقدار داده هر گره را تنظيم می کند . متد Get Left آدرس فرزند چپ هر گره را برمی گرداند و متد Let Left فرزند چپ هر گره را تنظيم می کند . متد Get Right آدرس فرزند راست هر گره را برمی گرداند و متد Let Right فرزند راست هر گره را تنظيم می کند . متد Insert برای اضافه کردن فرزند به يک گره به کار می رود . اگر مقدار گره ای که می خواهيم بعنوان فرزند به درخت اضافه کنيم کوچکتر از مقدار خود گره باشد بعنوان فرزند چپ و در غير اينصورت بعنوان فرزند راست به گره اضافه می شود . اضافه شدن نيز بدين صورت است که ابتدا بررسی می شود آیا گره قبلاً فرزندی داشته است يا نه ؟ اگر نداشته باشد ( mLeft و يا mRight برابر Nothing باشد ) اين گره جديد مستقيماً به گره متصل می شود اما اگر گره قبلاً فرزندی داشته باشد متد Insert برای آن فرزند اضافه می شود و اينکار تا جايی ادامه می يابد که به گره ای برسيم که فرزندی نداشته باشد : Private mLeft as CtreeNode Private mRight as CtreeNode Private mNodeData as Variant Public Property Get Data() as variant Data=mNodeData End property Public Property Let Data(Byval vNewValue as Variant)x MNodeData=vNewValue End property Public Property Get Left() as variant Set Left=mLeft End property Public Property Let Left(Byval vNewValue as variant)x Set mLeft=vNewValue End property Public Property Get Right() as variant Set Right=mRight End Property Public Property Let Right(Byval vNewValue as variant)x Set mRight=vNewValue End Property Public Sub Insert(value as variant)x If valueIf mLeft Is Nothing Then Set mLeft=New CtreeNode MLeft.Data=value Else MLeft.Insert(value)x End if Elseif value>mNodeData then If mRight Is Nothing then Set mRight=New CtreeNode MRight.Data=value Else MRight.Insert(value)x End if End if End sub 2 - کلاس CTree : اين کلاس برای ايجاد درخت بکار می رود . اين کلاس دارای متغيری بنام mRoot از نوع CTreeNode برای تعريف ريشه درخت است . همچنين يک متغير mOutputString برای نمايش دادن اعضای درخت دارد . Private mRoot as CtreeNode Private mOutputString as String Public Sub InsertNode(value as Varaint)x If mRoot Is Nothing then Set Mnode=New CtreeNode MRoot.Data=value Else MRoot.Insert(value)x End if End sub Public PreorderTraversal()x MOutputString=””x Call PreorderHelper(mRoot)x End sub Private Sub PreorderHelper(node As CtreeNode)x If node Is nothing Then Exit sub End if MOutputString=mOutputString & node.Data & “ “x Call PreorderHelper(node.left)x Call PreorderHelper(node.right)x End sub Public Sub InorderTraversal()x MOutputString=””x Call InorderHelper(mRoot)x End sub Private Sub InorderHelper(node as CtreeNode)x If node Is nothing then Exit sub End if Call InorderHelper(node.Left)x MOutputString=mOutputString & node.Data & “ “x Call InorderHelper(node.Right)x End sub Public PostorderTraversal()x MOutputString=””x Call PostorderHelper(mRoot)x End sub Private Sub PostorderHelper(node as CtreeNode)x If node Is Nothing then Exit sub End if Call PostorderHelper(node.Left)x Call PostorderHelper(node.Right)x MOutputString=mOutputString & node.Data & “ “x End sub Public Property Get Output() as Varaint Output=mOutputString End Property در بخش بعد ، در مورد متدهای اين کلاس بيشتر توضيح خواهم داد و سپس برنامه نمونه ای را برای کار با اين کلاسها خواهيم نوشت |
| | |
| | #14 (permalink) |
| همکار انجمن ها ![]() | انواع روشهای پيمايش عناصر درخت : ۱ - روش InOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس ريشه و در آخر عناصر نيمه سمت راست درخت نمايش داده می شوند . ۲ - روش PreOrder : در اين روش ابتدا ريشه درخت ، سپس عناصر نيمه سمت چپ و در پايان عناصر نيمه سمت راست درخت نمايش داده می شوند . ۳ - روش PostOrder : در اين روش ابتدا عناصر نيمه سمت چپ درخت ، سپس عناصر نيمه سمت راست درخت و در پايان ريشه درخت نمايش داده می شوند . مثال : درخت زير را در نظر بگيريد : نتيجه پيمايش InOrder درخت : 1,3,4,5,6,7,8 نتيجه پيمايش PreOrder درخت : 5,3,1,4,7,6,8 نتيجه پيمايش PostOrder درخت : 1,4,3,6,8,7,5 بررسی متدهای کلاس CTree : متد InsertNode : اگر گره ريشه برابر Null باشد value را برابر مقدار گره ريشه قرار می دهد . در غير اينصورت متد Insert مربوط به گره ريشه فراخوانی می شود . متد PreorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Preorder را فراخوانی می کند . متد InorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Inorder را فراخوانی می کند . متد PostorderTraversal : رشته چاپ عناصر ريشه را خالی می کند و سپس متد پيمايش Postorder را فراخوانی می کند . متد Get Output : عناصر پيمايش شده درخت را برمی گرداند . يک برنامه نمونه : ابتدا کلاسهای CTreeNode و CTree را به پروژه تان اضافه کنيد . سپس متغير زير را در قسمت کدنويسی فرمتان تعريف کنيد : Dim mTree as New Ctree سپس در فرمتان يک Textbox با نام Value و دو Command Button با نامهای Insert و Show قرار دهيد . کد زير را برای وارد کردن عنصر به درخت برای دکمه Insert بنويسيد : mTree.InsertNode(Value.Text)x کد زير را برای پيمايش InOrder درخت برای دکمه Show بنويسيد : Call mTree.InorderTraversal شي Collection : ويژوال بيسيک داراي شي پيش ساخته اي به نام Collection است که مي تواند مجموعه اي از مقادير با هر نوع داده اي را در خود ذخيره کند . در واقع عناصر موجود در يک Collection مي توانند داراي نوعهاي داده اي متفاوت باشند . شي Collection قابليت رشد ديناميک دارد . شي Collection توسط کلمه کليدي New ايجاد مي شوند . توسط متد Add مي توان به Cllection عضو اضافه کرد و توسط متد Remove مي توان عضوي را از آن حذف کرد . هر عضو از Collection توسط متد Item قابل دستيابي است . با استفاده از خاصيت Count مي توان تعداد اعضاي موجود در Collection را تعيين نمود . بصورت پيش فرض اعضاي جديد به انتهاي Collection اضافه مي شوند ولي توسط آرگومانهاي اختياري متد Add مي توان محل اضافه شدن را تغيير داد . متد Remove يک شماره مي گيرد که موقعيت عضوي را که مي خواهيم آنرا حذف کنيم مشخص مي کند . توسط دستورات زير مي توان اعضاي يک Collection را نمايش داد : Dim mCollection as New Collection Dim element as Variant . . . For Each element In mCollection Msgbox element element متغيري از نوع variant براي اشاره به هر عضو Collection مي باشد . |
| | |
| | #15 (permalink) |
| همکار انجمن ها ![]() | مروری بر TCP/IP نکته : مطالب زير تنها در حد يک يادآوري مي باشد . اگر اطلاعات کمي در مورد TCP/IP داريد به کتابهاي موجود مراجعه کنيد . پروتکل Protocol : قراردادي است براي برقراري ارتباط در شبکه مدل TCP/IP : مجموعه اي از پروتکلهاي ارتباطي مرتبط بهم است که مکانيزمها و سرويسهاي مورد نياز جهت برقراري ارتباط در اينترنت را مهيا مي کنند . اين مدل شامل ۴ لايه است : ۱ - لايه کاربرد Application Layer : شامل برنامه هاي کاربردي و پروتکلهايي مثل Http ، Ftp ، Smtp ، Pop و Telnet مي باشد . ۲ - لايه انتقال Transport Layer : اين لايه شامل دو پروتکل TCP و UDP است . پروتکل TCP وظيفه کنترل رسيدن بسته هاي داده به مقصد ( TCP/IP داده ها را به بسته هاي کوچکي تقسيم مي کند که هر بسته حاوي آدرس فرستنده ، گيرنده و شماره بسته مي باشد ) ، تصحيح خطا و مرتب سازي بسته ها را برعهده دارد . UDP پروتکلي شبيه TCP است با اين تفاوت که هيچ ضمانتي براي رسيدن بسته هاي اطلاعاتي در آن وجود ندارد و معمولاً در انتقال صوت و ويدئو روي اينتزنت استفاده مي شود . ۳ - لايه اينترنت Internet Layer : شامل پروتکل IP است که مسئول مسيريابي بسته هاي اطلاعاتي مي باشد . ۴ - لايه دسترسي به شبکه Link Layer : شامل بخشي از هسته سيستم عامل و نيز درايورهاي واسط شبکه براي کار با سخت افزار شبکه مي باشد . سوکت Socket و پورت Port : سوکت يک ورودي انتزاعي در لايه انتقال مي باشد که براي ايجاد ارتباطات مختلف TCP/IP بکار مي رود . اغلب برنامه هاي کاربردي که از TCP و UDP استفاده مي کنند ، عمليات انتقال اطلاعات خود را با ساخت يک سوکت و سپس انجام يکسري عمليات روي آن انجام مي دهند . اين عمليات عبارتند از : ۱ - عمليات کنترلي : شامل اختصاص يک شماره پورت به سوکت ، initiate کردن يا accpet کردن يک ارتباط ، از بين بردن سوکت ۲ - عمليات انتقال داده : شامل نوشتن داده روي سوکت و خواندن داده از سوکت ۳ - عمليات بررسي وضعيت : مثل پيدا کردن آدرس IP مربوط به سوکت ، پيدا کردن شماره پورت سوکت و غيره HTTP : پروتکل انتقال داده براي وب است . FTP : پروتکل انتقال فايل روي اينترنت است . SMTP و POP : پروتکلهاي ارسال و دريافت email مي باشند |
| | |
| | #16 (permalink) |
| همکار انجمن ها ![]() | برنامه Internet Explorer يا iexplore.exe در واقع برنامه کوچکي است که وظيفه اصلي آن ايجاد چارچوبي براي بهم پيوستن عناصر مختلف است و اين عناصر هستند که وظايف اصلي مثل load کردن صفحات وب ، اجراي کدهاي Html و غيره را انجام مي دهند . اصلي ترين عنصري که مستقيماً توسط iexplore.exe استفاده مي شود کنترل Webbrowser ( موجود در فايل shdocrw.dll ) مي باشد . وظيفه اين فايل dll ، عبارت است از حرکت بين صفحات وب ، مديريت تاريخچه صفحات ديده شده و غيره . اين فايل خود از فايل ديگري بنام Mshtml.dll استفاده مي کند که وظيفه آن بررسي و اجراي فايلهاي html است . مايکروسافت به برنامه نويسان اين امکان را داده که بتوانند در برنامه هايشان از کنترل webbrowser استفاده کنند . با استفاده از اين کنترل مي توان به سادگي يک مرورگر وب تقريباً کامل ساخت . خصوصيات کنترل Webbrowser : Webbrowser علاوه بر خواص استانداردي مثل width ، height و … خواص زير را دارد : 1 – Busy : اگر در حال load کردن يک صفحه يا در حال جستجو در وب باشد اين خاصيت True است . توسط متد Stop مي توان عمليات جاري را متوقف کرد . 2 – Container : ارجاع به شي نگهدارنده کنترل webbrowser 3 – Document : ارجاع به صفحه html فعلي . براي کار با اين صفحه html مي توان از خواص و متدهابي شي Document استفاده کرد . 4 – LocationName : حاوي آدرس محلي است که اکنون در کنترل webbrowser ، load شده است . اگر اين محل يک صفحه html باشد عنوان آن صفحه خواهد بود و اگر اين محل يک فايل در شبکه باشد مسير کامل آن فايل خواهد بود . 5 – LocationURL : حاوي url محلي است که فعلاً در کنترل webbrowser ، load شده است . 6 – Offline : اگر کنترل webbrowser در حالت عدم اتصال باشد مقدار آن True و در غيراينصورت False است . 7 – Parent : فرمي را نشان مي دهد که کنترل webbrowser در آن قرار دارد . 8 – ReadyState : وضعيت کنترل webbrowser را برمي گرداند . متدهاي کنترل webbrowser : اين متدها مربوط به مرور در صفحات وب هستند : 1- GoBack : در ليست تاريخچه url ها ، يکي به عقب برمي گردد . 2 – GoForward : در ليست تاريخچه url ها ، يکي به جلو مي رود . 3 – GoHome : به homepage مرورگر مي رود . 4 – Navigate : به يک url يا فايل مي رود . ساختار اين متد بصورت زير است : Navigate URL [Flags,][TargetFrameName,][PostData,][Headers]x URL آدرس مقصد مي باشد . Flags نحوه باز شدن آدرس مقصد را تعيين مي کند . اگر اين پارامتر ذکر نشود آدرس جديد در پنجره فعلي باز خواهد شد و به ليست تاريخچه اضافه شده و اگر کپي آن در temperory cache موجود باشد از آنجا خوانده مي شود . مقادير پارامتر Flags عبارتند از : - NavOpenInNewWindow : آدرس جديد را در پنجره جديدي باز مي کند . - NavNoHistory : به ليست تاريخچه اضافه نمي شود بلکه جايگزين صفحه فعلي مي شود . - NavNoReadFromCache : صفحه جديد از cache خوانده نمي شود . - NavNoWriteToCache : صفحه جديد روي cache نوشته نمي شود Event هاي کنترل webbrowser : اين event ها مربوط به مرور در وب و تغيير حالت آن هستند : 1 – CommandStateChange : براي فعال يا غيرفعال کردن دکمه هاي Forward و Back در مرورگر استفاده مي شود . شکل کلي فراخواني اين event بصورت زير است : Private Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean) که command فرماني است که حالت فعال آن تغيير کرده است و دو مقدار مي گيرد : 1 و 3 که بترتيب معادل فرمانهاي GoForward و GoBack هستند . Enable فعال يا غيرفعال بودن فرمان را تعيين مي کند . 2 – DocumentComplete : اين event زماني فعال مي شود که صفحه در حال load شدن به حالت ReadyState_Complete برود . شکل کلي فراخواني اين event بصورت زير است : Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) که pDisp ارجاعي به کنترل webbrowser است که event در آن رخ داده است و URL آدرس صفحه در حال load شدن است . 3 – DownloadBegin : اين event در آغاز حرکت به صفحه جديد روي مي دهد و هيچ پارامتري نمي گيرد . مرورگر مي تواند در اين event پيغامي براي شروع عمليات جديد نشان مي دهد . 4 – DownloadComplete : اين event در پايان عمليات يا در صورت انصراف کاربر يا بروز خطا روي مي دهد . 5 – ProgressChange : با بروز هر تغييري در وضعيت load ، اين event روي مي دهد . شکل کلي فراخواني آن بصورت زير است : Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long) که Progress نشان دهنده پيشرفت عمليات ( بايتهاي load شده ) است . پارامتر ProgressMax تعداد کل بايتهايي که بايد load شوند را نشان مي دهد بنابر اين : (Progress/ProgressMax)*100=درصد پيشرفت عمليات load يک مثال ساده : از منوي project مورد components را انتخاب کنيد و از ليست کنترلها ، Microsoft Internet Controls را به toolbar خود اضافه کنيد . يک کنترل WebBrowser روي فرم قرار دهيد و سايز آنرا به اندازه ابعاد فرم خود قرار دهيد . يک textbox و يک دکمه روي فرم قرار دهيد . کد زير را براي event مربوط به کليک دکمه بنويسيد : |
| | |
| | #17 (permalink) |
| همکار انجمن ها ![]() | ساخت منو ها 2 روش برای فراخوانی پنجره مربوط به منو یعنی menu editor امکان پذیر می باشد. 1:فراخوانی از پنجره نوار ابزار کلید بر روی menu editor 2:راست کلیک بر روی فرم و انتخاب menu editor بعد از باز شدن پنجره menu editor گزینه های پیش روی شما نمایان می شود. تعریف: Caption=در این قسمت نام منو را مشخص کنید. Name = در این قسمت نام اصلی منو که در قسمت برنامه نویسی بکار می رود می نویسید Index=اگر نام یک منو ماننده هم بود از این قسمت استفاده می کنید. helpcontextID= در این قسمت شماره آی دی برای گزاشتن راهنما را می گزاررید. Checked=این قسمت کنار منو یک علامت تیک می گزارد. Enabled= این قسمت اجرا یا غیر اجرا بودن یک فورم را نمایش می دهد. Visibeld= این قسمت برای نمایش دادن منو است. آیا نمایش داده شود یا خیر Shortcut=در این قسمت مشخص می کند که هر دکمه از یک کلید یا کلیدهای استفاده کند مانندهalt+c Next =برای ساخت یا جلو رفتن برای منو Insert=فاصله گزاری Deleted=پاک کردن یک منو اگر در قسمت caption یک – بگزارید یک جدا کننده ساخته می شود. کلید های راست چپ پایین بالا برای پایین بالا برای عوض کردن جاهای یک منو است. چپ و راست هم برای اینکه منو ساخته شده خودش باز کننده داشته باشد یا نه. در قسمت کد نویسی امکانات اینکه رنگ منو چه باشد و....... امکان پذیر است. |
| | |
| | #18 (permalink) |
| همکار انجمن ها ![]() | انواع داده ها در ویژال بیسیک؟ قواعد اولیه: وقتی می خواهیم با کد کا کنیم لازم است که چند نکته مقدماتی را بدانیم.مثلا اینکه کدها به فرم ها و کنترل های برنامه متصل می شوند. در ابتدا بخاطر داشته باشید. که از طریق پنجره project می توانید برنامه های خود را سازماندهی کنید و همه فایلهای مرتبط با برنامه را مشاهده نمایید با وجودی که روالها رویداد را درون پنجره code می نویسید اما اینها به فایل های خاص برای خودشان نیاز ندارند. بلکه همراه با کنترل های مربوط در یک جا قرار می گیرند.بعنوان مثال پروژههای که تا به اینجات کار کردیم فقط شامل یک فرم بود و آن فرم کنترلها و روال های رویداد مربوط به آن کنترل ها را حفظ می کند. همانطوریکه خواهید دید یک فرم می تواند کدی را نگه دارد که لوزما کد روال رویداد نیست بلکه یک کد چند منظوره است. بعضی پروژه ها انواع دیگری از کدها را حفظ می کنند.در فصل قبل یاد گرفتید که همه کد درون روال ها ظاهر می شود و ویژال بیسیک از سابروتین و تابع پشتیبانی می کند.روالهای رویداد در گروه سابروتین قرار می گیرند اما در طول کتاب با نحوه نوشتن توابع نیز آشنا می شوید.چنانچه یک روال رویداد مربوط یک کنترل خاص نباشد می توانید در یک مدول کد جدا گانه ظاهر شود پنجره project فهرست مدولها را هم نشان می دهند. پنجره project properties را باز کرده از داخل منو project Project type= این قسمت مخصوص انتخاب نوع form می باشد.form activex…… Startup object= این قسمن مشخص می کنید که در موقع اجراع برنامه کدام یک از فرم های شما اجرا شود.اگر که یک عدد فورم داشته باشید که همان یک عدد فورم ظاهر می شود ولی اگر تعداد فرم های شما از 2 عدد بیشتر باشد امکان انتخاب یکی ز این فرم ها امکان پذیر است. پنجره کد نویسی دارای چندین قسمت است. قسمت اعلان روالها عمومی شروع رواهای یک رویداد. داده ها در ویژوال بیسیک: برای انجام محاسبات در ویژال بیسیک لازم است چند نوع داده را پردازش کنید . مثلا با نام ها نشانی ها مقادیر پولی اعداد بزرگ و کوچک و داده های منطقی کار کنید.داده های منطقی می توانند درست یا غلط باشند. ویژال بیسیک از بسیاری از انواع داده ها پشتیبانی می کند لذا همه نیازهای برنامه نویسی را می تواند بپوشاند. قبل از اینکه با یک داده کار کنید لازم است به ویژوال بیسیک اعلام کنید که نوع این داده چیست . داه های عددی بطور کلی همه داده های عددی در دو گروه قرار می گیرند: اعداد صحیحintegers=اعداد کامل بدون ممیز اعشاری می باشند مثل 614.934-و938.3.918 اعداد صحیح نشان دهنده سن . تعداد . سال و غیره می باشند. اعداد اعشاری decimals:اعداد دارای ممیز اعشاری می باشند که مقادیر کسری را نشان می دهند مثل 8.709.0.005و-402.35534اعداد اعشاری که گاهی اعداد با ممیز شناور floating point نیز نامیده می شوند نشان دهنده درجه حرارت نرخ بهره و غیره می باشند. در کلیه اعداد اعشاری باید ممیز اعشاری را قرار دهید حتی اگر قسمت کسری سمت راست ممیز مساوی صفر باشند. هفت نوع داده عددی که ویژوال بیسیک از آنها پشتیبانی می کند. نوع حافظه مورد نیاز محدوده مقادیر Byte یک بایت 0تا 255 Integer دوبایت -32.768تا32.767 Long چهار بایت -2.147,483,648 تا 2,147,483,647 Single چهار بایت ||مقادیر منفی از3.402823e+38 تا -1.401298e-45 مقادیر مثبت از1.401298e-45 تا 3.402823e+38 Double هشت بایت ||مقادیر منفی از -1.79769313486232e+308 تا-4.9406565841247e-324مقادیر مثبت از 4.9406545841247e-324 تا 1.79769313486232e+308 Currency هشت بایت -922,337,203,685,477,5808 تا 922,337,203, 685, 477,5807 دقت بیشتر باعث می شود که محاسبات پولی تا دو رقمی اعشاری درست باشند. Decimal دوازده بایت اگر از عداد اعشاری استفاده نکنید +/-79,228,162,514,264,337,593,543,950,335 و برای 28 رقم اعشاری استفاده نکنید +/-7.9228162514264337593543950335نوع داده decimalهنوز بطور کامل در ویژوال بیسیک پشتیبانی نمی شود اما در نگارش جدید هست. کاراکترهای پسوند ویژوال بیسیک برای مقادیر صریح پسوند نوع داده & long ! single # double @ currency ویژوال بیسیک از چند نوع داده عددی پشتیبانی می کند. نوع حافظه مورد نیازش محدوده مقادیر Stringطول ثابت طول رشته 1تا 56.400 کاراکتر Stringطول متغیر طول رشته بعلاوه 10 بایت صفر تا دو میلیارد کارا کاتور Date 8 بایت اول ژانویه 100 تا 31 دسامبر 9999 Boolean 2 بایت true یا false Object 4 بایت هر شی پنهان شده Variantعددی 16 بایت همه مقادیر مشابه double Variantمتنی طول متن بعلاوه 22 بایت مشبه string با طول متغیر پیشوند نام متغیرها که نوع داده را نشان می دهند پیشوند نوع داده مثال Bln Boolean blnbuttonenabled Byt byte bytlength Cur currency cursales98 Dte date dteoverdue Dbl double dblscientificamt Int integer intyera1998 Ing long ingweatherdistance Obj object objworksheetacct99 Sng single sngsales1stqte Str string strfirstname Vnt variant vntvalue مثال در اینجا بعضی از علان ها مجاز با استفاده از dim را می بینید. Dim inttotal as integer Dim cursales99 as currency عملگرهای رایج محاسبات و دستکاری داده ها. عملگر هدف مثال نتیجه ^ توان 2^3 8 * ضرب 2*3 6 / تقسیم 2/6 3 + جمع 3+5 8 - تفریق 6-3 3 Mod باقیمانده 11mode 3 2 \ |تقسیم عدد صحیح 11\3 3 +یا& ترکیب رشته ای "hi,"bay" "hi, bay" ویژوال بیسیک برای محاسبات عبارت های ریاضی از ترتیب زیر برای عملگرها تبعیت می کند ترتیب عملگر مثال نتیجه 1 پرانتزها() (3+2)*7 35 2 ^ 2^3+1 9 3 mod,\,\.* 2+3*7 43 4 -,+ 10-4*2+1 3 پایان قسمت دوم |
| | |
| | #19 (permalink) |
| همکار انجمن ها ![]() | مقدمه : کنترل Internet Transfer نسبت به کنترل WebBrowser که در روزهاي قبلي معرفي شد در سطح پايينتري قرار دارد . اين کنترل با استفاده از دو پروتکل HTTP و FTP مي تواند داده ها را منتقل کند . اين کنترل زمانيکه از پروتکل HTTP استفاده مي کند با همان روش کنترل WebBrowser به سرويس دهنده صفحات وب متصل مي شود اما بجاي آنکه صفحه وب را نمايش دهد متن Html صفحه را بازيابي مي کند . همچنين زمانيکه اين کنترل از پروتکل FTP استفاده مي کند قادرست فايلها را بين کامپيوترهاي روي شبکه منتقل سازد . اتصالات HTTP : همانطور که مي دانيد ، پروتکل HTTP استاندارد وب مي باشد . صفحات وب با زبان Html نوشته مي شوند و انتقال آنها از server به client توسط پروتکل HTTP صورت مي گيرد . متد OpenURL : ساده ترين راه استفاده از کنترل IT متد OpenURL است . شکل کلي اين متد بصورت زير است : Inet.OpenURL(url,DataType)x که url آدرس صفحه وب و DataType نوع داده بازيابي شونده است و دو مقدار icString ( داده متني ) يا icByteArray ( داده باينري ) را مي گيرد . مقدار بازگشتي اين متد ، داده هاي منتقل شده است . اين متد بصورت سنکرون کار مي کند يعني در تمام مدت کار آن برنامه نمي تواند کار ديگري انجام دهد . اگر از icByteArray استفاده کنيد بايد مقدار بازگشتي آنرا در يک ارايه بايت قرار دهيد . مثال 1 : از بخش Component در منوي Project مورد Microsoft Internet Transfer Control 6.0 را به toolbar خود اضافه کنيد . سپس يک کنترل IT روي فرم قرار دهيد و همچنين يک Rich Textbox و يک دکمه روي فرم قرار دهيد و کد زير را براي event مربوط به کليک دکمه بنويسيد : TextBox.text=Inet.OpenURL(“[برای مشاهده لینکها باید ثبت نام کنید] ] مثال 2 : کد زير داده هاي باينري را از اينترنت خوانده و آنها را در يک فايل ذخيره مي کند : Dim b() as byte B()=Inet.OpenURL(ftp://ftp.microsoft.com/test.zip,icByteArray)x Open App.path & “\test.zip” For Access Write As #1 Put #1,b()x Close #1 رويداد StateChanged : کنترل IT فقط يک event دارد که StateChanged مي باشد . اين event زماني روي مي دهد که State کنترل تغيير کند . State هر اتفاقي است که برنامه بايد از آن مطلع شود . تعريف کلي اين event بصورت زير است : Inet_StateChanged(ByVal NewState As Integer)x که NewState مقداري است که حالت جديد را بيان مي کند . مقادير ممکن اين پارامتر عبارتند از : icNone : حالت تغيير نکرده است . icResolvingHost : در حال جستجوي آدرس IP کامپيوتر موردنظر . icHostResolved : آدرس IP کامپيوتر موردنظر يافت شد . icConnecting : در حال اتصال به کامپيوتر مقصد icConnected : اتصال به کامپيوتر مقصد برقرار شد . icRequesting : در حال ارسال درخواست به کامپيوتر مقصد icRequestSent : درخواست به کامپيوتر مقصد ارسال شد . icReceivingResponse : در حال دريافت پاسخ از کامپوتر مقصد . icResponseReceived : پاسخ کامپيوتر مقصد دريافت شد . icDisconnecting : در حال قطع اتصال با کامپيوتر مقصد . icDisconnected : اتصال مقصد با موفقيت قطع شد . icError : در ارتباط با کامپيوتر مقصد خطايي رخ داده است . icResponseCompleted : تکميل پاسخ – تمام داده ها دريافت شد . تشخيص خطا در عمليات انتقال داده اهميت بالايي دارد و StateChanged در صورت بروز هر خطايي مقدار icError را برمي گرداند و اطلاعات خطا را در دو خاصيت ResponseCode و ResponseInfo برمي گرداند . انتقال داده بصورت آسنکرون : کنترل IT متدهاي انعطاف پذير ديگري هم دارد که آسنکرون هستند و اجازه مي دهند تا همزمان با عمليات انتقال داده ، برنامه به وظايف ديگري هم بپردازد . اين متدها با استفاده از Event Driven Model کار مي کنند . بدين معني که وقتي برنامه درخواست انتقال داده اي را مي دهد کنترل IT درخواست را در زمينه برنامه انجام مي دهد و برنامه ازاد است تا به کارهاي ديگرش بپردازد . زمانيکه داده ها بازيابي شود ، داده ها را از بافر داخلي کنترل IT مي خواند . متد GetChunk : در عمليات انتقال آسنکرون ، بايستي داده را توسط اين متد از بافر داخلي کنترل IT بگيريم : Inet.GetChunk(datasize[,datatype])x که پارامتر datasize از نوع long بوده و تعيين مي کند چند بايت از بافر خوانده شود و پارامتر اختياري datatype نوع داده را مشخص مي کند و مي تواند مقادير icString و icByteArray را بگيرد . زمانيکه StateChanged وارد حالتهاي icResponseReceived و يا icResponseCompleted شد بايد از GetChunk استفاده کنيد . بدين صورت که از يک حلقه استفاده مي کنيم تا کل بافر را بخوانيم : Private Sub Inet_StateChanged(Byval State as Integer)x Dim temp1,temp2 Select Case State Case icResponseCompleted temp1=””x temp2=””x Do temp1=Inet.GetChunk(512,icString)x temp2=temp2 & temp1 Loop Until temp1=””x End Select End Sub براي بالابردن کارايي ، بهتر است از قطعات کوچک ( بين 512 تا 1024 بايتي ) استفاده کنيد . متد Execute : و اما انعطاف پذيرترين متد کنترل IT ، متد Execute است . فرمت کلي اين متد بصورت زير است : Inet.Execute(url,Command,Data,RequestHeaders)x که url آدرس مقصد ، Command فرماني است که به کامپيوتر مقصد داده مي شود و Data و RequestHeaders اطلاعات اضافي لازم براي اجراي فرمان داده شده است . فرمانهاي Command همان فرمانهاي HTTP هستند که عبارتند از : - GET : دريافت داده ها از کامپيوتر مقصد - HEAD : دريافت اطلاعات header از کامپيوتر مقصد - POST : ارسال اطلاعات لازم براي تکميل درخواست - PUT : ارسال فايل براي کامپيوتر ميزبان ( upload ) فرمان GET پرکاربردترين فرمان متد Execute است و داده هاي خوانده شده را در بافر داخلي بافر کنترل IT قرار مي دهد تا بتوان با متد GetChunk آنها را بازيابي نمود . مثال : Inet.Execute [برای مشاهده لینکها باید ثبت نام کنید] ] ساير خواص کنترلIT : - AccessType : نوع دسترسي کنترل IT به اينترنت را مشخص مي کند و سه مقدار مي تواند بگيرد : icUseDefault : استفاده از تنظيمات رجيستري براي دسترسي به اينترنت icDirect : اتصال مستقيم کنترل IT به اينترنت icNamedProxy : اتصال به اينترنت توسط پروکسي - Document : نام صفحه پيش فرض که در متد Execute از آن استفاده مي شود . اگر به متد Execute پارامتر url را ندهيد از اين صفحه پيش فرض استفاده مي کند . - Password : کلمه رمز عبور کامپيوتر ميزبان FTP - Procotol : نوع پروتکل مورد استفاده در متد Execute را مشخص مي کند و 5 مقدار مي تواند بگيرد : icUnknown : نامعلوم icDefault : پروتکل پيش فرض icFTP : پروتکل FTP icHTTP : پروتکل HTTP icHTTP : پروتکل حفاظت شده HTTP - Proxy : نام ميزبان پروکسي - RequestTimeOut : مدت زماني که کنترل IT صبر مي کند تا اطلاعات را دريافت کند . اگر اين خاصيت صفر باشد کنترل تا هر زمان که لازم باشد براي دريافت پاسخ صبر مي کند . در حالت سنکرون ( متد OpenURL ) بعد از سپري شدن اين مدت زمان ، يک خطا توليد مي شود و در حالت آسنکرون ( متد Execute ) رويداد StateChanged مقدار خطا را بر مي گرداند - ResponseCode : بعد از بروز حالت icError اين خاصيت کد خطا را مي دهد . - ResponseInfo : توضيحي درباره خطا - StillExecuting : اگر True باشد يعني کنترل مشغول انجام کار است . - URL : آدرس مقصد در متدهاي OpenURL و يا Execute - UserName : نام کاربر براي ورود به کامپيوتر ميزبان FTP نکته 1 : براي دريافت برنامه نمونه براي متد Execute با من تماس بگيريد . نکته 2 : موضوع روزهاي بعد : 1 - اتصالات FTP با استفاده از کنترل IT 2 – آشنايي با تکنيک Collision Detection در ساخت بازيهاي دوبعدي 3 – آشنايي با کنترل WinSock نکته 3 : شايد اين سوال پيش بيايد که چرا همزمان با آموزش Internet Programming ، آموزش Game Programming را نيز شروع کرده ام ؟ علت اش اينست که تصميم دارم پس از پايان يافتن اين دو مبحث ، روش ساخت يک بازي دوبعدي چند نفره تحت شبکه را برايتان آموزش دهم . نظري نداريد ؟ |
| | |
| | #20 (permalink) |
| همکار انجمن ها ![]() | FTP پروتکل FTP علاوه بر نقل و انتقال فايل بين دو کامپيوتر ، مي تواند نوعي مديريت فايل ( مثل حذف فايل يا ايجاد پوشه ) روي کامپيوتر مقصد را انجام دهد . FTP در انتقال فايل بسيار قويتر از HTTP است ولي به مراتب پيچيده تر از HTTP مي باشد اما کنترل IT اين پيچيدگيها را از ديد برنامه نويس مخفي کرده است . براي کار با سرورهاي FTP بايد به آنها Login نمود . نوع خاصي از Login به نام Anonymous Login ( ورود ناشناس ) وجود دارد که با آن کاربران مي توانند بدون محدوديت از سايت FTP استفاده کنند . توجه کنيد که حتي براي ورود ناشناس هم نياز به نام کاربر و کلمه عبور است . براي ارسال نام کاربر و کلمه عبور از خواص username و password کنترل IT استفاده مي شود . اگر خاصيت username خالي باشد ( blank ) ، کنترل IT بطور خودکار از anonymous استفاده مي کند و آدرس email کاربر بعنوان passowrd استفاده مي شود . استفاده از متد OpenURL : متد OpenURL ساده ترين راه انجام عمليات FTP است . دستور زير از يک سايت FTP ليست مي گيرد : Text.text=Inet.OpenURL("ftp://ftp.microsoft.com",icString)x براي خواندن فايل از يک سايت FTP بايد در حالت باينري کار کرد : b()=Inet.OpenURL("ftp://ftp.microsft.com/test.zip",icByteArray)x استفاده از متد Execute : متد Execute قابليتهاي بيشتري دارد و اجرای آن در FTP نياز به دو پارامتر دارد : Inet.Execute(url,operation)x که url آدرس سايت FTP بهمراه نام و مسير فايل و پارامتر operation يک فرمان FTP است . کنترل IT با داده هاي خوانده شده FTP به دو طريق رفتار مي کند : برخي از داده ها مثل پاسخ فرمان DIR در بافر کنترل IT قرار مي گيرد و بايد آنها را با متد GetChunk خواند . برخي ديگر از داده ها مثل فايل خوانده شده با فرمان GET مستقيماً روي ديسک نوشته مي شوند و ديگر نيازي به استفاده از متد GetChunk نيست . فرامين FTP بسيار قوي هستند و حتي به شما اين امکان را مي دهند که فايلها را به روي کامپيوتر مقصد کپي کنيد ، به پوشه هاي کامپيوتر مقصد برويد ، فايلها را حذف کنيد و يا تغيير نام دهيد . البته بايد توجه داشت که فرامين قابل اجرا به نوع ورود به سيستم FTP بستگي دارد . اگر با کاربر anonymous به يک سايت FTP وارد شويد تنها مي تواند فايلها را ببيند و آنها را download کنيد . مهمترين فرامين FTP عبارتند از : CD path : به دايرکتوري path مي رويد . CDUP : به يک دايرکتوري بالاتر مي رود . CLOSE : بستن اتصال FTP DELETE file1 : حذف فايل file1 DIR file1 : جستجوي فايل file1 روي دايرکتوري جاري MKDIR path : ايجاد يک دايرکتوري با نام path PUT file1 file2 : فايل file1 را از کامپيوتر مبدا روي فايل file2 در کامپيوتر مقصد کپي مي کند . PWD : نام دايرکتوري جاري در کامپيوتر مقصد را برمي گرداند . QUIT : قطع اتصال FTP GET file1 file2 : فايل file1 را از کامپيوتر مقصد روي فايل file2 در کامپيوتر مبدا کپي مي کند . RENAME file1 file2 : تغيير نام فايل file1 به file2 RMDIR path : حذف دايرکتوري path در کامپيوتر مقصد SIZE file1 : بدست آوردن تعداد بايتهاي فايل يا دايرکتوري file1 |
| | |
![]() |
| برچسب ها (کلمات کلیدی) |
| آموزش ویژوال بیسیک , آموزش، ویژوال بیسیک , visual basic tutorial |
| ابزار هاي گفتگو | جستجو اين تالار |
| نمايش رسم | |
| |
گفتگو هاي مشابه | ||||
| نام گفتگو | شروع کننده گفتگو | تالار | پاسخ ها | آخرين پست |
| 83 نرم افزار آموزشی فارسی و تعاملی و رایگان! | hesam_akbari | نرم افزارهای اینترنتی | 0 | 02-18-2008 01:48 PM |
| نظام آموزشي كشورهاي جهان | Night Silence | علم و دانش و مقالات علمی | 22 | 01-04-2008 08:05 PM |
| مقالات و اخبار مرتبط با موسیقی | admin | موسیقی و رادیو | 104 | 07-19-2006 11:56 PM |