기존for문은 조건을  입력해주어햐한다.
for-each 반복문을 사용하면 반복문을 실행시킬때 훨씬 간단히 사용할 수 있다.

for-each조건문 사용하면 자료형만 알면 간단히 반복문을 작성할 수 있다.(auto사용가능)

	for (int num : arr) {
		cout << num << endl;
	}


for-each로 array의 내용을 바꾸고 싶다면 &참조변수를 사용해야한다.

	for (int &num : arr) {
		num = 10;
	}


array를 동적할당하면 for-each를 사용 불가능하다.
vector벡터를 사용하면 가능하다.
vector는 동적할당 배열을 사용하기 쉽도록 std안에 들어가 있는것이다.

	vector<int> arr2 = { 1,2,3,4,5,6,7 };
	for (int num : arr2) {
		cout << num << endl;
	}

for-each문은 가시적으로 보기도 좋다.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9 };
	for (int num : arr) {
		cout << num << endl;
	}

	//값 변경하기
	for (int &num : arr) {
		num = 10;
	}
	//10으로 변경됬는지 확인
	for (int num : arr) {
		cout << num << endl;
	}
	
	vector<int> arr2 = { 1,2,3,4,5,6,7 };
	for (int num : arr2) {
		cout << num << endl;
	}


	return 0;
}

 

for문
가장 많이 사용되는 반복문

for(사용할 변수(초기화);조건;증감연산자;){}
위에 방법으로 사용한다.
마지막 조건에 증감연산자말고 다른 조건도 가능하다.
로직 실행순서
for (int i = 0; i < 10; i++)//iteration
1.int i = 0;변수를 초기화한다.
2.i < 10;조건을 확인하고 {}을 실행한다.
3.i++를 실행한다.
4.i < 10;조건을 확인하고 {}을 실행한다.
5.i++를 실행한다.

특이점은 변수는 초기에 한번만 생성한다.
또 증감연산자는 {}에 로직이 사용되고 마지막에 증가시킨다.

변수,증감연산자(다른조건)는 여러개 만들 수 있다.

while문과 마찬가지로 unsigend int 오버플로우를 주의해야한다.

#include <iostream>

using namespace std;

int pow(int b, int e)
{
	int result = 1;
	for (int count = 0; count < e; count++) {
		cout << result << " * " << b << " = "<< endl;
		result *= b;
	}
	return result;
}

int main()
{
	cout << "test" << endl;
	for (int i = 0; i < 10; i++)//iteration
	{
		cout << i << endl;
	}

	//제곱구하기
	pow(2, 4);

	//여러개 변수 선언하기
	for (int i = 0,s = 0; (i + s) < 100; i++, s += 5) {
		cout << "i : " << i;
		cout << "\ts : " << s << endl;
	}//end of for i

	//2중 for문사용
	//구구단 사용
	for (int i = 2; i < 10; i++) {
		cout << i << endl;
		for (int s = 1; s < 10; s++) {
			cout << "\t" << i << " * " << s << " = " << i * s << endl;
		}
	}
	return 0;
}

break,contunue
반복문을 제어하는 방법

break는 현재{}에서 빠져나간다.
무한루프에서 빠져나올때 자주 사용한다.

continue는 조건에 맞으면 다음반복문(숫자 증감)으로 넘어간다.
do-while문에서는 while조건에 증감연산을 해주어야한다.

#include <iostream>

using namespace std;

void breakOrReturn()
{
	while (true)
	{
		char ch;
		cin >> ch;
		if (ch == 'b')
			break;
		
		if (ch == 'r')
			return;
	}
	cout << "break or return?" << endl;
}

int main()
{
	int count = 0;
	//while,for모두 사용가능하다 break사용하기
	while (true) {
		
		if (count > 10) {
			break;
		}
		cout << count << endl;
		count++;
	}

	//break 확인 함수
	breakOrReturn();

	//continue사용하기
	for (int i = 0; i < 20; i++) {
		if (i % 2 == 0) {
			continue;
		}
		cout << i << endl;

		//아래로직과 같다.
		/*if (i % 2 == 0) {
			cout << i << endl;
		}*/
	}

	//continue사용하요 특정숫자 뺴고 출력하기
	int i = 0;
	do
	{
		if (i == 5) {
			continue;
		}
		cout << i << endl;
	} while (i++ < 10);

	return 0;
}

반복문 while
컴퓨터의 장점
- 정확하다.
반복을 지루해하지 않는다.

현업에선 while문 보단 for문을 많이 사용한다.
하지만 while문을 꼭 사용하는 곳이 있다.

while(조건=true){}형식으로 사용한다.
조건이 완료되지 않으면 무한루프에 빠진다.

{}안에 변수를 선언에 사용할려면 static을 사용한다.
조건에 true를 입력하고 내부에서 if(조건)break;로 사용할 수 있다.

while문안에 while문을 사용할 수 있다.

while문은 가시적으로 간결하다.

문제점 
unsigned int에 --를 사용하면 오버플로우가 발생하여 문제가 생길 수 있다.

#include <iostream>

using namespace std;

