슬라이드 1 - 경일대학교 컴퓨터공학과

Download Report

Transcript 슬라이드 1 - 경일대학교 컴퓨터공학과

2장 프로그래밍과 운영체제
1. 프로그래밍 언어(Programming Language)
1.1 프로그래밍 언어의 발전 단계
1.2 주요 언어로 작성된 프로그램
2. 프로그램 설계
2.1 프로그램 작성단계
3. 운영체제와 소프트웨어
3.1 운영체제(OS : Operating System)
3.2 운영체제의 종류
3.3 소프트웨어(Software)
1. 프로그래밍 언어
 사람과 컴퓨터의 상호작용을 위해 개발된 언어
• 1950년대 컴퓨터 개발 이후에 수 많은 프로그래밍 언어가
개발되고 사라졌다
• 현재 수 십 종류의 프로그래밍 언어들이 사용
- 컴퓨터 전문가들에 의해 프로그래밍 언어 개발
2.1 프로그래밍 언어의 발전 단계
 1950년 이후로 프로그래밍 언어의 발전 단계
[그림2-4] 프로그래밍 언어의 발전 단계에 따른 세대별 구분
• 1세대 언어
- 0,1로 구성된 기계어. 컴퓨터가 사용하는 언어
• 2세대 언어
- 기계어에 가까운 언어. 기계어를 기호화한 언어
1.1 프로그래밍 언어의 발전 단계
• 3세대 언어
- 절차 지향 언어
- C, 포트란, 코볼, BASIC 언어 등
- C 언어는 현재까지도 광범위한 응용 분야에서 많이 사용
• 4세대 언어
- 데이터 베이스 관련 프로그램을 개발할 수 있는 언어
- 윈도우 환경에서 개발
- 비주얼베이직, 델파이, 파워빌더 등
• 5세대 언어
- 객체 지향 언어
- 네트웍 또는 웹 환경에서 강한 특성을 가진 언어
- Java, C++, C#, ASP, JSP, PHP 등
1.2 주요 언어로 작성된 프로그램
 주요 언어로 작성된 프로그램 비교
• 주요 프로그램 언어에 대한 전반적인 구조와 기초 지식 습득
 어셈블리 언어
TEST START 0
BEGIN BALR BASE,0
USING BEGIN+2,BASE
SR
4,4
L
2,=F'1'
L
3,=F'100'
LOOP AR
4,3
SR
3,2
BCT
3,*-4
BR
14
LTORG
BASE EQU
15
END
100부터 1씩 감소시켜가면서
반복하여 숫자를 더한다
1.2 주요 언어로 작성된 프로그램
 포트란 프로그램
100
200
ISUM=0
DO 100 I = 1, 100, 1
ISUM=ISUM+I
CONTINUE
WRITE(6,200) ISUM
FORMAT(8X,I5)
STOP
END
1부터 100까지 1씩 증가시켜 가면서
ISUM 변수에 반복하여 숫자를 더한다
1.2 주요 언어로 작성된 프로그램
 코볼 프로그램
IDENTIFICATION
DIVISION.
PROGRAM-ID. HAP.
//……………………생략
CONFIGURATION
SECTION.
FD PR-F LABEL RECORD OMITTED.
01 PR-R PIC
X(80).
WORKING-STORAGE SECTION.
01 LIST.
03 N PIC 9(3).
03 HAP PIC 9(4).
PROCEDURE
DIVISION.
AA.
PERFORM BB UNTIL N = 100.
DISPLAY "***1부터 100까지의 합***"
DISPLAY "HAP = " HAP.
STOP RUN.
1부터 100까지 1씩 증가시켜 가면서
HAP 변수에 반복하여 숫자를 더하고
BB.
ADD 1 TO N
결과를 출력하다
ADD N TO HAP.
1.2 주요 언어로 작성된 프로그램
 베이직 프로그램
