2014-1 프로그래밍언어 프로그래밍언어강의소개 2014. 3. 1. 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr)
프로그래밍언어강의개요 목적 C 프로그래밍언어를기반으로한공학문제의해결방법습득, C++ 프로그래밍언어의기본지식습득및객체지향형프로그래밍, 소프트웨어시스템설계및구현지식습득 관련 C/C++ 프로그래밍실습 C/C++ 기반설계프로젝트수행 선수과목 : 정보통신공학개론, 컴퓨터프로그래밍 (C, Java) 교재및참고문헌 [1] Walter Savitch, Absolute C++, 5 th Ed, Pearson, 2013. [2] 천인국, 쉽게풀어쓴 C언어 Express, 개정판, 생능출판사, 2012. [3] Deitel and Deitel, How to Program C++, Prentice Hall, 2005. ch 0-2
인류의문명진화 인류는새로운도구를효율적으로현명하게사용함으로써문명을진화시켰음 increased productivities with new tools of new materials, powered machines: from stone, stick, bronze, iron, telephone and computers increased collaborations among multiple persons increased performance in value creation increased energy efficiencies 컴퓨터와프로그래밍을통하여이러한기능을강화시킴 ch 0-3
프로그래밍언어과목을통하여무엇을배우나? 엔지니어 로생각하고설계하는방법을배운다. Technician ( 기능공 ) vs. Engineer Simple passive & repeated implementation vs. creative design ( 창의적설계 ) and fast prototyping ( 신속한 알고리즘의기초에대하여배우며, 설계된알고리즘에따라프로그램을설계 / 구현하는기법을배운다. C/C++ 프로그래밍기법을배운다. 프로그래밍의즐거움을느낄것이다! ch 0-4
소프트웨어시스템설계및구현단계 설계 (Design) 구현 (Implementation) Problem Specifications (Requirements, Objectives) Analysis of the requirement Evaluate Feasibility Syntax Error Edit program source code Compile Source codes.c,.cc Object codes.o Algorithm design Data structure design Link Executable codes.exe Software system design Subsystem design Block design Module design Class / Function design Load Execute Program Execution output Logical Error Correct Output? ch 0-5 Mission Completed!!
알고리즘 Algorithm is a list of instructions when executed, transform information from input to output The instructions are a finite set of steps that can be executed, in a definite deterministic order When these steps are actually executed, the execution must terminate after a finite time. Pseudo code Simplified list of instructions to show the overall process of algorithm not following the details of programming language the skeleton of the algorithm should be shown ch 0-6
자료구조 (Data Structure) 모든소프트웨어개발에서는효율적인알고리즘과이알고리즘에적합한자료구조를사용하여야우수한성능을발휘할수있음 알고리즘의예 sorting ( 정렬 ): selection sorting, quick sorting search ( 탐색 ): depth-first search, breadth-first search shortest path, minimum spanning tree 자료구조의예 단순배열 (simple array) 구조체 (structure) 구조체배열 (array of structure) 자기참조구조체 (self-referential structure) Linked List, Binary Tree Heap, priority queue Map, Skip list ch 0-7
효과적인프로그램개발방법 (1) 프로그램설계 ( 알고리즘및자료구조설계 ) 에더많은시간을투자할것 주어진문제를해결하기위한효율적인알고리즘을먼저구성할것 구성된알고리즘에적합한자료구조를선택할것 예 ) 100,000개의학생데이터로부터 0.01초의데이터처리시간내에특정조건을만족하는학생을탐색 (search) 하여야하는경우, 어떤자료구조를사용하며, 어떤방식으로탐색할것인가? array vs. linked list vs. binary tree linear search vs. binary search ch 0-8
효과적인프로그램개발방법 (2) 프로그램오류수정을위한 debugging 방법을먼저숙달할것 프로그램소스코드상에존재하는문법적에러및논리적인에러를빨리찾아내는방법을먼저숙달 Visual studio의 debugging 기능을먼저확인하고, 숙달할것 break point 기능 trace 기능 각단계에서의 local variable 값확인 ch 0-9
강의주제 (1) Part 1) 알고리즘과프로그래밍소개 - 컴퓨터, 프로그래밍과소프트웨어 - 순서도 (flow chart) 와의사코드 (pseudo code) - 알고리즘 - 자료구조 Part 2) Structured Programming - 조건문 : if, if-else, switch - 입출력, printf, scanf - 반복문 : for, while, do-while - 함수 (function) - 재귀 (recursion) - 배열 (array), 탐색 (searching) 과정렬 (sorting) - 파일및파일입출력 - 구조체 (structure) - 동적메모리할당 (dynamic memory allocation) - 포인터 (pointers) - 연결리스트 (linked list) - 이진트리 (binary tree) ch 0-10
강의주제 (2) Part 3) 객체지향형 ( object programming) 프로그래밍개요 - 객체지향형프로그래밍소개 - 클래스 (class) 와객체 (object) - 캡슐화 (encapsulation), 추상화 (abstraction), 정보은닉 (information hiding) - 소프트웨어재사용 (software reuse) 과상속 (inheritance) - Operator overloading ch 0-11
강의및실습 주당 2 시간강의 주당 2 시간실습 주강 2 시간보충설명시간 수업진행및평가 (1) 시험 학기당실기시험 4 회 시험 1: 3 월 29 일 ( 토요일 ) 시험 2( 중간고사 ):4 월 23 일 ( 수요일 ) 시험 3: 5 월 24 일 ( 토요일 ) 시험 4( 기말고사 ):6 월 18 일 ( 수요일 ) 각실기시험에구두시험 (oral test) 포함 과제물 (homework) 각장 (chapter) 별로 homework 부과 과제물보고서는각장별로분리하여제출 과제물제출기한 : 과제물공지후 1 주일이내 ( 수업시간에제출 ) 과제물제출기한초과시 1 주일단위로 20% 씩점수감점 ch 0-12
수업진행및평가 (2) 설계프로젝트 (Design Project) 공학교육인증프로그램 (ABEEK) 의요구사항에따른 4 주분량의설계프로젝트수행 설계문서작성 설계및구현, 성능분석 발표 최종보고서 성적평가 총 1000 점만점 시험 4 회 x 100 점 = 400 점 실습 200 점 설계프로젝트 200 점 출석및퀴즈 100 점 과제물 100 점 ch 0-13
수업진행및평가 (3) 조교 (Teaching Assistant: TA) 황현동 : 박사과정 ( 차세대네트워킹연구실, IT관 304호실 ) 전화 : (053) 810-3940 E-mail: mch2d@ynu.ac.kr 강의지원시스템 강의자료및보충설명자료 실습자료 ch 0-14
이과목에서배울 12 가지중점주제 (1) <Part 1: C> 1) 2차원배열을사용한 5 5 행렬계산 : 행렬덧셈, 뺄셈, 곱셈, 행렬식, 역행렬 2) 100,000개요소에대한선택정렬, quick sorting, 정렬시간이비교 3) 구조체 (structure) 4) 구조체배열에대한정렬 : Selection sorting of array of structure, Quick sorting of array of structure 5) 포인터 (pointer) 6) 2차원배열의동적생성, 7 7 행렬계산 7) 자기참조구조체 (self-referential structure) 기반의연결리스트 (linked list) 8) 이진트리 (binary tree) ch 0-15
이과목에서배울 12 가지중점주제 (2) <Part 2: C++> 9) 클래스 (class) 와객체 (object): 클래스선언및구현 (private data member, member function), encapsulation, abstraction, information hiding 10) operator overloading: +, -, *, /, ==,!=, ++, --,! (determinant of matrix), ~ (inverse of matrix) 11) 클래스상속 (inheritance of classes) 12) 가상함수 (virtual function) 와 polymorphism ( 同質異形 ) ch 0-16