본문에 오류가 있을 수 있음을 감안하고 봐주시길 바랍니다.
# 문제 풀이 중 오답노트 하면서 나온 내용을 정리한 것
데이터 입·출력의 개요: 키보드로부터 데이터를 입력받아 화면이나 파일로 출력하는 것을 의미한다.
헝가리안 표기법: 변수명 작성 시 변수의 자료형을 알 수 있도록 자료형을 의미하는 문자를 포함하여 작성하는 방법이다. # int_a
자료형
| 종류 | 자료형 | 크기(C) | 크기(Java) |
| 정수형 | int | 4Byte | 4Byte |
| 문자형 | char | 1Byte | 2Byte |
| 실수형 | float | 4Byte | 4Byte |
| double | 8Byte | 8Byte |
C언어의 입·출력 함수: scanf, printf
#include <stdio.h>
int main() {
int i, j, k; // 변수 선언, 8진수=0~, 16진수=0x~
scanf("%d %d", &i, &j); // 입력을 스페이스로 구분해 정수 2개를 i와 j에 저장
k = i+j;
printf("%d\n", k); // k 값을 정수로 출력한다.
return 0; }
Java의 입·출력 함수: Scanner, nextInt, print, printf, println
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); // 키보드로부터 새로운 입력을 받음
int a = scan.nextInt(); // 정수형으로 입력을 받는다.
int b = 035; // 035(8진수), 0x35(16진수), 35(10진수)
System.out.printf("a*3 = %d\n", a*3); // 정수 출력
System.out.println("a/2 = " + (a/2)); // \n이 포함된 출력
System.out.print("a-1 = " + (a-1));
scan.close(); } } // scan 메모리 해제
C언어에서 사용할 수 없는 변수명: 변수명에 공백이나 *, +,-,/ 등의 특수문자를 사용할 수 없다. 예약어 사용이 불가능하다. 숫자로 시작할 수 없다.
C언어 라이브러리
- stdlib.h: 문자열을 수치 데이터로 바꾸는 문자 변환함수와 수치를 문자열로 바꿔주는 변환함수 등이 있다.
- string.h: 문자열 처리 함수로 strlen()이 포함되어 있다.
- strlen(s) - s의 길이를 구한다.
- strcpy(s1, s2) - s2를 s1으로 복사한다.
- strcmp(s1, s2) - s1과 s2이 동일한지 비교한다.
- strrev(s) - s를 거꾸로 반환한다.
- stdio.h: 표준 입출력 라이브러리이다.
- math.h: 삼각 함수, 제곱근, 지수 등 수학적인 함수를 내장하고 잇다.
서식 지정자
| 서식 문자열 | 의미 |
| %d | 정수형 10진수의 입·출력에 사용 |
| %o | 정수형 8진수의 입·출력에 사용 |
| %x | 정수형 16진수의 입·출력에 사용 |
| %c | 문자의 입·출력에 사용 |
| %s | 문자열의 입·출력에 사용 |
| %f | 소수점을 포함한 실수의 입·출력에 사용(출력시 기본 소수점 6자리) |
제어 문자
| 제어문자 | 기능 |
| \n | 커서를 다음 줄의 처음으로 이동 |
| \t | 커서를 일정 간격 띄움(Tab 간격) |
| \0 | 널(Null) 문자 출력 |
연산자 우선순위(단산시관 비논 조대순)
| 대분류 | 중분류 | 연산자 | 결합 규칙 | 우선 순위 |
| 단항 연산 | 단항 연산자 | !(논리 not), ~(비트 not), ++(증가), --(감소), sizeof(기타) | ← | 높음 ↑ ↓ 낮음 |
| 이항연산자 | 산술 연산자 | +, -, *, /, % | → | |
| 시프트 연산자(2진수) | <<(왼쪽으로 이동, 뒤에 0 붙이기), >> (오른쪽으로 이동, 뒷자리 없애기) → 비트 단위 연산 | |||
| 관계 연산자 | <, <=, >=, > ==, != |
|||
| 비트 연산자(2진수) | &(AND), ^(XOR, 같으면 0 다르면 1), |(OR) | |||
| 논리 연산자 | &&(AND), ||(OR) | |||
| 삼항 연산자 | 조건 연산자 | A ? B : C | ← | |
| 대입 연산자 | 대입 연산자 | =, +=, -=, /=, *=, %=, <<=, >>= 등 | ← | |
| 순서 연산자 | 순서 연산자 | , | → |
제어문: 서술된 순서에 따라 무조건 위에서 아래로 실행되는 프로그램의 순서를 변경할 때 사용하는 명령문이다.
- for문: 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어문
- while문: 조건이 참인 동안 실행한 문장을 반복 수행하는 제어문
- if문: 조건에 따라 실행할 문장을 달리하는 제어문
- switch문: 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문
- continue: 반복문에서 continue가 나오면 continue 이후의 문장을 실행하지 않고 제어를 반복문 처음으로 옮긴다.
- break: 반복문이나 switch문에서 블록을 벗어난다.
프로그래밍 언어의 분류
- 절차적 언어: 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어이며 주로 객체 지향 언어와 비교된다.
- ALGOL: PASCAL과 C언어의 모체가 된 절차적 프로그래밍 언어이다. 수치 계산이나 논리 연산에 특화되어 있어 과학 기술 계산용으로 주로 사용된다.
- 객체 지향 언어: 객체들을 조립해서 프로그래밍을 수행하며 객체 중심 프로그래밍 언어이다.
- 스크립트 언어: HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석해 동작하는 언어이다.
- PHP: 서버용 스크립트 언어로 운영체제(OS)에 사용된다. 웹 페이지 제작에 많이 사용된다.
- 선언형 언어: 프로그램이 수행해야 할 문제를 기술하는 언어로 목표를 명시하고 알고리즘은 명시하지 않는 특징이 있다. (예: HTML·XML·HASKELL)
포인터: 변수의 주소를 저장할 수 있는 변수이다. 주소를 출력하거나 해당 주소의 값을 읽고 쓰는 등 메모리의 다양한 조작이 가능하다. (&는 주소, *는 포인터가 가리키는 값)
#include <stdio.h>
int main(void) {
int a = 50;
int *b = &a; // 포인터 b에 a의 주소를 삽입
*b = *b + 20; // 포인터 b의 값에 + 20
printf("%d, %d\n", a, *b); // 70, 70
char *s;
s = "gildong";
for (int i=0; i<7; i+=2) { // i=0 2 4 6
printf("%c, ", s[i]); // g l o g
printf("%c, ", *(s+i)); // g l o g
printf("%s\n", s+i); // gildong ldong ong g
} }
구조체: '서로 다른' 자료형의 변수들을 하나로 묶은 모임입니다. (멤버 지정 시 일반 변수는 ., 포인터 변수는 -> 사용)
- 구조체 정의
struct sawon {
char name[10]; // 변수 선언
char jikwi[10];
int pay;
}
- 구조체 변수 선언
struct sawon samsung, *seoul; // samsung이 구조체의 변수명이고, seoul은 구조체의 포인터 변수명이다.
- 구조체 멤버 지정
samsung.name = "홍길동"; // '.'에 의한 지정
seoul->name = "홍길동"; // '->'에 의한 지정, 포인터 변수 이용 시
(*seoul).name = "홍길동"; // '*'에 의한 지정
C언어 malloc() 함수: 원하는 시점에 원하는 만큼 메모리를 동적으로 할당한다. 사용자가 입력한 Byte 만큼 메모리를 할당한다. free 명령어로 할당된 메모리를 해제한다. 메모리 할당이 불가능할 경우 NULL이 반환된다.
atoi(): C언어에서 문자열을 정수형으로 변환하는 라이브러리 함수
C++: C언어에 객체지향 개념을 적용한 언어로 모든 문제를 객체로 모델링하여 표현함
C#: .Net 프레임워크의 한 부분으로 만들어진 C언어로 C++과 Visual Basic의 편의성을 결합함
자료 구성 단위
| 단위 | 설명 |
| 비트(Bit) | 자료(정보) 표현의 최소 다누이, 두 가지 상태(0과 1)를 표시하는 2진수 1자리임 |
| 니블(Nibble) | 4개의 비트(Bit)가 모여 1개의 니블(Nibble)을 구성함, 16진수 1자리를 표현하기에 적합함 |
| 바이트(Byte) | 문자를 표현하는 최소 단위, 8개의 비트(Bit)가 모여 1바이트(1Byte)를 구성함 |
| 워드(Word) | CPU가 한 번에 처리할 수 있는 명령 단위 |
| 필드(Field) | 파일 구성의 최소 단위, 의미 있는 정보를 표현하는 최소 단위 |
| 레코드(Record) | 하나 이상의 관련된 필드가 모여서 구서오딤 |
| 블록(Block) | 하나 이상의 논리 레코드가 모여서 구성됨 |
| 파일(File) | 프로그램 구성의 기본 단위로 여러 레코드가 모여서 구성됨 |
| 데이터베이스(Database) | 여러 개의 관련된 파일(File)의 집합 |
'정보처리기사' 카테고리의 다른 글
| [정보처리기사 요약 11-1] 운영체제(OS)의 개념과 종류 요약(Windows부터 iOS까지) (0) | 2026.03.02 |
|---|---|
| [정보처리기사 요약 10-2] Java 클래스 상속과 예외 처리, Python 문법 정리 (0) | 2026.03.02 |
| [정보처리기사 요약 9-3] 인증/인가부터 방화벽, IDS, IPS 완벽 비교 (0) | 2026.03.01 |
| [정보처리기사 요약 9-2] 암호 알고리즘부터 네트워크 침해 공격까지 (1) | 2026.03.01 |
| [정보처리기사 요약 9-1] Secure SDLC와 시큐어 코딩 주요 보안 약점 총정리 (0) | 2026.02.28 |