4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 132 ~ 139
132. 데이터 타입
: 변수에 저장될 데이터의 형식을 나타내는 것.
- 정수타입(Integer)
- 부동 소수점 타입 (Floating Point)
- 문자 타입 (Character)
- 문자열 타입 (Character String)
- 불린 타입 (Boolean)
- 배열 (Array)
1) C/C++
- 구조체 정의 : struct 사용
데이터 타입 | 크기 | |
문자 | char | 1 Byte |
부호없는 문자형 | unsigned char | 1 Byte |
정수 | short | 2 Byte |
int | 4 Byte | |
long | 4 Byte | |
long long | 8 Byte | |
부호없는 정수형 | unsigned short | 2 Byte |
unsigned int | 4 Byte | |
unsigned long | 4 Byte | |
실수 | float | 4 Byte |
double | 8 Byte | |
long double | Byte |
2) JAVA
데이터 타입 | 크기 | |
문자 | char | 2 Byte |
정수 |
byte | 1 Byte |
short | 2 Byte | |
int | 4 Byte | |
long | 8 Byte | |
논리 | boolean | 1 Byte |
실수 | float | 4 Byte |
double | 8 Byte |
3) Python
데이터 타입 | 크기 | |
문자 | str | 무제한 |
정수 | int | 무제한 |
실수 | float | 8 Byte |
complex | 16 Byte |
- 파이썬의 시퀀스 자료형
- 리스트: 다양한 자료형의 값을 연속적으로 저장. 개수 조정 가능
- 튜플 : 연속적 저장, 요소 추가, 삭제, 변경은 불가
- range : 연속된 숫자 생성.
133. 변수
: 변할 수 있는 값을 의미.
1) 변수명 작성 규칙
- 영문자, 숫자, 언더바 사용가능
- 첫 글자는 영문자나 언더바로 시작. 숫자 불가능
- 공백이나 특수문자 불가능
- 대소문자 구분
- 예약어 사용 불가 ( do, for, while, case, default, else, if, switch, break, continue, goto, return, ...)
- 변수 선언시 문장 끝에 세미콜론 붙이기.
>> 상수로 만들기 : const 붙이기. (변하지 않음)
2) 기억 클래스
: 변수 선언 시 메모리 내에 변수값을 저장하기 위한 기억영역 결정하는 작업.
- 자동 변수 auto : 함수나 코드의 범위를 한정하는 블록 내에서 선언되는 변수. 초기화하지 않으면 쓰레기값이 저장됨 (메모리의 데이터를 변경하기 전 마지막으로 남아 있던 데이터).
- 외부 변수 extern : 현재 파일이나 다른 파일에서 선언된 변수나 함수를 참조하기 위한 변수. 초기화하지 않으면 0으로 초기화됨.
- 정적 변수 static : 내부 정적 변수 ( 함수나 블록 내에서 선언) / 외부 정적 변수 (함수 외부에서 선언. 모든 함수에서 사용가능). 초기화하지 않으면 0으로 초기화됨.
- 레지스터 변수 register : 메모리가 아닌 CPU 내부의 레지스터에 기억영역을 할당받는 변수. 자주 사용되는 변수를 레지스터에 저장하여 처리 속도를 높이기 위해 사용.
** 가비지 콜렉터 : 변수를 선언만 하고 사용하지 않으면 메모리 공간을 강제로 해제하여 다른 프로그램들이 사용할 수 있도록 하는 것.
3) 변수 선언
: 자료형 변수명 = 값;
134. 연산자
1) 산술 연산자
- 우선순위 (낮>>높) : +- > */% > ++ --
+ | 덧셈 |
- | 뺄셈 |
* | 곱셉 |
/ | 나눗셈 |
% | 나머지 |
++ | 증가 연산자 |
-- | 감소 연산자 |
- 전치 : 변수의 값을 먼저 증감시킨 후 변수를 연산에 사용. - 후치 : 먼저 변수를 연산에 사용한 후 변수의 값을 증감시킴. |
2) 관계 연산자 : 참/거짓을 결과로 얻음 (참은 1, 거짓은 0)
== | 같다 |
!= | 같지 않다 |
> | 크다 |
>= | 크거나 같다 |
< | 작다 |
<= | 작거나 같다 |
3) 비트 연산자 : 비트별(0, 1)로 연산하여 결과를 얻음.
& | and 모든 비트가 1일 때만 1 |
^ | xor 모든 비트가 같으면 0, 하나라도 다르면 1 |
| | or 모든 비트 중 한 비트라도 1이면 1 |
~ | nor 각 비트의 부정, 0이면 1/ 1이면 0 |
<< | 왼쪽 시프트 비트를 왼쪽으로 이동 |
>> | 오른쪽 시프트 비트를 오른쪽으로 이동 |
4) 논리 연산자 : 참/거짓 (참은 1/ 거짓은 0)
! | not 부정 |
&& | and 모두 참이면 참 |
|| | or 하나라도 참이면 참 |
5) 대입 연산자
+= | a+=1 | a= a+1 |
-= | a -= 1 | a= a-1 |
*= | a *= 1 | a = a*1 |
/= | a /= 1 | a = a/1 |
%= | a %= 1 | a = a%1 |
<<= | a <<=1 | a = a<<1 |
>>= | a >>=1 | a = a>>1 |
6) 조건 연산자
- 형식 : 조건 ? 수식1 : 수식 2;
- 조건의 수식이 참이면 수식1, 거짓이면 수식2 실행.
7) 기타 연산자
sizeof | 자료형의 크기 표시 |
, (콤마) | 한 줄에 두개 이상의 수식을 작성하거나 변수를 정의 (순서 연산자) |
(자료형) | 캐스트 연산자. 다른 자료형으로 변환한다. |
8) 연산자 우선순위
단항 연산자 | ! ~ ++ -- sizeof |
산술연산자 | * / % |
+ - | |
시프트 연산자 | << >> |
관계 연산자 | < <= > >= |
== != | |
비트연산자 | & ^ | |
논리연산자 | && || |
조건연산자 | ? : |
대입 연산자 | = += -= *= /= %= <<= >>= |
순서 연산자 | , |
135. 데이터 입출력
- C언어 표준 입출력 함수
1) scanf(서식 문자열, 변수의 주소) : 키보드로 입력받아 변수에 저장하는 함수. (입력받을 데이터의 자료형, 자릿수 등을 지정 가능)
- %d : 정수형 10진수
- %u : 부호없는 정수형 10진수
- %o : 정수형 8진수
- %x : 정수형 16진수
- %c : 문자
- %s : 문자열
- %f : 소수점 포함하는 실수
- %e : 지수형 실수
- %ld : long형 10진수
- %lo : long형 8진수
- %lx : long형 16진수
- %p : 주소를 16진수로 입출력
2) printf(서식 문자열, 변수) : 인수로 주어진 값을 화면에 출력하는 함수.
- 제어문자
- \n : new line
- \b : backspace
- \t : tab
- \r : carriage return 커서를 현재줄의 처음으로 이동
- \0 : null
- \' : single quote
- \" : double quote
- \a : alert 스피커로 벨소리 출력
- \\ : backslash
- \f : form feed 한 페이지를 넘긴다.
3) 기타
- getchar() : 키보드로 한 문자를 입력받아 변수에 저장하는 함수
- gets() : 키보드로 문자열을 입력받아 변수에 저장. 엔터 누르기 전까지 하나의 문자열로 인식
- putchar() : 인수로 주어진 한 문자를 화면에 출력
- puts() : 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동.
136. 제어문
1) 단순 if문: 조건이 참일때만 실행.
if(조건)
실행할 문장1;
else
실행할 문장2;
2) 다중 if문: 조건이 여러개일 때 사용.
3) switch문 : 조건에 따라 분기할 곳이 여러 곳인 경우.
switch(수식)
{
case 레이블1:
실행할 문장1;
break;
case 레이블2:
실행할 문장2;
break;
...
default:
표준 실행문장;
}
4) goto문 : 프로그램 실행중 현재 위치에서 원하는 다른 문장으로 건너뛰어 수행을 계속하기 위해 사용.
goto 레이블;
레이블:
실행할 문장
5) 반복문
137. 반복문
: 일정한 횟수를 반복.
1) for문 : 초기값, 최종값, 증가값을 지정.
2) while문 : 조건이 참인 동안 실행할 문장 반복 수행.
3) do~while문 : do문장을 우선 실행하고 조건을 판별하여 조건이 참인 동안 반복 수행.
- break : switch문이나 반복문 안에서 블록 벗어나기
- continue : 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮긴다.
138. 배열과 문자열
- 배열 : 동일한 데이터 유형을 여러 개 사용해야 할 경우 하나의 이름으로 정의해 사용하는 것.
- 배열의 위치는 0부터 시작
- 행 우선으로 데이터가 기억장소에 할당
1) 1차원 배열
- 자료형 변수명 [개수];
2) 2차원 배열
- 변수들을 평면, 즉 행과 열로 조합한 배열
- 자료형 변수명 [행개수][열개수]
- 배열의 초기화 : 선언 시 초기값 지정 가능.
char a[3] = {'a', 'b', 'c'}
int a[2][3] = {{1,2,3}, {4,5,6}};
int a[2][3] = {1,2,3,4,5,6}
- 배열 형태의 문자열 변수
>> char 배열이름[크기]= "문자열"
char a[5] = "love"
139. 포인터
- 포인터 : 변수의 주소.
- C언어에서는 주소를 제어할 수 있는 기능을 제공.
- 포인터 변수 : 변수의 주소를 저장할 때 사용하는 변수. 선언할 때 간접 연산자 *를 붙임. 동적으로 할당되는 메모리 영역인 힙영역에 접근하는 동적 변수!
- 변수의 주소를 알아낼 때는 연산자 &붙임.
- 실행문에서 포인터 변수에 *를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말한다.
ex)
main()
{
int a = 50; //정수형 변수a를 선언하고 50으로 초기화한다.
int *b; //정수형 변수가 저장된 곳의 주소를 기억할 포인터변수 b선언
b = &a; // a의 주소를 포인터변수 b에 저장
*b = *b+20; //b가 가리키는 곳의 값에 20을 더한다.
printf("%d, %d", a, *b); //70, 70
}
1) 포인터와 배열 : 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근할 수 있다.