쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.

Slides:



Advertisements
Similar presentations
운영 체제의 일반 발표자 : 백승재 황영종. 1. 운영체제의 의의 전자 계산기에서 사용자와 하드웨어와의 직접적으로 대화하는 대신 운영 체제라는 시스템 프로그램을 통하여 하드웨어를 다루는 것이다. 한정된 컴퓨터 자원을 효율적으로 관리, 운영함으로써 사용자에게 편의성을 제공하는.
Advertisements

컴퓨터프로그래밍 I 강원대학교 컴퓨터학부 2012 년 1 학기 담당교수 : 정충교 1. 강사진 강사 : 정충교 교수 연구실 : 공 호 조교 : 3 분반 이남세 연구실 : 공
1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
C 언어 기초 2 위덕대학교 에너지전기공학부 이 수 형 2009년 2학기.
기본 컴퓨터 프로그래밍 Lecture #6.
C 언어 강의 Windows, Unix 중심으로.
컴퓨터 소프트웨어.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
CHAPTER 04 컴퓨터 소프트웨어.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
누구나 쉽게 즐기는 C언어 콘서트 한남대학교 컴퓨터공학과 이 재 광 교수.
컴퓨터 구조학 정보보호학과.
Power Java 제4장 자바 프로그래밍 기초.
Kasimov C언어 세미나 1st.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
변수와 자료형.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
2 운영체제 소개.
Computer Architecture
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
Chapter 06 명령어와 번지지정 방식.
변수와 자료형.
운영체제 이나현.
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
제 1장 시스템 소프트웨어의 개요.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
2007년 1학기 전산학개론 성신여자대학교 컴퓨터정보학부
명품 C++ 프로그래밍 1장. C++ 시작.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
Chapter 1 Welcome Aboard.
Lecture 01: Compiler Overview
국가대표 생애주기교육 프로그램 참여방법 안내
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
글사랑 캡션 편집 안드로이드 앱 담당 교수님 전진우 교수님 진세훈 정상기 글사랑.
제1장 프로그래밍 기초
Computer System Architecture
기계어변천사.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제 1장 서론 Hello!! C 언어 강성호 김학배 최우영.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
수업 첫 날 교육B 황유미 첫 수업 계획에 대해 알아보도록 하겠습니다..
컴 파 일 러 Compilers.
01. 데이터베이스와 SQL 개요.
연결링크 이미지를 마일리지샵 내에 기획전으로 제작하여 오픈/노출 사이즈 가로 1000/세로 상관x 배너사이즈 가로 400
제 1 장. 자료구조와 알고리즘.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
제1장 정리 컴퓨터소프트웨어과 2-A반 주세호.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
C언어 개론.
3단원 디지털 세상 속으로 1. 0과 1의 비밀.
Name Title Company Name
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
문자코드, 문자 입출력 한국어 정보의 전산 처리
C언어 개요 프로그래밍이란 프로그래밍 언어란 컴퓨터와의 의사소통을 위한 표현 방법 세대별 언어의 발전을 거듭함
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
내소착성이 우수한 금속 압출용 금형 및 그 제조방법
컴퓨터 프로그램 제 1장 공학문제 해결 김 문 기.
Introduction to Computer System Spring, 2019
제 1 강 컴퓨터의 구조.
Presentation transcript:

쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express

컴퓨터란? Q) 컴퓨터(computer)는 무엇인가? A) 컴퓨터는 기본적으로 계산(compute)하는 기계

디지털과 아날로그 Q) 디지털은 무엇인가? 모든 데이터를 숫자 형태로 표시하는 것 데이터를 표현, 처리, 저장, 전송하는데 숫자를 사용 Q) 아날로그는 무엇인가? 연속적인 값으로 데이터를 표현 데이프와 같은 아날로그 매체에 데이터를 저장

컴퓨터의 계산 능력 Q) 컴퓨터가 계산을 빠르게 할 수 있는 이유는? 전자 회로를 이용하여 계산을 하기 때문이다. 이진수를 사용하여야 한다. 이진수가 전자 회로로 나타내기가 가장 쉽기 때문이다.

