그것이 비록 내가, 제 프로그래밍 언어와 같은 고등학교에서 C ++을 배웠다 이었다 더 "C +"와 같은, 이제 당신이 그것을 언급; 우리 cout는 콘솔과 파일에 텍스트를 쓰는 데 사용 되었지만 C 함수도 상당히 getch()좋아했습니다.
기본을 가르치는 가장 효과적이고 (그리고 아마도 재미있는) 방법은 목표 지향 커리큘럼을 사용하는 것입니다. 물건 출력, 키보드 입력, 간단한 파일 I / O 등을 보여주는 것으로 시작하십시오. 간단한 텍스트로 진행하십시오. 기반 게임 (또는 로보틱스 등가물). 그런 다음 "어떻게 X를 수행합니까?"라고 물으면 이미 본 예제에서 X를 분류 할 수 있습니다. 예를 들어 "먼저 Z에서했던 것처럼 사용자로부터 입력을 받아야합니다. 3D 그래픽 ",하지만 당신은 여전히 어떻게 설명 할 수 있을까 ..."X 가능성이 그들이, 예를 수행하기 위해 추가 지식을 필요로 뭔가 때문에 (분명히이 실제로는 쉽지 않다 " 것 높은 수준에서 작동 방법).
당신이 보여준 예제는 블랙 박스 복사 붙여 넣은 마술로 시작하며, 프로그래밍 퍼즐 조각이 천천히 이해되면서 신비가 풀립니다. 예를 들어, 학생들은의 기초를 if매우 빨리 배우지 만 부울식이 독점적 인 if조건 (클래식 if (blah) return true; else return false;코드로 이어지는) 내에서만 사용하도록 제한되지 않는다는 것을 인식하지 못할 것입니다 .
배열 또는 벡터를 컨테이너로 선택하는지의 미묘한 점은 처음에는 학생들과 관련이없는 것 같습니다. 벡터 / 배열은 단순히 많은 변수를 하나의 변수로 색인을 통해 액세스 할 수있는 방법입니다. 할 수있는 곳에 고착하십시오. 나중에도 포인터를 이해하지 못합니다. 그것은 당신이 설명하지 말아야한다는 것을 말하는 것이 아닙니다. 한 번에 모든 것을 설명 할 수 없으며 설명하는 내용이 완전히 흡수되지는 않습니다. 인간은 선형이 아니라 유기적으로 학습합니다. 운영자 과부하가 무엇인지 제대로 이해하기 전에 cout몇 년 동안 사용 했습니다 !
아, 그리고 반복을 두려워하지 마십시오. "이것은 우리가했던 Hello World 프로그램과 같습니다. 어떻게 콘솔에 텍스트를 썼는지 기억하십니까?" (아니 ...) "확실히하기 위해 다시 봅시다." ... 그리고 질문하십시오! 학생들에게 재미있는 예제와 많은 상호 작용을 계속하십시오.
C ++은 복잡한 언어이며, 무엇을 하든지 학생들의 복잡한 정도 (및 일반적으로 프로그래밍 기술의 상당 부분)를 잃게됩니다. 당신이 그들에게 보여주는 모든 것은 그들에게 새로운 것입니다; 그것의 대부분은 깊은 이해 수준에 빠지지 않을 것입니다 (적어도 즉시는 아닙니다). 메모리 작동 방식, PC 구성 요소의 상호 작용 방식, 스택 및 힙 구성 요소, 포인터, 클래스, 심지어 루프 및 if-else 체인 은 대다수 가 제대로 이해하지 못합니다 . 괜찮습니다! 그것들은 사용되는 것으로 이해 될 필요가 없습니다. 놀라운 4 개의 멋진 프로그램은 5 배의 중복 중복 if과 같은 이름의 43 개의 변수를 가진 아주 못생긴 1000 줄 함수로 작성 될 수 있습니다 x_2r. 중요한 것은 학생들이 끊임없이 배우고 개선하고 있다는 것입니다. 블랙 박스는 장기적으로 투명 해 지거나 (적어도 반투명 한 회색) 괜찮습니다. 과정이 끝나면 디자인 패턴이 무엇인지 알지 못할 수도 있지만 처음 몇 주 동안 작성한 프로그램을 되돌아보고 코드를 울릴 수 있어야 합니다. 그들은 그들이 작성한 첫 번째 프로그램이 실제로 어떻게 작동하는지에 대해 상당한 수준의 세부 사항을 이해해야합니다. 그러나 그들은 모든 것을 알지 못합니다 – 아직 .