자바스크립트 - 제어문, 조건문, 반복문(for, while, if, break, continue, switch, 중첩 반복문, 배열)

2022. 5. 6. 16:56카테고리 없음

제어문 실습(반복문, 연산자)

실습. 1~100까지의 숫자 중 5의 배수의 합산값을 구하여 출력하여라. (2가지 방법이 있다.)

	<script type="text/javascript">
		var sum = 0;
		for(i=1; i < 101; i++ ){
			if(i % 5==0){
				sum+=i
			}
			//console.log(i); 요렇게 먼저 시작하자.
		}
		console.log(sum);		
	</script>
	
	<script type="text/javascript">
		var sum = 0;
		for(i=5; i < 101; i +=5 ){
			if(i % 5==0){
				sum+=i
			}
			//console.log(i); 요렇게 먼저 시작하자.
		}
		console.log(sum);		
	</script>
 

1. break, continue

- 주로 반복문 안에서 사용된다.

- break : break 만났을 경우 반복 중단.

- continue : continue을 만났을 경우 continue 아래 코드를 실행 하지 않고 다음 반복을 실행한다.

 

<script type="text/javascript">
		for(var i=0; i<10; i++){
			//console.log(i); 6까지 출력.
			if(i>5) {
				break; //반복 중단, 중단 후 아래 코드는 실행 안됨
			}
			console.log(i); // 5까지 출력.
		}
	</script>
 
<script type="text/javascript">
		for(var i=0; i<10; i++){
			if(i % 2 == 0){
				continue;
			}
			console.log(i);
		}		
	</script>
	
	<script type="text/javascript">
		var n = 0;
		while(n<10){			
			n++ ;
			if(n%2==0){
				continue;
			}
			console.log(n,'while');
			/* console.log(n,'while');
			n++  무한루프하게 된다. 코드 순서가 중요함  */
		}
	</script>
 

 

2. switch

- 하나의 값 기준으로 여러의 값을 비교 할때 쓰이는 제어문

<script type="text/javascript">
		var n=10;
		var n1= 0;
		switch (n){ //기본형의 값
			case 1: //비교 대상 값, 기본형의 값과 비교대상 값이 일치할 때
				//case의 값과 동일시 이 구간의 코드 실행
				console.log('switch 1');	
				break;
			case 2: //비교 대상 값
				//case의 값과 동일시 이 구간의 코드 실행
				console.log('switch 2');
				break;
			case 3: //비교 대상 값
				//case의 값과 동일시 이 구간의 코드 실행
				console.log('switch 3');
				break;
			case 10: //비교 대상 값
				//case의 값과 동일시 이 구간의 코드 실행
				console.log('switch 10');
				break;
			default: // else와 비슷하다. case에 해당되는 값이 없을 경우 실행되는 구간
				console.log('일치하는 값 없음', n);
				break;		
		}
	</script>
 

 

3. 중첩 반복문

- 반복문 내부에 반복문

- 3중첩 이상은 하지 않는다.(유지보수 차원)

<script type="text/javascript">
		for(var i=0; i<10; i++){
			console.log(i,'i 시작');
			for(var j=0; j<10; j++){//위의 반복문 초기값(식별자)과 중복없이 선언
				console.log(j,'j')
				if(j>5){
					break;//해당 영역의 반복만 중단
				}
			}
			console.log(i,'i 종료');
		}
	</script>
 

this <- 객체와된 나 자신(전역변수를 구분할 때 ) 나 자신에 있는 필드 선택

 

4. 배열

- 하나의 저장소에 공간을 나누어 저장 할 수 있는 방법(객체)

- 배열에는 index -> 배열 객체에 데이터가 저장되는 주소

- index -> 0부터 시작 -> 데이타 저장될 때마다 1씩 증가

- 배열 객체에 index를 활용하여 데이타를 저장하거나 가지고 올 수 있다.

- 배열에는 기본 자료형, 객체, 함수를 담을 수 있다.

 

① 배열 객체 선언

- var 식별자(변수명) = new Array();

( [] -> 형태의 공간(객체) 생성 - 식별자에 공간(객체)의 주소를 대입)

- var 식별자(변수명) = [];

