S1. 프로그래밍 언어활용
프로그래밍 언어
컴퓨터 시스템을 동작시키기 위한 프로그램 작성 언어
프로그램 : 명령어들의 조합으로 구성
명령어 : 비트(Bit)로 작성 또는 변환되어 컴퓨터가 이해할 수 있도록
비트(Bit; Binary Digit) : 정보의 최소 단위. 0과 1로 구성.
| 바이트 (Byte) | 1 byte = 8 bit (1bit = 0.125 byte) |
| 킬로바이트(KB) | 1KB = 2의 10승 byte |
| 메가바이트(MB) | 1MB = 2의 20승 byte |
| 기가바이트(GB) | 1GB = 2의 30승 byte |
| 테라바이트(TB) | 1TB = 2의 40승 byte |
| 페타바이트(PB) | 1PB = 2의 50승 byte |
| 엑사바이트(EB) | 1EB = 2의 60승 byte |
컴퓨터는 전달받은 0과 1의 값을 정해진 순서대로 실행, 처리, 저장함.
- 중앙처리장치(CPU) : 프로그램 실행 및 데이터 처리 (인출-해석-실행-기록)
- 기억장치 : 저장
- 입출력 장치 (I/O Device) : CPU로부터 명령을 받아 데이터를 입력, 출력
프로그램 기본 용어
- 변수(Var; Variable) : 어떤 값을 주기억장치에 기억하기 위해 사용하는 공간
- 식별자 : 변수명. 프로그램의 구성요소를 구별하기 위한 기준
- 바인딩 : 변수와 변수에 관련된 속성을 연결하는 것.
- 정적 바인딩 : 프로그램 실행시간 전에 속성 연결
- 동적 바인딩 : 프로그램 실행 시간 중에 속성 연결
- 선언 : 변수에 이름, 데이터 타입 등의 속성 부여하는 것
- 명시적 선언 : 선언문 이용해 변수이름 나열, 속성 부여
- 묵시적 선언 : 별도의 선언문X. 디폴트 규칙에 의해 이미 지정되어 있는 속성
- 영역 : 이름이 사용되는 범위
- 정적 영역 : 변수를 찾을 때 구조에 기반
- 동적 영역 : 변수를 찾을 때 순서에 기반
- 할당 : 변수에 메모리 공간을 바인딩하는 작업 (=직접 입력하는 것)
- 데이터 타입 : 변수가 가질 수 있는 속성 값의 길이 및 성질
- 연산자 : 데이터 처리를 위해 연산을 표현하는 기호
- 명령문 : 프로그램을 구성하는 문장. 지시사항을 처리하는 단위
- 예약어 : 프로그래밍 언어에서 이미 사용하고 있는 단위 (if, short, union, if, char 등)
1. 변수
변수 선언 규칙 : 영어 대소문자 구분&숫자&밑줄(_) 가능, 숫자로 시작X, 공백X, 예약어는 변수명으로 사용X
2. 데이터 타입
- 변수에 들어갈 값의 특성을 구분하여 그 특성에 맞게 저장할 수 있도록 하는 데이터 속성 값의 길이 및 성질
# 데이터 타입 유형
* 불린 타입 : 참과 거짓 (T, F)
* 문자 타입 : 문자 하나 저장 [char a = 'A'] (기호 : ' ' )
* 문자열 타입 : 문자열 저장 [ string a = "welcome" ] (기호 : " " )
* 정수 타입 : 정수값 저장
| 구분 | 타입 | 크기 | 범위 |
| Java | byte | 1byte | |
| short | 2byte | ||
| int | 4byte | ||
| long | 8byte | ||
| C/C++ | short | 2byte | |
| unsigned short | 2byte | ||
| int | 2byte (or 4byte) | ||
| unsigned int | 2byte (or 4byte) | ||
| long | 4byte | ||
| unsigned long | 4byte |
* 부동 소수점 타입 : 소수점을 포함하는 실숫값 저장
* 배열 타입 : 여러 데이터를 하나로 묶어서 저장. C언어는 배열공간(크기) 선언0, Java는 X(비워둠)
Array[5] = {1,2,3,4,5};
Array[] = {1,2,3,4,5};
3. 서식 지정자
- 변수, 값을 출력문을 통해 출력하기 위해 사용
- printf : 문자열만 출력
- 이스케이프문(탈출문) : 문자열 선언을 탈출하여 변수를 인식시키는 것. 출력문 내에서 특정 단축키 및 단어를 출력하기 위한 구문 (\n : 강제개행)(\t : 탭)
| 정수형 | %d | 부호 있는 10진수 정수 |
| %u | 부호 없는 10진수 정수 | |
| %o | 부호 없는 8진수 정수 | |
| %x | 부호 없는 16진수 정수 | |
| 실수형 | %f | 소수점 6번째까지 실수 |
| %e | 실수 지수 표현 | |
| %g | 숫자값의 크기에 따라 %e, %f로 표현 | |
| 문자형 | %c | 단일문자 출력 charcter |
| %s | 문자열 출력 string |
char의 경우 정수를 ASCII 코드로 변환하기 때문에 문자를 출력.
반대로 A의 값을 %d(정수형)로 출력하면 ASCII 코드 A에 해당하는 숫자를 출력
주관식 답안 작성할때 강제개행(\n)과 띄워쓰기에 주의해야 함.
!!! 강제개행(\n)이 나오면 다음줄로 내려가서 답을 써야함. 없으면 같은 줄에 한 칸 띄우고 답 쓰기.
4. 연산자
1) 산술 연산자 (+, -, *, /, %)
우선순위는 일반 수학과 같음.
2) 시프트 연산자
- 10진수 값을 2진수로 변환하여 비트의 위치 이동
- << (Left) : 우측 값만큼 비트의 위치를 좌측으로 이동
- >> (Right) : 우측 값만큼 비트의 위치를 우측으로 이동
int num = 5; // 0000 0101
int result = num << 2 // 0001 0100
printf("%d", result); // 20 출력
3) 관계 연산자
- 크기 비교, 참거짓 비교(T or F)
- > (초과), < (미만), >= (이상), <= (이하)
- == (같다) // =는 "대입하다"임
- != (다르다) // 순서도에서는 !=. ≠, <> 모두 가능하지만 프로그래밍에서는 != 만 가능함. // !은 Not 연산자로 논리값을 역전시켜 출력함.
4) 논리 연산자
- 두 피연산자 사이의 논리적인 관계 정의
- && (and) : 두 가지 논리값이 모두 참일 때 T, 아니면 F
- ∥ (or) : 둘 중 하나라도 참이면 T, 아니면 F
5) 비트 연산자
- & (and) : 두 값을 비트(2진수)로 연산하여 모두 참이면 T, 아니면 F
- ㅣ (or) : 두 값을 비트(2진수)로 연산하여하나라도 참이면 T, 아니면 F
- ^ (xor) : 두 값을 비트(2진수)로 연산하여서로 다르면 T, 아니면 F
6) 증감 연산자
- 피연산자를 1씩 증가시키거나 감소시킬 때 사용하는 연산자
- 전위 연산자 (++a, --a) : 증감 후, 계산
- 후위 연산자 (a++, --a) : 계산하고 증감.
7) 복합 대입 연산자
- += a +=2 → a = a+2
- -= a -=2 → a = a-2
- *= a *=2 → a = a*2
- /= a /=2 → a = a/2
- %/ a %=2 → a = a%2
8) 삼항 연산자
- 조건에 부합할 경우, T or F 에 해당하는 값을 출력하는 연산자
조건 ? True : False
// ? = 조건과 결과 구분
// : = 참과 거짓 구분
9) 진법 입력 및 출력 연산자
| 구분 | C언어 | 파이썬 | Java |
| 입력 | 2진법 = 0b 8진법 = 0 16진법 = 0x |
2진법 = 0b 8진법 = 0o 16진법 = 0x |
2진법 = Integer.valueOf(int, 2) 8진법 = Integer.valueOf(int, 8) 16진법 = Integer.valueOf(int, 16) |
| 출력 | 2진법 = %d 8진법 = %o 16진법 = %x |
2진법 = bin() 8진법 = oct() 16진법 = hex() |
2진법 = Integer.toBinaryString(int) 8진법 = Integer.toOctalString(int) 16진법 = Integer.toHexString(int) |
5. 명령문
- 프로그램을 구성하는 문장. 지시사항을 처리하는 단위
1) 조건문
① if문, if-else문
- 조건의 참, 거짓 여부에 따라 실행 경로를 달리함.
- 조건이 맞았을 때, 맞지 않았을 때를 확인. 강제적으로 조건이 맞았을 때는 아래쪽은 실행되지 않고 출력됨.
* C언어, Java
if (조건){ // 중괄호의 경우 두 줄 이상 시에 작성한다.
실행문; // if 구문은 중괄호가 없을 시 하단 1줄까지 인식
}
else if(조건){
실행문;
}
else(조건){
실행문;
}
*파이썬
if 조건:
명령; // 파이썬은 if 부문과 아래 부분에 들여쓰기가 없으면 오류가 발생함
elif 조건:
명령;
else:
명령;
② switch case문
- 조건이 동일한지의 여부만 확인
*C언어, Java
switch(변수){
case 값 : // case조건은 콜론(:)으로 구분. break 로 처리 종료.
실행문;
default : // default = if문의 else
실행문;
}
//break문이 없으면 조건이 만족하는 부분부터 switch문이 종료되는 곳까지 실행문이 모두 실행됨.
2) 반복문 (for문)
- 특정 부분을 조건이 만족할 때까지 실행하도록 함.
- while문, for문, do-while문
- while문, do-while문은 초기값(기준값) 선언이 매우 중요. for문은 구문안에 기준값이 있음.
- while문, do-while문은 조건문만 있어 기준값과 증감문을 따로 지정해야함. for문은 구문안에 기준값과 조건 증감문이 있음.
| for문 | for(기준값; 조건문; 증감문{ 실행문; } |
시작, 종료 조건을 지정하여 참인 동안에는 해당 문장을 반복 실행 |
| while문 | while(조건문){ 실행문; } |
수식이 거짓이 될 때까지 해당 문장을 반복 실행. while문 안에는 증감문이 실행문 안에 포함되어 있어야 함. |
| do-while문 | do{ 실행문; }while(조건문); |
while문과 동일하지만 조건이 부합하지 않더라도 한 번은 반복하게 됨. |
3) 제어문
① break, continue
- break (멈추다) : 해당 반복문을 멈추고, 탈출하는데 사용. [방향성] 해당 반복문이나 조건문에 대해서 아래쪽으로 실행.
- continue (계속하다) : 반복문 유지하면서 다음 반복으로 건너뜀 = [방향성] 아래 구문을 시작하지 않고 다시 위의 반복문으로 돌아간다.
② 함수 (Java : 메소드)
- 반복적인 코드의 사용을 방지하기 위해, 하나의 항을 만들어서 필요할 때마다 해당 값을 호출하여 반환하는 역할을 수행.
자료형 함수명(매개변수)
{
실행문;
return 함수명;
}
예시
int function(int num1, int num2){ // ②
printf("%d %d", num1, num2); // 1 2 출력
return function(num1, num2); // function 함수 재호출 ③
}
int main(){
function(1, 2); // function 함수 호출 ①
}
6. 사용자 정의 자료형
- C, C++, Java와 같은 프로그래밍 언어에서는 사용자가 직접 자료형을 만드는 것이 가능. 이것을 사용자 정의 자료형이라 함.
- C++의 경우 열거체, 구조체, 공용체로 구분해 작성 가능.
1) 열거체
- 괄호 안에 연속적인 값이 들어가는 자료형.
- 특정값을 넣어주지 않으면 1씩 늘어나기 때문에 상수배열이라고도 함.
- 열거체에서 아무 값도 지정해 주지 않으면 초기값은 0이 됨. 숫자를 지정하게 되면 그 숫자로 초기화됨.
(지정한 다음부터는 별도로 지정하지 않아도 1씩 증가함.)
| 구문 | 예시 | 해설 |
| eum { 상수 멤버 1 상수 멤버 2 상수 멤버 3 }; |
eum color { black, red, yellow=10, green}; |
black = 0 red = 1 yellow =10 green = 11 |
2) 구조체
- 괄호 안에 멤버 변수 사용하는 자료형.
- 내부에 멤버 변수 자료형을 마음대로 선언 가능. 멤버 함수 작성도 가능.
| 구문 | 예시 | 해설 |
| struct { 자료형 변수명 1 자료형 변수명 2; 자료형 변수명 3; 반환자료형 함수명() { }; } |
struct Test { int kor; int eng; int mat; }; main() { struct Test t1; t1.kor = 90; t1.eng = 80; t1.mat = 100; } |
- 구조체 정의 후 메인문에서 구조체 변수를 다시 선언한다. - 구조체 변수는 점(.)으로 구조체 멤버에 접근하여 값을 할당한 후 출력한다. |
3) 공용체
- 구조체와 문법은 거의 비슷하나 조금 더 범주가 큼.
- 공용체명을 작성해야 하며, 구조체를 멤버로 사용할 수 있음.
| 구문 | 예시 | 해설 |
| union 공용체명 { 자료형 변수명 1 자료형 변수명 2; 자료형 변수명 3; struct { }; }; |
union Test { int kor; int eng; int mat; }; main() { union Test t1; t1.kor = 90; t1.eng = 80; t1.mat = 100; } |
- 구조체와 문법은 거의 비슷. - 공용체는 구조체와 달리 메모리 공간을 공유하여 크기를 작게 사용하므로 임베디드나 통신분야에서 많이 쓰인다. |
4) 추상화와 상속
추상화 : 세부사항은 배제하고 중요한 부분을 중심으로 간략화 하는것. (복잡한 문제의 본질 이해 위해)
- 기능 추상화 : 입력 자료를 출력 자료료 변환하는 과정을 추상화
- 자료 추상화 : 자료와 자료에 적용할 수 있는 오퍼레이션(Operation)을 함께 정의하는 방법
- 제어 추상화 : 외부 이벤트에 대한 반응을 추상화 하는 방법
상속
- 상위 수준 그룹의 모든 특성을 하위 수준 그룹이 이어받아 재사용, 확장하는 특성
- 단일 상속(상위수준의 그룹이 하나만 존재할 때), 다중상속
구체화
- 하위수준 그룹이 상위수준 그룹의 추상적인 부분을 구체화 시키는 것.
'시험' 카테고리의 다른 글
| #실기 P3 응용 SW 기초 기술 활용 - DB (데이터베이스) (0) | 2023.03.08 |
|---|---|
| #실기 P3 응용 SW 기초 기술 활용 - 네트워크 (0) | 2023.03.07 |
| #실기 P3 응용 SW 기초 기술 활용 - 운영체제 (0) | 2023.03.04 |
| #실기 P2 애플리케이션 테스트 수행 (0) | 2023.02.28 |