관리 메뉴

나구리의 개발공부기록

2장 - 프로그래밍 언어 활용 핵심 요약 본문

2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 4강 - 프로그래밍 언어 활용

2장 - 프로그래밍 언어 활용 핵심 요약

소소한나구리 2024. 5. 10. 16:10

2024년도 시나공 필기 책 내용 정리 


섹션4. 데이터 타입

 
1. C/JAVA의 자료형

종류 C JAVA
문자 char(1Byte) char(2Byte)
정수 int(4Byte) int(4Byte)
  long(4Byte) / 운영체제에따라 다름 long(8Byte)
논리 bool(1Byte) boolean(1Byte)

 
2. Python의 시퀀스 자료형의 종류
 

  • 리스트(List) : 다양한 자료형의 값을 연속적으로 저장하며, 필요에 따라 개수를 늘리거나 줄일 수 있음
  • 튜플(Tuple) : 리스트처럼 요소를 연속적으로 저장하지만, 요소의 추가, 삭제, 변경은 불가
  • range : 연속된 숫자를 생성하는 것으로, 리스트, 반복문 등에서 많이 사용됨

섹션5. 변수

 
1. 변수명 작성 규칙
 

  • 영문자, 숫자, _ 를 사용할 수 있음
  • 첫 글자는 영문자나 _로 시작해야하며 숫자는 불가능
  • 글자수에 제한이 없음
  • 공백이나 *, +, -, / 등의 특수문자를 사용할 수 없음
  • 대/소문자를 구분함
  • 예약어를 변수명으로 사용 불가

변수 선언시 문장 끝에 반드시 세미콜론(;)을 붙여야 함 - C,Java


섹션6. 연산자

 
1. 산술 연산자

연산자 의미 비고
% 나머지 정수만 연산할 수 있으며 실수를 사용하면 오류가 발생함
++ 증가 전치 : 변수 앞에 증감 연산자가 오는 형태, 먼저 변수의 값을 증/감 시킨 후 변수를 연산에 사용
(++a, --a)
후치 : 변수 뒤에 증감 연산자가 오는 형태, 변수를 연산에 사용한 후 변수의 값을 증감 시킴
(a++, a--)
-- 감소

 
2. 비트 연산자 (비교하는 2진수의 각 자리를 비교)
 

  • & (and) : 모든 비트가 1일 때만 1 
  • ^ (xor) : 모든 비트가 같으면 0, 하나라도 다르면 1
  • | (or) : 모든 비트 중 한 비트라도 1이면 1
  • ~ (not) : 각 비트의 부정, 0이면1, 1이면0 (네거티브)
  • << (왼쪽시프트) : 비트를 왼쪽으로 이동, 2ⁿ을 곱한 것과 같음
  • >> (오른쪽시프트) : 비트를 오른쪽으로 이동, 2ⁿ으로 나눈 것과 같음

3. 논리 연산자
 

  • ! (not) : 부정
  • && (and) : 모두 참이면 참
  • || (or) : 하나라도 참이면 참

4. 조건 연산자 (3항연산자)
 

  • 조건에 따라 서로 다른 수식을 수행
  • mx = a < b ? b : a  // a 가 b보다 작으면 true, b를 반환함, a가 b보다 작지 않으면 false, a를 반환

5. 연산자 우선 순위

대분류 중분류 연산자 결합규칙 우선순위
단항 연산자 단항 연산자 !, ~, ++ , -- , sizeof 높음



















이항 연산자 산술 연산자 *, /, %
+, -
시프트 연산자 <<, >>
관계 연산자 <, >, <=, >=
==, !=
비트 연산자 & → ^ → |
논리 연산자 && → ||
삼항 연산자 조건 연산자 ?, :
대입 연산자 대입 연산자 =, +=, -=, *=, /=, %=, <<=, >>= 등
순서 연산자 순서 연산자 ,

섹션7. 데이터 입/출력

 
1. 주요 서식 문자열
 

  • %d : 정수형 10진수를 입/출력하기 위해 지정
  • %s : 문자열을 입/출력하기 위해 지정
  • %c : 문자를 입/출력하기 위해 지정

2. scanf()
 

  • C언어의 표준 입력함수로 키보드로 입력받아 변수에 저장하는 함수
  • scanf("%3d", &a);  // 10진수 정수 3자리를 입력받아 변수 a에 저장, 변수에는 &로 주소연산자를 지정해야 함

3. printf()
 

  • C언어의 표준 출력함수, 인수로 주어진 값을 화면에 출력하는 함수
  • printf("%d, %c", a, b); // a의 값을 정수로 출력하고 쉼표와 공백을 한칸 띄고 b의 값을 문자로 출력

4. JAVA의 출력 함수
 

  • printf()
    • System.out.printf("%d", r); //r의 값을 10진 정수의 형태로 출력
  • print()

    • System.out.print(r + s); // r과 s를 더한 값을 출력
  • println()

    • System.out.println(r + "은(는) 소수"); // r의 값과 은(는)소수를 출력하고 줄건너뛰기

섹션8. 제어문

 
1. 단순 if문
 

  • 조건이 한 개일 때 사용하는 제어문
