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

Slides:



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

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 장 변수, 영역, 수명 변수 바인딩 영역 기억장소 할당과 수명 변수와 그 환경 변수 초기화 상수와 변수.
Programming Languages Type Conversion Classifying Type Conversions According to the notation –Implicit Conversions (coercion) –Explicit Conversions (casting)
14주차 1교시 강화계획 [학습목표] 1. 강화계획의 정의를 안다 [학습내용] 1. 단순한 강화계획 2. 간헐적 강화 3. 복합 계획 4. 선택과 대응법칙 [사전학습] 강화계획이 일어날 수 있는 사례를 생각해본다.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
제 3장 프로그래밍 언어 설계 3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성
7장 배열 ②.
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
3 순차 자료구조와 선형 리스트.
연장근로와 야간·휴일근로 김영호 노무사 나눔 노사관계연구소 소장 연세대 일반대학원 박사 수료 고려사이버대 법학과 외래교수
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
제 2 장 배열과 스트링.
데이터 구조 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
Part 12 구조체와 공용체 ©우균, 창병모 ©우균, 창병모.
10장 예외 처리 프로그래밍 언어론 10.6 Pascal과 C의 에러 처리 10.1 설계 주제 10.2 PL/I의 예외 처리
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 7 – 자료형 Outline 7.1 자료형과 형 선언 7.2 단순형 7.3 열거형 7.4 배열
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
바인딩, 메모리 관리 SANGJI University Kwangman Ko
연결리스트 (Linked List) 충북대학교 컴퓨터공학과 서 영 훈.
C언어: 배열 (Arrays).
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
3장. 포인터, 배열, 구조체 포인터, 배열, 구조체 학습목표 기본적 데이터 타입
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
제 2 장 변수와 상수.
Work Progress ’ 나소라, 윤민.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
5장 이름, 바인딩, 영역(2) 순천향대학교 컴퓨터공학과 하상호.
Arrays 요약.
제 10장 부 프로그램 10.1 개요 10.2 매개 변수 평가와 전달 기법 10.3 형식 매개 변수 명세
★ 2015 석우초 4분기 방과후학교 영어교실 등록안내 ★
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
6장 데이터 타입 순천향대학교 컴퓨터공학과 하 상 호.
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
[CPA340] Algorithms and Practice Youn-Hee Han
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
제 5장 변수, 바인딩, 식 및 제어문 5.1 변수 5.6 표현식 5.2 바인딩 5.7 조건문 5.3 선언 5.8 반복문
4장 자료형.
Chapter 4 변수 및 바인딩.
26강 JAVA Collections - I - 컬렉션이란? - JAVA도 결국 효과적인 데이터를 처리하기 위한 수단
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
Signature, Strong Typing
Signature, Strong Typing
1장 기본적인 사항 순천향대학교 컴퓨터공학부 하 상 호.
adopted from KNK C Programming : A Modern Approach
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
Signature, Strong Typing
포인터와 배열 조 병 규 한 국 교 통 대 학 교 SQ Lab..
언어 언어 사람 사람 사람들간의 의사 소통을 위한 수단
Chapter 3 – 프로그래밍 언어 설계 Outline 3.1 설계 기준의 역사적 변천 3.2 효율성
컴퓨터 프로그래밍 기초 - 11th : 파일 입출력 및 구조체 -
제 8 장 포인터.
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
Lecture 05 문자열, 배열, 디버깅 Kwang-Man Ko
Chapter 2. 경영분석을 위한 재무제표 재무제표의 공시.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Choi Younghwan CSE HUFS
Python 기본.
9장 부프로그램 순천향대학교 컴퓨터공학부 하 상 호.
Presentation transcript:

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

Perl에서 영역 묵시적으로 선언된 변수는 전역 변수이다. 지역 변수 선언 가능 my $var => 정적 영역 (디폴트) local $var => 동적 영역

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

