일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 알고리즘
- c++
- 리뷰
- Desktop
- Tips강좌
- 함수
- Programming
- tipssoft
- Kotlin
- c
- Win32
- VS ERROR
- Javascript
- 프로그래밍
- 포인터
- Visual Studio
- CS
- 백준
- 문법
- 연산자
- 지식나눔강좌
- 김성엽
- Tips프로그래밍강좌
- 배열
- c#
- Windows
- Direct2D
- 티스토리
- 이지스퍼블리싱
- doit코틀린프로그래밍
- Yesterday
- Today
- Total
목록All (383)
F.R.I.D.A.Y.
오늘 시간에는 컴파일러 최적화에서 대상 변수를 제외하는 volatile 키워드를 알아보겠습니다. volatile 휘발성의, 변덕스러운 등의 뜻을 가진 volatile은 사용되는 변수의 값 변경이 확실히 이루어져야할 때 사용합니다. 우리가 컴파일을 진행할 때, 컴파일러는 만들어지는 프로그램의 속도 향상을 위해 코드 최적화를 시행합니다. 코드 최적화 과정에서는 우리가 의도적으로 만든 코드가 일부 변경되기도하는데요, 그 과정에서 값의 대입이 무시되는 경우가 있습니다. 아래 코드를 보겠습니다. #include int main(void){ int var = 5; var = 3; var = 2; printf("var의 값: %d\n", var); return 0; } 이 코드에서는 int 타입의 변수 var에 처음..
위 이미지처럼 종종 숫자를 순서대로 나열하는 것이 아니라 지그재그로 출력하도록 하는 문제가 있습니다. 이 문제를 어떻게 해결하는지 알아보겠습니다. 수식 찾기 이미지의 숫자에 대한 정규식을 찾아보죠. 1, 3, 5번째 라인의 경우 x좌표[# 편하게 이야기해서 x좌표지 실제로는 column. 열이 되겠네요.]의 증가와 따라가는데 반해 2, 4번째 라인은 x좌표에 역행하는 것을 알 수 있습니다. 마구잡이로 식이 변경되는 것이 아니라 홀수 라인은 정방향, 짝수 라인은 역방향임을 알 수 있습니다. 따라서 우리는 아래처럼 수식을 만들 수 있겠네요. 홀수 라인 (현재 라인 번호 - 1) * 5 + (현재 x좌표) 짝수 라인 (현재 라인 번호) * 5 - (현재 x좌표 - 1) 프로그램에서는 0부터 시작합니다. 따라서..
이전 시간에 우리는 언어의 패러다임을 배웠습니다. 그 내용에는 일급 객체에 대한 내용도 함께 실려 있는데요, 이번 시간에는 일급 객체, 특히나 고차 함수에 대해 알아보겠습니다. 고차 함수 먼저 고차 함수가 무엇인지 알아보겠습니다. 고차 함수는 "함수를 인자로 사용하거나, 함수를 반환하는 함수"입니다. 달리 이야기하면, 일급 객체(일급 함수)를 서로 주고받을 수 있는 함수가 있다면 그 함수가 고차 함수가 되는 것입니다. fun main(args:Array){ TestFunc() } fun TestFunc(): Int{ return sum(2, 4) } fun sum(a:Int, b:Int) = a + b 이 코드에서는 TestFunc()가 고차 함수의 조건을 만족하고 있습니다. 함수를 인자로 활용하지는 않..
이전 파트의 끝머리에서 15번째 포스트는 람다식이 될 것이라고 했습니다. 그러나 람다식을 배우기 전에 꼭 알아두어야 할 필요가 있다고 생각한 것이 생겨서 람다식을 후순위로 미루게 되었습니다. 이번엔 함수형 프로그래밍이 무엇인지 알아봅니다. 언어의 패러다임 세상에는 많은 프로그래밍 언어가 존재합니다. C/C++, Java, C#을 시작으로 python, Go, Kotlin, Javascript[#ECMAScript 현재 JS는 기존의 오명을 씻고 표준을 잘 제정해 여태 이 언어를 싫어하던 개발자들도 포섭하는 행태를 보이고 있습니다. 이전의 JS와는 많은 차이를 보이고 있으니 관심 있게 지켜보셔도 좋습니다]까지. 이들 언어는 각자 필요에 의해 만들어진 언어로서 언어가 지향하는 방향과 그 패러다임이 다릅니다...
오랜만에 코틀린 포스트를 다시 시작하는 과정에서 오류를 찾았다. Kotlin Playground: Edit, Run, Share Kotlin Code Online play.kotlinlang.org 위 링크의 코드인데, 확인해보면 오류가 발생하는 것을 알 수 있다. fun abs(a:Int):Int{ if(a > 0) return a return -a } fun main(args:Array) { for(i in 1..5){ print("${i}번 째 입력:") val input:Int = readLine()!!.toInt() var ret:Int = abs(input) if(ret > 150){ ret -= 150 } println("${input}의 계산 결과는 ${ret}입니다.") } } 이에 반해..
함수 파트에서 떨어트리고 지금 나온 인라인&익명 함수입니다. 두 문법은 사실 함수 파트를 다룰 때 이어서 함께 작성해도 되지 않았을까 싶은 생각이 듭니다. 이미 지나가버린 걸 어떻게 하겠어요? 시작합니다. 함수의 준비 우리가 특정 작업을 한다고 했을 때, 사전 작업으로 무엇을 할까요? 먼저 작업에 필요한 물건을 가져오거나, 환경을 조성하겠죠. 제가 블로그에 글을 쓰기 위해 컴퓨터를 켜고 로그인을 하는 것처럼 말이죠. 우리 프로그램도 각 작업을 하기 위해서는 사전 작업이 필요합니다. 프로그램은 거대한 하나의 구조물이라 볼 수 있습니다. 이 거대한 구조물을 하나하나 쪼갠 것이 함수죠. 스택 작업 함수 파트에서 봤지만 함수에는 인자를 넘겨줄 수 있습니다. 이렇게 인자로 전달된 값들은 매개 변수의 값이 되는데요..
우리가 살면서 목돈을 마련하는 이유는 무엇일까요? 미래를 예측할 수 없기 때문에. 즉, 만일의 상황이 발생했을 때 이를 대비하기 위해 목돈을 마련해둡니다. 프로그램에서도 이렇게 목돈과 같은 문법이 존재합니다. 이번 시간에는 프로그램에서 갑작스럽게 발생할 수 있는 오류를 대비하는 예외 처리를 배워봅니다. 문제 이해하기 0으로 나누기 사용자로부터 두 수 A와 B를 받아서 A/B의 결과를 출력하는 프로그램을 만든다고 생각해보겠습니다. fun main(args:Array){ var a:Int var b:Int print("A 값 입력: ") a = readLine()!!.toInt() print("B 값 입력: ") b = readLine()!!.toInt() println("A / B = ${a/b}") } ..
책에서는 영역입니다. 책은 람다식(Lambda expression), 인라인 함수(inline function) 등 구성에 대해서는 이미 나왔습니다. 프로그램을 처음 배운다면 람다식이나 인라인 함수 등은 솔직히 어려울 수 있습니다. 그래서 후순위로 미뤄두고 기본적인 문법 사항이 모두 포스트 된 다음에 글을 쓰려고 합니다. 그래서 return 키워드를 이용한 제어는 다른 포스트에서 후술 하겠습니다. 흐름 제어하기 이전 시간에 반복문에 대해 알아봤습니다. 이 문단에서는 반복문의 흐름을 제어하는 방법을 알아볼 것입니다. break 코틀린에서는 break라는 키워드가 존재합니다. 먼저 break란 단어의 의미를 알아보겠습니다. 반복문이라는 흐름을 깨버리는 것이 break라고 생각할 수 있습니다. 실제로도 그렇게..
이전 시간에 for 구문에 대해 알아봤습니다. 이번엔 while, do-while 반복문에 대해 알아보겠습니다. while 구문 사람마다 성향 차이가 있듯이 코드를 작성하는 사람마다 선호하는 반복문이 있습니다. 그래서 여러 반복문을 제공하는 것이겠죠. 그런데 무한 반복을 하는 경우에는 while을 사용하곤 합니다. 그런데 코틀린에서는 for 반복문과 while 반복문이 서로 완벽히 하는 일이 다른 것 같네요. for 반복문이 범위를 정해서 하도록 강제한다면, while 반복문의 경우에는 조건식(평가식)이 참(true)인 경우에만 반복하도록 합니다. 구조 코틀린 while 구문의 구조는 아래와 같습니다. while(expression){ //commands } 간단히 소개한 것처럼 expression을 평..
만일 100개의 정보를 일일이 확인하는 과정을 직접 손으로 작성해야 한다면, 어떻게 하실 건가요? 오늘은 분기 제어 구문과 함께 프로그램에서 양대 산맥으로 생각할 수 있는 반복문에 대해 알아봅니다. for 구문 많은 경우에서 사용하는 for 구문입니다. while, do-while 반복문에 비해 높은 사용 비중을 가지고 있습니다.[# 초기화, 종결, 증감 식이 한 줄에 표현되어있기 때문이라는 것이 우세합니다.] 코틀린에서는 아래처럼 for 구문을 구성할 수 있습니다. 구조 for(bar in (min)..(max)){ //commands } bar는 for 구문이 반복되며 증감하는 값을 가지는 변수입니다. 기존의 변수 선언 방식에서 사용하는 var를 for 반복문에서는 사용할 수 없습니다. 사용 실제 코..