프로그래밍 언어 73

C언어 Storage Class, Auto, Register, Extern, Static이란?

안녕하세요 오늘은 C언어 Storage Class, Auto, Register, Extern, Static에 대해 알아보겠습니다. Storage Class : 기억 영역을 분류하기 위해서 사용되는 용어입니다. 이때 Class는 객체의 Class랑은 상관이 없고 그냥 Class입니다 Auto : 지역변수에서 저장되는 공간입니다. 일반적으로 지역변수들은 Auto를 생략한거라고 봐도 됩니다. Auto의 범위는 특정 블럭입니다. 1 2 3 4 5 6 int calc(void) { int a=1; auto int b=2; return a+b; } cs a와 b의 선언은 같습니다. 또한 a,b의 생명은 2~6줄에만 있습니다. Register : 변수를 빠르게 접근하기 위해 RAM 대신에 CPU 레지스터에 로컬 변수..

C언어로 지수구하기

안녕하세요 오늘은 지수를 구하는 코드를 작성해보겠습니다 . 거듭제곱: 같은 수를 여러 번 곱한 것 밑 : 거듭제곱에서 곱한 수 (a) 지수 : 거듭제곱에서 밑이 곱해진 횟수 (n) aⁿ 작성할 코드는 아래와 같은 형태인 자연수의 지수를 구할 수 있는 코드입니다 9 -> 3의 2승 16 -> 2의 4승 빨강색의 값이 구할 값 입니다 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 32 33 #include unsigned char get_index(unsigned char num,unsigned char under) { char i=0; while(1) { if(num==1) return i; i++; i..

C# 시리얼통신 데이터 잘려서 읽히는 경우

안녕하세요. C# SerialPort 클래스를 이용해요 DataReceived 이벤트에 데이터를 읽을 때, 데이터 수신을 한 번에 못하는 경우가 있습니다. 예를 들어 MCU와 C#으로 UART 통신을 하는 경우, MCU에서 C#으로 12bytes를 보냅니다. 그러면 DataReceived에서 12bytes를 한 번에 수신하는 경우가 있고, 여러번에 나눠서 수신하는 경우가 있습니다. 이러한 이유는 RX에 신호가들어오면 Receive 이벤트가 발생합니다. 이벤트가 발생하고 처리를할때 수신버퍼에 데이터가 있는만큼 처리를 합니다.(BytesToRead()가 수신버퍼에 있는 바이트수를 보는 함수입니다) 그렇기 때문에 코드는 같더라도 BaudRate에 따라서 이벤트가발생했을때 12bytes가 모두 수신되는 경우도 ..

C# 예외처리 try,catch,finally

안녕하세요 오늘은 C# 예외처리에 대해 알아보겠습니다 예외처리란 프로그램을 작성한사람이 의도치않은 오류가 발생할때, 오류가 생기면 해결을 해주는 기능을 얘기합니다 예를들어 모든수는 0으로 나눌 수 없습니다. 1 2 3 4 5 6 7 static void Main() { int a = 0; Console.WriteLine(100/a); } cs 예외 발생: 'System.DivideByZeroException'(practice.exe) 처리되지 않은 'System.DivideByZeroException' 형식의 예외가 practice.exe에서 발생했습니다. 0으로 나누려 했습니다. 100을 0으로 나누려고 했기때문에 "System.DivideByZeroException"에러가 발생합니다. 저 메세지는 C..

C# this키워드

안녕하세요. 오늘은 C# this에 대해 알아보겠습니다 this는 객체 자기 자신을 지칭할 때 사용합니다. 객체 내부에서 자신의 필드나 메소드에 접근할때 사용합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 namespace practice { class person { public string name; public person(string name) { this.name = name; } } static class Program { static void Main() { person ps = new person("nana"); Console.WriteLine(ps.name); } } } Colored by Color Scripter cs 5번..

C# 생성자

안녕하세요. 오늘은 C# 생성자에 대해 알아보겠습니다. 생성자란 객체를 만들 때, 객체안에 있는 변수의 값을 초기화 해주는것 입니다. 객체를 만들때 값을 초기화해주므로 편합니다. 생성자는 메소드 오버로딩 기능이 있어서 다양하게 생성이 가능합니다 만드는 규칙은 한정자와 클래스이름과 매개변수를 적어주면 됩니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class person { public string name; public string job; public int age; public person() { Console.WriteLine("생성자의 매개변수가 없습니다"); } public person(string _name, int _age) { n..

C# Format 메소드 사용하기

안녕하세요. 오늘은 C# Format메소드에 대해 알아보겠습니다. Format 메소드는 문자열 서식을 맞추는 메소드입니다. 문자열의 일정한 틀과 모양을 갖추는 것을 의미합니다. *왼쪽/오른쪽 맞춤 - 기본 1 2 string result = string.Format("A{0}D", "BC"); Console.WriteLine(result); cs 결과값 ABCD {0}에 BC를 넣고 문자열을 저장합니다. - 공간을 만들고 앞쪽부터 문자열을 채우고 삽입합니다 1 2 result = string.Format("A{0,-5}D", "BC"); Console.WriteLine(result); cs 결과값 ABC D -공간을 만들고 뒷쪽부터 문자열을 채우고 삽입합니다 1 2 result = string.Forma..

C# 문자열 다루기

안녕하세요. 오늘은 C# 문자열 다루는 여러 방법을 예시를 통해서 알아보겠습니다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 static class Program { static void Main() { //문자열 안에서 찾기 // IndexOf 문자열 내에서 찾고자 하는 지정된 문자 또는 문자열의 위치를 앞에서부터 찾습니다 Console.WriteLine("\"wowon\".IndexOf(\"on\") : "+ ..

포인터 활용하기

안녕하세요. 오늘은 포인터의 활용에 대해 알아보겠습니다. 1. 데이터 변환 *포인터 미사용 int형(32비트) 변수에 어떤 값이 있고 이 값을 8비트씩(char형) 쪼개서 저장하는 코드입니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include int main() { int i_A=0b00000100000000110000001000000001;//32비트,00000100 00000011 00000010 00000001 char c_B[4];//8비트 c_B[0] = (i_A>>0) & 0b11111111; c_B[1] = (i_A>>8) & 0b11111111; c_B[2] = (i_A>>16) & 0b11111111; c_B[3] = (i_A>>24) & 0b111..

오토핫키-화면 자동캡쳐

안녕하세요 오늘은 오토핫키로 화면을 자동 캡쳐해보겠습니다. 응용 예시: 모바일 플레이어 (LDPlayer, Nox, 블루스택 등)을 이용해서 게임을 켜놓고 화면을 특정 시간마다 저장하고 싶을 때 사용 가능 1. 헤더파일 다운로드하고 스크립트와 같은 경로에 넣습니다 2.코드 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #Include Gdip_all.ahk Gui, Show,x1000 y400 w300 h50 Settimer, ASub1,1000 ; 1초1000 Asub1: image_capture() return GuiC..