Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

프로그래밍2

- C언어를 활용한 자료 구조 이해와 실습


- 파이썬 기본 활용능력 습득

2023년 1학기
창의융합대학 – 지능형반도체공학과
강의 개요

전자공학(인공지능/머신러닝)을 위한 자료 구조 기본 개념 이해 및 실습 (C언어 활용)


Phyton 이해 / 활용을 학습 (C언어 외 프로그래밍 언어 추가 학습)

Textbook : 강의자료 배포 (E-Class)

평가 : 출석 10%
과제 30%
중간고사 30%
기말고사 30%

* OFFICE : 창조관 214-1호


* E-Mail : skhong@seoultech.ac.kr

2
Lecture 1
2023.02.

3
Lecture 1

Program이란 ?
- 일이 진행되는 과정 & 순서의 나열 (EX. 라면을 만든다 : 냄비 준비  물 넣기  가열  물이 끓는가 ?  라면 넣기  끝)
- Computer는 정확한 명령만 실행 가능
- 정확한 표현의 규칙을 정의  Programming 언어의 필요성

Programming 언어
- 기계에 명령/연산을 전달할 목적으로 설계된 기계와 사람간의 의사소통 수단

Programing 언어의 종류
- C, C++, C#, JAVA, Python

Programing (1) 학습 내용
- C언어 활용능력 (문법 , 자료형 , 구조체)

4
Lecture 1

자료구조
- Data를 효율적으로 다룰수 있게 도와주는 Data 보관 방법과 Data에 관한 연산
- 동일한 타입의 Data를 정돈하여 저장한 구성체
 int : 정수 자료형의 자료구조
보관방법이 정의되어 있음 (32bit 메모리 공간, 첫 bit는 부호 저장), 연산 정의 (덧셈, 뺄셈, 곱셈 등)

- 자료 구조의 목적
 Data를 정돈하는 목적 : Data에 접근 / 탐색 등의 연산을 효율적으로 수행
 자료구조의 설계에는 Data와 관련된 연산이 함께 고려되야함

5
Lecture 1

자료구조의 종류
- 선형 자료구조
 항목들을 순서적으로 나열하여 저장하는 창고
 항목 접근 방법에 따라 다시 세분화
 리스트 : 가장 자유로운 선형 자료구조
 스택, 큐, 덱 : 항목의 접근이 맨 앞(전단)이 나 맨 뒤(후단)로 제한

- 비선형 자료구조
 항목들이 보다 복잡한 연결 관계
 트리: 회사의 조직도나 컴퓨터의 폴더와 같은 계층 구조
 그래프: 가장 복잡한 연결 관계를 표현
 다양한 문제를 해결하기 위한 기본 구조로 사용된다.

6
Lecture 1

ADT(Abstract Data types) : 추상 Data 형식


- 자료구조의 동작 방법을 표현하는 형식
 자료구조가 갖춰야할 일련의 연산
 Data 형식을 추상적으로 정의한것

- 기능은 무엇인지 언급하나, 해당 기능의 구현 방법은 언급되지 않음


 구성 요소 : Data의 선언 / 연산의 선언
 Data 연산의 구현 방법은 표현 되지 않음

7
Lecture 1

자료구조와 ADT
ADT : 개념을 제시

자료구조 : 개념을 구현

8
Lecture 1

Algorithm (알고리즘)
- 어떠한 문제를 풀기 위한 단계적 절차
 어떻게 풀것인가?
 알고리즘 설계 : 문제 풀이 절차를 설계
알고리즘 구현 : 프로그래밍 언어를 이용해서 문제풀이 절차를 코드로 작성

예) 프로그래밍1 실습 (숫자 교환, *모양으로 그림그리기)

void lineup(int* pa, int* pb, int *pc) if (*pa < *pc){
{ temp = *pa;
A B C int temp = 0; *pa = *pc;
*pc = temp;
if (*pa < *pb){ }

temp = *pa; if (*pb < *pc){
② *pa = *pb; temp = *pb;
③ *pb = temp; *pb = *pc;
} *pc = temp;
}
return 0;
}

9
Lecture 1

Program (프로그램)
- 자료구조 + 알고리즘
 정렬 / 탐색 : 알고리즘의 한 종류
 문제를 해결할수 있는 방법은 다양함 (1가지가 아님). 보다 효율적인 동작을 위해서 자료구조와 알고리즘을 학습

- 자료구조의 학습
 프로그래밍 언어는 자료구조를 라이브러리로 제공. 사용자는 라이브러리를 활용하여 개발
 자료구조를 이해하면 개발목적에 맞는 (보다 효율적인) 자료구조 선택 가능

예) 서울과기대 재학생 명단 (list / 트리 형태로 정리된 자료)


지능형반도체공학과 2학년 학생을 찾을 경우트리구조가 유리

10
Lecture 1

C언어의 활용
- 프로그래밍1 에서 학습
- 포인터 : 메모리의 주소를 저장하는 변수, 연산이 가능
- 구조체 : Data 형식을 조합해서 만드는 사용자 정의 Data 형식

 C언어를 활용하여 자료구조 각각에 대한 이해 및 실습 진행

11

You might also like