340 likes | 683 Views
2 장 프로그래밍과 운영체제. 1. 프로그래밍 언어 (Programming Language) 1.1 프로그래밍 언어의 발전 단계 1.2 주요 언어로 작성된 프로그램 2. 프로그램 설계 2.1 프로그램 작성단계 3. 운영체제와 소프트웨어 3.1 운영체제 (OS : Operating System) 3.2 운영체제의 종류 3.3 소프트웨어 (Software). 1. 프로그래밍 언어. 사람과 컴퓨터의 상호작용을 위해 개발된 언어
E N D
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년 이후로 프로그래밍 언어의 발전 단계 • 1세대 언어 • 0,1로 구성된 기계어. 컴퓨터가 사용하는 언어 • 2세대 언어 • 기계어에 가까운 언어. 기계어를 기호화한 언어 [그림2-4] 프로그래밍 언어의 발전 단계에 따른 세대별 구분
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 주요 언어로 작성된 프로그램 • 포트란 프로그램 ISUM=0 DO 100 I = 1, 100, 1 ISUM=ISUM+I 100 CONTINUE WRITE(6,200) ISUM 200 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. BB. ADD 1 TO N ADD N TO HAP. 1부터 100까지 1씩 증가시켜 가면서 HAP 변수에 반복하여 숫자를 더하고 결과를 출력하다
1.2 주요 언어로 작성된 프로그램 • 베이직 프로그램 10 SUM = 0 20 FOR I=1 TO 100 30 SUM = SUM + I 40 NEXT I 50 PRINT SUM 60 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 sum := sum + i; writeln('1부터 100까지의 합은 ===> ',sum); end. 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다
1.2 주요 언어로 작성된 프로그램 • C 프로그램 #include <stdio.h> #include <conio.h> main() { int i, sum; clrscr(); i=0; sum=0; for (i=0; i<=100; i++) sum = sum + i; printf("1부터 100까지의 합은 ===> %d\n",sum); } 1부터 100까지 1씩 증가시켜 가면서 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 ) { sum = sum + i; } System.out.println("1부터 100까지의 합은 " +sum); } } 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다
1.2 주요 언어로 작성된 프로그램 • 자바스크립트 프로그램 <HTML> <BODY> <SCRIPT LANGUAGE = "JAVASCRIPT"> var sum=0; var i; for ( i = 1 ; i <= 100 ; i = i + 1 ) { sum = sum + i; } document.write("1부터 100까지의 합은 " + sum); </SCRIPT> </BODY> </HTML> 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다
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단계 : 절차를 정의 • 문제를 명확하게 정의 • 문제 : 두 개의 숫자를 입력 받아 두 숫자의 가감승제와 두 숫자를 비교하여 큰 수를 출력하고, 두 숫자 사이의 합을 구하는 프로그램 • 두 개의 숫자가 정수인지, 실수인지? --- 정수로 정의 • 두 숫자가 같은 경우에는? --- 문제에서 서로 다른 두 개의 입력으로 정의 • 두 숫자 사이의 합에 두 숫자가 포함되는지? --- 포함됨
2.1 프로그램 작성 단계 • 2단계 : 절차를 정의 • 문제를 작은 문제로 분해 • 문제가 복잡하면 나눌 수 있을 때까지 작은 문제로 분해 • 두 수의 입력 부분 • 두 수의 가감승제 계산 • 두 수중 큰 수를 구한다 • 두 수 사이의 정수의 합산 • 결과 출력 부분
2.1 프로그램 작성 단계 • 2단계 : 절차를 정의 • 각각의 문제들을 순서, 선택, 반복의 논리로 절차를 정의하고, 연결 • 분해된 문제들을 논리와 연관시켜 정의 • 두 수의 입력 부분--순서 • 두 수의 가감승제 계산--순서 • 두 수중 큰 수를 구한다--선택 • 두 수 사이의 정수의 합산--반복 • 결과 출력 부분--순서
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] 운영체제와 소프트웨어의 실행
감사합니다 감사합니다