데이터 타입

 

C / C++

  • 문자
    • char ( 1Byte )
  • 부호없는 문자형
    • unsigned char ( 1Byte )
  • 정수
    • short ( 2Byte )
    • int ( 4Byte )
    • long ( 4Byte )
    • long long ( 8Byte )
  • 부호없는 정수형
    • unsigned short ( 2Byte )
    • unsigned int ( 4Byte )
    • unsigned long ( 4Byte )
  • 실수
    • float ( 4Byte )
    • double ( 8Byte )
    • long double ( 8Byte )

Java

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

Python

  • 문자
    • str ( 무제한 )
  • 정수
    • int ( 무제한 )
  • 실수
    • float ( 8Byte )
    • complex ( 16Byte )

변수

 

변수란? 컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간

 

변수명 작성 규칙을 예시와 함께 알아보도록 하자

 

  • 2abc (X)
    • 변수명 앞은 언더 바(_) 혹은 영문자만 사용 가능
  • veryverylonglong (O)
    • 변수명의 글자 수 제한은 없음
  • my parameter (X)
    • 변수명 사이에 공백 추가 불가능
  • my-parameter (X)
    • 변수명 사이 언더바를 제외한 특수문자 사용 불가능
  • for (X)
    • 예약어 사용 불가능
  • parameter / Parameter
    • 대, 소문자 구분함

 

기억 클래스

  • 자동 변수
    • 기억영역 : 메모리(스택)
    • 예약어 : auto
    • 생존기간 : 일시적
    • 사용 범위 : 지역적
  • 레지스터 변수
    • 기억영역 : 레지스터
    • 예약어 : register
    • 생존기간 : 일시적
    • 사용 범위 : 지역적
  • 정적 변수(내부)
    • 기억영역 : 메모리(데이터)
    • 예약어 : static
    • 생존기간 : 일시적
    • 사용 범위 : 지역적
  • 정적 변수 (외부)
    • 기억영역 : 메모리(데이터)
    • 예약어 : static
    • 생존기간 : 영구적
    • 사용 범위 : 전역적
  • 외부 변수
    • 기억영역 : 메모리(데이터)
    • 예약어 : extern
    • 생존기간 : 일시적
    • 사용 범위 : 전역적

데이터 입*출력

 

서식 문자열

  • %d : 정수형 10진수
  • %u : 부호없는 정수형 10진수
  • %o : 정수형 8진수
  • %x : 정수형 16진수
  • %c : 문자
  • %s : 문자열
  • %f : 소수점 포함하는 실수
  • %e : 지수형 실수
  • %ld : long형 10진수
  • %lo : long형 8진수
  • %lx : long형 16진수
  • %p : 주소

 

입*출력

 

  • C언어
    • 입력
      • scanf(서식 문자열, 변수 주소)
      • getchar()
      • gets()
    • 출력
      • printf(서식 문자열, 변수)
      • putchar()
      • puts()
  •  Java
    • 입력
      • Scanner scan_obj = new Scanner(System.in);
      • 변수명 = scan_obj.nextInt();
    • 출력 : System.out.print(서식 문자열, 변수)

 

출력 예시

 

 

  • % : 서식 문자 지정
  • - : 왼쪽부터 출력 (없을 시 오른쪽부터 출력)
  • 8 : 출력 자릿수 8자리로 지정
  • 2 : 소수점 이하 2자리 지정
  • f : 실수 출력

 

주요 제어 문자

 

  • \n : 커서를 다음 줄 앞으로 이동
  • \b : 커서를 왼쪽으로 한 칸 이동
  • \t : 커서를 일정 간격 띄움
  • \r : 커서를 혀재 줄 처음으로 이동
  • \0 : 널 문자 출력
  • \' : 작은따옴표 출력
  • \" : 큰따옴표 출력
  • \a : 스피커로 벨 소리 출력
  • \\ : 역 슬래시 출력
  • \f : 한 페이지 넘기기

연산자

 

우선순위순으로

 

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

 

비트 연산자

 

 

양수일 때는 패딩 비트가 모두 0으로 채워지나

음수일 경우

왼쪽으로 패딩비트가 채워지면 오른쪽의 빈 자리에 0이 채워지고,

오른쪽으로 패딩비트가 채워지면 왼쪽의 빈 자리에 1이 채워진다.

 

2의 보수는 1의 보수에 1 더한 것


제어문

 

if문

 

 

switch문

 

 

goto문

 

 


반복문

 

for문

 

