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

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
1 구조체 윤 홍 란 컴퓨터 프로그래밍 2 구조체 정의  구조체란 ? o 서로 다른 형의 변수들을 하나로 묶어주는 mechanism. (cf. 배열 : 같은 형의 변수들을 하나로 묶어주는 mechanism) o 예 : 카드의.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
6장 데이터 타입 순천향대학교 컴퓨터공학과 하 상 호.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
제14장 동적 메모리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
자료 구조: Chapter 3 (2)구조체, 포인터
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
10장. 예외처리.
11장. 1차원 배열.
C#.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
6장 데이터 타입 순천향대학교 컴퓨터공학과 하 상 호.
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
10장 부프로그램 구현 순천향대학교 컴퓨터공학과 하 상 호.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
자바 5.0 프로그래밍.
C++ Espresso 제11장 예외 처리와 형변환.
6.4 타입 검사 (Type Checking).
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
12. 상속 : 고급.
Chapter 16. C++ 형 변환 연산자와 맺는 글
제 6 장 함수(functions).
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
1장 기본적인 사항(2) 순천향대학교 컴퓨터공학부 하 상 호.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
Numerical Analysis Programming using NRs
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 23. 구조체와 사용자 정의 자료형2.
Chapter 11 구조체.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
제 4 장 Record.
프로그래밍언어론 Chapter 6 타입시스템 나는 발생 가능한 오류의 수를 최소화하고
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.
Pointers summary.
7 생성자 함수.
Presentation transcript:

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

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

타입 검사 피연산자와 연산자의 개념을 일반화하여 부프로그램과 배정문을 포함 부프로그램은 피연산자가 매개변수인 연산자 배정은 좌측 변수와 우측 식이 피연산자인 이항 연산자 타입 검사(type checking)는 연산자에 대한 피연산자들의 타입이 호환가능한지를확인하는 행위 호환가능 타입(compatible type) 이란 연산자에 대해서 적법하거나, 또는 적법한 타입으로 컴파일러에 의해서 묵시적으로 변환되는 것이 언어 규칙에서 허용되는 타입 타입의 묵시적 자동변환을 타입 강제변환(coercion)이라 한다. 타입 오류(type error)는 연산자를 부적절한 타입의 피연산자에 적용할 때 발생

타입 검사 모든 타입 바인딩이 정적이면, 거의 모든 타입 검사는 정적일 수 있다. 타입 바인딩이 동적이면, 타입 검사는 동적이어야 하는데, 이를 동적 타입 검사(dynamic type checking)이라 한다. 공용체의 타입 검사는?

강 타입 프로그래밍 언어는 타입 오류가 항상 탐지되면 강 타입 (strongly typed languages)이다. 모든 피연산자의 타입이 컴파일 시간 또는 실행 시간에 결정 타입 오류를 초래하는 변수의 모든 잘못된 사용 탐지

강 타입 언어 언어 예제: Ada: 거의 강타입 언어 Java, C#: Ada와 유사 C, C++: ? 프로그래머가 타입 검사 중단 요청 가능 Unchecked_Conversion으로 일시적 타입 검사 중단 가능 Java, C#: Ada와 유사 타입 캐스팅에 의한 오류 가능성 타입 오류가 탐지 되지 않은 묵시적 방법은 없다 C, C++: ?

강 타입 언어 타입 강제변환은 강 타입을 약화시킴 다음 언어에서 타입 강제 변환의 정도는? (배정문, 산술식) Ada: 강제 변환이 거의 없음 Java, C# C, C++ int a, b; float d; // a + b의 작성을 의도했지만 잘못하여 a + d로 작성되었다면?

타입 동등(type equivalence) 타입 호환성 규칙은 미리 정의된 스칼라 타입에 대해서 적용 배열과 레코드의 구조화된 타입에 대해서는 타입 동등(type equivalence) 개념 적용 식에서 한 타입의 피연산자가 타입 강제 변환 없이 다른 타입의 피연산자로 대체될 수 있으면, 이 두 개의 타입은 동등하다. 타입 강제 변환 없는 타입 호환성의 엄격한 형식 두 변수의 타입이 동등하면 한 변수가 다른 변수에 할당될 수 있다 타입 동등을 정의하는 2가지 접근 방법 이름 타입 동등(name type equivalence) 구조 타입 동등(structure type equivalence)

이름 타입 동등 두 변수가 동일한 선언문에 속하거나, 같은 타입 이름으로 선언되면, 이러한 두 변수는 이름 타입 동등(name type equivalence)하다. 구현하기 쉬우나 매우 제약적 정수 타입의 부분범위가 정수 타입과 동등하지 않는다. 부프로그램 매개변수의 타입은 전역적으로 정의해야 한다 모든 타입은 이름을 가져야 한다. type idxtype 1..100; // 새로운 타입 생성 count: integer; Idx: idxtype; … // idx와 count는 타입 동등한가?

구조 타입 동등 두 변수의 타입이 동일한 구조를 가지면 구조 타입 동등(structure type equivalence)하다. 유연하지만 구현하기 어렵다 두 타입의 전체 구조를 비교하는 것이 간단하지 않다. 동일한 구조를 갖는 타입들을 구별 가능한가? 두 레코드 타입이 구조적으로 동일하나 다른 필드 이름을 가지면? 두 배열이 첨자만이 다른 경우 (e.g. [1..10], [0..9]) 두 열거 타입에서 리터럴 철자만 다른 경우 type celsius = real; type fahrenheit = real; … // celsius와 fahrenheit는 타입 동등한가?

언어의 예: 타입 동등 Ada: 이름 타입 동등의 제약된 형식 사용 파생 타입(derived type)과 부타입(subtype) 제공 파생 타입은 미리 정의된 타입에 기반하고, 이와 동일한 구조를 갖지만 동등하지 않는 새로운 타입을 정의 (부모타입의 모든 특성은 상속됨) Celsius, Fahrenheit는 구조가 동일하지만 서로 다른 타입 Celsius, Fahrenheit는 Float와도 다른 타입 부타입은 기존 타입의 범위를 제한하여 정의되며, 그 부모 타입과 타입 동등. Derived_Small_Int는 Integer와 비 동등 Subrange_Small_Int는 Integer와 타입 동등 type Celsius is new Float; type Fahrenheit is new Float; type Derived_Small_Int is new Integer range 1..100; subtype Subrange_Small_Int is new Integer range 1..100;

언어의 예: 타입 동등 C: typedef struct { int a; float b; } A; typedef struct { int a; float b; } B; … A a; B b; a = b; // error? typedef int P[10]; typedef int Q[20]; P a = {1, 2, 3}; fun(p); // error? … void fun(Q b) {…}

언어의 예: 타입 동등 C: struct/union, enum에 대해서는 이름 타입 동등 적용 다른 비 스칼라 타입에 대해서는 구조 타입 동등 적용 배열 타입은 동일한 원소 타입을 가지면 동등 typedef는 새로운 타입을 생성하지 않음에 유의 기존 타입에 대한 새로운 이름을 정의 typedef로 정의된 타입은 그 부모 타입과 동등 구조체, 열거, 공용체가 다른 파일에 정의될 경우에는 구조 타입 동등 적용 => 이는 타입 동등 규칙의 허점(loophole)

언어의 예: 타입 동등 C++ Java C와 유사 다른 파일에 정의된 구조체, 공용체에 대한 예외사항이 없음 객체 호환성 관점에서 정의