본문 바로가기

교육 노트/C# 강의

(38)
[C# 때려잡기] C# 강의 13. ref 와 out 함수는return 을 만나면 종료하기 때문에 일반적으로 복수개의 값들을 리턴할수가 없다. 함수를 호출한 곳에 두개 이상의 값을 넘겨주고 싶을때는 어떻게 할까? 1. ref using System; namespace ConsoleApp1{ class Program { static void Test(ref int x, ref int y) { x = 10; y = 20; } static void Main(string[] args) { int x = 0, y = 0; Test(ref x, ref y); Console.WriteLine("{0},{1}", x, y); } }} 다음과 같이 ref키워드를 통하여 해당 변수에 값을 대입하면 결국 해당함수를 사용한 곳에서는 x,y 두개의 값을 받았다고 볼수있다.이렇게 ..
[C# 때려잡기] C# 강의 12. 참조형식 자료형 길이가 2인 배열에서 첫번째와 두번째요소를 바꾸는 함수를 짜보자이때 ref키워드를 쓰지않고 그냥 해보자 using System; namespace HelloWorld{ class Program { static void ChangeArr(int[] arr) { int temp = arr[0]; arr[0] = arr[1]; arr[1] = temp; } static void Main(string[] args) { int[] arr = { 10, 5 }; ChangeArr(arr); Console.WriteLine("arr0:{0},arr1:{1}", arr[0], arr[1]); } }} ref키워드를 사용하지않고 값에의한 전달을 하였는데 배열내부의 값이 변경되었다. 1. 참조 형식 이는 C#에서 배열이 ..
[C# 때려잡기] C# 강의 11. call by value / call by reference 지금까지의 내용들은 이해하기 어려운 내용들은 아니였으나이번 강의는 조금 컴퓨터적 사고가 필요해서 어렵게 느껴질 수도 있다. 해당 내용을 가르치기 전에 swap을 배워보자 1. swap (스왑)swap은 변수 2개의 내용을 바꿀때 자주 사용하는 용어이다.두 변수 x = 10; y = 20;일 때 이 두 변수를 x = 20, y = 10 으로 바꾸는 (서로 교환하는) 방법은? 한번 해보자 int x = 10;int y = 20;x = y;y = x; 처음 생각하면 이런식으로 생각하겠지만이렇게 하면 3번째 라인에서 x가 20 이 되어버려마지막 y = x; 는 결국 y = 20 이고 y의 값이 변경되지 않는다.그러면 c++ 에서 변수두개를 스왑하기 위해서는 어떻게 할지 한번 생각해보아라. swap문제를 해결하기..
[C# 때려잡기] C# 강의 10. 메소드 오버로딩 앞에서 함수를 정의 하는 방법을 배웠다 예를 들어 2개의 매개변수를 더하는 결과를 돌려주는 함수를 static int Plus(int x, int y) { return x + y; }과 같이 짯을것이다. 해당함수는 int형식의 변수 2개를 받아 두개의 합인 int값을 돌려주는 과정을 거치된다. 그런데 여기에 매개변수로 int 대신에 float타입을 넣으면 어떻게 될까?따라서 float를 매개변수로 가지는 다른 plus함수를 제작해야할것이다. static int intPlus(int x, int y){ return x + y;}static float floatPlus(float x, float y){ return x + y;}이런식으로 사실상 같은 기능 기대하는 함수를 제작할때함수의 이름이 달라지게 된다...
[C# 때려잡기] C# 강의 9. 메소드 (함수) 프로그램을 만들다보면 중복해서 사용되는 기능들이 나오게되고이걸 죄다 복붙을 통하여 해결하다보면 코드가 지저분해지고 길어지게 된다. C#에서는 이러한 기능을 묶어 재사용할수있도록 일종의 모듈화가 가능한데그것이 바로 메소드(함수)이다C++ 강의자료 복붙이라 이후부터는 함수라 칭하도록 하겠다. 1.함수란 특정한 기능을 수행하도록 나눠진 작업 단위, 수학에서의 함수와 비슷한 의미를 가진다. C# 에서 함수는 다음과 같은 구조를 가진다 (){ return ;} 리턴타입은 돌려주는 리턴값이 어떤 변수 타입인지를 의미하고매개변수느느 해당 함수에 넘겨줄 값을 의미한다. 위 구조대로 들어온 값에 1을 더하는 기능을 하는 함수를 만들어보면 int plusOne(int x) { int y = x + 1; return y; ..
[C# 때려잡기] C# 강의 8. 배열 foreach 여러 개의 변수를 한번에 선언하고 싶거나 연관성있는 여러개의 변수를 하나로 사용하고 싶을때 배열을 사용한다.만약 학생30명을 관리하는 프로그램을 만들기위하여 변수를 선언한다면 int stuID1;int stuID2;... int stuID30; 이런식으로 변수 30개를 만들수는 없으므로 사용하는것이 배열이다 1. 배열의 선언과 사용배열은 같은 타입의 연속된 공간이다. 예시를 보는것이 쉬을듯하다 using System; namespace ConsoleApp1{ class Program { static void Main(string[] args) { int[] stuID = {2018235151,2018235156,2018235169 }; for (int i = 0; i int[,] coordinate; 이..
[C# 때려잡기] C# 강의 7. 반복문 프로그램을 만들다보면 같은 행동을 여러번 하거나 규칙에맞게 여러번 수행해야될 상황이 있을수 잇다. 예를 들어 1부터 10까지의 합을 구하고싶다면using System; namespace ConsoleApp1{ class Program { static void Main(string[] args) { int number = 0; number += 1; number += 2; number += 3; number += 4; number += 5; number += 6; number += 7; number += 8; number += 9; number += 10; } }} 만약 100까지 합을 구하고싶다면? using System; namespace ConsoleApp1{ class Program { static..
[C# 때려잡기] C# 강의 6. 분기문 지금까지는 아주기본적인 c#문법을 배워화면 출력과 입력을 할 수 있게 되었다그러나 이것만으로는 아직 어떠한 기능을 하는 프로그램을 제작 할 수 없다.좀더 기능을 가진 프로그램을 제작하기위해 필요한 두가지 기능이 분기문과 반복문인다이번강의에서는 그중 분기문을 학습하도록 하겠다. 분기문이란 어느 조건에 따라 프로그램의 실행 내용이 분기되는것을 의미한다.c#에서의 대표적인 분기문중 하나가 if문이다. 1. if문 if문은 statement의 내용이 참인가 거짓인가에 따라 참이면 내용을 실행하고 그렇지않으면 해당 내용을 스킵하고 넘어간다 예를 들어서 숫자를 입력하면 해당 숫자가 짝수인지 확인하는 프로그램을 작성해보자 일단 숫자를 입력받을것이다int i = Int32.Parse(Console.ReadLine())..