00 개요
- 목표: Visual Studio라는 IDE를 사용하여 C 알고리즘 구현하기
01 Visual Studio 사용하여 프로그램 만들기
1. 솔루션 탐색기 보기
- '보기' > '솔루션 탐색기' 클릭
2. 새 프로젝트 만들기
- Visual Studio 연 후 '새 프로젝트 만들기' 클릭 또는 '파일' > '새로 만들기' > '프로젝트' > '빈 프로젝트'
- 프로젝트 이름: 원하는 거로 지정
- 위치: 원하는 위치 지정
- 솔루션: 새 솔루션 만들기
- 솔루션 이름: 원하는 거로 지정
- > '만들기'
3. c 파일 또는 c++ (소스 파일) 생성
- Visual Studio 연 후 어느 프로젝트 안에서 시작
- 솔루션 탐색기에 어느 '프로젝트명' > '소스파일' 우클릭 > '추가' > '새 항목' > 'C ++ 파일' 한 번 클릭 > '파일명.c' 또는 '파일명.cpp' > '추가'
- 파일명 확장자를 .c로 줄 경우 C 언어 파일, .cpp로 줄 경우 C++ 언어 파일이 생성됨
4. 간단한 출력 프로그램 생성
- 해당 .c 또는 .cpp 파일에 코드 작성
1) C 언어
- 가장 기본적인 C 언어 출력 프로그램:
#include <stdio.h>
main()
{
printf("안녕하세요. C언어");
}
- C 언어의 다른 표현:
#include <stdio.h>
int main(void)
{
printf("Hello C언어");
return 0;
}
2) C ++ 언어
- 가장 기본적인 C 언어 출력 프로그램:
#include <iostream>
int main()
{
std::cout << "Hello C++\n";
return 0;
}
- C 언어의 다른 표현:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello C++" << endl;
return 0;
}
5. 코드 파일 실행하기
1) 디버그하지 않고 실행
- '디버그' > '디버그하지 않고 시작' 클릭
- 해당 .c 파일이 컴파일돼서 콘솔에서 실행이
2) 디버거 기능 사용하여 단계별로 실행
- 중단점 설정/해제하기
- 해당 줄 선택 후
- 방법1: F9 누르기
- 방법2: 왼쪽에 채워진 동그라미 클릭하면 빨간색 동그라미고 변환됨 → 중단점 설정 됐다는 표시
- 방법3: '디버그' > '중단점 설정/해제하기' 클릭
- 디버깅 시작하기
- '디버그' > '디버깅 시작'
- 디버거 창이 뜬 것 확인 → 하단에 '자동', '로컬', '조사식 1'이 뜬 것 확인
- 단계별 / 프로시저 단위별로 실행하기
- '디버그' > '한 단계씩 코드 실행' (F11) 또는 '프로시저 단위 실행' (F10)
- 조사식 추가하여 값 확인하기
- 하단에 '조사식 1' > '감시할 항목 추가' 더블 클릭 > 확인하고 싶은 식 copy & paste 하기
- 파일 안에서 해당 식 위에 커서를 올려놨을 때 값 확인 가능
03 초급 알고리즘
1. Sum 합계
//[?] n명의 국어 점수 중에서 80점 이상인 점수의 합계
#include <stdio.h>
// 합계 알고리즘 (Sum Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 합계
main()
{
//[0] Initialize
int sum = 0; // 합계
//[1] Input: 입력: n명의 국어 점수
int scores[6] = { 100, 75, 50, 37, 90, 95 };
int N = sizeof(scores) / sizeof(int); // 의사코드(슈도코드)
//[2] Process: 처리: 합계 알고리즘 영역: 주어진 범위에 주어진 조건 (필터링)
for (int i = 0; i < N; i++)
{
if (scores[i] >= 80)
{
sum += scores[i]; // SUM
}
}
//[3] Output: 출력
printf("%d명의 점수 중 80점 이상의 총점: %d\n", N, sum);
}
2. Arithmetic Sequence 등차수열 알고리즘
//[?] 1부터 20까지의 정수 중 홀수의 합을 구하는 프로그램
// 1, 3, 5, 7, 9 ...
#include <stdio.h>
// 등차수열(Arithmetic Sequence): 연속하는 두 수의 차이가 일정한 수열
main()
{
//[1] Input
int sum = 0; // SUM
//[2] Process
for (int i = 1; i <= 20; i++) // 주어진 범위
{
if (i % 2 != 0) // 주어진 조건: 필터링(홀수)
{
sum += i; // SUM
printf("%d", i); // SEQUENCE
}
}
//[3] Output
printf("\n1부터 20까지의 홀수의 합: %d\n", sum); // 100
}
3. Count 개수 알고리즘
//[?] 1부터 1,000까지의 정수 중 13의 배수의 개수(건수/횟수) 구하기
#include <stdio.h>
/*
개수 알고리즘 (Count Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 개수
*/
main()
{
//[1] Input: 1부터 1,000까지의 데이터
int count = 0; // 개수를 저장할 변수는 0으로 초기화
//[2] Process: 개수 알고리즘 영역: 주어진 범위에 주어진 조건(필터링)
for (int i = 1; i <= 1000; i++)
{
if (i % 13 == 0)
{
//count = count + 1;
//count += 1;
count++;
}
}
//[3] Output
printf("1부터 1,000까지의 정수 중 13의 배수의 개수: %d\n", count);
}
4. Average 평균 알고리즘
//[?]n명의 점수 중 80점 이상 95점 이하인 점수의 평균 구하기
#include <stdio.h>
// 평균 알고리즘 (Average Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 평균
main()
{
//[1] Input: n명의 성적
int data[5] = { 90, 65, 78, 50, 95 };
int sum = 0; // 합계 담는 그릇
int count = 0; // 개수 담는 그릇
int N = sizeof(data) / sizeof(int); // 의사코드(슈도코드)
//[2] Process: AVG = SUM / COUNT
for (int i = 0; i < N; i++) // 주어진 범위
{
if (data[i] >= 80 && data[i] <= 95) // 주어진 조건
{
sum += data[i]; // SUM
count++; // COUNT
}
}
double avg = sum / (double)count; // AVG
//[3] Output
printf("80점 이상 95점 이하인 자료의 평균: %.2f\n", avg);
}
5. Maximum 최댓값 알고리즘
//[?] 주어진 데이터 중 가장 큰 값 구하기
#include <stdio.h>
#include <limits.h> // INT_MIN을 참조하기 위함
// 최댓값 알고리즘 (Max Algorithm): 주어진 범위 + 주어진 조건 자료들의 가장 큰 값
main()
{
//[0] Initialize
int max = INT_MIN; // 정수 형식의 데이터 중 가장 작은 값으로 초기화 -> -2147483648
//[1] Input
int numbers[5] = { -2, -5, -3, -7, -1 }; // Max: -1
int N = sizeof(numbers) / sizeof(int); // 슈도코드/의사코드
//[2] Process: MAX
for (int i = 0; i < N; i++)
{
if (numbers[i] > max) // 더 큰 데이터가 있다면
{
max = numbers[i]; // MAX: 더 큰 값으로 할당
}
}
//[3] Output
printf("최댓값: %d\n", max);
}
6. minimum 최솟값 알고리즘
//[?] 주어진 데이터 중에서 가장 작은 짝수 값
#include <stdio.h> // printf()를 가져옴
#include <limits.h> // INT_MAX를 가져옴
// 최솟값 알고리즘 (min Algorithm): 주어진 범위 + 주어진 조건의 자료들의 가장 작은 값
main()
{
//[0] Initialize
int min = INT_MAX; // 정수 형식의 데이터 중 가장 큰 값으로 초기화
//[1] Input
int numbers[5] = { 2, 5, 3, 7, 1 }; // MIN: 1 -> MIN: 2 (짝수)
int N = sizeof(numbers) / sizeof(int);
//[2] Process: MIN
for (int i = 0; i < N; i++)
{
if (numbers[i] < min && numbers[i] % 2 == 0)
{
min = numbers[i];
}
}
//[3] Output
printf("짝수 최솟값: %d\n", min);
}
참조
- ezen 온라인 강의: 쉽게 배우는 C 알고리즘 입문(박용)
'C > C 알고리즘 입문 (이젠 강의 내용)' 카테고리의 다른 글
1 알고리즘과 절차 지향 프로그래밍 (1) | 2024.06.15 |
---|