본문 바로가기
공부 및 교육/정보처리기사 실기 이론

10장 프로그래밍 언어 활용 - 1. 데이터 입출력(C언어, Java, 헝가리안 표기법)

by whooops 2022. 7. 28.
반응형

[정보처리기사 실기 요약] 10장 프로그래밍 언어 활용 - 1. 데이터 입출력(C언어, Java, 헝가리안 표기법)

1. 데이터 입출력

1. 데이터 입출력
1. 데이터 입출력

1) 데이터 입출력의 개요

데이터 입출력은 키보드로부터 데이터를 입력받아 화면이나 파일로 출력하는 것을 의미한다. 이 섹션에서는 C와 Java의 기본적인 프로그램 구조를 이해하고 다음과 같은 내용이 포함된 프로그램 코드를 읽고 해석하는 방법을 배운다.

- 헝가리안 표기법

- 자료형

- C언어의 입출력 함수 : scanf, printf

- Java의 입출력 함수 : Scanner, nextInt, print, printf, println

- 서식 지정자와 제어 문자

- 연산자와 우선순위

 

2) C 언어 문제

[예제] 다음은 키보드로 6과 4를 입력받아 두 수의 덧셈 결과를 출력하는 프로그램이다. 출력 결과를 확인하시오.

① #include <studio.h>

② main( )

③ {

④     int i, j, k;

⑤     scanf("% d % d", &i, &j);

⑥     k = i + j;

⑦     printf("% d\n", k);

⑧ }

 

[코드해설]

① #include <studio.h>

C언어에는 함수들을 모아놓은 헤더 파일을 제공하는데 헤더 파일을 사용하려면 '#include <studio.h>'와 같이 include문을 이용해 선언한 뒤 사용해야 합니다. 'studio.h'는 표준 입출력과 관련된 함수를 정의해 놓은 헤더 파일입니다. 사용하는 함수에 따라 포함시켜야 할 헤더 파일이 다릅니다. 여기서는 '⑤의 scanf( )'와 '⑦의 printf( )' 함수를 사용하기 때문에 포함시켰습니다. 무슨 함수를 쓸 때 어떤 헤더 파일을 포함시켜야 하는지는 문제 풀이와 관계없기 때문에 기억해 둘 필요는 없습니다.

 

② main( )

모든 C 프로그램은 반드시 main( ) 함수가 포함되어 있어야 실행 가능합니다. 즉 'main( ){ }'은 모든 C 프로그램에 반드시 포함되어야 합니다.

 

③ {  ⑧ }

프로그램을 중간에서 끝내는 제어문이 없으면 무조건 { }은 짝을 이뤄서 움직입니다. 일종의 약속입니다.

 

④ int i, j, k;

'int'은 정수 자료형을 의미하는 예약어입니다. 이 프로그램에서 i, j, k는 정수형 변수로 사용하겠다는 의미입니다. 자료형 종류로는 int, long, short, float 등이 있습니다. C 프로그램 코딩 시 반드시 지켜야 될 사항은 반드시 세미콜론(;)으로 문장을 끝내야 합니다. C 프로그램에서는 세미콜론이 나올 때 까지를 한 문장으로 인식하여 컴파일하기 때문에 세미콜론이 없으면 에러가 발생합니다.

 

⑤ scanf("% d % d", &i, &j);

키보드로 입력받는 작업은 거의 scanf( ) 함수를 이용하므로 정확하게 알고 있어야 한다. '% d'가 두 개 이므로 대응하는 변수도 두 개입니다. 앞쪽의 '% d'는 '&i'에 뒤쪽의 '% d'는 '&j'에 대응됩니다. 그러니깐 i와 j는 각각 10진수를 입력받는다는 의미입니다. 문제에서 6과 4를 입력되었다고 가정하였기 때문에 i에는 6, j에는 4가 저장됩니다. 변수에 &(주소 연산자)를 붙였는데, scanf( ) 함수는 데이터를 입력받을 때 주소를 사용하기 때문에 주소 연산자를 사용한 것입니다.

 

⑥ k = i + j;

k에 i와 j를 더한 값을 저장하는 처리 문입니다. 6과 4를 더한 값이 k에 저장됩니다. 처리 문은 입출력을 제외하고 무엇인가를 처리하는 모든 문장을 의미합니다. 입출력문, 제어문도 일종의 처리 문이지만 별도로 구분해서 부르므로 이를 제외한 모든 문장을 처리 문이라고 볼 수 있습니다.

 

