1 / 109

C Programming Language

C Programming Language. C ontents. Chapter 01 C 언어의 개요 Chapter 02 C 언어의 기본구성 Chapter 03 기본 데이터 타입 Chapter 04 기본 입출력 Chapter 05 연산자 Chapter 06 프로그램 제어문 Chapter 07 함수 Chapter 08 배열 Chapter 09 포인터 Chapter 10 문자열. C ontents. Chapter 11 구조체와 사용자 정의 Chapter 12 파일 I/O

Download Presentation

C Programming Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C Programming Language

  2. Contents • Chapter 01 C언어의 개요 • Chapter 02 C언어의 기본구성 • Chapter 03기본 데이터 타입 • Chapter 04기본 입출력 • Chapter 05연산자 • Chapter 06프로그램 제어문 • Chapter 07함수 • Chapter 08배열 • Chapter 09포인터 • Chapter 10문자열

  3. Contents • Chapter 11 구조체와 사용자 정의 • Chapter 12 파일 I/O • Chapter 13메모리 관리 • Chapter 14매크로와 전처리기 • Chapter 15 C 라이브러리 • Appendix A구조적 시스템 개발 방법론 • Appendix B개발 도구 사용법

  4. Chapter01 C언어의 개요

  5. 직접적인 의사소통 불가능 X Compiler C언어 기계어 컴파일러를 통한 간접적인 의사소통 가능 C언어의 소개(I) • C언어란? • UNIX 운영체제를 설계하는 과정에서 탄생 • 상위수준의 프로그래밍 언어 O

  6. C언어의 소개(II) • C언어의 특징 • 문법이 간결하다 • 효율적인 언어이다 • 강력하고 유연하다 • 이식성이 좋다 • 절차식 언어이다 • C언어의 사용 • UNIX운영체제 및 컴파일러 • 게임 및 영화제작(특수효과) • 마이크로프로세서 프로그래밍 • 임베디드 시스템(Embedded System)

  7. 프로그래밍 과정(I) 1. 프로그램 목적 정의 2. 프로그램 설계 3. 소스 코드 작성 4. 컴파일 & 링크 5. 프로그램 실행 6. 프로그램 검사와 디버그 7. 프로그램 유지와 보수

  8. hello.h hello.exe hello.obj hello.c 프로그래밍 과정(II) Compiler Linker 목적 파일(*.obj) 실행 파일(*.exe) 소스 파일과 헤더 파일(*.c & *.h) 라이브러리 파일

  9. Chapter02 C언어의 기본 구성

  10. 첫 만남, Hello, World~! /* HelloWorld.c */ #include <stdio.h> int main(void) { printf(“Hello, World~!\n”); return 0; }

  11. 프로그램 기본 요소들(I) • #include 지시자와 헤더파일 • #include문을 이용하여 헤더파일과 같은 특정 파일의 전체 내용을 그대로 붙여 넣는 효과를 나타낸다. • 헤더파일에는 상수가 정의되어 있거나, 함수 이름과 사용 방법에 대한 내용 등의 정보가 존재한다. • main()함수 • 모든 C프로그램의 시작과 끝 • 반드시 존재해야 하며 단 한번만 사용 가능하다. • 중괄호, 몸체, 블록 • 함수 몸체의 시작과 끝을 나타낸다. • 여러 문장을 하나의 단위(블럭)로 모으는데 사용된다.

  12. 프로그램 기본 요소들(II) • 선언(변수와 상수) • 식별자를 사용하여 컴퓨터 메모리상의 특정 위치에 연결하여 값을 저장하도록 한다. • 함수 • 모든 C프로그램은 여러 개의 함수로 구성되어 진다. • 필요한 기능들의 함수 정의 및 호출로 프로그램을 구성한다. • 연산자 • 계산을 지시하는 기호 • 기본적인 대입, 논리, 산술 연산자 이외에 포인터를 비롯한 복잡한 연산자들이 있다.

  13. 프로그램 기본 요소들(III) • 반환문 • 일반 함수에서의 반환문은 함수의 종료를 뜻하며 호출한 영역으로 특정 값을 반환한다. • main()함수에서의 반환문은 프로그램의 종료를 뜻하며 운영체제로 특정 값을 반환한다. • 주석 • 이해하기 쉽도록 설명을 위한 문자열을 프로그램 중간중간에 작성한다. • 코드를 임시적으로 삭제할 목적으로도 사용된다. • 프로그램의 실행에 아무런 영향을 미치지 않는다. • 단일 라인의 주석 처리 : // • 다중 라인의 주석 처리 : /* 와 */

  14. 프로그램 기본 요소들(IV) • 키워드(ISO/ANSI C)

  15. Chapter03 기본 데이터 타입

  16. 데이터 타입

  17. 정수형 데이터 타입(I) • 정수형 • 정수란 부호는 있고 소수점 이하를 갖지 않는 숫자를 표현하고 저장할 수 있는 데이터 타입 * 시스템 및 컴파일러에 따라서 표현 가능한 데이터의 범위가 달라진다.

  18. 정수형 데이터 타입(II) • 정수형 변수 선언 • 정수값의 출력 • printf()함수의 서식 문자 %d, %o, %x 등을 이용하여 출력 int num; int a, b, c; //한 문장에서 3개의 변수 선언 int age = 30; //선언과 동시에 초기화 printf(“I am %d years old. \n”, age); printf(“I am %o years old. \n”, age); printf(“I am %x years old. \n”, age);

  19. 문자형 데이터 타입 • 문자형 • 하나의 문자 혹은 하나의 기호를 표현하고 저장하는 데이터 타입 • 저장할 수 있는 값의 범위 : -127 ~ 128 (정수값의 표현이 가능) • 표준 ASCII 코드(0 ~ 127) 사용 • 문자의 표현시 반드시 작은 따옴표(‘ ’)로 묶어준다 • 출력되지 않는 문자(Escape Sequences)를 사용한다 • 문자형 변수 선언 • 문자값의 출력 • printf()함수의 서식 문자 %c를 이용하여 출력 char grade; char gradeA = ‘A’, gradeB = 66; //선언과 동시에 초기화 printf(“My grade is %c. \n”, gradeA); printf(“Your grade is %c. \n”, gradeB);

  20. 실수형 데이터 타입(I) • 실수형 • 소수점 이하를 가지는 실수를 표현하고 저장하는 데이터 타입 * 시스템 및 컴파일러에 따라서 표현 가능한 데이터의 범위가 달라진다.

  21. 실수형 데이터 타입(II) • 실수형 변수 선언 • 실수값의 출력 • printf()함수의 서식 문자 %f, %e, %a, %lf, %le 등을 이용하여 출력 float a = 10, b = 20; double percent = a/100; double c = 0.3; printf(“percent is %f. \n”, percent); printf(“percent is %e. \n”, percent); printf(“percent is %a. \n”, percent); printf(“a : %f , b : %e \n”, a, b);

  22. 데이터 타입의 크기 • 특징 • 데이터 타입의 크기는 시스템이나 운영체제, 컴파일러마다 달라질 수 있다. • 타입간의 크기 순서는 정해져 있다. • 1  sizeof(char)  sizeof(short)  sizeof(int)  sizeof(long) • sizeof(float)  sizeof(double)  sizeof(long double) • sizeof 연산자를 이용하여 자료형의 크기를 확인할 수 있다.

  23. 데이터 타입의 변환(형 변환) • 암시적 형 변환(자동 형 변환) • 연산자를 기준으로 하여 왼쪽의 데이터와 오른쪽의 데이터의 타입이 서로 다른 경우에 연산을 수행하기 위하여 발생하는 형 변환 • Type Promotion(형 승격) 동일 종류의 데이터 타입에 대해 타입의 표현 범위가 큰 쪽으로 타입을 변환한다. (예) bool, char, short -> int • Standard Type Conversion(표준 형 변환) 기본 데이터 타입간의 가능한 형 변환을 이용하여 찾는다. (예) int <- -> double • 명시적 형 변환(강제 형 변환) • 프로그래머의 명시적인 선언에 의해서 발생하는 형 변환 (예) float f = (float)100;

  24. 변수와 상수(I) • 변수란? • 데이터를 저장할 수 있는 메모리 공간에 붙여진 이름 • 데이터 값이 필요에 따라 바뀐다. • 데이터의 종류에 따라 정수형, 문자형, 실수형, 포인터, 구조체 변수 등으로 나눌 수 있다. • 변수의 선언방법 • 필요로 하는 타입을 선택한다. • 유효한 문자들로 변수 이름을 선택한다. • 다음과 같은 형식으로 선언한다. 타입이름 변수이름; • 쉼표를 사용하면 같은 타입의 변수를 하나 이상 선언할 수 있다. • 선언문에 변수를 초기화할 수 있다. • 전역 변수인 경우 초기화를 하지 않으면 0으로 초기화된다.

  25. 변수와 상수(II) • 상수란? • 변하지 않는 데이터를 의미한다. • 데이터의 종류에 따라 정수형 상수, 문자형 상수, 실수형 상수 등으로 나눌 수 있으며, 이름이 있는 상수와 이름이 없는 상수로 나눌 수 있다. • 상수의 선언 int a = 123; //123이라는 숫자값이 정수형 상수 char gradeA = ‘A’ // A라는 문자값이 문자형 상수 double d = 3.141592 // 3.141592라는 값이 실수형 상수 const int MAXLEN = 20; //MAXLEN이라는 이름과 20이라는 값을 갖는 정수형 상수 const double PI = 3.141592 //PI라는 이름과 3.141592라는 값을 갖는 실수형 상수

  26. Chapter04 기본 입출력

  27. Monitor File Printer & etc. Keyboard Camera & etc. Program 입력 스트림 출력 스트림 스트림 스트림이란? • C프로그램에서 데이터의 흐름 • 바이트들이 순서대로 입출력 되는 논리적인 장치 • 내부에 입출력 버퍼를 갖고 있어 자동으로 관리됨 • <stdio.h> 파일에 선언됨

  28. 단일 문자 표준 입출력 단일 문자 입력 • getchar() • 표준 입력 스트림(stdin)으로부터 한 문자를 입력받아서 반환해주는 함수 단일 문자 출력 • putchar() • 표준 출력 스트림(stdout)으로 한 문자를 출력하는 함수 #include <stdio.h> int getchar(void); int putchar(int c); //오류가 발생하거나 입력의 끝을 만나게 되면 EOF를 반환

  29. 문자열 표준 입출력 문자열 입력 • gets() • 표준 입력 스트림(stdin)으로부터 문자열을 입력받아서 반환해주는 함수 • 문자들을 읽어들이다가 개행 문자(\n)를 만나면 개행문자 대신 널문자(\0)를 붙여서 프로그램에게 반환 문자열 출력 • puts() • 표준 출력 스트림(stdout)으로 문자열을 출력하는 함수 • 문자들을 출력하다가 널(\0)문자를 만나면 널문자대신 개행문자(\n)를 붙이고 출력을 끝낸다. #include <stdio.h> char* gets(char* s); int puts(const char* s); //오류가 발생하거나 입력의 끝을 만나게 되면 EOF를 반환

  30. 서식화된 문자열 표준 출력(I) 서식화된 문자열 출력 • printf() • 인수로 주어지는 문자열 및 변수의 데이터, 상수 등의 데이터를 서식화하여 표준 출력하는데 사용하는 함수 • 변환 지정자를 사용하여 서식을 정의 • 출력되지 않는 특수문자의 출력이 가능 #include <stdio.h> int printf (const char *format, ...);

  31. 서식화된 문자열 표준 출력(II) printf()를 위한 변환 지정자와 출력결과

  32. 서식화된 문자열 표준 출력(III) printf()를 위한 변환 지정 수정자 • 기본적인 변환 지정자의 서식에 적절한 옵션(수정자)를 넣어서 필드의 폭이나 정렬, 자릿수 등을 바꿀 수 있다.

  33. 서식화된 문자열 표준 입력(I) 서식화된 문자열의 표준 입력 • scanf() • 사용자로부터 데이터를 입력받는 기본 함수 • printf()와 거의 동일한 변환 지정자를 사용하여 데이터의 타입(서식)을 정의하여 표준 입력을 수행 • 입력된 정보를 분리하는데 공백문자(개행문자, 탭, 빈칸) 이용 #include <stdio.h> int scanf (const char *format, ...);

  34. 서식화된 문자열 표준 입력(II) scanf() 사용 규칙 • 읽어올 데이터의 타입이 기본 데이터 타입중 하나라면 변수 이름 앞에 &를 붙인다. • 읽어올 데이터의 타입이 문자 배열이라면 변수 이름 앞에 &를 붙이지 않는다. • %s 지정자를 사용하여 문자열을 읽을 때 공백이 포함되어 있으면 공백 바로 전까지만을 하나의 문자열로 인식한다.

  35. 연습문제 • 사용자로부터 단일문자를 입력 받아서 그 문자의 아스키 코드의 값을 출력하는 프로그램을 구현하시오. • 두개의 수를 입력받고 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)의 결과를 출력하는 프로그램을 구현하시오. • fflush()함수의 용도를 알아보시오. • 사용자로부터 1문자를 입력받아서 그 문자가 대문자(A-Z)이면 1을, 소문자 (a-z)이면 2를, 숫자(0-9)이면 3을 출력하고 그 이외의 문자라면 0을 출력하는 프로그램을 구현해보자.(EOF가 되었을 때 프로그램을 종료) • A-Z의 아스키 코드 값을 구하시오.

  36. Chapter05 연산자

  37. 연산자의 종류

  38. 산술연산자 • 산술 연산자 • 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 수행하는 가장 기본적이며 자주 사용하는 연산자

  39. 증감연산자 • 증감 연산자 • 피연산자를 1씩 증가 혹은 감소 시키는 단항 연산자 • 연산자의 위치에 따라 증감의 시점이 달라지게되어 수식내에서 사용시에 주의해야한다

  40. 대입연산자 • 기본 대입 연산자 (=) • 우변값을 좌변값에 대입하는 연산 • 기타 대입 연산자(+=, -=, *=, /=, %=, %=) • 기본 대입 연산자와 산술 연산자가 합해져서 다양한 형태의 대입 연산자를 정의 int num1, num2 = 0; num1 = 100; num1 = num1 + 20; num1 = num1 + num2; a += b; // a = a + b; a -= b; // a = a - b; a *= b; // a = a * b; a /* = b; // a = a / b; a %= b; // a = a % b;

  41. 비교연산자(관계연산자) • 비교 연산자 • 좌변값과 우변값을 비교하여 누가 큰지, 작은지, 같은지, 같지 않은지 등의 관계를 알려주는 연산자 • 비교 조건이 만족되면 true(=1), 만족하지 못하면 false(=0)를 반환

  42. 논리연산자 • 논리연산자 • 둘 이상의 비교(관계)식을 결합하는 연산자

  43. 비트 논리 연산자(I) • 비트단위 논리 연산자 • 비트 단위(0 또는 1)로 연산을 할 때 사용하는 연산자 • 정수 타입 데이터들만 사용할 수 있다 (char타입 포함)

  44. 비트 논리 연산자(II) • 비트단위 논리 연산자의 사용 • 마스크 : 특정 비트들은 가리고 몇 개의 비트들의 값만 사용하고 싶을 때 • 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때 • 비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때 • 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 토글시키고 싶을 때

  45. 00000000 00000000 00000000 00001111 00000000 00000000 00000000 0000111100 결과 : 60 비트 시프트 연산자 • 비트 시프트 연산자 • 비트를 왼쪽에서 오른쪽으로, 혹은 오른쪽에서 왼쪽으로 이동시키는 연산자 • 예: 정수 15의 왼쪽으로 2자리 이동(15 << 2)

  46. 변환연산자(캐스트연산자) • 변환 연산자 • 수식내에서 변수의 데이터 타입을 강제로 변환시키는 연산자(명시적 형변환) • 표기법 : (타입)변수 int a; double b = 10.25; a = (int)b; //b의 실수값이 정수형으로 변환된 후 a에 대입된다.

  47. 조건연산자 • 조건연산자 • if~else문의 효과를 내는 연산자 • 피연산자를 3개 취하기 때문에 삼항연산자라고도 불린다 • 표기법 : 조건 ? 값1 : 값2 int a = 10, b; b = (a > 0) ? 1 : 0; //a의 값이 0보다 크면 1을, 그렇지 않으면 0을 대입 a = (b == 1) ? 1 : 0; //b의 값이 1이면 1을, 그렇지 않으면 0을 대입

  48. 연습문제 • 사용자로부터 두개의 수를 입력받은 후 첫번째 수를 두번째 수로 나눈 나머지를 구하는 프로그램을 구현하시오. • 사용자로부터 하나의 정수를 입력 받아서 그 수의 제곱수를 출력하는 프로그램을 구현하시오. • 사용자로부터 하나의 정수를 입력 받아서 그 수를 왼쪽으로 3자리 시프트 연산한 결과를 출력하는 프로그램을 구현하시오. • 하나의 숫자를 입력받아서 오른쪽에서 3번째 자리의 비트가 0인지 1인지를 알려주는 프로그램을 구현하시오 • 사용자로부터 하나의 숫자를 입력 받아서 0xF120으로 ^연산을 한 값과 다시 ^연산을 한 값을 출력하는 기능을 구현하시오. • 사용자로부터 두개의 수를 입력받은 후 두 수의 부호에 따라 메시지를 출력하는 프로그램을 구현하시오. (조건연산자 사용) • 두수 모두 양수 : 모두 양수입니다. • 그렇지 않은 경우 : 모두 양수는 아닙니다.

  49. Chapter06 프로그램 제어문

  50. 프로그램 제어문 • 조건에 따른 분기와 점프 • : 주어진 조건에 따라 다음에 오는 명령의 실행 여부를 결정하여 상황에 따라 다르게 동작시키는 문장 • if문 • switch문 • goto문 • 반복문 • : 비슷한 형태의 문장들을 여러 번 반복해서 실행하는 문장 • while문 • do while문 • for문 • continue & break

More Related