증가값같은 경우는 무조건 최종값에 대한 조건이 충족하고 그 이후 조건식이 실행된 후에 증가값만큼 증가한다.

따라서 아무리 단항연산자(++, -- 같은)의 순서가 달라도 결과는 같다.

 

while문

 

 

do~while문

 

do{

    조건이 참일 시 실행 문장;

}while(조건);

 

break, continue

 

break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남.

continue

  • continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮긴다.
  • 반복문에서만 사용

배열과 문자열

 

1차원 배열

 

C언어

 

Java

public class Example {
    public static void main(String[] args){
        int a[] = new int[5];
        int i;
            for(i=0;i<5;i++)
                a[i]=i+10;
            for (i=0;i<5;i++)
                System.out.printf("%d ", a[i]);
    }
}

/*10 11 12 13 14*/

 

배열 초기화

 

char a[3] = {'A','B','C'}

int a[2][4] = {{1,2,3,4},{5,6,7,8}}

int a[3] = {3, } => 나머지 요소엔 0이 입력됨.


포인터

 

포인터란? 변수의 주소.

 

포인터의 용도

 

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

 


사용자 정의 함수

 


Java의 클래스와 메소드

 

클래스 : 객체 생성을 위한 속성과 함수를 정의하는 설계도

 

class Human{
    String name;
    boolean sex;
    int age;
}

public class Ex{
    public static void main(String[] args)}
        Human human = new Human(); //객체 생성
        human.name = 'Cheolsu';
        human.sex = True;
        human.age = 17;
    }
}

Python의 기초

 

 

# 기본 문법

# 변수 자료형 선언 안 해도 됨. 세미콜론 안 적어도 됨.
# 변수 연속 선언 가능

a = 1
b, c = 2, 3

# if나 for와 같이 코드 블록을 포함하는 명령문을 사용할 땐 indent(들여쓰기)를 맞춰줘야 함.
# 기본 indent는 4칸.

if b > a:
    print("b가 a보다 큼")
    
strA = input('입력하세요') # 화면에 '입력하세요'란 문구 출력. 입력값 받을 때까지 커서 깜박임.
strB, strC = input().split(',') # 'hello,world'를 입력했으면 분리 문자 ','에 의해 strB에는 hello가, strC에는 world가 저장됨.
print(strB, strC, sep='/', end='.') # hello/world.

print('%-8.2f' % 200.20) # 200.20** (*은 공백) # 서식 문자열을 출력할 때 나타내는 표현
# % : 서식 문자임을 지정
# - : 왼쪽부터 출력
# 8 : 출력 자릿수를 8자리로 지정
# 2 : 소수점 이하를 2자리로 지정
# f : 실수로 지정
# python 문자열

print('abc'.upper()) # 'ABC' # 다 대문자로
print('ABC'.lower()) # 'abc' # 다 소문자로

print('ABC EFG'.capitalize()) # 'Abc efg' # 맨 첫 글자만 대문자. 나머진 소문자
print('ABC EFG'.title()) # 'Abc Efg' # 단어 첫 글자는 대문자. 나머진 소문자

print('abc'.replace('a','d')) # 'dbc' # 글자 대체
print('ABC-EFG'.split('-')) # ['ABC,'EFG'] # 분리 단어에 따라서 분리

print('abbbcd'.count('b')) # 3 # 글자 갯수 반환
print('abcd'.find('b')) # 1 # 값 위치 반환 # 찾지 못할 경우 -1 반환
print('abcd'.index('b')) # 1 # 값 위치 반환 # 찾지 못할 경우 오류 반환
lst = [0, 1, 2] # 1차원 리스트
llst = [[0, 1], [2, 3]] # 2차원 리스트

# 리스트 관련 주요 메소드
lst.append(4) # lst = [0, 1, 2, 4]
lst.insert(3, 3) # lst = [0, 1, 2, 3, 4] # 3번째 위치에 3을 추가
lst.insert(2, 5) # lst = [0, 1, 5, 2, 3, 4] # 2번째 위치에 5 추가
del lst[2] # lst = [0, 1, 2, 3, 4] # 2번째 요소 5 삭제
lst.remove(4) # lst = [0, 1, 2, 3] # lst에서 '4' 요소 찾아 삭제
lst.pop(1) # 3 # lst = [0, 2, 3] # 해당 위치에 있는 값 출력하고 해당 요소 삭제
lst.index(0) # 0 # 저장된 요소 위치 반환
[1, 0, 1, 0, 0].count(0) # 3 # 0 요소 개수 반환
[1, 2].extend([3, 4]) # [1, 2, 3, 4] # 리스트 끝에 새로운 리스트 추가하여 확장
[1, 2, 3].reverse() # [3, 2, 1] # 리스트 순서 역순으로 뒤집음
[2, 1, 3].sort() # [1, 2, 3] # 오름차순 정렬
[2, 1, 3].sort(reverse=True) # [3, 2, 1] # 내림차순 정렬
a = [1, 2, 3]
b = a.copy() # 리스트 복사 # 요소 값만 복사되어 서로 독립적인 메모리 공간 차지
for i in range(0, 10, 2): # 0에서 10-1까지 2만큼 증가하며 숫자 생성
    print(i, end=' ') # 0, 2, 4, 6, 8
    
