Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
C 언어 컴퓨터학과 C 언어 ( STS ) (Chap5. Selection-Making Decisions ) C 언어.
제6장 조건문.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Vision System Lab, Sang-Hun Han
제 3 장 변수와 자료형.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
C++ Espresso 제1장 기초 사항.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
강좌명 : C++프로그래밍 (C++ Programming)
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express.
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
8. 객체와 클래스 (기본).
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제5장 제어명령
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
DataScience Lab. 박사과정 김희찬 (월)
C ++ 프로그래밍 시작.
C언어 프로그래밍의 이해 Ch05. 명령문 Phylogenetic: 계통, 발생(학)의.
제1장 서론.
명품 C++ 프로그래밍 1장. C++ 시작.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
adopted from KNK C Programming : A Modern Approach
제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세
Chapter 10 함수 기본.
프로그래밍 보고서 작성법 순천향대학교 컴퓨터공학과 하 상 호.
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
소프트웨어 공학 (Software Engineering)
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
제어문 & 반복문 C스터디 2주차.
4장 - PHP의 표현식과 흐름 제어-.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터공학실습(I) 3주 인공지능연구실.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
자바 5.0 프로그래밍.
Chapter 4 변수 및 바인딩.
Chapter 02. 소프트웨어와 자료구조.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
C언어 프로그래밍의 이해 Ch05. 명령문.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
Signature, Strong Typing
Signature, Strong Typing
3장,4장 발표 서정우.
자바 5.0 프로그래밍.
Signature, Strong Typing
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
Java 5장. 객체지향 개념 public class SumTest {
캡슐화 (Encapsulation) 두원공과대학 소프트웨어개발과 이 원 주.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
어서와 C언어는 처음이지 제16장.
DataScience Lab. 박사과정 김희찬 (화)
C.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
C++ 언어의 특징
프로그래밍 기법 최적화 프로그래밍.
Presentation transcript:

Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어

Copyright © 2015 Pearson Education, Inc. 6.1 역사적 고찰 6.2 전통적 프로그래밍 개념 6.3 프로시저 단위 6.4 언어의 구현 6.5 객체지향 프로그래밍 6.6 병행 활동 프로그래밍 6.7 선언형 프로그래밍 6 장 : 프로그래밍 언어 6-2

Copyright © 2015 Pearson Education, Inc. 6.1 역사적 고찰 그림 6.1 세대별 프로그래밍 언어 6-3

Copyright © 2015 Pearson Education, Inc. 기계어 - 2, 8, 16 진 숫자로 표현, 이해하기 어려움 ( 예 그림 2.7 참조 156C 166D 5056, …) 기계 명령을 표현하기 위한 기호 체계 – 명령 코드는 기호식 이름 ( 약어 ) 으로 표현한다. – 프로그램 변수 (variable) 또는 식별자 (identifier): 메모리 주소를 나타내는 의미 있는 이름이며, 프로그래머가 정한다. 2 세대 언어 : 어셈블리 언어 6-4 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 기계 명령과 어셈블리 명령 사이에는 일대일 대응 관계가 존재한다. – 프로그래머는 기계처럼 사고해야 한다. 본질적으로 기계 종속적이다. 어셈블러 (assembler) 라고 불리는 프로그램에 의해 기계어로 변환된다. 어셈블리 언어의 특성 6-5

Copyright © 2015 Pearson Education, Inc. 프로그램 예제 기계어 156C 166D CE C000 어셈블리 언어 LD R5, Price LD R6, ShipCharge ADDI R0, R5 R6 ST R0, TotalCost HLT 6-6

Copyright © 2015 Pearson Education, Inc. 고급 프리미티브를 사용한다. –5 장의 의사코드와 유사함 ( 대체로 ) 기계 독립적임 ( 기계 구조를 잘 몰라도 프로그래밍 가능 ) 예 : FORTRAN, COBOL 각 프리미티브는 여러 개의 기계어 명령에 대응된다. 컴파일러 (compiler) 라고 불리는 프로그램에 의해 기계어로 변환된다. 3 세대 언어 6-7

Copyright © 2015 Pearson Education, Inc. 그림 6.2 프로그래밍 패러다임의 진화 6-8

Copyright © 2015 Pearson Education, Inc. 그림 6.3 단순한 함수 여러 개를사용하여 구축된 수표책 정리 함수 6-9

Copyright © 2015 Pearson Education, Inc. 6.2 전통적 프로그래밍 언어 그림 6.4 전형적인 명령형 프로그램 또는 프로그램 단위의 구성 6-10

Copyright © 2015 Pearson Education, Inc. 정수 (integer) 실수 (real, float): 소수점 아래 부분이 있는 수 문자 : 기호, ASCII, Unicode 부울 (Boolean): 참 (1, true) / 거짓 (0, false) * 프리미티브 자료형 이라고도 하며, 표현 형식이 다름 컴파일 언어 – 소스 프로그램을 컴파일하여 실행가능한 목적 프로그램으로 변환하여 실행하는 언어 종류. 예 ) C, C++, Java 등. 스크립트 언어 – 컴파일과정 없이 소스프로그램을 바로 번역하여 실행하는 언어 종류. 예 ) JavaScript, PHP, Perl, VBScript 등. 기본 데이터 타입 (primitive data type) 6-11 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 정수 표현 데이터 타입 - 정수 0-12 Inserted by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 데이터 타입 - 실수 표현 0-13 Inserted by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. float Length, Width; int Price, Total, Tax; char Symbol; int WeightLimit = 100; 변수와 데이터 타입 6-14