10
20
30
40
50
60
SUM = 0
FOR I=1 TO 100
SUM = SUM + I
NEXT I
PRINT SUM
END
1부터 100까지 1씩 증가시켜 가면서
SUM 변수에 반복하여 숫자를 더한다
1.2 주요 언어로 작성된 프로그램

파스칼 프로그램
program hap;
uses
Crt;
var
i,sum:integer;
begin
clrscr;
i:=0;
sum:=0;
for i:=0 to 100 do
1부터 100까지 1씩 증가시켜 가면서
SUM 변수에 반복하여 숫자를 더한다
sum := sum + i;
writeln('1부터 100까지의 합은 ===> ',sum);
end.
1.2 주요 언어로 작성된 프로그램

C 프로그램
#include <stdio.h>
#include <conio.h>
main()
{
int i, sum;
clrscr();
i=0;
sum=0;
for (i=0; i<=100; i++)
1부터 100까지 1씩 증가시켜 가면서
SUM 변수에 반복하여 숫자를 더한다
sum = sum + i;
printf("1부터 100까지의 합은 ===> %d\n",sum);
}
1.2 주요 언어로 작성된 프로그램

Java 프로그램
public class SumTest {
public static void main(String[] args) {
int i, sum=0;
for ( i = 1 ; i <= 100 ; i = i + 1 ) {1부터 100까지 1씩 증가시켜 가면서
SUM 변수에 반복하여 숫자를 더한다
sum = sum + i;
}
System.out.println("1부터 100까지의 합은 " +sum);
}
}
1.2 주요 언어로 작성된 프로그램

자바스크립트 프로그램
<HTML>
<BODY>
<SCRIPT LANGUAGE = "JAVASCRIPT">
var sum=0;
var i;
for ( i = 1 ; i <= 100 ; i = i + 1 )
{
1부터 100까지 1씩 증가시켜 가면서
sum = sum + i;
SUM 변수에 반복하여 숫자를 더한
다
}
document.write("1부터 100까지의 합은 " + sum);
</SCRIPT>
</BODY>
</HTML>
1.2 주요 언어로 작성된 프로그램
 주요 언어들의 특징
 대부분의 언어들은 순서, 선택, 반복 논리를 제공한다.
 각 언어들이 고유의 기능과 특징도 가지지만, 대부분 비슷한
구문구조를 가진다
 어셈블리 언어를 제외한 대부분의 언어들이 우리들이
일반적으로 사용하는 용어를 사용한다
(변수명 : sum, hap 등, 예약어 : for, write, print, main 등)
 C, Java, 자바스크립트는 거의 유사한 구문구조를 가진다
(반복문 for의 구문구조가 거의 똑 같다)
2. 프로그램 설계
 집을 짓기 위해서도 설계가 우선되어야 한다
 집과 같이 프로그램도 우선 명확한 설계가 이루어져야
한다
• 설계가 명확하게 이루어지지 않은 경우
- 결국 오류 발생으로 추가 비용 발생
- 오류수정을 위한 비용은 기존에 설계를 명확하게 하든데 드는
비용보다 훨씬 더 많이 소요
 프로그램의 정의
• 문제를 해결하기 위해 컴퓨터에게 일을 시키는 절차
- 프로그래밍 언어(C, JAVA 등)로 이러한 절차를 기술한다
2.1 프로그램 작성 단계
 대규모의 소프트웨어 프로젝트는 소프트웨어
공학(Software Engineering)적인 방법과 절차에 의해 개발
이 책은 프로그램의 원리와 기초과정을 다루고 있으므로 소프트웨어
공학적인 방법론은 다루지 않고, 대신에 프로그래밍 기초과정으로서
작고 간단한 프로그램의 개발 방법을 설명한다
2.1 프로그램 작성 단계
 작고 간단한 프로그램 개발을 위한 단계
[그림2-1] 프로그램 작성 안내
2.1 프로그램 작성 단계
 1단계 : 입출력을 정의
