[목차]
1. 기초지식
2. 순서도 이해하기
3. 공단샘플문제
4. 문법
4-1 데이터 타입
4-2 변수
4-3 변수 선언
4-4 연산자
4-5 주요함수
4-6 제어문
4-7 배열
4-8 문자열
4-9 함수
4-10 구조체
4-11 기출문제, 기출예상문제 풀이
[기초 지식]
1. 컴퓨터를 사용하여 문제를 해결하기 위해서는 컴퓨터에게 문제 해결 방법과 절차를 지시해야 하는데, 이때 지시하는 명령어의 집합을 프로그램이라 하고, 작성하는 과정을 프로그래밍이라 한다.
2. bit(2의 1승 =2개) : 저장공간 하나에 2진수 형태 (0과 1) 로 값을 저장할 수 있기 때문 (표현할 수 있는 정보의 가지 수는 두 개)
> Byte(8bit / 2의 8승 256) > KB (Byte x 1,024) > MB > GB > TB
3. 컴퓨터는
전기적 신호, 전류가 흘러 작동을 하는데
높은 전압일 때는 1, 낮은 전압일때는 0
1은 5볼트 / 0은 1.5 볼트
4. Ascii 는 2의 7승 128개 대소영문자, 숫자, 특수 문자만 표현 거눙
Uni 코드 는 16비트, 최대 65,53자, 각 나라별 언어 모두 표현
[순서도 이해하기]
시험은 코드만 출시되지만 순서도를 이해하는게 중요함
[공단 샘플 문제]
1에서 10까지 덧셈 > ? 표를 채워라
#include <stdio.h>
main() {
int number;
int sum;
number=1;
sum=0;
while(?) {
sum=sum+number;
number++;
}
printf("\n1+2..+10=%d\n", sum);
}
number<=10
[문법]
1. 데이터 타입
공부 tip :
C와 C++ 기준으로 데이터 종류, 타입, 크기 암기 필요!
관련 문제 :
다음 중 정수형이 아닌것은? (20년 3회, 20년 4회 필기 기출)
1-1. 데이터 타입 (C/C++, 기본 단위 = byte)
정수형 : short(2) / int (4) / long (4) / long long (8)
부호 없는 정수형 : unsigned short (2) / unsigned int (4) / unsigned long (4)
실수형 : float (4) / double (8) / long double (8)
문자형 : char (1)
부호 없는 문자형 unsigned char (1)
참고:
int는 플랫폼에 따라 실제 크기가 달라짐
32비트 운영체제에서는 32비트(4 byte)
64비트 운영체제에서는 64비트 (8 byte)
참고 2:
바이트를 비르토 표현할 때는 곱하기 8
4 바이트는 32비트
8 바이트는 64비트
참고 3:
1 byte(char) 는 영문자 1자 크기
1-2 데이터 타입 (Java,기본단위 = byte)
정수형 : byte (1) / short (2) / int (4) / long (8)
실수형 : float (4) / double (8)
문자형 : char (1)
논리형 : boolean (1)
1-3 데이터 타입 (Python, 기본단위 = byte)
정수형 : int (크기 제한없음)
실수형 : float (8), complex (16)
문자형 : str (크기 제한없음)
* complex는 복소수(실수와 허수의 합)를 의미
2. 변수
정의 :
컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미한다.
저장하는 값에 따라 정수형, 실수형, 문자형 등으로 구분한다.
관련 문제:
다음 중 변수의 규칙이 아닌 것 / 맞는 것을 찾아라
변수명 작성 규칙:
- 영문자, 숫자 _를 사용
- 첫 글자는 영문자 또는 _를 사용하며, 숫자는 올 수 없다.
- 공백이나 *,+,- 등의 특수문자를 사용할 수 없다.
- 대/소문자를 구분한다.
- 예약어들은 변수명으로 사용할 수 없다.
- 변수 선언 시 문장 끝에 반드시 세미콜론을 붙여야 한다.
- 글자 수에 제한이 없다.
3. 변수 선언
#include <stdio.h>
int main() {
int count;
float b =5.3;
const char c = 'A';
b = 7.1
}
Constant(상수)
const 예약어는 변수를 상수로 변경하는 예약어 (C에서)
Java의 경우는 final
4. 연산자
4-1. 증가/감소 연산자
++A (전치) : A를 1증가 시킨 후 사용
A++ (후치) : A를 사용 후 1 증가
예)
int x = 10, y;
y = ++x; > x=11, y=11
y = x++; > x=11, y=10
4-2. 산술 연산자
사칙 연산자 : *, / , +, -\
나머지 연산자 : %
4-3. 논리 연산자
2개의 논리 값을 연산하여 True(1), False(0)결과 반환
&& : and (모두 True 면 True)
|| : or (둘 중 하나라도 T면 True)
! : not
4-4. 관계 연산자
>
>=
<
<=
A == B
A != B
중요 참고 :
A = B 와 A == B 차이
A = B의 경우 A와 B가 같다란 뜻이 아니라
우변의 값을 좌변에 대입한다는 뜻 (대입연산자)이고
A == B의 경우는 A와 B는 같다는 뜻!
고로 = 등호가 하나인 겨우는 반드시 대입 연산자로 읽어야 한다!
4-5. 할당(대입) 연산자
A+=B : A = A + B
A-+ B : A = A - B
A*=B : A = A * B
A/=B : A = A / B
4-6. 비트 연산자 (20년 3회 필기 기출)
비트 단위(0과 1)로 쪼개 생각하면 된다.
& : and = 두 비트가 모두 1일 때 1
| : or = 두 비트 중 하나라도 1이면 1
^ : xor = 두 비트가 같으면 0, 다르면 1
~ : not = 각 비트를 반전 (1이면 0, 0이면 1로 반전)
<< : 왼쪽 시프트
>> : 오른쪽 시프트
시프트 예제:
* 10진수를 2진수로 변환!
시프트 할 10진수 숫자를 2진수로 나눌때는 나누기 2 해서 나머지 값들을 역순으로 확인하면 된다.
예) 10진수 3의 경우, 00000000000000000000000000000011
시작하는 첫 번째 비트는 부호비트 > 음수 양수에 따라 양수(0보다 큰 수)면 0, 음수(0보다 작은 수)면 1로 시작
int a=3, b=6;
a << 1 : 3(0...011)을 왼쪽으로 1비트 시프트 : 0....110
b >> 1 : 6(0....110)을 오른쪽으로 1bit 시프트 : 00...011
*시프트 후 생기는 빈자리는 패딩비트(0)으로 채운다.
* 반대로 2진수에서 10진수 변환은
32,16,8,4,2,1(가중치) * 십진수 해서 나온 결과값 더하기
예) 2진수 1100 = 8+4+0+0 = 12
4-7. 조건 연산자 (20년 3회 필기 기출)
4-8. cast 연산자 (형 변환)
C언어에서 강제적으로 데이터형을 변환할 때 사용하는 연산자
4-9 siezof 연산자
5. 주요 함수
5-1. 서식 문자
%o : 8진수 (octal)
%d : 10진수(decimal)
%x : 16진수 (hexadecimal)
%c : 문자 (character)
% s : 문자열 (string)
5-2. 제어 문자
\n : new line (커서를 다음 줄)
\r : carriage return (커서를 해당 줄 맨 앞으로 이동)
\f : form feed (한 페이지 넘기기)
\b : backspace (커서를 해당 줄의 1 문자만큼 앞으로 이동)
\t : tab (커서를 그 줗의 tab 만큼 이동)
5-3. printf (출력 함수)
printf(서식 문자열, 변수);
5-4. scanf (입력 함수)
키보드로 데이터를 입력 받는다.
scanf(서식 문자열, 변수의 주소);
scanf(%d %d", &X, &Y);
6. 제어문
6-1. while 문 (조건이 거짓히면 한 번도 수행하지 않는다)
6-2. do while 문 (조건이 거짓이라도 한 번은 수행한다)
6-3. break 문 (while문과 같은 가장 가까운 루프를 벗어나는 명령어)
6-4. if 문 / for 문
int i=10;
int even=0;
int odd=0;
for (int k=1; k<=i, ++k)
{
if (K % 2==0)
even += K;
else
odd += K;
}
printf("%d %d", even, odd);
K = 1, i, 1 (초기치, 최종치, 증가치)
6-5. switch ~ case문 (20년 1회 실기 기출)
break문이 없는 경우 출력 값은?
switch 문 조건에 맞는 case 부터 종료될때까지 하위 모든 문장 실행
(case 뒤에는 새미콜론이 아닌 콜론이 들어간다 > case : )
6-6. continue 문
: 다음 반복을 실행하는 명령어
7. 배열 (Array) (20년 2회 필기 기출)
int main() {
int array[3] = {19, 23, 54};
for(int i=0; i<3; i++) {
printf("%d \n", array[i]);
}
}
7-1 이차원 배열
배열이름 [행][열];
int main() {
int array[3][4] = {
{19,23,54,44},
{55,22,33,55},
{11,22,33,66}
};
for(int i=0; i<3; i++) {
for(int j=0; j<4, j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
}
8. 문자열
C 언어에서는 문자열을 저장할 수 없다.
문자열을 저장하려면 문자 배열을 사용해야 한다.
char string = "taku daddy"; > X
char string[] = "taku daddy"; > O
printf("%s", string);
문자열을 출력해야 하기 때문에 %s
문자는 %c
9. 함수
표준 함수
사용자 정의 함수 : 리턴형 함수명() > 리턴값 없는 경우 void 처리
#include <stdio.h>
int multi(int x, int y){
return x * y;
}
void print(int x){
printf("%d \n", x);
}
main(){
int a;
a = multi(2,3);
print(a);
}
return 문 : 값을 돌려준다!
피 호출함수의 계산 결과를 호출 함수에 돌려주기 위해서 return문 사용이 필요하다.
피 호출함수의 중간에서 제어를 호출 함수로 옮기려고 할 때도 return문 사용.
(main() 에서 return 0 = 프로그램 정상적인 종료)
10. 구조체 (20년 4회 필기 기출)
: 데이터(변수)를 체계적으로 관리하기 위한 문법 (관련 정보를 하나의 의미로 묶을 때 사용)
- 자바 Class와 유사
- 배열과 달리 서로 가른 자료형 묶음 가능
struct PERSON {
char name[50];
int age;
char address[100];
};
=================================================================
#include <stdio.h>
#include <string.h>
struct PERSON { # 구조체 정의
char name[50];
int age;
};
int main() {
struct PERSON p1 = {"너구리", 33}; # 구조체 변수 선언ㄹ
struct PERSON p2;
strcpy(2p.name, "타쿠");
p2.age = 20;
struct PERSON p3[2] = {
{"돋단배",22},
{"돌고래",20}
};
printf("이름:%s 나이:%d\n", p1.name.p1.age);
printf("이름:%s 나이:%d\n", p2.name.p2.age);
printf("이름:%s 나이:%d\n", p3[0].name.p3[0].age);
}
typedef : 자료형 재정의
unsigned int temp; #이렇게 쓰면 번거롭기 때문에
typedef unsigned int KWS; #KWS로 정의
KWS temp;
---------------------------
구조체의 경우
#include <strio.h>
typedef struc {
char name[200];
int age;
char address[100];
} PERSON
int main() {
PERSON p4={"금붕어",40,"서울"};
}
11. 기출문제, 기출 예상문제 풀이
13번)
2진수에서 10진수 변환은
32,16,8,4,2,1(가중치) * 십진수 해서 나온 결과 값 더하면 된다.
예) 2진수 1100 = 8+4+0+0 = 12
결과 값을 오른쪽으로 2단계 시프트
16번)
해당 데이터 타입의 사이즈를 생각하면 된다.
17번)
비트 연산을 해야하기 때문에 우선 해당 10진수를 2진수로 변환 후 진행
19번
0은 False, 이외 숫자는 True
4 && 0 = F
3 || F = F
rs = F (1)
27번)
sw = 스위칭 변수 (신호등 처럼 + - 변환시킬때 주로 사용)
28번)
hexadecimal은
0~9ABCDEF
13은 D
'정보보안공부 > 정보처리기사' 카테고리의 다른 글
4. 프로그래밍 언어 활용 - 기본 문법 활용 & 기출풀이 (0) | 2022.01.12 |
---|---|
3. 프로그래밍 언어 활용 - Python (0) | 2022.01.12 |
2. 프로그래밍 언어 활용 - JAVA (0) | 2022.01.11 |
2022년 정보처리기사 [필기] 공부 플랜 (6주) (0) | 2022.01.08 |
2022년 정보처리기사 시험 소개 및 시험 일정 (0) | 2022.01.08 |