정화 코딩

[Back-end] codeit : 프로그래밍 핵심 개념 in JavaScript 본문

Web Development

[Back-end] codeit : 프로그래밍 핵심 개념 in JavaScript

jungh150c 2024. 5. 21. 01:15

문자열 실습 1

console.log("한국 영화 역사상 아카데미상을 받은 것은 '기생충'이 처음이다.");
console.log('아리스토텔레스는 "인간은 사회적 동물이다."라고 말했다.');

 

문자열 실습 2

console.log(`영화 '베테랑'에서 "어이가 없네~"라는 대사가 유명했다.`);

 

불린형

console.log(3 === 3); // 일치   (형변환 X)
console.log(3 !== 3); // 불일치 (형변환 X)

console.log(3 == 3); // 동등    (형변환 O)
console.log(3 != 3); // 부등    (형변환 O)

console.log(2 === '2');  // false (=== : 엄격한 비교)
console.log(2 == '2');  // true (== : 덜 엄격한 비교)

 

연산자 우선순위

() > ! > typeof > ** > * > / > % > + > - > '<' > '<=' > '>' > '>=' > '==' > '!=' > > '===' > '!==' > && > || > =

 

형변환

// 숫자 -> 문자
let a = 123;
console.log(String(a)); // 123

// 불린 -> 문자
let b = true;
console.log(String(b)); // true

// 문자 -> 숫자
let c = '문자';
console.log(Number(c)); // Nan
let d = '123';
console.log(Number(d)); // 123

// 불린 -> 숫자
let e = true;
console.log(Number(e)); // 1
let f = false;
console.log(Number(f)); // 0

// 문자 -> 불린
let g = '';
console.log(Boolean(g)); // false

// 숫자 -> 불린
let h = 0;
console.log(Boolean(h)); // false
let i = NaN;
console.log(Boolean(i)); // false

 

템플릿 문자열 실습

function calcWage(name, time, wage) {
  let total = time * wage;
  console.log(`${name}님의 근무 시간은 총 ${time}시간이며, 최종 급여는 ${total}원 입니다.`);
}

// 테스트 코드
calcWage('김윤식', 208, 11340);
calcWage('성규재', 175, 12160);
calcWage('손태웅', 161, 13070);
calcWage('허우선', 222, 10980);

 

null과 undefined

null : 의도적인 없음

undefined : 처음부터 없음 (선언 후 초기화 X)

 

실습 - 자료형 응용

// 숫자형과 문자열 재료
let material1 = 3;
let material2 = '3';
let material3 = 10;
let material4 = '4';
let material5 = 4;

// 연산 결과
let result1;
let result2;

// 연산을 통해 result1에 문자열 '34'를, result2에 숫자형 34를 할당
result1 = material2 + material4;
result2 = material1 * material3 + material5

// 테스트 코드
console.log(result1);
console.log(typeof result1);
console.log(result2);
console.log(typeof result2);

 

실습 - 함수 부려먹기 1

function logParticipant(name) {
  console.log(`${name}(이)가 대화에 참여했습니다.`);
}

// 테스트 코드
logParticipant('동수');
logParticipant('윤하');
logParticipant('재준');
logParticipant('동훈');
logParticipant('영희');
logParticipant('신욱');

 

실습 - 함수 부려먹기 2

function expressMultiplication(x, y) {
  console.log(`${x} * ${y} = ${x * y}`);
}

// 테스트 코드
expressMultiplication(3, 4);
expressMultiplication(3, 2);
expressMultiplication(7, 5);
expressMultiplication(8, 9);
expressMultiplication(5, 5);
expressMultiplication(9, 9);

 

return문의 두 가지 기능

1. 함수 호출 부분에 어떤 값을 되돌려 준다.

2. 함수 자체의 실행을 중단한다. 

 

return문과 console.log의 차이 실습

function first() {
    let message = "코드잇"; 
    return message;
}

function second() {
    let message = "codeit";
    console.log(message);
}

function third() {
    let message = undefined;
    console.log(message);
}

// 테스트 코드
console.log(first());
second();
console.log(third());

 

실습 - 함수 부려먹기 3

// 직사각형의 넓이를 계산하는 함수
function calculateRectangleArea(width, height) {
  return width * height;
}

// 테스트 코드
let area1 = calculateRectangleArea(3, 4);  // 가로 3, 세로 4인 직사각형의 넓이 계산
let area2 = calculateRectangleArea(5, 8);  // 가로 5, 세로 8인 직사각형의 넓이 계산
let area3 = calculateRectangleArea(7, 2);  // 가로 7, 세로 2인 직사각형의 넓이 계산

console.log(`Area1: ${area1}, Area2: ${area2}, Area3: ${area3}`);

 

실습 - 세트 메뉴 주문하기