<script type="text/javascript">
	  	//빈 배열 객체 선언
	  	var nArr1=new Array();
	  	var nArr2=[];
	  	console.log(nArr1, nArr2,'배열 객체 출력');
	  	
	  	//값을 가지고 있는 배열 객체 선언
	  	var nArr3=new Array('홍길동','이순신');
	  	var nArr4=['홍길순','유관순'];
	  	console.log(nArr3, nArr4,'배열 객체 출력');
	  </script>
 

 

② 배열의 요소(원소) 접근하기

- 배열이 가지고 있는 데이터(자료형)

- 배열의 요소는 index로 접근 한다.

- 배열의 요소에 값을 변경하거나 제거할 때, index로 요소에 접근해야 한다.

- 배열의 요소 생성은 index로 접근하여 생성(저장)한다.

- 요소 접근 방식 -> 식별자[index] ;

- 요소에 값 저장 -> 식별자[index] = 값;

- 객체는 메서드(기능)과 속성으로 구성되어 있다.

- 객체의 속성이나 메서드에 접근하기 위해서는 토트 연산자(멤버 호출 연산자)를 활용한다. (식별자.속성 혹은 메서드)

<script type="text/javascript">
	  	var nArr5=[10,20,30,40,50];
	  	console.log(nArr5[2], '3번째 요소 값 가지고 오기 nArr5[2]');
	  	nArr5[2] = 100; //3번째 요소에 값 변경
	  	console.log(nArr5[2], '3번째 요소 값 가지고 오기 nArr5[2]');
</script>
 

③ 배열에 값 저장하기

<script type="text/javascript">
	  	//index로 접근하여 값 저장하기
	  	var nArray1=[];
	  	nArray1[0] = 20;
	  	nArray1[1] = 30;
	  	
	  	//index를 모르고 있을 때 
	  	//식별자.push(값);
	  	//index번호 모르더라도, 자동으로 데이터가 증가되어 저장된다.
	  	nArray1.push(50);
	  	
	  	console.log(nArray1);
	  	
</script>
 

④ 배열의 크기(배열에 담긴 갯수)

- 배열의 크기를 알아 보기 위해서는 length라는 속성을 사용한다.

<script type="text/javascript">
	  	var nArray2 = [1,2,3,4,5];
	  	console.log(nArray2, nArray2.length);
	  	// console.log(nArray2.0); 요런 출력은 불가능, 자바스크립트에서 속성에 접근하기 위해서 .을 붙여준다.	  	
	  </script>
 

⑤ 객체 참조 변수

<script type="text/javascript">
		//기본형
		var n1=10;
		var n2=n1; // 변수에 대입시 값 복제
		console.log(n1,n2);
		n2=20; // 새로운 만들어진 공간에 저장
		console.log(n1,n2);
		
		//참조형
		var arr1 = new Array(10,20);
		console.log(arr1);
		var arr2 = arr1; //변수에 대입시 객체 주소값 복제
		console.log(arr1,arr2);
		
		arr2[0] = 100; //0번째 자리에 100 대입
		console.log(arr1,arr2);		
	</script>
 

⑥ 배열과 반복문

<script type="text/javascript">
		var nArray01 =[10,20,30,40,50];
		for(var i=0; i<nArray01.length; i++){
			console.log(nArray01[i]);
		}
	</script>
 

5. 실습을 해보자.

① 제어문 실습(반복문, 연산자) jsEx01

실습. 1~100까지의 숫자 중 5의 배수의 합산값을 구하여 출력하여라.

<script type="text/javascript">
		var sum = 0;
		for(i=1; i < 101; i++ ){
			if(i % 5==0){
				sum+=i
			}
			//console.log(i); 요렇게 먼저 시작하자.
		}
		console.log(sum);		
	</script>
 
<script type="text/javascript">
		var sum = 0;
		for(i=5; i < 101; i +=5 ){
			if(i % 5==0){
				sum+=i
			}
			//console.log(i); 요렇게 먼저 시작하자.
		}
		console.log(sum);		
	</script>
 

② 중첩 반복문 실습 jsEx02

- 구구단 2단부터 9단까지 출력하여라.

<script type="text/javascript">
		var x = 2;
		var y = 1;
		
		for(x=2; x<10; x++){
			for(y=1; y<10; y++){
			console.log(x + ' X ' + y + " = " + x*y);	
			}		
		}	
	</script>
 

- 구구단 9단부터 2단까지 역순으로 출력하여라.

