c언어 세미나 - 배열

22
C 언언 언언언 - 배배 - DDOLGI 15 배 배배배

Upload: seunghyun-lee

Post on 18-Feb-2017

47 views

Category:

Software


0 download

TRANSCRIPT

Page 1: C언어 세미나 - 배열

C 언어 세미나- 배열 -

DDOLGI 15 기 이승현

Page 2: C언어 세미나 - 배열

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

1. 배열이란 ?2. 배열의 사용3. 심화과정4. 과제 !5. Q&A

목차

stu_01 stu_0

2

stu_03 stu_0

4stu_05

Page 3: C언어 세미나 - 배열

배열이란 ?배열의 필요성과 개념

Page 4: C언어 세미나 - 배열

어떤 강의를 듣는 학생의 점수 평균을 내는 프로그램을 작성하려고 한다 .

변수 = 학생의 수 . int stu_01, int stu_02, int stu_03, int stu_04

배열의 필요성

하나로 뭉쳐버릴 순 없을까 ?!

stu_01

stu_02

stu_03

stu_04

stu_05

stu_06

stu_07 …

Page 5: C언어 세미나 - 배열

둘 이상의 변수를 동시에 선언하는 효과 여러 개의 동일한 타입의 데이터가 저장될 수 있는

데이터 저장 공간 각 공간은 각 공간에 대한 번호 ( 인덱스 ) 로

접근이 가능하다 .

배열의 개념

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

Stu[5]

Stu[6] …

‘Stu’ 배열 !

Page 6: C언어 세미나 - 배열

배열의 사용배열의 정의와 사용

Page 7: C언어 세미나 - 배열

문법 : ( 자료형 ) ( 배열 이름 )[( 배열 크기 )]; 단 , 배열에 들어가게 될 데이터는 오직 배열 선언

시 정의된 자료형만이 가능하다 .

Ex) int stu[10];

배열의 선언

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

Stu[5]

Stu[6]

Stu[7]

Stu[8]

Stu[9]

10 개의 int 형 데이터가 들어갈 수 있는 공간이 생성 !

각각은 int 형 !

Page 8: C언어 세미나 - 배열

배열의 원소에 대한 접근 ( 배열 이름 )[( 인덱스 )] 단 ! 인덱스 번호는 0 부터 시작한다 . 이는 가장

마지막 인덱스가 ( 배열 크기 - 1) 란 것이다 .

Stu[7] = 80;

‘stu’ 배열의 인덱스 7 번 (8 번째 칸 ) 에 80 이 대입 !

배열의 사용

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

Stu[5]

Stu[6]

Stu[7]

Stu[8]

Stu[9]

80

Page 9: C언어 세미나 - 배열

배열을 생성하면서 동시에 데이터를 저장하거나 , 혹은 저장할 데이터 크기에 맞게 배열을 생성 할 수도 있다 .

int stu[5] = {80, 70, 70, 80, 90};

배열의 초기화 (1)

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

배열이 생성됨과 동시에 데이터들이 대입 !

Page 10: C언어 세미나 - 배열

그렇다면 만약 초기 값의 개수가 배열 크기보다 작으면 ??

int stu[5] = {80, 70, 70};

배열의 초기화 (2)

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

0 0

나머지 배열들은 0 으로 초기화되게 된다 .

Page 11: C언어 세미나 - 배열

저장될 초기값의 개수에 따라 배열 크기를 잡을 수도 있다 .

int stu[ ] = { 80, 70, 80, 90, 100, 70, 60 };

배열의 초기화 (3)

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

Stu[5]

Stu[6]

7

Page 12: C언어 세미나 - 배열

심화 과정원소 개수 계산과 다차원 배열

Page 13: C언어 세미나 - 배열

sizeof 함수를 이용하여 배열의 크기 ( 배열의 원소 개수 ) 를 알 수 있다 .

문법 : ( 배열의 크기 ) = sizeof( 배열 ) / sizeof( 배열크기 )

=> 전체 배열 크기를 구해 각 원소 크기로 나누는 것 !

Ex) size = sizeof(stu) / sizeof(stu[0]);

배열의 원소 개수 계산

Stu[0]

Stu[1]

Stu[2]

