ويژوال بيسيک

در اين بخش مي‌توانيد به مباحث مربوط به انواع زبان هاي برنامه نويسي بپردازيد

مدیران انجمن: athlon64x2, abbas.m.k, شوراي نظارت

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » جمعه 1 تیر 1386, 5:53 pm

چشم rampco جان،

در اولين فرصت حتما توضيحاتي را راجع به حلقه ها برايتان ارائه خواهم داد...

Captain
Captain
نمایه کاربر
پست: 542
تاریخ عضویت: شنبه 19 اسفند 1385, 7:01 pm
سپاس‌های ارسالی: 112 بار
سپاس‌های دریافتی: 367 بار
تماس:

پست توسط Azadi.Isatis » جمعه 1 تیر 1386, 8:09 pm

ما 60 سال پيش يك سؤال كرديم درمورد ويژوال هيچكس جواب نداد

سوال اين بود كه چگونه مي توان از جدول داده Sql در وي بي استفاده كرد
مثل اكسس كه كه مي تونيم اون را از منوهاي بالا بازكنيم
 برای هر چیز زکاتی است و زکات علم نشر دادن آن است.  


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

Administrator
Administrator
نمایه کاربر
پست: 15674
تاریخ عضویت: جمعه 7 بهمن 1384, 7:51 pm
سپاس‌های ارسالی: 70844 بار
سپاس‌های دریافتی: 31298 بار
تماس:

پست توسط Mahdi1944 » جمعه 1 تیر 1386, 8:22 pm

m_a_y جان
شما اگر SQL Server سازگار با نسخه VB مورد استفادتون رو نصب داشته باشيد، در ليست ديتابيس‌ها ميتونيد اون رو انتخاب کنيد (زمان انتخاب ديتابيس SQL هم به ليست اضافه خواهد شد)
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | مجله الکترونيکي سنترال کلابز

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » چهار شنبه 6 تیر 1386, 11:41 pm

البته چون من نميدونم شما چقدر با محيط vb آشنا هستيد سعي ميكنم كه اولا مثال ها در حد خيلي خيلي ساده باشه تا درك ساختارها راحت تر باشند و ثانيا با كمترين ابزار دستورات قابل رويت باشند.
دستورهاي ساختاري:
1- دستورهاي شرطي
2- دستورهاي تكرار
گاهي در برنامه ،شرايطي براي اجراي بعضي از برنامه ها وجود دارد.به عبارت ديگر اگر شرايطي فراهم شود بايد دستور يا دستورهايي اجرا گردند و در غير اين صورت (برقرار نبودن شرط) نبايد اجرا شوند.

دستورهاي شرطي:
1- دستور if – then
2- دستور if –then-else
3- دستور case

دستور if-then وend if
و دستور else if

شكل كلي اين دستور به صورت زير مي باشد. Then شرط if

اگر دقت كني ميبيني اين دستور به زبان ساده ميگه اگر شرط برقرار بود سپس ......

مثال1: برنامه بنويسيد كه بررسي كند اگر اسم نوشته شده در text1 با اسم نوشته شده در text2 برابر پيغام equal را چاپ نمايد.

کد: انتخاب همه

Private Sub Label1_Click()
If Text1.Text = Text2.Text Then
Label1.Caption = "equal"
End If
end Sub

حال اگر شرط برقرار نبود داخل label هيچ چيزي نوشته نميشود. و خط فرمان به دستورات بعد از end if پرش مي كند و دستورات بعد از آن را اجرا ميكند.

مثال2 : اگر عدد وارد شده كوچكتر از 10 بود ، پيغام blow ، اگر بزرگتر از 10 بود پيغام abov را چاپ كند.

کد: انتخاب همه

Private Sub Label1_Click()
If Val(Text1.Text) < 10 Then
Label1.Caption = "blow"
End If
If Val(Text1.Text) > 10 Then
Label1.Caption = "abov"
End If
End Sub

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

بنابراين كمي ساختار را عوض ميكنيد و ميگيم اگر عدد كوچكتر از 10 بود پيغام blow در غيراينصورت (يعني عدد بزرگتر از 10 بود) ، پيغام abov را چاپ كن.
تنها فرقي كه در برنامه ايجاد ميشود اين است كه ديگر شرط ها ،توسط if هاي جداگانه محاسبه نميشوند بلكه با يك if و كلمه else دو شرط بررسي ميشود. و اصلا نيازي نيست كه فكر كني كه از كدوم راه برنامه رو بنويسي معمولا راه دوم رايج ترين حالت بررسي شرط هست.

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

