• 데이터 타입과 변수
    • 데이터 타입
      • 데이터 타입의 종류
        • 논리형 타입 (Boolean Type): 조건이 참인지 거짓인지 판단
        • 문자형 타입 (Character Type): 문자 하나를 저장
        • 문자열 타입 (Character String Type): 여러 개의 문자를 저장
        • 정수형 타입 (Integer Type): 정수를 저장
        • 실수형 타입 (Floating Point Type): 소수점을 포함한 실수를 저장
        • 배열 타입 (Array Type): 여러 데이터를 하나로 묶어서 저장
      • C언어의 데이터 타입
        • 정수형
          • short: 2 Byte
          • int: 4 Byte
          • long: 4 Byte
        • 문자형
          • char: 1 Byte
        • 실수형
          • float: 4 Byte
          • double: 8 Byte
      • JAVA의 데이터 타입
        • 정수형
          • byte: 1 Byte
          • short: 2 Byte
          • int: 4 Byte
          • long: 8 Byte
        • 문자형
          • char: 2 Byte
        • 실수형
          • float: 4 Byte
          • double: 8 Byte
        • 논리형
          • boolean: 1 Byte
    • 변수
      • 변수 (Variable)란?
        • 프로그램 수행 중에 값이 변경될 때마다 일시적으로 기억시키기 위한 기억장소
        • 변수는 사용하기 전에 해당 블록의 선두에서 선언되어야 함
      • 변수명 작성 규칙 (파이썬)
        • 영문 대문자 / 소문자, 숫자, 밑줄(_)의 사용이 가능함 (대소문자 구분)
        • 변수의 첫 글자는 숫자를 사용할 수 없음
        • 변수 이름의 중간에는 공백을 사용할 수 없음
        • 변수명은 데이터 값의 의미나 역할을 표현할 수 없음
        • 이미 사용되고 있는 예약어의 경우에는 변수로 사용할 수 없음 (예: True, False, not, or 등)
      • 변수의 종류
        • 변수의 사용 위치에 따른 종류
          • 지역 변수: 함수 내부에서 선언된 변수로 선언된 블록이나 함수 내부에서만 사용이 가능
          • 전역 변수: 함수 외부에서 선언된 변수로 프로그램 전체에 걸쳐 사용될 수 있음
        • 변수의 존속 기간에 따른 종류
          • 자동 변수: 함수가 실행될 때 만들어지고 실행이 끝나면 기억공간에서 제거되는 변수
          • 정적 변수: 기억 영역을 프로그램이 끝날 때까지 계속 유지하는 변수
          • 외부 변수: 함수 밖에서 선언되어 프로그램이 종료될 때까지 유지되는 변수
          • 레지스터 변수: CPU 내의 레지스터에 기억 영역을 할당받는 변수로 프로그램의 실행 속도를 빠르게 하기 위해 사용
  • 연산자
    • 산술 연산자
      • +: A + B, 덧셈
      • -: A - B, 뺄셈
      • *: A * B, 곱셈
      • /: A / B, 나눗셈
      • %: A % B, 나머지
      • ++: A++, 변수를 사용한 후 1증가; ++A, 1 증가 후 변수를 사용
      • --: A--, 변수를 사용한 후 1 감소; --A, 1 감소 후 변수를 사용
    • 시프트 연산자
      • <<: a << 1, 비트를 왼쪽으로 이동
      • >>: b >> 1, 비트를 오른쪽으로 이동
    • 관계 연산자
      • >: A > B, 크다
      • >=: A >= B, 크거나 같다
      • <: A < B, 작다
      • <=: A <= B, 작거나 같다
      • ==: A == B, 같다
      • !=: A != B, 같지 않다
    • 논리 연산자
      • &&: A && B, AND (모두 참이면 참)
      • ||: A || B, OR (하나라도 참이면 참)
      • !: !A, NOT (부정)
    • 비드 연산자
      • &: a & b, AND (모든 비트가 참이면 참)
      • |: a | b, OR (모든 비트 중 하나라도 참이면 참)
      • ^:  a ^ b, XOR (모든 비트가 다르면 참, 그렇지 않으면 거짓)
  • 절차적 프로그래밍 언어 / 객체지향 프로그래밍 언어
    • 절차적 프로그래밍 언어
      • 절차적 프로그래밍 언어란?
        • 명령형 언어라고도 하며 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 프로그래밍 방식
        • 객체의 개녕이 나오기 이전에 모듈, 변수, 함수를 사용하여 개발하는 방법
        • 프로그램을 순차적으로 수행시키는 방법으로 자료 구조와 명령 중심으로 프로그램을 구성
        • 종류: FORTRAN, COBOL, C 등
      • 절차적 프로그래밍 언어의 특징
        • 컴퓨터의 처리 구조와 비슷하여 실행 속도가 빠름
        • 정해진 순서대로 입력을 해야하므로 순서가 바뀌면 결과 값을 도출하기 어려움
        • 유지보수가 어려움
    • 객체지향 프로그래밍 언어
      • 객체지향 프로그래밍 언어란?
        • 현실 세계의 개체 (Entity)를 기계의 부품처럼 객체로 만들어, 객체들을 조립하여 프로그램을 작성하는 방식
        • 객체, 클래스, 메시지를 이용하여 프로그램을 개발하는 방식
        • 종류: JAVA, C++, smalltalk 등
      • 객체지향 프로그래밍 언어의 장단점
        • 소프트웨어의 재사용 및 확장을 용이하게 함
        • 고품질의 소프트웨어를 빠르게 개발할 수 있음
        • 클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로그램의 작성이 용이
        • 소프트웨어 개발 및 유지보수가 용이
        • 설계 시 많은 시간과 노력이 필요
    • 스크립트 언어 / 선언형 언어
      • 스크립트 언어
        • 스크립트 언어란?
          • 다른 응용 프로그램에 삽입되어서 동작하는 프로그래밍 언어
          • 기계어로 컴파일 하지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
          • 게시판, 회원가입, 상품 검색 등과 같은 데이터베이스 처리 작업을 수행하기 위해 주로 사용
          • 종류: 자바 스크립트, ASP, JSP, PHP, PYTHON 등
        • 스크립트 언어의 특징
          • 단순하고 쉬운 문법을 사용하여 빠르게 배우고 쉽게 작성이 가능
          • 컴파일 없이 바로 실행되므로 결과를 바로 확인할 수 있음
          • 컴파일 언어보다 실행 속도가 느림
          • 런타임 오류가 많이 발생
      • 선언형 언어
        • 선언형 언어란?
          • 프로그래머가 실행될 알고리즘을 명시하는 명령형 프로그래밍 언어와 달리 목표를 명시하고 알고리즘을 명시하지 않은 방식
          • 선언형 언어에는 함수형 언어와 논리형 언어가 있음
        • 선언형 언어의 종류
          • 함수형 언어
            • 자료 처리를 수학적 함수의 계산으로 취급하여 문제를 해결하는 언어
            • 재귀 호출을 자주 사용
            • 병렬 처리에 유리
            • 예) LISP, Haskell, Erlang 등
          • 논리형 언어
            • 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반을 둔 언어
            • 선언적 언어라고도 함
            • 반복문이나 선택문을 사용하지 않음
            • 예) PROLOG
    • 라이브러리
      • 라이브러리 (Library)란?
        • 프로그램을 효율적으로 개발하기 위해 자주 사용하는 함수나 데이터를 모듈화해서 제공하는 것
        • 자주 사용하는 코드를 반복적으로 작성하지 않아도 되고, 필요할 때 언제든지 호출하여 사용할 수 있음
        • 프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공
      • 표준 라이브러리와 외부 라이브러리
        • 표준 라이브러리
          • 프로그래밍 언어가 기본적으로 제공하는 라이브러리
          • 각 프로그래밍 언어의 표준 라이브러리는 여러 종류의 모듈과 패키지로 제공
          • 표준 라이브러리는 별도의 파일 설치 없이 사용할 수 있음
        • 외부 라이브러리
          • 별도의 파일을 설치해야 하는 라이브러리
          • 누구나 개발하여 설치할 수 있는 형태로, 인터넷을 통해 공유할 수도 있음
      • 정적 라이브러리와 동적 라이브러리
        • 정적 라이브러리 (Static Linking Library)
          • 실행 파일이 만들어질 때 라이브러리를 실행 바이너리 파일에 포함시키는 방식
          • 장점: 별도의 추가 작업없이 실행 파일만 있으면 바로 실행이 가능 (실행의 독립성)
          • 단점: 불필요하게 실행 파일의 크기가 커질 수 있으며 메모리의 공간을 많이 차지
        • 동적 라이브러리 (Dynamic Linking Library)
          • 필요한 함수만 호출해서 사용하는 방식
          • 윈도우에서는 DLL 확장자, 리눅스에서는 SO 확장자를 가지는 형태로 제공
          • 장점: 메모리 공간이 절약되며 로딩 속도가 빠름, 함수의 수정이 필요한 경우 라이브러리 파일만 수정하면 되므로 수정이 간편
          • 단점: 정적 라이브러리보다 사용이 복잡하고 불편
  • 데이터 입출력
    • 예외 처리
      • 예외 처리란?
        • 예외가 발생할 수 있는 부분에서 예외가 발생했을 때 어떻게 처리할 것인지를 지정해 주는 방법
        • 프로그램이 실행을 멈추지 않고 계속 진행할 수 있도록 적절한 조치를 취하는 것
        • 일반적으로 프로그램을 종료하거나 로그를 남기도록 함
        • C++, C#, Java, 파이썬, Ada, 자바 스크립트와 같은 언어는 예외 처리 기능을 제공하며, 그 외의 언어에서는 필요한 경우 조건문을 이용하여 예외 처리를 함
        • 예외의 원인: 컴퓨터 하드웨어, 운영체제 설정, 라이브러리 손상, 사용자의 입력 오류 등
        • 사용자의 입력 오류: 존재하지 않는 파일에 대한 입력 등으로 발생
      • Java의 예외 처리
        • 예외가 발생할 수 있는 조건은 try 블록에 지정
        • 예외 처리를 위해 실행되어야 하는 코드는 catch 블록에 지정
        • try 블록이 실행될 때 예외가 발생하지 않으면 catch 블록은 실행되지 않음
        • finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드를 지정
    • 프로토타입
      • 프로토타입(Prototype)이란?
        • 함수 원형 (Function Prototype) 이란 의미로, 컴파일러에게 사용될 함수에 대한 정보를 미리 알리는 것
        • 메인 함수가 정의된 다음 함수를 정의하는 경우 함수를 호출하면 호출된 함수의 이름을 찾을 수 없어 오류가 발생함
        • 메인 함수가 정의되기 전에 프로토타입을 사용하여 함수가 있음을 알려줘야 호출이 가능
      • C언어의 프로토타입
        • main() 함수의 위에 선언을 해야 함
        • 반환값 타입 함수 이름 (입력변수 타입 변수 이름)
        • 메인 함수 뒤에 함수를 정의한 경우 메인 함수 전에 함수에 대한 프로토타입을 선언해야 함

WRITTEN BY
ppdha82

,