일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 언제나 휴일
- 캡슐화
- 소켓 통신
- 실습으로 다지는 c#
- Windows Forms
- 안드로이드 앱 개발
- 소스 코드
- 산책하기 좋은 곳
- 알고리즘
- 파이썬
- 실습
- 언제나휴일
- 유튜브 동영상 강의
- 강의
- 네트워크 프로그래밍
- 독립기념관
- 프로젝트
- 원격 제어 프로그램
- 클래스 다이어그램
- 무료 동영상 강의
- 표준 입출력
- 동영상 강의
- C++
- 표준 라이브러리 함수
- c#
- 충남 천안
- 추천
- c언어
- 동영상
- 졸업 작품 소재
- Today
- Total
목록독립기념관 (24)
프로그래밍 언어 및 기술 [언제나휴일]
[C언어 소스] 문자열 길이를 계산하는 함수 만들기알고리즘문자열 길이 구하기(str:문자열 시작 위치)cnt:=0반복(str[cnt]가 참인 문자) cnt 1 증가cnt 반환 소스 코드//문자열 길이 구하는 함수 만들기//참고 에 strlen 함수가 있습니다.#include int mystrlen(const char *str);int main(void){ char name[100] = "Hello World"; printf("%s\n", name); printf("길이: %d\n", mystrlen(name)); return 0;}int mystrlen(const char *str){ int cnt; //str[cnt]가 거짓 문자(종료 문자, '\0')가 나올 때까..
n 개의 정수를 표현하기 가장 적합한 자료 형식은 정수 형식을 원소로 하는 배열이겠죠.n을 10으로 하드 코딩한다면 다음과 같습니다.int arr[10];제일 먼저 함수 이름을 결정합시다.홀수 합계를 구하는 것이므로 GetOddSum 이라고 정할게요.n개의 정수 중에 홀수의 합계를 구하는 함수의 함수 원형을 정해봅시다.C언어에서 배열 이름은 할당한 메모리 주소입니다. 해당 주소에 원소 형식을 사용할 것이므로 원소 형식 포인터로 생각할 수 있어요.그리고 배열의 크기를 전달해야겠죠.따라서 입력 매개변수는 2개로 int *base, int size 정도면 적당하겠네요.*원소 개수가 음수가 올 수 없다는 것을 고려한다면 unsigned 은 size_t로 표현할 수도 있어요.*함수에서는 결과로 홀수의 합계를 반환..
알고리즘n:←높이 입력반복(space:1→(n-1)) 공백 출력‘*’출력개행 출력반복(line:1→n-2) 반복(space:1→n-line-1) 공백 출력 ‘*’출력 반복(space:1→2line-1) 공백 출력 ‘*’ 출력 개행반복(star:1→(2n-1)) ‘*’출력개행소스코드//반복문 연습 - 속이 빈 삼각형//입력//5 - n//출력// * 공백 4, 별1, 개행// * * 1- 공백 3, 별1, 공백1,별1, 개행 // * * 2- 공백 2, 별1, 공백3,별1, 개행// * * 3- 공백 1, 별1, 공백5,별..
알고리즘n:←산의 높이 입력반복(line:1→2n) 조건(line 반복(space:1→4n-1-line) 공백 출력 반복(star:1→2line-1) ‘*’ 출력 개행아니면 반복(space:1→2n-line) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(star:1→(2n-line-1)) ‘*’ 출력 반복(space:1→2(2n-line)) 공백 출력 반복(start:1→2(line-n)) ‘*’ 출력 개행소스코드//반복문 연습 - 산봉우..
[C언어 소스] 숫자 피라미드다음처럼 출력할 라인 수를 입력하여 정수 피라미드를 출력하시오. 라인 수 입력Loop(i:1->line) Loop(space:0->line-1) printf space Loop(num:1->i) print num Loop(num:i-1->1) print num#include int main(){ int line = 0; int num = 0, i = 0, space = 0; printf("정수:"); scanf_s("%d", &line); for (i = 1; i 0; num--) { printf("%d", num); } putchar('..
Queue를 이용한 스케쥴러 시뮬레이션 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 실습은 Queue를 이용한 스케쥴러 시뮬레이션입니다.스케쥴러는 운영체제의 핵심 개체로 누가 CPU를 점유하여 사용할 것인지를 판단하는 역할을 수행합니다.여기에서는 대기 큐를 이용하는 라운드 로빈 방식의 스케쥴러를 코드로 표현해 볼게요.보다 자세한 사항은 자료구조와 알조리즘 C++ 3.5 큐를 이용한 스케쥴러 시뮬레이션을 참고하세요.EHProcess.H#include using namespace std;class EHProcess{ string pname; //프로그램 이름 const int tjob; //전체 작업량 const int cjob; //cpu 점유 시 수행가능 최대 작업량 int n..
파서 트리를 이용한 계산기 [C++] Part1 파서 트리를 이용한 계산기 [C++] Part2안녕하세요. 언제나 휴일에 언휴예요.이번에는 파서 트리를 이용한 계산기를 구현하는 실습이예요.23+8*9-7 과 같은 수식을 계산하면 8*9를 먼저 계산하고 23+(8*9)-7 순으로 계산합니다.이처럼 수식을 연산자 우선 순위에 맞게 계산하기 위해 여기에서는 파서 트리를 이용할 거예요.파서 트리를 이용한 계산기에 관한 이론적인 내용은 자료구조와 알고리즘 C++ 9.3 수식 파서 트리를 참고하세요.#include #include using namespace std;class Calculator{ string expr;public: Calculator(string expr) { ..
함수 개체, 회원 및 회원 컬렉션 구현[C++]안녕하세요. 언제나 휴일에 언휴예요.이번에는 함수 개체 실습이예요.함수 개체는 특정 형식 개체를 함수처럼 호출 가능한 개체를 말합니다.이를 위해 해당 형식에는 함수 호출 연산자를 중복 정의합니다.이 외에도 이번 실습에는 개체 출력자, 인덱스 연산자 중복 정의를 구현하는 부분도 있습니다.다음은 함수 호출 연산자를 중복 정의한 간단한 예제입니다.class FunObject{public: int operator()(int a, int b) { return a + b; }};int main(){ FunObject fobj; int re = fobj(3,4); cout 위 예에서 FunObject 클래스에는 함수 호출 연산..
개체 출력자 실습 – 회원 클래스 및 쉬프트 연산자 중복 정의 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 실습에서는 개체 출력자를 구현합니다.C++에서 출력을 위해 ostream 형식을 정의하고 있어요. cout이 대표적인 ostream 형식 개체죠.개체 출력자는 ostream 형식 개체를 이용하여 개체 정보를 출력할 수 있게 정의하는 코드 집합을 개체 출력자라 부릅니다.이번 실습에서는 회원 클래스를 정의하고 개체 출력자를 정의할 거예요.기본 형식처럼 회원 개체 정보를 ostream 형식 개체로 출력할 수 있게 구현하는 실습입니다./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 개체 출력자 - 회원 클래스*/#include #include using namespace..
다형성 실습 – 오케스트라, 음악가, 피아니스트, 드러머 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번에는 다형성 실습이예요.다형성은 하나의 이름으로 보여도 실제 형태는 다양할 수 있는 성질입니다.기반 형식 포인터 변수로 파생 형식 개체를 사용할 수 있는 특징을 형식의 다형성이라고 부릅니다.기반 형식의 가상 메서드를 파생 형식에서 재정의할 수 있습니다.이 때 기반 형식 포인터 변수로 해당 메서드를 호출하면 실제 개체 형식에 정의한 메서드가 동작합니다.이러한 특징을 메서드의 다형성이라고 부릅니다.이러한 다형성에 관한 실습을 오케스트라(음악가, 피아니스트, 드러머) 소재로 진행합니다./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 다형성 실습*/#include using na..
회원 클래스 정의 – 정적 멤버 캡슐화 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 예제는 정적 멤버 캡슐화를 다룰 거예요.실습은 회원 클래스를 정의합니다.클래스 다이어그램에서 밑줄로 표시한 멤버가 정적 멤버입니다.가장 최근에 부여한 회원 번호(lastnum)과 현재까지 생성한 회원 수를 반환하는 메세드(GetMemberCount)를 캡슐화할 거예요.이 두 개의 멤버는 개체의 멤버가 아닌 형식의 멤버로 형식 이름으로 접근할 수 있어요./* https://ehpub.co.kr C++ 예제 - 언제나 휴일 회원 클래스 정의 - 정적 멤버 필드 캡슐화*/#include #include using namespace std;class Member{ static int last_num; co..
복소수 클래스 정의 – 캡슐화 실습 [C++]안녕하세요. 언제나 휴일에 언휴예요.이번 강의는 캡슐화 실습으로 복소수 클래스를 정의할 거예요. 실수부와 허수부를 멤버 필드로 갖고 있습니다. 그리고 실수부와 허수부의 값을 접근하는 접근자 메서드와 설정하는 설정자 메서드를 갖습니다. 마지막으로 복소수 개체 정보를 문자열로 반환하는 메서드를 멤버로 갖습니다. #include #include using namespace std;class Complex{ double image; double real;public: Complex(double real = 0, double image = 0) { SetReal(real); SetImage(image); } vo..
CSV 파일 입출력 – StreamReader 클래스 및 StreamWriter 클래스 사용안녕하세요. 언제나 휴일에 언휴예요.이번 강의에서는 데이터 분석에서 많이 사용하는 “CSV” 포멧의 파일 입출력을 알아볼게요.CSV 파일은 데이터를 콤마를 기준으로 열거합니다.이를 엑셀 등의 프로그램으로 보면 테이블 형태로 확인할 수가 있죠.여러분들이 CSV 파일 포멧으로 데이터를 기록할 때 주의할 점은 데이터 내용에 콤마가 있다면 다른 문자로 변경한 후에 저장하세요. 만약 이를 유지하길 원한다면 다른 포멧의 파일 입출력을 선택하세요.실습은 동영상 강의와 소스 코드를 참고하세요.이번 실습에서는 StreamReader 클래스와 StreamWtirer 클래스를 이용하여 입출력합니다.Book.csnamespace Str..
런타임에 라이브러리 로딩하여 사용하기 – .NET 리플렉션안녕하세요. 언제나 휴일에 언휴예요.1. 런타임에 라이브러리 로딩? 리플렉션! 이번 실습은 프로그램이 동작하는 런타임에 라이브러리를 로딩하여 사용하는 것을 해 볼 거예요..NET에서는 리플렉션이라는 기술을 제공하고 있으며 이를 이용하여 런타임에 라이브러리를 로딩하여 사용합니다.런타임에 라이브러리를 로딩하여 사용한다는 것은 무슨 의미일까요?예를 들어 미디어 플레이어 응용과 코덱 라이브러리는 배포자가 다를 수 있습니다.미디어 플레이어 응용에서 미디어를 선택하여 재생 버튼을 누르면 미디어의 압축 형태에 맞는 코덱 라이브러리를 로딩하여 재생합니다.만약 코덱 라이브러리가 없으면 코덱이 없다고 메시지 창을 띄워줍니다.이처럼 동작하려면 미디어 플레이어 응용은 ..
[실습으로 다지는 C#] 학생 키우기 – 학생 구현 및 제어 안녕하세요. 언제나 휴일, 언휴예요.이번 실습할 시나리오는 학생 개체 1명을 생성한 후에 메뉴를 통해 제어하는 프로그램입니다.다음은 실습 시나리오입니다.초기화(Init) 학생 개체 생성(1명)사용자와 상호작용(Run) F1: 공부하기 F2: 강의받기 F3: 잠자기 F4: 휴식하기 F5: 음료마시기 F6: 노래하기 F7: 학생 상태 출력 다음은 정의할 학생 클래스 다이어그램입니다.학생 형식의 멤버 필드입니다.pn: 주민번호(순차부여)name: 이름(생성 시 전달)iq: 아이큐(0~200, 초기 100)hp: 체력(0~200, 초기 100)stress: 스트레스(0~100, 초기 0)scnt: 연속으로 공..
이번 강의에서는 콘솔 응용에서 메뉴를 통해 프로그램의 흐름을 제어하는 실습을 해 볼 거예요.콘솔 응용에서 사용자와 상호 작용을 담당하는 형식을 Application이라고 정의할게요.class Application{}Application 형식 개체는 하나만 존재하는 것이 맞겠죠. 단일체 패턴을 적용하기로 할게요. 생성자의 접근 지정을 디폴트 값(private)으로 정하여 클래스 외부에서 개체 생성을 하지 못하게 막습니다. 그리고 정적 멤버로 클래스 외부에서 정적 개체를 참조할 수 있게 가져오기 속성을 제공합니다. 단일체는 정적 생성자에서 만드는 것을 추천합니다. 정적 생성자는 해당 형식을 사용하기 전에 수행하고 단 한 번만 수행하는 것을 보장하기 때문에 단일체를 생성하는 위치로 적당합니다. class..
이번 강의는 콘솔 글자 색을 바꾸는 실습입니다. 별다른 알고리즘은 없고 필요한 몇 개의 기술을 사용할 거예요. 기술 사용 노하우를 들여다 보고 따라해 보는 것이라 크게 고민을 하실 필요는 없어요. 콘솔의 글자 색을 바꾸기 위해 Windows API 함수를 사용할 수 있어요.- 콘솔의 글자 색을 바꾸는 함수WINBASEAPI BOOL WINAPI SetConsoleTextAttribute(_In_ HANDLE hConsoleOutput,_In_ WORD wAttributes); - 표준 핸들을 얻어오는 함수 WINBASEAPI HANDLE WINAPI GetStdHandle(_In_ DWORD nStdHandle); - 표준 출력 핸들 상수 #define STD_OUTPUT_HANDL..
[실습으로 다지는 C#]택배 요금 계산 시뮬레이션 이번 강의에서는 택배 요금을 계산하는 시뮬레이션을 만들어 봅시다. City, Parcel, Application 세 개의 클래스로 구성하고 있습니다. City 클래스는 도시 이름과 (기준 도시에서) 상대적 거리를 멤버로 갖습니다. 그리고 다른 도시와의 거리를 계산하는 메서드를 제공합니다. Parcel 클래스는 기준 요금과 무게를 멤버로 갖고 요금을 계산하는 메서드를 제공합니다. Application은 택배 시스템 시뮬레이션으로 하나의 개체만 허용하는 단일체 패턴을 적용할게요. 단일체로 표현하기 위해 정적 멤버로 단일체를 참조하는 멤버 필드를 추가합니다. 그리고 정적 생성자에서 단일체를 생성합니다. 정적 생성자는 해당 형식을 사용하기 전에 동작하는 ..
[실습으로 다지는 C#] 실현 관계(Realization) 실습 이번 강의는 실현(Realization) 관계 실습입니다. 실현 관계는 기능을 약속한 형식과 이를 구체적으로 구현한 형식 사이의 관계입니다. 결국 인터페이스와 인터페이스에 약속한 기능을 구현한 형식 사이의 관계입니다.기능을 약속한 형식과 약속한 기능을 구체적으로 구현한 형식 사이의 관계 이러한 실현 관계로 표현하였을 때 가장 큰 장점은 같은 방법으로 사용할 수 있다는 것입니다. 다음은 이번 실습에서 표현할 클래스 다이어그램입니다. 클래스 다이어그램에서 IStudy 인터페이스와 Student는 실현 관계입니다. 클래스 다이어그램에서 IStudy 인터페이스와 Gorillar도 실현 관계입니다. 클래스 다이어그램을 보면서 코드로 표현해 보세요. ..
[실습으로 다지는 C#] 구성(Composition) 관계 실습 – 사람, 눈 이번 강의는 구성(Composition) 관계 실습입니다. 소재는 사람과 눈입니다. 구성 관계는 소유 개체를 생성할 때 내부 개체가 같이 만들어지는 특징을 갖고 있습니다. 클래스 다이어그램을 바탕으로 코드를 구현해 보세요. 주의할 점은 Man 생성자에서 Eye 개체를 생성해야 한다는 것입니다. 별다른 알고리즘을 갖고 있는 것이 아니어서 코드 설명은 생략할게요.using System;namespace 구성_관계_실습{ class Eye { double sight; bool opened; public bool Opened { get ..
이번에는 ToggleButton을 사용하는 간단한 실습을 합시다.먼저 activity_main.xml 파일에 컨트롤을 배치합시다. 최상위 요소는 LinearLayout입니다. 그리고 자식으로 ToggleButton과 TextView를 배치하세요. 이제 MainActivity.java 파일을 편집합시다. MainActivity 클래스에 ToggleButton을 참조할 멤버 필드를 선언하세요. ToggleButton tb;onCreate 메서드에서는 먼저 findViewById 메서드를 호출하여 xml 파일에 배치한 ToggleButton을 참조합니다. tb = (ToggleButton)findViewById(R.id.tb);그리고 클릭 리스너를 설정합니다. 리스너에서는 xml..
안녕하세요. 언제나 휴일에 언휴예요.mask를 이용한 암호화 및 이진수 출력[C언어]이번 강의는 비트 연산을 이용한 mask입니다.^ mask를 이용하여 암호화하는 것과 & mask를 이용하여 이진수를 출력하는 실습이예요.1.^mask를 이용한 암호화2.&mask를 이용한 이진수 출력1. ^mask를 이용한 암호화비트 연산 이용하면 간단한 대칭형 암호화를 할 수 있어요.대칭형 암호화는 암호화할 때와 복호화할 때 같은 키를 이용하는 암호화를 말합니다.다음의 코드는 ^연산을 이용하여 평문을 암호화하고 복호화하는 예제입니다.#include int main(){ int pd = 0x12345678; int key = 0x2345873a; int sec = pd ^ key; int data ..
1. 유튜브 동영상 강의2. 소개이 책에서는 C# 언어로 Windows Forms 응용 프로그램 형태로 원격 제어 프로그램을 만드는 전체 과정을 다루고 있습니다. 여기에서 만드는 원격 제어 프로그램은 P2P 방식으로 제어하는 부분과 제어 당하는 부분을 포함하는 프로그램입니다.프로그램을 시작하면 [그림 1]처럼 원격 제어기 창이 뜨고 제어를 원하는 상대 IP 주소를 입력하여 설정하기 버튼을 클릭합니다.원격 호스트에서는 [그림 2]처럼 원격 제어 요청을 한 컨트롤러의 주소가 보이면서 원격 제어 허용 버튼의 상태를 활성화합니다. 원격 제어 허용 버튼을 누르면 원격 컨트롤러에서 원격 제어를 시작할 수 있습니다.이 프로그램을 만드는 과정에서 여러분께서는 Windows Forms 응용 프로그램을 만드는 방법을 익힐..
1. 유튜브 동영상 강의 안녕하세요. 언제나 휴일에 언휴예요.이번 강의는 파일 전송 클라이언트를 구현하는 실습입니다.파일 전송 및 수신에 필요한 서버와 클라이언트는 P2P 메신저를 구현할 때 필요한 요소 기술입니다.먼저 익히고 넘어갈게요.다음글 P2P 메신저 - 파일 전송 클라이언트 구현 [C#] 도 같이 학습하세요.2. 파일 데이터 전송 이벤트 인자 및 대리자 소스 코드using System;namespace 파일_전송_클라이언트{ public delegate void SendFileDataEventHandler(object sender, SendFileDataEventArgs e); public class SendFileDataEventArgs:EventArgs { pub..