C#

2020.07.23(목) - 라즈베리파이 & C# Review & python

J_Bin 2020. 7. 23. 15:59

Git

-버전 관리는 중요하다!

1.0 > 1.5 > 2.0 등 자신이 작성했던 코드의 history를 볼 수 있다.

 

 

- vi 편집기에서 

 : q > 저장하지 않고 빠져나오기

 : q ! > 뭔가 사고치고 나온것같을때 빠져나오기

 : w q > 저장하고 빠져나오기

 

-파일압축

압축(zip) 과정 
1. 개별압축 (gzip)
2. 1개묶기 (tar)

tar -cf auto.tar(이름) 대상

 

리눅스는 이 과정을 분리해놓았다.

tar 명령어

 

-cf는 tar의 옵션 중의 하나이다. 압축해라는 옵션 c는 compress f는 file의 약자

tar.gz

다시 원래대로 복구

1. gzip을 다시 풀기

gzip의 -d라는 옵션을 사용하여 다시 압축을 풀었다. d : decompress

2. .png file 모두 삭제

cf)

-v
혹은
--verbose

진행되는 파일의 이름을 화면에 출력함
보통 진행사항을 알 수 있기 때문에 사용

 

3. 파일 하나하나로 다시 풀기

4. 한번에 압축 & 한번에 풀기

 

 

*파이썬(python) 기초

1-1-1. 주석 처리 및 타입설정

python은 변수를 숫자를 넣든 문자열을 넣든 넣으면 알아서 type을 지정해준다.

# 1. 한줄주석 #

'''
여러줄주석1
'''

"""
여러줄주석2
"""
#여기까지 주석 예제


a = 123
print(type(a))

a = 100 * 100
print(a)

a , b = 9 , 2
print(a*b)

a = "파이썬 만세"
print(a)		

print(type(a))	

b = 'python go'
print(b)



1-1-2. 합계 & 배열

# 리스트
a, b, c, d = 0, 0, 0, 0
hap = 0
a = int(input("1번째 숫자 : ")) 	
b = int(input("2번째 숫자 : "))
c = int(input("3번째 숫자 : "))
d = int(input("4번째 숫자 : "))
hap = a + b + c + d
print("합계 => %d" % hap)





# 배열
aa = [0,0,0,0]
# input("첫번째 숫자 : ")은 문자열이기 때문에 int로 casting했다.
aa[0] = int(input("첫번째 숫자 : "))		
aa[1] = int(input("두번째 숫자 : "))
aa[2] = int(input("세번째 숫자 : "))
aa[3] = int(input("네번째 숫자 : "))
hap = aa[0] + aa[1] + aa[2] + aa[3]
# {0}, value    ==     %d, %hap		(같은개념)
print("합계2 => %d" %hap)






# aa라는 배열선언
# 선언은 했지만 초기화는 x
aa = []
aa.append(0)
aa.append(0)
aa.append(0)
aa.append(0)
# 배열의 갯수
print(len(aa))
# 배열모습
print(aa)

bb = []
# for문 범위는 0부터 100까지
for i in range(0,100):
	bb.append(i)
print(bb)

 

*라즈베리파이

*vi 편집기

 

-명령모드

-명령어 입력모드

-편집모드(메모장)

 

편집모드 →← 명령모드 →← 명령어 입력모드 

: 항상 명령모드를 거쳐야한다.

 

in 명령모드

$ : end키

0 : home키

w : word단위로 이동

h : 왼쪽으로

j : 위로

k : 밑으로

l : 오른쪽으로

shift + d : 현재위치로부터 오른쪽으로 전부 삭제

d+d : 한줄삭제 (ctrl + x, 잘라내기)

u : 이전으로(ctrl + Y)

p : 밑으로 붙여넣기

shift + p : 위로 붙여넣기

d : delete

d+w : 단어 단위로 삭제

d + 2(숫자) + ↓방향키 :  현재위치를 포함하여 밑으로(방향) 2줄(숫자만큼) 잘라내기 = ctrl+x

v : 블럭설정, 드래그모드

y : 복사

shift + y : 한줄전체복사

x : 한글자 삭제

d + 99999 + ↓방향키 : 현재위치를 포함하여 밑으로(방향키) 다 삭제

ctrl + r : redo(다시실행)

: q : 빠져나오기(quit)

r + 한글자 : 한글자만 수정/ 바꾸고 바로 명령모드로 돌아옴.

