1일 1로그 100일 완성 IT지식 - Day 45

김정동·2023년 9월 5일
0

루프와 조건문

수 합산하기 자바스크립트

let num, sum;
sum = 0;
num = prompt("Enter ynew value, or 0 to end");
while (num != "0") {
	sum = sum + parseInt(num);
    num = prompt("Engter new value, or 0 to end")
}
alert(sum);

0이 입력되기 전까지 사용자가 입력한 수를 읽은 다음에 전체를 합산해 출력하는 프로그램이다. 앞에서 이미 prompt를 보았고 변수 선언 부분도 보았다.
아직 살펴보지 않은 부분은 while루프문이다.

컴퓨터는 일련의 명령어를 몇 번이고 반복해서 수행하기에 더할 나위 없이 좋은 장치다. 문제는 프로그래밍 언어로 반복을 표현하는 방법이다. 모형 컴퓨터에서 GOTO 명령어와 IFZERO 명령어를 사용한 적 있는데 고수준 언어에는 while 로 보통 표현된다.

while문은 괄호사이에 있는 조건을 검사하고, 만일 조건이 참이면 중괄호 사이에 있는 문장{...}을 순서대로 실행한다. 그런 다음 돌아가서 조건을 다시 검사한다. 이 사이클은 조건이 참일 동안 계속된다. 조건이 거짓이 되면 실행은 루프의 닫는 중괄호 다음에 있는 문장으로 이루어진다.

예시 코드에서는 num != "0"을 사용했는데 변수 num이 문자 0이 아닌지를 의미한다. "0"은 문자의 0을 의미하는데, 이건 자바스크립트의 인상적인 부분 중 하나이다. 따옴표가 없다면 숫자값 0이고 "0"면 자바스크립트에서는 문자값 0이 된다.

if else

자바스크립트의 if-else는 C언어와 동일하다

let max, num;
max = 0;
num = prompt("Enter new value, or 0 to end");
while(num != "0"){
	if(pareInt(num) > parseInt(max)){
    	max = num;
    }
    num = prompt("Enter new value, or 0 to end");
}
alert("Maximum is " + max);

if else문은 두 가지 형태로 제공한다. 예시에는 else 부분이 없다. if 이후 괄호 안의 조건이 참이면 중괄호{}안의 문장이 실행된다. 이후 다음 문장의 실행이 이어진다. 만약 조건이 거짓이면 실행되는 else 부분이 있다.
이 예제에는 한계가 있는데, 음수를 입력하면 0만이 아온다는 것이다. 이 한계는 테스트의 중요성을 시사한다. 테스트는 프로그램에 임의의 값을 입력해 보는 것 이상의 작업을 필요로 한다. 좋은 테스터는 가능한 모든 부정적인 입력을 고려한다. 프로그램이 커질수록 모든 테스트 케이스를 생각해 내기가 더욱 어려워진다는 것이다.

완벽한 해결책은 없지만, 신중하게 프로그램을 설계하고 구현하는 것을 생각해볼 수 있고 일관성과 온전성 검사를 포함하는 것도 좋은 방법이다.

profile
개발자 새싹🌱 The only constant is change.

0개의 댓글