모닝스터디-반복문 활용

주혜림·2025년 12월 9일

TIL_ 251209
다트 강의 완강
모닝스터디 다시 복습 및 벨로그 정리

[목표] 모닝스터디 문제 다시 풀이해 보기

Dart 문법 기초

반복문을 사용해 예제를 풀어보자

1. 1부터 100까지 더하기

for(변수선언; 조건; 증감식) {실행할 코드}

for문을 사용해 값을 넣어주고

  for (var i = 1; i <= 100; i++) {
    print(i);
  } 

1부터 100까지 반복이 잘 되는지 print함수로 출력해보기
=> 1 ~ 100까지 i값이 출력이 된다

=> 이걸 어떻게 해야 더해진 값이 나올까?

  int sum = 0;
  for (var i = 1; i <= 100; i++) {
    sum += i; // sum = sum + i; 대입연산자
  }

  print(sum);

[해설]

1) 1부터 시작해야 하므로 i는 1로 시작함
2) i는 100보다 작거나 같은 숫자를 가짐
3) i는 반복해서 숫자가 계속 늘어난다
4) 1~100까지 나온 숫자를 더해줄 타입과 변수를 선언해준다. int sum
5) i를 전부 sum 더해준다는 뜻
6) for문 밖에서 print함수로 결과 출력

=> 결과값인 5050이 정상 출력된다!

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

[트러블 슈팅]
합계를 해 줄 변수 선언을 따로 해주는 것을 생각했어야 했고,
출력을 할 printfor문 안에 써줘야 되는지 헷갈렸다.

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

2. 별 피라미드 만들기

별 피라미드를 출력하기 제일 쉬운 방법은 print함수를 사용하는 것이다

void main() {
  print(      *);
  print(     ***);
  print(    *****);
  print(   *******);
  print(  *********);
  print( ***********);
  print(*************);
} 
=> 출력
        *
       ***
      *****
     *******
    *********
   ***********
  *************

문제점: 단수가 높아질 수록 더 복잡해져서 사용하기 불편하다.
=> 만약 별의 갯수가 1만개가 되어야 한다면 이런 방식으로는 출력을 하기 힘들 것이다.

=> 반복문을 사용해서 식을 더 간단하게 만들수는 없을까?

방법1) 반복문을 써서 *을 2씩 늘리기

void main() {
  int star = 1;
  print('${'*' * star}');
  star = star + 2; // => 3
  print('${'*' * star}');
  star = star + 2; // 3 + 2 => 5
  print('${'*' * star}');

  for(var i = 1; i <= 7; i = i + 2) {
    print('${'*' * i}');
  }

[해설]

1) 타입int과 변수star를 선언. 값은 1로 준다
2)
=> 여기까지는 모양이 반이고, 4줄 짜리 하단 *7개인 트리가 출력된다

  int star = 1;
  for(var i = 0; i < 7; i++) { // 트리 7단. i가 7보다 작을 때 까지 반복한다
    // 1단 => 별 1개..
    // 별 2개씩 계속 증가
    // 여기서 별 출력
    String space = ' ' * (7 - i); // 1-2 공백은 1씩 계속 감소한다. print(' ' * (7 - i) + '*' * currentStar);대신에 string을 줌
    print(space + '*' * star); // 1-1 print('*' * currentStar); 별만 출력
    star = star + 2;
  } // 1-1 왼쪽으로 쏠린 모양으로 출력됨. 왼쪽에 공백이 없기 때문!
    // 별은 2씩 증가, 공백은 1씩 감소
    // 1-2 결과값 정상 출력


    // 2. 별을 다이아몬드 형태로 출력되게 해보기. 반복문 이용
    // 공백은 1씩 줄어들고 늘어나고 별은 2씩 늘어나다가 줄어드는 반복문
    // 제일 마지막이 공백 0 별 13개
    // 제일 첫번째 공백 1 별 11 / star => 14
    
    for(var i = 1; i < 7; i++) {
      star = star - 2; // star => 12
      // 공백이 1부터 출력
      int spaceConut = i + 1;
      print(' ' * spaceConut + '*' * star);
    }
    /* 1-1 결과값 중간에 2줄 밀려서 출력되는 것 지워줄 것.
    for(var i = 0; i < 7; i++) 0일 때 아래처럼 출력됨
     *
      ***
     *****
    *******
   *********
  ***********
2
 *************
  ***********
   *********
    *******
     *****
      ***
       *
    */

    // 중복문제 해결

}