⑦ printf("% d\n", k);

C 프로그램에서는 화면으로 출력할 때에는 printf( ) 함수, 파일로 출력할 때에는 fprintf( ) 함수 등을 사용합니다. 여기서는 화면에 출력하므로 printf( ) 함수를 사용합니다. scanf( ) 함수와 마찬가지로 형식 변환 문자 '% d'는 k를 10진수로 출력하겠다는 의미이며, '\n'은 제어 문자로 출력 내용을 제어하는 문자입니다. '\'와 그 뒤 한문자는 출력하지 않고 그 문자에 정해진 명령대로 출력물을 제어합니다. '\n'은 한 줄을 띄우라는 의미이므로 k가 가지고 있는 값을 출력한 뒤 커서를 다음 줄로 옮기라는 뜻입니다.

 

[답] 10

 

3) Java 프로그램 문제

[예제] 다음은 입력받은 정수를 가지고 여러 연산을 수행한 후 출력하는 프로그램이다. 4가 입력되었다고 가정했을 때 출력 결과를 확인하시오.

① import java. util. Scanner;

② public class Test

③ {

④   public static void main (String [ ] args)

⑤   {

⑥      Scanner scan = new Scanner (System.in);

⑦      int a = scan.nextInt( );

⑧      System. out. printf("a*3 = % d\n", a*3);

⑨      System. out. println("a/2 = " + (a/2));

⑩      System. out. print("a-1 = " + (a-1));

⑪      scan.close( );

⑫   }

⑬ }

 

[코드해설]

① import java. util. Scanner;

Java에는 메서드(함수)를 모아놓은 클래스와 클래스를 모아놓은 패키지를 제공하는데, 패키지를 사용하려면 'import java.util.Scanner'와 같이 import문을 이용해 선언한 후 사용해야 합니다. 'java.util.Scanner'는 입력 함수를 모아놓은 Scanner 클래스가 java 패키지 안의 util 패키지에 있다는 것을 의미합니다. 여기서는 ⑥에서 객체 변수를 생성할 때 사용하기 때문에 포함시켰습니다.

 

② public class Test

java 프로그램은 아무리 작은 프로그램이라도 클래스 안에 속성(변수)과 메서드(함수)를 만들어서 실행해야 합니다.

* public class : 실행을 위해 클래스에 그대로 꼭 써야 하는 예약어입니다. C언어에는 이 부분이 없습니다.

* Test : 클래스 이름으로, 사용자가 원하는 이름을 임의로 지정하면 된다. 단 첫 글자는 대문자로 지정하는 것이 관례입니다.

 

③ { ⑬ }

③ { 에서 ⑬ } 까지는 Test 클래스의 범위입니다.

 

④   public static void main (String [ ] args)

모든 C 프로그램은 반드시 main( ) 함수로부터 시작해야 합니다. 마찬가지로 Java 프로그램은 실행용으로 만든 클래스 안에 반드시 main( ) 메서드가 있어야 여기서부터 실행이 시작됩니다. 여기서 main( ) 이 프로그램 실행 진입점이라고 합니다. 

그러니깐 ②,③,④,⑤,⑫,⑬번은 모든 Java 프로그램에 반드시 포함되어야 한다는 것입니다.

C 프로그램에서의 함수를 Java에서는 메서드라고 부릅니다.

 

* public static : ( ) main 메서드 앞에 반드시 써야 한다는 것을 알아둬야 합니다.

* void : 반환 값이 없다는 의미입니다.

 

⑤ { ⑫ }

⑤ { 에서 ⑫ }까지가 main( ) 메서드의 범위입니다.

 

⑥ Scanner scan = new Scanner (System.in);

Java에서는 키보드로 입력받은 값을 변수에 저장하려면 먼저 Scanner클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 이를 사용해야 한다. Scanner 클래스의 객체 변수 scan을 키보드로 입력받을 수 있도록 생성합니다.

 

* Scanner : 입력에 사용할 객체 변수를 생성할 때

* scan : 객체 변수명. 사용자가 임의로 작성해도 됩니다.

* new : 객체 생성 예약어로 그대로 적어줍니다.

* Scanner( ) : 클래스의 이름으로 그대로 적어줍니다.

* System.in : 표준 입력장치, 즉 키보드를 의미합니다. 키보드로부터 값을 입력받는 객체 변수를 생성할 것이므로 그대로 적어준다.

 

⑦ int a = scan.nextInt( );

