Chapter 01 컴퓨터와 프로그램.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
천안천일고등학교 Copyright © by Ryu Bin All rights reserved 프로그래밍 실무.
문자코드 1 박 2 일 (4 조 ) 이경도 이준집 이수연 엄태규. 문자코드란 ? 문자나 기호를 컴퓨터로 다루기 위하여, 문자나 기호 하나하나에 할당 시키는 고유의 숫자를 말하는 것이다.
컴퓨터와 인터넷.
조원 : 김영재(코딩) 이지영(스토리) 임병욱(그래픽)
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
재료수치해석 HW # 박재혁.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
Part 01 서론 안산1대학 디지털정보통신과 임 성 국.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Power Java 제2장 자바 개발 도구.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
입문
1. C++ 시작하기.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
Chapter 01 컴퓨터와 프로그램.
Computational Thinking
1. C 언어 개요.
Method & library.
JA A V W. 03.
프로그래밍 개요
Chap 6.Assembler 유건우.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
UNIX Unbounded A Beginning Approach
Lesson 2. 기본 데이터형.
CHAPTER 04. 프로그래밍 언어 인간과 컴퓨터의 대화_진화하는 소통. 진화하는 컴퓨터
☆ASCII☆ 김연주.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
6강. 객체지향 프로그램의 시작 객체지향 이전의 프로그래밍 객체지향의 등장 배경과 이해 메소드의 이해
자바 5.0 프로그래밍.
ARM Development Suite v1.2
Chapter 02. 자바 기본 문법.
1. 2진 시스템.
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
“사람과 컴퓨터” 이 점 숙 컴퓨터와 소프트웨어 “사람과 컴퓨터” 이 점 숙
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
Chapter 01 자바의 개요 자바는 최초 전자기기의 내장형 소프트웨어를 위해 개발되었으나, 최근 엔터프라이즈 응용에도 폭 넓게 활용됨 자바의 특징과 실행방법, 개발 환경 및 도구에 대해 소개.
리더 : 이동주 스토리 : 김현 그래픽 : 최혁진 코딩 : 최재근
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
Numerical Analysis Programming using NRs
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
 6장. SQL 쿼리.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
Presentation transcript:

Chapter 01 컴퓨터와 프로그램

컴퓨터의 구성요소 컴퓨터 compute(계산)하는 기계 컴퓨터는 사람과는 달리 창조적으로 사고할 수 있는 능력이 없으며, 단순히 주어진 명령들만을 수행 컴퓨터의 행동을 지시하는 이러한 명령들을 우리는 프로그램(program)이라고 부르며 이 프로그램을 이용하여 단순한 ‘사실’(fact)을 의미 있는 ‘정보’(information)로 변환하는 역할을 수행하는 것이 컴퓨터가 하는 주요 일 컴퓨터는 기본적으로 전기적인 On/Off 즉 1과 0의 두 가지 신호밖에 인식하지 못한다. 따라서 컴퓨터는 1과 0의 조합으로 구성된 문자, 숫자 등의 데이터를 처리 계산함으로써 원하는 결과를 생성

하드웨어와 소프트웨어 하드웨어(Hardware) 소프트웨어(Software) 컴퓨터를 구성하는 물리적인 장치(device)를 의미 소프트웨어(Software) 컴퓨터가 수행할 작업을 지시하는 명령어들의 집합(프로그램) 소프트웨어는 응용 소프트웨어와 시스템 소프트웨어로 나누며, 시스템 소프트웨어는 하드웨어를 작동시키는 기본 소프트웨어

컴퓨터의 자료표현 자료표현 원리 비트와 바이트 2진수 체계를 사용 Bit byte 워드 Binary Digit 0 또는 1의 두 개 정보 표현하는 정보의 최소 단위 byte 연속된 8개의 비트 워드 연속된 4 개의 바이트, 총 32비트 실질적으로 시스템마다 워드의 크기는 다를 수 있음

저장단위의 크기 단위 현실에서의 기억용량의 단위

