프로그래밍 실습 - 프로그램이 가능한 전자키보드 구현
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

프로그래밍 실습 - 프로그램이 가능한 전자키보드 구현에 대한 보고서 자료입니다.

목차

프로그래밍 실습 - 프로그램이 가능한 전자키보드 구현


1. 과제의 개요 및 목표
1.1. 과제의 개요
1.2. 과제목표

2. 문제점 및 해결방안
1) 메모리 배열 방안
2) 백스페이스 해결 방안
3) 저장된 곡을 한글로 출력

3. 프로그램 동작 설명
3.1. 전체 프로그램
3.2. 프로그램 세부 설명
3.3. 실행 화면

4. 결론

본문내용

입력.
char beat[3][100] = {'3','3','3','3','3','3','5','3','3','3','3','6','3','3','3','3','3','3','5','3','3','3','3','6'};
//한곡당 비트가 3곡까지 최대100까지 지정, 초기값에 학교종을 입력
char song_list[3][100] = {"학교종","없음","없음"}; //노래메뉴는 3곡으로 한곡당 제목길이가 최대 100비트까지 입력.
int mode; // mode 입력, 삭제, 재생 모드를 선택하기 위한 값을 저장받을 변수
while(true) //while무한 반복으로 실행.
{
title(song_list); //title 이라는 함수를 불러온다. 초기화면을 출력해주는 함수이다.
fflush(stdin); //응답이 느려지는 것을 방지하기위해 fflush로 메모리 정리 해준다.
scanf("%d", &mode); //mode는 숫자로 받고 1.노래입력 2.노래듣기 3.노래삭제 등 을 고르는 메뉴 번호이다.
switch(mode) //switch문 조건식을 실행한다.
{
case 1 : input_key(tone, beat, song_list); break; //1번 선택시 input_key함수사용, 노래를 입력받는메뉴
case 2 : play_key(tone, beat, song_list); break; //2번 선택시 play_key함수사용, 노래를 재생하는메뉴
case 3 : delete_data(tone, beat, song_list); break; //3번 선택시 delete_data함수사용, 저장된 데이터를 삭제하는 메뉴
default: printf("잘못입력 하셧습니다. 1~3만 입력하세요");break; //잘못 입력받았을 경우의 처리
}
printf("\n\n"); //엔터키 두번치면
system("pause"); //정지
}
}
실행 화면
[ 그림 1 ] 메뉴화면
[ 그림 2 ] 입력된 곡을 삭제하는 화면
[ 그림 3 ] 곡 입력하는 화면
[ 그림 4 ] 입력한 곡을 듣는 화면
결론
본 프로젝트를 함으로써 전체적인 틀을 잡는게 제일 힘들었다. 우선 프로젝트 참고 자료에 나와 있는 계이름을 0부터 8까지 정해주고, 음표길이(ms)로 주파수로 정하여 음길이를 설정하였다. title함수로 하여 100비트까지 선언하여 for을 이용하여 메인메뉴를 만드는데 성공을 하였다.void input_key(char (*tone)[100],char (*beat)[100], char (*song_ list)[100]로 입력 받았을 때 노래 제목, 음길이, 음계를 입력받을 배열에 접근 함으로써 while 무한 반복으로 정상적인 입력일 때에는 출력을 해주었고, 오류가 발생하였을 경우에는 잡아서 처리를 해주었다. 중간 중간에 보면 fflush(stdin)를 선언을 해주었는데, 그 이유는 너무 많은 메모리 사용으로 응답이 느려지는 것을 방지해주는 것이다. 곡을 입력하는 경우에는 while 무한 반복으로 if(input_tone == 'x' || count >= 100)에서 x를 입력하거나 100비트가 초과하는 경우에는 break;로 끝나게 설정을 하였다. 그리고 잘못 입력되었을 경우 else if(input_tone=='\b')를 설정함으로써 백스페이스를 하면 입력, 출력된 값을 삭제하게끔 만들었다. 곡 입력의 나머지 부분은 앞에꺼와 비슷하여 조금만 생각을 하면 할 수가 있었다. 메인 메뉴에서 두 번째 메뉴인 곡 듣기 부분도 void play_key(char (*tone)[100],char (*beat)[100], char (*song_list)[100]) 입력과 마찬가지로 재생을 하기위한 배열정보를 설정하고, 재생을 저장할 장소로 inedx를 설정한 뒤 if else문을 사용하여 잘못된 값을 입력 받았을 때의 처리와 재생목록은 선택 되었으나 저장소에 저장이 안되어 있을 경우를 처리하는데 사용을 하고, switch case 문을 사용하여 입력된 음계를 한글로 출력하는 부분도 만들었다. Beep(tones[tone[index][i]-'0'], tempo[beat[index] [i]-'0']); 이 부분이 처음 선언한 tones와 tempo로부터 값을 설정하여 해당 주파수와 저장된 길이만큼 비프음을 낸다. 메인 메뉴중의 마지막 부분인 곡들의 삭제 부분이다. 곡을 삭제하는 함수도 void delete_data(char (*tone)[100], char (*beat)[100], char (*song_list)[100]) 로써 앞에 선언한 곡 입력,곡 듣기 할 때와 유사하게 배열정보를 설정하였다. char empty[50] = "없음"; , char clear[100] = "\0"; 삭제를 하였을 경우 없음을 보여주고, tone와 beat에 저장된 값들을 클리어 하기한 내용이다. 이번 내용은 앞에 했던 내용들과 많이 곁치기 때문에 생략하기로 하고 strcpy(song_list[index], empty);strcpy(tone[index] ,clear); strcpy(beat[index], clear);이 부분은 저장된 값을 정삭적으로 지웠을 경우에 처리부분으로써 세개의 배열을 초기화하여준다. 이제 main 함수로 와서 int mode;를 선언 하여 mode는 입력, 삭제, 재생 모드를 선택하기 위한 값을 저장받을 변수이다. 무한 반복문으로 title(song_list)로 title함수를 불러온다. switch case 문을 사용하여 메인 메뉴의 1,2,3번을 불러오는 것으로 마무리를 하였다.
이번 과제는 처음 실습을 받았을 때 다 완성을 하지 못하였다. 그 때에는 소스가 너무 엉망이어서 완성을 하지 못하였는데, 그래서 5조와 같이 완성하지 못했던 부분을 서로 공유하여 같이 완성을 하게 되었다. 실습을 받기 전에 완성을 하였으면 더 좋았을 텐데 그러지 못해서 너무 안타깝다. 이번 과제를 통해서 내가 알지 못했던 부분도 더 많이 알아 갈 수 있었고, C언어의 프로그래밍은 다른 프로그램의 기초적인 부분도 많이 겹치게 되는데 앞으로 다름 프로그래밍을 할 때에도 많은 도움이 될 것 같다.
  • 가격2,800
  • 페이지수16페이지
  • 등록일2014.05.20
  • 저작시기2014.5
  • 파일형식한글(hwp)
  • 자료번호#918311
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니