본문 바로가기

교육 노트

(99)
[C++ 때려잡기] C++ 심화강의 15 예외처리 예외처리는 예외 상황을 처리하는것이다. a,b를 입력받고a/b를하는 프로그램이다. 여기서 b가 0이라면 a/b를 할수없다따라서 이런식으로 if문으로 예외처리를 해줘야 한다. 이렇게 간단한 예외는 if문으로 해줘도 프로그램만 잘동작하면 문제가 없긴하나..예외상황이 많아지면 if문 지옥이 되버리고 각 if문에서도 처리해야될 내용이 많아지게된다. 1.try-catch 따라서 거의 대부분의 프로그래밍 언어는 예외처리를위한 특수한 구문 try-catch 구문을 지원한다.구문이다.ry구문은 예외처리가 동작할 구문이다.catch 구문은 throw된 예외를 잡아서 처리하는 구문이다.throw는 예외 객체를 던지는 구문이다. 위에는 0으로 나누려고 하면 int를 던지고 이를 캐치에서 받아서 처리하는 구문이다. try구문..
[C# 때려잡기] C# 강의 37. 예외처리 예외처리는 예외 상황을 처리하는것이다. static void Main(string[] args) { int a; int b; a = Int32.Parse(Console.ReadLine()); b = Int32.Parse(Console.ReadLine()); Console.WriteLine(a/b); } a,b를 입력받고a/b를하는 프로그램이다. 여기서 b가 0이라면 a/b를 할수없다 static void Main(string[] args) { int a; int b; a = Int32.Parse(Console.ReadLine()); b = Int32.Parse(Console.ReadLine()); if (b != 0) { Console.WriteLine(a / b); } }따라서 이런식으로 if문으로 예..
[C# 때려잡기] C# 강의 36. 제네릭 컬렉션 딱히 설명할것은 없고.. 제네릭으로 만들어진 컬렉션이다. using System.Collections.Generic; 를 필요로하고 ArrayList ->ListStack,Queue -> 뒤에 추가HashTable -> Dictionary 로 변경하면 된다 List l = new List(); Dictionary d = new Dictionary();요런식 앞서 말했듯이모든 클래스는 Object의 자식이므로 ArrayList 는 List 와 사실상 같다 static void Main(string[] args) { List l = new List(); ArrayList a = new ArrayList(); l.Add(10); a.Add(10); l.Add("string"); a.Add("string"); ..
[C# 때려잡기] C# 강의 35. 컬렉션 지금까지 여러변수를 다루기 위하여 배열을 이용하였다.2018/10/03 - [교육 노트/C# 강의] - [C# 때려잡기] C# 강의 8. 배열 foreach그러나 배열만으로 사용하기에는 귀찮은 점이 조금많다.일단 사이즈가 처음 지정되면 변경이 불가능하고FIX 된 데이터가 아니면 배열은 사용하기 귀찮다. 물론 C#의배열은 상당히 강력한 기능을 제공해주기는 한다만.. 아무튼 이러한 데이터들의 모음들을 관리하기위하여 사용하는 것이 자료구조이고 C#에서는 컬렉션이라는 이름으로 각종 클래스를 만들어 두었다. using System.Collections; 를 추가해주어야 사용할수있다. 1. ArrayList배열처럼 사용가능하지만 크기가 동적이다. class Program { static void Main(strin..
[C# 때려잡기] C# 강의 34. 제네릭 1. 제네릭 메소드 저어어어말 예전에Swap함수를 짠적이 있다. class Program { static void MySwap( ref int a,ref int b) { int temp = a; a = b; b = temp; } static void Main(string[] args) { int a = 10; int b = 20; MySwap(ref a, ref b); Console.WriteLine("{0},{1}",a,b); } }요런식으로 짯다.근데 해당 함수는 int만 가능하다.여기에 double이나 기타등등 까지 다 스왑하고 싶다면.. static void MySwap( ref int a,ref int b) { int temp = a; a = b; b = temp; } static void My..
[C# 때려잡기] C# 강의 33. 클래스와 구조체 예전에 구조체는 값을 묶어 관리하는 거고 클래스는 행동까지 (함수까지) 묶어 관리하는거라고 했는데거짓말이다. 구조체도 함수를 가질수있다.C++ 에서는 구조체랑 클래스랑 기본 접근제한자를 제외하고 완전 동일하고 C# 에서 구조체는 좀더 가볍게 관리가능한 클래스로 보면된다. 근데 왜 이런거짓말을 했느냐하면 C에서 전통적인 구조체(struct) 는 값만 묶어 관리 할수있었는데 여기서 발전되어 Class가 나온것이기때문에..전통적으로 이렇게 구분하기 때문이다. 설명하기도 편하고.. 암튼 1, C#에서의 구조체와 클래스https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/structs여기 잘 설명되어있는데 간단하게 ..
[C# 때려잡기] C# 강의 32. 추상클래스와 인터페이스 1. 추상클래스 weapon이놈은 사실 상속을 위해서만 만들어놓은 놈이고 new weapon이나 Weapon w; 이런식으로 웨폰 객체를 만들일은 없다.그런데도 불구하고 attack 함수를 구현할 필요는 없다. 그래서 내용을 지웠다. namespace ConsoleApp4{ class Weapon { public virtual void Attack() { } } class Knife : Weapon { public override void Attack() { Console.WriteLine("칼로 공격!"); } } class Program { static void Main(string[] args) { Weapon w = new Knife(); w.Attack(); } }} 이렇게 코딩을 하고 같이 개..
[C# 때려잡기] C# 강의 31. 가상함수, 정적 바인딩, 동적바인딩 class Weapon { public void Attack() { Console.WriteLine("무기로 공격!"); } } class Knife : Weapon { public void Attack() { Console.WriteLine("칼로 공격!"); } } 출처: https://see-ro-e.tistory.com/133 [SeeRoE 프로그래밍 기록]저번에 이런식으로 오버라이딩 했다. 여기서 이렇게 weapon을 다운캐스팅 하지 않고 그상태로 attack을 호출하게 되면 어택의 부모가 불리게된다. namespace ConsoleApp4{ class Weapon { public void Attack() { Console.WriteLine("무기로 공격!"); } } class Knife : ..