<script type="text/javascript">
		var i = 9;
		var z = 1;
		
		for(i=9; i>1; i--){
			for(z=9; z>0; z--){
			console.log(i + ' X ' + z + " = " + i*z);	
			}		
		}	
	</script>
 

- 구구단 2단부터 9단까지의 값중 짝수의 값만 합산하여 합산값만 출력하여라.

<script type="text/javascript">
		var sum = 0;
		var sum2 = 0;
		var x = 2;
		var y = 1;
		
		for(x=2; x<10; x++){			
			for(y=1; y<10; y++){
				if(x%2==0){ // x단 짝수는 전부 출력, y는 x가 홀수시, 2의 배수만 출력
				sum +=(x*y);	
				} else if(y%2==0){
				sum2 +=(x*y);
				}				
			}		
		}
		console.log(sum+sum2);
	</script>
 
<script type="text/javascript"> //선생님 답안
		var sum = 0; 
		for(var i=2; i<10; i++){
			for(var j=1; j<10; j++){
				var n=j*i;
				if(n%2==0){
					sum+=n;
				}
			}
		}
		console.log(sum);
	</script> 
 

- 구구단 2단부터 9단까지의 값중 홀수단만 출력하여라.

<script type="text/javascript">
		var x = 2;
		var y = 1;
		
		for(x=2; x<10; x++){			
			for(y=1; y<10; y++){
				if(x % 2 == 1){
				console.log(x + ' X ' + y + " = " + x*y);
				}			
			}		
		}
	</script>
 
<script type="text/javascript">//선생님 답안
		for(var i=2; i<10; i++){
			if(i%2 !=0){
			for(var j=1; j<10; j++){
				console.log(i + ' X ' + j + " = " + i*j);
			}
		}
	}	
	</script>
 

- 중첩 반목문을 활용하여 아래의 문자열이 차례대로 콘솔에 출력되도록 하여라.

<script type="text/javascript">
		for(var i=0; i<5; i++){
			var str=''; //반복시, 문자열을 초기화(=공백상태)하기 때문에 이전 값이 더해지지 않는다.
			str +=i;
			for(var j=0; j<=i; j++){
				str+=j;
			}
				console.log(str);			
		}
	</script>
 
<script type="text/javascript"> //현우씨 답
		for(var i=0; i<5; i++){
			var str=''; //반복시, 문자열을 초기화 하기 때문에 이전 값이 더해지지 않는다.
			
			for(var j=0; j<=i; j++){
				str+=j;
			}
				console.log(i+str);			
		}
	</script>
 

③ 배열과 반복문 실습 jsEx03

- 구구단 2단의 결과값을 guguArray배열에 담도록 하여라.

[2,4,6,8,10,12,14,16,18]

<script type="text/javascript">
		var guguArray = []; //[2,4,6,8,10,12,14,16,18];
		for(var i=1; i<10; i++){
			guguArray.push(2*i);
		}
		console.log(guguArray);
	</script>
 
<script type="text/javascript"> // 선생님 답
		var guguArray = []; //[2,4,6,8,10,12,14,16,18];
		for(var i=1; i<10; i++){
			guguArray[i-1]=i*2; // index 0부터 시작한다는 뜻.
		}
		console.log(guguArray);
	</script>
 

- 아래의 배열에 학생의 점수가 담겨 있다 학생의 점수 평균을 구하여 출력하여라.

<script type="text/javascript">
		var scoreArray=[45,60,88,90,100];
		var sum = 0;
		
		for(var i=0; i<scoreArray.length; i++){
			sum += scoreArray[i];
		}
		console.log(sum/scoreArray.length);				
	</script>
 

- 아래의 배열에 학생의 점수가 담겨 있다. n값 이상인 학생의 수를 구하여라.

<script type="text/javascript">
		var n = 60;
		var scoreArray2=[66,43,45,75,40];
		var count= 0
		
		for(var i=0; i<scoreArray2.length; i++){
			if(scoreArray2[i]>=n){
				count+=1;
			}		
		}
		console.log(count);	
	</script>
 
<script type="text/javascript"> // 선생님 풀이법
		var n = 60;
		var scoreArray2=[66,43,45,75,40];
		var count= 0
		
		for(var i=0; i<scoreArray2.length; i++){
			if(scoreArray2[i]>=n){
				count++;
			}		
		}
		console.log(count);	
	</script>