배열 타입 배열(array)은 동질적인(동일한 타입을 갖는) 데이터 원소들의 집단체(aggregate)이고, 개개의 원소는 그 집단체의 첫번째 원소에 상대적인 위치로 식별 설계시 고려사항 어떤 타입이 첨자에 대해서 적법한가? 원소 참조시 첨자 식이 범위 검사되는가? 첨자 범위는 언제 바인딩되는가? 배열 할당은 언제 일어나는가? 톱니형 또는 직사각형 다차원 배열이 허용되는가? 또는 둘 다 허용되는가? 배열이 할당될 때, 초기화 가능한가? 슬라이스(slice)가 존재한다면, 어떤 종류의 슬라이스가 지원되는가?

배열 인덱싱 인덱싱은 인덱스로부터 원소로의 사상을 의미 인덱스 구문 arrayName (인덱스 리스트) => 원소 괄호 사용 FORTRAN, PL/I, Ada 배열 참조와 함수 호출간의 균일성(uniformity)를 보여준다: 이 둘 모두 사상(mapping)을 의미 대괄호 사용 다른 대부분의 언어

배열 인덱스(첨자) 타입 첨자 타입 인덱스 범위 검사 FORTRAN, C: 정수만 가능 Ada: 정수, 열거, 불리안, 문자 등 임의 순서 타입 Java: 정수만 가능 인덱스 범위 검사 C, C++, Perl, FORTRAN: 범위 검사 명세하지 않음 Java, C#: 범위 검사 명세 Ada: 디폴트는 범위 검사 요구하나 프로그래머에 의해서 무위화 가능

첨자 바인딩 및 배열 유형 배열 변수의 첨자 타입의 바인딩은 보통 정적이지만, 그 첨자 값 범위는 때때로 동적으로 바인딩 첨자 범위 하한이 묵시적으로 0,1, 또는 임의 정수 값으로 설정 가능 첨자 범위가 프로그래머에 의해서 명세 첨자 범위 바인딩 시기, 기억공간 바인딩 시기 및 그 할당 위치에 기준하여 배열을 5가지로 유형화 정적 고정 스택-동적 스택-동적 고정 힢-동적 힢-동적

첨자 바인딩 및 배열 유형(계속) 정적 배열(static array)은 첨자 범위가 정적으로 바인딩, 기억공간 할당이 정적 장점: 효율적(efficiency) 예: C/C++의 static 배열 고정 스택-동적 배열(fixed stack-dynamic array)은 첨자 범위는 정적 바인딩, 기억 공간은 선언문 세련화시간에 할당 장점: 기억공간의 효율적 예: C/C++의 함수 내부에 선언된 배열

첨자 바인딩 및 배열 유형(계속) 스택-동적 배열(stack-dynamic array)은 첨자 범위와 기억공간 할당이 모두 세련화 시간에 동적 바인딩. 이러한 바인딩은 변수 존속기간 동안 고정 장점: 유연성 (배열의 크기를 사용 전까지 알 필요없음) 예제: in Ada, Get(List_Len); declare List: array(1..List_Len) of Integer; begin … end;

첨자 바인딩 및 배열 유형(계속) 고정 힙-동적 배열(fixed heap-dynamic array)은 첨자 범위와 기억 공간 바인딩이 실행중 사용자 프로그램이 요청할 때 이루어지고, 힙으로부터 할당. 바인딩 이후는 고정 유연성 vs. 할당 시간 언어 예 C, C++의 동적 배열 Java, C#의 배열

첨자 바인딩 및 배열 유형(계속) 힙-동적 배열(heap-dynamic array)은 첨자 범위, 기억 공간 바인딩이 동적, 이후 바인딩은 변경 가능 유연성 vs. 할당 및 회수 부담 언어 예: Java의 ArrayList, C#의 List Perl, JavaScript ArrayList band = new ArrayList(); Band.add(“Paul”); Band.add(“Pete”); … System.out.println(“band.get(1));

배열 초기화 배열의 기억공간 할당 시점에 그 배열을 초기화하는 수단을 제공 예제 int list[] = {4, 5, 7, 83}; char name[] = “Gildong”; char *names[] = {“Bob”, “Jake”, “Joe”}; String[] names = {“Bob”, “Jake”, “Joe”}; // in Java