کد: انتخاب همه

Private Sub Label1_Click()
a = Text1.Text
If a Mod 2 = 0 Then
Label1.Caption = "number is even"
Else
Label1.Caption = "number is odd"
End If
End Sub

توضيح: اگر عدد وارد شده به 2 قابل قسمت بود زوج در غير اين صورت فرد .
حال ميدانيم كه عدد صفر نه زوج هست و نه فرد ، و اگر در همين برنامه عدد صفر را وارد كنيم به ما خواهد گفت كه عدد زوج است و اين با قانوني كه تعريف كرديم مطابقت ندارد پس بايد اول از هر چيز بررسي كنيم كه عدد وارد شده صفر هست يا نه .اگر بود چاپ كند "number is not even or odd" در غير اين صورت بررسي زوج يا فرد بودن. پس برنامه را به شكل زير تغيير ميدهيم.

کد: انتخاب همه

Private Sub Label1_Click()
a = Text1.Text
If a = 0 Then
Label1.Caption = "number is not even or odd"
Else
If a Mod 2 = 0 Then
Label1.Caption = "number is even"
Else
Label1.Caption = "number is odd"
End If
End If
End Sub


دستور select و end select

اگر تعداد شرط هاي يك مسئله زياد باشد ،به جاي استفاده از if –else از دستور select استفاده ميكنيم.
كلاهنگامي كه بخواهيم براساس مقادير مختلف يك متغير يا يك عبارت ،تصميم گيري هاي مختلفي داشته باشيم،از select استفاده ميكنيم.شكل كلي اين دستور به صورت زير هست:

متغير يا عبارت select case

مقادير 1 case
مجموعه دستورهاي 1

مقادير 2 case
مجموعه دستورهاي 2
.
.
.
.
Case else
End select

نحوه اجراي دستور select : ابتدا عبارت يا متغير موجود در select case ارزيابي مي شود ، اگر مقدار اين عبارت يا متغير با يكي از مقادير 1 براير باشد ،مجموعه دستورهاي 1 اجرا ميشود و select خاتمه مي يابد.اگر مقدار عبارت يا متغير با يكي از مقادير 2 برابر باشر ، مجموعه دستورهاي 2 اجرا ميشودو select خاتمه مي يابد و.....
قسمت case else در اين دستور اختياري هست و در صورتي كه نوشته نشود ،اگر مقدار عبارت ، با هيچ يك از مقادير ذكر شده براير نباشد ،هيچ دستوري اجرا نمي شود و كنترل از select خارج ميشود.

مثال: برنامه بنويسيد كه يكي از چهار عملگر اصلي +،-،* و / را به همراه دو عدد صحيح از وردي دريافت و سپس اين عملگر ها را روي اين دو مقدار اعمال كند ،در صورتي كه كاراكتري غير از اين چها عملگر وارد شده باشد ، پيغام خطايي را نمايش دهد.

البته تو vb دستوري مثل select زياد مرسوم نيست .مثلا براي اين چهار عملگر قشنگتر اين هست كه چهار تا command قرار بديم و براي هر كدوم كد مناسب را بنويسيم يا راههاي ديگر . و فقط براي آشنايي شما با اين دستور به اين شكل استفاده ميكنم.

کد: انتخاب همه

Private Sub Label1_Click()

a = Text3.Text
Select Case a
Case "+"
Label1.Caption = Val (Text1.Text) + Val (Text2.Text)
Case "-"
Label1.Caption = Val (Text1.Text) – Val (Text2.Text)
Case "*"
Label1.Caption = Val (Text1.Text) * Val (Text2.Text)
Case "/"
Label1.Caption = Val (Text1.Text) / Val (Text2.Text)
Case Else
Text3.Text = "error"
End Select
End Sub

در ساختار select ميتوان در قسمت مقادير ،بازه اي از مقاديررا بررسي كرد يا مقداري را با عبارت مورد نظر مقايسه نمود:

>مقدار دوم < to >مقدار اول< case
>مقدار< >عملگر مقايسه اي< case is

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

کد: انتخاب همه

