ورود

View Full Version : مبتدی: چگونه if ، for ، while ، do - while را یاد بگیرم !!



phpphp7
جمعه 10 خرداد 1392, 11:50 صبح
سلام
من دو سال هست که ویژوال بیسیک رو یاد گرفتم ولی اصلا نمیدونم که چرا نمیتونم از این حلقه ها استفاده کنم !
نمیدونم که وقتی سوال های این حلقه ها رو به صورت کتبی به من میدن ، چطوری جواب رو پیدا کنم !
مثلا سوال زیر رو نگاه کنید :
http://uploadtak.com/images/v9759_untitled.jpg
من نمیدونم که چطوری جواب سوال بالا رو به دست بیارم !
نه تنها تو ویژوال بیسیک ،بلکه تو php و زبان های دیگر هم این مشکل رو دارم !
خیلی هم ناراحت هستم و نمیدونم چیکار کنم
آیا کسی از شما دوستان میدونه که من باید چیکار کنم تا این حلقه ها و شرط ها رو یاد بگیرم؟؟

m.4.r.m
جمعه 10 خرداد 1392, 13:03 عصر
خوب ببین دوست خوبم شما باید اول نحوه عملکردح لقه رو یاد بگیری یعنی حلقه Do -While چطوری کار می کنه و تفاوتش مثلا با while-wend چی هست در کل همه این حلقه ها به عنوان حلقه تکرار تعریف می شوند حلقه تکرار یعنی انجام یک عمل به دفعات معلوم در این حلقه قطعه کد میگه تا زمانی که Num کوچکتر مساوی 10 نشده مقدار num رو که قبلا 2 بود دوباره به 2 ضرب کنه و در num ذخیره کنه یعنی در کل این قطعه برنامه از عدد 2 شروع می کنه به 2 ضرب کردن تا وقتی که عدد num که 2 بود به 10 برسه وقتی به 10 رسید چون شرط مساوی هم هست خود عدد 10 شمارش میشه در کل جواب این میشه

num=2*2
num=4
num=4*2
num=8
num=8*2
num=16
اینجا دیگه چون مقدار 16 از 10 بزرگتر هست از حلقه خارج میشه و در نهایت عدد 16 رو در خروجی چاپ می کنه

vbhamed
جمعه 10 خرداد 1392, 14:19 عصر
سلام
راه راحت تر اينه كه هميشه يك جدول تست رسم كني
جدول تست جدولي هست كه تعداد ستونهاش برابر تعداد متغيرهاي استفاده شده در برنامه هست به اضافه دو ستون اضافه، يكي خطوط برنامه (رديف) و يكي براي خروجي
نام متغيرهات رو در عنوان ستون مي‌نويسي و عنوان ستون آخر رو هم ميزاري خروجي
هر خطي از برنامه كه اجرا ميشه اگر يكي از متغيرهات رو تغيير بده مقدار قبلي رو در جدول خط ميزني و مقدار جديد رو زيرش مي‌نويسي و اگر هم چيزي چاپ كردي تو خروجي مي‌نويسي
مثلا برنامه زير و جدول تست اون رو ببينيد

104907

در رديف 1 اولين دستور برنامه اجرا ميشه يعني متغير y = 1 ميشه و بقيه هم كه 0 هستن، خروجي هم نداريم

با اجراي دستور بعدي يعني حلقه For، در رديف 2 متغير حلقه يعني i مقدار مي‌گيره و 1 ميشه پس i قبلي رو خط مي‌زنيم و مقدار جديدش رو در سطر بعدي مي‌نويسيم

دستور بعدي يعني x = x + i رو اجرا مي‌كنيم پس x كه 0 بوده با i كه 1 هست جمع ميشه و حاصل 1 ميشه، چون x تغيير كرده در ستون مربوطه مقدار جديدش رو مي‌نويسيم

دستور بعدي يعني y = y * i رو اجرا مي‌كنيم پس y كه 1 بوده ضربدر i كه 1 هست ميشه و حاصل 1 ميشه، چون y رو محاسبه كرديم بايد در ستون مربوطه مقدار جديدش رو بنويسيم ولي چون مقدارش همون قبليه چيزي نمي‌نويسيم

سپس حلقه دوباره اجرا ميشه و i = 3 ميشه چون گفتيم Step 2 يعني دوتا دوتا زياد بشه پس در جدول مقدار جديد i رو مي‌نويسيم

دوباره در دستور بعدي x = x + i رو اجرا مي‌كنيم پس x كه 1 شده بوده با i كه 3 هست جمع ميشه و حاصل 4 ميشه، چون x تغيير كرده در ستون مربوطه مقدار جديدش رو مي‌نويسيم