int main()
{
	int a = 0;
	//a가 10보다 작다면 이라는 조건을 사용했다.
	while ( a < 10) {
		//변수사용하기! 잘 사용안한다.
		//static int a = 0;
		cout << "a : " << a << endl;
		a++;
	}

//goto문으로 while과 같이 동작하기
startNumAdd:

	cout << "goto a : " << a << endl;
	if (a < 20) {
		a++;
		goto startNumAdd;
	}

	a = 2;
	//unsigned를 사용하면 오버플로우가 발생하여 문제가 생긴다.
	//unsigned int count = 0;
	//while (count >= 0) {
	//	cout << count << endl;
	//	count--;
	//}

	//중복while문
	//구구단출력
	while (a < 10) {
		int b = 1;
		cout << "a : " << a << endl;
		while (b < 10) {
			cout << "\t"<< a << " * " << b << " = " << a*b << endl;
			b++;
		}
		a++;
		b = 0;
	}

	return 0;
}

do-while문
while문과의 차이
while문은 조건에 따라 한번도 실행안될 수 있다.
do-while문은 무조건 한번은 실행된다.

for,while,do-while문중 활용도는 가장 낮다.

#include <iostream>

using namespace std;

int main() 
{
	int select = 0;

	do
	{
		cout << "selectNum : " << select << endl;
		cout << "1~5 select" << endl;
		cin >> select;
	} while (select < 0 || select > 5);

	return 0;
}

조건문

- 조건의 개수가 적을때 if문, 많을때는 switch문을 사용한다. 


if문

- if문 내부의 조건을 검사해 프로그램의 진행 결로를 결정한다.

- if문은 조건의 개수가 많지 않을때 사용하는것이 유리하다.


if (조건1) {

//조건 1에 부합할 때

}else if (조건2) {

//조건 1에 부합하지 않고 조건2에 부합할 때

}else{

//위 조건들에 모두 부합하지 않을때

}


실습 내용


실습 결과


Switch문

- 다양한 조건이 존재할 때 사용하면 소스코드를 짧게 유지할 수 있다.

- 조건을 정확히 판별할때 유용하게 사용가능하다.

- swtich문은 조건에 부합하는 경우 아래쪽의 case도 모두 만족시킨다.

- 따라서 일반적인 경우case문의 마지막에 break를 넣어 특정부분만 실행시키도록한다.


switch (확인 대상) {

case 값1:

//값 1에 부합할 때

break;

case 값2:

//값 2에 부합할 때

break;

Default:

//모든경우

}


실습 내용


실습결과




반복문


for문

- for문 내부의 조건에 부합하면 계속해서 실행한다.

- 반복문을 탈출하고자 하는 위치에 break 구문을 삽입한다.

주의할점

- 무한루프

+ 무한루프란 종료 조건 없이 무한반복되는 것을 말한다.

+ 일부러 무한루프를 만드는 경우는 거의 없고 개발자의 실수로 인해 발생한다.


for( 초기화; 조건; 반복 끝 명령어) {

//반복적으로 실행할 부분

}


실습 내용

실습 결과



while문

- while문의 조건에 부합하면 계속해서 반복한다.

- 반복문을 탈출하고자 하는 위치에 break 구문을 삽입한다.

while (조건) {

//반복적으로 실행할 부분

}


실습 내용


실습 결과


중첩된 반복문(2중for문)

- 중첩된 반복문이란 반복문 내부에 다른 반복문이 존재하는 형태의 반복문을 말한다.

- 반복문이 중첩될수록 연산 횟수는 제곱형태로 늘어난다.


실습내용


실습결과


for문과 while문의 관계

- 모든 for문은 while문으로 변경할 수 있으며 모든 while문은 for문으로 변경할 수 있다.

- C언어 소스코드가 최적화 되면서 어셈블리어 단에서는 동일한 명령어로 동작한다.

자바 초보들이 알아야 할 기본 개념!

반복문(while)
반복문이란? 어떠한 일을 반복해서 해주는 것이다.


while 문은
while(조건) {
실행할 로직
}
형식으로 생각하면 된다.


dowhile 문은
do {
실행할 로직
}while(조건)
형식으로 생각하면 된다.

while, doWhile 문의 차이는?
조건을 먼저 보고 할지 or 먼저 하고 조건을 볼지 차이가 있다.

while 문은 선평가 후 실행이고
dowhile 문은 선실행 후 평가이다.

아래의 코드를 보면 
while 문은 조건부터 확인하기에 아예 작동을 하지 않는다.
dowhile 문은 실행 후 조건을 확인하기에 숫자가 1이 증가함을 알 수 있다.



자바 초보들이 알아야 할 기본 개념!

반복문(for)
반복문이란? 어떠한 일을 반복해서 해주는 것이다.

미지수를 정한 후 정해진 수가 어디부터 어디까지 될 때까지란 조건으로 사용한다.
ex) 시작할 수를 0으로 정한 후 1씩 증가시키고 10일 때 종료한다.
for 문은 
for(조건) {
실행할 로직
}
의 형식으로 작성하면 된다.

조건에 들어가는 형식은
int x =  0; x < 10; x++ 형식으로 작성할 수 있다.
int x =  0;은 시작할 수를 설정하는 것이고 또
 x < 10;는 종료되는 조건을 설정하는 것고 또
x++은 x를 1씩 증가시킨다는 조건을 말한다.

반복문 for 문의 사용방법은 아래 코드로 표현하였다.
1. 변수를 증가시키며 반복하기.
2. 변수를 감소시키며 반복하기.
3. 반복문 작동 중 특정 숫자에 종료하기.



+ Recent posts