a = [1, 2, 3, 4, 5]

print(a[:3]) # 1, 2, 3 # 3-1까지의 요소 반환
print(a[0:4:2]) # 1, 3

python class


라이브러리

 

라이브러리 : 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체

 

C언어 대표 표준 라이브러리

 

  • stdio.h : 데이터 입 * 출력에 사용되는 기능 제공
  • math.h : 수학 함수 제공
  • string.h : 문자열 처리에 사용되는 기능 제공
  • stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공
  • time.h : 시간 처리에 사용되는 기능 제공

 

Java 대표 표준 라이브러리

 

  • java.lang : 자바에 기본적으로 필요한 인터페이스, 자료형, 예외 처리 등에 관련된 기능 제공. import문 없이 사용 가능
  • java.util : 날짜 처리, 난수 발생, 복잡한 문자열 처리 등과 관련 기능 제공
  • java.io : 파일 입*출력과 관련된 기능 및 프로토콜 제공
  • java.net : 네트워크와 관련된 기능 제공
  • java.awt : 사용자 인터페이스(UI)와 관련된 기능 제공

 

Python 대표 표준 라이브러리

 

  • 내장 함수 : import문이나 클래스명 없이 사용가능한 기본 인터페이스
  • os : 운영체제와 상호 작용하기 위한 기능 제공
  • re : 고급 문자열 처리 위한 기능 제공
  • math : 복잡한 수학 연산을 위한 기능 제공
  • random : 무작위 선택을 위한 기능 제공
  • statistics : 통계값 산출을 위한 기능 제공
  • datetime : 날짜와 시간 조작을 위한 기능 제공

절차적 프로그래밍 언어

 

일련의 처리 절차를 정해진 문법에 따라 순차적으로 기술해 나가는 언어

 

장점 : 빠른 실행 속도, 같은 코드를 복사하지 않고 다른 위치에서 호출해 사용가능, 모듈 구성 용이, 구조적 프로그래밍 가능

 

단점 : 여러운 프로그램 분석, 어려운 유지 보수 및 코드 수정

 

종류

  • C
    • 데니스 리치에 의해 개발됨
    • 자료 주소 조작 가능한 포인터 제공
    • 고급 + 저급 프로그램 언어 특징
    • 컴파일러 방식
    • 이식성이 좋아 기종 관계없이 프로그램 작성 가능
  • ALGOL
    • 수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어
  • COBOL
    • 사무 처리용 언어
  • FORTRAN
    • 과학 기술 계산용 언어

객체 지향 프로그래밍 언어

 

객체 지향 프로그래밍 언어는 객체들을 조립해 프로그램을 작성할 수 있도록 한 프로그래밍 기법.

 

장점

  • 상속을 통한 재사용과 시스템 확장 용이
  • 코드 재활용성이 높음
  • 자연적 모델링에 의해 분석과 설계를 쉽고 효율적으로 할 수 있음
  • 사용자와 개발자 사이의 이해를 쉽게 해줌
  • 대형 프로그램 작성 용이
  • 소프트웨어 개발 및 유지보수가 용이

단점

  • 정형화된 분석 및 설계 방법이 없음
  • 구현 시 처리 시간 지연

 

종류

  • Java
    • 분산 네트워크 환경에 적용 가능. 멀티스레드 기능을 제공해 여러 작업을 동시에 처리 가능
    • 운영체제 및 하드웨어에 독립적이며 이식성이 강함
    • 캡슐화가 가능하고 재사용성이 높음
  • C++
    • C언어에 객체지향 개념을 적용한 언어.
    • 모든 문제를 객체로 모델링해 표현
  • Smalltalk
    • 최초로 GUI를 제공한 언어

 

