- 배열 -
DDOLGI 15기 이승현
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
1. 배열이란?
2. 배열의 사용
3. 심화과정
4. 과제!
5. Q&A
stu_01
stu_02
stu_03
stu_04
stu_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};
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
배열이 생성됨과 동시에 데이터들이 대입!
 그렇다면 만약 초기 값의 개수가 배열 크기보다 작으면??
 int stu[5] = {80, 70, 70};
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
0 0
나머지 배열들은 0으로 초기화되게 된다.
 저장될 초기값의 개수에 따라 배열 크기를 잡을 수도 있다.
 int stu[ ] = { 80, 70, 80, 90, 100, 70, 60 };
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 배열은 강좌 학생들을 나타낸다. 그런데 이 강좌가 여러 개 개설 되어서
여러 강좌의 성적을 다뤄야 한다. 이 경우에 배열의 구조는??
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차원 배열이다.
 위의 그림은 얼핏 보기에는 복잡해 보이지만 다음의 구조와 같은 것이다.
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 }
};
배열 초기화 값 내부에
다시 내부 배열의 초기화 값을 넣는다!
= Homework;
 다음 조건을 충족하는 프로그램을 제작합니다.
◦ 단어 혹은 문장을 암호로 변환하는 프로그램을 제작합니다.
◦ 먼저 암호화 될 문자(혹은 문장)를 입력 받습니다.
◦ 암호화 키(비밀번호)가 될 글자를 입력 받습니다.
◦ 단어(혹은 문장)가 변환되는 과정을 표시합니다.
◦ 마지막에는 완성된 암호문을 표시해줍니다.
 단, 입력되는 평문과 암호화 키는 50자 이내로 받도록 합니다.
 평문을 ‘비밀번호의 글자 수’ 만큼 뒤로 밀어줍니다.
 각 글자들을 아스키 값에 맞는 ‘10진수 숫자’로 저장합니다.
 위의 과정을 통해 나온 각각의 숫자에 비밀번호 각 글자에 맞는 아스키
값을 번갈아 가며 더해줍니다.
 최종적으로 나온 숫자 집합으로 암호 변환이 완료되었습니다!
 글자 수를 세는 함수는 다음과 같습니다.
#include <string.h> // 헤더파일을 불러온 후
Length = strlen(text) // 이와 같은 방법으로 사용하면 됩니다.
모르는 거 있으면 물어보라고요 좀.
그래 거기 당신, 멍 때리지 말고.
멘붕따위 직접 하다보면 금방 날아가요.

C언어 세미나 - 배열

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