Private Sub Label1_Click()
a = Val(Text1.Text)
Select Case a
Case 1 To 9
Label1.Caption = "number is one digit"
Case 10 To 99
Label1.Caption = "number is two digits"
Case 100 To 999
Label1.Caption = " number is three igits"
Case Is > 999
Label1.Caption = "number is more than three digits."
End Select
End Sub


خوب rampco جان اميدوارم تا اينجا با اين دستورات مشكل نداشته باشي. ولي در بين دستورات شرطي دستور if اهميت بيشتري دارد .

اما زماني در برنامه نياز داريم كه يك عمل خاص بارها تكرار شود. در اينجا از حلقه ها استفاده ميكنيم .اگرتعداد دفعات تكرار مشخص بود از حلقه for و اگر تعداد دفعات مشخص نبود از حلقه while


حلقه هاي تكرار:

1- حلقه for…next
2- حلقه while…wend
3-حلقه do…loop

حلقه for….next افزايشي

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

شكل كلي اين دستور :

کد: انتخاب همه

مقدار نهايي to  مقدار اوليه =نام شمارنده حلقه for
>مجموعه دستورها<
      نام شمارنده حلقه next

فرم ديگر حلقه

کد: انتخاب همه

گام حركت step   مقدار نهايي to  مقدار اوليه =نام شمارنده حلقه for
>مجموعه دستورها<
      نام شمارنده حلقه next

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

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

کد: انتخاب همه

 مقدار نهايي to  مقدار اوليه =نام شمارنده حلقه for
       برريسي شرط
>مجموعه دستورها<
      نام شمارنده حلقه next

اگر بخواهي بعد از برقراري شرطي حلقه اجرا شه if رو قبل از حلقه قرار ميديم.
و فرم هاي ديگه .....كه با توجه به برنامه ميشه حلقه هارا طراحي كرد.

اما درمورد قانون حلقه :
1- تعداد دفعات تكرار اين حلقه با مقادير اوليه و نهايي شمارنده حلقه و گام حركت تعيين ميشود.
2- اين مقادير مي توانند اعداد صحيح مثبت ، منفي و اعشاري و يا حاصل يك عبارت محاسباتي باشند.
3- اگر گام حركت ،برابر با عدد يك باشد،نيازي به نوستن آن نيست .
4- بين دو عبارت for، next مجموعه اي از دستورها و عبارات نوشته مي شوند كه به عنوان بدنه حلقه شناسايي مي گردد و به تعداد دفعات مشخص اجراي آنها تكرار مي شود.
5- اگر در داخل حلقه ميخواهيم به محض برقراري شرط از حلقه خارج شويم مي توانيم از دستور exit for استفاده كنيم.

نكته مهم.
تعداد دفعات تكرار:
اگر مقدار اوليه بزرگتر از مقدار نهايي باشد ، حلقه تكرار نخواهد شد.
اگر مقدار اوليه مساوي مقدار نهايي باشد ، حلقه يكبار تكرار خواهد شد.
اگر مقدار اوليه از نهايي كچكتر باشد ، انگاه تعداد تكرار مي شود، 1+مقدار اوليه – مقدار نهايي

مثال از حلقه for افزايشي:

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

کد: انتخاب همه

Public i, b As Byte
Private Sub Label1_Click()
a = Val(Text1.Text)
For i = 1 To a
If a Mod i = 0 Then
b = b + 1
End If
Next i
Label1.Caption = b
End Sub

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

فرض كن عدد وارد شده 4 هست.
نحوه اجرا: ابتدا I=1 و كوچكتر از a پس حلقه اجازه اجرا دارد .
اگر باقيمانده a بر I برابر صفر شد سپس
به متغير b يكي اضافه كن.
I بعدي

باردوم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه .i=2 ، بله كوچكتر هست
A تقسيم بر I برابر صفر مي شود پس در نتيجه شرط برقرار هست و به b يكي اضافه ميكنه پس حالا مقدار b برابر 2 هست.

بار سوم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . 1=3 ، بله كوچكتر هست

A تقسيم بر I برابر صفر نمي شود پس در نتيجه شرط برقرار نيست و به b هيچ مقداري اضافه نمي شود.
بار چهارم: ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . i=4، خير اين بار مساوي هست پس ميتونه اجرا بشه.

