연산자
정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는 것
산술 연산자
: 사칙 연산이 기본
: + ,- ,* , / , %
대입 연산자
: 오른쪽에 있는 값을 왼쪽에 대입하는 역할
: = , +=, -=, *=, /= , %=
증감 연산자
증가 연산자와 감소 연산자의 줄임말
- ++a : a의 값을 1 증가시킨 후 연산을 진행
- a++ : 연산을 진행한 후 a의 값을 1 증가
- --a: a의 값을 1 감소시킨 후 연산을 진행
- a--: 연산을 진행한 후 a의 값을 1 감소
관계 연산자
: 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지 어느 쪽이 큰지 작은지 비교하는 연산자
: ==, != , > ,< , <=, >=
논리 연산자
: 두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.
: !(피연산자의 결과를 모두 반대로 만듦) , &&(피연산자가 모두 참이여야 true 리턴) , || (피연산자 중 하나만 참이여도 true 리턴)
분기문
조건: 어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소
if(수행 조건)
{
수행하고 싶은 일
}
if-else 문
: else 문은 '그 밖의' 라는 의미를 갖고 있다.
: else 문을 추가함으로써 이것만 선택할 수 있는 것이 아니라 저것도 선택이 가능하다.
if(수행 조건)
{
수행 조건 만족 시 수행
}
else
{
수행 조건 불만족 시 수행
}
if~else 문 if~else 문
: else if 문을 사용하면 조건 자체가 계속 늘어날 수 있다.
if(수행 조건1)
{
수행 조건 1 만족 시 수행
}
else if(수행 조건2)
{
수행 조건 2 만족 시 수행
}
else
{
수행 조건1, 수행 조건 2 불만족 시 수행
}
반복문
while문
while (반복 조건)
{
반복 문장
}
: 반복 조건을 만족하는 동안 반복 문장을 수행한다.
: 반복 조건을 만족하지 않으면 while문을 빠져 나간다.
이중 while 문
while(expression 1) {
while(expression 2) {
...
}
}
무한 루프
: 반복 수행이 무한하게 일어난다는 것
: 반복 조건이 어느 시점에 무너질 수 있도록 설계
: 무한 루프 안에서 어느 시점에 break 나 return 으로 빠져나올 수 있어야함
for 문
for ( 초기문; 조건문 ; 증감문 )
{
반복하고자 하는 내용
}
break 문
: 반복문 내부에서 특정 조건이 되면 break 를 만나게 되는데, 이를 통해 반복문을 빠져나갈 수 있다.
int a=0;
while(1){
if(a>100){
break;
}
printf("a의 값은 %d 입니다.\n",a);
a++;
}
continue 문
: 반복문 내부에서 특정 조건이 되면 continue 문을 만나게 되는데, 이 때 continue 문 이하의 수행은 무시하고, 다시 반복의 시작점으로 간다. ( skip 하는 기능)
int a = 0;
while (a < 100) {
a++;
if (a > 80 && a < 90)
continue;
}
함수
: 대부분의 프로그래밍 언어는 함수의 집합체이다.
: 함수들이 서로 연동하여 유기적으로 동작한다.
함수의 종류
1. 표준 함수
: 언어에서 기본적으로 제공해주는 함수
=> 함수를 라이브러리화 시켜서 편리하게 사용할 수 있게 한다.
ex) printf
2. 사용자 정의 함수
: 사용자가 자신이 원하는 기능을 직접 만들 수 있다.
함수의 기본 형태
- 데이터 타입: 함수가 리턴하는 값의 타입
- 함수 이름: 함수 기능과 밀접한 이름으로 만드는 것이 좋음
- 인수 목록: 함수에 필요한 값을 전달할 때 사용
- 함수의 내용: 중괄호 사이의 영역 안에서 작성
int add ( int a, int b) {
return a+b;
}
변수의 범위
지역 변수
: 같은 이름이라도 다른 영역의 함수에 속해 있으면 독립된 다른 변수
전역 변수
: 함수 바깥쪽에 선언된 변수
: 전역 변수는 프로그램 시작하자마자 메모리 상에 올라가서 프로그램이 종료될 때 메모리 상에서 소멸된다.
static 변수
: 사전적 의미로 '정지된', '고정상태의' 뜻을 갖는다.
: 지역변수처럼 중괄호 영역에서 선언되지만, 중괄호를 벗어나도 메모리 상에 고정되어 소멸하지 않는다.
배열
- 배열의 타입: 배열 요소들의 타입을 나타낸다.
- 배열의 이름: 각 배열 요소에 접근하기 위해 배열 이름을 나타낸다.
- 배열 길이: 변수의 개수를 나타낸다.
- int array[5] 의 경우 배열 타입은 int, 배열 이름은 array, 길이는 5
int array[5]={1,2,3,4,5};
배열의 복사
- 같은 타입끼리 복사가 가능하다.
- 배열도 배열끼리 복사가 가능하다.
int arr1[5]={1,2,3,4,5};
int arr2[5];
arr2=arr1; // 에러!!
➡️ 배열은 상수이기 때문에 대입 연산자를 통해 값을 넘겨 받을 수 없다.
➡️ 배열은 요소끼리 복사해야 한다. (arr2[0] = arr1[0] .. )
문자열 변수
: 문자열에 이름을 붙여주면 변수로 사용 가능
: 문자열 끝에는 null 문자가 추가된다.
➡️ 컴퓨터가 문자열의 끝을 인식하기 위해 null 을 표시한다.
char str[12] = "Hello World";
포인터
: 포인터 변수의 줄임말로 메모리의 주소값을 저장하고 있는 변수
: 어느 특정 메모리 주소를 가리키거나 향하고 있다는 뜻
포인터 사용 방법
char *pA;
int *pB;
double *pC;
: 포인터 변수 선언시 일반 변수명 앞에 * 기호만 붙여주면 된다. 주소값만 저장하겠다는 의미이다.
int b = 100;
int *pB = &b;
: & 기호를 통해 변수의 주소값을 얻어낼 수 있다.
: 포인터 변수 pB가 변수 b의 주소값을 가리킨다고 표현한다.
포인터와 배열
: 배열의 이름은 해당 배열의 첫 번째 요소의 주소값을 갖는다. 즉 첫 번째 요소의 주소값을 가리키는 포인터라는 의미이다.
: 예를 들어, arr 이라는 이름의 배열이 있을 경우 arr 은 배열을 가리키고 있는 포인터이고, 이는 &arr[0] 의 값과 일치한다.
⚠️ 배열의 이름은 주소값을 갖는 포인터이지만 상수이므로 주소값을 변경할 수 없다.
🌟 배운 점
오늘은 저번 시간에 이어서 컴파일 언어의 기본 문법을 배웠다. 대부분 기본적으로 아는 것들이어서 복습을 하는 느낌이었다. 다른 언어에서 볼 수 없는 컴파일 언어의 특이한 개념은 포인터인 것 같다. 예전에 처음 배웠을 때는, 낯설고 어렵게만 느껴졌는데 지금 보니 예전보다 쉽게 이해할 수 있었다. 이 포인터의 개념을 잘 기억해놔야겠다.
'데브코스' 카테고리의 다른 글
타입스크립트(Typescript) (2) | 2024.10.28 |
---|---|
객체 지향 프로그래밍 (0) | 2024.10.27 |
컴파일 언어 이해하기 (0) | 2024.10.24 |
자바스크립트(2) (3) | 2024.10.23 |
자바스크립트 (2) | 2024.10.21 |