C 언어 기초 특강

  1. 일정
    2020-11-05 ~ 2020-11-16
    시간 : 15:00 ~ 18:00

다운로드 링크

set

컴파일러

우리가 작성한 프로그램을 컴퓨터가 이해할수 있는 기계어로 바꿔주는 프로그램


IDE(통합 개발 환경)

에디터,컴파일러,링커,로드 종합적으로 처리 해주는 프로그램


함수

특정 기능을 수행하는 실행 문장들을 괄호로 묶어서 이름을 붙인 것

함수는 프로그램을 구성하는 기본족인 단위

  • 함수는 여러 개의 문장으로 이루어진다.
  • 문장들은 순차적으로 실행됨
  • 하나의 문장은 ;(세미클론)으로 끝나야 한다.

main 함수

  • 프로그램의 시작을 의미하는 함수
  • main 함수가 끝나면 프로그램이 종료된다.

// vodie = 비어있다
// main 함수
int main(void){ // 시작
  return 0; // 프로그램의 성공적인 종료
} //끝


전처리기

  • #기호로 시작
  • 헤더 파일 stdio.h를 소스 코드 안에 포함
  • stdio.h는 표준 입출력에 대한 함수가 들어 있다.

// 전처리기 지시어
#include <stdio.h>


주석(comment)

주석은 코드를 설명하는 글입니다.


/* 한줄로 된 주석 */

/* 여러
줄로
된 주석*/

// 줄의 끝까지 주석


들여쓰기(indentaion)

의미적으로 포함되는 문장들은 들여쓰기를 통해 가독성을 높인다.


변수(variable)

  1. 변수란?
    프로그램에서 일시적으로 데이터를 저장하는 공간
  2. 변수는 왜 필요한가? 데이터가 입력되면 어딘가에 저장해야함 다양한 연산을 수행하여 원하는 결과를 얻을 수 있다.

메모리의 구조

메모리는 동일한 크기의 바이트 단위로 구성되어 있다.

  • 각 가의 공간에 대해 주소로써 나타내고 있다.
  • 첫번째 바이트의 주소는0, 두번째 바이트는 1, .....

변수와 메모리

변수의 종류에 따라서 차지하는 메모리 공간이 달라진다.


int main(void){
  int i = 10;     // 4바이트 ,정수
  char c = 'A';   // 1바이트. 단어
  float f = 12.3; // 4바이트 ,실수
}


변수와 상수의 비교

변수(variable): 저장된 값의 변경이 가능한 공간


a = 12; // 변수 a에 12가 저장된다. 
a=13; // 변수 a에 저장된 값이 12에서 13으로 변경된다.

상수: 저장된 값의 변경이 불가능한 공간


12=13; (x) 
100(w정수), 314(실수) 'a'(문자)


자료형

자료형(data type): 컴퓨터에서 값을 저장하기 위한 변수의 종류를 표시하는 것

  • 다양한 자료형이 필요한 이유
    상자에 물건을 저장하는 것과 같다.

변수의 이름짓기

식별자(identfier): 각 각의 변수를 식별할 수 있게 해주는 이름

  • 변수이름을 만드는 규칙
    알파벳 문자와 숫자, 밑줄 문자_로 구성
    첫 번째 문자는 반드시 알파벳 또는 밑줄 문자
    대문자와 소문자를 구별
    C 언어의 키워드(key-word)와 똑같은 이름은 허용되지 않는다.
    키워드(key-word): C 언어에서 고유한 의미를 가지고 있는 특별한 단어

sum // 쌉가능
_count // 쌉가능

2nd_try // 불가능
Dollor# // 불가능
double // 불가능


변수 선언문

변수 선언 : 컴파일러에게 어떤 변수를 사용하겠다고 미리 알리는 것


char c;
int i;
double interest_rate;

c = 'a';
i = 60;
interest_rate; = 4.9;


변수 초기화

변수를 선언한 이후에 곧바로 값을 대입하는것


char c = 'a';
int i = 7;


변수 선언위치


int main(void){
  int i; // O
  printf("Hello");
  ...
  int sum; // X
  ...
}

예제-01

ex06_01

예제-02

ex06_02

예제-03

ex06_03

예제-04

ex06_04

문자형

  • 문자는 컴퓨터보다는 인간에게 중요
  • 컴퓨터는 문자도 숫자를 이용하여 저장
  • 공통적인 규격이 필요하다
  • 아스키코드(1바이트를 사용하여 문자를 저장)
ex06_05

산술 연산자


+  // 덧셈
-  // 뺼셈
*  // 곱셈
/  // 나눗셈
% // 나머지
x*x // 거듭 제곱(따로 나타내는 연산자 없음)

ex06_06

증감 연산자


++x // x 값을 먼저 1 증가
x++ // x 값을 먼저 문장에서 사용한 후 증가
--x // x 값을 먼저 1 감소
x-- // x 값을 먼저 문장에서 사용한 후 감소

++x, x++ : x = x + 1;
--x. x--    : x = x - 1;

대입(할당) 연산자


int x,y,z;

x = 10;        // 상수 10을 변수 x에 대입한다
y = x;         // 변수 x의 값을 변수 y에 대입한다.
z = 2 * x + y; // 수식  2 * x + y를 계산하여 변수 z에 대입한다.

x + 2 = 0; // 안됨XXX
2 = x;     // 안됨XXX

복합 대입 연산자


x += y // x = x + y
x -= y // x = x - y
x *= y // x = x * y
x /= y // x = x / y

x += 1     // x = x + 1
x *= 5     // x = x * 5
x -= y + 1 // x = x - (y+1)

관계 연산자


