[정보처리기사_필기] 4-2. 프로그래밍 언어 활용 - 1

팔랑이·2023년 7월 10일
0

정보처리기사

목록 보기
13/20
post-thumbnail

131. 데이터 타입 (⭐️⭐️⭐️⭐️)

2) C, C++ 데이터타입 크기

  • char(문자) | 1 byte | -128~127
  • unsigned(부호없는 문자) | 1byte | 0~255
  • short(정수) | 2byte
  • int(정수) | 4byte
  • long(정수)| 4byte
  • long long(정수) | 8byte
  • float(실수) | 4byte
  • double(실수) | 8byte
  • long double(실수) | 8byte

예약어 'struct' 통해 int나 char같은 자료형 정의

3) JAVA 데이터타입 크기

  • char(문자) | 2 byte
  • byte(정수) | 1byte
  • short(정수) | 2byte
  • int(정수) | 4byte
  • long(정수)| 8byte
  • float(실수) | 4byte
  • double(실수) | 8byte
  • boolean | 1byte

132. 변수 (⭐️⭐️⭐️⭐️)

2) 변수명 작성 규칙(C) ⭐️⭐️⭐️

  • 영문자, 숫자, 언더바 사용 가능
  • 첫글자는 영어나 언더바 ok, 숫자는 불가능
  • 글자수에 제한 없음
  • 공백이나 특수문자 사용 불가능
  • 대소문자 구분
  • 예약어를 변수명으로 사용불가
  • 변수 선언시 끝에 세미콜론 붙이기

✓ 헝가리안 표기법: 변수명에 데이터 타입 명시하는 것

3) 기억 클래스

: 기억 영역 결정

C언어의 4가지 기억 클래스: auto, register, static, extern
명시 안하면 auto로 간주

✓ 가비지 콜렉터: JAVA에서, 선언만 하고 사용하지 않는 변수들이 차지하는 메모리공간 해제하여 다른프로그램이 사용할 수 있게 하는 것


133. 연산자 (⭐️⭐️⭐️⭐️)

1) 산술 연산자

  • ++ : 증가 연산자
  • -- : 감소 연산자

위 두개를 전치하면 먼저 변수의 값을 증감 후 연산, 후치하면 연산 후 증감

3) 비트 연산자

비트별(0,1) 연산하여 결과값을 얻음
ex) & (and), ^ (xor; 모든비트가 같으면 0, 하나라도 다르면 1), | (or), ~ (not)

3-1) 시프트 연산자

  • << : 왼쪽 시프트; 비트를 왼쪽으로 이동
  • >> : 오른쪽 시프트; " 오른쪽 "

연산자 우선순위 (증산시관비논조대순)
: 증감연산자 > 산술연산자(* / %) > 산술연산자 ( + / - ) > 시프트 연산자 > 관계 연산자 > 비트 연산자 > 논리 연산자 > 조건 연산자 > 대입 연산자 > 순서 연산자

4) 논리 연산자

: !(not) , && (and) , || (or)

5) 대입 연산자

: +=, -=, *=, /=, %=, <<=, >>=


134. 데이터 입출력 (⭐️⭐️⭐️⭐️)

서식 문자열

  • %d: 정수형 10진수 입출력
  • %u: 부호 없는 정수형 10진수 입출력
  • %o: 정수형 8진수 입출력
  • %x: 정수형 16진수 입출력
  • %c: 문자 입출력 (숫자 없으면 한문자만, 있으면 자리수만큼)
  • %s: 문자열 입출력 (숫자 없으면 다 출력, 있으면 자리수만큼)
  • %f: 소수점 포함하는 실수 입출력
  • %e: 지수형 실수 입출력

입출력 관련 수식

  • scanf("%3d", &a): 3자리(받는 데이터가 3자리 넘어도 3자리만 딱), 10진수, 입력받은 데이터를 변수 a에 저장
  • printf("%-8.2f", 200.2): 왼쪽부터 출력('-', 없으면 오른쪽부터), 8자리(기본 8자리 제공, 넘으면 넘는대로 출력, 남으면 빈공간), 소수점이하 2자리, 실수로 출력
  • java 표준 출력 3가지: System.out.printf(), System.out.print(), System.out.println()
  • 문자 'A' 는 아스키코드로 65 (이후 +1)
  • getchar(): 한문자 입력받음
  • gets(): 엔터 전까지 입력받음
  • putchar(): 한문자 출력
  • puts(): 문자열 출력 후 커서를 자동으로 다음 줄 앞으로 이동

138. 포인터

1) 포인터와 포인터 변수

포인터: 변수의 주소, C에서는 주소 제어할 수 있는 기능 제공
포인터 변수: 변수의 주소 저장할 때 사용하는 변수

  • 선언 시: 자료형 먼저 쓰고 변수명 앞에 간접연산자 *을 붙임 ex) int *a;
  • 변수의 주소 알아낼 때는 변수 앞에 번지연산자 &을 붙임 ex) a = &b;
  • 실행문에서 포인터 변수에 *을 붙이면 가리키는 값 나타냄 ex) c = *a;

예제

main()
{
int a = 50;					// 정수 a 선언, 50으로 초기화
int *b;						// 포인터 변수 b 선언
b = &a;						// 정수 a의 주소를 b에 할당
*b = *b + 20;				// b가 가리키는 값 => a의 값 즉 50

printf("%d, %d", a, *b);
}

// 70, 70

용도

  • 연결된 자료구조 구상하기 위해
  • 동적으로 할당된 자료구조 지정하기 위해
  • 배열을 인수로 전달하기 위해
  • 문자열을 표현하기 위해
  • 큰 배열에서 요소를 효율적으로 저장하기 위해
  • 메모리에 직접 접근하기 위해

2) 포인터와 배열

배열 위치 나타내는 첨자 생략하고 배열의 대표명만 지정하면 배열의 첫번째 요소의 주소를 지정하는 것과 같음.

main()
{
int a[5]; 				// 5개의 요소를 갖는 정수형 배열 a를 선언

int i;					// 정수형 변수 i 선언
int \*p;				// 포인터 변수 p 선언

for (i=0;i<5;i++)
	a[i] = i + 10;		// a[0]=10, ... , a[4]=14 할당
    
p = a;					// 포인터변수 = 배열의 대표명 -> 배열의 시작주소인 a[0]의 주소(&)를 p에 저장
for (i=0;i<5;i++)
	
    printf("%d", *(p+i));
}

// 10 11 12 13 14

C에서 int의 크기는 4byte이므로 한 배열 이후의 물리적 주소는 기존 위치에서 4byte 증가한 곳을 가리킨다. 즉,

a[0]의 물리적 주소가 1000일 때, a[1]의 물리적 주소는 1004, 이후는 1008, ... 이런식으로 4byte씩 증가하게 된다.


참고도서 📚
2022 시나공 정보처리기사 필기

profile
정체되지 않는 성장

0개의 댓글