정보통신 - 문제해결과 프로그래밍

1. 문제의 이해와 분석

  • 문제의 이해
    (1) 문제: 생활 속에서 발생하는 해결해야 할 과제 또는 상황
    (2) 문제 이해: 문제를 해결하기 위해 문제가 발생한 상황이나 해결하려는 것이 무엇인지 분석하는 과정

     

  • 문제의 분석
    (1) 문제 분석: 문제를 해결하기 위해 문제에서 요구하는 것이 무엇인지 분석하는 과정
    (2) 문제 분석 요소
      ① 현재 상태: 문제가 발생한 최초의 상태, 주어진 자료와 조건, 준비 등을 이해
      ② 목표 상태: 문제가 바람직하게 해결되어야 할 상태로 해결하거나 구하고자 하는 것이 무엇인지를 이해하고, 해결 방법을 선택한 후 실행할 수 있는 상태

     

  • 문제의 표현
    (1) 문제를 이해하고 분석한 뒤 다양한 방법으로 표현해 보는 것도 문제 해결에 도움이 됨.
    (2) 문제를 표현하는 다양한 방법
      ① 말과 글로 표현
      ② 표로 나타내기
      ③ 그림이나 그래프로 나타내기

2. 문제의 핵심 요소 추출

  • 핵심 요소 추출
    (1) 핵심 요소 추출: 문제 해결에 중요하고 필요한 부분만을 추출하여 문제의 핵심이 드러나게 하는 것
    (2) 추상화: 문제를 해결하기 위해 문제를 작은 단위로 쪼개고, 이 중에서 문제 해결을 위해 필요한 핵심 요소를 선택하는 과정
    (3) 추상화를 통해 문제는 간결해지고 이해하기도 쉽고, 문제 사례에 적용할 수 있는 규칙을 발견할 수도 있음.
    (4) 문제 상황에서 제시된 조건과 정보를 자세히 관찰하고, 각 요소들 사이의 관계를 파악하면 문제 해결에 필요한 요소와 불필요한 요소를 분리할 수 있다.
    (5) 추상화의 분류
      ① 상태의 추상화(자료 추상화): 문제의 자료를 추상화하는 것으로 각 대상의 핵심적인 특성이나 속성을 추출
      ② 동작의 추상화(기능 추상화): 자료를 바탕으로 변화하는 과정 또는 기능의 핵심을 추출

3. ​알고리즘의 이해

  • 알고리즘
    (1) 알고리즘: 문제 해결을 위해 일련의 규칙에 따라 논리적인 순서로 설명하고 표현하는 방법 또는 절차 

     

  • 알고리즘 성립 조건
    (1) 알고리즘은 입력과 출력, 명확성과 수행 가능성, 유한성의 조건이 필요
    (2) 성립 조건
      ① 입력: 알고리즘은 문제 해결에 필요한 자료를 외부로부터 받아들일 수 있어야 함.
      ② 출력: 알고리즘은 문제 해결 절차에 따른 하나 이상의 결과를 출력해야 함.
      ③ 명확성: 알고리즘에서 각 단계의 명령은 모호하지 않고 명확해야 한다.
      ④ 유한성: 해당 알고리즘을 명령대로 수행하면 정해진 단계를 거쳐서 반드시 종료되어야 한다.
      ⑤ 수행 가능성: 알고리즘은 각 단계가 반드시 실행 가능한 것이어야 한다.
     

  • 알고리즘의 중요성
    (1) 알고리즘은 문제 해결 방법에 따라 비용, 시간, 결과 등이 다르므로 문제에 대해 논리적이고 정확한 알고리즘을 찾는 것이 중요함.

4. ​알고리즘의 표현

  • 문제 해결 방법의 탐색
    (1) 문제를 해결하는 방법은 상황과 조건에 따라 다양할 수 있다.
    (2) 다양한 문제 해결 방법
      ① 시행착오법: 한 가지 해결책을 시도해 보고 해결되지 않으면 차례로 다른 방법을 시도하는 방법
      ② 규칙 찾아내기: 문제의 조건을 충분히 분석하고 재조직하여 문제의 규칙이나 원리 관계성 등을 발견하여 문제를 해결하는 방법
      ③ 나누어 풀기: 작은 문제로 나눈 후 각각의 문제를 해결해 가면서 큰 문제를 해결하는 방법
      ④ 되추적 방법: 문제 해결의 진행이 불가능할 경우 이전에 수행했던 해결 방법으로 돌아가 다른 해결 방법을 찾는 방법

     

  • 알고리즘의 표현
    (1) 알고리즘은 글, 그림 등 다양한 방법으로 표현할 수 있음.
    (2) 순서도: 미리 약속된 기호를 사용하여 순서대로 알고리즘을 표현한 것

