View
47
Download
0
Category
Preview:
Citation preview
C 언어 세미나- 배열 -
DDOLGI 15 기 이승현
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
배열이란 ?배열의 필요성과 개념
어떤 강의를 듣는 학생의 점수 평균을 내는 프로그램을 작성하려고 한다 .
변수 = 학생의 수 . 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 …
둘 이상의 변수를 동시에 선언하는 효과 여러 개의 동일한 타입의 데이터가 저장될 수 있는
데이터 저장 공간 각 공간은 각 공간에 대한 번호 ( 인덱스 ) 로
접근이 가능하다 .
배열의 개념
Stu[0]
Stu[1]
Stu[2]
Stu[3]
Stu[4]
Stu[5]
Stu[6] …
‘Stu’ 배열 !
배열의 사용배열의 정의와 사용
문법 : ( 자료형 ) ( 배열 이름 )[( 배열 크기 )]; 단 , 배열에 들어가게 될 데이터는 오직 배열 선언
시 정의된 자료형만이 가능하다 .
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 형 !
배열의 원소에 대한 접근 ( 배열 이름 )[( 인덱스 )] 단 ! 인덱스 번호는 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
배열을 생성하면서 동시에 데이터를 저장하거나 , 혹은 저장할 데이터 크기에 맞게 배열을 생성 할 수도 있다 .
int stu[5] = {80, 70, 70, 80, 90};
배열의 초기화 (1)
Stu[0]
Stu[1]
Stu[2]
Stu[3]
Stu[4]
배열이 생성됨과 동시에 데이터들이 대입 !
그렇다면 만약 초기 값의 개수가 배열 크기보다 작으면 ??
int stu[5] = {80, 70, 70};
배열의 초기화 (2)
Stu[0]
Stu[1]
Stu[2]
Stu[3]
Stu[4]
0 0
나머지 배열들은 0 으로 초기화되게 된다 .
저장될 초기값의 개수에 따라 배열 크기를 잡을 수도 있다 .
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
심화 과정원소 개수 계산과 다차원 배열
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])
이번 강의에서 계속 다뤄왔던 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]
위에서 말한 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]
각 배열이 내부에서 다시 나눠진다 .
다차원 배열의 초기화는 기본적으로 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)
배열 초기화 값 내부에
다시 내부 배열의 초기화 값을 넣는다 !
과제 != Homework;
다음 조건을 충족하는 프로그램을 제작합니다 .◦단어 혹은 문장을 암호로 변환하는 프로그램을 제작합니다 .
◦먼저 암호화 될 문자 ( 혹은 문장 ) 를 입력 받습니다 .◦암호화 키 ( 비밀번호 ) 가 될 글자를 입력 받습니다 .◦단어 ( 혹은 문장 ) 가 변환되는 과정을 표시합니다 .◦마지막에는 완성된 암호문을 표시해줍니다 .
단 , 입력되는 평문과 암호화 키는 50 자 이내로 받도록 합니다 .
암호 변환기 제작 !
평문을 ‘비밀번호의 글자 수’ 만큼 뒤로 밀어줍니다 . 각 글자들을 아스키 값에 맞는 ‘ 10 진수 숫자’로
저장합니다 . 위의 과정을 통해 나온 각각의 숫자에 비밀번호 각
글자에 맞는 아스키 값을 번갈아 가며 더해줍니다 . 최종적으로 나온 숫자 집합으로 암호 변환이
완료되었습니다 !
글자 수를 세는 함수는 다음과 같습니다 .#include <string.h> // 헤더파일을 불러온 후Length = strlen(text) // 이와 같은 방법으로 사용하면 됩니다 .
암호화 과정
실행 결과
Q & A모르는 거 있으면 물어보라고요 좀 .
그래 거기 당신 , 멍 때리지 말고 .
수고하셨습니다 !멘붕따위 직접 하다보면 금방 날아가요 .
Recommended