2022. 8. 31. 15:09ㆍ정처기(필기)/프로그래밍언어활용
(1) 진수
- 특정 개수의 숫자만을 이용하여 수를 나타내는 수 체계이다.
- 10진수 이하일 때는 0~9를 사용하지만, 10진수 초과할 경우는 영어 알파벳을 이용한다.
1. 진수 변환
[1] : 10진수를 n진수로 변환
- 10진수 값을 몫이 n보다 작을 때까지 n으로 나누고 나머지 값들을 표시한 후에 나머지 값들을 읽는다.
[2] : n진수를 10진수로 변환
- n진수에서 마지막 자리는 자리 숫자에 자리값인 n0을 곱하고, 마지막에서 두번째 자리는 자리 숫자에 자리값인 n1을 곱하고, 마지막에서 세 번째 자리는 자리 숫자에 자릿값인 n2를 곱하고, .....
(2) 아스키 코드
- 미국 ANSI에서 표준화한 정보교환용 부호체계이다.
- 영문 키보드로 입력할 수 있는 모든 기호가 할당된 기본적인 부호체계이다.
- 0 -> NULL
- 32 -> ' '(Space)
- 48 -> 0
- 49 -> 1
- 65 -> A
- 66 -> B
- 67 -> C
- 68 -> D
- 97 -> a
- 98 -> b
- 99 -> c
- 100 -> d
(3) 데이터 타입
- 데이터 타입은 프로그래밍 언어에서 실수치, 정수 자료형과 같은 여러 종류의 데이터를 식별하는 형태이다.
- 메모리 공간을 효율적으로 사용하고 2진수 데이터를 다양한 형태로 사용하기 위해 존재한다.
1. 데이터 타입 유형
유형 | 설명 |
불린 (Boolean) |
조건이 참인지 거짓인지 판단하고자 할 때 사용하는 데이터 타입 C언어에서는 미지원 자바에서는 참일 경우 true, 거짓일 경우 false로 표현 파이썬에서는 참일 경우 True, 거짓일 경우 False로 표현함 |
문자 (Character) |
문자 하나를 저장하고자 할 때 사용하는 데이터 타입 메모리에 저장은 숫자로 저장됨 |
문자열 타입 (String) |
나열된 여러 개의 문자를 저장하고자 할 대 사용하는 타입 C언어는 char 배열을 사용하여 구현 |
정수 타입 (Integer) |
정숫값을 저장하고자 할 때 사용하는 데이터 타입 |
부동 소수점 (Floating Point) |
소수점은 포함하는 실숫값을 저장하고자 할 때 사용하는 데이터 타입 |
(4) 기본 저장 공간
1. 변수
[1] : 일반 변수
- 변수는 저장하고자 하는 어떤 값이 있을 때, 그 값을 주기억장치에 기억하기 위한 공간이다.
- 자료형과 변수명을 작성하여 변수를 생성하는 과정이다.
- C, 자바에서는 변수 선언을 하고, 파이썬에서는 별도로 변수 선언을 하지 않는다.
[2] : static 변수
- static 변수는 프로그램이 시작될 때 변수를 초기화하고, 프로그램이 종료되기 전까지 메모리가 유지되는 변수이다.
- 변수를 static으로 생성하면 처음에 한 번만 초기화가 되며, 함수에 의해서 변수 선언 부분이 여러 번 호출되더라도 초기화되지 않는다.
2. 배열
- 배열은 같은 타입의 변수들로 이루어진 집합이다.
[1] : C언어에서 배열 선언
- 배열 요소 개수에 정의된 숫자만큼 같은 타입의 데이터 공간이 할당된다.
- 초깃값을 선언하지 않응ㄹ 경우 쓰레깃값이 저장된다.
- 배열 요소 개수보다 적은 개수만큼 초기화할 경우 초깃값이 명시되지 않은 값들은 자동으로 0으로 초기화된다.
[2] : 자바에서 배열 선언
- 배열 요소 개수에 정의된 숫자만큼 같은 타입의 데이터 공간이 선언된다.
- 배열 요소 개수를 명시하지 않고 초깃값이 정의되어 있을 경우 초깃값 개수만큼 공간이 선언된다.
- 초깃값을 선언하지 않을 경우 정수일 때는 0, 실수일 때는 0.0, 문자열일 때는 NULL이 저장되어 있다.
- 불린, 문자, 정수, 실수 등을 배열로 선언할 때 사용한다.
- 자바에서 배열의 크기를 구할 때는 length 속성을 사용한다.
[3] : 2차원 배열 선언
① C언어의 2차원 배열 선언
- (행의 개수) * (열의 개수)에 정의된 숫자만큼 같은 타입의 데이터 공간이 할당된다.
- 초깃값을 선언하지 않으면 쓰레깃값이 정의된다.
- (행의 개수) * (열의 개수)보다 적은 개수만큼 초기화할 경우 초깃값이 명시되지 않은 값들은 0으로 초기화된다.
② 자바의 2차원 배열 선언
- 배열 요소 개수에 정의된 숫자만큼 같은 타입의 데이터 공간이 선언된다.
- 배열 요소 개수를 명시하지 않고 초깃값이 정의되어 있을 경우 초깃값 개수만큼 공간이 선언된다.
- 초깃값을 선언하지 않을 경우 정수일 때는 0, 실수일 때는 0.0, 문자열일 때는 NULL이 저장되어 있다.
- 불린, 문자, 정수, 실수 등을 배열로 선언할 때 사용한다.
- 자바에서 배열의 크기를 구할 때는 length 속성을 사용한다.
3. 포인터
- 포인터는 변수의 주솟값을 저장하는 공간이다.
ex)
int a = 10;
int *b = &a;
선언법
데이터_타입* 포인터_변수명 = &변수명;
-> 데이터 타입 뒤에 *를 붙이면 주소를 저장하는 포인터 변수라는 의미이고, 일반 변수명에 &를 붙이면 해당 변수명의 주솟값이다.
-> int형 변수를 가리키는 포인터 변수 선언 시 int*를, char형 변수를 가리키는 포인터 변수 선언 시 char*를, float형 변수를 가리키는 포인터 변수 선언 시 float*를 사용해야 한다.
- 주소에 해당하는 값을 가리킬 때에는 *를 사용한다.
ex)
int a = 10;
int* b = &a;
printf("%d %d", a, *b); //b가 가리키는(*) 값은 a이므로 *b와 a는 같음
4. 배열과 포인터
[1] : 1차원 배열과 1차원 포인터
- 1차원 배열에서 배열명만 단독으로 사용할 경우 1차원 포인터와 동일하다.
- 1차원 배열일 때 배열명[요소] 형태, *(배열명+요소), 1차원 포인터일때 포인터[요소] 형태, *(포인터+요소)일 경우 값을 가리킨다.
- 데이터_타입 배열명[요소];일때 다음 코드는 동일하다.
배열의 주소 : 배열명 == &배열명[0];
배열의 0번지 값 : 배열명[0] == *배열명;
[2] : 2차원 배열과 1차원 포인터
- 2차원 배열에서 배열명만 단독으로 사용할 경우 2차원 포인터와 동일하다.
- 2차원 배열일 때 배열명[요소] 형태, *(배열명+요소)는 1차원 포인터와 동일하고, 1차원 포인터에 대해 *과 [ ]을 이용해야 값을 가리킬 수 있다.
#include <stdio.h>
void main() {
int a[3][2] = {1,2,3,4,5,6};
int *p = a[1];
printf("%d %d %d\n", *a[0], *a[1], *a[2]); //1 3 5
//a 형태는 2차원 포인터와 같으므로 *을 두 번 붙여야 값을 가리킬 수 있음
printf("%d %d %d\n", **a, **(a+1), **(a+2)); //1 3 5
printf("%d %d \n", *p, *(p+1)); //3 4
printf("%d %d\n", p[0], [1]); //3 4
}
[3] : 2차원 배열과 포인터 배열
#include <stdio.h>
void main() {
int a[3][2] = {1, 2, 3, 4, 5, 6};
int *p[3] = {a[2], a[0], a[1]};
printf("%d %d %d\n", a[0][0], a[1][0], a[2][0]); //1 3 5
printf("%d %d %d\n", *a[0], *a[1], *a[2]); //1 3 5
printf("%d %d %d\n", p[1][0], p[2][0], p[0][0]); //1 3 5
printf("%d %d %d\n", *p[1], *p[2], *p[0]); //1 3 5
}
[4] : 2차원 배열과 2차원 포인터
- 2차원 배열에서 배열명만 단독으로 사용할 경우 2차원 포인터와 동일하다.
- 2차원 배열일 때 배열명[요소],[요소], *배열명[요소], **(배열명+요소)일 경우 값을 가리킨다.
#include <stdio.h>
void main() {
int a[3][2] = {1, 2, 3, 4, 5, 6};
int (*p)[2] = a;
int (*q)[2] = a+1;
printf("%d %d %d\n", a[0][0], a[0][1], a[1][0]); //1 2 3
printf("%d %d %d\n", p[0][0], p[0][1], p[1][0]); //1 2 3
printf("%d %d %d\n", q[0][0], q[0][1], q[1][0]); //3 4 5
}
[5] : 1차원 배열과 문자열
- 문자열을 초기화할 때 마지막에 NULL 문자가 삽입되므로 초기화하는 글자수보다 1 이상 큰 값으로 배열을 선언한다.
- printf 함수에 %s를 이용하여 문자열을 읽고 출력하는데, printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작 주소부터 NULL 직전 값까지 읽어서 출력한다.
#include <stdio.h>
void main() {
char a[7] = "Hello";
printf("%s\n", a); //Hello
printf("%s\n", a+1); //ello
a[4] = NULL;
printf("%s\n", a+1); //ell
}
[6] : 2차원 배열의 문자열
- 문자열을 여러 개 정의할 때 2차원 배열을 사용한다.
- printf 함수에서 %s를 이용하여 문자열을 읽고 출력하는데, printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작 주소부터 NULL 직전값까지 읽어서 출력한다.
#include <stdio.h>
void main() {
char a[2][8] = {"Hello", "Jonny"};
printf("%s\n", a[0]); //Hello
printf("%s\n", a[1]); //Jonny
a[0][4] = NULL;
printf("%s\n", a[0]+2); //ll
printf("%s\n", a[1]+3); //nny
}
'정처기(필기) > 프로그래밍언어활용' 카테고리의 다른 글
기본문법 활용하기 -5(자료형, 클래스 등) (0) | 2022.09.01 |
---|---|
기본문법 활용하기 - 4(표준 함수) (0) | 2022.09.01 |
기본 개발환경 구축 (0) | 2022.06.13 |
네트워크 기초 활용 (0) | 2022.06.12 |
프로세스 스케줄링 (0) | 2022.06.10 |