5. 프로그래밍의 이해

  • 프로그래밍
    (1) 프로그램: 컴퓨터가 이해할 수 있는 언어로 만들어진 명령어들의 집합
    (2) 프로그래밍: 문제 해결을 위해 명령어를 작성하는 과정
    (3) 컴퓨팅 기기를 이용한 문제 해결 과정
      ① 문제 발견(사람): 일상생활 등에서 문제를 발견하는 과정
      ② 문제 분석(사람): 발견한 문제를 분석하여 해결 가능한 작은 단위로 나누고 추상화하는 과정
      ③ 알고리즘 설계(사람): 분석한 문제 중 기능을 추상화한 결과는 알고리즘이 되며, 자료를 추상화한 결과는 프로그램에 사용되는 변수 등이 됨. 프로그램의 전반적인 작동 과정을 설계하는 과정
      ④ 실행(사람 → 컴퓨터 → 컴퓨터): 설계된 알고리즘을 토대로 컴퓨팅 기기가 이해할 수 있는 명령어로 프로그램을 작성하고 컴퓨팅 기기가 이를 처리하고 실행하여 프로그램을 통해 문제를 해결하는 과정
      ⑤ 결과 분석: 실행되는 결과를 분석하여 오류를 수정하거나 이를 통해 문제를 해결하는 과정

     

  • 프로그래밍 언어
    (1) 사람과 컴퓨팅 시스템이 모두 읽을 수 있는 형식으로 표현되어야 하며 언어의 모호함과 논리적 모호함이 없도록 구성되어야 함.
    (2) 프로그래밍 언어의 예: 엔트리, 스크래치, C 언어, 자바, 파이선 등

6. 입력과 출력

(1) 프로그램을 이용한 문제 해결 과정: 입력 → 처리 → 출력

(2) 입력: 처리해야 할 자료들을 외부 장치로 입력하는 것

  ① 키보드 문자 입력

  ② 마우스 클릭을 통한 입력

  ③ 마이크를 통한 소리 입력

  ④ 카메라를 통한 그림과 동영상 입력

  ⑤ 센서로 물체의 동작을 입력

(3) 출력: 입력 자료를 처리한 결과를 외부 장치로 보내는 것

  ① 모니터에 문자, 그림, 영상 출력

  ② 스피커나 이어폰을 통해 소리 출력

  ③ 프린터에서 문서를 출력

  ④ 물체가 명령에 따라 움직임

(4) 프로그램의 출력은 주로 모니터, 스피커, 혹은 하드웨어의 동작으로 출력 형태를 확인할 수 있다.

(5) 자료의 입력과 결과의 출력은 명확해야 함.

(6) 엔트리 입력 관련 블록의 예

noname01.png

7. 변수와 연산

(1) 변수: 프로그램이 실행되는 동안 자료를 처리하거나 저장하는데 사용되는 기억 장소

(2) 변수의 특징

  ① 변수에는 다양한 형태의 값을 지정할 수 있음.

  ② 변숫값은 프로그램이 실행되는 동안 계속해서 변할 수 있음.

  ③ 각 변수에는 이름을 붙일 수 있음.

  ④ 변수에 저장된 값을 이용하여 계산을 하거나 문자열끼리 묶을 수 있음.

(3) 변수와 초깃값: 초깃값은 프로그램이 시작될 때 처음 저장되는 값으로, 초깃값을 지정해 주면 프로그램이 계속 실행될 때 생길 수 있는 계산 오류를 막을 수 있음.

(4) 연산: 정해진 규칙에 따라 계산하는 것

(5) 연산의 종류

  ① 산술 연산: 숫자를 이용한 덧셈, 뺄셈, 곱셈, 나눗셈

  ② 비교 연산: 숫자나 변수 등의 요소를 서로 비교할 때 사용되며 참과 거짓으로 결과를 표현

  ③ 논리 연산: 여러 조건을 조합하여 복잡한 조건을 나타낼 때 사용되며 참과 거짓으로 결과를 표현

8. 제어구조

(1) 제어 구조: 프로그램이 실행 순서를 지시하는 데 사용하는 구조

(2) 제어 구조는 프로그램의 실행 순서에 다양한 변화를 줄 수 잇어 문제 해결 알고리즘의 중요한 요소로 활용됨.

(3) 제어 구조를 잘못 사용할 경우 프로그램 전체에 영향을 미칠 수 있기 때문에 제어 구조를 바르게 이해하고 용도에 맞게 사용해야 함.

(4) 제어 구조의 종류

  ① 순차 구조: 자료의 입력과 출력까지 명령의 순서에 따라 실행하는 구조. 프로그램의 기본적인 실행 방식

  ② 선택 구조: 주어진 조건에 따라 실행하는 내용이 서로 다른 구조. 다양한 연산자를 사용한 조건식을 제시할 수 있음.

  ③ 반복 구조: 주어진 조건을 만족하는 동안 일정 부분을 반복하여 실행. 같은 작업을 여러 번 수행해야 할 때 소스 코드를 간결하게 만들 수 있음.

noname01.png
noname02.png
noname03.png

​문제의 핵심요소 추출

추상화

이순신장군의 한산도 대첩

학익진.png

알고리즘 성립 조건

입력.png
출력.png
유한성.png
명확성.png
수행가능성.png
수행가능성
명확성

문제해결
방법의 탐색

문제해결방법.png

시행착오법

엘리스의 시행착오

규칙 찾아내기

주차구역의 규칙 찾아내기

나누어 풀기

카드정리 나누어풀기

되추적 방법

미로찾기 되추적방법
순서도.png

알고리즘 표현

알고리즘표현.png
이미지 10.png
이미지 11.png
이미지 13.png
이미지 14.png
noname03.png

​버스야 기다려

​초기상태

제어_초기상태.png

목표상태

제어_목표상태.png
제어_초기설정.png
제어_시작하기.png
제어_버스출발.png
제어_버스도착.png
제어_주인공출발.png

알람시계

​초기상태

알람시계_초기상태.png

목표상태

알람시계_목표상태.png