Java/UI구현
2023.03.29 while, for문
amungstudy
2023. 3. 29. 15:11
사용자에게 특정값을 입력을 받아서
조건문을 실습해보도록 하겠습니다.
let inputText = prompt("이름을 입력해 주세요.","한글로 입력할것.");
alert("당신의 이름은 : "+inputText+"입니다.");
위의 prompt함수를 응용해서 성적처리 프로그램을 만들어봅시다.
ex) 89 -> 당신의 성적은 B+입니다. 출력하도록 합시다.
성적의 기준은 다음과 같다.
95~100 : A+
90~94 : A
85~89 : B+
80~84 : B
75~79 : C+
70~74 : C
65~69 : D+
60~64 : D
60점 미만 : F
입력한 값이 숫자일때만 작동하도록(1~100)
입력한 값이 숫자가 아닌경우에는 숫자가 아니라는 메세지를 전달하도록
소스코드를 수정 및 추가해봅시다.
let score = prompt("점수를 입력하시오.","숫자로 입력할 것.");
if(score>=95){
if(score>100){
alert("100이하의 숫자만 입력하시오.");
}else{alert("당신의 성적은 A+입니다.");}
}else if(score>=90){
alert("당신의 성적은 A입니다.");
}else if(score>=85){
alert("당신의 성적은 B+입니다.");
}else if(score>=80){
alert("당신의 성적은 B입니다.");
}else if(score>=75){
alert("당신의 성적은 C+입니다.");
}else if(score>=70){
alert("당신의 성적은 C입니다.");
}else if(score>=65){
alert("당신의 성적은 D+입니다.");
}else if(score>=60){
alert("당신의 성적은 D입니다.");
}else if(score>=1){
alert("당신의 성적은 F입니다.");
}else{
alert("입력한 값이 숫자가 아닙니다.");
}
//선생님 풀이
NaN(Not a Number) : 타입은 number이지만, 숫자로 변환 실패시 표현되는 변수. -> 문자열로 변환시켜서 사용했음.
// let inputScore = Number(prompt("점수를 입력 하시오.","숫자만 입력"));
// // NaN(Not a Number) : 타입은 number이지만, 숫자로 변환 실패시 표현되는 변수.
// // Number객체 안에 isNaN()함수를 통해서 NaN값을 체크 - 추천.
// console.log("NaN체크 : ", Number.isNaN(inputScore) );
// console.log("inputScore 확인용 : ", inputScore.toString());
// // if(typeof inputScore == "number" && inputScore.toString() != "NaN"){
// if(typeof inputScore == "number" && !Number.isNaN(inputScore) ){
// if( inputScore >= 0 && inputScore <= 100){ //0~100점 사이의 점수를 체크
// if(inputScore>=90){
// if(inputScore >= 95){
// alert("당신의 성적은 A+입니다.");
// }else{
// alert("당신의 성적은 A입니다.");
// }
// }else if(inputScore >= 80){
// if(inputScore >= 85){
// alert("당신의 성적은 B+입니다.");
// }else{
// alert("당신의 성적은 B입니다.");
// }
// }else if(inputScore >= 70){
// if(inputScore >= 75){
// alert("당신의 성적은 C+입니다.");
// }else{
// alert("당신의 성적은 C입니다.");
// }
// }else if(inputScore >= 60){
// if(inputScore >= 65){
// alert("당신의 성적은 D+입니다.");
// }else{
// alert("당신의 성적은 D입니다.");
// }
// }else{
// alert("당신의 성적은 F입니다.");
// }
// }else{
// alert("유효한 점수의 범위가 아닙니다.");
// }
// }else{
// alert("숫자가 아닙니다. 다시 입력해주세요.");
// }
//스위치문을 활용하여 입력된 값이 홀수 인지 짝수인지 구분하는 프로그램을 생성해봅시다.
//홀수인경우,짝수인경우,숫자가 아닌 경우
let inputNumber = prompt("숫자를 입력하시오");
switch(inputNumber%2){
case 1:
alert("홀수 입니다.");
break;
case 0:
alert("짝수 입니다.");
break;
default:
alert("숫자가 아닙니다.");
break;
}
//선생님 풀이
let inputNum = Number(prompt('숫자를 입력하세요.'));
switch(imputNum %2){
case 0:
alert("짝수 입니다.");
break;
case 1:
alert("홀수 입니다.");
break;
default:
alert("숫자만 입력해주세요.");
break;
}
JS의 반복문
반복되는 소스코드를 반복문을 사용하여 간략하고, 편리하게 작성가능
<script>
// console.log(`-------2단--------`);
// console.log(`2 x 1 = 2`);
// console.log(`2 x 2 = 4`);
// console.log(`2 x 3 = 6`);
// console.log(`2 x 4 = 8`);
// console.log(`2 x 5 = 10`);
// console.log(`2 x 6 = 12`);
// console.log(`2 x 7 = 14`);
// console.log(`2 x 8 = 16`);
// console.log(`2 x 9 = 18`);
반복문의 종류 : while문, do while문, for문
while문의 형태
while(조건식){수행문;}
while을 작성할때는 break; 달아주거나, 조건식이 false되도록 상한선을 잘 설정해줘야함.
let i = 0;
while(i < 10){
console.log("while을 이용한 반복문 연습", i);
i = i + 1;
}
console.log("반복문 종료");
while문의 조건이 false로 바꿀 수 있는 경우에 위와 같이 작성 가능.
let i1 = 0;
while(true){
console.log("while을 이용한 반복문 연습", i);
i1 = i1 + 1;
if(i1 == 10){
break; //해당 제어문을 빠져나온다. -> 특정 조건일때 break되도록 작성함.
}
}
console.log("반복문 종료");
while문의 조건이 true일때는 break문을 사용해서 프로그램을 종료 해주자.
구구단 2단을 while문을 이용하여 출력하도록 작성해봅시다.
위에서 한줄씩 작성한 2단과 같이 출력되도록 작성.
let n = 1;
while(n < 10){
console.log(`2 x ${n} = `,2*n);
n = n + 1;
}
console.log("반복문종료");
//선생님 풀이
let i2 = 1;
console.log("------------2단--------");
while(true){
console.log(`2 x ${i2} = ${2*i2}`);
i2 += 1; // i = i + 1;
if(i2 == 10){
break;
}
}
do-while문 : while문과는 다르게 일단 한번은 수행문을 실행한 후 조건을 검사한다.
do-while문의 형태
do{수행문;}while(조건식);
let y = 0;
do{
console.log("do-while문을 이용한 반복문 연습",y);
y = y + 1;
}while( y < 10 );
console.log("do-while문 종료");
for문 - 초기식, 조건식, 증감식을 포함하는 반복문
while문보다는 사용하기가 편하다.(정해진 횟수가 있어서 break안써도됨.)
for문의 형태
for(초기식; 조건식; 증감식){수행문;}
for(let i = 0; i <10; i++){
console.log("for문을 이용한 반복문 연습",i);
}
for문을 이용하여 구구단 2단을 출력하도록 작성해봅시다.
console.log("------2단출력------");
for(let i = 1; i <10; i++){
console.log(`2 x ${i} = ${2*i}`);
}
//어제 12345의 각 자리의 숫자를 더해봅시다.
//아래의 소스코드를 반복문으로 변경하여 작성해봅시다.
let num = 12345;
// let num1 = num % 10;
// num = parseInt(num/10);
// let num2 = num % 10;
// num = parseInt(num/10);
// let num3 = num % 10;
// num = parseInt(num/10);
// let num4 = num % 10;
// num = parseInt(num/10);
// let num5 = num % 10;
// console.log(num1+num2+num3+num4+num5);
//num변수에는 12345가 저장되어있다.
let result = 0;
for(let i = 0; i<5; i++){ //i는 0~4까지 총 5번 실행
let _num = num % 10;
result += _num; //result = result + _num
num = parseInt(num / 10);
} console.log("for문을 활용한 각 자리수의 합 : ",result)
for문을 사용하여 문자열 순회하기
// let inputNum2 = prompt('각자리의 수를 더해주는 프로그램','숫자입력');//123
// console.log("inputNum2 확인용 : ",inputNum2.length);//3
// alert("inputNum2의 첫번째자리 확인용 : "+inputNum2[0]);//0~2
// let result2 = 0;
// for(let i = 0; i<inputNum2.length; i++){ //값이 123이면 0~2까지 3번 순회
// result2 = result2 + Number(inputNum2[i]);
// }alert("각 자리의 수의 합 : "+result2);
반복문도 중복이 가능하다.
2중for문 - for문 안에 for문을 중첩해놓은 형태
배열안에 있는 값들을 순회할때 for문을 같이 사용
2중for문이 실행될 때 순서 :
바깥for문의 첫번째 실행에서 안쪽for문이 실행
for(let i = 0; i <5; i++){
for(let y =0; y < 5; y++){
console.log(`i의 값 : ${i}, y의 값 : ${y}`);
}
}
//2중for문을 이용하여 구구단2~9단 까지 출력
for(let x = 2; x<10; x++){
console.log(`------${x}단------`);
for(let y = 1; y <10; y++){
console.log(`${x} x ${y} = ${x*y}`);
}
}
향상된 for문 - 기존 for문에서 좀 더 간결해진 문법 (for in, for of),
배열이나 문자열에서 사용.
let arr = [6,7,8,10,11,100];
console.log(arr[0]); // 6
console.log(arr[1]); // 7
console.log(arr[2]); // 8
console.log(arr[3]); // 10
console.log(arr[4]); // 11
console.log(arr[5]); // 100
console.log("-----반복문으로 배열 안의 값 출력------");
for(let i = 0; i < arr.length; i++){
console.log(arr[i]);
}
for in 문(주소값 가지고 옴)
console.log("-----for/in 문으로 변경-------");
for(let i in arr){ //변수arr의 인덱스값이 변수 i를 통해 가져올 수 있다.
// for / in 을 쓸때 변수는 배열이나 문자열과 같이 데이터의 index값이 있는 data이어야 한다.
console.log(arr[i]);
}
for of 문(주소값의 값을 가지고 옴)
console.log("-------for/of 문으로 변경-------");
for(let i of arr){ //변수arr를 순회하면서 index의 실제값을 변수i를 통해 가져온다.
console.log(i);
}
예제)
//1에서 100사이의 수 중에서 2의 배수의 합을 구해 봅시다.
// 반복문과 조건문을 활용하여 소스코드 작성.
let sum1 = 0;
console.log("------1~100사이의 수 중에서 2의 배수합------")
for(let i=1; i<101;i++){
if(i%2 == 0){
sum1 += i;
}
}console.log("2의 배수의 합 :",sum1);
//업&다운 게임을 만들어봅시다.
// Math.random()함수
// const random = parseInt(Math.random() * 20) + 1; //1~20사이의 숫자를 랜덤하게 발생
// console.log("난수 발생 : ",random);
// let isContinue = true;
// while(isContinue){
// let number = prompt("숫자를입력하세요");
// if(number == 5){
// alert("종료");
// isContinue = false;
// }
const isContinue = parseInt(Math.random() * 100) + 1;
while(isContinue){
let number=prompt("숫자를입력하세요");
if(number>isContinue){
alert("다운")
}else if(number<isContinue){
alert("업")
}
if(number==isContinue){
alert("종료");
isContinue = false;
}
}
</script>