아주대학교

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
>
최초 생성일 2024.10.07
9,000원
AI자료를 구입 시 아래 자료도 다운로드 가능 합니다.
새로운 AI자료
생성
다운로드

상세정보

소개글

"아주대학교"에 대한 내용입니다.

목차

1. 완전한 수 만들기
1.1. 문제 분석
1.2. 바탕 지식
1.2.1. 반복문
1.2.2. 조건문
1.2.3. 배열
1.2.4. 등차수열
1.3. 순서도
1.4. 소스코드 분석
1.5. 결과화면 분석

2. 연쇄적으로 증가하는 숫자 행렬 만들기
2.1. 문제 분석
2.2. 바탕 지식
2.2.1. 분기처리문
2.2.2. 함수
2.2.3. 재귀 함수
2.3. 순서도
2.4. 소스코드 분석
2.5. 결과화면 분석

3. 감기 환자 관리 프로그램
3.1. 문제 분석
3.2. 바탕 지식
3.2.1. 함수 매개변수와 포인터에 의한 전달
3.2.2. Typedef 선언 (자료형 재정의) 과 구조체
3.2.3. 문자열 관련 함수
3.3. 순서도
3.4. 소스코드 분석
3.5. 결과화면 분석

4. 사격 점수 구하기
4.1. 문제 분석
4.2. 바탕 지식
4.2.1. 반복문
4.2.2. 조건문
4.2.3. 함수
4.3. 순서도
4.4. 소스코드 분석
4.5. 결과화면 분석

5. 유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기
5.1. 문제 분석
5.2. 바탕 지식
5.3. 순서도
5.4. 소스코드 분석
5.5. 결과화면 분석

6. LabVIEW 실습
6.1. 실험 목적
6.2. 이론
6.2.1. 컴퓨터를 이용한 계측
6.2.2. LabVIEW 기초
6.3. 실험 장치
6.4. 실험 방법
6.4.1. 난수 생성 프로그래밍
6.4.2. sine 함수와 난수 생성 프로그래밍
6.4.3. Sine 함수와 노이즈를 가진 함수
6.4.4. DAQ AO사용
6.5. 실험 결과
6.6. 고찰

7. 참고 문헌

본문내용

1. 완전한 수 만들기
1.1. 문제 분석

본 문제는 과제에서 주어진 바에 따르면, 표준입력을 통해 총 몇 개의 숫자를 입력할 것인지 제어 변수로 사용할 변수의 값을 초기화하고, 이에 따라 총 N개의 숫자를 입력한다. 이후, 입력한 숫자들이 (중복의 경우 하나로 고려한다.) 공차가 1인 등차 수열이 되도록 하기 위해선 총 몇 개의 숫자가 필요한지, 그 수를 파악하고 공차가 1인 등차 수열이 되기 위해선 어떤 숫자가 필요한지 출력하는 프로그램을 구성하는 것을 목적으로 한다. 이때 주의해야 하는 것은 입력하는 숫자의 수는 1 ~ 20 개가 되어야 하고 그 범위가 아닌 경우 재입력을 받고, -1인 경우 프로그램을 종료한다. 배열에 표준입력들을 저장한다고 했을 때, 필자가 생각하는 이 문제의 핵심은 '오름차순 재배열'이다. 특정한 규칙 없이 무질서하게 나열된 숫자들 예를 들어, 3 1 7 이라는 3개의 입력을 오름차순으로 정렬하는 경우 1 3 7이 된다. 이에, 모자란 숫자 파악이 명시적이게 된다. 예를 들어 현재 배열[0]에 초기화된 숫자 1과 배열[1]에 초기화된 숫자 3의 경우다. 둘 사이의 차에 1을 뺀 값 만큼의 숫자가 공차가 1인 등차 수열이 되기 위해 필요한 것이다. 본 예시의 경우를 종합하면 ( 3 ? 1 - 1 = 1개 ) + ( 7 ? 3 - 1 = 3개 ) 총, 4개의 숫자가 필요하다. 파악한 총 개수의 숫자만큼 For문을 통해 현재의 배열[n] +1 값을 배열[n+1] -1 값 까지 출력하는 것으로 본 문제의 목적을 달성할 수 있다. 단 본 문제의 경우 주의해야 할 점이 있다. 표준입력을 통해 초기화하는 숫자가 정수라는 점이다. 따라서 현재 논하는 배열의 값이 음의 값인지, 양의 값인지 조건문으로 경우를 나누어서 코드를 작성할 필요가 있다. 추가적 으로, 단순히 두 경우를 나눠서 작성하기만 하는 경우, 두 부호의 교차점에서 문제가 생길 수 있다. 0을 고려하 지 않았기 때문이다. 이에 필자는 이 경우를 포함하는 조건문을 구성하여 문제가 생기지 않도록 했다. 마지막으로 전역변수 사용이 금지된다. 이에 따라 Main 함수 내부에서 정의하는 지역변수만을 사용했다.


