2장 프로그래밍과 운영체제 1. 프로그래밍 언어(Programming Language) 2. 프로그램 설계

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

1 장 유닉스 소개 1. 강의 목적 및 내용 2 강의 목적  유닉스 / 리눅스 시스템의 체계적 이해 및 활용  시스템 프로그래밍 능력 향상 강의 내용  유닉스 / 리눅스의 효과적 사용 명령어, 파일 시스템, 네트워킹, X- 윈도우, 쉘 프로그래밍  유닉스 / 리눅스.
난이도 : 초급 제1장 앱 인벤터 소개 및 준비.
컴퓨터와 인터넷.
Java IT응용시스템공학과 김형진 교수 1장. 컴퓨터와 프로그램 그리고 자바 public class SumTest {
컴퓨터 운영체제의 역사 손용범.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
재료수치해석 HW # 박재혁.
(1.1 v) 엔트리교육연구소 엔트리 카드게임 설명서.
프로그램 원리와 이해 주차 강의자료.
Ⅰ. 클라이언트 스크립트 Ⅱ. 서버 스크립트 그렇다면 프로그래밍 언어를 수행하는 컴퓨터의 개념적인 구조를 살펴 본다면, 프로그래밍 언어가 무엇인지 이해하는데 도움이 될 것입니다. 현재 컴퓨터 구조의 모태가 되고 있는 폰 노이만 구조는 그림에서 보는 것과 같이, 명령어와.
Database Laboratory, Hong Ik University
Java 1장. 컴퓨터와 프로그램 그리고 자바 public class SumTest {
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
알기 쉽게 해설한 Java 8th edition
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
운영체제 박상민.
JSP Programming with a Workbook
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
1. C++ 시작하기.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
컴퓨터과학 전공탐색 배상원.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Program Language 환경공학과 천대길.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
Chap 6.Assembler 유건우.
인터넷응용프로그래밍 JavaScript(Intro).
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Lesson 2. 기본 데이터형.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
웹디자인
3D 프린팅 프로그래밍 05 – 반복패턴 만들기 강사: 김영준 목원대학교 겸임교수.
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
자바 5.0 프로그래밍.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Part 1 개요 Chapter 1 : 컴퓨터와 프로그램 그리고 자바 Chapter 2 : 자바의 환경
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
“사람과 컴퓨터” 이 점 숙 컴퓨터와 소프트웨어 “사람과 컴퓨터” 이 점 숙
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
Introduction to JSP & Servlet
AT MEGA 128 기초와 응용 I 기본적인 구조.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
TVM ver 최종보고서
9 브라우저 객체 모델.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
.Net FrameWork for Web2.0 한석수
Wake On Lan 발표자: 김 홍 기 김홍기 조성오
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
6 객체.
Presentation transcript:

2장 프로그래밍과 운영체제 1. 프로그래밍 언어(Programming Language) 2. 프로그램 설계 1.1 프로그래밍 언어의 발전 단계 1.2 주요 언어로 작성된 프로그램 2. 프로그램 설계 2.1 프로그램 작성단계 3. 운영체제와 소프트웨어 3.1 운영체제(OS : Operating System) 3.2 운영체제의 종류 3.3 소프트웨어(Software)

1. 프로그래밍 언어 사람과 컴퓨터의 상호작용을 위해 개발된 언어 1950년대 컴퓨터 개발 이후에 수 많은 프로그래밍 언어가 개발되고 사라졌다 현재 수 십 종류의 프로그래밍 언어들이 사용 컴퓨터 전문가들에 의해 프로그래밍 언어 개발

2.1 프로그래밍 언어의 발전 단계 1950년 이후로 프로그래밍 언어의 발전 단계 1세대 언어 (machine language) 0,1로 구성된 기계어. 컴퓨터에 직접 실행되는 언어 CPU에 종속 2세대 언어 (assembly language) 기계어에 가까운 언어. 기계어를 기호화한 언어 [그림2-4] 프로그래밍 언어의 발전 단계에 따른 세대별 구분

1.1 프로그래밍 언어의 발전 단계 3세대 언어 4세대 언어 5세대 언어 절차 지향 언어 (procedure/function-based) C, 포트란, 코볼, BASIC 언어 등 C 언어는 현재까지도 광범위한 응용 분야에서 많이 사용 CPU에 독립 4세대 언어 데이터 베이스 관련 프로그램을 개발할 수 있는 언어 윈도우 환경에서 개발: IDE (Integrated Development Environment) 비주얼베이직, 델파이, 파워빌더 등 5세대 언어 객체 지향 언어 (object-oriented) 네트웍 또는 웹 환경에서 강한 특성을 가진 언어 Java, C++, C#, ASP, JSP, PHP 등

1.2 주요 언어로 작성된 프로그램 주요 언어로 작성된 프로그램 비교 주요 프로그램 언어에 대한 전반적인 구조와 기초 지식 습득 Assembly 언어: CPU마다 다름, e.g., Intel, IBM, HP 등 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씩 감소시켜가면서 반복하여 숫자를 더한다

Assembly 언어 INP : INPut - 입력 데이타를 기억 장치내의 지정된 장소에 저장. CLA : CLear and Add - 지정된 기억 장소의 데이타를 어큐멀레이터 레지스터에 저장 ADD : ADD - 어큐멀레이터 레지스터의 데이타와 지정된 기억 장소의 데이 타를 더하여 결과를 어큐멀레이터 레지스터에 저장. STO : STOre - 어큐멀레이터 레지스터의 데이타를 지정된 기억 장소에 저 장. OUT : OUT - 지정된 기억 장소의 데이타를 출력. HLT : HaLT - 컴퓨터를 정지. 입력 장치를 통하여 두 수를 기억 장치에 저장한 후에, 그 두 수를 더하고, 결과를 출력 장치를 통해 내 보내는 어셈블리(assembly) 프로그램이 다음과 같을 때, 빈 곳을 채우시오. INP 10 INP 11 CLA 10 ADD 11 STO 12 OUT 12 HLT 00

1.2 주요 언어로 작성된 프로그램 ISUM=0 DO 100 I = 1, 100, 1 ISUM=ISUM+I FORTRAN 프로그램: CPU에 상관없이 compiler가 번역함 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. COBOL 프로그램 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 BASIC 프로그램 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 Pascal 프로그램 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 주요 언어로 작성된 프로그램 #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 주요 언어로 작성된 프로그램 public class SumTest { 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> 자바스크립트 프로그램 <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); // or alert(("1부터 100까지의 합은 " + sum); </SCRIPT> </BODY> </HTML> 1부터 100까지 1씩 증가시켜 가면서 SUM 변수에 반복하여 숫자를 더한다

1.2 주요 언어로 작성된 프로그램 주요 언어들의 특징 대부분의 언어들은 순서, 선택, 반복 논리를 제공한다. 각 언어들이 고유의 기능과 특징도 가지지만, 대부분 비슷한 구문구조를 가진다 어셈블리 언어를 제외한 대부분의 언어들이 우리들이 일반적으로 사용하는 용어를 사용한다 (변수명 : sum, hap 등, 예약어 : for, write, print, main 등) C, Java, 자바스크립트는 거의 유사한 구문구조를 가진다 (반복문 for의 구문구조가 거의 똑 같다)

2. 프로그램 설계 집을 짓기 위해서도 설계(design)가 우선되어야 한다 프로그램도 우선 명확한 설계가 이루어져야 한다 요구분석(requirement analysis) -> 설계(design) -> 구현(implementation) -> 시험(test) 프로그램도 우선 명확한 설계가 이루어져야 한다 설계가 명확하게 이루어지지 않은 경우 결국 오류 발생으로 추가 비용 발생 오류수정을 위한 비용은 기존에 설계를 명확하게 하든데 드는 비용보다 훨씬 더 많이 소요 프로그램의 정의 문제를 해결하기 위해 컴퓨터에게 일을 시키는 절차 프로그래밍 언어(C, Java 등)로 이러한 절차를 기술한다

2.1 프로그램 작성 단계 대규모의 소프트웨어 프로젝트는 소프트웨어 공학(Software Engineering)적인 방법과 절차에 의해 개발 요구분석(requirement analysis) -> 설계(design) -> 구현(implementation) -> 시험(test): α-test and β-test 이 책은 프로그램의 원리와 기초과정을 다루고 있으므로 소프트웨어 공학적인 방법론은 다루지 않고, 대신에 프로그래밍 기초과정으로서 작고 간단한 프로그램의 개발 방법을 설명한다

2.1 프로그램 작성 단계 작고 간단한 프로그램 개발을 위한 단계 [그림2-1] 프로그램 작성 안내

2.1 프로그램 작성 단계 1단계 : 입출력을 정의 실습 예제 2-1 두 개의 서로 다른 숫자를 입력 받아 두 숫자의 가감승제와 두 숫자를 비교하여 큰 수를 출력하고, 두 숫자 사이의 합을 구하는 프로그램을 작성하시오. Program Design Form에서 순서도 작성 [그림2-2] 프로그램의 입출력 정의

2.1 프로그램 작성 단계 2단계 : 절차(algorithm)를 정의 문제를 명확하게 정의 문제 : 두 개의 숫자를 입력 받아 두 숫자의 가감승제와 두 숫자를 비교하여 큰 수를 출력하고, 두 숫자 사이의 정수들의 합을 구하는 프로그램 두 개의 숫자가 정수인지, 실수인지? --- 정수로 정의 두 숫자가 같은 경우에는? --- 문제에서 서로 다른 두 개의 입력으로 정의 두 숫자 사이의 합에 두 숫자가 포함되는지? --- 포함됨 e.g., 10, 20인 경우 10 11 12 13 14 15 + 20 19 18 17 16 ----------------------- 30 * 5 + 15 = 165

2.1 프로그램 작성 단계 2단계 : 절차를 정의 문제를 작은 문제로 분해 문제가 복잡하면 나눌 수 있을 때까지 작은 문제로 분해 두 수의 입력 부분 1) 두 수의 가감승제 계산 2) 두 수중 큰 수를 구한다 3) 두 수 사이의 정수의 합산 결과 출력 부분

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. 운영체제와 소프트웨어 프로그램이 실행되는 환경을 이해하기 위해 운영체제(OS, Operating System)를 학습해야 한다 개인용(personal) 컴퓨터 서버용(server) 컴퓨터