دستور بعدي يعني y = y * i رو اجرا مي‌كنيم پس y كه 1 بوده ضربدر i كه 3 هست ميشه و حاصل 3 ميشه، مقدار جديد y رو در ستون مربوطه مي‌نويسيم

سپس حلقه بازهم اجرا ميشه و i = 5 ميشه پس در جدول مقدار جديد i رو مي‌نويسيم

دوباره در دستور بعدي x = x + i رو اجرا مي‌كنيم پس x كه 4 شده بوده با i كه 5 هست جمع ميشه و حاصل 9 ميشه، چون x تغيير كرده در ستون مربوطه مقدار جديدش رو مي‌نويسيم

دستور بعدي يعني y = y * i رو اجرا مي‌كنيم پس y كه 3 بوده ضربدر i كه 5 هست ميشه و حاصل 15 ميشه، مقدار جديد y رو در ستون مربوطه مي‌نويسيم

حلقه رو دوباره اجرا مي‌كنيم و i = 7 ميشه اما چون اين مقدار از مقدار نهايي حلقه بيشتره پس كار حلقه تموم ميشه، مقدار جديد i رو در جدول مي‌نويسيم و از حلقه خارج ميشيم

در دستور آخر مقدار x, y در خروجي چاپ ميشه

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

هر برنامه ديگه اي هم باشه به همين روش مي‌تونيد تست كنيد

mehran901
جمعه 10 خرداد 1392, 15:55 عصر
البته به این نکته هم در تکمیل حرف دوستان اشاره کنم ، که شما میتونین پوینت بذارین و در هر لحظه مکث بدین به برنامه و با بردن موس روی متغییر مورد نظرتون مقدارش رو بخونین ، یعنی در حال اجرا مقدار رو بخونین یا مثلا از واچ استفاده کنین و ادامه کار رو بدین ...

MohammadGh2011
یک شنبه 12 خرداد 1392, 19:46 عصر
سلام
من دو سال هست که ویژوال بیسیک رو یاد گرفتم ولی اصلا نمیدونم که چرا نمیتونم از این حلقه ها استفاده کنم !
نمیدونم که وقتی سوال های این حلقه ها رو به صورت کتبی به من میدن ، چطوری جواب رو پیدا کنم !
مثلا سوال زیر رو نگاه کنید :
http://uploadtak.com/images/v9759_untitled.jpg
من نمیدونم که چطوری جواب سوال بالا رو به دست بیارم !
نه تنها تو ویژوال بیسیک ،بلکه تو php و زبان های دیگر هم این مشکل رو دارم !
خیلی هم ناراحت هستم و نمیدونم چیکار کنم
آیا کسی از شما دوستان میدونه که من باید چیکار کنم تا این حلقه ها و شرط ها رو یاد بگیرم؟؟

سلام عليکم
قبلا عکس نميومد براتون توضيح بدم،الان عکس نمايان شد.
ببينيد شما بايد تو اينطور دستورها خودتون رو جاي کامپايلر قرار بديد و ببينيد کامپايلر چي کار ميکنه تا جواب رو نشون بده پس بايد از روش Trace استفاده کنيد؛ به اينصورت:
به تصوير زير دقت کنيد، با توجه به اينکه در مثال يک متغير بيشتر نداريم پس کار بسيار آسان است و فقط آن متغير را مينويسيم در يک ستون از جدول trace مون و در ستون کناريش هم براي نتيجه.

http://s2.picofile.com/file/7788266234/Trace.jpg
مقدار اوليه ي متغيرمون 2 هستش پس در جدول مقدار 2 رو ميزاريم حالا ميريم خط بعدي کد رو بررسي ميکنيم، خط بعدي ميگه دستورات رو ادامه به تا زماني که متغير num کوچکتر مساوي 10 باشه.
خط بعديش ميگه متغير num رو * 2 کن و بعد نتيجه رو بريز تو ي همون متغير.مقدار قبليمون 2 و 2*2 ميشه 4
حلقه رو همينطور ادامه ميديم ميرسيم به 8، هشت کوچکتر از 10 هست پس دوباره حلقه اجرا ميشه؛ 8*2 ميشه 16 بنابراين ديگه حلقه ادامه پيدا نميکنه چون 16 بزرگتر مساويه 10 هستش ولي شرط اين بود که کوچکتر مساوي 10 باشه
از حلقه خارج ميشه و 16 رو Print ميکنه

آسونه،اينطوري که من توضيح دادم حتما دوستان عزيز فهميدن اين روش چه طوريه.:چشمک:



موفق باشيد

phpphp7
سه شنبه 14 خرداد 1392, 17:02 عصر
از سه متخصص برنامه نویس بسیار ممنونم چرا که با مثال ها و جدول هایی که رسم کردید ، به طور واضح فهمیدم که چطوری این سوالات رو میشه جواب داد !

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