تقسيم بر I برابر صفر مي شود پس در نتيجه شرط برقرار هست و به b يكي اضافه ميكنه پس حالا مقدار b برابر 3 هست.

.بار پنجم : ابتدا به شمارنده يكي اضافه ميكنه سپس بررسي ميكنه I از a كوچكتر هست يانه . i=5 ، خير اين بار كوچكتر هست پس نميتونه اجرا بشه. و تعداد تكرار حلقه در اين مثال برابر 4 و تعداد مقسوم عليه ها برابر 3 .

مثال: برنامه اي بنوسيد كه از 1 تا 10 ، ضرب اعداد زوج را چاپ كند.

کد: انتخاب همه

Public i, b As Byte
Private Sub Label1_Click()
a = Val(Text1.Text)
b = 1
For i = 2 To a Step 2
b = b * i
Next i
Label1.Caption = b
End Sub


در اينجا مقدار اوليه b را برابر يك قرار مي دهيم چون در غير اين صورت vb مقدار اوليه رو برابر صفر قرار ميده و چون ضرب اعداد زوج را خواسته ، پس شمارنده از اولين عدد زوج شروع مي شود .

For كاهشي:

فقط step مقدار منفي ميگيره و جاي مقدار نهايي با اوليه عوض ميشه.

کد: انتخاب همه

Public i, b As Byte
Private Sub Label1_Click()
a = Val(Text1.Text)
b = 1
For i = a To 2 Step -2
b = b * i
Next i
Label1.Caption = b
End Sub

حالا من مثال ميدم ، لطفا شما حل كنيد.

برنامه اي بنويسيد كه فاكتوريل عدد وارد شده رو محاسبه كند. اگر عدد وارد شده صفر يود ، طبق قانون فاكتوريل عدد 1 را چاپ كند . ( هم با افزايشي هم با كاهشي)
5!=1*2*3*4*5=120


شكل كلي حلقه for همين بود. در رابطه با نوشتن برنامه و مثال هاي اون ترجيح ميدم اگر برنامه هايي داريد كه با حلقه for كار مي كنه و شما در نوشتن يا مفهوم اون دچار مشكل هستيد مطرح كنيد تا بنده در حد توانم شمارو راهنمايي كنم.

حلقه تكرار while…wend

هنگامي كه تعداد دفعات تكرار مجموعه اي دستورات نامعين باشد ، نميتوانيم از حلقه for…next استفاده كنيم و بايد حلقه ديگري مثل while….wend را به كار برد.

شكل كلي دستور

کد: انتخاب همه

>شرط<  while
> مجموعه اي از دستورها<
Wend

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

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

کد: انتخاب همه

Private Sub Label1_Click()
fact = 1
n = Text1.Text
While n > 1
fact = fact * n
n = n - 1
Wend
Label1.Caption = fact

End Sub

در اين حلقه fact رو به اين صورت محاسبه ميكنه:
5!=5 * 4 * 3 * 2 * 1

يعني تا زماني كه n بزرگتر از 1 يك هست حلقه ادامه پيدا ميكنه .

به بيان ساده تر:

فرض كن عدد وارده 3 باشه .

پس در بررسي while ، n بزرگتر از 1 هست پس حلقه اجازه اجرا داره

در اين مرحله fact=1*3
در اين مرحله n=2
كنترل برنامه به ابتداي برنامه مي ره.
وقتي به ابتداي حلقه بر ميگرده دوباره شرط رو بررسي ميكنه
n بزرگتر از 1 هست پس حلقه اجازه اجرا داره

در اين مرحله مقدار قبلي fact كه 3 بوده در مقدار n ضرب ميشه. fact=3*2
در اين مرحله n=1
كنترل برنامه به ابتداي برنامه مي ره.

وقتي به ابتداي حلقه بر ميگرده دوباره شرط رو بررسي ميكنه
n بزرگتر از 1 هست ، نه .... چون مساوي يك هست پس حلقه اجازه اجرا نداره

پس از حلقه خارج مي شويم.

نكته :اگر درقسمت while ، شرط رو به اين صورت مينوشتيم while n>=1 در اين صورت حلقه يك بار ديگر اجازه اجرا را پيدا مي كرد.

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » دو شنبه 11 تیر 1386, 2:16 pm

خوب rampco جان ، خيلي دوست داشتم وقتي به اين تاپيك ميام ،جواب برنامه اي كه در خواست كرده بودم رو ميديدم... :? ولي طبق خواسته شما دوست عزيزم همين مثال رو براتون آناليز ميكنم.

