(C#) 15. 코드의 흐름 제어 (factorial)
같은 계산을 반복문과 재귀로 각각 짜봤다. 13!부터 int가 넘치는 것, 재귀가 깊어지면 잡을 수 없는 예외로 죽는 것, 음수를 넣으면 1이 나오는 문제를 확인했다.
같은 계산을 반복문과 재귀로 각각 짜봤다. 13!부터 int가 넘치는 것, 재귀가 깊어지면 잡을 수 없는 예외로 죽는 것, 음수를 넣으면 1이 나오는 문제를 확인했다.
안쪽 루프의 횟수를 바깥 변수에 맞추면 삼각형이 나온다. 줄 번호와 개수의 관계를 어떻게 잡는지, 역삼각형과 피라미드로 확장하는 법, 루프 없이 한 줄로 쓰는 법까지 정리했다.
이중 루프를 처음 써본 예제. 바깥과 안쪽 루프가 각각 무엇을 세는지, 루프 순서를 바꾸면 출력이 어떻게 달라지는지, 표처럼 가로로 찍으려면 무엇이 필요한지 정리했다.
같은 이름의 함수를 여러 개 두는 오버로딩과 기본값 매개변수. 반환형은 구분에 안 쓰인다는 것, 둘을 섞으면 어느 쪽이 불리는지 애매해지는 것, 기본값이 호출부에 박힌다는 것을 확인했다.
값을 복사해 넘기는 기본 동작과 ref/out의 차이를 Swap과 Divide로 확인했다. 클래스를 ref 없이 넘겼을 때 멤버 수정은 반영되는데 재할당은 안 되는 이유까지 정리했다.
반복되는 코드를 함수로 묶으면서 확인한 것. 매개변수가 복사본이라 안에서 바꿔도 밖이 안 바뀐다는 점과, static이 붙은 이유, 클래스 이름을 생략할 수 있는 조건을 정리했다.
소수 판정으로 break를, 배수 찾기로 continue를 확인했다. 1을 넣으면 소수로 나오는 버그, while에서 continue가 무한 루프가 되는 이유, 중첩 루프에서 break가 하나만 빠져나오는 문제를 정리했다.
while로 쓰던 반복을 for로 옮기면서 확인한 것. 초기화·조건·증감을 한 줄에 모으는 것 말고도 반복 변수의 수명이 달라진다는 점, 실수로 무한 루프가 되는 형태를 정리했다.
조건이 참인 동안 반복하는 while과, 최소 한 번은 실행하는 do-while의 차이. 입력 루프에서 ReadLine이 null을 돌려줄 때 무한 루프가 되는 문제까지 확인했다.
지금까지 배운 것을 합쳐 만든 첫 프로그램. 숫자가 아닌 입력에서 그대로 죽는 문제, 범위 밖 값이 조용히 통과하는 문제, 그리고 9갈래 중첩 if를 나머지 연산 한 줄로 줄인 과정을 남긴다.