// 조건이 참일 때만 실행하는 경우
if (a > b)
    printf("Gilbut");
    
// 조건이 참일 때와 거짓일 때 실행할 문장이 다른 경우
if (a > b)
    printf("참");
else
    printf("거짓");

 
2. 다중 if문
 

  • 조건이 여러 개일 때 사용하는 제어문
if (score >= 90)
    printf("우수");
else if (score < 40)
    printf("불량");
else
    printf("일반");

 
3. switch문
 

  • 조건에 따라 분기할 곳이 여러 곳인 경우 간단하게 처리할 수 있는 제어문
  • break문이 생략되면 수식과 레이블이 일치할 때 실행할 문장부터 break문 또는 switch문이 종료될 때까지 모든 문장이 실행됨
switch (a) {
case 1:
    printf("바나나")
    break;
case 2:
    printf("딸기")
    break;
default:
    printf("없음")
}

섹션9. 반복문

 
1. for문
 

  • 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어ans
  • 초기값, 최종값, 증가값을 모두 생략하면 무한반복문이 됨
for(i = 1; i <= 10; i++)
    sum = sum + i;

 
2. while문
 

  • 조건이 참인 동안 실행할 문장을 반복 수행하는 제어문
  • while문은 조건이 처음부터 거짓이면 한 번도 수행하지 않음
while (i <= 10)
    i = i + 1;

 
3. do ~ while 문
 

  • while문과 동일하나 실행할 문장을 무조건 한번 실행한 다음 조건을 판단하여 탈출 여부를 결정
do
   i = i + 1;
while (i <= 10)

 
4. break, countinue
 

  • switch문이나 반복문의 실행을 제어하기 위해 사용되는 예약어
  • break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남
  • continue : continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김, 반복문에서만 사용됨

섹션10. 배열과 문자열

 
1. 1차원 배열
 

  • 변수들을 일직선상의 개념으로 조합한 배열
  • char a[3] = {'A', 'B', 'C'};

2. 2차원 배열
 

  • 변수들을 평면(행, 열)로 조합한 배열
  • int b[2][3] = {{11, 22, 33}, {44, 55, 66}};

3. 배열 형태의 문자열 변수
 

  • C언어에서는 큰따옴표 " "로 묶인 글자는 글자 수에 관계없이 문자열로 처리됨
  • 배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널문자'\0'가 문자열 끝에 자동으로 삽입됨
  • char a[5] = "love";  // 배열 a[0] = 'l' ... 배열a[4] = '\0'(null 문자)

섹션11. 포인터

 
1. 포인터와 포인터 변수
 

  • 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *을 붙힘
  • int *a;
  • 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때는 변수 앞에 번지 연산자 &를 붙힘
  • a = &b;
  • 실행문에서 포인터 변수에 간접 연산자 *을 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말함
  • c = *a; // b의 값을 저장

2. 포인터와 배열
 

  • 배열을 포인터 변수에 저장한 후  포인터를 이용해 배열의 요소에 접근할 수 있음
  • 배열 위치를 나타내는 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 저정하는 것과 같음
  • 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용
int a[5], *b;
b = a;     // 포인터 변수 b가 a의 첫번째 요소 주소값을 가르킴
b = &a[0]; // 위와 동일

섹션12. 구조체

 
1. 구조체의 정의
 

  • 자료의 종류가 다른 변수의 모임
  • 구조체 정의 == int 나 char같은 자료형을 하나 만드는 것을 의미
  • 예약어인 struct를 사용하여 정의
struct sawon {      // 구조체 정의
    char name[10];  // 다양한 자료형의 멤버들 선언
    int jikwi[10];
    int pay;
}

섹션13. Python의 기초

 
1. input( ) 함수
 

  • Python의 표준 입력함수로 키보드로 입력받아야 변수에 저장하는 함수
  • 입력되는 값은 문자열로 취급되어 저장됨
  • a = input('입력하세요') # 입력하세요가 출력되고 커서가 깜빡이면서 입력을 기다리고 값을 입력하면 a에 저장됨

2. print( ) 함수
 

  • 인수로 주어진 값을 화면에 출력하는 함수
  • print(82, 24, sep ='-', end='.')
    # 82-24. 로 출력됨  sep은 값을 분리하는 문자를 지정, end는 문장의 끝에 올 문자를 지정

3. 입력 값의 형변환
 

  • input( ) 함수는 입력되는 값을 무조건 문자열로 저장하므로 숫자로 사용하기 위해서는 형을 변환해야함
# 변환 데이터가 1개일 때
a = int(input())

# 변환 데이터가 2개 이상일 때
a, b = map(int, input().split())

 
4. 리스트(List)
 

  • 필요에 따라 개수를 늘이거나 줄일 수 있으므로 선언 시 크기를 적지 않음
  • 배열과 달리 하나의 리스트에 정수, 실수, 문자열 등 다양한 자료형을 섞어서 저장할 수 있음
# 방법1
a = [10, 'mike', 23.45]

# 방법2
a = list([10, 'mike', 23.45])

