PDA

View Full Version : سوال و مشکل



aghaa_rezaa
سه شنبه 02 تیر 1388, 01:03 صبح
سلام دوستان خوبید امیدوارم منو در جمع خودتون بپزیرید ممنونم . چند تا سوال داشتم

1. بهترین کتاب واسه شروع از صفر vb.net چی هست ؟
2. میشه حلقه فور تو در تو رو با یه مثال توضیح بدیم ممنون میشم .

مثلا این مسئله :
*
**
* **
****
*****
******

یا اینیکی

******
*****
****
***
**
*

یا جای اینها عدد باشه واقعا نمیدونم تازه شروع کردم . از همتون ممنونم :خجالت:

ali_md110
سه شنبه 02 تیر 1388, 01:55 صبح
جلقه for برای دسترسی یه یک سری داده در مچموعه ایست که ابتدا و انتهاش برا مون معلومه
فرض کنید در یک اتاق تعداد 20 نفر وجود داره برا اینکه به تک تک این نفردسترسی داشته باشیم با یک حلقه تمامشون رو یه جا به دست میاریم
اول یک متغیر برا بدنه یا تعداد نفر که اونها رو بشمره
dim i as integer
همانطور که میدونیم اعداد از صفر شروع شده تا n عدد دلخواه جلو میره یا از n عدد شروع شده تا به صفر برسه
پس شروع حلقه رو برابر با صفر قرار میدیم
for i=o
ما میدونیم که تعداد 20 نفر وجود داره پس بدنه حلقه رو 20 بار تکرار میکنیم
for i=0 to 20
اگر با انگشتان دستتون از صفر شروع به شمردن بکنید تا عدد بیست
شما 21 عدد یا 21 انگشت دارین پس باید
شمارنده رو یکی کم بکنیم

fori=0 to 20 -1
next
ممکنه اشخاص موجوددر اتاق یک خاصیت داشته باشه بنام name که نام تک تک اشخاص رو مشخص میکنه
پس میتونیم با ذکر اون در حلقه نام تمامشون رو بدست بیاریم