برنامه هاي بنويسيد كه فاكتور يل عدد 5 رو حساب كند.( يا هر عدد وارد شده....)

کد: انتخاب همه

Public I, MUL As Integer
-----------------------------------
Private Sub Text1_Change()

If Val(Text1.Text) = 0 Then
Text2.Text = 1
Else
MUL = 1
For I = 1 To Val(Text1.Text)
MUL = MUL * I
Next I
End If
Text2.Text = MUL

End Sub


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

کد: انتخاب همه

5!=1*2*3*4*5 
يعني از عدد يك تا خود عدد ارقام در هم ضرب ميشوند. براي انجام اين كار نياز به يك حلقه داريم كه اعداد را براي ما شمارش كند . و از طرفي ميدانيم كه فاكتوريل صفر، يك هست.پس....

براي اين كار بايد مقداري كه در TEXT1.TEXT ريختيم رو بررسي كنيم كه آيا صفر هست يا خير ولي چون مقداري كه در TEXT ريخته ميشود يك مقدار رشته اي است و ما براي اين كار به يك مقدار عددي نياز داريم پس از تابع VAL استفاده ميكنيم كه مقدار رشته اي را به عددي تبديل كند....

کد: انتخاب همه

If Val(Text1.Text) = 0 Then
Text2.Text = 1


به كد بالا دقت كنيد ! :-o

خوب اگر برابر صفر نبود بايد متغيري را تعيين كنيم كه اعدادي را كه در هم ضرب ميكنيم در اين متغير قرار دهيم و چون VB به طور پيش فرض مقدار متغير ها رو برابر صفر قرار مي دهد و مسلما ضرب هر عددي در صفر مي شود صفر ، ما بايد مقدار اوليه را برابر يك قرار دهيم .....اميدوارم متوجه شده باشيد.... :?

اما حلقه .....

گام حلقه بايد يك باشد كه خوب به طور پيش فرض يك هست .....

در ثاني چون من ميخوام هر عددي كه وارد كردم برام فاكتوريل بگيره پس حلقه FOR به زبان ساده بايد اينطوري ميشه:

با فرض VAL(TEXT1.TEXT) =4

از يك تا مقداري كه در TEXT1.TEXT بيا مقدار MUL را در I ضرب كن .
برو I بعدي...

يكي به حلقه اضافه ميكنه چون كوچكتر از مقدار نهايي است پس اجازه اجرا دارد پس...

MUL كه قبلا در يك ضرب شده و مقدار فعلي آن نيز يك است ،اين بار در 2 ضرب ميشود و مقدار MUL اين بار برابر 2 مي شود.
برو I بعدي...

يكي به حلقه اضافه ميكنه چون كوچكتر از مقدار نهايي است پس اجازه اجرا دارد پس...

MUL كه قبلا در دو ضرب شده و مقدار فعلي آن نيز دو است ،اين بار در 3 ضرب ميشود و مقدار MUL اين بار برابر 6 مي شود.
برو I بعدي...

يكي به حلقه اضافه ميكنه چون مساوي از مقدار نهايي است پس اجازه اجرا دارد پس...

MUL كه قبلا در 3 ضرب شده و مقدار فعلي آن نيز 6 است ،اين بار در 4 ضرب ميشود و مقدار MUL اين بار برابر 24مي شود.
برو I بعدي...

يكي به حلقه اضافه ميكنه چون بزرگتر از مقدار نهايي است پس اجازه اجرا ندارد پس... كار حلقه تمام شده و وقتي از حلقه ميايم بيرون ، حالا بايد مقدار MUL را چاپ كنيم ......

به همين راحتي...... :-)

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

اما با FOR كاهشي :

براي اين گونه حلقه ها شرط اجراي حلقه بزرگتر بودن مقدار اوليه از نهايي است و اينكه گام حركت را منفي كنيم در غير اين صورت حلقه اجرا نميشود.

نكته: :-o

اگر گام حركت مثبت و به اندازه يك واحد باشد، در صورتي كه ذكر نشود موردي پيش نمي آيد و حلقه اجرا مي شود ولي...ولي اگر گام حركت منفي باشد حتي به اندازه يك گام بايد حتما ذكر شود در غير اين صورت حلقه اجرا نمي شود...

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