이진수 Q) 이진수는 십진수와 무엇이 다른가? 이진수는 0과 1로만 구성되어 있다. Q) 십진수를 이진수로 바꾸려면? 십진수를 이진수로 바꾸려면 십진수를 2로 나누고 나머지를 기록하는 작업을 몫이 0이 될 때까지 되풀이하면 된다.

비트와 바이트 Q) 비트(bit)란 무엇인가? 이진수의 하나의 자리수를 의미한다. 바이너리 디지트(binary digit)의 약자이다. Q) 바이트(byte)란 무엇인가? 8개의 비트를 모은 것을 바이트라고 한다. Q) 워드(word)란 무엇인가? 바이트가 4개 모인 것. 시스템에 따라서 정의가 달라질 수도 있다.

비트의 표현 Q) 비트는 컴퓨터 내부에서 구체적으로 어떻게 표현되는가? 이진수의 0은 열린 스위치로, 이진수의 1은 닫친 스위치로 표현된다.

스위치의 구현 Q) 스위치는 컴퓨터 내부에서 구체적으로 어떻게 구현되는가? 하나의 트랜지스터는 소형 전자 스위치의 역할을 한다.

컴퓨터의 정의 Q) 그렇다면 계산만 빠르게 할 수 있으면 컴퓨터인가? 현대적인 의미에서의 컴퓨터는 명령어들의 리스트에 따라 데이터를 처리하는 기계라고 할 수 있다

컴퓨터의 구성 요소 Q) 컴퓨터의 구성 요소를 크게 2가지로 분류하면? 컴퓨터는 기본적으로 하드웨어와 소프트웨어로 구분

하드웨어 Q) 하드웨어는 어떻게 분류할 수 있는가?

소프트웨어 Q) 소프트웨어는 어떻게 분류할 수 있는가? 소프트웨어 시스템 소프트웨어 응용 소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍 도구 등 : 워드 프로세서, 스프레드 쉬트, 그래픽 프로그램, 미디어 재생기 등

프로그램 Q) 왜 컴퓨터에서는 가전제품처럼 프로그램 설치 없이 바로 동작되도록 하지 않고 불편하게 사용자가 프로그램을 설치하게 하였을까 ? 컴퓨터를 범용적인 기계로 만들기 위해서이다. 컴퓨터는 프로그래만 바꾸어주면 다양한 작업을 할 수 있다.

기계어 Q) 컴퓨터가 이해할 수 있는 언어는 어떤 것인가? 컴퓨터가 알아듣는 언어는 한가지이다. 즉 0과 1로 구성되어 있는 “001101110001010...”과 같은 기계어이다. 컴퓨터는 모든 것을 0과 1로 표현하고 0과 1에 의하여 내부 스위치 회로들이 ON/OFF 상태로 변경되면서 작업을 한다.

프로그래밍 언어의 필요성 Q) 그렇다면 인간이 기계어를 사용하면 어떤가? 기계어를 사용할 수는 있으나 이진수로 프로그램을 작성하여야 하기 때문에 아주 불편하다. 프로그래밍 언어는 자연어와 기계어 중간쯤에 위치 컴파일러가 프로그래밍 언어를 기계어로 통역

프로그램의 역할 Q) 컴퓨터에서 프로그램이 하는 일은 무엇인가? 프로그램이란 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 한다.

작업을 지시하는 방법 Q) 컴퓨터에게 적당히 작업을 시킬 수 있을까? A) 상식이나 지능이 없기 때문에 아주 자세하고 구체적으로 일을 지시하여야 한다.

학생들의 성적을 입력받고 입력받은 성적을 합하여, 학생수로 나눈다. 학생들의 성적의 평균을 계산해줘 “평균”이란 의미를 모른다. 학생들의 성적을 입력받고 입력받은 성적을 합하여, 학생수로 나눈다. 이제 어느정도 지시는 알겟지만 결과는 어떻게 하라는건지 모르겠다. 평균이란 단어의 의미는 알겠지만 단계적인 절차를 말해주어야 한다. 학생들의 성적을 입력받고 입력받은 성적을 합하여, 학생수로 나눈다. 결과는 화면에 표시하라. 처음부터 이렇게 지시하였어야 한다.

