안녕하세요 Stimpack 입니다. ! 이어서 1회차 강의 내용 정리를 하겠습니다.
*우선 Program이란 무엇일까요?!
프로그램이란 어떤 목적을 위한 일의 진행 순서라고 할수 있습니다. 미리 쓴다 라는 뜻의 라틴어에서 유래 되었습니다.
예를 들어 Tv 프로그램 . 음악회 프로그램 등 어떤 방송의 순서라던지 음악회의 연주 순서 등 일의 진행 순서라고 보시면 됩니다.
그렇다면 우리는 Program을 만들기 위해 컴퓨터를 사용합니다. 컴퓨터는 기계어라는 0과 1로 이루어진 이진수를 사용합니다.
프로그래머는 기계어를 알기에는 너무나도 광범위하기에 프로그래밍 언어라는 것을 사용합니다( c언어 , c ++ ,Java ,c #...등)
*즉 컴퓨터는 기계어를 사용하고 프로그래머는 프로그래밍 언어를 사용하게 됩니다.
저 Stimpack은 기계어를 모르기 때문에 Compiler라는 친구에게 도움을 받습니다. 이 친구는 프로그래밍 언어를 기계어로 번역해 주는 역할을 합니다!
그렇기 때문에 우리 프로그래머는 기계어를 몰라도 컴퓨터에게 전달하고 싶은 말을 할 수 있게 됩니다.!
하지만 모든 언어에서는 문법이 있듯이 프로그래밍 언어에서도 문법이 존재하게 됩니다.! 이것은 컴파일러와의 약속이며 어기면 컴파일러가 인식을
못하여 컴파일을 실패하게 됩니다.
앞으로 우리가 배울 프로그래밍 언어는 C언어이기 때문에 C언어에 대해서 알아 보겠습니다. !
C언어 이전에는 b언어라는 언어가 존재했습니다! (갑자기!?..)
켄톰슨과 데니스 리치라는 개발자가 운영체제를 만들고 싶어 했습니다! (이때는 운영체제들은 하드웨어 종속적인 언어를 사용하여 개발되었기 때문에 하드
웨어가 바뀌면 이에 따라 운영체제를 다시 개발해야 했다.)
새로운 운영 체제를 만들기에는 b언어로서는 부족했습니다. 그래서 이 둘이 새로운 언어를 만들게 되는데 1972년에 C언어라는 새로운 언어를 개발하여 이
를 사용하여 UNIX 라는 새로운 운영체제를 만들게 되었습니다~~ ! c언어는 이처럼 개발자들이 만들었기 때문에 어떤 언어보다도 개발자의 입장에서 만들
었기 때문에 구조화되었고 이식성 , 생산성 , 확장성을 갖춘 언어 입니다.
우리는 이미 많은 곳에서 c언어를 사용한 것들을 볼수 있습니다. 운영체제. 전자 계산기 .. 등등 주변에 보이는 많은 것들이 c언어를 사용하여 만들었다고 보
시면 됩니다!
전자 계산기를 예를 들어 보면 C언어가 가지는 구성들을 쉽게 이해 할수 있습니다.
C언어는 입력 , 출력 , 상수 , 연산자 등을 가지며 17이라는 값이 나왔을때 15 + 2 를 기억해야할 공간을 변수라고 표현합니다.
이처럼 계산기를 보면 C언어의 기본적인 구성을 이해할 수 있습니다.
C언어의 서술 형식에 대해 설명하겠습니다.
* C언어의 기본 서술 형식
* C언어의 기본 서술 형식
1.단일 서술문 (Single Statement) 은 논리적 최소 명령 실행 단위 입니다.
예를 들어
stimpack = stimpack + 27 ;
stimpack =
stimpack +27 ;
이처럼 하나의 서술문을 단일 서술문이라고 합니다.
2. 복합 서술문(Compound Statement) 은 여러개의 단일 서술문을 중괄호 { } 로 묶은 것을 복합 서술문이라고 합니다 .
{
stimpack = stimpack +27 ;
stim = pack +2018;
}
여기서 나오는 ;(세미콜론)은 문장 분리자 라고 생각하시면 됩니다. 명령을 구별해 주는 역할을 합니다.
3. 수식 서술문
4. 조건 서술문
5. 반복서술문
6. 라벨 서술문
7. 분기 서술문
8. 주석문 등등.. 이 있지만 나중에 알게 되니 pass!
* c언어를 이용하여 프로그램 C프로그램 실행파일 만들기!
메모장의 형식은 .txt 입니다. 그렇다면 c언어의 파일 형식은 !? .c 파일 입니다.
이처럼 *.c 파일을 소스파일 이라고 하고 *.obj를 목적파일 *.exe를 실행파일이라고 합니다.
우선 컴파일러가 c파일을 컴파일하여 .obj라는 목적파일을 생성합니다. 링커가 목적파일을 링크하여 실행파일을 만들고 이러한 과정을 build라고 합니다.
우선 stimpack이라는 프로젝트를 만들고 stim.c 라는 소스파일을 만들었습니다. 그런다음 Debug라는 폴더에 들어가시면 위에서 설명한 obj 파일과 exe 파일을 보실수 있습니다. 이렇게 파일을 생성한 과정을 build! 라고 합니다!
왜 한번에 exe 파일을 만들지 않고 왜 목적파일을 만들고 exe파일을 만드는 걸까요? (다음회차에 정답을 올리겠습니다)
* 자료형 (들어가기전)
컴퓨터는 주로 어떻게 데이터를 저장할까요??
컴퓨터의 저장장치는 크게 주 기억장치와 보조 기억장치로 나눌수 있습니다.
주 기억장치는 RAM 이라고 하고 보조 기억장치는 HDD , SSD .. 등이 있습니다. 보통 메모리라고 하면 RAM을 의미 합니다.
보통 메모리는 이렇게 표현하며 , 운영체제가 관리하는 최소한의 단위를 1byte라고 하고 , 1byte는 8개의 bits로 구성되어 있습니다.!
즉 제일 작은 단위는 1bit라고 하며 8개의 bits들이 모이면 1byte라 합니다.
*즉 운영체제가 관리하는 최소한의 단위를 1byte 0이나 1을 나타내는 하나의 숫자를 1bit라고 합니다. 이것이 컴퓨터가 처리하는 정보의 최소 단위 입니다.
컴퓨터는 기계어를 사용한다고 했는데 0 .1 을 사용며 이를 2진수라고 합니다. 우리가 사용하는 0~ 10~ 11~ 20 ..이를 10진수라고 합니다.
옛날에는 컴퓨터를 군사용 목적으로 개발했는데 0은 스위치 off 1은 스위치 on!을 의미했습니다.(2진수의 역사.)
이를 통해 정보를 전달했습니다.
그래서 Debug라는게 오류를 확인하고 해결하는 것을 Debug라고 하는데 옛날에 전구를 이용한 컴퓨터를 사용할 적에 전구에 나방이나 벌레들이 붙어서
전원이 단락되어 오류가 생겼었는데 이때 벌레를 없앤다는 뜻으로 Debug라는 말을 사용했는데 이게 유래되어 지금도 Debug라고하고
실제로 비쥬얼스튜디오에서 디버그라는 언어를 아직도 사용하고 있습니다.
다시 돌아와서 한 bit에 표현할수있는 경우의 수는 2가지입니다 0이거나 1 . 메모리가 8bits이니깐 2^8 = 256가지 입니다.
즉 1byte에 표현할수 있는 수는 256가지가 됩니다.
저장공간이 2byte이면 16bits로 2^16 = 65,536 저장공간이 4byte이면 32bits로 2^32 = 4,294,967,296 입니다.
1000m는 1Km라고 표현합니다. 데이터에서는 한개의 공간이 2개의 경우의수를 넣을수 있기때문에 2^10 =1,024byte입니다.
1,024byte = 1KB , 1,024KB = 1MB , 1,024MB = 1GB , 1,024GB = 1TB , 1,024TB = 1PB , 1,024PB = 1EB 입니다!
* 즉 32bits를 사용한다면 2^32 = 4,294,967,296 이므로 4GB의 메모리가 필요합니다.!
컴퓨터는 0, 1 이렇게 두개의 숫자를 사용한다 했는데 , 그럼 음수는 표현 못하는 걸까요?!
만약 -1, 0 ,1 을 사용하게 되면 데이터를 2bit를 사용해야합니다. 왜냐하면 1bit에 들어올수 있는 수는 두가지 뿐이니 2bits를 사용해야합니다.
우리는 빠른 속도를 원합니다! 그렇기 때문에 부호비트라는 것을 사용하여 음수를 표현합니다.
2^7 = 128 2^6 = 64 2^5 = 32 2^4 = 16 2^3 = 8 2^2 = 4 2^ 1 = 2 2^0 =1
부호비트는 맨 최상위에 있다고해서 최상위 비트라고도 합니다! 8bits중 한 bit를 부호를 사용하는데 할당 했기 때문에 나머지 7bits에만 데이터를
사용합니다.
*즉 2^7 = 128 가지의 경우의 수가 있지만 양수일 경우 0~127 (128개 0부터 숫자를 세기 때문에) , 음수일 경우는 (-128 ~ -1) 입니다.
부호가 있는 자료형 -128 (-128~ -1)
부호가 없는 자료형 128 (2^7 = 128 , 나머진 다 0)
부호가 있는 자료형 -1 (-128~ -1)
부호가 없는 자료형 255( 128 + 64 + 32+16+8+4+2+1)
*자료형
만약에 제가 다른사람한테 택배를 보낸다고 했을때 둘중 어떤 박스가 더 효율적일까요!?
물론 큰게 외관적으로 엄청나게 많은 선물이 들어 있을 것 같고 , 비싸보이는 효과까지 있겠지만 .. 딱 맞는 박스를 사용하는 것이 더 좋습니다!
(큰 박스를 선택하면 비용도 더 나가겠지만 택배차량에 그만큼 박스들을 못 싣게 됩니다.)
이처럼 데이터도 동일합니다! 일정한 데이터는 적절한 크기의 메모리에 저장해야 합니다.!
자료형(data type) 은 숫자(정보 data )를 일정한 크기의 메모리에 저장된 정보(자료)를 해석하는 형식입니다! 즉 컴퓨터에게 어떤 크기의 메모리에
할당할 것인지 알려주는 약속(문법) 입니다.!
C언어는 사용빈도가 높은 자료형을 예약어로 제공하고 , 나머지는 사용자가 정의해서 사용할수 있는 (User-defined Data Type)으로 크게 나누어집니다.
예약어로 제공된 자료형은 크게 두가지로 나눕니다.
부호의 유무 중 괄호 친 것은 생략이 가능합니다.
즉 char a = 5 ; 의 단일 서술문을 작성한다면 signed char a = 5 ; 랑 동일합니다.!
여기에서 자료형이 의미하는 것은 즉 내가 사용할 메모리의 크기를 컴파일러에게 미리 알려주는 것입니다.
나는 1byte의 크기의 a라는 변수를 사용할거야 !라고 하면 컴파일러는 a라는 변수에 접근하여 1byte의 크기를 할당하여 여기에 5를 저장합니다.