// optional parameters
function orderSetMenu(sandwich, drink = '스프라이트') {
  console.log(`주문하신 ${sandwich}, ${drink} 세트 메뉴 나왔습니다!`);
}

// 테스트 코드
orderSetMenu('코드웨잇 클럽');
orderSetMenu('터키베이컨 아보카도', '코카콜라');
orderSetMenu('코드웨잇 멜트');
orderSetMenu('이탈리안 비엠티', '닥터페퍼');
orderSetMenu('에그마요', '환타 오렌지');

 

변수의 scope

let x = 3; // global variable (전역 변수)

function myFunction() {
  let x = 5; // local variable (지역 변수)
  console.log(x);
}

myFunction(); // 5
console.log(x); // 3

 

상수

const PI = 3.14;
const MY_NUM = 1234;

 

실습 - 함수 변수 복습

// 아래에 adultTag, teenagerTag, errorTag, transferTag라는 변수들을 작성해 주세요
let adultTag = "삑!";
let teenagerTag = "삑삑!";
let errorTag = "삑삑삑!";
let transferTag = "환승입니다.";

// 아래에 tagCase파라미터를 가지는 tagNotification() 함수를 작성해 주세요
function tagNotification(testCase) {
  console.log(testCase);
}

// 테스트 코드
tagNotification(adultTag);
tagNotification(teenagerTag);
tagNotification(transferTag);
tagNotification(errorTag);
tagNotification(adultTag);

 

실습 - 롤러코스터

// 파라미터 height을 활용하는 checkHeight 함수를 완성하세요
function checkHeight(height) {
	if (height >= 140) {
	  console.log("탑승이 가능합니다.");
	}
	else {
	  console.log("탑승이 불가능합니다.");
	}
}

// 테스트 코드
checkHeight(140);
checkHeight(135);
checkHeight(170);

 

실습 - 학점 계산기

function printGrade(midtermScore, finalScore){
  let totalScore = midtermScore + finalScore;
  if (totalScore >= 90) {
    console.log("A");
  }
  else if (totalScore >= 80) {
    console.log("B");
  }
  else if (totalScore >= 70) {
    console.log("C");
  }
  else if (totalScore >= 60) {
    console.log("D");
  }
  else {
    console.log("F");
  }
}

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

 

실습 - 서열 정리

// 나의 나이와, 나의 성별을 저장하는 변수
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) {
    if (yourGender === 'male') {
      return callYoungerBrother;
    }
    else {
      return callYoungerSister;
    }
  }
  else {
    if (yourGender === 'male') {
      return callOlderBrother;
    }
    else {
      return callOlderSister;
    }
  }
}

// 테스트 코드
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);

 

실습 - 등급별 티켓 가격

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

// 각 등급에 맞는 가격을 출력하는 함수 checkPrice를 완성하세요
function checkPrice(grade) {
	switch (grade) {
	  case 'VIP':
	    console.log('VIP석은 15만 원입니다.');
	    break;
	  case 'R':
	    console.log('R석은 13만 원입니다.');
	    break;
	  case 'S':
	    console.log('S석은 10만 원입니다.');
	    break;
	  case 'A':
	    console.log('A석은 8만 원입니다.');
	    break;
	  default:
	    console.log('VIP, R, S, A 중에서 하나를 선택해 주세요.');
	    break;
	}
}

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

 

for 반복문 실습 1

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

 

for 반복문 실습 2

function printTriangle(height) {
	for (let i = 1; i <= height; i++) {
	  let stars = "";
	  for (let j = 0; j < i; j++) {
	    stars += "*"
	  }
	  console.log(stars);
	}
}

// 테스트 코드
console.log('높이: 1');
printTriangle(1);

console.log('높이: 3');
printTriangle(3);

console.log('높이: 5');
printTriangle(5);

 

while 반복문 실습 1

let i = 0;

while (i < 50) {
  console.log(2 * i + 1);
  i++;
}

 

while 반복문 실습 2

const N = 180;

let cnt = 0;
let i = 1;

while (i <= N) {
  if (N % i === 0) {
    console.log(i);
    cnt++;
  }
  i++;
}

console.log(`${N}의 약수는 총 ${cnt}개입니다.`);

 

break와 continue

break : 해당 조건 만족 시, 반복문을 빠져 나온다. 

continue : 해당 조건 만족 시, 실행 중인 동작을 건너뛰고 다음 동작을 수행한다. 

 

실습 - 구구단 만들기

for (let i = 1; i < 10; i++) {
  for (let j = 1; j < 10; j++) {
    console.log(`${i} * ${j} = ${i * j}`);
  }
}

 

실습 - 피보나치 수열

let num1 = 1;
let num2 = 1;
let tmp = 0;

console.log(num1);
console.log(num2);

for (let i = 0; i < 48; i++) {
  tmp = num2;
  num2 = num2 + num1;
  num1 = tmp;
  console.log(num2);
}

 

Comments