목록강의 (4)
'강의' 태그의 글 목록
정말 잘 해주셨습니다. 드디어 한달간의 대장정을 마쳤네요. 여러분은 카렐 과정을 졸업하셨습니다. 여러분 중에는 프로그래밍과 코딩이 무엇인지도 모르는 상태로 시작한 분들이 많은데, 벌써 주어진 복잡한 과제를 풀기 위해 알고리즘을 구상하고 코딩하는 것까지 자유자재로 해내실 수 있게 되었다는게 놀랍습니다. 오늘은 여러분이 컴퓨터 과학을 계속 추구하신다면 어떤 옵션들이 있는지, 카렐 그 이후의 단계에 대해 얘기하고자 합니다. 카렐은 끝이 났어도 CS106A 과정은 끝이 아닙니다. 지금까지 카렐과 과제를 해결하시면서 여러분은 자기도 모르게 자바 프로그래밍 언어의 구문을 익히고 계셨습니다. 제가 다음에 돌아왔을때는 카렐의 세계에서 카렐의 문제를 해결해주는걸 벗어나 우리의 세계에서 사람들에게 유용한 프로그램들을 만들..
이번 주는 과제로 시작합니다. 이번 과제가 우리가 카렐과 마지막으로 함께 할 프로젝트이니 최선을 다 해주세요! 카렐 중앙 수색 과제는 설명하기 매우 쉬운 과제입니다. 카렐이 아래에서 첫번째 가로줄의 가운데를 찾아서 그 위에 비퍼를 놓으면 됩니다. 다른 규칙들은 아래와 같습니다:카렐은 참고로 왼쪽 아래 코너에서 오른쪽을 보면서 시작합니다. 중간 과정에서 비퍼를 다른 장소에 몇개를 놓아도 상관이 없지만, 마지막 상황에선 가운데에만 비퍼가 있도록 다른 비퍼들을 주워야 합니다. 중앙 수색 과제에서 카렐의 세계에는 세계 가장자리의 외벽 말고는 벽이 없으며, 세로 높이는 언제나 가로 넓이와 같거나 더 깁니다. 가로로 홀수 만큼의 칸이 있는 세계에서는 카렐이 가운데 칸에 비퍼를 놓아야하지만, 짝수 만큼의 칸이 있는 ..
이번 주는 새로운 프로그래밍 기능을 배우는 대신 스타일을 다듬어주는 테크닉과 프로그래밍 역사를 배워 지금 할 줄 아는 만큼을 완벽히 해낼 수 있도록 하는 것이 목적입니다. 그런 의미로 오늘은 현대 프로그래밍의 가장 핵심적인 개념인 객체 지향 프로그래밍 (Object-Oriented Programming)의 개념에 대해 배워보도록 하겠습니다. 1970년대 카렐이 만들어졌을때 프로그래밍 분야는 수행할 기능들의 순서를 중심으로 쓰는 "절차적 프로그래밍" 패러다임이 지배하고 있었습니다. 큰 문제를 풀기 위해 여러가지 "절차"들로 쪼개어 문제를 해결하는 방법이 절차적 프로그래밍입니다. 여러분도 이 접근법으로 기둥 수리 과제를 해결하였죠. 더 최근에 발표된 자바 같은 프로그래밍 언어들은 "객체지향 프로그래밍" 패러..
잘 지내셨나요? 저번 주 꽤 어려운 프로그래밍 테크닉을 많이 다뤄서 기둥 수리 과제에서 스타일보다 기능성에 집중하라고 조언드렸습니다. (기억을 상기시켜드리기 위해 다시 설명드리자면 "코드가 원하는 작동을 하는가"가 기능성, "코드를 남들이 봐도 읽고 이해하기 쉬운가"가 스타일입니다). 하지만 어렵고 복잡한 코드일수록 스타일의 중요성은 높은 법이죠. 이번 글에서는 코드를 읽기 쉽게 도와주는 두가지 테크닉 "인덴팅"과 "코멘팅"에 대해 배워보겠습니다. 위의 두가지 코드는 동일한 기능을 수행합니다. 컴파일 (검은색 달리는 사람 아이콘) 버튼을 눌러도 둘 다 완벽히 작동하죠. 하지만 오른쪽의 코드는 두번째 while 루프와 if문이 첫번째 while 루프 안에 있다는 것을 한 눈에 쉽게 볼 수 있게 해줍니다. ..