코드체계 문자 코드 아스키 코드 엡시딕 코드 유니 코드 N비트의 조합에 일정한 문자를 할당하여 지정한 것을 문자 코드 국제 표준인 문자 코드는 아스키코드, 엡시딕코드, 유니코드 아스키 코드 ASCII(American Standard Code for Information Interchange) 국제적인 표준으로 사용하는 문자 코드 체계로서 7비트를 사용하여 128개의 문자, 숫자, 특수문자 코드를 규정 엡시딕 코드 EBCDIC(Extended Binary Coded Decimal Interchange Code)은 8비트를 사용하여 문자를 표현하는 코드 표준으로 IBM에서 제정한 표준 유니 코드 전 세계의 문자를 모두 표현하기 위한 16비트(2바이트)로 확장된 코드 체계 자바 언어에서 기본으로 이용

아스키 코드 코드표 아래의 표에서 행의 4개의 비트는 총 7비트의 하위 4개 비트로 표현하며, 열의 3개 비트는 상위 3개 비트를 표현 즉 대문자 A의 코드는 1000001이며, 소문자 a의 코드는 1100001

여러 진법 10진법 2진법 0에서 9까지의 수를 사용하며, 이 10 가지의 수를 한 자리의 기본 단위로 하는 진법 0과 1의 조합으로 숫자를 표시하는 방법 컴퓨터의 자료 표현은 한 비트가 두 가지 표현이 가능

8, 16진법 8진법 16진법 0부터 7까지의 8가지의 수를 이용하여 숫자를 표시하는 진법 0에서 9까지 그리고 A에서 F까지(소문자도 이용 가능) 총 16개의 숫자나 문자를 사용하여 표시하는 진법   문자 A는 10을 의미하며, B는 11, C는 12, D는 13, E는 14, F는 15를 의미

양수의 이진표현 10진법의 양수를 2진법으로 바꾸는 규칙 26을 2진수로 바꾸는 과정 위의 계산 과정을 통하여 26 = 110102 단계 1 : 주어진 값을 2로 나누고 그 나머지를 기록한다. 단계 2 : 몫이 0이 아니면 계속해서 새로운 몫을 2로 나누고 그 나머지는 기록한다. 단계 3 : 몫이 0이면 원래 값의 2진 표현은 나머지가 기록되는 순서대로 왼쪽에서 오른쪽으로 나열한다.

2진수, 8진수, 16진수간 상호관계 2진수, 8진수 그리고 16진수 사이의 관계 8 = 23, 16 = 24 의 관계가 존재하므로 이를 이용하면, 2진수로 표현된 수를 각각 8진수, 16진수로 표현하는데 쉽게 변환이 가능 2진수의 4자리씩을 16진수로 변환하면 쉽게 2진수를 16진수로 변환이 가능 2진수의 3자리씩을 8진수로 변환하면 쉽게 2진수를 8진수로 변환이 가능 26.625를 각각 2진수, 8진수, 16진수로 표현하면 다음 그림과 같음

보수(complement) 이진수의 연산에서 1의 보수(complement) 연산 2의 보수 이진수의 비트를 각각 0은 1로, 1은 0으로 변환하는 연산 즉 4비트의 이진수 0100의 1의 보수를 구하면 1011 2의 보수 음수를 표현하는 방식 중 가장 많이 사용되는 방식이 2의 보수 이해를 돕기 위하여 비트의 수가 4인 경우 2의 보수 표현법을 이용한 음수와 양수를 나타낸 표

2의 보수 음수의 이진수 표기인 2의 보수를 구하는 방법 1 2의 보수를 구하는 방법 2 2n에서 음수의 절대값을 빼는 방법 예를 들어 –4를 4비트로 2의 보수로 표현하자면, 표현되는 비트의 수가 4개이므로 24 – 4 = 12 = 1100 2의 보수를 구하는 방법 2 예를 들어 –4를 4비트로 2의 보수로 표현하자면

정수의 연산 음수는 보수 표현으로 2의 보수를 이용한 음수의 표현 방법을 이용하여 정수의 빼기를 계산하면 그 연산이 매우 간단 즉 4비트의 정보를 표현하는 방법에서 다음과 같이 4-4를 4+(-4)로 표현하여, 각 수를 이진수로 계산하면 간단히 0000이 계산