프로그래밍 언어의 분류 기계어(machine language) 어셈블리어(assembly language) 고급 언어(high-level language) 기계어 어셈블리어 고급언어 컴퓨터 인간

기계어 특정 컴퓨터의 명령어(instruction)를 이진수로 표시한 것 0과 1로 구성 하드웨어에 종속 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000 00000011 10100001 01100110 10001001 01000101 11111010

어셈블리어 CPU의 명령어들을 이진수가 아닌 영어의 약자인 기호로 표기 기계어보다는 더 높은 수준에서 프로그램을 작성하는 것을 가능 기호와 CPU의 명령어가 일대일 대응 어셈블러(assembler): 기호를 이진수로 변환하는 프로그램 MOV AX, MIDSCORE MOV CX, FINALSCORE ADD AX CX MOV TOTALSCORE, AX

고급언어 특정한 컴퓨터의 구조나 프로세서에 무관하게, 독립적으로 프로그램을 작성할 수 있는 언어 C, C++, JAVA, FORTRAN, PASCAL 컴파일러: 고급 언어 문장을 기계어로 변환하는 프로그램 TotalScore = MidScore + FinalScore;

C 1970년대 초 AT&T의 Dennis Ritchie 에 의하여 개발 B언어->C언어 UNIX 운영 체제 개발에 필요해서 만들어짐 처음부터 전문가용 언어로 출발 Ken Thomson과 Dennis Ritchie가 클린턴 대통령으로부터 National Medal of Technology상을 받는 장면

C언어의 버전 K & R C 1978년 “C Programming Language“ 책 출간 비공식적인 명세서 역할 ANSI C 1983년 ANSI(American National Standards Institute)는 X3J11이라는 위원회에 의한 표준 C99 1999년에 ISO에 의한 표준 C++에서 사용되는 특징 추가 아직 마이크로소프트는 지원하지 않음(이유: C++에 집중)

C언어의 특징 간결하다. 효율적이다. C 언어는 하드웨어를 직접 제어하는 하는 저수준의 프로그래밍도 가능하고 고수준의 프로그래밍도 가능하다.  C언어는 이식성이 뛰어나다. 초보자가 배우기가 어렵다.

C언어의 특징

C언어의 미래 Q) 앞으로도 C언어는 사용될 것인가? C언어는 C++와 JAVA의 공통적인 부분이다. 엠베디드 시스템: 엠베디드 시스템이란 특수 목적의 시스템으로 컴퓨터가 장치 안에 MP3 플레이어, 핸드폰등이 여기에 속한다.

알고리즘 Q) 오븐의 사용법만 배우고 음식 재료만 있으면 누구나 요리가 가능한가? A) 요리법을 알아야 한다. 프로그램이 요리와 같다면 알고리즘은 요리법에 해당한다. 알고리즘(algorithm): 문제를 해결하는 절차(방법)

빵을 만드는 알고리즘 ① 빈 그릇을 준비한다. ② 이스트를 밀가루, 우유에 넣고 저어준다. ③ 버터, 설탕, 계란을 추가로 넣고 섞는다. ④ 따뜻한 곳에 놓아두어 발효시킨다 ⑤ 170~180도의 오븐에서 굽는다

1부터 10까지의 합을 구하는 알고리즘

알고리즘의 기술 영어와 국어와 같은 자연어 순서도(flowchart) 의사 코드(pseudo-code) 예제: 숫자들의 리스트에서 최대값을 구하는 문제

자연어 자연어 (natural language)는 인간이 사용하는 언어 단어들을 명백하게 정의해야 한다. ① 1.리스트의 첫 번째 숫자가 가장 크다고 가정하자. ② 2.리스트의 남아있는 숫자들이 하나씩 조사하여 현재의 최대값보다 크면 노트에 적는다. ③ 3.모든 숫자들을 전부 조사된 후에 노트에 가장 나중에 적힌 숫자가 최대값이 된다.

순서도 프로그램에서의 논리순서 또는 작업순서 등을 그래픽으로 표현하기 위한 형식 알고리즘이 복잡하면 기술하기가 힘들어진다.

