2008 kang s c 2nd edition 01 프로그래밍 첫걸음.ppt [호환...

32
01 프로그래밍 첫걸음 01 프로그래밍 첫걸음 조선대학교 전자공학과 장순석 교수

Upload: others

Post on 04-Sep-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

01 프로그래밍 첫걸음01 프로그래밍 첫걸음

조선대학교 전자공학과 장순석 교수

Page 2: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

프로그래밍 언어프로그래밍 언어

프로그래밍 언어의 필요성

사람과 컴퓨터가 서로 의사교환을 하기 위해 사람과 컴퓨터가 서로 의사교환을 하기 위해

사람이 컴퓨터에게 지시할 명령어를 프로그래밍 언어로 기술

한국대학교 객체지향연구소2

Page 3: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

기계어와 어셈블리어기계어와 어셈블리어

기계어

0과 1로표현되는프로그래밍언어로서컴퓨터가직접이해할수 0과 1로표현되는프로그래밍언어로서컴퓨터가직접이해할수있는유일한언어

어셈블리어

기계어의연산코드와피연산자(operand)를프로그래머가좀더이해하기쉬운기호형태로일대일대응시킨프로그래밍언어

한국대학교 객체지향연구소3

Page 4: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

저급 언어와 고급 언어저급 언어와 고급 언어

HLL(High Level Language) 인간에게친근한언어를고급언어 인간에게친근한언어를고급언어

LLL(Low Level Language) 기계어와어셈블리어는저급언어

한국대학교 객체지향연구소4

Page 5: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

컴파일러컴파일러

컴파일러(compiler) 고급언어로작성된프로그램을기계어로바꾸어주는프로그램 고급언어로작성된프로그램을기계어로바꾸어주는프로그램

한국대학교 객체지향연구소5

Page 6: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

어셈블러어셈블러

어셈블러(assembler) 어셈블리언어로작성된프로그램을기계어로바꾸어주는프로그램 어셈블리언어로작성된프로그램을기계어로바꾸어주는프로그램

한국대학교 객체지향연구소6

Page 7: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

프로그램 개발 과정프로그램 개발 과정

링커(linker) 이러한여러개의목적파일들을라이브러리함수와연결해서하나의 이러한여러개의목적파일들을라이브러리함수와연결해서하나의파일인실행파일을생성하는작업을수행

로더(loader) 작성된프로그램을컴퓨터의주기억장치에로드(load)함으로써프로그램을실행가능하게하는역할을수행

한국대학교 객체지향연구소7

Page 8: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 언어의 역사C 언어의 역사 B 언어에서 발전

C언어는켄톰슨(Ken Tompson)이개발한 B언어에서발전된언어 C 언어는켄톰슨(Ken Tompson)이개발한 B 언어에서발전된언어 C 언어는 1972년경, 시스템 PDP-11에서운용되는운영체제 Unix를개발하기위한언어

미국전신전화국인 AT&T의벨연구소의데니스리치(Dennis Ritchie)가개발

C 언어가 영향을 준 언어 C 언어가 영향을 준 언어 C++ 자바

C#

한국대학교 객체지향연구소8

Page 9: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

다양한 C 프로그램 개발 환경다양한 C 프로그램 개발 환경 Visual C++

Visual C++는마이크로소프트사의대표적인통합개발환경 Visual C++는마이크로소프트사의대표적인통합개발환경 프로그램언어 C/C++를이용하여응용프로그램을개발 Visual C++는현재 MS의개발도구인 MS Visual Studio .Net의한제품으로판매

Eclipse CDT이클립스컨소시엄이개발한유니버셜도구플랫폼으로모든부분에 이클립스컨소시엄이개발한유니버셜도구플랫폼으로모든부분에대해개방형

PDE(Plug-in Development Environment) 환경을지원하여확장( g p )가능한통합개발환경

Dev–C++완전무료인 D C++는유닉스운영체제용컴파일러인 GCC와 완전무료인 Dev-C++는유닉스운영체제용컴파일러인 GCC와MinGW를포함하여배포하는통합개발환경

한국대학교 객체지향연구소9

Page 10: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 프로그램 개발 과정C 프로그램 개발 과정 컴파일, 링킹, 실행 과정

소스파일 소스파일

목적파일

실행파일

한국대학교 객체지향연구소10

Page 11: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

Visual C++ 실행실행

실행 파일 실행

한국대학교 객체지향연구소11

Page 12: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

작업공간과 프로젝트 생성(1)작업공간과 프로젝트 생성(1) 작업공간

은여러프로젝트를모아관리하는단위이며 은여러프로젝트를모아관리하는단위이며, 프로젝트

하나의실행프로그램을작업하는단위

한국대학교 객체지향연구소12

Page 13: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

작업공간과 프로젝트 생성(2)작업공간과 프로젝트 생성(2) 작업공간

한국대학교 객체지향연구소13

Page 14: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

작업공간과 프로젝트 생성(3)작업공간과 프로젝트 생성(3) 프로젝트

한국대학교 객체지향연구소14

Page 15: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

소스 작성(1)소스 작성(1) first.c

한국대학교 객체지향연구소15

Page 16: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

소스 작성(2)소스 작성(2) 소스 입력 준비된 개발환경

한국대학교 객체지향연구소16

Page 17: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

컴파일, 링킹, 실행컴파일, 링킹, 실행 메뉴

한국대학교 객체지향연구소17

Page 18: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

실행 결과실행 결과

결과 내용은 없음.

한국대학교 객체지향연구소18

Page 19: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

문장을 출력하는 프로그램문장을 출력하는 프로그램

출력 문장과 프로젝트 구성

한국대학교 객체지향연구소19

Page 20: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

소스 작성(1)소스 작성(1) 주의 사항

한국대학교 객체지향연구소20

Page 21: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

소스 작성(2)소스 작성(2) 주의 사항

한국대학교 객체지향연구소21

Page 22: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

컴파일과 링킹, 실행컴파일과 링킹, 실행

한국대학교 객체지향연구소22

Page 23: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 프로그램의 이해(1)C 프로그램의 이해(1)

한국대학교 객체지향연구소23

Page 24: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 프로그램의 이해(2)C 프로그램의 이해(2) 주석 (Comments)

소스의첫줄에보이는 /* … */을주석(Comments)소스의첫줄에보이는 / … /을주석(Comments) 프로그램언어의문법과는관계없는프로그램설명문장

/* clang.c */

전처리기 지사자(Preprocessor directives) #으로시작하는문장

/ g /

시작하 장

컴파일하기전에먼저처리해야할일을수행하도록명령을내리는문장

문장 #include는다음에나오는헤더파일(header file)을이문장이 문장 #include는다음에나오는헤더파일(header file)을이문장이있는부분에삽입하는역할을수행

#include <헤더파일이름>#include 헤더파일이름

한국대학교 객체지향연구소24

Page 25: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 프로그램의 이해(3)C 프로그램의 이해(3) main 함수

함수main()은 C언어에서프로그램이시작되는함수 함수main()은 C 언어에서프로그램이시작되는함수 프로그램이실행되려면프로그램은반드시main() 함수를가져야함

i t i ( id) int와 main사이의공백은단어를구별하는중요한의int main(void) {

…}

int 와 main 사이의공백은단어를구별하는중요한의미가 있으므로, 하나이상의공백은반드시필요.

집합기호 {, }는반드시있어야하며,이는 main()} 집합기호 {, }는반드시있어야하며, 이는 main() 함수의시작과끝을의미한다.

