반복되는 작업을 하나의 이름으로 등록해 놓고 호출하는 방법
1. 반복문
- while, do while, for문
단일 for / 다중 for
- 출력반복을 하기 위한 문장
- 코드 단일화
<형식>
for(초기값; 조건; 증감/증가식)
{
명령;
}
int i = 1;
while(i<3)
{
Consloe.WriteLine("{0}",i);
i++;
}
---->for
<ex>
for(int i=1;i<3;i++)
{
console.WriteLine("{0}",i);
}
초기화 -> 조건 -> 명령 -> 증감 -> 조건(true)
-> 명령 ->증감 ->조건(true)
-> 명령 ->증감 ->조건(true)
-> 명령 ->증감 ->조건(false)
- 무한루프
for(;;){명령;} // 명령이 계속 돈다.
- 다중 for 문
for (){} - for (){}
<형식>
for (;;)
{
for (;;)
{
}
}
<ex>
for(int i=1;i<=2;i++)
{
for(int j=1;j<=3;j++)
{
Console.Write("abc");
}
}
입력용 - while, do while ,
while (조건) // 조건에 만족할때까지 수행 ex)카드로 돈을 찾을때
{
명령;
{
do // 명령을 실행 후 조건을 만난다. ex)기차표 예매 후 취소
{
명령;
}while(조건);
출력용 - for
- if()조건문
-단일 if와 다중 if 가 있다.
<형식>
if (조건 )
{
명령;
}
-만일 조건이 만족하면 명령을 수행
<ex> 만일 (a가 10보다 크면)
{
크다라고 출력하자
}
if (a > 10)
{
Console.WriteLine("크다");
} //{}없을경우 첫문장만 True로 인식한다.
<형식>
if(조건)
{
true 명령;
}
else
{
false명령;
}
-- 다중if --
<형식>
if(조건)
{
true 명령;
}
else if(2조건)
{
false명령;
}
else if(3조건)
{
false명령;
}
<ex>
//문제 : 입력한 수가 양수이면 그 수에 +100
//입력한 수가 음수이면 그 수에 -100
//나머지는 0이라고 출력
if (a > 0)
{
Console.WriteLine("{0}",a + 100);
}
else if (a < 0)
{
Console.WriteLine("{0}", a - 100);
}
else
{
Console.WriteLine("0");
}
2. 함수
- ()를 가지고 선언과 동시에 &을 갖는다.
- 선언된 함수는 호출 시에만 명령을 수행하고 호출이 끝나면 다시 돌아간다. (binding)
- binding된 함수는 메모리를 차지하지 않는다.
<형식> void형과 dataType형이 있다
- void형
접근지정자 키워드 void함수이름(매개변수)
{
명령; //단, 키워드와 매개변수는 선택적
}
<ex>
public static void test()
{
}
<실전>
using System;
using System.Collections.Generic;
using System.Text;
namespace Day1017
{
class ETest
{
public void Test2() //static이 없다.
{
Console.WriteLine("내용4");
}
public static void Test()
{
Console.WriteLine("내용3");
}
class FunClass1
{
public static void Test()
{
Console.WriteLine("내용1");
Console.WriteLine("내용1");
Console.WriteLine("내용1");
Console.WriteLine("내용1");
Console.WriteLine("내용1");
}
public static void GTest()
{
Console.WriteLine("내용2");
}
public static void Main(String[] args)
{
Test(); //내용1
GTest(); //내용2
ETest.Test(); //내용3
//class명.멤버
ETest t1= new ETest();
t1.Test2(); //내용4
}
}
}
}
//static 선언을 하자마자 주소번지 준비,주소가 있기때문에 바로 Test()로 부르지만
//static 없을 경우는 주소번지가 없기 때문에 ETest t1 = new ETest(); 를 사용하여 불러서 출력한다
- 함수 호출시에는 함수이름만 부른다.
<ex> Test();
단, void 함수는 return 키워드가 없다.
void 함수는 스스로 결과값을 출력 및 저장한다.
- 매개 변수를 가진 함수를 호출할 때는 반드시 매개 상수를 대입후 호출한다.
static void test(int b)
{
}
-묵시형 변환을 할 수 있을까?
당연히 할수 있다.
<실전 OverLoad>
using System;
using System.Collections.Generic;
using System.Text;
namespace Day18
{
class Overtest1
{
public static void Test(int a)
{
Console.WriteLine("Int {0}", a);
}
public static void Test(float a)
{
Console.WriteLine("Float {0}", a);
}
public static void Test(double a)
{
Console.WriteLine("Double {0}", a);
}
public static void Test(char a)
{
Console.WriteLine("Char {0}", a);
} //오버로드시에 해당 데이터 매개인자가 없을 경우 알아서 묵시형변환하여 출력된다.
//double형을 묵시형 변환 되었을때 int로 출력하게 하려면 에러 출력 변환되지 않는다.
public static void Test(string a)
{
Console.WriteLine("String {0}", a);
}
public static void Main(String[] args)
{
Test(3);
Test(3.14f);
Test(3.14);
Test('A');
Test("abc");
}
}
}
※ 이런 오류
자료는 있지만 {}로 자료 배열을 하지 않을경우 에러는 없지만 자료는 출력되지 않는다.
디버거 : {} 값 배열에 관련된 오류
디버거 창에서 오류 클릭 후 <확인> 하면 오류줄을 지칭해준다.
} 더 있을경우 네임스페이스 에러
===============================================================================
datatype형의 함수
<형식>
접근지정자 키워드 datatype함수 이름(매개 변수)
{
return datatype의 상수;
}
- 함수이름을 호출하면 datatype의 상수를 리턴해준다.
- 값을 리턴하기 때문에 호출 시 에는 그 값을 받을 변수가 있어야 함.
- 가장 중요한 것은 함수를 선언 시에는 반드시 해당 함수의 자료형과 리턴하는 상수가 자료형이 일치하여야 한다.
<ex>
public static int test()
{
return 100;
}
int a = test(); // 값 : 100
3. class -> 사용자 DataType
user가 자주 사용하는 DataType들을
class라는 키워드를 이용하여 하나의 이름으로 등록하는 것
-접근 지정자 / class멤버 변수와 메소드 / 지역, 전역
class의 목적 : 은닉된 멤버 변수에게 (private 변수)
오픈된 멤버함수가 (public형 메소드)
값을 전달 및 변경하고 (public void setUserName())
리턴한다.(public datatype getName())
- 형 변환을 막기 위함
4. file
5. dll
※ dll > file > class > 함수 > 반복문 : dll은 file을 포함하고 file은 class를 포함하고 class는 함수를 포함하고 함수는 반복문을 포함한다.