3.1 운영체제(OS:Operating System) 컴퓨터 개발 초기 운영체제가 없거나 컴퓨터 회사별로 서로 다른 운영체제를 제공하였다. 컴퓨터 회사별로 컴퓨터의 사용방법이 다르다 특정 컴퓨터를 사용하던 사용자가 다른 컴퓨터를 사용하기 위해서는 OS 동작방법을 다시 배워야 한다

3.1 운영체제(OS:Operating System) “사용자가 컴퓨터를 편리하게 사용할 수 있도록 하드웨어 자원을 관리해주는 소프트웨어” 사용자가 운영체제만 배우면 같은 운영체제를 사용하는 어떠한 종류(회사)의 컴퓨터도 쉽게 사용할 수 있다 운영체제는 항상 하드웨어 자원을 최적의 상태로 유지한다 사용자는 각 회사의 컴퓨터를 배우지 않고, 운영체제를 배워 모든 컴퓨터를 사용한다.

3.2 운영체제의 종류 1950년대 컴퓨터가 개발된 이후에 운영체제는 꾸준히 발전되어 왔다 퍼스널 컴퓨터가 등장 이후로 마이크로소프트(MS) 사의 운영체제가 표준 운영체제로 자리를 잡았다 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 3.1=>Windows XP=>Windows Vista=>Windows 7 등으로 발전 현재 마이크로소프트사는 퍼스널 컴퓨터 운영체제 시장을 거의 독점하고 있다 [그림2-8] MS-윈도우 3.1 화면 [그림2-9] 윈도우 7의 시작화면과 초기화면

