이번에도 시나공 책을 기반으로 포스팅을 할 것이다.
다만 추상적으로 따라치지는 않고
남에게 설명할 수 있을 정도로 이해해서 남겨보도록 하겠다.
위에서 아래로 쭉쭉 읽는 프로그래밍에서, 제어문은 그 방향을 비트는 역할을 하는 명령문이다.
무한 반복을 한다던지, 어느 상태에서는 이런걸 한다던지 등등
그 사용성이 무궁무진하다.
제어문에는
for문, if문, while문, switch문 등등이 있는데,
하나만 쓰이는 일은 없고 죄다 섞여서 나온다.
각 제어문에 대해 기초를 배우고 싶다면
구글에 검색을 한번 해보자.
내가 기초에 대해 어줍잖게 쓰는 것은 읽는 분들에게도 나에게도 시간낭비 일 수 있다.
대신 실제 문제에 대한 내 해석을 아래에 써보도록 하겠다.
아래는 20년 10월 자바로 구현된 코드 문제이다.
public class Test {
public static void main(String[] args){
int a = 0, sum = 0;
while (a < 10) {
a++;
if(a % 2 == 1)
continue;
sum += a;
}
System.out.println(sum);
}
}
실행결과는 무엇일까?
한번 스스로 풀어보자.
아래는 코드에 대한 해석이다.
public class Test { // main() 메서드를 담고있는 클래스라서 public이 선언되어 있다.
public static void main(String[] args){
// 자바 코드의 시작은 main부터이다.
// main 메서드는 public한 상태로 있어야 한다. public은 '접근제한자'이다.
// static은 메모리와 관련된 것인데 정적클래스로 선언되었다? 라는 의미로 해석해보자.
// main값이 return을 가지면 이상해진다. 따라서 void 선언을 한다.
// 따라서 public static void main()은 반드시 필요한 명령어끼리 모여있는 형태이며,
// String[] args는 문자열을 배열로 사용하겠다는 의미이다.
// 즉 연속적인 문자열을 배열로 받는 정적 함수인 반환값 없는 main()을 선언하겠다! 라는 의미이다.
int a = 0, sum = 0; // 정수 a에 0을 할당, 정수 sum에도 0을 할당한다.
while (a < 10) { // (a < 10) 이 참일때까지 while문의 {}로 감싼 코드를 실행하겠다.
a++; // a를 후위연산으로 1 증가시켜준다.
if(a % 2 == 1) // a를 2로 나눈 나머지가 1이라면?
continue; // while문의 초기로 돌아간다. 즉 아래 코드는 실행하지 않는다.
sum += a; // 현재 sum의 값에 a를 더하고 재할당한다.
}
System.out.println(sum); // sum을 출력하고 줄바꿈한다.
// 여기에서는 while문이 끝나면 println으로 내려오게 된다.
}
}
한번 슥 읽어보고
아래를 보자.
정처기에서는 어짜피 손코딩으로 컴퓨터적 사고를 해서 문제를 풀어야한다.
그러므로 문제를 한번 읽고 파악해본 뒤 아래와 같이 표를 그려 하나하나씩 해쳐나가보는 것이 중요하다.
눈대중으로만 하다가는 어이없는 실수에 털릴 수 있기 때문이다.
위 로직의 설계도를 그려본 뒤, 테이블화하여 하나씩 컴퓨터가 연산하듯 적어준다.
그렇게한다면 실수를 최소화 할 수 있다.
마지막 코드는 sum을 출력하는 것이므로
30 이 출력된다!
'했던것들 > 정보처리기사' 카테고리의 다른 글
정보처리기사/JAVA/클래스(오버로딩, 오버라이딩) (0) | 2022.07.19 |
---|---|
정보처리기사/JAVA/클래스(생성자) (0) | 2022.07.19 |
정보처리기사/JAVA/데이터입출력 (0) | 2022.07.18 |
[요점정리] 2022년 정보처리기사 필기 4과목. 프로그래밍 언어 활용 (0) | 2022.04.21 |
[요점정리] 2022년 정보처리기사 필기 3과목. 데이터베이스 구축 (0) | 2022.04.21 |