JS/[codeit] 프로그래밍기초 in JS (완)

[ codeit ] 프로그래밍 기초 in JS - 프로그래밍 핵심개념 in JS (3)

web_seul 2021. 5. 15. 18:02
반응형

 제어문 

1강. if문 (if statement)

//if문 (if statement)
if(조건부분){
   동작부분
}
let temperature = 0;

if(temperature <= 0){
   console.log('물이 업니다.');
} else{
   console.log('물이 얼지 않습니다.');
}

 

2강. 롤러코스터, 탈 수 있을까?

// 파라미터 height을 활용하는 checkHeight 함수를 완성하세요.
function checkHeight(height) {
  const LIMIT = 140; //지역변수
  let passMessage = '탑승이 가능합니다.';
  let failMessage = '탑승이 불가능합니다.';

  if (height >= LIMIT) {
    console.log(passMessage);
  } else {
    console.log(failMessage);
  }
}

유지보수를 위해 140을 변수화해주기

 

 

3강. else if문

//if문 (if statement)
let temperature = -105;

if(temperature <= 0){
    console.log('물이 업니다.');
} else {
	if(temperature < 100){
    	console.log('물이 얼지도 끓지도 않습니다.');
    } else {
    	if(temperature < 150){
        	console.log('물이 끓습니다.');
        } else {
        	console.log('물이 수증기가 되었습니다.');
        }    	
    }
}

//▽

let temperature = -105;

if(temperature <= 0){
    console.log('물이 업니다.');
} else if (temperature < 100){
	console.log('물이 얼지도 끓지도 않습니다.');
} else if (temperature < 150){
	console.log('물이 끓습니다.');
} else {
    console.log('물이 수증기가 되었습니다.');
}

가독성 ↑

 

4강. 학점 계산기

function printGrade(midtermScore, finalScore){
	let totalScore = midtermScore + finalScore;
	
	const A_SCORE = 90;
	const B_SCORE = 80;
	const C_SCORE = 70;
	const D_SCORE = 60;
	
  // 여기에 코드를 작성해 주세요.
  if (totalScore >= A_SCORE){
    console.log('A');
  } else if ( totalScore >= B_SCORE){
    console.log('B');
  } else if ( totalScore >= C_SCORE){
    console.log('C');
  } else if ( totalScore >= D_SCORE){
    console.log('D');
  } else {
    console.log('F');
  }
}

// 테스트 코드
printGrade(25, 35);
printGrade(50, 45);
printGrade(29, 24);
printGrade(37, 42);

cf) 80 < totalScore < 90 은 생각하신 것과는 다르게 동작합니당.

만약 totalScore 가 55라면 첫번째 if 문에서는 거짓으로 평가됩니다.

두번째 if 문에서는 80 < 55 는 false 가 됩니다.

프로그래밍 세계에서 false 는 0으로 평가되기 때문에 0 < 90 이 되고, 이는 참입니다.

그러므로 B가 나오는 것이죵

원하시는대로 조건관계를 쓰고 싶다면 and 조건을 이용해서

// 두 범위를 가정하고 싶을 때는 &&로 묶어서 가정하기
  if (totalScore >= A_SCORE){
    console.log('A');
  } else if ( A_SCORE  > totalScore && totalScore >= B_SCORE){
    console.log('B');
  } else if ( B_SCORE  > totalScore && totalScore >= C_SCORE){
    console.log('C');
  } else if ( C_SCORE  > totalScore && totalScore >= D_SCORE){
    console.log('D');
  } else {
    console.log('F');
  }
}

5강. 서열 정리

=는 등호가 아닌 대입!, console.log와 return 이해하기!

//내 풀이
// 나의 나이와, 나의 성별을 저장하는 변수
let myAge = 26;
let myGender = 'male';

// 호칭을 담은 변수
let callOlderBrother = '형';
let callOlderSister = '누나';
let callFriend = '친구';
let callYoungerSister = '여동생';
let callYoungerBrother = '남동생';

// 상대방의 나이와 성별에 따른 호칭을 리턴하는 함수 whatShouldICall를 완성하세요.
function whatShouldICallYou(yourAge, yourGender) {
  // 여기에 코드를 작성해 주세요.
  if ( myAge == yourAge ){
    return(callFriend);
  } else if ( myAge <= yourAge && myGender == yourGender ){
    return(callOlderBrother);
  } else if ( myAge <= yourAge && myGender != yourGender ){
    return(callOlderSister);
  } else if ( myAge >= yourAge && myGender == yourGender ){
    return(callYoungerBrother);
  } else if ( myAge >= yourAge && myGender != yourGender ){
    return(callYoungerSister);
  }
}