정수형 변수 a를 선언하고, 키보드로부터 정수 값을 입력받아 a에 저장합니다. 문제에서는 4를 입력받았기 때문에 a에는 4가 저장됩니다.

 

* scan : 입력에 사용할 객체 변수 이름입니다. ⑥번에서 객체 변수 생성 시 사용한 객체 변수 이름과 동일해야 합니다.

* nextInt( ) : 입력받은 값을 정수형으로 반환합니다.

 

⑧ System. out. printf("a*3 = % d\n", a*3);

System 클래스의 서브클래스인 out클래스의 메서드 printf( )를 사용해서 출력한다는 의미입니다. printf( ) 메서드는 C 프로그램의 printf( ) 함수와 사용법이 동일합니다. a*3= 을 출력한 후 a*3의 값인 12를 정수로 출력합니다.

[결과] a*3 = 12

 

⑨ System. out. println("a/2 = " + (a/2));

println( ) 메서드는 값이나 변수의 내용을 형식 없이 출력한 후 커서를 다음 줄의 처음으로 이동합니다.

a/2 = 을 출력한 후 a/2의 값인 2를 출력합니다.

[결과] a*3 = 12

           a/2 = 2

 

⑩ System. out. print("a-1 = " + (a-1));

print( ) 메서드는 값이나 변수의 내용을 형식 없이 출력합니다. a-1 = 을 출력한 후 a-1의 값인 3을 출력합니다.

[결과] a*3 = 12

          a/2 = 2

          a-1 = 3

 

⑪ scan.close( );

객체 변수 scan에 배정된 메모리를 해제합니다. Scanner 클래스의 객체 변수는 임의의 메모리 영역을 확보해 사용하는 것이기 때문에 프로그램 종료 전에 close( ) 메서드를 이용하여 사용하던 메모리 영역을 해제해 줘야 다른 프로그램이 해당 영역을 사용할 수 있습니다.

 

 

4) 헝가리안 표기법(Hungarian Notation)

헝가리안 표기법이란 변수명 작성 시 변수의 자료형을 알 수 있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법입니다. 예를 들어 정수형 변수라는 것을 알 수 있도록 변수명에 int를 의미하는 i를 덧붙여 i_InputA, i_InputB, i_Result라고 표시합니다.

[예시] int i_InputA : 정수형 변수 / double d_Result : 배정도 실수형 변수

 

▷주요 자료형

종류 자료형 크기(C) 크기(java)
정수형 int 4 Byte 4 Byte
문자형 char 1 Byte 2 Byte
실수형 float 4 Byte 4 Byte
double 8 Byte 8 Byte

 

▷주요 서식 문자열

서식 문자열 의미
%d 정수형 10진수 입출력에 사용
%o 정수형 8진수 입출력에 사용
%x 정수형 16진수 입출력에 사용
%c 문자의 입출력에 사용
%s 문자열의 입출력에 사용
%f - 소수점을 포함한 실수의 입출력에 사용
- 출력 시 소수점 이하는 기본적으로 6자리가 출력됨

 

▷주요 제어 문자

제어문자 기능
\n 커서를 다음 줄의 처음으로 이동
\t 커서를 일정 간격 띄움
\0 널 문자 출력

 

▷연산자 우선순위

대분류 중분류 연산자 결합규칙 우선 순위
단항 연산자 단항 연산자 !(논리 not), ~(비트 not), ++(증가), --(감소), sizeof(기타) ▲높음























▼낮음
이항 연산자 산술 연산자 * / %(나머지)
+ -
시프트 연산자 <<  >>
관계 연산자 <  <=  >=  >
==(같다), !=(같지 않다)
비트 연산자 &(비트 and), ^(비트 xor), |(비트 or)
논리 연산자 &&(논리 and), ∥(논리 or)
삼항 연산자 조건 연산자 ? :
대입 연산자 대입 연산자 = += -= *= /= %= <<= >>= 등
순서 연산자 순서 연산자 .

 

10장 프로그래밍 언어 활용 - 1. 데이터 입출력(C언어, Java, 헝가리안 표기법)

이번 시간에는 C언어 문제풀이, Java 문제풀이, 헝가리안 표기법에 대해 알아봤습니다.

막상 문제를 풀어보니 생각만큼 쉽게 풀리진 않지만 좀 익숙해지면 괜찮을 것 같습니다.

다들 힘내서 정보처리기사 실기 시험 합격합시다!

 

반응형

댓글