목록전체 글 (70)

앞 포스팅에서는 Array의 기초적인 사용법에 대해 이것저것 설명했다. 이번에는 좀 더 자세하게 들여다보기 위해 주소를 찍어가면서 메모리 배열이 어떻게 되어있는지 살펴보고 함수 파라미터에 넣었을 때 어떻게 차이가 나는지 주의할 부분 위주로 보자. 이전 포스팅에 이어서 주소를 찍어보자! 물론 Array의 element들의 주소도 찍어 볼 수 있다. 그리고 students_scores의 사이즈도 출력해보면 밑에 20 * 4 니까 사이즈가 80 나오는 것은 확인되었다. 16진수는 보기 불편하니까 10진수로 보기 위해서 int로 강제 casting 해보자 이렇게 해서 실행해보면 여기서 알 수 있는 것은 students_scores array 변수 자체는 내부적으로 첫 번째 주소를 갖고 있다. [0]을 찍으면 얘..

배열 Array 배열(Array)는 단일 식별자를 통해 같은 자료형의 여러 변수에 접근 할 수 있게 해주는 집계 데이터 유형이다. 배열은 같은 자료형의 변수를 일렬로 늘어놓은 형태이며, 반복문과 결합하면 연속적이고 반복되는 값을 손쉽게 처리 할 수 있다. 배열의 기초적인 사용법에 대해 살펴보자. - 자료형 배열 이름[배열 길이]; 많은 학생의 성적을 기록하는 프로그래밍을 하고 싶을 때를 생각해보자! 지금 까지 배워온 방식으로는 여러개의 변수를 선언하는 방법밖에 없다. 이렇게 할 경우 여러가지 문제가 있다. 이름이 다 들어가있으니 기억하기도 힘들고 일관성도 없다. 그 다음 생각해 볼 수 있는 방법은 이 방법도 역시나 불편한 것은 마찬가지이다. 이럴 때 배열을 사용하면 된다. int one_student_s..

std::cin cin은 콘솔에서 텍스트 입력을 받을 때 유용하게 사용 할 수 있다. 그런데 내가 만든 프로그램을 사용자가 의도하지 않은대로 사용했을 때 즉 의도하지 않은 입력이 들어왔을 때 어떻게 대응해야 할까? [EX 1] 간단한 샘플 프로그램을 보자 정수 하나를 getInt 함수에서 cin으로 받고 있다. getOperator 에서는 -, + operator를 문자로 받는다. 사용자가 더하기나 빼기를 입력 할 수 있다. y도 getInt에서 받고 있다 printResult 함수에서는 입력받은 내용에 맞춰서 실행을 시킨다. 실행시켜보면 하지만 숫자를 한개만 넣으라고 했는데 두개 넣는 사람이 있을 수 있다. 원래 사용자들은 프로그래머의 의도와는 상관없이 사용한다. -> 문제발생 아래와 같이 숫자를 두개..

난수 생성 Random Number Generation 게임에서 가상캐릭터가 항상 같은 행동을 한다면 재미없다. 이럴 때 난수를 이용해서 마치 실제 캐릭터가 행동하는 것처럼 더 재밌게 만들 수 있다. 컴퓨터는 본질적으로 예측 가능한 결과를 산출하도록 설계되어 있다. 따라서 컴퓨터는 일반적으로 난수를 생성 할 수 없다. 대신 의사 난수 생성기(pseudo-random number generator)를 사용해서 가장 자주 수행되는 난수를 시뮬레이션 해야한다. 의사 난수 생성기(pseudo-random number generator:PRNG)는 시드(seed)라고 하는 시작 번호를 가지고 시드에 관련 없는 것으로 보이는 다른 번호로 변환하기 위해 수학 연산을 수행하는 프로그램이다. 그런 다음 생성된 숫자를 가..

break break 문은 do, for, switch, while 문을 종료시킨다. Breaking a switch switch 문에서, 각 case 끝에는 case가 완료되었음을 나타내기 위해 break 문을 사용한다. switch (ch) { case'+': doAddition(x,y); break; case'-': doSubtraction(x,y); break; case'*': doMultiplication(x,y); break; case'/': doDivision(x,y); break; } [EX 1] while문에서 쓰인 break break문은 무한 루프를 벗어날 때도 사용할 수 있다. [EX 2] break vs return 초보 프로그래머는 종종 break 와 return 문의 차이를 어..

for 문 for statement C++에서 가장 많이 사용하는 반복문은 for 문이다. for 문은 각 반복 후에 루프 변수의 값을 쉽게 정의, 초기화 및 변경 할 수 있기 때문에 반복해야 하는 횟수를 정확히 알고 있을 때 사용하기 좋다. for(초기식; 조건식; 변화식) statement // 반복할 명령문 for 문과 while 과 do-while 의 차이점은 do-while은 무조건 한번은 돈다. while문 과 for 문 차이는 while문은 일단 돌리고 보자 무한루프일 때 많이 쓴다. for문은 반복횟수가 딱 정해져 있을 때 쓰기 좋다. for문과 while 문은 상호변환이 가능하다. Evaluation of for statements for 문은 세 부분으로 평가된다. 1. 초기식 평가 :..

do-while 문 (do-while statement) 루프의 한 가지 흥미로운 점은 루프 조건이 초기에 거짓인 경우에는 루프가 전혀 실행되지 않는다는 것이다. 메뉴를 표시할 때와 같이 루프가 적어도 한번 실행되기를 원하는 경우가 있다. 이를 위해 C++은 do while 문을 제공한다. do statement while (condition); while 문과 do-while 문의 차이는 while 문은 조건에 따라서 한번도 실행이 안되고 끝날수도 있는데 do-while 문은 처음에 한번은 무조건 실행하게 되어있다. 문이 실행된 후 do-while 루프는 조건(condition)을 검사한다. 조건이 true이면 실행 결로가 do-while 루프의 맨 위로 돌아가서 다시 실행된다. 보통 for문을 많이 ..

while 문 (while statement) while 문은 C++에서 제공하는 네 가지 루프 중 가장 단순하며 if 문과 매우 유사하다 while(expression) statement; 보통 반복문으로는 for문을 많이 쓰지만 대부분의 교과서가 while 문을 먼저 공부하기 시작한다. 그리고 goto 문을 다루기도 한다. 다 연결된 측면이 있음 for문을 더 많이 사용하는 것이 현실이지만 while 문을 꼭 써야하는 경우가 있다. 물론 while문, do-while문, for문 모두 호환은 가능하다 편의성 측면에서 보았을 때 각각 다르게 편할 때가 있다. [EX 1] 간단한 예제를 살펴보자 지금까지 0부터 10까지 출력을 한다고 하면 이런식으로 코딩을 했어야 했는데 반복문을 쓰게 되면 많이 쉬워진다..