# 인덱스 접근, 배열 a의 0번째 인덱스의 요소의 값을 1로 변경
a[0] = 1

 
5. 딕셔너리(Dictionary)
 

  • 연관된 값을 묶어서 저장하는 용도, 자바의 map의 형태
  • 딕셔너리에서는 인덱스가 아닌 사용자가 원하는 키를 직접 지정한 후 사용함
  • 딕셔너리 뒤에 대괄호 [ ]를 사용하여, 대괄호 안에 키를 입력하여 값(value)에 접근함
# 방법1
a = {'이름':'홍길동', '나이':25, '주소':'서울'}

# 방법2
a = dict({'이름':'홍길동', '나이':25, '주소':'서울'})

# 접근, 딕셔너리 a의 '이름' 키의 값을 '이순신'으로 변경
a['이름'] = '이순신'

 
6. 슬라이스(slice)
 

  • 문자열이나 리스트와 같은 순차형 객체에서 일부를 잘라 반환하는 기능
a = ['a', 'b', 'c', 'd', 'e']
a[1:3] # ['b', 'c']
a[0:5:2] # ['a', 'c', 'e']
a[3:] # ['d', 'e']
a[:3] # ['a', 'b', 'c']
a[::3] # ['a', 'd']

섹션14. Python의 활용

 
1. if문

if (a == b):
    print('참')
else:
    print('거짓')

 
2. for문

# range를 이용하는 방식
for i in range(1,11):   # 1 ~ 10 까지 변수 i에 값을 저장하면서 반복
    sum = sum + i

# list를 이용하는 방식
a = [1,2,3,4,5,6,7,8,9,10]
for i in a:    # a의 요소를 하나씩 꺼내서 변수 i에 저장하면서 반복
    sum = sum + i

 
3. while문

while i <= 10:
    i = i + 1

 
4. 클래스 없는 메소드의 사용

def calc(x, y):
    x *= y
    return x

a, b = 3, 4
a = calc(a, b) # a = 12

print(a, b) #출력 결과 : 12 8

섹션15. 스크립트 언어

 
1. 자바스크립트
 

  • 웹 페이지의 동작을 제어하는 데 사용되는 클라이언트용 스크립트 언어
  • 클래스 기반의 객체 상속을 지원하며 프로토타입 개념을 활용할 수 있음

2. PHP
 

  • 서버용 스크립트 언어로 Linux, Unix, Windows 운영체제에서 사용 가능함
  • C, Java 등과 문법이 유사하므로 배우기 쉬워 웹 페이지 제작에 많이 사용됨

3. 파이썬
 

  • 귀도 반 로섬(Guido van Rossum)이 발표한 대화형 인터프리터 언어
  • 객체지향 기능을 지원하고 플랫폼에 독립적이며 문법이 간단하여 배우기 쉬움

4. 쉘 스크립트
 

  • 유닉스/리눅스 계열의 쉘(Shell)에서 사용되는 명령어들의 조합으로 구성된 스크립트 언어
  • 컴파일 단계가 없어서 실행 속도가 빠름
  • 저장시 확장자로 .sh가 붙음
  • 쉘의 종류 : Bash Shell, Bourne Shell, C Shell, Korn Shell 등
  • 쉘 스크립트에서 사용되는 제어문 : 선택형 - if, case / 반복형 - for, while, until

5. Basic
 

  • 절차지향 기능을 지원하는 대화형 인터프리터 언어로 초보자도 쉽게 사용할 수 있는 문법 구조를 갖음

섹션16. 라이브러리

 
1. 라이브러리의 개념
 

  • 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
  • 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리, 여러 종류의 모듈이나 패키지로 구성됨
  • 외부 라이브러리 : 개발자들이 필요한 기능을 만들어 인터넷 등에 공유해 놓은 것으로 다운받아 설치한 후 사용

2. C언어의 stdio.h
 

  • 데이터의 입/출력에 사용되는 기능들을 제공
  • 주요 함수 : printf, scanf, frpintf, fscanf, fcolse, fopen 등

3. C언어의 math.h
 

  • 수학 함수들을 제공
  • 주요 함수 : sqrt, pow, abs 등

4. C언어의 string.h
 

  • 문자열 처리에 사용되는 기능들을 제공
  • 주요 함수 : strlen, strcpy, strcmp 등

5. C언어의 stdlib.h
 

  • 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들을 제공
  • 주요 함수 : atoi, atof, srand, rand, malloc, free 등

6. C언어의 time.h
 

  • 시간 처리에 사용되는 기능들을 제공
  • 주요 함수 : time, clock 등

섹션16. 라이브러리

 
1. JAVA의 예외 처리
 

  • JAVA에서는 try ~ catch 문을 이용해 예외를 처리함
  • try 블록 코드를 수행하다 예외가 발생하면 예외를 처리하는 catch 블록으로 이동하여 예외 처리 코드를 수행하므로 예외가 발생한 이후의 코드는 실행되지 않음
  • catch 블록에서 선언한 변수는 해당 catch 블록에서만 유효함
  • try ~ catch 문 안에 또다른 try ~ catch 문을 포함할 수 있음
  • try ~ catch 문 안에서는 실행 코드가 한 줄이라도 중괄호{}를 생략할 수 없음