• 실습 예제 2-1
- 두 개의 서로 다른 숫자를 입력 받아 두 숫자의 가감승제와 두
숫자를 비교하여 큰 수를 출력하고, 두 숫자 사이의 합을 구하는
프로그램을 작성하시오.
[그림2-2] 프로그램의 입출력 정의
2.1 프로그램 작성 단계
 2단계 : 절차를 정의
1) 문제를 명확하게 정의
•
문제 : 두 개의 숫자를 입력 받아 두 숫자의 가감승제와 두 숫자를
비교하여 큰 수를 출력하고, 두 숫자 사이의 합을 구하는 프로그램
•
•
•
두 개의 숫자가 정수인지, 실수인지? --- 정수로 정의
두 숫자가 같은 경우에는? --- 문제에서 서로 다른 두 개의 입력으로
정의
두 숫자 사이의 합에 두 숫자가 포함되는지? --- 포함됨
2.1 프로그램 작성 단계
 2단계 : 절차를 정의
2) 문제를 작은 문제로 분해

문제가 복잡하면 나눌 수 있을 때까지 작은 문제로 분해
•
•
•
•
•
두 수의 입력 부분
두 수의 가감승제 계산
두 수중 큰 수를 구한다
두 수 사이의 정수의 합산
결과 출력 부분
2.1 프로그램 작성 단계
 2단계 : 절차를 정의
3) 각각의 문제들을 순서, 선택, 반복의 논리로 절차를 정의하고,
연결

분해된 문제들을 논리와 연관시켜 정의
•
•
•
•
•
두 수의 입력 부분--순서
두 수의 가감승제 계산--순서
두 수중 큰 수를 구한다--선택
두 수 사이의 정수의 합산--반복
결과 출력 부분--순서
2.1 프로그램 작성 단계
 2단계 : 절차를 정의
[그림2-3] 순서도를 사용하여 절차와 기억장소(변수)의 변화를 나타낸
예
2.1 프로그램 작성 단계
 3단계 : 프로그램 코드 작성
• 순서도(설계도)에 따라 프로그램을 작성
<HTML>
<BODY>
<SCRIPT>
var 첫번째수, 두번째수, 덧셈, 뺄셈, 곱셈, 나눗셈
var 큰수, 작은수, 임시변수, 합=0;
첫번째수 = parseInt(prompt("첫 번째 수 입력"));
두번째수 = parseInt(prompt("두 번째 수 입력"));
덧셈 = 첫번째수 + 두번째수;
뺄셈 = 첫번째수 - 두번째수;
곱셈 = 첫번째수 * 두번째수;
나눗셈 = 첫번째수 / 두번째수;
if (첫번째수 > 두번째수)
{
큰수 = 첫번째수;
작은수 = 두번째수;
}
else
{
작은수 = 첫번째수;
큰수 = 두번째수;
}
1.1 프로그램 작성 단계
임시변수 = 작은수;
while (임시변수 <= 큰수 )
{
합=합 + 임시변수;
임시변수=임시변수 +1;
}
document.write("덧셈결과 : " + 덧셈 + "<BR>");
document.write("뺄셈결과 : " + 뺄셈 + "<BR>");
document.write("곱셈결과 : " + 곱셈 + "<BR>");
document.write("나눗셈결과 : " + 나눗셈 + "<BR>");
document.write("작은수 : " + 작은수 + " 큰수 : " + 큰수 + "<BR>");
document.write("작은수 : " + 작은수 + " 큰수 : " + 큰수 +"사이의 합은 "+ 합);
</SCRIPT>
</BODY>
</HTML>
3. 운영체제와 소프트웨어
 프로그램이 실행되는 환경을 이해하기 위해 운영체제를
학습해야 한다
3.1 운영체제(OS:Operating System)
 컴퓨터 개발 초기
• 운영체제가 없거나 컴퓨터 회사별로 서로 다른 운영체제를
제공하였다.
- 컴퓨터 회사별로 컴퓨터의 사용방법이 다르다
- 특정 컴퓨터를 사용하던 사용자가 다른 컴퓨터를 사용하기
위해서는 동작방법을 다시 배워야 한다
3.1 운영체제(OS:Operating System)
 운영체제