: w : 저장 ctrl + s

 

 

*vi에서 python 코드 작성 및 보여주기

 

*C# Review

1-1-1. ★delegate

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;

namespace _2020._07._23_002
{
    class Program
    {
        /* delegate(위임,대리자) : 새로운 타입을 만드는 것!
        메서드를 가리키는 타입을 만들 수 있다.*/
        delegate int NewType(int iNum);

        static int OnePlus(int iNum)
        {
            return iNum + 1;
        }

        static int TenPlus(int iNum)
        {
            return iNum + 10;
        }
        static void Main(string[] args)
        {
            int TestNum = OnePlus(100);
            Console.WriteLine(TestNum);

            // 지금부터 aNewType이랑 OnePlus랑 같다.
            NewType aNewType = new NewType(OnePlus);
            TestNum = aNewType(1000);
            Console.WriteLine(TestNum);

            // NewType으로 TenPlus 지정
            // 메서드를 복사해서 갖다붙이는 것
            aNewType = new NewType(TenPlus);
            TestNum = aNewType(10000);
            Console.WriteLine(TestNum);


        }
    }
}

1-1-2. delegate로 for문, foreach문

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2020._07._23_001
{
    class Program
    {   // delegate 선언
        delegate int Calculator(int iNum1, int iNum2);
        static int Add(int iNum1, int iNum2)
        {
            return iNum1 + iNum2;
        }
        
        static int Div(int iNum1, int iNum2)
        {
            return iNum1 / iNum2;
        }

        static int Sub(int iNum1, int iNum2)
        {
            return iNum1 - iNum2;
        }

        static int Mul(int iNum1, int iNum2)
        {
            return iNum1 * iNum2;
        }


        static void Main(string[] args)
        {
            int iResult;
            // delegate 사용
            Calculator[] aCalculator = new Calculator[] { Add, Sub, Mul, Div };
            Console.WriteLine("=================for문");
            for (int i = 0; i < aCalculator.Length; ++i)
            {
                iResult = aCalculator[i](3, 4);
                Console.WriteLine(iResult);

            }
            Console.WriteLine("=====================");

            Console.WriteLine("=================foreach문");
            foreach (Calculator Temp in aCalculator)
            {
                iResult = Temp(3, 4);
                Console.WriteLine(iResult);
            }
            Console.WriteLine("=====================");

            // 밑에 코드는 for문을 사용하지 못한다.
            // 메서드의 이름이 다 다르기 때문에
            Console.WriteLine("=================노가다");
            iResult = Add(3, 4);
            Console.WriteLine(iResult);
            iResult = Sub(3, 4);
            Console.WriteLine(iResult);
            iResult = Mul(3, 4);
            Console.WriteLine(iResult);
            iResult = Div(3, 4);
            Console.WriteLine(iResult);
            Console.WriteLine("=====================");


        }
    }
}

1-1-3. delegate C# 8.0 (188p) switch case문

using System;

public class Mathematics
{   // delegate선언 메서드라 변수가 있어야됨.
    delegate int CalcDelegate(int x, int y);

    static int Add(int x, int y)
    {
        return x + y;
    }

    static int Subtract(int x, int y)
    {
        return x - y;
    }

    static int Multiply(int x, int y)
    {
        return x * y;
    }

    static int Divide(int x, int y)
    {
        return x / y;
    }

    CalcDelegate[] methods;

    public Mathematics()
    {
        methods = new CalcDelegate[] { Mathematics.Add, Mathematics.Subtract,
                                       Mathematics.Multiply, Mathematics.Divide };
    }

    public void Calculate(char opCode, int operand1, int operand2)
    {
        Console.Write(opCode + " : ");
        switch (opCode)
        {
            case '+':
                Console.WriteLine(methods[0](operand1, operand2));
                break;

            case '-':
                Console.WriteLine(methods[1](operand1, operand2));
                break;

            case '*':
                Console.WriteLine(methods[2](operand1, operand2));
                break;

            case '/':
                Console.WriteLine(methods[3](operand1, operand2));
                break;
        }
    }
}

namespace _2020._07._23_003
{
    class Program
    {
        delegate void WorkDelegate(char arg1, int arg2, int arg3);

        static void Main(string[] args)
        {
            Mathematics math = new Mathematics();
            WorkDelegate work = math.Calculate;
            work('+', 10, 5);
            work('-', 10, 5);
            work('*', 10, 5);
            work('/', 10, 5);
        }
    }
}