컴퓨터의 정수 표현 정보의 표현 n비트의 표현 컴퓨터는 양수와 음수를 표현하는데, 이진수와 2의 보수 방법을 이용 8비트의 메모리로는 28 가지(256)의 정보를 표현 양수와 음수를 모두 표현하면 -(27)에서 (27 - 1)까지의 범위를 표현 n비트의 표현 결과적으로 2의 보수를 이용하여 n개의 비트를 가지고 정수를 표현하면, 수의 범위는 -(2n-1)에서 (2n-1 - 1)까지의 정수

표현범위와 오버플로우 표현범위 오버플로우 다음은 저장공간의 비트 크기에 따른 정수 표현 범위의 최대 값, 최소 값을 나타낸 표 n개의 비트들로는 표현의 한계가 있으므로 이 범위를 넘는 수는 값을 표현할 수 없다는 의미를 가지며 이러한 현상을 오버플로우 한 예로 M = 00112= 3, N = 01102 = 6일 때, M + N = 00112 + 01102 = 10012 인데, 이 수는 –7이라는 결과가 나온다. 이는 우리가 원했던 9와는 상이한 답

프로그램과 소프트웨어 프로그램 소프트웨어 프로그램은 컴퓨터에게 어떤 일의 수행을 지시하는 명령어(instruction) 집합 소스 특정한 프로그램 언어로 이 명령어의 집합을 모아 놓은 파일을 프로그램 소스(source) 실행파일 이 소스 파일로부터 만들어진 실행 파일은 컴퓨터가 이해할 수 있는 기계어로 명령어를 모아 놓은 파일 소프트웨어 소프트웨어는 보통 ‘프로그램’이라고 부르는 것 외에도 데이터와 문서까지를 포함하는 포괄적인 개념

프로그램 소스 C 언어로 작성한 프로그램 소스의 예 1에서 10까지 더한 결과를 출력하는 명령어를 가지는 C 프로그램

구현 단계는 흐름도 또는 의사코드를 컴퓨터가 이해할 수 있는 프로그래밍 언어로 번역(translation)하는 단계 소프트웨어의 개발단계 소프트웨어의 생명주기 구현 단계는 흐름도 또는 의사코드를 컴퓨터가 이해할 수 있는 프로그래밍 언어로 번역(translation)하는 단계

프로그램 개발환경 개발환경 IDE 개발환경 주요 구성요소 프로그램을 개발하기 위해서는 기본적으로 에디터(editor), 컴파일러(compiler), 링커(linker), 로더(loader), 디버거(debugger) 등이 필요 IDE 이러한 도구를 통합적으로 제공하는 개발 환경을 통합 개발 환경(Integrated Development Environments) 개발환경 주요 구성요소 Compiler 고급언어로 작성된 프로그램을 기계어로 바꾸어주는 프로그램 링커 이러한 여러 개의 목적 코드들을 하나의 프로그램으로 합치는 작업을 수행 디버거 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나 오류 발생시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램

컴파일러 프로그램을 만들기 위한 특수한 프로그램 고급언어로 작성된 프로그램을 기계어로 바꾸어주는 프로그램 컴파일러에 의해 처리되기 전의 프로그램을 원시 코드(source code) 컴파일러에 의해 기계어로 번역된 프로그램을 목적 코드(object code) 이러한 원시 코드와 목적 코드가 저장된 파일을 각각 소스 파일, 목적 파일이라

인터프리터와 컴파일러 인터프리터 컴파일러와의 차이 컴파일러처럼 고급언어를 기계어로 번역해주는 역할을 수행 컴파일러는 원시 코드 전체를 읽은 다음 이를 기계어로 번역해 주는데 비하여, 인터프리터는 원시 코드를 한 줄씩 읽어 들여 목적 코드로 변환 프로그램 언어 베이직(BASIC)이 인터프리터를 사용하는 대표적인 프로그램

프로그램 제작과정 링커(linker) 디버거(debugger) 로더(loader) 라이브러리 이러한 여러 개의 목적 코드들을 하나의 프로그램으로 합치는 작업 디버거(debugger) 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나 오류 발생시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램 로더(loader) 작성된 프로그램을 컴퓨터의 주기억장치에 로드(load)함으로써 프로그램을 실행 가능하게 하는 역할을 수행 라이브러리 자주 사용하는 프로그램들은 프로그램을 작성할 때마다 새로 작성하는 것이 아니라 미리 만든 다음 컴파일하여 저장해놓는데, 이러한 파일들을 라이브러리(library)