1.2. 바탕 지식
1.2.1. 반복문

반복문은 말 그대로 같거나 비슷한 일을 여러 번 하는 것이다. 즉, 반복문은 문장 혹은 함수를 반복시키는 것이라고 할 수 있다. 코드를 구성하는 데 있어 같거나 약간 다른 문장을 반복해야 하는 경우 이는 주효하다. C언어에서는 While문, do-while문, For문 세 종류의 반복구문이 존재한다. 이들은 기본적으로 반복조건 ? 반복 몸체라는 구성을 가지고 있는데, 반복 조건이란 반복 (Loop)를 시행하기 위한 조건이고, 반복 몸체는 조건을 만족했을 때 시행되는 부분을 의미한다.

While문은 위 제어흐름을 기준으로 설명하자면, 반복조건인 Cond를 평가하여 0이 아니면 (참) 반복몸체인 Stmt를 실행하고, 다시 반복조건 Cond를 평가하여 While문이 끝날 때까지 반복하는 것이다. while문의 경우 For문이나 do-while 문에 비해 비교적 간단하고 모든 반복 기능을 수행할 수 있다. 가장 보편적으로 사용하기 좋은 반복문이라고 할 수 있겠다.

do-while문의 경우, 앞서 말한 바와 마찬가지로 while문과 마찬가지로 조건을 통해 Loop를 구성한다는 점에서 같다. 그러나 반복문을 시작하기 전에 먼저 반복몸체를 1회 실행하고 그 후에 반복조건을 검사한다는 점에서 다르다. 위 제어흐름을 기준으로 설명하자면, 반복몸체인 Stmt를 먼저 실행하고 반복조건인 Cond를 평가한다. 이후 조건식이 참이면 반복, 거짓이면 종료한다. do-while 구문의 경우, 센티널 값 (Sentinal value) 검사에 강점을 갖는다. 센티널 값이란, 반복의 종료를 알리는 값으로 이를 확인하는 과정에서 강점을 갖는다는 뜻이다.

for문은 반복에 대한 제어변수의 초기화와 증감을 일정 영역에서 구성하도록 지원한다. 그 구성은 앞서 작성한 바와 같이, (초기식; 조건식; 증감식) 구조를 갖는데, 초기식에서는 초기화가, 조건식은 반복조건 검사가 이루어지고, 증감식에서는 제어변수의 증감이 발생한다. 이때, 반복 조건은 반드시 작성해야 하는데, 작성하지 않을 경우, 무한 반복 구문이 된다.

반복문에서 반복 몸체는 1개 이상의 구문으로 구성될 경우, 블록으로 구성해야 문제가 생기지 않는다. 예를 들어, 중첩된 반복문에서 break문을 사용하는 경우, 블록을 제대로 구성하지 않고, 들여쓰기가 잘 되어 있지 않다면 논리 오류가 발생할 가능성이 있다. 따라서 되도록 블록을 구성하는 편이 좋다.

