강의 내용
TPC(생각하기, 표현하기, 코딩하기) : 프로그래밍 언어를 접근하는 학습 방법
[1] 생각하기 : 사고 개념 정리
[2] 표현하기 : 메모리 이해하기
[3] 코딩하기 : 구현하기
[1] 생각하기 : 사고 개념 정리
문제의 핵심 단어를 유추해가며 프로그램이 어떻게 만들어질지를 생각해보는 단계(사용자 입장X → 개발자 입장O)
질문을 던지며 문제를 접근하는 방법을 생각하는 시간
프로그램 요소들의 관계를 이해하기 위함
Q. 자바 프로그램(프로그래밍 언어)을 이용하여 두 개의 정수를 더하여 결과를 출력하는 프로그램을 만들어보자.
자바 언어로 덧셈 기능을 갖는 프로그램을 만드려면 어떻게 해야 할까?
어떤 요소들이 필요? 요소들을 어떻게 연산? 결과를 어디에 보관? 데이터를 어디에 출력?
프로그래밍 언어 : 사람과 컴퓨터가 소통하려면 어떤 언어를 사용해야 할까?
사람 ↔ 컴퓨터 : 프로그래밍 언어를 통해 소통(Java, C, C#, Python 등)
사람 ↔ 사람 : 언어를 통해 소통(한글, 영어, 일본어, 중국어 등)
두 개 : 실제로 처리해야 할 데이터의 개수는 몇개일까?
정수 : 처리해야 할 데이터는 어떤 자료형일까?(자료형 : 정수(1, 2, 3), 실수(1.1, 1.2, 1.3) 등)
더하여 : 더하는 연산을 어떻게 해야 할까?(연산자(+, -, *, /) : 프로그램에서 연산을 하기 위해 필요)
결과 : 연산한 결과는 어디에 보관해야 할까? (메모리, 파일, DB)
출력 : 결과는 어디에 출력해야 할까? (콘솔(Dos), GUI, Web)
[2] 표현하기 : 메모리 이해하기
생각하기에서 생각한 부분을 그림이나 도구를 통해 표현하는 단계(메모리 관점)
생각한 내용이 실제 프로그램에서 어떻게 동작될지를 구체적으로 표현하는 시간
프로그램이 메모리에서 어떻게 동작 되는지를 이해하기 위함
[1] + [1] = [2] : 총 3개의 기억 공간 필요(통으로 된 메모리 안에 3개의 기억 공간을 만들어야 함)
프로그램은 메모리에서 동작하기 때문에 데이터는 컴퓨터 메모리안에 기억되어야 한다.
두 개, 정수 : 두 개의 데이터를 저장할 기억 공간 필요
결과 : 두 개의 정수를 더한 결과를 저장할 기억 공간 필요
기억 공간
RAM(반도체 칩) : 전체를 저장할 수 있는 용량(4GB/8GB/16GB) 존재
용량을 번지별로 구분하며, 그 안에 기억 공간을 만들어 사용한다.
예) 아파트 20층
각각 층별로 개별 공간이 하나씩 할당된다.
개별 공간 하나에(기억 공간 안에) 사람들이 거주하게 된다.
기억 공간 = 개별 공간 하나
자료형
변수에 어떤 종류의 데이터를 넣을 것인지를 결정하는 것
변수를 만들때는 기억 공간에 어떤 종류의 데이터를 넣을 것인가가 결정되어야 함
변수
기억 공간의 이름(symbol)
기억 공간의 번지를 가리키는 역할
기억 공간에 데이터를 집어넣으려면 이름을 통해 집어넣어야 한다.
기억 공간을 만들 때 기억 공간에 접근하기 위한 이름도 적어줘야 함
대입, 할당
변수 안에 데이터를 저장(대입/할당)하는 것
[3] 코딩하기 : 구현하기
표현한 부분을 실제 자바 언어로 구현하는 단계(코딩)
FSA 단계를 반복하며 코딩을 자연스럽게 습득하는 시간(주어진 문제를 구현하는 연습)
FSA 단계
따라하기(강사주도) → 스스로 하기(강사 + 자기주도) → 응용하기(자기주도)
따라하기(Follow Coding) : 강사주도(해설을 따라해보며 동작을 이해하는 단계)
스스로 하기(Self Coding) : 강사 + 자기주도(중요한 부분을 지운 다음 메꿔가며 프로그램을 시간의 흐름에 따라 이해하는 단계)
응용하기(Apply Coding) : 자기주도(문제를 변형시켜 자기 주도적으로 해결하는 단계)
나는 항상 문제를 볼 때 어떻게 접근해야 할까?라는 생각을 단 한번도 한 적이 없다.
무작정 코드부터 작성하려하니까 문제는 제대로 풀지 못하고, 머릿속은 정리가 되지않았다.
다른 사람의 풀이를 봐도 응용을 하지 않고 끝내니 악순환이 반복되었다.
책을 읽다보면 "어떻게 이 문제를 해결할지 생각하시오"라는 문장이 와닿는 강의였다.
그동안 생각하는 시간도 없이 사고력이 저절로 갖춰지기를 바라는 욕심만 가득했다.
생각은 또 어떻게 시작해야 할지 막막했는데 핵심 단어를 나열하여 접근하는 방법을 적극 활용할 생각을 하니 기대가 된다.
이 강의를 통해 내 생각을 정리하며 문제를 푸는 연습을 해나가야지.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N
'Java > [패스트캠퍼스] 100% 환급 챌린지' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 5일차 미션 (2월 5일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기 (0) | 2024.02.05 |
---|---|
패스트캠퍼스 환급챌린지 4일차 미션 (2월 4일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기 (0) | 2024.02.04 |
패스트캠퍼스 환급챌린지 3일차 미션 (2월 3일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기 (0) | 2024.02.03 |
패스트캠퍼스 환급챌린지 2일차 미션 (2월 2일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기 (0) | 2024.02.02 |
[서론] 시그니처 백엔드 Path 초격차 패키지 Online. (0) | 2024.02.01 |