6장 데이터 타입(2) 2017. 5. 8 순천향대학교 컴퓨터공학부 하 상 호.

Slides:



Advertisements
Similar presentations
북한기도제목 4 월 3 주 (4/15-4/21). 1. 북한정치 - 통일부와 국방부는 11 일 잇따라 열린 정례 브리핑에서 지난 7 일 북한 해외 식당 종업원 들이 집단 탈북한 데 이어 북한 정찰총국 출 신 북한군 대좌와 북한 외교관이 지난해 잇 따라 한국으로 망명한.
Advertisements

Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
프로젝트 구성. 프로젝트 델파이 프로그램의 기본 단위 즉, 델파이로 만드는 프로그램을 구성하 는 모든 파일들의 집합 구성파일 확인 –View 메뉴 -> Project Manager 메뉴 – 프로젝트 파일 (DPR 확장자 ) – 폼 관련 파일 (FRM 확장자 ) – 소스.
제 4 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
일시 : 2002년 6월 18일 주관 : 한국 기독교 장로회 경기 노회 정보통신부 강사 : 한창희
Vision System Lab, Sang-Hun Han
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
14주차 1교시 강화계획 [학습목표] 1. 강화계획의 정의를 안다 [학습내용] 1. 단순한 강화계획 2. 간헐적 강화 3. 복합 계획 4. 선택과 대응법칙 [사전학습] 강화계획이 일어날 수 있는 사례를 생각해본다.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
쉽게 풀어쓴 C언어 Express 제13장 구조체 C Express Slide 1 (of 25)
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
윤 홍 란 제3장 클래스와 객체의 사용-1 윤 홍 란
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
제7장 제어구조 I – 식과 문장.
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
프로그래밍언어론 2nd edition Tucker and Noonan
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
제2장 데이터 및 수식.
제 2 장 변수와 상수.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Introduction to Programming Language
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
2. 상호배제와 동기화 01 program versionone; // 첫 번째 버전
[CPA340] Algorithms and Practice Youn-Hee Han
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
4장 - PHP의 표현식과 흐름 제어-.
Apache Spark Tutorial 빅데이터 분산 컴퓨팅 박영택.
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
프로그래밍언어론 2nd edition Tucker and Noonan
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
제 1 장. 자료구조와 알고리즘.
Chapter 4 변수 및 바인딩.
C 프로그래밍 기초.
Apache Spark Tutorial 빅데이터 분산 컴퓨팅 박영택.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
Hello, Python! #3 <부제: 코딩은 혼자하는 것이다>
Signature, Strong Typing
Signature, Strong Typing
1장 기본적인 사항 순천향대학교 컴퓨터공학부 하 상 호.
자바 5.0 프로그래밍.
Signature, Strong Typing
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
언어 언어 사람 사람 사람들간의 의사 소통을 위한 수단
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
Python Tutorial 4: Data Structures
서술형 평가 확대 한국교육과정평가원 김 소 영.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Spring, 2019 School of CSE Pusan National University
논리회로 설계 및 실험 9주차.
Choi Younghwan CSE HUFS
Python 기본.
Presentation transcript:

6장 데이터 타입(2) 2017. 5. 8 순천향대학교 컴퓨터공학부 하 상 호

목차 서론 기본 데이터 타입 문자 스트링 타입 사용자-정의 순서 타입 배열 타입 연상 배열 레코드 타입 튜플 타입 리스트 타입 공용체 타입 포인터와 참조 타입 타입 검사 강타입 타입 동등

레코드 타입 레코드(record) 타입은 이질적 가능한 데이터 원소들의 집단체 설계 고려사항 각 원소들은 이름으로 식별 COBOL에서 도입, 대부분 언어에서 제공(Fortran 90 이전 버전 제외) 설계 고려사항 필드 참조의 구문 형식은? 생략 참조가 허용되는가?

레코드 정의 In COBOL 수준 번호를 이용하여 중첩된 레코드를 표현 01 EMP-REC. 02 EMP-NAME. 05 FIRST PICTURE X(20). 05 MID PICURE X(10). 05 LAST PICURE X(20). 02 HOURLY-RATE PICURE 99V99. 20개의 alphanumeric 중간에 소수점을 갖는 4개 십진수 표현 레코드 수준 번호이며, 레코드의 계층적 구조를 나타냄 기억장소 형식을 나타냄

레코드 정의 In Ada In C In Java, C# type Emp_Name_Type is record First: String (1..20); Mid: String (1..10); Last: String (1..20); end record; type Emp_Rec_Type is record Employee_Name: Emp_Name_Type; Hourly_Rate: Float; Emp_Rec: Emp_Rec_Type;

레코드 필드 참조 필드 참조 구문 참조 방식 In COBOL field_name OF record_name_1 OF ... OF record_name_n 다른 언어 record_name_1.record_name_2. ... record_name_n.field_name 참조 방식 완전 자격 참조(fully qualified references)는 가장 큰 포괄적인 레코드부터 특정 필드에 이르기까지 모든 중간 레코드 이름들이 그 참조에 포함 Ex: Emp_Rec.Employee_Name.First 생략 참조(elliptical references)는 레코드 이름 일부가 생략되는 것을 허용(참조가 모호하지 않는 경우) Ex: First // First 필드에 대한 참조 Employee_Name.First Emp_Rec.First

레코드 연산 레코드 단위의 연산으로 배정, 동등/비동등의 비교, 초기화 등 배정은 일반적 (타입이 동등할 경우)

레코드와 배열 항목들의 동질적 vs. 이질적 => 동일한 방식의 처리 여부? 배열 원소 접근 vs. 레코드 필드 접근 => 동적 vs 정적