마지막으로, For문과 while문의 경우 그 차이점으로 인해 서로 사용되는 상황이 다르므로 확인할 필요가 있다. For문의 경우, '반복 횟수'를 제어하는 제어변수를 사용하므로, 초기화와 증감 부분이 있는 반복문에 적합하다. 다만 이는 다소 복잡하다는 단점이 있는데, 이러한 For문과 다르게, while문은 문장 구조가 간단하여 여러 구문에 이용이 가능하다. 그 중에서도 반복 횟수가 정해지지 않고 특정 조건에 맞춰 반복을 결정하는 구문에 적합하다. 예를 들어 2개 이상의 조건이 갖춰짐에 따라 반복이 종료되는 반복문을 구성하고 싶다면 While문을 사용하는 것이 편하다는 것이다.

이처럼 반복문은 프로그래밍에 있어 매우 중요한 구성 요소이며, 상황에 따라 적절한 반복문을 선택하는 것이 중요하다.


1.2.2. 조건문

C는 기본적으로 순차적 실행을 전제로 한다. main 함수 내부의 구문들이 순차적으로 실행된다는 것이다. 하지만 순차적 실행만으로는 프로그램을 작성하기에 상당히 비효율적일 수 있다. 프로그램의 규모가 커지거나, 구성 자체에 문제가 있을 수 있기 때문이다. 따라서 선택문, 반복문 등 프로그램의 실행 순서를 제어하는 제어문을 이용하게 되는데, C에서는 조건문, 반복문, 분기 처리문 등 3가지의 제어문이 존재한다.

조건문의 경우 두 개 이상의 구문 중 하나를 선택하도록 지원하는 구문이다. C에서는 If, If else, Switch문 등 3가지의 조건문이 존재하는데, 이들은 기본적으로 조건에 따라 구문을 실행하거나 실행하지 않는다는 점에서 그 본질은 같다. 다만 세부적인 측면에서 약간의 차이가 있다.

If문은 가장 기본적인 조건문이다. 실행 조건, 즉 조건식이 참이면 문장을 수행하고 거짓이면 수행하지 않는다. 이때 조건식은 반드시 괄호로 묶어야 한다. If문의 경우 조건이 참이면 해당 문장이 실행되지만, 거짓인 경우에는 그냥 다음 문장이 실행된다. 때로는 조건이 만족되지 않은 경우에도 문장을 출력하고 싶은 상황이 있는데, 이를 위해 사용하는 것이 If else문이다.

If else문은 If문과 마찬가지로 조건에 따라 서로 다른 문장을 실행한다. 다만 If문과 달리 조건이 거짓인 경우에도 else 문장을 실행하게 된다. 즉, If 문장과 else 문장 중 하나를 선택하는 구문이다. 이때도 조건문에는 괄호가 필요하다.

조건이 많아지면 If else If 문을 사용할 수 있다. If와 else 사이에 else if를 추가하여 세부적인 실행 구조를 구성할 수 있다. 이 경우 코드가 다소 길어지는 단점이 있다. 이에 대한 대안으로 사용되는 것이 Switch문이다.

Switch문은 실행 조건, 즉 제어변수를 괄호와 함께 작성한다. 이후 종방향으로 코드를 진행하며 조건에 해당하는 case문이 있다면 이에 해당하는 문장을 실행하고, 아무 것도 일치하지 않는 경우 default에 해당하는 문장을 실행한다. 이때 case문에서 실행하고자 하는 문장이 같은 경우, case(m) : case(k) : 와 같이 작성할 수 있다. 다만 default에 함수로 정의된 switch문을 실행 문장으로 구성하는 경우, 무한 반복이 발생할 수 있다.

이처럼 C의 조건문은 기본적으로 조건에 따라 구문을 실행하거나 실행하지 않는다는 점에서 그 본질은 같지만, 세부적인 구현 방식과 용도에 있어 차이가 있다. 프로그래밍 상황에 따라 적절한 조건문을 선택하여 사용하는 것이 중요하다.


1.2.3. 배열

