[과정평가형 정보처리산업기사 필기] 프로그램 언어 활용 #1 기본 문법 활용하기
1-1 변수 활용
* [ 프로그램 언어 ] : 컴퓨터 시스템을 동작시키기 위한 프로그램 작성 언어
* [ 비트 Bit ] : 컴퓨터를 이해하기 위한 가장 기본적인 용어, Binary Digit의 약칭. 0과 1만 구성된 [ 이진법 ]을 이용하며, 컴퓨터 이용 시 흔히 접할 수 있는 1Byte는 [ 8Bit ]를 의미한다.
* 1B < 1KB < 1MB < 1GB < 1TB < 1PB < 1EB
* 컴퓨터 명령 전달 방법 : [ 비트 Bit ]의 0과 1을 컴퓨터가 이해할 수 있는 방식으로 변환되어 전달. [ 전기적 ] 신호(0은 0V, 1은 5V)를 이용하거나 [ 광 ] 신호(불을 깜박이는 횟수의 차이)를 이용하는 방식 등이 있다.
* 컴퓨터 시스템 구조 : 컴퓨터는 전달받은 0과 1의 값들을 정해진 [ 순서 ]대로 실행하며 그 과정에서 [ 처리 Processing ]와 [ 저장 Store ] 등을 수행한다.
* 프로그램 실행 및 데이터 처리는 [ 중앙처리장치 CPU ]에서 수행
* 저장은 [ 기억장치 Memory ]에서 수행
* 중앙처리장치로부터 명령을 받아 데이터를 입력 또는 출력하는 일은 [ 입출력장치 I/O Device ]에서 수행
* 중앙처리장치에서는 목적에 따라 [ 연산 ] 등을 수행
* 연산을 위한 [ 명령어 ]가 실행되고 기록되기 위해서는 일반적으로 [ 인츨 IF-Fetch ]. [ 해석 ID-Decode ], [ 실행 EX-Excute ]. [ 기록 WB-Write Back ]의 단계를 거쳐야 한다.
* 명령어 형식
비트는 그 개수만큼 많은 정볼르 전달할 수 있고, 용도에 따라 [ 필드 Field ]로 나눌 수 있으며, 그 수, 배치 방법, 포함되는 0과 1의 개수를 정의한 것을 명령어 형식이라 한다.
명령어 형식에 따라 [ 정보 ]의 양이 달라지기 때문에 [ 용도 ]에 따라 적절하게 구성해야 한다.
- [ 연산 코드 ] : 수행될 연산을 지정(LOAD, ADD 등)
- [ 오퍼랜드 ] : 연산을 수행하는 데 필요한 데이터 또는 데이터의 주소
* 프로그램은 크게 [ 자료구조 ]와 [ 알고리즘 ]으로 구성된다.
* [ 자료구조 ] : 컴퓨터에 데이터를 삽입, 삭제, 숙정하게 해 주는 [ 논리적인 공간 구조 ]를 의미. 자료 형태에 따라 분류
* [ 단순구조 Simple ] : 프로그래밍 언어에서 제공하는 기본 데이터 타입 (int, float, double, char 등)
* [ 선형구조 Liner ] : 자료들 사이의 선후 관계가 일대일인 구조(연결 자료구조, 순차 자료구조, 스택, 큐, 덱 등)
* [ 비선형구조 Non-Liner ] : 자료들 사이의 선후 관계가 계층 또는 그물 형태를 가지는 구조(트리, 그래프 등)
* [ 파일구조 File ] : 보조기억장치에 데이터 값이 실제로 기록되는 자료 구조(순차 파일, 색인 파일 등)
* [ 알고리즘 ]
- 넓은 의미 : 자료구조와 함께 프로그램을 구성하는 요소
- 좁은 의미 : 어떤 문제에 대한 답을 찾는 해법
* 기본적인 명령어를 통해 알고리즘을 작성할 때 만족시켜야 하는 특성
- [ 입력 ] : 외부로부터 입력되는 자료가 [ 0개 ] 이상이어야 한다.
- [ 출력 ] : 출력되는 결과가 [ 1개 ] 이상이어야 한다.
- [ 명확성 ] : 각 명령어의 의미가 명확하여야 한다.
- [ 유한성 ] : 정해진 단계를 지나면 종료되어야 한다.
- [ 유효성 ] : 모든 명령은 실행이 가능한 연산들이어야 한다.
* 알고리즘의 표현은 프로그래밍 언어 외 [ 자연어 ], [ 순서도 ], [ 의사코드 ] 등을 이용하는 방법이 있다.
* [ 변수 ] : 어떤 값을 주기억장치에 기억하기 위해서 사용하는 공간
* [ 식별자 ] : 프로그램의 구성요소를 구별하기 위한 기준으로, 변수명이 식별자에 속한다.
* [ 바인딩 ] : 변수와 변수에 관련된 속성을 연결하는 과정으로, 프로그램 실행 시간 전에 속성을 연결하는 [ 정적바인딩 ]과 프로그램 실행 시간에 속성을 연결하는 [ 동적바인딩 ]으로 구분된다.
* [ 선언 ] : 변수에 이름, 데이터 타입 등의 속성을 부여하는 작업으로, 선언문을 이용하여 변수 이름을 나열하고 속성을 부여하는 [ 명시적 선언 ]과 별도의 선언문 없이 디폴트 규칙에 의해 속성이 부여되는 [ 묵시적 선언 ]으로 구분된다.
* [ 영역 ] : 이름의 사용되는 범위를 의미하며, 변수를 찾을 때 구조에 기반하는 [ 정적영역 ]과 구조보다는 순서에 기반하는 [ 동적영역 ]으로 구분된다.
* [ 할당 ] : 변수에 메모리 공간을 바인딩하는 작업을 의미한다.
* [ 데이터 타입 ] : 변수가 가질 수 있는 속성 값의 길이 및 성질을 의미한다.
* [ 연산자 ] : 데이터 처리를 위해 연산을 표현하는 기호로 +. - 등과 같은 연산자를 포함한다.
* [ 명령문 ] : 프로그램을 구성하는 문장으로, 지시 사항을 처리하는 단위를 의미한다.
* 데이터 타입 유형
- [ 불린 ] : 조건이 참인지 거짓인지 판단하고자 할 때 사용
- [ 문자 ] : 문자 하나를 저장하고자 할 때 사용
- [ 문자열 ] : 나열된 여러 개의 문자를 저장하고자 할 때 사용
- [ 정수 ] : 정수 값을 저장하고자 할 때 사용
- [ 부동소수점 ] : 소수점을 포함하는 실수 값을 저장하고자 할 때 사용
- [ 배열 ] : 여러 데이터를 하나로 묶어서 저장하고자 할 때 사용
* 데이터 타입을 변수에 적용하기 위한 작성규칙 확인
- 변수는 프로그램 소스코드의 공유, 유지 관리, 표준화 등을 위해 일정한 규칙에 따라 작성
- 개발 표준 정의서, 개발자 가이드, 디자인 정의서 등 변수 작성 규칙을 확인할 수 있는 관련 자료 수집
- 수집된 자료로부터 변수 작성 규칙을 확인
- 자료가 없거나 부족한 경우, 변숫값의 특징이 잘 반영할 수 있도록 변수명을 직접 설정
* 변수 설정 규칙 (파이썬)
- 시용 가능 문자 : 영문 대문자/소문자, 숫자, 밑줄('_')의 사용 가능하다. 대소문자를 구분한다.
- 변수 사용 규칙 : 첫자리에는 숫자를 사용할 수 없다. 변수 이름의 중간에는 공백을 사용할 수 없다.
- 변수 의미 부여 : 데이터 값의 의미나 역할을 표현할 수 있다. 이미 사용되고 있는 예약어의 경우 변수로 사용할 수 없다.
* 데이터 타입을 적용하여 변수 사용
(1) 데이터 타입의 판별을 위해 응용소프트웨어의 기능 요건을 명확히 식별한다.
- 요구사항이 명시된 자료 수집 (제안 요청서, 제안서, 인터뷰 결과서 등)
- 수집된 자료로부터 개발하여야 할 기능 요건을 명확히 파악한다.
(성능, 보안 등과 같은 비기능적인 요건들도 만족할 수 있도록 비기능 요구 사항에 대해서도 확인)
- 환경적, 기술적, 비즈니스적인 제약이 있는지 확인하여 개발 범위를 확정한다.
- 계획된 개발 범위 내에서 구현 가능한 응용소프트웨어의 기능을 정의(문서화)한다. : 요구사항 정의서
(2) 기능 요건을 구현하기 위해 개발되어야 할 프로그램을 정의한다.
- 응용소프트웨어의 기능 요건으로부터 개발되어야 할 프로그램을 도출한다.
- 프로그램이 필요로 하는 변수를 식별하여 변수 작성 규칙에 따라 지정한다.
(3) 변수가 가져야 하는 데이터 타입을 정의한다.
- 변수가 가져가야 하는 데이터가 참/거짓을 판별하는 값이어야 하는지 확인한다.
- 변수가 가져야 하는 데이터가 숫자인지, 문자인지 확인한다.
- 변수가 숫자인 경우에는 정수인지, 소수점을 포함하는지 확인한다.
- 동일한 데이터 타입의 데이터를 묶어서 배열 타입을 적용한다.
- 정의된 변수와 데이터 타입에 대한 설계상의 오류는 없는지 파악한다.
* 변수 지정 시 고려사항
- 변수 명의 [ 최대 길이 ]를 확인한다.
- [ 대소문자 ] 구별 여부를 확인한다.
- 사용할 수 있는 문자의 집합을 확인한다.
- 변수명으로 사용이 어려운 [ 키워드 ]를 포함하고 있지 않은지 확인한다.
* Java의 정수 타입
- [ byte ] : 크기 1byte, 범위 -128~127
- [ short ] : 크기 2byte, 범위 -32,768~32,767
- [ int ] : 크기 4byte, 범위 -2,147,483,648~2,147483,647
- [ long ] : 크기 8byte, 범위 -9,223,372,036,854,775,808~9,223,372,036,854,775,807
1-2 연산자와 명령문 활용
* 산술 연산자 : 가장 일반적으로 사용되는 연산자. + - * / %
* 시프트 연산자 : 비트를 이동시키는 연산자. >> <<
* [ 관계 연산자 ] : 두 피연산자의 크기를 비교하는 연산자. > < >= <= == !=
* [ 논리 연산자 ] : 두 피연산자의 논리적인 관계를 정의하는 연산자. && ||
* 비트 연선저 : 0과 1의 각 자리에 대한 연산을 수행. & | ^
* [ 명령문 ] : 프로그램을 구성하는 문장. 지시 사항을 처리하는 단위
* 조건문
- [ IF ] 문 : 조건의 참, 거짓 여부에 따라 실행 경로를 선택. FORTRAN에서 처음 사용. 산술 또는 논리적으로 비교가 가능.
- [ case / swith ] 문 : 조건에 따라 여러 개의 선택 경로 중 하나를 취하고자 할 때 사용. 조건이 동일한지의 여부만 확인.
* 반복문 : 특정 부분을 조건이 만족할 때까지 실행하도록 하는 명령문
- [ while ] 문 : 수식이 거짓이 될 때까지 해당 문장을 반복해서 실행
- [ for ] 문 : 시작과 종료 조건을 지정하여 참인 동안 해당 문장을 반복해서 실행
- [ do ] 문 : 초깃값, 최종 값, 증감 값을 지정하여 반복을 실행.
* [ 무한루프 ] : 반복문에 특별한 조건이 없으면 무한 처리를 반복
- [ break ] : 반복문을 중지하도록 하는 명령어
- [ continue ] : 다음 반복으로 넘어갈 수 있도록 하는 명령어
* 연산 표기법
- 전위(Prefix) 표기법 : 연산자를 먼저 쓰고 피 연산자를 뒤에 쓴다. ++a
- 중위(Infix) 표기법 : 실생활에 사용되는 방식과 동일하게 쓰는 표기법. a + b
- 후위(Postfix) 표기법 : 피연산자를 먼저 쓰고 연산자를 맨 뒤에 쓰는 표기법. a++
* Java 연산자의 우선순위
1. 괄호. 대괄호 ( ) [ ]
2. 부정, 증감 산술 연산자 ! ~ ++ --
3. 곱셉, 나눗셈 산술 연산자 * / %
4. 덧셈, 뺄셈 산술 연산자 + -
5. 시프트 연산자 << >> >>>
6. 관계 연산자 < <= > >= == !=
7. 논리 연산자 & ^ | && ||
8. 삼항 연산자 ? :
9. 대입 연산자 = += -= *= /= %= <<= >>= &= ^= ~=
1-3 사용자 정의 자료형 활용
* 사용자 정의 자료형 : 사용자가 직접 자료형을 만드는 것.
- 열거체 : 괄호 안에 연속적인 값이 들어가는 자료형. 특정 값을 넣어주지 않으면 1씩 늘어남. 상수 배열.
- 구조체 : 괄호 안에 멤버 변수를 사용하는 자료형. 내부에 멤버 변수 자료형을 마음대로 선언 가능. 멤버 함수의 작성도 가능.
- 공용체 : 공용체명 작성. 구조체와 유사하지만 범주가 크다. 구조체를 멤버로 사용할 수 있다.
* [ 추상화 ]
- 복잡한 문제의 본질을 이해하기 위해 세부 사항은 배제하고 중요한 부분을 중심으로 간략화하는 기법
- 불필요한 것들은 제외하고, 공통적으로 사용 가능한 큰 틀을 구상
- 큰 틀에서 데이터가 저장되어야 하는 변수 부분과 실제 행위를 가능하게 하는 명령 부분을 분리하여 식별
- 변수에 대한 데이터 타입을 정의하고, 상세한 부분은 다루지 않는 추상적인 형태로 구조화
- 기능 추상화 : 입력 자료를 출력 자료로 변환하는 과정을 추상화
- 자료 추상화 : 자료와 자료에 적용할 수 있는 오퍼레이션을 함께 정의
- 제어 추상화 : 외부 이벤트에 대한 반응을 추상화
* [ 상속 ] : 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용 또는 확장하는 특성.
- 단일 상속 : 상위 수준의 그룹이 하나일 때. Java는 단일 상속만 가능
- 다중 상속
* [ 구체화 ] : 하위 수준 그룹이 상위 수준 그룹의 추상적인 부분을 구체화하는 것