Copyright © 2015 Pearson Education, Inc. 데이터 구조 6-15 데이터에 대한 개념적 형태나 배치 일반적인 자료 구조의 하나인 배열 (array) –C int Scores[2][9]; –FORTRAN INTEGER Scores(2,9)

Copyright © 2015 Pearson Education, Inc. 배열 (array) : 그림 개의 행과 9 개의 열을 갖는 2 차원 배열 6-16 S[0,0]S[0,1]S[0,2]S[0,3]S[0,4]S[0,5]S[0,6]S[0,7]S[0,8] S[1,0]S[1,1]S[1,2]S[1,3]S[1,4]S[1,5]S[1,6]S[1,7]S[1,8] Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 그림 6.6 구조체 (structured type) Employee 의 개념적 구성 6-17 struct { char Name[25]; int Age; float SkillRating; } Employee;

Copyright © 2015 Pearson Education, Inc. C, C++, C#, Java z = x + y; x 번지의 값과 y 번지 값을 더하여 z 번지 ( 메모리 위치 ) 에 저장 Ada z := x + y; APL (A Programming Language) z ← x + y 배정문 6-18

Copyright © 2015 Pearson Education, Inc. Go to 문 goto Evade() goto if (KryptoniteLevel < LethalDose) then goto 60 goto RescueDamsel() 단일 문장 표현 if (KryptoniteLevel < LethalDose): RescueDamsel() else: Evade() 제어문 – 프로그램 실행 순서 제어 ( 바꿈 ) 조건문과 반복문 6-19 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. Python 에서의 if if (condition): statementA else: statementB C, C++, C#, Java 등에서의 if if (condition) statementA; else statementB; Ada 에서의 if IF condition THEN statementA; ELSE statementB; END IF; 제어문 - 조건문

Copyright © 2015 Pearson Education, Inc. C, C++, C#, Java 등에서의 switch 문 switch (variable) { case 'A': statementA; break; case 'B': statementB; break; case 'C': statementC; break; default: statementD; } Ada CASE variable IS WHEN 'A'=> statementA; WHEN 'B'=> statementB; WHEN 'C'=> statementC; WHEN OTHERS=> statementD; END CASE; 제어문 – 조건문

Copyright © 2015 Pearson Education, Inc. Python 에서의 while while (condition): body C, C++, C#, Java 등에서의 while, do~until, for while (condition) { body } do { body } until (condition) for ( 초기값 ; 종료 조건문 (condition); 증감문 ) { body } Ada 에서의 while WHILE condition LOOP body END LOOP; 제어문 - 반복문 6-22 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 그림 6.7 for 루프 구조와 C++, C#, Java 등에서의 for 문 6-23

