رفع ابهام در استفاده از دستور for


#1

دوستان یه مورد هست که میگه برنامه ای بنویسید که کاراکتر $ رو به صورت مثلث چاپ کنه:
من نمیفهمم چطور میشه که دستور print دوومی چطور باعث میشه به صورت مثلث در بیاد:

public class JavaApplication1 {
    public static void main(String[] args) {
        for (int i = 1; i <= 7; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("$");
            }
            System.out.print("\n"); 
       }
    }
    
}

کلا نمیفهمم چطور میشه میشه یکی بصورت کاملا روشن توضیح بده


#2

کد رو حتما حتما اجرا کنین میبینین قضیه از چه قراره


#3

این کارو کردم وقتی دستور print دووم رو مینویسم مثلث میشه
چرا
مشکلم اینه


#4

خروجی همینه؟؟؟

پ.ن. در واقع کار n\ اینه که بره به خط بعد


#5

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


#6

$ هر بار به تعداد i توی حلقه داخلی پرینت میشه، و خط بعد با /n.

فقط من if اینجا ندیدم


#7

ببخشید منظورم for بود


#8

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


#9

وفتی که برنامه میاد روی اولین for مقدار i یک هست و کوچکتر مساوی هفت پس حلقه اجرا میشه. میره پایین تر و به دومین for میرسه مقدار j یک هست و چون کوچتر مساوی یک هست حلقه اجرا میشه و یدونه $ چاپ میشه و یکی به j اضافه میشه .
دوباره برنامه میاد for دوم رو اجرا کنه ولی چون شرط برقرار نیست و j=2 و i=1 پس شرط j کوچکتر مساوی با برقرار نیست پس حلقه اجرا نمیشه و میره دستور بعد رو اجرا کنه که دستور بعد همون بک اسلش ان هستش که میدونین که مونطور میدونین ادامه ی خروجی رو در خط بعد چاپ میکنه الان چون به انتهای حلقه ی for اولی رسیدیم یکی i اضافه میشه و شرط حلقه ی اول دوباره چک میشه i=2 کوچکتر مساویه هفت هست پس حلقه اجرا میشه دوباره میریم سراغ حلقه ی دوم اینجا j=1 هست توجه کنین که چون این حلقه ی for دومی دوباره به صورت کامل داره اجرا میشه دوباره مقدار j یک هست شرط حلقه ی دومی برقراره چون یک چوکتر مساویه دو هست پس یدونه $ چاپ میکنه چون رسیده به آخر حلقه یکی به j اضافه میشه و دوباره میاد ب اول حلقه و شرط رو چک میکنه j=2 i=2 پس شرط j کوچکتر مساویه i درسته پس توی خط دوم یدونه ی دیگه $ چاپ میکنه چون رسیده به آخر حلقه دوم یکی به j اضافه میکنه و مقدار j برابر با سه میشه میاد شرط حلقه ی دوم چک میشه ولی چون j=3 i=2 پس j کوچکتر مساوی با i نیست پس حلقه ی دوم شرطش برقرار نیست و اجرا نمیشه و میره دستور بعد که دستور بعد هم که کارش رو میدونی .همینطور برای برای بقیه عددها در نهایت برای i=7 حلقه اجرا میشه و در خط هفتم هفت تا $ چاپ میکنه و چون رسیده به i=8 میاد شرط رو چک میکنه که برقرار نیست و برنامه به پایان میرسه امیدوارم که تا اینجا خونده باشی.

بدلیل وجود i++ و j++ در هر تکرار یک واحد به i و‌ j اضافه میشه و مقدار اونها هر دفعه به اضافه یک افزایش پیدا میکنه.


#10

قسمت termination حلقه یا همون ?=i در هر تکرار از کجا میدونه که باید i رو با چی مقایسه کنه؟
انقدر کامل توضیح دادی که دلم نیومد نپرسم :wink:


#11

i با 7 مقایسه میشه (نمیشه؟؟)
اگه جواب این نیست پس نمیدونم


#12

منظورم این بود که در مورد همه چیز عالی گفتی اما قسمت increment که همون i++ در لوپ بیرونی و j++ در لوپ درونی بود از قلم افتاد. شایدم من بد خوندم.


#13

آقا توماج اگه امکانش هست متن رو تصحیح کنین


#14

کدومو؟ متن خودمو؟


#15

همون متن پاسخ طولانی من رو تصحیح کنین


#16

چشم استاد


#17

آقا توماج ببخشین یه وقت بد برداشت نشه چون میخواستم پاسخ دقیق باشه از شما خواهش کردم


#18

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


#19

آقا توماج فدایی داری


#20

:heart_eyes: