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

Slides:



Advertisements
Similar presentations
프로그래밍언어론 TA 윤들녁. 소개 윤들녁 연락처 : 공대 7 호관 4 층 401 호 데이터베이스 연구실 실습 후 날짜 _ 학번.zip 으로.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
제14장 동적 메모리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
C 프로그래밍 I.
제 9 장 구조체와 공용체.
컴퓨터 프로그래밍 기초 [Final] 기말고사
데이터베이스 및 설계 금오공과대학교 컴퓨터공학부 이 이섭.
Lecture 5 C의 기초적인 값(primitive value)의 컴퓨터에서의 표현 문자, 정수, 실수, 참/거짓
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
6장. printf와 scanf 함수에 대한 고찰
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
공학컴퓨터프로그래밍 Python 염익준 교수.
11장. 1차원 배열.
C#.
Method & library.
JA A V W. 03.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
메모리 관리 & 동적 할당.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
6장 데이터 타입 순천향대학교 컴퓨터공학과 하 상 호.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
프로그래밍 언어론 - 소개 순천향대학교 컴퓨터공학과 하 상 호.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
자바 5.0 프로그래밍.
Chapter 02. 자바 기본 문법.
8주차: Strings, Arrays and Pointers
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
6장 데이터 타입(4) 순천향대학교 컴퓨터공학부 하 상 호.
데이터 동적 할당 Collection class.
제 15 강 문자와 코드 shcho.pe.kr.
9장 부프로그램 (3) 순천향대학교 컴퓨터공학부 하 상 호.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
C 프로그래밍 I.
1장 기본적인 사항(2) 순천향대학교 컴퓨터공학부 하 상 호.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
Numerical Analysis Programming using NRs
프로그래밍 언어 학습을 위한 가상실습환경 창원대학교 이수현.
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
제 4 장 Record.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
어서와 C언어는 처음이지 제21장.
 6장. SQL 쿼리.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
13. 포인터와 배열! 함께 이해하기.
Visual Basic .NET 기초문법.
6장 데이터 타입(5) 순천향대학교 컴퓨터공학부 하 상 호.
Presentation transcript:

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

프로그래밍 언어론(의견) 수업에서 인상깊고 유익했던 사항은 무엇입니까?

프로그래밍 언어론(의견) 수업 내용과 방법 개선을 위한 제안이 있다면 무엇입니까?

프로그래밍 언어론(의견) 평가 전공 핵심 과목으로 대체적으로 어려운 과목임 개념, 특징 등을 쉽게 설명하려고 예제 언어를 많이 활용함 전반적인 언어 특징, 개념, 구현 사항에 관한 이해에 중점을 둠 과제, 퀴즈의 즉각적인 피드백을 제공함 학생의 공부 의지 부족이 아쉬움 학생의 수준이 상이하고, 아주 미흡한 학생에 대한 배려가 어려움 중간고사 성적이 절대 미흡한 학생에 대한 배려 고려 과제 제시시 수준별 문제 고려

이 장에서는? 다양한 데이터 타입에 대해서 설계 고려사항, 언어 예제, 평가, 구현 사항 등을 살펴본다. 기본데이터 타입 문자 스트링 타입 사용자-정의 순서 타입 배열 타입 연상 배열 레코드 타입 튜플 타입 리스트 타입 공용체 타입 포인터 타입과 참조 타입 타입 검사, 강 타입, 타입 동등 규칙에 대해서 배운다.

서론 데이터 타입이란? 값들의 모임과 이러한 값들에 대한 미리 정의된 연산들의 집합으로 정의된다 프로그램의 데이터 조작 작업 용이성을 결정하는 중요한 요소는 언어의 데이터 타입들이 문제의 실세계의 객체들과 얼마나 잘 매칭되는가에 따른다. 십진수 타입, 불리안 타입 구조체 정의 사용자-정의 타입 추상 데이터 타입

서론 타입 시스템이란? 타입 시스템의 용도 구조화된 타입은 타입 연산자나 구성자로 정의 언어의 각 식에 대해서 타입이 어떻게 연관되는지를 정의하고, 타입 호환성, 타입 동등을 위한 규칙을 포함 => 프로그래밍 언어의 의미론 이해에 있어서 중요 타입 시스템의 용도 오류 탐지 <- 타입 검사 프로그램 모듈화 지원 <- 모듈간 인터페이스 검사 프로그램 문서화(documentation) <- 타입 선언 (데이터 정보의 문서화) 구조화된 타입은 타입 연산자나 구성자로 정의 C의 타입 연산자: [], * 타입 구성자: struct, record

서론 서술자(descriptor) 데이터 타입에 대한 공통된 설계 고려사항 서술자는 변수의 속성들의 모임 타입 검사, 할당/회수에 활용 속성 유형: 정적 vs. 동적 데이터 타입에 대한 공통된 설계 고려사항 타입에 대해서 어떠한 연산들이 정의되어 있고, 이러한 연산들이 어떻게 명세되는가?

기본 데이터 타입 대부분의 프로그래밍 언어는 기본 데이터 타입(primitive data types)들의 집합을 제공 기본 데이터 타입이란? 다른 데이터 타입의 관점에서 정의되지 않는 타입 단지 하드웨어의 반영이거나 약간의 비 하드웨어적 지원 기본 테이터 타입 종류 수치 타입: 정수, 부동 소수점, 십진수, 복소수 불리안 타입 문자 타입

기본 데이터 타입: 정수 하드웨어의 정확한 반영 다양한 크기의 정수 지원 Ex. Java의 부호 정수: byte, short, int, long

기본 데이터 타입: 부동 소수점 실수를 그 근사 값으로 모델링 방법: 소수점 이하 부분과 지수 부분으로 표현 ex. ∏, e 등 부동 소수점 수는 유한 개의 이진수로 표현 불가능(ex. 0.1) 방법: 소수점 이하 부분과 지수 부분으로 표현 2가지 실수 타입: float/ double IEEE 부동-소수점 표준 754 형식 단정도 배정도

기본 데이터 타입: 복소수 복소수는 그 값이 순서화된 부동 소수점 수의 쌍 (실수부, 허수부)로 표현: 리터럴 형식: (7 + 3i) in Python Ex. Fortran, Python, C99

기본 데이터 타입: 십진수 고정된 개수의 십진수 디지트를 BCD(binary coded decimal) 형식으로 저장 장점: 정확성(십진수 값을 정확하게 표현) 단점: 제한된 범위, 메모리 낭비 Ex. COBOL, C#

기본 데이터 타입: 불리안 값들의 범위는 단지 참, 거짓의 2가지 대부분 범용 언어에서 지원 흔히 바이트로 구현 판독성 향상 C99, C++, Java, C#, VB

기본 데이터 타입: 문자 문자 데이터는 수치 코딩으로 저장 코딩 기법: ASCII (8bits): American Standard Code for Information Interchange) 16-bit Unicode 32-bit Unicode

문자 스트링 타입 문자 스트링 타입(character string type)은 값들이 일련의 문자들로 구성 설계 고려사항 기본 타입인가? 아니면 배열의 특정 유형인가? 스트링의 길이가 정적인가? 아니면 동적인가?

문자 스트링 타입 연산 전형적인 연산들 배정 비교(=, >, 등) 접합 부분 스트링 참조(substring reference) 패턴 매칭(pattern matching)

문자 스트링 타입: 언어 예 C C++ Java Python Perl, JavaScript, PHP 기본 타입이 아니고, char 배열로 제공 스트링 연산을 표준 라이브러리로 제공 C++ char 배열, string 클래스 Java String, StringBuffer 클래스 Python 스트링 기본 타입 지원 (Java의 String과 유사: 변경 불가) 다양한 스트링 연산 제공 Perl, JavaScript, PHP 스트링 기본 타입 지원 정규식을 이용한 패턴 매칭 연산 제공 (정규식 이용) (C++, Java, C# 지원) /[A-Za-z][A-Za-z\d]+/ /\d+\.?\d*|\.\d+/

스트링 길이 선택 사항 정적 길이 스트링( static length string) 스트링 생성시 그 길이가 설정되고 고정 Ex. Python 스트링, Java의 String, C++ string, C# String 제한된 동적 길이 스트링(limited dynamic length string) 스트링 선언시 고정된 최대 길이까지의 가변적인 길이를 갖는 것을 허용 C/C++ 동적 길이(dynamic length string) 최대 길이 제한 없이 가변 길이를 갖는 것을 허용 최대의 유연성, 동적 할당/회수 부담 Perl, JavaScript, C++

스트링 타입 평가 작성력 향상 단순 패턴 매칭이나 접합과 같은 연산은 필수적 배열보다는 기본 타입으로 다루는 것이 자연스럽다 단순 패턴 매칭이나 접합과 같은 연산은 필수적 오늘날 언어에서 기본 스트링 타입을 지원하지 않는 것은 정당화하기 어렵다

스트링 타입 구현 정적 길이 제한된 동적 길이 동적 길이 컴파일시간 서술자 현재 길이에 대한 실행시간 서술자 필요 C/C++에서 실행시간 서술자가 필요한가? 동적 길이 실행시간 서술자 필요 할당/회수에 따른 복잡한 기억공간 관리 필요

사용자-정의 순서 타입 순서 타입(ordinal type)은 가능한 값들의 범위가 양의 정수 집합과 연관 가능한 타입 Java의 기본 타입 중에서 순서 타입은? 사용자-정의 순서 타입 열거 타입 부분 범위 타입

열거 타입 열거 타입(enumeration type)은 모든 가능한 값들이 그 정의에서 제공되는, 즉 나열되는 타입 이 타입은 열거 상수(enumeration constants)라 불리는 이름 상수들의 모임을 정의하고, 그룹핑하는 방법을 제공 Ex. In C, enum days {Mon, Tue, Wed, Thu, Fri, Sat, Sun}; 열거 상수에는 묵시적으로 0, 1, .. 등의 정수가 순차적으로 할당

열거 타입 설계 고려사항 한 열거 상수가 한 개 이상의 타입 정의에 올 수 있는가? (그럴 경우에, 그러한 상수 참조에 대한 타입 검사가 어떻게 이루어지는가?) 열거 타입이 정수로 강제 변환 가능한가? 다른 타입이 열거 타입으로 강제 변환 가능한가?

열거 타입 예제 // in C enum colors {red, blue, green, yellow, black}; // 디폴트 내부값은 0, 1, … int main() { enum colors myColor = blue, yourColor = red; … myColor++; // 적법한가? myColor = 4; // 적법한가? }

열거 타입 언어 예 평가 C, C++, Java 5.0, C# 판독성 향상: 이름 상수가 코딩된 값보다 쉽게 인식 신뢰성 향상 열거 타입에 대한 산술 연산이 의미가 있는가? 열거 타입 변수에 범위를 벗어난 값을 배정 가능한가?

보고서 #6 (due 5/12) C, C++, Java, C#의 열거 타입을 다음 항목들의 관점에서 비교하라. 차이점을 보여주는 각 언어의 코드 예제를 들면서 설명하라. 한 열거 상수가 한 개 이상의 타입 정의에 올 수 있는가? (그럴 경우에, 그러한 상수 참조에 대한 타입 검사가 어떻게 이루어지는가?) 열거 타입이 정수로 강제 변환 가능한가? 다른 타입이 열거 타입으로 강제 변환 가능한가? 열거 타입에 대한 산술 연산이 의미가 있는가? 열거 타입 변수에 범위를 벗어난 값을 배정 가능한가?

부분 범위 타입(subrange types) 예제: 12..18 언어 예: in Ada, type Days is (mon, tue, wed, thu, fri, sat, sun); subtype Weekdays is Days range mon..fri; subtype Index is Integer range 1..100; Day1: Days; Day2: Weekday; Day2 := Day1; // 컴파일러는 범위 검사 코드 생성 기존 타입에 대한 제약은 가능한 값들의 범위 부모 타입에 대해서 정의된 모든 연산은 명세된 범위 밖의 값들에 대한 배정을 제외하고는 부타입에 대해서도 정의

부분 범위 타입 평가: 판독성 향상 신뢰성 향상 최근의 언어에서 지원되지 않는 경향 부분 범위 타입 변수는 특정 범위의 값만을 저장할 수 있음을 알려줌 신뢰성 향상 명세된 범위를 벗어난 값을 부분 범위 변수에 배정하면 오류로 탐지 최근의 언어에서 지원되지 않는 경향