본문 바로가기

프로그래밍 언어/코틀린_쌩초보를 위한 기초

쌩초보를 위한 기초_13_함수의 진화C Lambda functions (람다 함수) 와 Function Reference (함수 참조) 이번에는 고차함수를 구현하기 위해 사용하는 람다 표현과 함수 참조에 대해 살펴본다. main()함수 밖에 고차 함수를 하나 만들자. 함수명은 calculate(계산하다)로 한다. fun calculate(x: Int, y: Int, work: (Int, Int) -> Int): Int { } 매개변수는 3개 (x, y , work) 이다 매개변수 work의 타입(Type)이 람다함수로 되어있다. 그 모양은 Int타입 2개를 하나의 Int타입으로 만든다. 그 다음에 콜론( : )으로 구분한 후 뒤에 반환형(Return Type)이 표시되어 있다. 이제 고차함수 work가 들어오는 인자(argument)를 받아서.. 더보기
쌩초보를 위한 기초_12_함수의 진화B 함수형 프로그래밍(Functional Programming) 고차 함수(Higher-Order Function) 먼저 고차 함수를 설명하기 전에 함수형 프로그래밍에 대해 알아본다. 이전 글에서 코틀린은 객체 지향 프로그래밍 뿐만 아니라 함수형 프로그래밍을 추구한다고 했다. 함수형 프로그래밍의 목표는 같은 인자(argument)를 넣으면 항상 같은 결과를 반환하는 것이다. 한마디로 에러가 나지 않는 완전한 함수를 추구하는 것이다. 함수형 프로그래밍을 완성하기 위해서는 함수가 다른 객체들을 마음껏 통제할 수 있어야 하고 또한 함수를 어디에서나 활용할 수 있어야 진정한 함수형 프로그래밍을 구현할 수 있다. 함수를 매개변수로 사용할 수도 있고 함수를 통째로 반환(전달)할 수도 있고 변수에 함수를 넣을 수도 있어.. 더보기
쌩초보를 위한 기초_11_Type검사와 null null (널) 함수의 진화B를 다루기 앞서 type(타입, 형) 검사에 대해 알아본다. 변수를 선언할 때 아래 처럼 변수명, type(형)을 콜론으로 구분하여 정의한다는 것을 알았다. 아래 코드를 입력 해 보자. 그런데 빠진것이 있다. 위 변수 nullTest는 현재 값(value)이 없는 상태다. 이 처럼 변수에 값을 정하지 않거나 없는 경우가 있을 것이다. 이렇게 ‘값이 없는 상태’를 null(널)이라고 한다. 코틀린은 변수를 사용할 때 반드시 값이 할당되어 있어야 한다. 즉, null을 허용하지 않는다. 이제 변수(nullTest)에 문자열 값을 넣어서 초기화 한다. 초기화(initialization)는 변수를 처음 선언할 때 값을 넣는 것이다. 초기화를 나중에 하는 lateinit 과 lazy .. 더보기
쌩초보를 위한 기초_10_함수의 진화A 함수의 진화A : 기본 함수 이번에는 앞에서 잠깐 맛보았던 함수를 복습하고 추가로 알아야 할 함수의 표현을 알아본다. 함수의 기본 형태 fun name(param1_name : Type, param2_name : Type, ...) : Return Type { } 함수는 fun 키워드로 시작한다. fun 다음에는 함수의 이름을 적는다. 이름은 camelType으로 만드는 것이 좋다. 괄호 안에는 매개변수(파라미터) 이름과 변수형(타입)을 콜론으로 구분한다. 매개변수가 여러 개 일때는 쉼표로 구분한다. 콜론 다음에 함수에서 반환(전달)하려는 값의 형(타입)을 적는다. 함수의 본체는 중괄호{} 사이에 적는다. 기본 형태의 함수를 작성해 보자. 이제 반환할 본체를 적어보자. return은 return stat.. 더보기
쌩초보를 위한 기초_09_범위_scope 코드의 범위 컴퓨터 프로그래밍을 배우지 않은 사람은 작성된 코드를 볼 때 영어는 차치하고라도 각종 기호의 의미와 어떻게 작동하는지 감을 잡을 수 없다. 그래서 더욱 어렵게 느껴지는 것이다. 이 글에서 알아볼 scope(범위)도 이런 종류의 정의다. 프로그램이 실제로 작동할 때까지는 보이지는 않지만 여러 단계를 거친다. 사람이 코드를 작성한다. 사람이 실행한다. 컴파일러 프로그램이 기계어로 번역한다. 기계어를 CPU가 순서대로 메모리에 넣고 빼면서 열불나게 일한다. 이런 과정을 거쳐 그 결과가 화면에 나타나는 것이다. 여기서 가장 중요한 것은 작성한 코드가 컴파일러로 넘어가는 과정이다. 컴파일러 프로그램은 코드를 기계어로 번역하는데 이것을 '해석(interpreter)'이라고 한다. 해석은 코드를 잘 만들.. 더보기
쌩초보를 위한 기초_08_변수형_String 변수 타입 Char 와 String 이번에는 변수형 중에서 문자형에 대해 알아본다. 문자형에는 2가지가 있다. Char String Char은 Character(문자,성질)의 준말로 '하나의 문자'에 사용한다. String 은 문자열에 사용한다. Char형은 작은따옴표를 사용한다. 한 글자 숫자(0,1,2 ~ 9)를 Char형으로 사용하면 문자형이 된다. String형은 큰따옴표를 사용한다. 숫자를 String형으로 사용하면 문자형이 된다. 아래 코드를 작성한 후 실행해 보자. 문자열을 여러 줄에 걸쳐 나타낼 때는 큰따옴표 3개를 사용한다. 문자열 내부에 변수를 사용할 때는 변수명 앞에 $ 기호를 앞에 붙인다. 그리고 변수명을 중괄호{ }로 감싸면 변수값과 글자를 붙일 수 있다. 문자열을 연결할 때는 +.. 더보기
쌩초보를 위한 기초_07_변수 타입_Number 데이터 타입 (Data Type) 앞에서 변수를 선언할 때 기본적으로는 변수 이름과 함께 변수의 형(타입)도 함께 표시해야 한다고 했다. 이 변수형은 왜 필요한 것일까? 간단히 말하면 변수를 저장할 메모리의 크기와 저장할 형식을 파악하기 위해서이다. 예를 들어 축구공 1개를 넣으면 딱 맞는 크기의 상자가 있다고 하자. 이 상자에는 한번에 한 가지만 넣을 수 있다. 그런데 탁구공 1개를 넣어보자. 이것은 공간의 낭비다. 그 다음에는 탁구공을 빼고 농구공을 넣어보자. 이것은 공간 부족이다. 이것을 해결하는 방법은 미리 어떤 공을 넣을 것인지 알고 그것에 맞는 크기의 상자를 준비하는 것이다. 마찬가지로 변수를 선언하면 딱 1개만 저장할 수 있는 메모리 공간이 생긴다. 그래서 한정된 메모리를 더 효율적으로 사용.. 더보기
쌩초보를 위한 기초_06_Variable_변수 Variable(변수)와 Type(타입: 유형) Variable(변수) 변수는 상자라고 생각하자. 변수는 상자처럼 무엇을 담아 두거나 저장하는 곳이다. 상자를 3개 만들려면 먼저 상자에 이름을 적는다. car , plane , train 이제 car 상자에는 자동차 유형(Type)만 넣고 plane 상자에는 비행기 유형(Type)만 train 상자에는 기차 유형(Type)만 넣을 수 있다. 코틀린에서 변수에 넣을 수 있는 것을 데이터(Data)라고 부른다. 데이터는 여러 종류이며 각각 유형(Type)이 있다. 이미 앞에서 String(문자열)과 Int(정수)를 사용해 보았다. 이런 것을 DataType(데이터 타입) 줄여서 Type(타입, 유형)이라고 부른다. 변수타입에 대해서는 나중에 자세히 살펴본다... 더보기