• “사용자가 컴퓨터를 편리하게 사용할 수 있도록 하드웨어
자원을 관리해주는 소프트웨어”
- 사용자가 운영체제만 배우면 같은 운영체제를 사용하는 어떠한
종류(회사)의 컴퓨도 쉽게 사용할 수 있다
- 운영체제는 항상 하드웨어 자원을 최적의 상태로 유지한다
- 사용자는 각 회사의 컴퓨터를 배우지 않고, 운영체제를 배워 모든
컴퓨터를 사용한다.
3.2 운영체제의 종류
 1950년대 컴퓨터가 개발된 이후에 운영체제는 꾸준히
발전되어 왔다
• 퍼스널 컴퓨터가 등장 이후로 마이크로소프트 사의 운영체제가
표준 운영체제로 자리를 잡았다
• DOS(Disk Operating System)
- 퍼스널 컴퓨터 개발 초기의 운영체제
- 마이크로소프트사의 MS-DOS와 DR-DOS, Novel DOS 등이
있었으나 MS-DOS가 많이 사용되었다
[그림2-7] MS-DOS 화면
3.2 운영체제의 종류
• 윈도우 계열 운영체제
- 명령어 입력 방식이 아닌 마우스로 편리하게 사용할 수 있는
GUI(Graphical User Interface) 방식의 운영체제
- MS-W
indow=>Windows XP=>Windows
Vista=>Windows 7 등으로 발전
- 현재 마이크로소프트사는 퍼스널 컴퓨터 운영체제 시장을 거의
독점하고 있다
[그림2-8] MS-윈도우 3.1 화면
[그림2-9] 윈도우 7의 시작화면과 초기화면
3.2 운영체제의 종류
• 유닉스(Unix) 계열 운영체제
-
1969년 미국의 AT&T사의 벨 연구소에서 개발된 운영체제
중.대형 컴퓨터의 운영체제
현재 솔라리스와 FreeBSD 유닉스 운영체제로 발전
중대형 컴퓨터에서 가장 많이 사용되는 운영체제
[그림2-10] FreeBSD 운영체제와 솔리리스 운영체제
3.2 운영체제의 종류
• 리눅스(Linux) 운영체제
- 1991년 핀란드 헬싱키 대학교 학생인 리누스 토발즈에 의해
만들어진 운영체제
- 유닉스를 PC에서 다용할 수 있게 만든 운영체제
- PC 또는 인터넷 서버용 운영체제로 많이 사용
- 현재 리눅스 배포판인 레드햇(Red Hat), 데비안(Debian) 등이 제공
[그림2-11] 리눅스 배포판인 레드햇과 데비안 화면
3.2 운영체제의 종류
• Mac 운영체제
- 1984년 미국의 애플 컴퓨터사가 매킨토시 계열 컴퓨터의
운영체제로 개발
- 마우스를 사용한 최초의 GUI 형태의 운영체제
[그림2-12] Mac 운영체제 화면
3.2 운영체제의 종류
• 스마트폰 운영체제
- 스마트폰 시장의 경쟁은 운영체제의 경쟁이라 해도 과언이 아니다
- 현재 스마트폰에서 제공되는 운영체제로는 구글의 안드로이드,
심비안, 애플의 iOS, 블랙베리 OS, 윈도폰7, 삼성 바다OS 등이 있다
[그림2-13] 2011년 스마트폰 운영체제의 점유율
3.3 소프트웨어(Software)
 대부분의 응용프로그램들은 운영체제 상에서 실행된다.
• 대부분의 소프트웨어는 운영체제 별로 분류되어 판매된다
- 소프트웨어가 동작할 때 컴퓨터 하드웨어 자원에 접근하게 되는데,
이 경우 운영체제의 기능들을 이용한다
[그림2-13] 운영체제와 소프트웨어의 실행