구성 요소

  • 객체 : 데이터 + 메소드를 결합시킨 실체
    • 데이터 : 객체들이 갖고 있는 데이터 값들을 단위별로 정의하는 것
    • 메소드 : 객체가 메세지를 받아 실행해야 할 때 구체적 연산을 정의하는 것
  • 클래스 : 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소. 즉, 공통된 특성과 행위를 갖는 객체의 집합
  • 메시지 : 객체들 간 상호작용 하는데 사용되는 수단

 

특징

  • 캡슐화 : 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
  • 정보 은닉 : 다른 객체에 자신의 정보를 숨기고 자신의 연산만을 통해 접근을 허용하는 것
  • 추상화 : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 모델화하는 것
  • 상속성 : 이미 정의된 부모 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것.
  • 다형성 : 하나의 메세지에 대해 각 클래스가 갖고 있는 고유한 방법으로 응답할 수 있는 능력

스크립트 언어

 

HTML 문서 안에 직접 프로그래밍 언어를 삽입해 사용하는 것.

기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석해 동작하게 하는 언어.

 

장점

  • 컴파일 없이 바로 실행해 결과를 바로 확인 가능
  • 배우고 코딩하기 쉬움
  • 개발 시간이 짧음
  • 소스 코드를 쉽고 빠르게 수정할 수 있음

단점

  • 코드를 읽고 해석해야 해 실행 속도가 느림
  • 런타임 오류가 많이 발생

 

종류

  • 자바 스크립트
    • 클라이언트용 스크립트 언어
    • 웹 페이지 동작 제어, 변수 선언 필요 없음.
  • ASP
    • 서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어
  • JSP
    • Java로 만들어진 서버용 스크립트 언어. 
  • PHP
    • 서버용 스크립트 언어. 
    • C, Java 등과 문법이 유사해 배우기 쉬워 웹 페이지 제작에 많이 사용
  • 파이썬
    • 객체지향 기능을 지원하는 대화형 인터프리터 언어. 플랫폼에 독립적이고 문법이 간단함.

선언형 언어

 

프로그램이 수행해야 할 문제를 기술하는 언어. 목표를 명시하고 알고리즘은 명시하지 않는다.

 

함수형 언어

  • 수학적 함수를 조합해 문제를 해결하는 언어. 재귀 호출이 자주 이용됨. 병렬 처리에 유리.
  • LISP

논리형 언어

  • 기호 논리학에 기반을 둔 언어. 반복문이나 선택문을 사용하지 않는 비절차적 언어
  • PROLOG

 

장점 : 가독성이나 재사용성이 좋음, 작동 순서를 구체적으로 작성하지 않아 오류가 적음, 프로그램 동작을 변경하지 않고도 관련 값 대체 가능

 

종류

  • HTML
    • 인터넷 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어
  • LISP
    • 인공지능 분야에 사용되는 언어.
    • 기본 자료 구조가 연결 리스트 구조. 재귀 호출 많이 사용
  • PROLOG
    • 논리학을 기초로 한 고급 언어. 인공 지능 분야에서 논리적 추론이나 리스트 처리 등에 주로 사용
  • XML
    • 기존 HTML의 단점을 보완해 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어.
  • Haskell
    • 함수형 프로그래밍 언어. 부작용이 없음. 코드가 간결하고 에러 발생 가능성이 낮음.

예외 처리

 

예외 : 프로그램의 정상적 실행을 방해하는 조건이나 상태

 

이러한 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴을 수행하도록 하는 것.

 

java 예외 객체

  • ClassNotFoundException : 클래스를 찾지 못한 경우
  • NoSuchMethodException : 메소드를 찾지 못한 경우
  • FileNotFoundException : 파일을 찾지 못한 경우
  • InterruptedIOException : 입*출력 처리가 중단된 경우
  • ArithmeticException : 0으로 나누는 등 산술 연산에 대한 예외가 발생한 경우
  • IllegalArgumentException : 잘못된 인자를 전달한 경우
  • NumberFormatException : 문자열을 숫자 형식으로 변환한 경우
  • ArrayIndexOutOfBoundsException : 배열의 범위를 벗어난 접근을 시도한 경우
  • NegativeArraySizeException : 0보다 작은 값으로 배열 크기를 지정한 경우
  • NullPointerException : 존재하지 않은 객체를 참조한 경우

'그 외 공부 > 정처기-실기(완)' 카테고리의 다른 글

6장 화면 설계  (0) 2021.07.02
5장 서버 프로그램 구현  (0) 2021.06.29
4장 통합 구현  (0) 2021.06.27
3장 데이터 입*출력 구현  (0) 2021.06.27
2장 요구사항 확인  (0) 2021.06.26

+ Recent posts