کد: انتخاب همه

5!=5*4*3*2*1


کد: انتخاب همه

Private Sub Text1_Change()
If Val(Text1.Text) = 0 Then
Text2.Text = 1
Else
MUL = 2

For I = Val(Text1.Text) To 1 Step -1
MUL = MUL * I
Next I
End If
Text2.Text = MUL

End Sub


آناليز:

با فرض VAL(TEXT1.TEXT) =4

چون I بزرگتر از مقدار نهايي است و گام حركت منفي پس حلقه اجرا ميشه

MUL اين بار ابتدا در 4 ضرب ميشه

I بعدي

يكي از I كم ميشه ، مقدار اوليه از نهايي بزرگتر است پس اجرا ميشه

MUL اين بار در 3 ضرب ميشه و مقدار MUL مي شود 12

يكي از I كم ميشه ، مقدار اوليه از نهايي بزرگتر است پس اجرا ميشه

MUL اين بار در 2 ضرب ميشه و مقدار MUL ميشود 24

يكي از I كم ميشه ، مقدار اوليه مساوي مقدار نهايي است پس اجرا ميشه

MUL اين بار در 1 ضرب مي شه و مقدار MUL ميشه 24

يكي از I كم ميشه ، مقدار اوليه از نهايي كوچكتر است پس اجرا نميشه .....

در نهايت كه از حلقه خارج شديم مقدار MUL را چاپ مي كنيم .

باز هم تاكيد ميكنم كه اگر برنامه اي داريد كه در آناليز يا نوشتن آن مشكل داريد مطرح كنيد . تا جايي كه در توانم باشد راهنمايي ميكنم.

موفق باشيد./

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » چهار شنبه 31 مرداد 1386, 8:50 am

Professional Visual Basic Programming

A selection of MSDN articles in Farsi

Chapter 1 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) API programming in VB

How to program using API functions in VB
How to call UNICODE versions of API functions
How to send a NULL string from VB to an API function
How to find API constants
Subclassing using AddressOf


Chapter 2 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Working With Files

Loading a huge file into memory using API
How to specify the free disk space
How to copy a file using Windows 95 file copy window
How to delete a file and put it in the recycle bin
and more ...


Chapter 3 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Working With Window

How to specify the original state of a minimized window
How to create a hidden child window
How to prevent a window from been resized
and more ...

Chapter 4 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Working With Menu

How to delete items from Control menu
How to display discription for each menu Item
How to create multi column menues using VB
and more ...

Chapter 5 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Multimedia


Chapter 6 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Print


Chapter 7 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Applications


Chapter 8 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Using C Language


Chapter 9 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Creating iveX Controls


Chapter 10 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Advanced issues in TextBox controls


Chapter 11 ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]) Miscellaneous

تهیه شده در :http://mazsoft.com/images/maz-logo.gif ([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید])

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » پنج شنبه 1 شهریور 1386, 1:19 am

لينك دانلود آموزش vb در 450 صفحه

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

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

ولي من دنبال يه مطلبي ميگردم كه كد و دي كد كردن ديتا رو تو vb كامل ياد بده . :-( كه تو اين كتاب 450 صفحه اي وقت گشتن نداشتم.

اينم يه لينك خوبه ديگه براي ياد گيري vb ، البته يه كم اطلاعات قبلي بايد داشته باشيد.

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

حالا هر كسي لطف كنه اين كد و دي كد رو ياد بده يا يه منبع معرفي كنه خيلي ممنون ميشم. :-)

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » پنج شنبه 1 شهریور 1386, 10:09 pm

آقا دست همه درد كنه .....

يعني اين جا هيچ كس نبود كه بهم حتي الگوريتم كار رو بگه .....

مثلا بگه f_love_s بي سواد اين كه كاري نداره ، كافي براي كد كردن مثلا كدهاي اسكي رو دست كاري كني و براي دي كد كردن عكس اون رو انجام بدي ....

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

در هر حال ممنون .

Administrator
Administrator
نمایه کاربر
پست: 15674
تاریخ عضویت: جمعه 7 بهمن 1384, 7:51 pm
سپاس‌های ارسالی: 70844 بار
سپاس‌های دریافتی: 31298 بار
تماس:

پست توسط Mahdi1944 » جمعه 2 شهریور 1386, 12:16 am

