프로그래밍실습 전체 강의 목록
제 1 강 교과목 소개 C언어 개요 MS Visual C/C++ 의 기본적인 사용 방법 첫 번째 프로그램의 작성 컴파일, 링크, 빌드 C언의 역사 프로젝트의 생성 및 솔루션 불러오기 오류 수정 주석(코멘트 처리), 두 줄의 연결 printf() 개행문자 문자열과 특수문자의 출력 간단한 덧셈 계산(10진수, 8진수, 16진수 출력) 변수의 선언 참고: 파워포인트에서 잉크 낭비 없이 인쇄하는 방법
제 2 강 간단한 덧셈, 뺄셈 계산 MS Visual C를 프롬프트 창에서 직접 컴파일 하는 방법 명령 프롬프트에서 입출력 내용 복사하여 붙여넣기 출력창 색깔 및 글꼴 바꾸기 C언어의 자료형 정수형 상수, 실수형 상수 변수 비트와 바이트 각 자료형에 따른 값의 범위 오버플로(overflow) int형 정수의 출력: 변환문자 %d unsigned형 변수의 출력: 변환문자 %u 실수형 변수의 사용 C언어와 이진수 컴퓨터는 정확한가? 변환문자 %f, %e, %E의 사용
제 3 강 실수형의 출력 8진수, 10진수 및 16진수 문자형 문자형의 출력 사칙연산 자료형의 크기 (sizeof 함수) 입력문 scanf의 사용 사칙연산의 계산
제 4 강 치환문의 사용 증감연산자와 누적치환연산자 수학식의 사용 절댓값, 나머지, 지수, 로그 함수 수학식의 사용 절댓값, 나머지, 지수, 로그 함수 삼각함수, 역삼각함수, 쌍곡선함수 수학식의 사용 수학식 사용시 주의할 점 원주율 값을 정의하여 사용하는 세 가지 방법: 관계연산자를 사용한 C에서의 대소 비교 조건문 if 의 사용 if문에서 중괄호의 사용 조건문 if … else 의 사용
제 5 강 최댓값의 계산 논리연산자 두 양의 정수의 평균을 구하여 출력하는 프로그램 거스름돈 계산 제어문 if … else if … else 의 사용 배수 판정 조건문의 중첩 C언어 에서의 참과 거짓 실수끼리 비교하는 것은 매우 위험 이차방정식의 실근을 구하는 예 거스름돈 지폐 및 동전의 수 계산 제어문 switch의 사용 switch 문 사용시 주의 사항 break를 의도적으로 생략한 switch문 물음표연산자
제 6 강 순환문 for 홀수의 출력 for문을 사용하여 1 + 2 + 3 + ... + 100 의 값 구하기 3부터 3000까지의 3의 배수의 합 구하기 2015 + 2013 + 2011 + … + 3 + 1 1+ 1/2 + 1/3 + … + 1/2014 + 1/2015 초기화식 및 변화식의 생략 중첩된 for 문의 사용(구구단 표) 중첩된 for 문을 사용한 다양한 출력 while문의 사용 while문을 사용하여 1 + 2 + 3 + ... + 100 의 값 구하기 do while문의 사용 do while문을 사용하여 1 + 2 + 3 + ... + 100 의 값 구하기
제 7 강 while문을 사용하여 1/2 – 1/4 + 1/6 – 1/8 + … + 1/98 – 1/100 구하기 do while문을 사용하여 1/2 – 1/4 + 1/6 – 1/8 + … + 1/98 – 1/100 구하기 특별한 경우의 for, while 및 do while의 차이 점화식으로 주어지는 수열의 출력 break문과 continue문 break와 while을 사용한 1부터 100까지의 정수 합 continue의 사용(1부터 100까지의 숫자중 10의 배수를 제외한 수의 합) 초기화식, 조건식, 변화식 모두 생략된 for문 원 모양의 출력 소수(prime number) 판정 프로그램
제 8 강 도전 프로그래밍 !!!(프로젝트 오일러) 무한루프 무한루프가 되는 이유 난수(random number)의 출력 난수 3개를 한 줄에 하나씩 출력하는 프로그램 1부터 6까지의 정수로 난수 n개를 출력하는 프로그램 숫자 맞추기 게임 몬테카를로 기법을 이용하여 원주율 의 근삿값 구하기 난수를 이용한 ASCII 문자 출력 순환문 복습: 원주율의 근삿값 구하기
제 9 강 scanf_s의 사용 _CRT_SECURE_NO_WARNINGS 디버깅(debugging) 다양한 단축키를 사용한 디버깅 배열(array) 숫자 5개의 평균 구하기 배열의 사용 (일차원배열) scanf를 이용한 배열 자료 입력 일차원 배열을 사용한 최솟값 계산 이차원 배열을 사용한 행렬 계산 2차원 배열을 사용한 평균 계산 이차원배열을 사용한 두 행렬의 곱
제 10 강 일차원 배열의 초기화 다차원 배열의 초기화 함수 부함수의 사용(return문이 있는 경우) 함수의 호출 과정에 대한 이해 함수의 사용에서 중요한 점 함수 사용의 다양한 변형 예 부함수를 사용하면 편리한 이유 main 함수의 자료형 부함수를 사용한 나머지 계산
제 11 강 함수의 사용 (복습) 여러 개의 인자 사용 함수형과 인자형 함수의 사용에서 중요한 점 부함수와 순환문의 사용 return 문이 없는 함수: void 형 함수 부함수를 이용한 배수 판정 부함수를 이용한 평균 계산 응용프로그램: 각 자릿수 별 정수 출력 사용된 숫자의 개수 return문의 기타 사항
제 12 강 일차원 배열의 전달 배열의 일부 사용 다차원 배열의 전달 다차원 배열의 일부 사용 배열의 전달 - 주소에 의한 전달 두 변수 값의 교환 두 변수 값의 교환(?) : 값에 의한 전달 배열에서 두 원소 값의 교환 – 주소에 의한 전달 함수의 자기 호출 함수의 자기 호출을 사용한 1부터 n까지의 정수 합 함수의 자기호출을 사용한 n! 계산 함수의 자기호출을 사용한 점화식 계산 함수의 자기호출: 최단 경로의 수 문제 함수의 자기호출: 유클리드 호제법
제 13 강 포인터(pointer) 포인터 출력 (%p또는 %u 사용) 포인터의 출력: 배열의 경우(1) 포인터 변수: 포인터를 저장하는 변수 부함수를 사용한 두 수의 합의 계산 방법1: return문을 사용한 기존의 방법 방법2: 포인터의 사용 포인터를 사용하지 않으면?
제 14 강 변수의 종류 및 영역 자동 변수 변수 선언의 위치 전역 변수 외부 변수 정적 변수 외부 정적 변수 레지스터 변수
제 15 강 포인터 변수의 사용 부함수로 전달되는 것은 무엇인가? 부함수와 포인터를 사용한 두 정수의 제곱의 합 계산 참고: (i) 포인터를 사용한 것 (ii) 포인터를 사용하지 않은 것 부함수와 포인터를 사용한 두 실수의 합, 차, 곱 계산 값에 의한 전달, 주소에 의한 전달 부함수와 포인터를 사용한 최소공배수 계산 배열과 포인터, 포인터 연산 (일차원 배열) 함수 사이에 배열을 전달할 때는 배열 이름으로 전달한다. 배열과 포인터, 포인터 연산 (다차원 배열) 배열의 부분적인 이용 (다차원 배열의 경우) 이차원 배열의 주소와 포인터 연산
제 16 강 일차원배열 전달의 두 가지 예 이차원배열 전달의 두 가지 예 삼차원배열 전달의 두 가지 예 기억장소의 낭비 기억 장소의 동적 할당(dynamic allocation) malloc의 사용 malloc에 대한 보충 설명 n명의 성적에 대한 평균 계산 동적 할당 테스트 calloc의 사용 calloc에 대한 보충 설명 malloc과 calloc의 차이점 동적 메모리 할당을 이용한 성적 계산 n개의 숫자를 입력받아 이중 홀수만 출력하기
제 17 강 정렬(sorting) 선택정렬(selection sort) 작은 수부터 큰 수 순으로 정렬하여 출력하는 프로그램 계산시간(CPU time)의 측정 (1) malloc의 사용 (2차원 배열) 이차원 배열은 여러 개의 일차원 배열들로 이루어진다. 포인터의 오프셋(Offset) n개의 실수를 입력받아 음수, 양수 및 이들의 개수를 출력하는 프로그램 포인터의 오프셋 (2차원 배열) realloc을 사용한 기억장소의 재할당
제 18 강 난수를 사용한 서로 다른 정수의 출력 순열(permutaion) 문자열(string) 문자열의 입력 문자열 입출력의 다양한 예 잘못 사용된 여러 가지 예 (오류 발생): 문자열 입출력 함수 콘솔(console) 버퍼(buffer), 표준입력(stdin), 표준출력(stdout) 문자(character) 입출력 함수 getchar와 putchar getc와 putc getch, getche와 putch NULL 문자의 이해: NULL 문자의 ASCII 값은 0 문자열의 끝에 있는 NULL문자가 사라지면? 문자열 리터럴(string literal, 문자열 상수) 전체 문자열의 변경
제 19 강 문자열 관련 대표적인 오류: a[]와 *a는 다르다 문자열 동적할당 순환문을 사용한 문자형 상수의 반복 입력 한 줄에 한 글자씩 입력받는 방법은? fflush함수의 사용 fflush의 사용: 주사위 게임 문자열 한 줄을 입력 받아 그대로 출력하는 프로그램
제 20 강 strcpy , strcat, strlen 함수 strlen함수의 사용 예 문자열의 비교: strcmp 문자열 두 개의 비교 보안성이 강화된 scanf_s 또는 gets_s 함수의 사용
제 21 강 파일 입출력 (fopen 및 fscanf, fprintf의 사용) 100개의 자료에 대한 평균 및 표준편차를 구하는 경우 fopen을 사용한 파일 입력 파일 입출력 작업 과정 scanf 또는 fscanf의 함숫값: 제대로 입력된 자료의 개수 자료의 개수 자동으로 알아내기 입출력을 모두 파일로 처리 fopen의 용법 관련 보충 설명 scanf_s, fscanf_s, fopen_s, strcpy_s,strcat_s의 사용 (보안성이 강화된 함수들) 명령프롬프트 창에서의 직접 파일 입출력
제 22 강 영문 소문자를 대문자로 바꾸어 출력하는 프로그램 특정 문자를 *로 바꾸는 프로그램 특정 조건을 만족하는 자료의 수 구하기 자료에서 7월이 생일인 사람의 수 구하기
제 23 강 선행처리기 (preprocessor) #define을 이용한 매크로의 사용 매크로를 이용한 수식의 사용 인라인 함수 #include의 사용 헤더 파일 불러오기
제 24 강 선형처리기를 이용한 조건부 컴파일 #ifdef : 정의되었다면 #ifndef : 정의되지 않았다면 #else의 삽입: #if, #ifdef, #ifndef에 해당 디버깅을 고려한 선행처리기의 사용 typedef 구조체(structure) 구조체를 이용한 변수의 사용 예 이름 없는 구조체 typedef를 이용한 구조체의 사용 (권장) 구조체의 입출력 예 구조체의 배열
제 25 강 구조체에서의 치환문 사용 구조체를 사용한 복소수의 사용 구조체의 입출력 및 함수 전달 구조체의 포인터 구조체를 사용한 배열 정렬 및 성적 처리 부함수 선언을 주함수 밖으로 빼내어 작성
제 26 강 비트 연산자 비트 연산자를 사용한 경우의 수 문제 열거형(Enumerated type) 공용체(Union) 파일 분할 및 독립된 파일들의 컴파일 입력파일을 읽어 들여 성적순으로 정렬하고 평균 성적을 구하는 프로그램 헤더 파일 생성 주함수 생성 및 컴파일 부함수 생성 및 컴파일 빌드(실행 파일 생성) 실행