배열은 코드 구현에 있어 같은 형태의 자료형으로 여러 개의 변수를 사용해야 하는 경우에 사용됩니다. 배열은 변수를 하나 하나 선언할 필요 없이, 같은 자료형의 변수를 메모리에 연속적으로 할당하고, 같은 이름으로 사용할 수 있게 해줍니다. 배열을 선언할 때는 자료형, 배열의 이름, 그리고 그 크기에 대한 정보가 필요합니다. 배열의 크기는 반드시 매크로 상수나 리터럴 상수로 지정해야 하며, 이를 통해 총 '상수' 만큼의 값을 변수로서 배열에 초기화할 수 있습니다.

변수와 마찬가지로 배열도 초기화할 수 있는데, 크기 없이 초기값들만 써서 초기화하는 것도 가능합니다. 이 경우 배열의 크기는 초기값의 개수가 됩니다. 배열의 크기가 초기값 원소 수보다 크면 지정하지 않은 원소의 초기값은 모두 기본값(0)으로 초기화 됩니다. 반대로 배열의 크기가 초기값 원소 수보다 작으면 문법 오류가 발생합니다.

배열의 복사와 비교는 반드시 Index, 즉 각 번호값에 해당하는 값들 하나씩 비교하고 복사할 수 있습니다. 배열을 통째로 복사하고 비교하는 것은 불가능합니다. 인덱스는 0부터 (크기-1) 까지의 값이 됩니다.

배열은 1차원 뿐만 아니라 2차원, 3차원 배열도 존재합니다. 2차원 배열은 행렬을 생각하면 쉽습니다. 1행의 성분들, 2행의 성분들을 묶음으로 배열에 저장하는 것입니다. 3차원 배열은 이 묶음을 다시 한 번 더 묶음으로 표현한 것이라고 볼 수 있습니다.

이처럼 배열은 코드 구현에 있어 매우 유용한 자료구조로, 같은 자료형을 연속적으로 관리할 수 있어 프로그램을 보다 간결하게 작성할 수 있습니다.


1.2.4. 등차수열

등차수열이란 '차가 같은' 항들의 연속, 즉 앞 뒤 항에 대해 뺄셈을 적용했을 때 그 값이 공차 (a)로 일정한 수의 나열이다. 예를 들어 1, 3, 5, 7, 9의 수열은 공차가 2인 등차수열이다. 이는 각 항의 차이가 2로 일정하기 때문이다.

등차수열의 구성에서 가장 중요한 점은 공차가 일정하다는 것이다. 이를 통해 해당 수열의 다음 항을 예측할 수 있으며, 임의의 항을 구할 수도 있다. 등차수열에서는 각 항이 일정한 차이를 가지고 있으므로, n번째 항의 값은 첫 번째 항의 값과 공차, 그리고 항 번호만 알면 구할 수 있다.

등차수열의 일반항 공식은 다음과 같다:
a_n = a_1 + (n-1)d

여기서 a_n은 n번째 항의 값, a_1은 첫 번째 항의 값, d는 공차를 의미한다. 이를 통해 등차수열의 임의의 항을 구할 수 있다.

등차수열의 합 공식 또한 일반화할 수 있다. 등차수열 a_1, a_2, ..., a_n의 합 S_n은 다음과 같이 계산할 수 있다:
S_n = n/2 * (a_1 + a_n)

여기서 n은 항의 개수를 의미한다. 이를 통해 등차수열의 합을 손쉽게 구할 수 있다.

등차수열은 수학 및 공학 분야에서 널리 활용된다. 특히 등차수열은 비율 및 증가율 계산, 수열의 일반화, 그리고 다양한 공식 유도에 사용된다. 따라서 등차수열의 개념을 정확히 이해하는 것은 매우 중요하다고 할 수 있다.


1.3. 순서도

'1.3. 순서도'는 완전한 수를 만드는 프로그램의 전체적인 흐름을 보여준다"이다. 이 순서도는 크게 세 부분으로 나뉘어져 있다.

첫째, 표준 입력을 받는 부분이다. 사용자로부터 몇 개의 숫자를 입력받을지에 대한 정보를 얻는 과정이다. 이때 입력된 개수가 1에서 20 사이의 값인지 체크하고, -1이 입력되면 프로그램을 종료한다.