레코드 타입 구현 컴파일시간 서술자 필드들은 메모리에 인접하여 저장 필드의 크기가 동일하지 않기 때문에 각 필드에 레코드의 시작 주소에 상대적인 오프셋 주소가 연관 레코드 시작주소로부터 이격 거리

튜플 타입 튜플(tuple)은 레코드와 유사하나 원소들이 명명되지 않는 데이터 타입 In Python myTuple = (3, 5.8, ‘apple’) # 요소들은 동일 타입일 필요가 없다 myTuple[1] # 튜플의 첫번째 원소 참조 myTuple[1] = 5 # Error: 튜플은 변경 불가(immutable) myTuple =+ yourTuple # ‘+’는 접합 연산자로 새로운 튜플 생성 del # 삭제 용도: 배열이 매개변수로 전달되나 변경되지 않아야 하는 경우 함수가 여러 개의 값을 반환할 때

리스트 타입 LISP에서 처음으로 도입, 최근에 일부 명령형 언어에 도입 In LISP, Scheme 리스트는 괄호로 구분되고, 원소들은 콤마로 구분되지 않는다. (A B C D) (A (B C) D) 데이터와 코드는 동일한 형식을 갖는다 (A B C)가 코드로 해석될 때, 함수 A가 매개변수 B C에 적용된다 해석기는 리스트가 무엇인지를 알 필요가 있고, 리스트가 데이터일 경우에 어포스트로피로 표시한다. ‘(A B C)는 데이터이다.

리스트 연산 리스트 분리 함수 리스트 생성 함수 (CAR ‘(A B C)) // 리스트의 첫번째 원소 반환 (CDR ‘(A B C)) // 리스트의 첫번째 원소를 제외하고 반환 리스트 생성 함수 (cons ‘A ‘(B C)) // 첫번째 매개변수를 두번째 매개변수 리스트에 // 포함시켜서 새로운 리스트 생성 (list ‘A ‘B ‘(C D)) // 매개변수들을 원소로 포함하는 리스트 생성/반환

리스트 예: Python Python은 리스트 타입 제공 Python의 배열로서도 역할 원소들은 임의 타입 가능 리스트는 변경 가능(mutuable) 튜플처럼 사용 가능: 인덱싱, 접합, 슬라이싱(부분 참조), in 등 myList = [3, 5.8, “grape”] x = myList[1] //x에 5.8을 할당: 리스트 원소들은 0부터 인덱싱 del myList[1] // 두번째 원소 삭제 리스트 함축(list comprehension) 지원: 집합 표기법에 기반 [x*x for x in range (12) if x % 3 == 0] // range 함수는 [0, 1, 2, …, 11, 12]의 배열 생성 // 조건이 배열 각 원소에 적용되어 그 결과들로 구성된 새로운 배열 구성

공용체 타입 공용체(union)는 그 변수가 프로그램 실행 중에 다른 시기에 다른 타입의 값이 저장될 수 있는 타입 설계 고려사항 타입 검사가 요구되는가? => 그러한 타입 검사는 동적 공용체가 레코드에 포함되어야 하는가?

공용체 유형 자유 공용체(free union) 판별 공용체(discriminated union) 타입 검사를 지원하지 않음 언어 예: Fortran, C, C++ 판별 공용체(discriminated union) 타입 검사 지원 판별자(discriminant) 또는 태그(tag)라는 타입 지시자를 포함 언어 예: Ada

예제: 자유 공용체 In C union flexType { int intEl; float floatEl; }; union flexType e; float x; … e.intEl = 27; x = e.floatEl; // 타입 검사가 이루어지는가?

예제: 판별 공용체 Ada에서 가변 레코드(variant record)로 명세 판별자 type Shape is (Circle, Triangle, Rectangle); type Colors is (Red, Green, Blue); type Figure (Form: Shape) is record Filled: Boolean; Color: Colors; case Form is when Circle => Diameter: Float; when Triangle => Leftside, Rightside: Integer; Angle: Float; when Rectangle => Side1, Side2: Integer; end case; end record; 가변 부분

예제: 판별 공용체 type Shape is (Circle, Triangle, Rectangle); type Colors is (Red, Green, Blue); type Figure (Form: Shape) is record Filled: Boolean; Color: Colors; case Form is when Circle => Diameter: Float; when Triangle => Leftside, Rightside: Integer; Angle: Float; when Rectangle => Side1, Side2: Integer; end case; end record; 판별 공용체 사용 Figure: figure1; // 무제한 가변 레코드(unconstrained variant record) Figure: figure2(form=>triangle); // 제한 가변 변수(constrained // variant variable) 선언, // 다른 가변 타입으로 변경 불가 // 정적 타입 검사 가능 … figure1 := (filled=> True, color=>Blue, Form=>rectangle, side1=>12, side2=>3); // 태그 포함 모든 필드 배정 요구 if (figlure1.diameter > 3.0)… // 실행시간중 동적 타입 검사 // Form 태그가 Circle인지를 판단

공용체 평가 공용체가 안전한가? 자유 공용체 vs. 판별 공용체 언어 예 C, C++, Ada Java, C#

공용체 타입 구현 가장 큰 가변 요소를 위한 충분한 기억공간 할당

판별 공용체 타입 구현 판별 공용체 태그는 가변 요소와 함께 저장되며, 각 가변요소에 대해서 서술자 저장 type Node (Tag : Boolean) is record case Tag is when True => Count : Integer; when False => Sum : Float; end case; end record; 가변 요소별로 한 개의 항목 포함