// 테스트 코드
let result1 = whatShouldICallYou(25, 'female');
let result2 = whatShouldICallYou(20, 'male');
let result3 = whatShouldICallYou(26, 'female');
let result4 = whatShouldICallYou(30, 'male');
let result5 = whatShouldICallYou(31, 'female');

console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
console.log(result5);
//정답풀이
if (myAge === yourAge) { // 나와 나이가 같은 경우
  return callFriend;
} else if (myAge > yourAge) { // 상대방이 나이가 더 적은 경우
  if (yourGender === 'male') { // 상대방 성별이 남성인 경우
    return callYoungerBrother;
  } else if (yourGender === 'female') { // 상대방 성별이 여성인 경우
    return callYoungerSister;
  }
} else { // 상대방이 나이가 더 많은 경우
  if (yourGender === 'male') { // 상대방 성별이 남성인 경우
    return callOlderBrother;
  } else if (yourGender === 'female') { // 상대방 성별이 여성인 경우
    return callOlderSister;
  }
}

6강. switch문

결과에 따라 다른 동작 나타내기

//switch문 ( switch statement )
switch (비교할_값){
   case 조건값_1:
      동작부분;
      break; //switch문에서 나옴
   case 조건값_2;
      동작부분;
      break;
   default: //모든 조건값과 일치하지 않을 경우
      동작부분; 
}
let myChoice = 3;
switch (myChoice){
   case 1:
      console.log('고양이를 선택한 당신, ...');
      break; //switch문 종료, break가 없다면 break를 만날 때까지 모든 console 출력
   case 2:
      console.log('토끼를 선택한 당신, ...');
      break;
   case 3:
      console.log('코알라를 선택한 당신, ...');
      break;
   case 4:
      console.log('강아지를 선택한 당신, ...');
      break;
   default:
      console.log('1에서 3사이의 숫자를 선택해 주세요.');
}

ctrl D : 같은 코드 선택

 

7강. switch문 vs if문

어떤 넓은 범위를 만족하는 조건식을 만들 때는 if문을 활용하는 것이 더 효과적

특정한 값에 일치하는 조건을 만들 때는 switch문이 더 효과적

switch문은 자료형을 엄격히 구분하므로 if <-> switch 를 활용할때는 조건식을 ===으로 비교

 

8강. 등급별 티켓 가격

// 각 등급별 가격
let VIPPrice = 15;
let RPrice = 13;
let SPrice = 10;
let APrice = 8;

// 각 등급에 맞는 가격을 출력하는 함수 checkPrice를 완성하세요.
function checkPrice(grade) {
	// 여기에 코드를 작성해 주세요.
	switch(grade){
	  case 'VIP':
	    console.log(`VIP석은 ${VIPPrice}만원 입니다.`);
	    break;
	  case 'R':
	    console.log(`R석은 ${RPrice}만원 입니다.`);
	    break;
	  case 'S':
	    console.log(`S석은 ${SPrice}만원 입니다.`);
	    break;
	  case 'A':
	    console.log(`A석은 ${APrice}만원 입니다.`);
	    break;
	  default:
	    console.log('VIP, R, S, A 중에서 하나를 선택해 주세요.');
	}
}

// 테스트 코드
checkPrice('R');
checkPrice('VIP');
checkPrice('S');
checkPrice('A');
checkPrice('B');

 

9강. for문

// for 반복문 (loop statement)
for(초기화부분; 조건부분; 추가동작부분){
	동작부분
}

//초기화부분 : for반복문에서 가장 먼저 한번만 실행
//조건부분 : 불린으로 평가, true시 동작실행
//추가동작부분 : 조건true -> 동작 -> 추가동작
for(let i=1; i<=10; i++){
    console.log(`${i} 코드잇 최고`);
}

//i : 반복할 횟수 저장

//1 코드잇 최고
//2 코드잇 최고
//3 코드잇 최고
//4 코드잇 최고
//5 코드잇 최고
//6 코드잇 최고
//7 코드잇 최고
//8 코드잇 최고
//9 코드잇 최고
//10 코드잇 최고

 

10강. for문 Tip

for초기화부분에서 생성한 변수는 로컬변수로 전역변수가 필요할때는 while문 사용

for (let i = 1; i <= 10; i++) {
  console.log(`${i} 코드잇 최고!`);
}

//추가동작부분을 꼭 채울 필요는 없다.
for (let i = 1; i <= 10;) {
  console.log(`${i} 코드잇 최고!`);
  i++;
}

//초기화부분에서 생성한 변수는 for문의 로컬변수이다.
for (let i = 1; i <= 10; i++) {
  console.log(`${i} 코드잇 최고!`); //for문내에서만 유효
}

console.log(i); // Error !!

//초기화부분도 반드시 채울 필요는 없지만 ;는 필수!
//글로벌변수로 활용
let i = 1; 
for (; i <= 10; i++) {
  console.log(`${i} 코드잇 최고!`);
}

 