x == y      // x와 y가 같은가?
x != y      // x와 y가 다른가?
x > y    // x가 y보다 큰가 ?
x < y    // x가 y보다 작은가?
x >= y   // x가 y보다 크거나 같은가?
x <= y   // x가 y보다 작거나 같은가?

ex06_10

논리 연산자

  • 여러 개의 조건을 조합하여 참(1)과 거짓(0)을 결과로 내는 연산자
  • 결과값은 참(1) 아니면 거짓(0)

&& // AND연산 , x와 y과 모두 참이면 참, 그렇지 않으면 거짓
\\         // OR연산 ,   둘중에 하나가 참이면 참
!          // NOT연산,  

4                //참
'4'              //참
0                //거짓
100 && 0 // 거짓
0\\2\\0          //참

ex09_01

조건 연산자


(x>0) ? x : -x; // x가 0보다 크면 x로 출력, x가 0보다 작으면 -x로 출력 

ex09_02
ex09_02_1

if문


if(data < 0){
 printf("현재 영하입니다.\n") // 조건이 참일 때만 실행
}
printf("현재 온도는 %d도 입니다. \n", data); // 항상 실행

ex09_03

if-else

ex09_04
ex09_04_01

switch ~ case 문

여러가지 경우 중에서 하나를 선택하는데 사용

  • 변수는 사용 불가
  • 변수가 들어간 수식 사용 불가
  • 실수 사용 불가
  • 문자열은 사용 가능

switch(조건식){
 case 정수:
  문장
  break;
  ....
 default:
  문장
  break;
}

ex09_05

for 문


// for(초기식; 조건식; 증감식)
for(i=0; i<10; i++){
 // 반복될 코드
}


while 문

ex09_07

구구단 만들기

ex10_01

소수 구하기

ex10_02

업 다운 게임

ex10_03

함수(function)

  • 함수: 특정한 작업을 수행하는 독립적인 부분
  • 함수는 입력을 받을수도 잇고, 출력(리턴)도 가능하다

//반환형 함수이름(매개변수1, 매개변수2)
int add(inx x, int y){
 return result; //출력
}


함수 호출

  • 함수 내 무장을 실행하기 위하여 함수의 이름을 적어주는것
  • return을 통해 결과값을 전달한수 있다.

int main(void){
 sum = add(2, 3);
}

함수 원형

  • 컴파일러에게 함수에 대하여 미리 알리는 것
  • 함수의 헤드 부분을 위에 써줌
ex11_03

지역 변수

지역 변수의 정확한 의미는 블록 안에 선언된 함수.

블록만 다르면 이름이 같아도 된다.

매개 변수도 일조으이 지역 변수 이다.


전역 변수

함수 외부에 선언되는 변수

모든 함수에서 접근 가능


저장 유형 지정자

static : 지역변수가 정적 변수로 된다.

ex12_03

순환(recursion)

  • 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법
  • 재귀함수 라고도 한다.

팩토리얼(factorial)

  • 만약 순환 호출을 멈추는 부분이 없다면?
    시스템 오류가 발행할 때까지 무한정 호출하게 된다.
ex12_05

피보나치 수열

ex12_06

배열

  • 동일한 타입의 데이터가 연속으로 저장되어 있는 데이터 저장 장소
  • 배연 안에 들어있는 각각의 데이터들은 정수로 되어 있는 번호에 의하여 접근
  • 배열을 이용하면 여러 개의 값을 하나의 이름으로 처리 가능
  • 0부터 자동으로 부여됨

배열의 선언

  • 자료형: x개의 배열 원소들이 모두 int형
  • 배열 이름 : 배열을 사용할 때 공통으로 사용하는 이름이 grade
  • 배열 크기 : 배열 원소의 개수가 x 일때

// 자료형 배열이름[배열 크기]
int grade[x]

ex13_02

인덱스(index)

배열 원소의 번호


grade[0]
grade[1]
...
grade[10]

ex13_03

배열의 초기화

배열의 크기가 주어지지 않으면 자동적으로 초기값의 개수만큼 배열의 크기로 잡힌다.

ex13_04

다차원 배열


int s[30];      // 1차원 배열
int s[3][10];   //2차원 배열
int s[2][3][5]; //3차원 배열

지역 변수

지역 변수의 정확한 의미는 블록 안에 선언된 함수.

블록만 다르면 이름이 같아도 된다.

매개 변수도 일조으이 지역 변수 이다.


전역 변수

함수 외부에 선언되는 변수

모든 함수에서 접근 가능


저장 유형 지정자

static : 지역변수가 정적 변수로 된다.

ex12_03

순환(recursion)

  • 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법
  • 재귀함수 라고도 한다.

팩토리얼(factorial)

  • 만약 순환 호출을 멈추는 부분이 없다면?
    시스템 오류가 발행할 때까지 무한정 호출하게 된다.
ex12_05

피보나치 수열

ex12_06

DDDD

타이틀h1

설명입니다.

설명입니다2.

  1. 제목
    설명
  2. 제목
    설명
h5입니다.
파란박스입니다.
code 태그 입니다
					
					java pre 입니다.
					console.log('kim.constructor', kim.constructor);
					
					
					
					<!DOCTYPE html>
					<html lang="ko">
					<head>
					    <meta charset="UTF-8">
					    <title>자바스크립트 사용방법</title>
					    
					    <!-- 외부 파일로 로드하는 방법-->
					    <script type="text/javascript" src="javascript.js"></script>
					    
					    <!-- script 태그 사이에 기술하는 방법-->
					    <script type="text/javascript">
					        document.write("hello");
					    </script>
					</head>
					<body>
					    <!-- 태그에 직접 기술하는 방법 -->
					    <input type="button" onclick="alert('hello')" value="hello">
					</body>
					</html>
					
					
					
					* {font-size:1;}