Stu[3]

Stu[4]

sizeof(stu)

sizeof(stu[0])

Page 14: C언어 세미나 - 배열

이번 강의에서 계속 다뤄왔던 stu 배열을 생각해 보자 .

stu 배열은 강좌 학생들을 나타낸다 . 그런데 이 강좌가 여러 개 개설 되어서 여러 강좌의 성적을 다뤄야 한다 . 이 경우에 배열의 구조는 ??

다차원 배열 (1)

Stu[2][0]

Stu[2][1]

Stu[2][2]

Stu[2][3]

Stu[2][4]

Stu[2][5]

Stu[2][6]

Stu[1][0]

Stu[1][1]

Stu[1][2]

Stu[1][3]

Stu[1][4]

Stu[1][5]

Stu[1][6]

Stu[0][0]

Stu[0][1]

Stu[0][2]

Stu[0][3]

Stu[0][4]

Stu[0][5]

Stu[0][6]

Page 15: C언어 세미나 - 배열

위에서 말한 stu 배열은 2 차원 배열이다 . 위의 그림은 얼핏 보기에는 복잡해 보이지만

다음의 구조와 같은 것이다 .

다차원 배열 (2)

Stu[2][0]

Stu[2] [1]

Stu[2][2]

Stu[2][3]

Stu[2][4]

Stu[2][5]

Stu[2][6]

Stu[1][0]

Stu[1][1]

Stu[1][2]

Stu[1][3]

Stu[1][4]

Stu[1][5]

Stu[1][6]

Stu[0][0]

Stu[0][1]

Stu[0][2]

Stu[0][3]

Stu[0][4]

Stu[0][5]

Stu[0][6]stu[0]

stu[1]

stu[2]

각 배열이 내부에서 다시 나눠진다 .

Page 16: C언어 세미나 - 배열

다차원 배열의 초기화는 기본적으로 1 차원 배열의 초기화와 같다 .

다만 , 초기화 값 내부에 다시 배열 초기화 값을 서술하는 점이 다르다 .

Ex) int stu[3][7] = {{ 70, 80, 90, 80, 60, 50,

90 }{ 60, 50, 70, 40, 90, 70,

80 }{ 70, 80, 70, 80, 70, 90,

60 }};

다차원 배열 (3)

배열 초기화 값 내부에

다시 내부 배열의 초기화 값을 넣는다 !

Page 17: C언어 세미나 - 배열

과제 != Homework;

Page 18: C언어 세미나 - 배열

다음 조건을 충족하는 프로그램을 제작합니다 .◦단어 혹은 문장을 암호로 변환하는 프로그램을 제작합니다 .

◦먼저 암호화 될 문자 ( 혹은 문장 ) 를 입력 받습니다 .◦암호화 키 ( 비밀번호 ) 가 될 글자를 입력 받습니다 .◦단어 ( 혹은 문장 ) 가 변환되는 과정을 표시합니다 .◦마지막에는 완성된 암호문을 표시해줍니다 .

단 , 입력되는 평문과 암호화 키는 50 자 이내로 받도록 합니다 .

암호 변환기 제작 !

Page 19: C언어 세미나 - 배열

평문을 ‘비밀번호의 글자 수’ 만큼 뒤로 밀어줍니다 . 각 글자들을 아스키 값에 맞는 ‘ 10 진수 숫자’로

저장합니다 . 위의 과정을 통해 나온 각각의 숫자에 비밀번호 각

글자에 맞는 아스키 값을 번갈아 가며 더해줍니다 . 최종적으로 나온 숫자 집합으로 암호 변환이

완료되었습니다 !

글자 수를 세는 함수는 다음과 같습니다 .#include <string.h> // 헤더파일을 불러온 후Length = strlen(text) // 이와 같은 방법으로 사용하면 됩니다 .

암호화 과정

Page 20: C언어 세미나 - 배열

실행 결과

Page 21: C언어 세미나 - 배열

Q & A모르는 거 있으면 물어보라고요 좀 .

그래 거기 당신 , 멍 때리지 말고 .

Page 22: C언어 세미나 - 배열

수고하셨습니다 !멘붕따위 직접 하다보면 금방 날아가요 .