Copyright © 2015 Pearson Education, Inc. 프로그램 내부의 설명문 사람이 프로그램을 읽을 때 도움이 됨 컴파일러는 주석을 무시함 /* This is a comment. */ // This is a comment 주석 (Comment) 6-24

Copyright © 2015 Pearson Education, Inc. 반복, 중복되는 루틴을 하나의 단위 프로그램으로 분리 호출 이 개념에 다양한 용어가 사용됨 : – 함수 (function), 부프로그램 (subprogram), 서브루틴 (subroutine), 프로시저 (procedure), 메쏘드 (method) 프로시저 단위는 헤더 (header), 함수명 (name), 매개변수 (parameters), 본체 (body, 실행문 ) 로 구성 지역 (local) 변수와 전역 (global) 변수 형식 매개변수 (formal parameter) 와 실질 매개변수 (actual parameter) 값 (value) 에 의한 매개변수 전달과 참조 (reference, 주소 ) 에 의한 매개변수 전달 6.3 프로시저 단위 (Procedure Unit) 6-25 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 함수 (function, 부 프로그램 sub-routine 예 ) 0-26 int main(void) { int n, result; get_integer() ; result = is_prime(n) ; if ( result == 1 ) printf("%d 은 소수입니다.\n", n); else printf("%d 은 소수가 아닙니다.\n", n); get_integer() ; result = is_prime(n) ; …; return 0; } /* 정수를 입력하시오 : 은 소수입니다. 계속하려면 아무 키나 누르십 … */ #include int n; void get_integer(void) { printf(" 정수를 입력하시오 : "); scanf("%d", &n); } int is_prime(int n) { int divisors = 0, i; for ( i = 1 ; i <= n ; i++ ) if ( n%i == 0 ) divisors++; return (divisors == 2); } Inserted by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 그림 6.8 함수와 관련한 제어의 흐름 6-27

Copyright © 2015 Pearson Education, Inc. 그림 6.9 C 언어로 작성된 ProjectPopulation 함수 6-28

그림 6.10 값에 의한 전달과 Demo 함수의 실행

그림 6.11 참조에 의한 전달과 Demo 함수의 실행

Copyright © 2015 Pearson Education, Inc. 그림 6.12 C 언어로 작성된 결과 ( 반환값 ) 있는 함수 CylinderVolume 6-31

Copyright © 2015 Pearson Education, Inc. 6.4 언어의 구현 그림 6.13 번역 과정 (Compile) 6-32 소스 프로그램 (source program) – 사용자가 작성한 프로그램 목적 프로그램 (object program) – 기계어로 번역된 프로그램으로 컴퓨터 실행 가능한 프로그램 컴파일러 (compiler) – 위 어휘분석, 구문분석, 코드생성 과정 처리하는 프로그램 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 그림 6.14 파이썬 if-else 문장에 대한 구문 다이어그램 6-33

Copyright © 2015 Pearson Education, Inc. 그림 6.15 간단한 산술식의 구조를 기술하는 구문 다이어그램 6-34

Copyright © 2015 Pearson Education, Inc. 그림 6.16 그림 6.15 의 구문 다이어그램에 기초한 문자열 x + y * z 의 구문 분석 트리 6-35

그림 6.17 if B1: if B2: S1 else: S2 문장을 위한 두 개의 구문 분석 트리

Copyright © 2015 Pearson Education, Inc. 그림 6.18 ( 객체지향 방식의 ) 번역 과정 6-37

