TIL_ 251209
다트 강의 완강
모닝스터디 다시 복습 및 벨로그 정리
Dart 문법 기초
반복문을 사용해 예제를 풀어보자
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이 정상 출력된다!
------------------------------------------------------
[트러블 슈팅]
합계를 해 줄 변수 선언을 따로 해주는 것을 생각했어야 했고,
출력을 할 print를 for문 안에 써줘야 되는지 헷갈렸다.
------------------------------------------------------
별 피라미드를 출력하기 제일 쉬운 방법은 print함수를 사용하는 것이다
void main() {
print( *);
print( ***);
print( *****);
print( *******);
print( *********);
print( ***********);
print(*************);
}
=> 출력
*
***
*****
*******
*********
***********
*************
문제점: 단수가 높아질 수록 더 복잡해져서 사용하기 불편하다.
=> 만약 별의 갯수가 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
*************
***********
*********
*******
*****
***
*
*/
// 중복문제 해결
}
제일 간단한 방법인 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단이 출력된다