한국대학교 객체지향연구소25

Page 26: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

C 프로그램의 이해(4)C 프로그램의 이해(4) printf 함수

표준출력으로출력을하기위한함수표준출력으로출력을하기위한함수

이함수는함수이름인 printf 이후의 ( ) 사이에큰따옴표 “…” 로둘러싸인문자열을출력하는역할을담당

문자열(String) 문자열(String) 문자열을구성하려면문자열을큰따옴표로앞과뒤를둘러싸야함

문자열에서의 \n \n 의의미는 \n이나타나는이후에는새로운줄에출력하라는의미

한국대학교 객체지향연구소26

Page 27: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

에러 수정에러 수정

에러

프로그램과정에서나타나는문제 컴파일시간에발생하는에러와실행시간에발생한에러로구분

디버깅

컴파일에러나실행에러를수정하는과정을디버깅(debugging)컴파일에러나실행에러를수정하는과정을디버깅(debugging)• 디버깅이란버그를잡는다는의미로여기서버그란바로에러를의미

한국대학교 객체지향연구소27

Page 28: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

디버깅 예제디버깅 예제

프로그램 목적

디버깅과정학습디버깅과정학습

컴파일 오류 메시지의 이해

한국대학교 객체지향연구소28

Page 29: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

링킹 오류링킹 오류

잘못된 단어 입력

Main으로잘못기술 Main으로잘못기술 컴파일은성공하나링킹에서오류

한국대학교 객체지향연구소29

Page 30: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

수정된 프로그램수정된 프로그램

바른 결과

한국대학교 객체지향연구소30

Page 31: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition

내용 요약과 내용 점검 문제내용 요약과 내용 점검 문제

한국대학교 객체지향연구소31

Page 32: 2008 Kang s C 2nd Edition 01 프로그래밍 첫걸음.ppt [호환 모드]ssjarng.chosun.ac.kr/c/chapter01.pdf · C로배우는프로그래밍기초2nd Edition 기계어와어셈블리어

C로 배우는 프로그래밍 기초 2nd Edition