3. 구구단 출력하기

제일 간단한 방법인 print함수만 사용해서 출력하는 방식은

  print('2 * 1 = 2');
  print('2 * 2 = 4');
  print('2 * 3 = 6');
  print('2 * 4 = 8');
  print('2 * 5 = 10');
  print('2 * 6 = 12');
  print('2 * 7 = 14');
  print('2 * 8 = 16');
  print('2 * 9 = 18');

하나하나 다 써야해서 출력이 길어지게 되면 매우 복잡해지므로 반복문을 이용해준다.
void main() {
1) 구구단 2단 출력하기
// for문으로 반복문을 사용해야 한다.
// 2는 고정으로 반복된다. 2 * i = 2i 이 되어야 한다.
// 그렇다면, i의 값은 점점 늘어나야 하고, 공통으로 값을 가져가면 됨
// n의 최대 값은 9단까지 이므로 9가 최대값이 된다.
// 반복문을 써준 뒤
// print함수로 연산자를 사용해 수식을 적어서 출력해준다.

for (var i = 1; i <= 9; i++) {
// i는 1이고, 9단 까지만 출력할 것. 숫자는 계속 올라갈 것
print('2 $i = ${2 i}'); // 2 1 = 2... i가 1씩 늘어나므로
// - 수식 안에 i를 불러올 땐 $기호를 써준다.
// - 수식 안의 수식은 {}중괄호를 써서 묶어준다.
}
/

2 1 = 2
2
2 = 4
2 3 = 6
2
4 = 8
2 5 = 10
2
6 = 12
2 7 = 14
2
8 = 16
2 9 = 18
정상 출력 됨
/

// 2. 구구단 2단부터 9단까지 출력해보기
// for문으로 반복문을 사용해야 한다.
// 구구단의 구조를 살펴보자
// 2 1 = 2 / 5 3 = 15... j * i = ji 의 구조를 갖는다.
// i는 1~9까지 올라가며, j는 2부터 시작해설 9까지 올라간다.
// for문이 2개가 필요

for (var j = 2; j <= 9; j++) { // j는 2부터 시작하며, 9까지 올라간다. 반복된다.
for (var i = 1; i <= 9; i++) { // i는 1부터 시작하며, 9까지 올라간다. 반복된다.
print('$j $i = ${j i}'); // 2단부터 9단까지 정상 출력 됨
}
}

// 3. 구구단 특정 단수를 출력하기
// ! mulTable() : 함수이름. multiplication table 구구단 표를 뜻
// ! 반환되는 값이 없는 함수를 사용 : void
// ! 출력할 단 번호 : number
// for문 반복문 사용
// 구구단 구조 j * i = ji
// 그런데 특정 단수만 출력을 하려면 반복문을 따로 나눠서 써줘야 함
// 만약 5단과 8단을 출력하고 싶다면?

for (var j = 2; j <=9; j++) {
mulTable(j);
}
mulTable(5);
mulTable(8);

}

// 반환타입: void 함수명: mulTable(매개변수: int 변수이름: number) {실행할 코드들}
void mulTable(int number) { //
for (var i = 1; i <= 9; i++) {
print('$number $i = ${number i}');
}
}

// 구구단의 단수 부분을 j로 주고, mulTable 함수로 원하는 단수를 지정한다
// 지정된 단수를 받아 j의 값이 출력됨
// j의 값이 담긴 반환타입에 i의 정보가 담긴 반복문을 만들고 출력하면 5단, 8단이 출력된다

profile
앱 개발을 공부중입니다.

0개의 댓글