11강. for문 연습하기

//1-100 중 짝수 출력하기
//내 풀이
for(let i = 1; 1<= i && i <=100; i++){
  if( i%2 == 0 ){
    console.log(i);
  }
}


//1. i를 1부터 100까지 반복하면서 2로 나눴을 때 나머지가 0일 때만 i를 출력하는 방법
//2. i를 1부터 50까지 반복하면서 i * 2를 출력하는 방법
//3. i를 2부터 100까지 반복하면서 i를 2씩 증가시키는 방법

 

12강. for문 더 연습하기

function printTriangle(height) {

	//star를 for문내에 정의할 때랑 밖에 정의할 때랑 결과가 다른 이유?
    //for문내에 있으면 증가한 *갯수가 하나로 리셋됨
	let star = '*';
	for ( let i = 0; i<height; i++){
	 	 console.log(star);
	 	 star= star+'*';
	}
}

 

13강. while문

전역변수가 필요할 때 for문 대신, (내가 이해한 방식) : if문 + for문 

//while문 (while statement)
while(조건부분){
  동작부분
}
//while문 -  i를 선언하는 초기화 부분이 없으므로 외부에서 전역변수로 선언해줘야함, 외부에서도 사용 가능
let i = 1;
while(i <=10){
 console.log(`${i} 코드잇 최고`);
 i++; //count
}


//for문 -  내부에서만
for(let i =1; i <=10; i++){
   console.log(`${i} 코드잇 최고`);
}
//while을 쓰는 경우 : 조건식이 있을 때, 반복문밖에서도 변수가 필요할 때
//30보다 큰수 중 가장 작은 7의 배수

let i = 30;
while(i%7 !==0){
 i++;
} 

console.log(i);

 

14강. while문 연습하기

//100이하 홀수 출력
let i = 1;
while( i <=100) {
  if(i%2 !==0){
    console.log(i);
  }
  i++;
}


//1. i를 1부터 100까지 반복하면서 2로 나눴을 때 나머지가 1일 때만 i를 출력하는 방법(내 답)
//2. i를 1부터 50까지 반복하면서 i * 2 - 1을 출력하는 방법
let i = 1;

while (i <= 50) {
  console.log(i * 2 - 1);
  i++;
}
//3. i를 1부터 100까지 반복하면서 i를 2씩 증가시키는 방법
let i = 1;

while (i <= 100) {
  console.log(i);
  i += 2;
}

15강. while문 더 연습하기

//180약수의 개수구하기
let i = 1;
let count = 0;
while(i<=N){
  if(N%i ===0){
    console.log(i);
    count++;
  }
  i++;
}console.log(`${N}의 약수는 총 ${count}개입니다.`)

 

16강. break와 continue

break : 해당부분에서 실행 중단

let i =1;
while(i <=10){
   console.log(i);
   i++;
   break; //while문 중단
}
//1


//while문
let i =1;
while(i <=10){
  console.log(i);
  if(i == 7){
  	break;
  }   
   i++;
}
//1
//2
//3
//4
//5
//6
//7


//for문
for(let i =1; i <=10; i++){
  console.log(i);
  if(i == 7){
  	break;
  }      
}
//1
//2
//3
//4
//5
//6
//7

continue : 동작을 건너뛰고 추가 동작으로 넘어감

for(let i = 1; i <=10; i++){
  if(i%2 ===0){
    continue; //나머지가 0일 때 건너뛰기
  }
  console.log(i);
}
//1
//3
//5
//7
//9


let i =1;
while(i <=10){
   if(i%2 ===0){
     i++; //continue아래에 있으면 증가되지않음
   	 continue;
   }
   console.log(i);
   i++;
}
//1
//3
//5
//7
//9

17강. break와 continue 익히기

18강. 구구단 만들기

//내 풀이
for(let i = 1; i<=9; i++){
  for(let j = 1; j<=9; j++){
    let result = Number(i) * Number(j); //${i * j}로 표현가능
    console.log(`${i} * ${j} = ${result}`);
  }
}

//+추가 while사용
let i = 1;
while (i <= 9) {
  let j = 1;
  while (j <= 9) {
    console.log(`${i} * ${j} = ${i * j}`);
    j++;
  }
  i++;
}

 

19강. 피보나치 수열

//for문
let previous = 0;
let current = 1;

for (let i = 1; i<=50; i++){
   console.log(current);
   let temp = previous; //previous값 저장
   previous = current;
   current = current + temp;
  
}
//which문
let current = 1;
let previous = 0;
let i = 1;

while (i <= 50) {
  console.log(current);
  let temp = previous;  // previous를 임시 보관소 temp에 저장
  previous = current;
  current = current + temp;  // temp에는 기존 previous 값이 저장돼 있음
  i++;
}

반응형