의사 코드 자연어보다는 더 체계적이고 프로그래밍 언어보다는 덜 엄격한 언어로서 알고리즘의 표현에 주로 사용되는 코드 알고리즘 GetLargest   입력: 숫자들의 리스트 L.   출력: 리스트에서 가장 큰 값   largest ←L[0]   for each n in L do     if n > largest  then       largest ← n   return largest

알고리즘을 만드는 방법 문제를 한 번에 해결하려고 하지 말고 더 작은 크기의 문제들로 분해한다. 문제가 충분히 작아질 때까지 계속해서 분해한다. (예) 주어진 정수 k가 소수(prime)인가 아닌가를 판별하는 알고리즘을 만들어보자. 문제: 주어진 정수 k가 소수인지를 판별하라 STEP 1: 정수 k의 약수의 개수를 구한다. STEP 2: 약수의 개수가 2이면 소수이다. STEP 1-1: 정수 k를 1로 나누어서 떨어지면 약수의 개수를 증가 STEP 1-2: 정수 k를 2로 나누어서 떨어지면 약수의 개수를 증가 STEP 1-k: 정수 k를 k로 나누어서 떨어지면 약수의 개수를 증가 ...

프로그램 개발 과정 요구사항분석 알고리즘의 개발 코딩 컴파일과 링크 실행과 디버깅 유지보수 규모가 큰 프로그래밍은 절차를 따라야 합니다. 코딩 컴파일과 링크 실행과 디버깅 유지보수

요구 사항 분석 프로그래머는 사용자들의 요구사항을 만족시키기 위하여 프로그램을 작성 (예) 3년 이상 근무한 직원들의 리스트 출력 정규직만 or 계약직 포함 기준이 되는 날짜가 오늘? 요구 사항 명세서: 사용자의 요구 조건을 만족하도록 소프트웨어가 갖는 기능 및 제약 조건, 성능 목표 등을 포함

알고리즘의 개발 핵심적인 부분 어떤 단계를 밟아서 어떤 순서로 작업을 처리할 것인지를 설계 순서도와 의사 코드를 도구로 사용 알고리즘은 프로그래밍 언어와는 무관 알고리즘은 원하는 결과를 얻기 위하여 밟아야 하는 단계에 집중적으로 초점을 맞추는 것

코딩 알고리즘의 각 단계를 프로그래밍 언어를 이용하여 기술 어떤 프로그래밍 언어로도 가능 알고리즘을 프로그래밍 언어의 문법에 맞추어 기술한 것을 소스 프로그램(source program) 소스 프로그램은 주로 텍스트 에디터나 통합 개발 환경을 이용하여 작성 (Q) 알고리즘 개발과 코딩 중 어떤 것이 더 어려울까? . (A) 알고리즘 개발이 더 창의적인 작업이고 더 어렵다

컴파일 소스 프로그램을 목적 프로그램으로 변환하는 작업 컴파일러가 수행 컴파일 오류: 문법 오류 (예) He go to school; 오류가 발생하면 소스 프로그램을 수정한 후에 다시 컴파일

링크 컴파일된 목적 프로그램을 라이브러리와 연결하여 실행 프로그램을 작성하는 것 라이브러리(library): 프로그래머들이 많이 사용되는 기능을 미리 작성해 놓은 것 (예) 입출력 기능, 파일 처리, 수학 함수 계산 링크를 수행하는 프로그램을 링커(linker)라고 한다.

실행 및 디버깅 실행 파일: 실행 파일은 윈도우즈에서는 .exe라는 확장자 실행 시간 오류(run time error): 0으로 나누는 것 잘못된 메모리 주소에 접근하는 것 논리 오류(logical error):  문법은 틀리지 않았으나 논리적으로 정확하지 않는 것 (예) ① 그릇1과 그릇2를 준비한다. ② 그릇1에 밀가루, 우유, 계란을 넣고 잘 섞는다. ③ 그릇2를 오븐에 넣고 30분 동안 350도로 굽는다.

디버깅 소스에 존재하는 오류를 잡는 것

소프트웨어의 유지 보수 소프트웨어의 유지 보수가 필요한 이유 디버깅 후에도 버그가 남아 있을 수 있기 때문 소프트웨어가 개발된 다음에 사용자의 요구가 추가될 수 있기 때문 유지 보수 비용이 전체 비용의 50% 이상을 차지

Q & A