배열 연산 배열 연산은 배열 단위의 연산을 수행 언어 예 공통된 배열 연산: 배정, 접합, 동등/비동등 비교, 슬라이스 APL: 가장 강력한 배열 처리 언어 4가지 산술연산이 벡터와 행렬에 대해서 정의 벡터(V)와 행렬(M)에 대한 단항 연산자 제공 Perl: 배정 허용, 비교는 허용하지 않음 Python: 배정, 접합(+), 원소 멤버쉽(in) 허용, 비교 허용 C 기반 언어: ΦV: V의 원소를 역순으로 ΦM: M의 열을 역순으로 θM: M의 행을 역순으로 ØM: M의 전치행렬 계산 ÷M: M의 역행렬 계산

직사각형 배열 vs. 톱니형 배열 직사각형 배열(rectangular arrays)은 모든 행이 동일한 개수의 원소를, 모든 열이 동일한 개수의 원소를 갖는 다차원 배열 정확히 직사각형 테이블을 모델링 언어 예: Fortran, Ada, C# myArray[3, 7] 톱니형 배열(jagged arrays)은 행들의 크기가 동일할 필요가 없는 다차원 배열 다차원 배열에서, 배열의 원소가 배열인 경우(“an array of arrays”) 언어 예: C, C++, Java, C# myArray[3][7] // in C# int [][]ma = new int [MAX][]; // in Java for (int i = 0; i <= MAX; i++) ma[i] = new int [i+1];

슬라이스 슬라이스(slice)는 배열의 부분적 구조 배열 일부분에 대한 참조 메커니즘을 제공 배열 연산을 제공하는 언어에서 유용

슬라이스 예제 In Fortran 95, Vector(3:6) Mat(1:3, 2) Mat(2:3, 1:3) Cube(2, 1:3, 1:4) Cube(1:3, 1:3, 2:3) Integer, Dimension (10) :: Vector Integer, Dimension (3, 3) :: Mat Integer, Dimension (3, 3, 4) :: Cube

배열 구현 배열 원소 접근 함수 구현 1차원 배열의 원소 접근 함수 배열 원소에 대한 첨자 식을 원소의 주소로 사상 사상 코드는 컴파일러가 생성 1차원 배열의 원소 접근 함수 In C, 주소(list[k]) = 주소(list[k]) = 주소(list[하한]) + (k-하한)*원소_크기 다차원 배열의 경우는?

배열 구현 다차원 배열의 저장 순서 행-우선 순서(row major order): 대부분의 언어 열-우선 순서(column major order): Fortran Ex. 3 5 7 1 3 8 6 2 5

배열 구현 다차원 배열에서 접근 함수 (행-우선 순서) C의 a[m][n] 배열에서, 주소(a[i][j]) = 주소(a[i,j]) = 주소(a[0,0]) + ((i번째 행보다 앞선 행의 개수)*(열의 크기) + (j번째 열의 왼쪽에 위치한 원소 개수) *원소_크기 3차원 배열의 경우는?

배열 구현 서술자 배열 원소 접근 함수에 필요한 정보 포함 색인 범위에 대한 실행시간 검사에 필요 첨자 범위의 정적/동적에 따른 컴파일-시간, 실행시간-시간서술자 필요 일차원 배열 다차원 배열

배열 매개변수에서 첫번째 첨자는 생략 가능한가? 배열 구현 언어 예 In C 배열 매개변수에서 첫번째 첨자는 생략 가능한가? double sum(double a[], int n) {…} int sum (int a[][5], int n, int m) {…}

연상 배열 연상 배열(associative array)은 원소들간에 순서가 없으며, 키 값을 통해서 원소에 접근하는 배열 사용자-정의 키가 원소와 함께 저장되어야 한다. 언어 예 Perl, Python에서는 내장 타입으로 지원, Java, C++, C#에서는 클래스 라이브러리에 의해서 지원 In Perl, %hi_temp = {“Mon”=>77, “Tue”=>79, “Wed”=> 65, …); $hi_temp {“Wed”} = 83;

레코드 타입 레코드(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 정적

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