본문 바로가기

IT/C

2-3

#으로 시작하는 문장과 중괄호 앞뒤문장은 ;을 넣지않는다

컴파일부터 링크까지 전체를 실행시키는것은 ctrl shift b 이거랑 똑같은게  ctrl+f5 하면 똑같이 솔루션 빌드

솔루션빌드하면 실행창이뜸 디버그하지않고 시작은 실행파일이 만들어졌을때 그걸 바로 실행시키는것

 

중간점검 답 :

통합개발환경 IDE 

파일 - 새로만들기 - 프로젝트 빈프로젝트 

에디터에서 가능함

소스파일을 만들었을때 컴파일하여실행시키는건 빌드 혹은 디버그에서 컨트롤에프오누르면됨

구분함

// 

따음표가 들어있는 안에만 소문자

변수이름은 대문자로쓰기가능 //

오브젝트파일과 실행파일이 생긴다 

비쥬얼스튜디오를 이용해서 소스파일을 컴파일 하고 나면 sample.obj 프로젝트이름.exe가 생긴다

메모장에 소스코드쓰고 확장자만 .c로 바꾸면 노상관 

 

 

프로그래밍 언어는 기본적인 구조가 있다

그것을 문법적 구조라고 말 한다

컴퓨터는 기본적인 문법적 구조를 지키지 않으면 실행이안된다

 

대부분의 C에서 포함되는 기본 문법적 구조임

 

#include<stdio.h> 전처리기 헤더파일을 포함한다

 

int main(void) 메인함수 // 메인함수 시작

{

함수본체

 

return 0; 외부로 0을 반환

} 메인함수 종료

 

함수본체를 제외한 것들은 기본 틀이고

함수본체를 채워넣는것이 프로그램밍을 작성하는것이다

 프로그램은 작업지시서이다

프로그램은 명령어리스트임

순서대로 실행되어야 하는 작업지시서

어떠한 일을 처리해야하는 작업지시서 명령어리스트

 

 

include <stdio.h>

C계열은 mian함수를 가지고 있고, main함수가 프로그램의 시작위치이다

프로그램을 실행하기 위해선 운영체제에 요청해야하는데, 그 이유는 운영체제가 컴퓨터의 자원을 관리하기때문임

cpu 메모리 네트워크관리는 운영체제의 기능인데, 

프로그램이 실행되기 위해선 주기억장치인 메모리와 cpu 가 필요함

이것들의 관리는 os가 하니까 프로그램을 실행시키기 위해선 자원을 할당받아서 실행해야됨 

 

그렇게해야 프로그램이실행된다

os는 첫번째 시작위치를 main으로 잡고 main부터 실행하다

우리는 실행되는 프로그램을 작성하려면 main함수가 존재해야한다.

화면상의 data값을 출력하는데 사용하는 함수 : 

함수란?

 특정기능을 수행할 수 있는 코드모음 또는 집합 그것의 이름을 함수이름을 따로 붙임

printf도 특정기능을 수행하는 프로그램을 모아놓고 얘 이름을printf라고 이름붙인 함수

printf ("   문자열    "); 

printf는 문자열을 화면에 출력하는 기능을 갖는 코드들을 모아놓음

printf는 명령어코드들의집합인데 내용까지 알 필요는없음 그냥갖다쓰는거임

이러한 함수를 라이브러리함수라고 말 한다 

라이브러리함수는 내가 작성한 함수가 아니라 , 벤더에서 제공하는 함수들을 라이브러리함수라고 말 한다.

이건 그 속을 알 수 없음 라이브러리나 헤더파일은 공개를 안함

오직 기계어로 만들어진 오브젝트파일이나 실행파일만 공개함

소스코드는 공개 안함

이 라이브러리함수는 형식 format만 익히고 넘어가면 된다.

return 0;는 써도되고 안써도됨 지금은 os가 발전해서 이게 없어도 자동으로 프로그램이 끝났는지 확인하고 종료시키기때문에써도디고안써도됨

 

프로그램을 실행시킨다는 것 자체가 os에게 자원을 빌려서 사용하는것임 빌려서쓰다 끝나면 그것을 os에게 반납해야됨 따라서 os에게 0을 반환 0의 의미는 나 프로그램 실행 끝났어요 라는 뜻 그러면 윈도우즈는 자원을 회수함 그런식으로 자원을 관리함

그리고 중괄호의 의미는 범위이면서 시간개념임 

중괄호는 함수의 시작과 공간적인 범위를 나타냄 

 

{ 메인함수의 시작

 

} 이 안에있는게 코드의 범위임

따라서 중괄호는 시간과 공간의 의미를 갖음

함수의 범위를 나타낼 떄 중괄호를 나타낸다

따라서 시간 공간의 개념을 가지고 있다

헤더파일은 std : standard

io : input output 

따라서, stdio :표준입출력 

헤더파일에는 함수에 대한 정의가 들어있다