for i = 0 to 20 -1
msgbox(i.name
next i

kablayi
سه شنبه 02 تیر 1388, 16:38 عصر
معلومه که این ali آقا در آینده استاد خوبی میشه ...:قهقهه:
از طرز درس دادن ali آقا خوشم اومد:تشویق: ... خیلی دلسوزانه مطلب رو نوشتن ... مخصوصا اون 21 انگشت!!! ... :لبخند:

aghaa_rezaa
سه شنبه 02 تیر 1388, 23:37 عصر
از علی آقا واقعا ممنونم

اما گفتم که فور تو در تو ، فور معمولی رو بلدم. و اگه میشه مثالهایی که گفتم رو جواب بدین و جواب سوال 1 هم بدین

سپاسگزارم.

kablayi
چهارشنبه 03 تیر 1388, 04:10 صبح
من خودم از کتاب ویژوال بیسیک.net مایکل هالورسن و علیرضا زارع پور شروع کردم ... بد نیست ...

مثلا شما میخواین این ستاره ها رو ایجاد کنید ...
******
*****
****
***
**
*
باید از دو حلقه تو در تو استفاده کنید
یکی برای شمارش ستون و دیگری برای شمارش سطر ...
فرضا سطر اول رو در نظر بگیر ... 6 تا ستاره وجود داره ... درسته
خوب ....
برای ستاره اول میشه چی؟ ... سطر اول ستون اول ...
برای ستاره دوم میشه چی؟ ... سطر اول ستون دوم ...
برای ستاره سوم میشه چی؟ ... سطر اول ستون سوم ...
برای ستاره چهارم میشه چی؟ ... سطر اول ستون چهارم ...
برای ستاره پنجم میشه چی؟ ... سطر اول ستون پنجم ...
برای ستاره ششم میشه چی؟ ... سطر اول ستون ششم ...
حلقه اول که مربوط به سطر هست اندیس اون 1 (اول) و حلقه دوم (حلقه داخلی) اندیسش از 1 تا 6 شمارش شد ... از حلقه داخلی خارج میشه و دور دوم حلقه خارجی شروع میشه یعنی سطر دوم ...
برای ستاره هفتم میشه چی؟ ... سطر دوم ستون اول ...
برای ستاره هشتم میشه چی؟ ... سطر دوم ستون دوم ...
برای ستاره نهم میشه چی؟ ... سطر دوم ستون سوم ...
برای ستاره دهم میشه چی؟ ... سطر دوم ستون چهارم ...
برای ستاره یازدهم میشه چی؟ ... سطر دوم ستون پنجم ...

به نظرت چه رابطه ی منطقی بین اینا وجود داره ...؟
هر دفعه که یه سطر تموم میشه چه اتفاقی برای تعداد ستون ها می افته ...؟
سطر 1 --> 6 تا ستاره
سطر 2 --> 5 تا ستاره
سطر 3 --> 4 تا ستاره
و ...
سطر 6 --> 1 ستاره


For i = 1 To 6
For j = 1 To 7 - i
' *
Next
Next

حلقه اول به تعداد سطرهامون یعنی 6 مرتبه پیمایش میکنه ...
جلقه دوم هر بار به تعداد i که اندیس حلقه اول هست از تعداد دفعات حلقه کم میشه ...
یعنی:
بار اول 7-1=6
بار دوم 7-2=5
بار سوم 7-3 =4
و...
تا 7-6=1

موفق باشید ...

kablayi
چهارشنبه 03 تیر 1388, 04:16 صبح
حالا برای تمرین ببین میتونی حلقه های اینو پیاده سازی کنی؟


******
*****#
****##
***###
**####
*#####
######

aghaa_rezaa
جمعه 05 تیر 1388, 00:24 صبح
سلام دوست عزیز خوبید از توضیحاتت ممنونم

من اینو تا اینجا تونستم پیاده سازی کنم به این شکل

******
*****
****
***
**
*
#
##
###
####
#####
######


واقعا دیگه نمیکشم تلاش کردم اما نشد ، خودت توضیحش بدی ممنون میشم .
:عصبانی++:

kablayi
جمعه 05 تیر 1388, 03:50 صبح
سلام...
برای حل این مسائل بایستی اول رابطه ای که بین * و # وجود داره رو پیدا کنید ...
اگر دقت کرده باشین در سطر اول # وجود نداره و 6 تا * وجود داره...یعنی:
سطر اول : 6 تا * و 0 تا #
سطر دوم: 5 تا * و 1 تا #
سطر دوم 4 تا * و 2 تا #
و ....
سطر هفتم : 0 تا * و 6 تا #
به نظرت چه رابطه ای بین اینها وجود داره؟
ما 7 سطر داریم و 6 ستون ...
تا اینجا معلومه که حلقه اول ما 7 بار باید تکرار بشه... پس با حلقه بیرونی مشکلی نداری...
برای حلقه دوم ( داخلی) بایستی رابطه ای پیدا کنیم ...
اگر حلقه بیرونی ما (i) از 1 شروع بشه تا 7 (7 بار) بار اول i=1 ...درسته؟
اگر دقت کرده باشید سطر اول :
6 تا * داره یعنی
7-i
و 0 تا # داریم یعنی
i-1
اگر s رو تعداد * و t رو تعداد # و i رو شماره سطر در نظر بگیریم:


****** i=1 s=7-i t=i-1
*****# i=2 s=7-i t=i-1
****## i=3 s=7-i t=i-1
***### i=4 s=7-i t=i-1
**#### i=5 s=7-i t=i-1
*##### i=6 s=7-i t=i-1
###### i=7 s=7-i t=i-1

با توجه به شرایط بالا میتوان حلقه ها را به صورت زیر نوشت ...


For i = 1 To 7
For s = 1 To 7 - i
' *
Next
For t = 1 To i - 1
'#
Next
' رفتن به سر خط
Next

حلقه i به تعداد 7 مرتبه حلقه های s , t رو تکرار میکنه
حلقه s به تعداد *ها و حلقه t به تعداد #های سطر i ام تکرار میشن...

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

موفق باشید...

aghaa_rezaa
جمعه 05 تیر 1388, 08:35 صبح
سلام ممنون از پاسخت واقعا عالی توضیح میدی خیلی بهم کمک کرد ازت واقعا ممنونم مخصوصا اون جدول و رابطه یابی که عندش بود ...:گیج::قلب:

بیبین این شکل رو درست انجام دادم : همون E انگلیسی هست یا راحت تر هم میشد نوشتش :

**
*
**
*
**



Module Module1
Sub Main()
Dim a, b, c, d, e AsInteger
For a = 1 To 2
For b = a To 2
Console.Write("*")
Next
Console.WriteLine()
Next
For c = 1 To 2
For d = c To 2
Console.Write("*")
Next
Console.WriteLine()
Next
For e = 1 To 2
Console.Write("*")
Next
Console.WriteLine()
Console.Read()
EndSub
EndModule

================================================== ==

و بعد 1 سوال دیگه هم داشتم واسه همه اینها میشه رابطه منطقی پیدا کرد مثلا شکلایی مثل اینها :


***********
***********
***********
=============================
* *
*
* *
=============================

***0***
0000000
0000000
***0***
=============================

:خجالت::قلب::قلب::قلب:

aghaa_rezaa
جمعه 05 تیر 1388, 22:01 عصر
سلام دوست من ، من یه مسئله دیگه هم حل کردم اما نمیدونم چقدر تونستم از for بهینه و مناسب استفاده کنم خودم فک میکنم خیلی طولانی شد و راحتر هم میشد حلش کرد اما من اینجوری تونستم بنویسم ، در این مورد هم راهنماییم کن مرسی عزیزم.

**.**
..*..
**.**




Module Module1
Sub Main()
Dim i, s, f, n, g, q, u, v, m, r, o, z As Integer
For i = 1 To 1
For s = 1 To i + 1
Console.Write("*")
Next
For f = 1 To i
Console.Write(".")
Next
For n = 1 To i + 1
Console.Write("*")
Next
Console.WriteLine()
Next
For g = 1 To i
Console.Write(".")
Next
For q = 1 To i - 1
Console.Write("*")
Next
For u = 1 To i - 2
Console.Write("*")
Next
For v = 1 To i
Console.Write(".")
Next
Console.WriteLine()
For m = 1 To i - 1
Console.Write("*")
Next
For r = 1 To i - 1
Console.Write("*")
Next
For o = 1 To i - 1
Console.Write(".")
Next
For u = 1 To i
Console.Write("*")
Next
Console.Read()
End Sub
End Module

aghaa_rezaa
شنبه 06 تیر 1388, 01:30 صبح
kablayi جان سلام
اگه تونستی جواب ما رو بدی ممنون میشم عزیزم.:بوس::خجالت:

kablayi
شنبه 06 تیر 1388, 01:51 صبح
سلام...
در مورد حرف E فکر کنم کارتون درست باشه ... ولی در مورد این آخری ... این تعداد حلقه ای که به کار بردین اشتباهه چون در مسائلی مثل این که کمتر میشه در اون تقارن پیدا کرد خط به خط چاپ کنید بهتره تا استفاده از حلقه های تودرتوی ناکارآمد ...

موفق باشید ...

aghaa_rezaa
شنبه 06 تیر 1388, 02:07 صبح
سلام دوست من ، من یه مسئله دیگه هم حل کردم اما نمیدونم چقدر تونستم از for بهینه و مناسب استفاده کنم خودم فک میکنم خیلی طولانی شد و راحتر هم میشد حلش کرد اما من اینجوری تونستم بنویسم ، در این مورد هم راهنماییم کن مرسی عزیزم.

**.**
..*..
**.**




Module Module1
Sub Main()
Dim i, s, f, n, g, q, u, v, m, r, o, z AsInteger
For i = 1 To 1
For s = 1 To i + 1
Console.Write("*")
Next
For f = 1 To i
Console.Write(".")
Next
For n = 1 To i + 1
Console.Write("*")
Next
Console.WriteLine()
Next
For g = 1 To i
Console.Write(".")
Next
For q = 1 To i - 1
Console.Write("*")
Next
For u = 1 To i - 2
Console.Write("*")
Next
For v = 1 To i
Console.Write(".")
Next
Console.WriteLine()
For m = 1 To i - 1
Console.Write("*")
Next
For r = 1 To i - 1
Console.Write("*")
Next
For o = 1 To i - 1
Console.Write(".")
Next
For u = 1 To i
Console.Write("*")
Next
Console.Read()
EndSub
EndModule


دوست عزیز یعنی منظورتون اینه که چنین مسائلی رو چطور حل کنم ؟ میشه همینو شما حل کنی ؟
و نگفتی تو همین شکلایی که به قول شما تقارن نداره میشه رابطه ای منطقی پیدا کرد و چطور حل بشن بهتره ممنون میشم اولین و سومین مثالی رو که زدم از اون 3 تا واسم حل کنی مرسی
:قلب:

kablayi
شنبه 06 تیر 1388, 14:34 عصر
سلام...
برای هر مسئله ای راه حل مناسبی وجود داره ...
جواب مسئله زیر بایستی خطوط رو به زوج و فرد تقسیم کنید ...



**.**
..*..
**.**

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


For i = 1 To 3
If (i Mod 2 = 1) Then
For j = 1 To 2
Console.Write("*")
Next
Console.Write(".")
For j = 1 To 2
Console.Write("*")
Next
Else
For j = 1 To 2
Console.Write(".")
Next
Console.Write("*")
For j = 1 To 2
Console.Write(".")
Next
EndIf
Console.Write(vbCrLf)
Next
Console.Read()

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

موفق باشید...

kablayi
شنبه 06 تیر 1388, 14:51 عصر
***********
***********
***********




For j = 1 To 11
Console.Write("*")
Next
Console.Write(vbCrLf)
For j = 1 To 10
Console.Write(" ")
If j = 5 Then
Console.Write("*")
EndIf
Next
Console.Write(vbCrLf)
For j = 1 To 11
Console.Write("*")
Next
Console.Read()


آخری رو خودت حل کن ...

aghaa_rezaa
شنبه 06 تیر 1388, 14:55 عصر
سلام مرسی عزیز

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

aghaa_rezaa
یک شنبه 07 تیر 1388, 11:46 صبح
سلام دوستان خوبید
به این2 سوال توجه کنین

for i= 1 to 2 step 1
console.write(" NUm" +i.tostring+ ":") ok
console.read() ok
حالا اگه بخوام چند تا عدد از ورودی بگیره و میانگین بده چطوری میتونم میانگین رو بگیریم
یعنی نمیدونم چطور بهش حالی کنم اعدادی رو که از ورودی گرفته روشون اعمالی انجام بده

و سوال دومم اینه که من for دارم از 1 تا j و میخوام j رو از تکست باکس بگیره
و در لیبل به همون اندازه * چاپ کنه اما تو لیبل مقدار آخر for رو میزاره که درست هم هست اما تبدیل به اینجوریشو نمیدونم

ممنون میشم راهنماییم کنینننننننننننننننننننن

:قلب:

aghaa_rezaa
سه شنبه 09 تیر 1388, 04:12 صبح
آقا یکی بیاد جواب ما رو بده لطفا

kablayi
سه شنبه 09 تیر 1388, 17:15 عصر
دوست عزیز پیشنهادمیکنم برین برنامه نویسی رو از اول یاد بگیرین(از پایه) نه اینکه جسته گریخته وارد برنامه نویسی بشین ...
برین یکی از زبانهای برنامه نویسی رو کامل یاد بگیرید بعد بیاین سراغ Dotnet ...

موفق باشید...

aghaa_rezaa
سه شنبه 09 تیر 1388, 17:48 عصر
مگه همین vb.net یک زبانه دیگه ، دارم از اول شروع میکنم از پایه