둘째, 입력받은 숫자들을 오름차순으로 정렬하는 부분이다. 이를 통해 앞뒤 숫자 간의 공차를 파악할 수 있게 된다.

셋째, 오름차순으로 정렬된 숫자들 간의 공차가 1이 되도록 추가로 필요한 숫자를 출력하는 부분이다. 이때 숫자의 부호(양수/음수)에 따라 다른 방식으로 처리한다.

이와 같이 '1.3. 순서도'는 입력 받기, 정렬하기, 출력하기의 세 단계로 구성되어 있어 전체 프로그램의 흐름을 잘 보여주고 있다"고 할 수 있다.


1.4. 소스코드 분석

'소스코드 분석'은 다음과 같다.

먼저, 전역변수로 사용할 Double형 배열 perfect와 check를 각각 크기 20, 100으로 선언하고 모든 값을 0으로 초기화한다. 이어서 무한 반복 while문을 구성하여 표준입력으로 g 값을 입력받는다. 입력받은 g가 20보다 크거나 0보다 작은 경우 재입력을 요구하고, g가 -1인 경우 main 함수를 종료한다.

이후 제어변수와 필요한 숫자의 개수 파악에 사용할 변수들을 선언하고, 표준입력으로 g개의 숫자를 perfect 배열에 초기화한다. 그리고 이중 for문을 구성하여 perfect 배열의 값들을 오름차순으로 재배열한다.

다음으로 필요한 숫자의 개수를 파악하기 위해 sum과 difference 변수를 선언하고 초기화한다. 오름차순으로 정렬된 perfect 배열을 순회하며, 배열 값 사이의 차이가 1이 아닌 경우 그 차이에서 1을 뺀 값을 sum에 누적한다. 이때 배열 값이 음수인 경우와 0인 경우, 양수인 경우를 각각 다른 조건문으로 구분하여 처리한다.

마지막으로 for문을 이용해 perfect 배열의 값들을 순회하며, 필요한 숫자를 출력한다. 배열 값이 음수인 경우 while문을 통해 p값을 1씩 증가시키며 p값을 출력하고, 배열 값이 양수인 경우 p값이 이어지는 배열 값보다 작은 동안 p값을 출력한다. 이 과정을 통해 공차가 1인 등차수열을 완성한다.

이상의 과정을 통해 완전한 수를 만드는 프로그램의 소스코드 분석을 수행하였다.


1.5. 결과화면 분석

'1.5. 결과화면 분석'

제공된 예시에 따르면 총 5가지 경우의 결과화면을 분석할 수 있다.

첫 번째는 정방행렬의 경우다. 어차피 For문에서 반복 조건을 올림해서 사용하므로 행이 더 큰 경우와 같게 볼 수 있다. 먼저 1로 초기화되어있던 Flag값(이후 count)으로 사용하는 Count 변수가 출력된다. 이후 Count는 -1이 곱해져 -1로 초기화된다. 세부 반복문에 의해 (1,1)부터 (1,5)까지의 성분이 input 변수를 1씩 증가시키면서 대입하여 채워진다. 이어지는 세부 반복문으로 교차점을 제외한 (2,5)부터 (5,5...


참고 자료

윤성우, 『윤성우의 열혈 C 프로그래밍』, 제 1판, 8쇄, 2013
강환수 외 2인 공저 『Perfect C』, 제 1판, 2016
문호석 외 1인 공저 『C로 시작하는 컴퓨터 프로그래밍』, 제 1판, 2017

김동권, 기계공학실험, 한티미디어 , 2016

주의사항

저작권 EasyAI로 생성된 자료입니다.
EasyAI 자료는 참고 자료로 활용하시고, 추가 검증을 권장 드립니다. 결과물 사용에 대한 책임은 사용자에게 있습니다.
AI자료의 경우 별도의 저작권이 없으므로 구매하신 회원님에게도 저작권이 없습니다.
다른 해피캠퍼스 판매 자료와 마찬가지로 개인적 용도로만 이용해 주셔야 하며, 수정 후 재판매 하시는 등의 상업적인 용도로는 활용 불가합니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우