기초컴퓨터프로그래밍
#include <stdio.h>
int main() {
printf("Hello to C Programming!\n");
printf("Instructor: Keon Myung Lee\n");
return 0;
}
기초 컴퓨터 프로그래밍
정보화사회의 기본 소양으로서 컴퓨터시스템을 이해
프로그래밍의 개념을 이해
C 프로그램을 이용하여 프로그래밍의 개념 및 기초적인 프로그래 밍 능력을 배양강좌 소개
1강. 컴퓨터시스템의 소개 2강. 데이터의 표현 방법 3강. 변수와 자료형
4강. 수식과 연산자 5강. 조건문
6강. 반복문 7강. 함수 8강. 배열 9강. 포인터
10강. 문자와 문자열
강좌 내용
컴퓨터시스템의 소개
#include <stdio.h>
int main() {
printf(“Introduction to Computer Systems!\n");
printf("Instructor: Keon Myung Lee\n");
return 0;
}
컴퓨터란 무엇인가
컴퓨터 하드웨어 구성 요소 및 역할
컴퓨터 프로그램과 알고리즘
프로그래밍 언어의 형태
시스템 소프트웨어
응용 소프트웨어
내 용
컴퓨터(Computer)
compute + -er : 계산기
電腦(电脑), 電子計算機 (중국)
Ordinateur (프랑스) 컴퓨터는 기계 (machine)다
기계 = 톱니바퀴 + 금속덩어리 + 움직이는 부품 (?)
특정 목적을 달성하기 위해 만들어진 여러 부품들로 구성된 도구-
계산하는 기계컴퓨터는 무엇인가
기계의 속성
정해진 일을 (순차적으로) 수행
주어진 대상 (입력)에 대해서 어떤 가공(처리)을 하여 결과물(출력)
시키는 일을 처리컴퓨터는 무엇인가
Image source: http://coffechino.blinkweb.com/coffe-machine.html
커피 원두 물
에스프레소 아메리카노 가열,분쇄, 압착
입력 처리 출력
데이터를 입력으로 받아 처리하여 출력하는 기계이다.
프로그램을 통해 다양한 작업을 할 수 있다.
똑똑해 보이는 일을 하지만 시키는 일 만 할 수 있다.
컴퓨터는 무엇인가
데이터 처리 가공된 데이터
(정보)
10+20 더하기 30
홍길동, 임꺽정, 장길산 정렬 임꺽정, 장길산, 홍길동 재현
둘리.jpg
Image source: http://navercast.naver.com/contents.nhn?contents_id=1469 Audio source : Windows 7, Music Sample file
kaliba.mp3 재생
컴퓨터 하드웨어 (hardware)
컴퓨터 시스템을 구성하고 있는 물리적인 부분
중앙처리장치(CPU), 기억장치(memory), 입력장치, 출력장치 컴퓨터 소프트웨어 (software)
컴퓨터 프로그램
프로그램에 관련된 문서-
프로그램 개발 과정에서 문서화된 모든 문서-
사용 설명서, 설치 설명서하드웨어와 소프트웨어
컴퓨터 하드웨어
광학드라이브 하드 디스크
전원공급장치 메인보드
입출력 포트
메인보드 main board motherboard
하드웨어
메모리 슬롯 CPU 소켓
그래픽카드 슬롯
PCI 슬롯
Image source: http://www.tecnodiscount.it/popup_image.php?pID=92845
주변장치 connector
Northbridge
HDD connector
ODD connector
CPU(Central Process Unit, 중앙처리장치)
Intel의 Pentium i7/IV/Xeon/Centrion, 셀러론 혹은 AMD의 AthlonXP/FX64 등
컴퓨터의 머리에 해당 (제한된 연산 기능)-
산술연산 (+, -, *, /) 및 논리연산 (AND, OR, NOT)-
조건 판단 (==, !=, >, <, >=, <=)-
데이터의 이동-
제어신호 생성 등 수행
프로그램의 명령어(instruction)을 순차적으로 처리하는 역할을 한다하드웨어
Image sources: blog.marines.co.kr brightsideofnews.com
http://www.maximumpc.com/article/news/samsung_produces_first_arm11based_processor_built_45nm
CPU의 구조
ALU(Arithmetic and Logical Unit) -
산술 연산 및 논리 연산 실행 레지스터(Register)
-
CPU 내의 고속 데이터 저장 장소 명령어 인출기(Instruction Fetcher)
-
메모리에서 프로그램 명령어를 가져오는 모듈 명령어 해석기(Instruction Decoder)
-
명령어를 해석해서 필요한 제어 신호를 발생시키는 모듈
Multicore CPU
dual-core : 2
quard-core : 4
octal-core : 8
하드웨어
Image source: en.wikipedia.org
CPU의 구성 요소
디지털 논리회로 소자 (digital logic gate)-
0, 1의 디지털 값만 처리-
AND, OR, NOT 등의 논리 연산 수행
CPU는 0,1로 표현된 명령어와 데이터를 처리한다하드웨어
half adder : 2개의 1자
리 2진수 덧셈 회로
주기억 장치(main memory)
CPU에 의해 실행될 프로그램과 계산되는 데이터를 저장하는 곳
byte 단위(8bit)로 0번 부터 시작하는 주소(address) 부여
주소를 사용 값을 기록(write)하거나 읽을(read) 수 있음- RAM(Random Access Memory)
- ROM(Read Only Memory)
-
Bit-
Byte-
1KByte = 1024 Bytes (210)-
1MByte = 1024 Kbytes(220)-
1GByte = 1024 Mbytes(230)-
1TByte = 1024 GBytes(2
40)
하드웨어
주소 bit byte
보조기억장치(secondary storage)
전원이 공급되지 않아도 지속적으로 프로그램과 데이터를 저장할 수 있는 장치
hard disk, flash ROM, CD/DVD-ROM하드웨어
Image source: nexus404.com
http://pc-networks.info/what-is-hard-disk-drive-hdd-hard-disk/
입력장치
키보드, 마우스, 터치스크린/패드 출력장치
모니터, 프린터, 스피커 기타
그래픽카드
사운드카드
랜카드하드웨어
하드웨어
슈퍼컴퓨터
데스크탑/노트북
스마트폰/스마트패드
임베디드 시스템(embedded system)
홈 오토메이션 시스템
자동차: 엔진제어/변속장치/온도제어장치 등
가전제품 : TV, 캠코더, 냉장고, 세탁기 등하드웨어
Image sources: 기상청홍보자료
http://www.artearchitectural.net/1135
해담 , Cray XE6, 45,120 cores, 758 TFlops
세계 랭킹 55위 (2012.6)
프로그램(Program)은 무엇인가
다양한 이름의 프로그램-
연주회 프로그램, 공연 프로그램, 교육 프로그램, 다이어트 프로그램 등-
진행 계획이나 순서
컴퓨터 프로그램-
어떤 일이나 문제 해결을 위해, 컴퓨터가 처리할 일을 순차적 으로 기술한 일련의 명령문(instruction)• 명령문(instruction)
CPU가 처리하는 단일 작업(operation)
소프트웨어
Image source: http://blog.naver.com/indiangg?Redirect=Log&logNo=70115416641
void main( ) { int a, b;
a = 10;
b = 20;
c = a + b;
printf(”%d”, c);
}
프로그래밍(programming)
프로그램을 작성하는 행위 프로그래머(programmer)
프로그램을 작성하는 사람 프로그래밍 언어(programming language)
프로그램을 작성할 때 사용하는 언어
C, C++, C#, Java, Fortran, COBOL, Pascal, MatLab, R 등소프트웨어
알고리즘 (Algorithm)
어떤 문제를 해결하기 위해 사용하는 과정 또는 방법
1부터 100까지 합 계산 문제 해결 방법-
방법 1• 순서대로 하나씩 더하기
-
방법 3.• 등차수열 공식 사용
소프트웨어
-
방법 2•
양끝의 두개씩 짝 지어 더한 다음 개수 세기
1 2 3 : 98 99 + 100 --- 5050
100 1 99 2 98 : : 49 51 50
100 100 100 : 100
10050 + 50
= 5050
2 5050 ) 100 1
( 100 2
)
처 음 항 끝 항 개 수 (
알고리즘
특정 문제에 대해 여러가지 알고리즘이 있을 수 있다
효율적인 알고리즘을 개발해서 사용하는 것이 바람직하다-
시간적 효율성 (실행시간을 빠르게)-
공간적 효율성 (메모리 사용을 적게 )
프로그램은 알고리즘을 프로그래밍 언어로 나타낸 것이다소프트웨어
프로그래밍 언어의 형태
기계어 (machine language)-
CPU가 직접 이해할 수 있는 0과 1로 표현하는 것-
CPU 마다 이해하는 기계어가 다를 수 있다
어셈블리어(assembly language)-
기계어의 명령문(instruction)을 이해할 수 있는 기호로 대체한 것
고급 언어(high-level language)-
사람이 이해할 수 있는 형태의 프로그래밍 언어소프트웨어
111000000000001100001001010101010 001011100101010101010110001010101 100011100101111000011101011110111 111000011101001010101011111000000
LOAD first ADD second MUL factor STORE answer
answer = first + second;
answer = answer * factor;
소프트웨어의 분류
시스템 소프트웨어(System Software)- 일반 사용자들이 사용하는 응용 프로그램들을 개발하고 실행하기 위 해 기본적으로 필요한 핵심적인 소프트웨어
-
운영체제, 쉘(사용자 명령 수행기), 에디터, 컴파일러,…
응용 소프트웨어 (Application Software)-
특정한 응용 분야에 사용되는 프로그램-
워드프로세서, 스프레드 시트, 프리젠테이션 프로그램, 데이터베이스 관리 시스템, 그래픽 프로그램, 통신 프로그램-
급여 프로그램, 성적 프로그램, 인사관리 프로그램, 게임, …소프트웨어
운영체제(Operating System)
사용자가 컴퓨터를 사용할 수 있도록 컴퓨터를 관리하는 기본 프 로그램소프트웨어
Image source: http://census-labs.com/news/2011/03/22/blackhat-eu-2011-update/
Mac OS X Linux MS Windows
iOS Android UNIX
쉘(shell)
운영체제의 서비스를 사용할 수 있도록 사용자에게 인터페이스를 제공하는 프로그램
Command-line shell-
텍스트 직접 입력
GUI(Graphical User Interface) shell-
마우스 조작소프트웨어
컴파일러(compiler) vs 인터프리터(interpreter)
고급언어로 작성된 프로그램을 기계어로 바꾸는 역할
컴파일러-
소스화일(source file) 전체를 기계어로 작성된 실행화일 (executable file)로 한번에 변환
인터프리터-
소스 프로그램을 한 줄씩 읽어서 기계어로 변환해 실행하는 것소프트웨어
컴파일러
프랑스어 요리법 한국어 요리법
프랑스어 요리법 인터프리터
통합개발환경 (IDE, Integrated Development Environment)
프로그램 개발에 필요한 editor, compiler, 디버깅(debugging) 환 경을 하나의 패키지로 묶어놓은 것
MS Visual Studio
Eclipse소프트웨어
응용소프트웨어
워드프로세서- 문서작성, 편집, 인쇄
- 한글, MS Word
스프레드 시트- 데이터에 대한 통계 처리 및 가시화
- MS Excel
프리젠테이션 프로그램- 도표, 도형, 애니메이션 효과 등을 이용한 발표자료 작성
- MS Powerpoint, Prezi
데이터베이스 관리 시스템- 대량의 데이터를 효과적으로 관리
- MS Access, MySQL, Oracle
그래픽 프로그램- 그림 및 이미지 작업
- Photoshop, Illustrator
통신 프로그램- 네트워크 이용한 데이터 송수신
- 웹 브라우저(IE, Chrome), FTP, telnet
기타소프트웨어
앱(app)의 무엇인가
application program(응용 프로그램)의 약자
인터넷, 컴퓨터, 휴대폰, 또는 다른 전자기기에서 동작하는 프로그 램
예.-
Android app-
iPhone app-
Google app소프트웨어
컴퓨터는 데이터를 입력으로 받아 처리하여 출력하는 기 계이다.
컴퓨터의 CPU가 할 수 있는 일은 제한적이지만, 프로그램 을 사용하여 다양한 작업을 시킬 수 있다.
프로그램은 어떤 일이나 문제 해결을 위해, 컴퓨터가 처리 할 일을 순차적으로 기술한 일련의 명령문이다.
컴퓨터에서는 이진수로 프로그램의 명령어와 데이터를 표 현한다.
메모리는 바이트 단위로 주소가 있고, 주소를 사용하여 데 이터를 메모리에 쓰거나 읽을 수 있다.
요점 정리
알고리즘은 문제를 해결하는 절차나 방법을 말하고, 효율 적인 알고리즘을 개발하는 것인 관건이다.
알고리즘을 프로그래밍 언어로 기술하면 프로그램이 된다.
고급언어로 작성된 프로그램은 CPU가 이해할 수 있는 기 계어로 변환해야 실행할 수 있다.