이 함수는 어떤 포멧으로 사용해야한다는 구조가 헤더파일 안에 들어있음

이 포멧에 맞추어서 함수를 사용하면, 그 함수의 실행코드를 우리가 프로그램속에 포함시킬 수 있는거임 헤더파일속의 정보를 포함시키는 개념

표준입출력은 표준 입력장치로부터 데이터를 입력받고 표준출력장치로부터 출력한다는 의미임

프로그램의 실행은 컴퓨터로부터 됨

표준입력장치로부터 데이터를 입력받고 표준출력장치로부터 그 결과를 출력하는 그때 사용하는 함수들에 대한 정보를 헤더파일이 가지고 있다

아까 printf는 표준입출력함수중에하나임 

이건 표준입출력함수중에 하나임

표준입력장치는 키보드 ; (콘솔형입력장치)

표준출력장치는 모니터 

프로젝트에서 솔루션 생성시킬때 콘솔이라는 항복 키보드로 입력받고 출력은 모니터로 내보내는데

콘솔은 키보드로 입력받고 출력은 모니터로 출력을 내보내는데 그런 기능들을 사용할 수 있는 함수들이 모여있는 것을 STDIO.H 헤더파일임 여기엔 표준입출력과 관련된 함수가 들어있음

헤더파일에는 표준입출력과 관련된 함수가 들어있다

헤더파일은 파일의 형태로 하드디스크에 저장되어있다

설치된 위치는 비쥬얼스튜디오의 위치에 따라 달라지나, C - programfiles(x86)

탐색기에서 검색할 수 있음 

헤더파일은 컴파일러가 필요로하는 정보를 가지고 있는 파일임

메모장에 드래그앤드롭 해서 보면 코드도 볼 수 있음 

C명령어로 이루어짐 헤더파일자체도 코드의 한 종류임 헤더파일의 포멧을 코드로 정의함

 

함수란 ?

특정 기능을 수행하는 코드들의 집합임

특정한 작업을 수행하기위하여 작성된 독립적인 코드

함수는 특정기능을 수행할 수 있어야됨

입력을 받아서 출력을 내보내는 것

프로그램은 함수들의 집합임 함수속에는 다양한 라이브러리함수를 포함하고있음

메인함수는 프로그램의 시작위치를 나타낸다 

main(data type )

자료형 : data type

컴퓨터는 기본적으로 2진수

2진수로 다양한 데이터를 표현하기 위해 다른 자료형을써야한다 문자 정수 실수 

프로그램이 실행될땐cpu와 메모리가 필요 이거를 os로부터 빌려씀 얼마만큼의 메모리가 필요하다

이프로그램이 실행되기위해선 얼마만큼의메모리가필요하다 이거를 계산해야됨 무한정빌릴순없으니까

코드속에서 메모리공간을 필요로하는 코드들을 작성

변수 상수 함수 들이 데이터를 처리하면서 메모리공간을 필요로 함 이런것들ㅇ[ 대한 정보를 os에게 말 해야 걔네가 할당시킴

데이터를 처리하면서 메모리공간을 필요로 함 이런것들의 정보를 os에게 알려줘야 os가 할당시켜줌

함수를 처리하기위해 입력이 어떤 데이터형인지 그 크기의데이터만 들어올 수 있음

문자는 8bit , 정수는 4byte 

int main --> 이 함수는 무언가 처리했을때 출력의 결과가정수형으로 나온다  --> 메모리공간이 4vyte 필요하다

 

int main(void) -->  함수의 입력이 정의되지않았음을 의미 --< 크기가 할당되지않은거지 입력이없는건 아님

이런 경우, 괄호속에 아무것도 안쓰거나 void씀

int출력데이터타입

return 0 ; 0이란 값을 반환하시오

int main (void )

--> 출력이 int형이고 , 입력 data type 가 정의되지않은것

입력없이 실행되고 출력은 int형 

main 

함수의 시작은 중괄호 시작

함수의 끝은 중괄호 끝

실제로는 함수에 있어서 입력과 출력 data type정하는건 사실 중요함

다른 datatyoe으로 정하는거 가능

 

문장(명령어)

코드 : 명령어

함수의 본체에는 여러개의 문장이 들어갈 수 있다

한문장마다 ; 붙여야 함

문장들은 쓴 순서대로 실행됨

printf: 표준출력함수임

형식

printf(" 문자열 ");

return 0;  ---> 자원을 관리했던 os 에게 프로그램실행이 끝났음을 알리려고 0값을 return 함

 

중간점검

문장의 끝엔ㄴ ;필요C프로그램에는 반드시main필요 printf는 표준출력함수

\n : 개행문자 

개행문자를 어떻게 사용하느냐가 중요함

 

 

 

 

 

 

 

 

 

 

'IT > C' 카테고리의 다른 글

보강  (0) 2023.01.01
3-1  (1) 2022.12.31
통합개발환경  (1) 2022.12.29
2-2  (0) 2022.12.29
1장  (0) 2022.12.29