프로그래밍 언어 프로그래밍 언어의 필요성 프로그래밍 언어의 분류 사람과 컴퓨터가 서로 의사교환을 하기 위하여 만든 것이 프로그램 언어 프로그램 언어는 사람이 컴퓨터에게 지시할 명령어를 기술하기 위하여 만들어진 언어 프로그래밍 언어의 분류 기계어 0과 1로 표현되는 프로그래밍 언어로서 컴퓨터가 직접 이해할 수 있는 유일한 언어 어셈블리어 기계어의 연산코드와 피연산자를 프로그래머가 좀 더 이해하기 쉬운 기호 형태로 일대일 대응시킨 프로그래밍 언어 고급언어 사람이 이용하는 언어와 유사하여 사람에게 더욱 친근한 프로그램 언어

프로그램 언어 프로그램 언어의 발달 프로그램 언어 분류

객체지향과 절차적 언어 고급 언어의 분류 절차지향 언어와 객체지향 프로그래밍 언어의 특징 고급 언어로 분류하는 여러 방법 중의 하나가 절차지향(Procedural) 언어와 객체지향(Object oriented) 언어로 나누는 방법 절차지향 언어와 객체지향 프로그래밍 언어의 특징

고급 언어의 종류 포트란 포트란(FORTRAN)은 FORmula TRANslating system(수식 번역 시스템)의 약자 과학과 공학 및 수학적 문제들을 해결하기 위해 고안된 프로그래밍 언어 베이직 베이직(BASIC)은 Beginner’s All-purpose Symbolic Instruction Code의 약어 초보자도 쉽게 배울 수 있도록 만들어진 대화형 프로그래밍 언어 코볼 코볼(COmmon Business Oriented Language)은 기업의 사무처리에 적합한 프로그래밍 언어 파스칼 PASCAL은 프랑스의 수학자인 파스칼(Pascal)의 이름에서 따온 언어 프로그램의 작성 즉, 구조적 프로그래밍 및 알고리즘 학습에 적합하도록 개발된 프로그래밍 언어

고급 언어의 종류 C C++ C는 유닉스(UNIX)의 운영체제 작성을 위한 시스템 프로그래밍 언어로 설계된 언어 컴파일러나 수많은 소프트웨어 도구(Tool)들도 C언어로 개발 C언어는 프로그램을 기계어 명령에 가까운 형태로 작성할 수 있으므로 다른 고급언어에 비하여 하드웨어에 대한 보다 확실한 통제가 가능 특정 컴퓨터 기종에 의존하지 않으므로 프로그램의 이식성(portability)이 높음 풍부한 연산자와 데이터 형(data type)을 갖고 있기 때문에 범용 프로그래밍 언어로서 널리 보급되었으며, 응용 소프트웨어의 개발에 널리 이용 C++ C++은 객체지향 프로그래밍(OOP Object-Oriented Programming)을 지원하기 위해 C언어가 가지는 장점을 그대로 계승하면서 객체의 상속성(inheritance) 등의 개념을 추가한 효과적인 언어 C++는 C언어의 확장이라고 볼 수 있으므로 기존의 C언어로 개발된 모든 프로그램들을 수정 없이 그대로 사용 가능

고급 언어의 종류 자바 자바(JAVA)의 시초는 1992년 미국의 SUN 사에서 가전 제품들을 제어하기 위한 언어에서부터 비롯됨 운영체제나 CPU와는 독립적으로 실행 가능한 프로그래밍 언어 자바는 C++언어의 기초 위에 객체지향 개념을 구현하도록 설계된 언어 분산 네트워크상에서의 프로그래밍이 용이 자바 프로그램의 실행은 운영체제의 가상 머신(Virtual Machine) 위에서 인터프리터 방식으로 작동하므로 프로그램의 속도가 떨어진다는 단점도 지적

C, C++, Java 프로그래머에게 매우 중요한 언어 기본은 모두 C 언어