f_love_s جان
ميبخشيد مدتي هست به طرز وحشتناکي مشغله کاري و درسي دارم، نميرسم تاپيک‌ها رو کامل بخونم، شما در اينجا چند مبحث اموزشي قرار داده بوديد، از جمله در همين پستتون، به همين دليل سوالتون رو نديدم و فکر کردم آموزش هست
براي کد کردن اطلاعات بسته به هدف از اين کار بايد روشي رو انتخاب کنيد، مثلا اگر قرار بر کاهش حجم هست،‌ براي کاراکترهاي پر کاربرد تعداد ارقام يا کارکتر کوتاه و براي کاراکترهاي کم کاربرد اعداد با ارقام بلند تر رو استفاده ميکنيد، بر اساس يک کد بندي کلمات يا کاراکترها رو به معادل‌هاشون تبديل ميکنيد و در مقصد دقيقا عکس اين عمل رو انجام ميديد تا اطلاعات در مقصد به صورت صحيح ظاهر شوند
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | مجله الکترونيکي سنترال کلابز

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » پنج شنبه 8 شهریور 1386, 12:30 am

من يه برنامه نوشتم كه text رو به باينري تبديل ميكنه و روند كا ر به اين صورت هست كه هر كاراكتري كه وارد ميشه بلافاصله كد ميده اينم كد برنامم...

کد: انتخاب همه

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim a(7) As Integer
Dim i As Integer
Dim C As String
   
    If KeyAscii <> 8 Then
        b = KeyAscii
        While (b <> 0)
             a(i) = b Mod 2
             b = b \ 2
             i = i + 1
         Wend
         For j = 6 To 0 Step -1
            C = C + Str$(a(j))
         Next j
         d = Val(C)
         If Len(d) = 7 Then
              Text2 = Text2 + (d)
         Else
          Text2 = Text2 + "0" + d
         End If
    Else
         Text2 = Mid(Text2, 1, Len(Text2) - 7)
    End If

End Sub


ولي حالا ميخوام يه سري تغييرش بدم . به اين صورت كه وقتي رشته رو وارد كردم بياد اين كار تبديل رو انجام بده . من همين كد رو به اين صورت تغيير دادم ، جالبه كه كد همونه ولي error ميده .... نميدونم چرا.... :?

کد: انتخاب همه

Dim a(7) As Integer
Dim i As Integer
Dim C As String

For i = 1 To Len(Text3)
    b = Asc(Mid$(Text3, i, 1))
        While (b <> 0)
             a(f) = b Mod 2
             b = b \ 2
             f = f + 1
         Wend
         For j = 6 To 0 Step -1
            C = C + Str$(a(j))
         Next j
         d = Val(C)
         If Len(d) = 7 Then
            Text4 = Text4 + (d)
         Else
          Text4 = Text4 + "0" + d
         End If
Next i
End Sub

New Member
پست: 4
تاریخ عضویت: چهار شنبه 7 شهریور 1386, 2:12 pm

پست توسط rapboy_eminemfbaz » پنج شنبه 8 شهریور 1386, 12:52 am

salam doste man

Private Sub commande1_click()
Dim a(7) As Integer
Dim i As Integer
Dim C As String
for i = 0 to len (text1 )
keyascii = asc (mid(text1,i,1))
b = KeyAscii
While (b <> 0)
a(i) = b Mod 2
b = b \ 2
i = i + 1
Wend
For j = 6 To 0 Step -1
C = C + Str$(a(j))
Next j
d = Val(C)
If Len(d) = 7 Then
Text2 = Text2 + (d)
Else
Text2 = Text2 + "0" + d
End If
next i
End Sub



______________________________________________________________________________________________
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim a(7) As Integer
Dim i As Integer
Dim C As String

If KeyAscii <> 8 Then
Text2 = Mid(Text2, 1, Len(Text2) - 7)
End If

Captain
Captain
پست: 432
تاریخ عضویت: چهار شنبه 11 بهمن 1385, 8:03 pm
محل اقامت: www.centralclubs.com
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 16 بار

پست توسط dewdrop » پنج شنبه 8 شهریور 1386, 1:32 am

rapboy_eminemfbaz جان

ضمن عرض خوش آمد خدمت شما دوست گرامي :razz:

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

ارسال پست

بازگشت به “برنامه نويسي”