3.2 운영체제의 종류 유닉스(Unix) 계열 운영체제 1969년 미국의 AT&T사의 벨 연구소에서 개발된 운영체제 중.대형 컴퓨터의 운영체제 현재 솔라리스와 FreeBSD 유닉스 운영체제로 발전 중대형 컴퓨터에서 가장 많이 사용되는 운영체제: Open Source [그림2-10] FreeBSD 운영체제와 솔리리스 운영체제

3.2 운영체제의 종류 리눅스(Linux) 운영체제 1991년 핀란드 헬싱키 대학교 학생인 리누스 토발즈에 의해 만들어진 운영체제 Unix를 PC에서 다용할 수 있게 만든 운영체제 PC 또는 인터넷 서버용 운영체제로 많이 사용 현재 리눅스 배포판인 레드햇(Red Hat), 데비안(Debian) 등이 제공 [그림2-11] 리눅스 배포판인 레드햇과 데비안 화면

3.2 운영체제의 종류 Mac 운영체제 1984년 미국의 애플 컴퓨터사가 매킨토시 계열 컴퓨터의 운영체제로 개발 마우스를 사용한 최초의 GUI 형태의 운영체제 http://en.wikipedia.org/wiki/Macintosh [그림2-12] Mac 운영체제 화면

3.2 운영체제의 종류 스마트폰 운영체제 스마트폰 시장의 경쟁은 운영체제의 경쟁이라 해도 과언이 아니다 현재 스마트폰에서 제공되는 운영체제로는 구글의 안드로이드, 심비안, 애플의 iOS, 블랙베리 OS, 윈도폰7, 삼성 바다OS 등이 있다 [그림2-13] 2011년 스마트폰 운영체제의 점유율

3.3 소프트웨어(Software) 대부분의 응용프로그램들은 운영체제 상에서 실행된다. 대부분의 소프트웨어는 운영체제 별로 분류되어 판매된다 소프트웨어가 동작할 때 컴퓨터 하드웨어 자원에 접근하게 되는데, 이 경우 운영체제의 기능들을 이용한다 [그림2-13] 운영체제와 소프트웨어의 실행

감사합니다