반응형

언어 자료구조 알고리즘/디딤돌 C언어 150

[정답] 디딤돌 C언어 11. 메모리, 10진수, 2진수, 16진수

[정답]11. 메모리, 10진수, 2진수, 16진수 ◈ 기본 연습 1. 2진수 01010010은 10진수로 얼마인지 계산하시오. 답: 0*128+1*64+0*32+1*16+0*8+0*4+1*2+0*0 = 82 2. 2진수 01010010은 16진수로 얼마인지 계산하시오. 답: 0101(2진수) =5(16진수) , 0010(2진수)=>2(16진수) 따라서 이진수 01010010는 16진수로 0x52 3. 16진수 0x52는 10진수로 얼마인지 계산하시오. 답: 5*16 + 2*1 = 82 4. 10진수 37을 이진수로 얼마인지 계산하시오. 답: 37 = 32 + 4 + 1 = 100101(이진수) 5. 16진수 0x25를 이진수로 얼마인지 계산하시오. 답: 2(16진수) = 0010(이진수), 5(16진수..

[정답] 디딤돌 C언어 8. 정리하기 (C언어 개요)

[정답] 8.정리하기 1. C언어는 Bell 연구소에서 운영체제(O/S)를 만드는 과정에서 사용한 B언어을 발전한 프로그래밍 언어입니다. B언어는 어떠한 운영체제를 만드는 과정에서 사용했나요? 답: Unix 2. 프로그래밍 언어에서 데이터 종류에 따라 필요한 메모리 사이즈와 표현 방법을 약속하는 것은 무엇입니까? 답: 형식 3. 콘솔 프로그램의 진입점 함수 이름은 무엇입니까? 답: main 4. 표준 입출력을 사용하기 위해 포함시켜야 하는 헤더 파일 이름은 무엇입니까?답: stdio.h 5. 표준 출력 파일에 포멧에 맞게 출력하는 함수 이름은 무엇입니까? 답: printf 6. 편집한 소스 파일을 기계어로 번역하는 것을 무엇이라 부릅나요? 답: 컴파일 7. C언어에서 주석을 표현하는 방법을 모두 말해보세..

[c language] 117. 콜백

이번에는 함수 포인터를 콜백으로 이용하는 간단한 예를 살펴보아요. 정렬 알고리즘은 원소 형식이 무엇인지에 상관없이 대부분 같아요. 하지만 비교하는 것은 차이가 있죠. 만약 번호와 이름을 멤버로 갖는 학생 구조체 배열을 번호순으로 정렬한다면 멤버 번호로 비교해야 할 거예요. 이름순으로 정렬한다면 멤버 이름으로 비교해야겠죠. 이럴 때 비교하는 논리를 전달받아 형식에 관계없이 정렬하는 함수를 구현할 수 있어요. 이 때 비교하는 논리를 전달 받기 위해 함수 포인터를 사용해요. 호출하는 곳에서는 비교 함수를 정의하여 정렬 함수에 이를 입력 인자로 전달해요. 그리고 정렬 함수에서는 전달받은 비교 함수를 이용하여 정렬하는 것죠. 결국 피호출 함수인 정렬 함수에서 호출한 곳에서 정의한 비교 함수를 호출하는 것이므로 콜..

[c language] 116. 함수 포인터

함수 포인터는 시그니쳐를 원소 형식으로 취급해요.두 개의 정수 형식을 입력 인자로 받고 반환 형식이 정수인 함수 포인터 변수는 int (*fun)(int ,int); 처럼 선언할 수 있어요. 그리고 fun 포인터 변수에 함수 원형이 같은 함수 이름을 대입할 수 있죠. 함수 포인터 변수는 함수 호출과 같은 방법으로 사용할 수 있어요. 또한 typedef int (*Fun)(int ,int); 처럼 함수 포인터 형식명을 정의하여 Fun fun; 처럼 변수 선언에 사용할 수도 있죠. 예를 들어 두 개의 정수를 입력 인자로 받아 두 수의 합과 차, 곱, 나누기를 하여 결과를 반환하는 함수들이 있다고 가정해요. 그리고 typedef int (*Fun)(int,int); 처럼 함수 포인터 형식명을 정의하기로 해요...

[c language] 115. 함수 포인터와 콜백 개요

컴퓨터 프로그램은 수행할 작업들을 논리적으로 표현한 코드의 집합이라고 말할 수 있어요.그리고 단위 작업의 논리 전개를 한 것이 함수죠. 컴퓨터 CPU내에는 현재 수행할 코드 메모리 주소를 기억하는 프로그램 카운터(PC) 레지스터가 있어요. 대부분의 코드는 수행한 후에 프로그래머 카운터를 1 증가하여 다음 위치에 있는 코드를 수행하죠. 하지만 함수를 호출하면 피호출 함수의 코드로 분기하고 끝나면 호출한 코드 다음 위치에 있는 코드가 동작해요. 이렇게 동작할 수 있는 이유는 함수 이름은 해당 함수가 수행할 코드의 시작 메모리 주소를 값으로 갖고 있기 때문이예요. 배열명이 원소 형식의 포인터라고 말하는 것처럼 함수명은 해당 함수의 시작 메모리 주소를 의미하여 함수 포인터라 부르죠. 함수 포인터는 피호출 함수에..

[c language] 101~114 도서 관리 프로그램 소스 코드

다음은 이번 실습에서 작성한 도서 관리 프로그램의 소스 코드입니다.// ehcommon.h#pragma oncetypedef enum _key key;enum _key{ NO_DEFINED, F1, F2, F3, F4, F5, F6, F7, F8, F9,F10, ESC};void clrscr();int getkey(); //ehcommon.c#pragma warning(disable:4996)#include "ehcommon.h"#include #include #include void clrscr(){ system("cls");} int getkey(){ int key = 0; key = getch(); if(key == 27) { return ESC; } if(key == 0) { key = getch..

[C language] 114. 도서 관리 프로그램 - 로딩

먼저 App에서는 파일을 읽기 모드로 열어야겠죠. 그리고 App의 정보를 파일에서 읽어오세요. 다른 물리 매체에 데이터를 선형으로 읽어와 프로그램 데이터가 되는 과정을 역직렬화라고 불러요. 역직렬화 함수에서는 마지막 부여한 장르 번호와 장르 개수를 로딩해야죠. 그리고 파일을 인자로 장르를 만들어 배열에 보관하세요. 파일로부터 장르를 만드는 함수에서는 역직렬화 과정이 필요해요. 장르번호, 장르명, 마지막 부여한 도서 번호를 파일에서 로딩하고 도서 개수를 로딩하세요. 그리고 파일에서 도서 개체를 만들어 배열에 보관하세요. 파일에서 도서 개체를 만드는 함수에서도 역직렬화를 수행하고 작업을 수행한 후에 App에서는 파일을 닫으세요.먼저 파일에서 데이터를 로딩하여 Book 개체를 생성하는 파일을 헤더 파일에 선언..

[c language] 113. 도서 관리 프로그램 - 저장

이번에는 데이터를 파일에 저장하는 기능의 시퀀스 다이어그램을 작성하기로 해요. 먼저 App에서는 파일을 쓰기 모드로 열어야겠죠. 그리고 App의 정보를 파일에 저장해요. 프로그램의 데이터를 다른 물리 매체에 선형으로 보내는 것을 직렬화라고 불러요. 직렬화 함수에서는 마지막 부여한 장르 번호와 배열에 보관한 장르 개수를 저장하세요 그리고 배열에 보관한 장르들의 정보를 파일에 직렬화하세요. 장르의 정보를 직렬화하는 함수에서도 장르번호, 장르명, 마지막 부여한 도서 번호를 파일에 저장하고 배열에 보관한 도서 개수를 저장하세요.그리고 배열에 보관한 모든 장르를 파일에 직렬화하세요. 파일의 정보를 직렬화하는 함수에서는 자신의 정보를 저장하세요. 이와 같은 작업을 완료하면 App에서는 파일을 닫아야겠죠. 먼저 Bo..

[C language] 112. 도서 관리 프로그램 - 장르 삭제

장르 삭제 시퀀스 다이어그램을 작성하기로 해요. 여기에서도 장르를 선택하는 부분까지는 같아요. 장르를 선택하였으면 선택한 장르를 소멸하는 함수를 호출하세요. 그리고 장르를 소멸하는 함수에서는 내부에서 생성하여 배열에 보관한 도서도 소멸해야 하는 것을 잊지 마세요. Book을 소멸하는 함수는 이미 구현한 것과 차이가 없어요. Genre를 소멸하는 함수에서는 보관한 모든 도서를 소멸하는 부분을 추가하세요. Genre에서는 소멸할 때 해제화 작업을 GenreTGenre에서 수행하므로 이 함수를 수정하세요. void GenreTGenre(Genre *genre) { Book *book=0; Iterator seek= EHArrayBegin(genre->books); Iterator end= EHArrayEnd(..

[C language] 111. 도서 관리 프로그램 - 제목으로 검색

도서 제목으로 검색 기능은 검색에 사용한 키가 도서 번호 대신 도서 제목으로 변경한 것 말고는 차이가 없어요. Book 헤더 파일에 도서 제목을 반환하는 함수를 선언하고 소스 파일에 구현하세요. const char *BookGetTitle(Book *book) { return book->title; } Genre 헤더 파일에 도서 제목으로 도서 검색 함수를 선언하고 소스 파일에 구현하세요. Book *GenreFindBookByTitle(Genre *genre,const char *title) { Iterator seek; Iterator end; Book *book=0; const char *stitle = 0; seek= EHArrayBegin(genre->books); end= EHArrayEnd(..

반응형