Copyright © 2015 Pearson Education, Inc. 객체 (object): 데이터와 프로시저를 포함하는 능동적 프로그램 단위 클래스 (class): 객체 구성 ( 생성 ) 에 사용되는 틀 (template) 인스턴스 (instance): 클래스 ( 틀 ) 로부터 생성된 객체 객체지향 프로그램 특징 : 캡슐화 (encapsulation), 정보 은닉 (information hiding), 상속 (inheritance), 다형성 (polymorphism) 6.5 객체지향 프로그래밍 객체와 클래스 6-38 Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 그림 6.19 컴퓨터 게임에서 레이저 무기를 기술하는 클래스의 구조 6-39 instance( 인스턴스 ) 사용 예 ) int main(void) { myclass = new LaserClass(); …; } Modified by Jong Joon Park(

Copyright © 2015 Pearson Education, Inc. 인스턴스 변수 : 객체 내부의 변수 – 객체 내부의 정보를 저장한다 메쏘드 (method): 객체 내부의 프로시저 – 객체가 수행할 수 있는 행위를 기술한다 생성자 (constructor): 객체가 처음 생성될 때 객체의 초기화에 사용되는 특별한 메쏘드 객체의 구성요소 6-40

Copyright © 2015 Pearson Education, Inc. 그림 6.21 생성자를 갖는 클래스 6-41

Copyright © 2015 Pearson Education, Inc. 캡슐화 (encapsulation): 객체의 내부 구성요소에 대한 접근을 제한하기 위한 수단 – 전용 (private) 속성 – 공용 (public) 속성 객체의 무결성 (integrity) 6-42

Copyright © 2015 Pearson Education, Inc. 그림 6.22 Java 또는 C# 언어에서 캡슐화를 사용한 LaserClass 클래스의 정의 6-43

Copyright © 2015 Pearson Education, Inc. 상속 (inheritance): 새로운 클래스가 이미 정의되어 있는 클래스를 사용하여 정의될 수 있게 해준다. 다형성 (polymorphism): 메쏘드 호출이 적용 대상 객체에 따라 달리 해석된다. 추가적인 객체지향 관련 개념 6-44

Copyright © 2015 Pearson Education, Inc. 병렬 (parallel) 또는 병행 (concurrent) 처리 : 여러 프로세스의 동시 실행 – 진정한 병행 처리는 다수의 CPU 를 필요로 한다. – 한 개의 CPU 에서 시분할 방식으로 모방할 수 있다. 6.6 병렬 처리 프로그래밍 6-45

Copyright © 2015 Pearson Education, Inc. 그림 6.23 쓰레드의 생성 6-46

Copyright © 2015 Pearson Education, Inc. 상호 배제 (Mutual Exclusion): 한 번에 한 프로세스만이 데이터에 접근할 수 있도록 보장하기 위한 한 방법 모니터 (monitor): 자신에 대한 접근 제어 기능을 갖춘 데이터 항목 데이터에 대한 접근 제어 6-47

Copyright © 2015 Pearson Education, Inc. 분해 (resolution): 둘 이상의 명제들을 결합하여 연역적 추론 결과에 해당하는 새로운 명제를 생성 – 예 : (P OR Q) AND (R OR  Q) 는 (P OR R) 로 분해된다 – 분해문 (resolvent): 분해에 의해 생성된 새로운 명제 – 절 (clause) 형태 : 기초 요소들을 부울 연산자 OR 로 결합한 형식의 명제 단일화 (unification): 변수에 값을 배정하여 두 명제가 “ 호환성 ” 을 갖게 만드는 과정 6.7 선언형 프로그래밍 6-48

Copyright © 2015 Pearson Education, Inc. 그림 6.24 (P OR Q) 와 (R OR ¬Q) 를 분해하여 (P OR R) 만들기 6-49

Copyright © 2015 Pearson Education, Inc. 그림 6.25 명제 (P OR Q), (R OR ¬Q), ¬R, ¬P 등에 대한 분해 6-50

Copyright © 2015 Pearson Education, Inc. 사실 : 사실 확립을 위한 Prolog 문장 – 하나의 술어 (predicate) 로 이루어진다 – 형식 : predicateName(arguments). 예 : parent(bill, mary). 규칙 : 일반적 규칙을 확립하기 위한 Prolog 문장 – 형식 : conclusion :- premise. :- 는 “if” 를 의미함 – 예 : wise(X) :- old(X). – 예 : faster(X,Z) :- faster(X,Y), faster(Y,Z). Prolog 6-51