11월 10일 공부일지
오늘 공부에 투자한 순수한 시간:3시간30분
학습한 개념 : 콘솔 프로그램 만들기
1. 콘솔은 무엇인가?
콘솔(console)= 글자만으로 컴퓨터와 대화하는 창을 말한다.
터미널같은 창을 콘솔이라고 부른다.
콘솔 프로그램은 버튼이나 그림같은 화면이 없고, 글자로 입력받고 글자로 결과를 보여주는 프로그램이다.
- 헷갈리기 쉬운점 : 브라우저 개발자 도구의 console 탭이나 console.log도 같은 의미이다.
2. 콘솔 프로그램 만들기 전에 터미널 용어 간단히 정리
pwd : print working directory 지금 내위치 보기
ls : list 현재 폴더 안의 파일 목록 보기
mkdir : make directory 폴더 만들기
cd : change directory 그 폴더로 들어가기
cd.. 한칸 위 폴더로 나가기
node 파일명 : js파일 실행하기
cat 파일 내용을 화면에 보여주는 명령어
3. 프로그램 구상
“오늘 뭐먹지”
입력: 한식 /중식/양식
처리: 해당 카테고리 메뉴 중 하나를 랜덤
4. 만들기
1) 터미널에서 생성
mkdir what-to-eat 폴더 만들어라
cd what-to-eat 그폴더로 들어가라
npm init -y package.json 파일을 만들어라 (결과물 파일)
2) vs코드에서 해당 폴더 열고 index.js 파일 생성
그리고 코드입력.
3) 메뉴를 카테고리별로 나누고, 해당 카테고리를 선택하면 그안에서 추천
상자형 보다는 객ㄱ체(서랍장)형태로 직접 만들기
개념: 객체는 {} 안에 내용물 쌍을 쉼표로구분해서 넣음
const category= {
한식 : [메뉴들을 나열]
중식: [
상자형태는
const 한식=[]
const 중식 =[]
AI 대화 내역 링크:
(링크 생성 방법)
4) console.log(process.argv); 실행할때 입력한 글자를 꺼내기 괄호는 그 글자 번호칸
[2]
process 지금 실행 중인 프로그램 자체
argv argument vector의 줄임말
argument 명령어 넘겨주는 값
vector 목록(여기선 배열)
: 지금 실행중인 프로그램에 넘겨준 값들의 목록
5) 메뉴 중 하나를 랜덤으로 고르기
처으엔 서랍속 메뉴가 전부나옴. 이걸 하나만 고르게 만들기
개념: Math.random()은 0이상 1미만의 아무 소수를 만든다. 실행할때마다 답이 달라진다.
안쪽부터 읽기
math js에 기본으로 들어있는 수학 도구 상자
.random() 그 상자의 숫자 만들기 기능
console.log() 괄호 안 값을 터미널 화면에 출력
Math.random() 수학 상자야, 랜덤 숫자 줘
Math floor(2.9) 수학 상자야, 소수점 버려줘 ->2.9의 소수점 버려줘 결과값 2
console.log(x) 콘솔 상자야, x 출력해줘
rl.question(…) 질문 도구야, 질문해줘
const menus = category[process.argv[2]];
2번칸의 카테고리이름을 메뉴상자에 담아라
const pick = Math.floor(Math.random() length);
pick 상자에 담아라 소수점을 버려라 랜덤으로 숫자달라 배열의 수
length 이걸 넣으면 자동으로 그 배열에 값이 몇개 들어있는지 알려준다.
5. 출력을 문장으로 바꾸기
지금은 메뉴 이름만 나오는데 이걸 처음 구상대로 오늘은 000어때요로 바꾸기
개념 글자 사이에 변수 값을 끼워 넣을때는 백틱을 쓰고, 변수 자리에 ${}을 쓴다.
`글자 ${변수} 글자`
console.log(`오늘은 ${menus[pick]} 어때요?`);
6. 구분선 만들기
repeat : 반복하다 라는 뜻
= .repeat(숫자)는 =를 그숫자만큼 반복
console.log("=".repeat(10));
구분선은 repeat로하고, 제목 앞 공백은 스페이스바로 직접 입력한다.
7. Readline 1단계 : 질문하고 답 받기
개념: readline은 node.js에 들어있는 질문도구이다. 질문을 띄우고 사용자가 입력후 enter를 칠때까지 기다렸다가, 답이 오면 정해둔 일을 한다.
const readline = require("readline"); 공구함을 가져와라
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 공구함에서 부품을 꺼내라 (클로드가 복사해서 쓰는 줄이라고 알려줌..)
*=> 그러면 이라는 뜻
rl.question(“질문”
(answer) => {…} 답이오면 answer에 담고 {}안에 실행
rl. close() 질문 도구 끄기(안끄면 프로그램이 안끝남)
8. 잘못된 입력 처리
if(조건) 아니면 else [] 실행
if 뒤에 앞에 썼던 const menus, const pick 내용을 여기에 넣음 그리고 기존꺼는 삭제 (중복 불필요)
9. 마음에 안드는경우 다시 이력
메뉴추천해주고 마음에드세요?(y/n) :n 하면 다시 추천 y하면 맛있게드세요!
함수 = 이름 붙인 할일 묶음
다시 뽑으려면 뽑고 -> 출력하고 -> 물어보고 여러번 실행해야 하기 때문에 묶어서 이름을 붙여두고 필요할 때 이름만 부르는것.
function 이름(). {} -> 할 일 묶음 만들기
이름{}; -> 부를때마다 묶음 실행하기
function recommend() {
const pick = Math.floor(Math.random() menus.length);
const phrasePick = Math.floor(Math.random() phrase.length);
console.log(`${phrase[phrasePick]} ${menus[pick]} 어때요?`);
recommend로 붂어서 뒤에 If에서 함수 부르기
그리고 else는 메뉴에없는걸 입력하는 그런메뉴는 없다는 안내멘트 나오게 입력.
-에러 읽는법
index.js:2 2번째 줄에 문제가 있음
^^^^^ 문제가 시작된 위치를 알려줌
syntaxError 문법에러(규칙을 어긴 글자)
Unexpeted string 여기서 문자열이 나올줄 몰랐다
오늘 잘한 점: 시간이 좀 걸렸지만 끝까지해서 간단하지만 1개 콘솔프로그램 완성했습니다.
오늘 부족했던 점: 아직 구조를 잡는게 쉽지가 않았습니다.
오늘 총평: vs코드에서 만들었습니다. 최대한 그냥 코드를 알려주고 입력하는것보다 생각해보려고 문제를 주고 푸는 형식으로 했습니다. 그런데 아직은 클로드없이는 코드짜는게 쉽지는 않았습니다. 계속 빈칸으로 질문형태로 했는데 모르는 부분이 있었습니다. 그래도 결과물 보니 뿌듯했습니다. 내일도 열심히 해보겠습니다.
여기에 파일을 드롭하세요
