프로그래밍 개요 윤진민(jinmin43@mail.boystown.hs.kr)
알고리즘이란? 어떤 문제를 해결하는 논리적인 절차 입, 출력 설계에서 작성된 데이터 형식과 구조를 이용해서 처리하는 절차 컴퓨터에 의해 주어진 문제를 해결하기 위한 명령어들의 모임 명백성, 유한성, 효율성, 입력, 출력 등 5가지 특징
알고리즘의 표현방법 프로그래밍 언어로 표현 순서도로 작성 NS 차트로 작성 슈더코드로 작성
순서도의 역할 처리절차를 이해하기 쉬울뿐만 아니라 코딩의 기본이 된다. 여러 명이 공동으로 작성할 때 대화의 수단으로 이용 프로그래밍 언어에 관계없이 공통적으로 사용 오류검색이 쉽고, 수정이 용이
직선형 순서도 세 수를 입력하여 합과 평균을 구하는 순서도 작성 1.세 수 A, B, C를 입력한다. 시작 세 수를 입력하여 합과 평균을 구하는 순서도 작성 INPUT A, B, C 1.세 수 A, B, C를 입력한다. 2.합(S = A + B +C)을 계산한다. 3.평균(T = S / 3)을 계산 4.합(S)과 평균(T)을 출력 5.실행의 종료 S = A + B + C T = S / 3 S, T 끝
분기형 순서도 서로 다른 두 수를 입력하여 두 수중 큰수를 구하는 순서도 작성 1.두 수 A, B를 입력한다. 시작 서로 다른 두 수를 입력하여 두 수중 큰수를 구하는 순서도 작성 INPUT A, B 큰수는 M에 기억 1.두 수 A, B를 입력한다. 2.만약 A>B이면 A를 큰수(M=A)로 하 고, 아니면 B를 큰수(M=B)로 한다. 3.큰수(M)를 출력 6.종료한다 아니오 A > B M = A M = B 예 M 끝
합을 구하는 알고리즘 S = 1 – 2 + 3 – 4 + … + 99 – 100 의 합을 구하는 순서도 작성 시작 S = 1 – 2 + 3 – 4 + … + 99 – 100 의 합을 구하는 순서도 작성 i=0, S=0, SW=0 i = i + 1 1.항(i)과 합(S), 스위치(SW)를 초기화 2.항의 값을 계산한다(i = i + 1) 3.SW=0이면 합하고, SW=1로 값을 변경 SW=0아니면 빼고, SW=0으로 변경 4.만약 i<100이면 2로 간다. 5.합(S)를 출력 6.종료한다 아니오 SW = 0 예 S = S + i S = S - i SW = 1 SW = 0 i < 100 아니오 S 끝
합을 구하는 알고리즘 S = 1! + 2! + 3! + 4! + … + 10! 합을 구하는 순서도 작성 곱셈이라 초기값 1 시작 S = 1! + 2! + 3! + 4! + … + 10! 합을 구하는 순서도 작성 i=0, S=0, K=1 1.항(I)과 합(S), 계승(K)를 초기화 2.항의 값을 계산한다(I = I + 1) 3.계승을 계산(K*I)하고, 이를 누적 (S = S+K*I)한다. 4.만약 I<10이면 2.로 간다. 5.합(S)를 출력 6.종료한다 i = i + 1 S = S + K * i 예 i < 100 아니오 S 끝
실습문제 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 문제 3. 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
실습3의 정답 start ➀ 5행 5열의 2차원 배열 A를 선언 배열에 저장될 숫자 K는 1씩 누적되어 증가하는 변수이므로 0으로 초기화 바깥쪽 반복문은 행을 지정. 행은 1에서 5까지 변하므로 행을 나타내는 반복변수 I가 1에서 5가 될 때까지 1씩 증가하면서 ④ 번을 반복 안쪽 반복문은 열을 지정. 열은 1에서 그 때의 행번호(i) 까지 변하므로, 열을 나타내는 반복변수 J가 1에서 i가 될 때까지 1씩 증가 K를 1에서 25까지 증가시키기 위해 1을 더한다. A 배열의 i행 J열(A(i, J)에 K를 저장 배열에 저장된 내용을 출력 A(5, 5) ➀ ② K = 0 ② ③ 반복 i = 1, 5, 1 ③ J = 1, 5, 1 반복 ④ ④ K = K + 1 ⑤ A(i, J) = K ⑥ ⑤ ⑥ ⑦ A ⑦ STOP
실습문제 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 문제 4. 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
실습4의 정답 start ➀ 5행 5열의 2차원 배열 A를 선언 배열에 저장될 숫자 K는 1씩 누적되어 증가하는 변수이므로 0으로 초기화 바깥쪽 반복문은 행을 지정. 행을 나타내는 반복변수 I가 1에서 5가 될 때까지 1씩 증가하면서 ④번을 반복 안쪽 반복문은 열을 지정. 열은 1에서 그 때의 행번호(i) 까지 변하므로, 열을 나타내는 반복변수 J가 1에서 i가 될 때까지 1씩 증가 K를 1에서 15까지 증가시키기 위해 1을 더한다. A 배열의 i행 J열(A(i, J)에 K를 저장 배열에 저장된 내용을 출력 A(5, 5) ➀ ② K = 0 ② ③ 반복 i = 1, 5, 1 ③ J = 1, i, 1 반복 ④ ④ K = K + 1 ⑤ ⑤ A(i, J) = K ⑥ ⑥ ⑦ A ⑦ STOP
실습문제 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 문제 5. 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
실습5의 정답 start ➀ 5행 5열의 2차원 배열 A를 선언 배열에 저장될 숫자 K는 1씩 누적되어 증가하는 변수이므로 0으로 초기화 바깥쪽 반복문은 행을 지정. 행을 나타내는 반복변수 I가 1에서 5가 될 때까지 1씩 증가하면서 ④번을 반복 안쪽 반복문은 열을 지정. 열은 6-i에서 5까지 변하므로, 열을 나타내는 반복변수 J가 6-i에서 5가 될 때까지 1씩 증가하면서 ⑤~⑥을 반복하여 수행 K를 1에서 15까지 증가시키기 위해 1을 더한다. A 배열의 i행 J열(A(i, J)에 K를 저장 배열에 저장된 내용을 출력 A(5, 5) ➀ ② K = 0 ② ③ 반복 i = 1, 5, 1 ③ 반복 J = 6-i, 5, 1 ④ ④ K = K + 1 ⑤ ⑤ A(i, J) = K ⑥ ⑥ ⑦ A ⑦ STOP
실습문제 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 6 11 16 21 2 7 12 17 22 3 8 13 문제 6. 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25
실습6의 정답 start ➀ 5행 5열의 2차원 배열 A를 선언 배열에 저장될 숫자 K는 1씩 누적되어 증가하는 변수이므로 0으로 초기화 바깥쪽 반복문은 열을 지정. 열은 1에서 5까지 변하므로 열을 나타내는 반복변수 i가 1에서 5가 될 때까지 1씩 증가하면서 ④번을 반복 수행 안쪽 반복문은 행을 지정. 행은 1에서 5까지 변하므로, 행을 나타내는 반복변수 J가 1에서 5가 될 때까지 1씩 증가하면서 ⑤~⑥을 반복하여 수행 K를 1에서 25까지 증가시키기 위해 1을 더한다. A 배열의 i행 J열(A(i, J)에 K를 저장 배열에 저장된 내용을 출력 A(5, 5) ➀ ② K = 0 ② ③ 반복 i = 1, 5, 1 ③ 반복 J = 1, 5, 1 ④ ④ K = K + 1 ⑤ A(J, i) = K ⑥ ⑤ ⑥ A ⑦ ⑦ STOP
실습문제 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 3 2 6 5 4 10 9 8 7 15 14 13 12 문제 7. 5행 5열의 배열에 다음과 같이 기억시키는 순서도 작성 1 3 2 6 5 4 10 9 8 7 15 14 13 12 11
실습7의 정답 start ➀ 5행 5열의 2차원 배열 A를 선언 배열에 저장될 숫자 K는 1씩 누적되어 증가하는 변수이므로 0으로 초기화 바깥쪽 반복문은 행을 지정. 행은 1에서 5까지 변하므로 행을 나타내는 반복변수 i가 1에서 5가 될 때까지 1씩 증가하면서 ④번을 반복 수행 안쪽 반복문은 열을 지정. 열은 i에서 1까지 변하므로, 열을 나타내는 반복변수 J가 i에서 1이 될 때까지 -1씩 증가하면서 ⑤~⑥을 반복하여 수행 K를 1에서 15까지 증가시키기 위해 1을 더한다. A 배열의 i행 J열(A(i, J)에 K를 저장 배열에 저장된 내용을 출력 A(5, 5) ➀ ② K = 0 ② ③ 반복 i = 1, 5, 1 ③ 반복 J = i, 1, -1 ④ ④ K = K + 1 ⑤ A(i, J) = K ⑥ ⑤ ⑥ A ⑦ ⑦ STOP