시리즈:쉽게 배우는 프로그래밍 입문: 두 판 사이의 차이

잔글 (→‎주석)
403번째 줄: 403번째 줄:


=====#include=====
=====#include=====
특정 파일의 내용을 가져와서 포함시킨다.
<source lang = c>
#include <stdio.h>
int main(void)
{
printf("Hello, World!");
return 0;
}
</source>
위 소스 코드에서, #include <stdio.h>의 위치에 stdio.h 헤더파일의 내용이 옮겨진다. printf함수는 stdio.h 헤더파일 내에 선언되어있는 변수이다.
<source lang = c>
#include <헤더파일>
#include "헤더파일"
</source>
이렇게 두 가지 모양으로 쓸 수 있는데, <>는 컴파일러에 지정되어 있는 폴더에서 헤더파일을 찾고, ""는 소스 코드 파일이 있는 폴더에서 헤더파일을 찾는다.
=====#if=====
=====#if=====
=====#elif=====
=====#elif=====

2015년 5월 15일 (금) 01:14 판

문서의 내용이 너무 쉬워서 오늘부터 프로그래밍 할 수 있을 것 같습니다.

이 문서에는 독자적으로 연구한 내용이 들어갑니다. 다른 사람의 의견을 존중하면서 무례하지 않도록 작성해 주시고, 의견 충돌 시 토론 문서에서 토론해 주세요.

들어가기 전에

이 항목은 예비 컴퓨터공학/과학 생들이 프로그래밍의 기초적인 내용을 적는 집단연구문서입니다.

이 항목에 내용을 추가하시는 분들께서는 대상층이 예비 대학교 1학년생이라 생각하시고 내용을 추가해 주셨으면 좋겠습니다.

만약에 항목에 없는 새로운 언어를 기준으로 추가하실 경우, 새로 목차를 만들어 주시길 바랍니다.

공통 용어

  • 변수
  • 상수
  • 함수
  • 컴파일러
  • 통합 개발환경

Python

일단 Python은 타 프로그래밍과 다르게 문법상 예외라는게 없다. 베이직보다도 깐깐하다 그 때문에, 파이썬에서 만약 에러가 나온다면 그 부분은 대부분 예외적인 사항을 임의적으로 썼다는 이야기다. 흔히 예외가 적용되는건 중간에 탭을 쓰느냐 스페이스 네번을 누르냐 정도고그게 그거잖아 게다가 섞어쓰면 안 된다, 나머지는 몽땅 예외가 없다고 생각을 하면 되게 만들어져 있는 만큼, 알 수 없는 에러가 뜬다고 좌절하지 말자. 그냥 오타낸거라고 생각하면 된다.

그러니까, 제대로된 Python교본만 준비되어 있으면, 타 프로그래밍보다 훨씬 빠른 속도로 익힐수가 있다. 분명 어딘가 안되면 오타낸거고, 구사한 표현법이 오타가 난 것이다. 그 때문에 일주일정도만 노력하면 매크로를 만들수 있다. 진짜다!!

준비

다운로드

  • 윈도우(32비트)의 경우
다운로드
  • 윈도우(64비트)의 경우
다운로드
  • 리눅스의 경우
패키지 관리자로 python 혹은 python3를 설치합니다.

위의 링크는 Python 3.4버전을 다운로드 받습니다.

Python은 크게 Python 2.x버전과 Python 3.x버전으로 나뉜다. 두 버전은 세세한 문법에서 차이를 보이며, 이로 인해 Python 2.x의 코드를 3.x에서 그대로 사용하는 것은 불가능하다. 이렇게 된 이유는 Python 항목의 내용을 참고하자.

Python 3.x버전의 출시 초기에는 기존에 만들어진 자료와의 호환성 문제 등으로 인해 Python 2.x버전을 계속 사용하는 경향이 있었으나 Python 3.x의 호환성 문제 등이 개선되면서 굳이 추가적인 기능추가가 중단된 Python 2.x를 배워야 할 이유는 낮아졌다.

만약 아래의 강좌가 아닌 다른 강좌로 Python을 배우실 계획이라면 해당 강좌에서 사용하는 Python의 버전을 확인해야 한다. Python 3.x버전을 깐 상태에서 2.x시절의 코드를 그대로 넣으면 깔끔하게 에러가 나고, 이 반대도 마찬가지기 때문이다. 이왕이면 새로 배울거 Python 3.x버전으로 배우자.

실행

시작의 Python 3.4의 IDLE (Python 3.4 GUI)을 실행시킵니다.

Hello, World!

대부분의 프로그래밍 언어의 시작은 Hello World를 출럭하는 것에서 시작합니다. 다음과 같이 화면에 입력해 봅시다.

print("Hello, World!")

변수

일상에서 일이나 공부를 할때 어떤 정보를 기록하거나 머리에 암기하는 경우가 있습니다.

이와 마찬가지로 프로그램을 만들다 보면 항상 값(혹은 데이터)를 어딘가에 저장해놔야 할 상황이 옵니다. 프로그래밍을 할 때, 이러한 값을 저장할 수 있는 공간을 변수(variable)이라고 합니다.

변수의 선언

variable = 29
변수 = 84

앞에 이것저것 붙일 필요 없이 그냥 (변수명) = (값)을 입력해주면 된다. 게다가 Python 3부터 유니코드를 지원하기 때문에 변수명을 한글로 할 수도 있다!

변수형

변수형이란 변수가 지금 어떠한 값을 가지고 있는지를 나타내는 말입니다. 파이썬에서는 다양한 데이터를 효율적으로 저장하기 위하여 다음과 같은 변수형을 지원합니다.

수(number)형
말 그대로 수를 나타내는 변수형입니다. 3, 3.14같은 숫자를 저장하기 위한 변수형입니다.
문자열(String)형
문자열이란 문자(A,B,C,가,나,다등등등)이 일렬로 있는 자료를 저장하기 위한 변수입니다.
리스트(List)형

리스트형은 다른 언어의 행렬(array)과 비슷한 기능을 하는 자료형이다. 대괄호([])로 묶어서 지정할 수 있다.

a = ['리브레', '위키', '프로그래밍', '입문', 4]

특정 위치에 들어있는 값을 불러오려면 index라는 앞에서부터 세는 순서로 지정해주면 된다. 예를 들어 위의 예에서 2번째 값인 '위키'를 불러오려면 아래와 같이 적으면 된다.

a[1]

두번째 값을 불러오는데 왜 인덱스가 1인가 하면 프로그래밍 언어에서는 일반적으로 모든 숫자가 1이 아닌 0에서 시작하기 때문이다.

뒤에서부터 세서 가져오는 방법도 있다. 뒤에서 2번째인 '입문' 을 가져오려면 a[3] -앞에서 4번째-로 가져올 수도 있지만 a[-2]로 하여 뒤에서 두번째를 가져오라는 명령을 통해 가져올 수도 있다.

왜 뒤에서부터 할 땐 0부터 시작하지 않느냐 물어볼 수도 있는데 이는 0은 음수가 없다 라는 기본적인 수학지식으로 대답할 수 있을 듯 하다.

사전(Dictionary)형
진위(Boolean)형

조건문

조건문이랑 어떤 조건에 따라서 수행하고자 하는 행동을 하는 문장(코드)를 말합니다. 조건문의 경우, 수행하고 싶은 문장을 if문의 깊이 보다 한단계 더 넣어줘야 합니다.

기본 if문

조건문 기본.gif

if 조건 :
    조건문 안쪽 명령
    ....
  #조건문 안쪽 명령 끝
조건문 다음 명령
...

if와 : 사이에 조건을 넣습니다. 만약 조건이 맞다면 (ex: 변수 n의 값이 5인가?, 변수 a 의 값을 2로 나눈 후 나머지가 1인가?) 조건문 안쪽 명령을 수행합니다.

if-else문

조건이 맞지 않을 때 실행해야 하나, 조건이 맞으면 실행하면 안되는 문장이 있을 때 씁니다. 조건문 if - else.gif

if 조건 :
    if문 명령
    ....
#if문 명령 끝
else:
   else문 명령
#else문 명령 끝
조건문 다음 명령
...

반복문

함수

Java

HTML/CSS/JS

SQL

SQL은 DBMS[1]마다 기본 적인 문법은 같지만 세부적인 부분은 서로 전혀 다르다. 단순한 쿼리 같은 것은 흡사하나 저장 프로시저나 함수 같은 부분만 봐도 완전히 다르다.

조회 쿼리

공통

SELECT 컬럼1, 컬럼2
FROM 테이블명

가장 기본 적인 형태로 지정한 테이블에서 지정한 컬럼의 값을 읽어온다. 각 컬럼은 ,로 구분한다. 모든 컬럼을 읽어올 때는 SELECT 부분을 SELECT *로 입력해주면 된다.

SELECT 컬럼1, 컬럼2
FROM 테이블명
WHERE 컬럼3 = 'A'

WHERE는 조건을 지정할 때 쓰인다. 위의 경우는 컬럼3의 값이 A인 행들만 조회하기 위한 조건.

SELECT 컬럼1, 컬럼2
FROM 테이블명
WHERE 컬럼3 = 'A'
    AND (컬럼4 = 'B' OR  컬럼5 = 'C')

WHERE 조건에 여러개의 조건을 지정할 때는 위와 같이 AND나 OR을 사용한다. AND는 두 가지가 모두 만족해야하며 OR은 둘 중 하나만 만족하면 된다. AND와 OR가 둘다 사용되면 헷갈리지 않게 괄호로 묶어주도록 하자. 위의 경우는 컬럼3의 값이 A이면서 컬럼4의 값이 B이거나 컬럼5의 값이 C인 행만 읽어오게 하기 위한 조건.

SELECT 컬럼1, 컬럼2
FROM 테이블명
ORDER BY 컬럼1 ASC

ORDER BY 문을 사용하면 정렬을 할 수 있다. 위의 경우는 컬럼1을 기준으로 오름차순 정렬을 한 것으로 ASC는 생략이 가능하다. 생략시에는 오름차순으로 정렬이 된다. 내림차순으로 정렬하고 싶을 경우에는 ASC 대신 DESC를 입력해주면 된다. WHERE 절과 함께 사용 시에는 WHERE 절 아래에 사용하게 된다.

MS-SQL

SELECT TOP 10 컬럼1, 컬럼2
FROM 테이블명
ORDER BY 컬럼1 ASC

조회시 최상위의 데이터 몇 행만 가져올 경우에는 TOP을 사용하게 된다. 위의 예제는 컬럼1을 기준으로 오름차순 정렬을 한 후 최상위의 10개 행만 가져오는 예.

MySQL, MariaDB

SELECT 컬럼1, 컬럼2
FROM 테이블명
ORDER BY 컬럼1 ASC
LIMIT 10

조회시 최상위의 데이터 몇 행만 가져올 경우에는 LIMIT를 사용하게 된다. 위의 예제는 컬럼1을 기준으로 오름차순 정렬을 한 후 최상위의 10개 행만 가져오는 예.

SELECT 컬럼1, 컬럼2
FROM 테이블명
ORDER BY 컬럼1 ASC
LIMIT 5, 10

LIMIT 절에서 위와 같이 값을 2개 준 경우에는 첫번째 값의 행부터 두번째 값의 수만큼 가져오라는 뜻이다. 위의 예제는 6번째 행[2]부터 10개의 행 즉 15번째 행까지 읽어오게 된다. LIMIT 0, 10으로 입력하면 LIMIT 10과 동일하게 된다.

삽입 쿼리

수정 쿼리

삭제 쿼리

조인

기본 함수

DBMS별 서로 같은 기능을 하는 함수 일람

MS-SQL MySQL, MariaDB
GETDATE() NOW()
ISNULL() IFNULL()
SCOPE_IDENTITY() LAST_INSERT_ID()

MS-SQL

GETDATE()

서버의 현재 날짜, 시간을 반환하는 함수.

ISNULL(A, B)

A가 NULL인지 체크하고 NULL이 아니면 A 그대로 반환하고 NULL이면 B를 반환하는 함수.

SCOPE_IDENTITY()

현재 연결된 세션에서 가장 마지막에 인서트된 자동 증가 값을 반환하는 함수.

MySQL, MariaDB

NOW()

서버의 현재 날짜, 시간을 반환하는 함수.

CONCAT(A, B, )

입력한 문자열을 하나로 합쳐주는 함수. 문자열은 + 연산자로 합칠 수 없고 이 함수를 사용하여 합쳐야한다.

IF(A, B, C)

조건 A가 참이면 B를 거짓이면 C를 반환하는 함수.

IFNULL(A, B)

A가 NULL인지 체크하고 NULL이 아니면 A 그대로 반환하고 NULL이면 B를 반환하는 함수.

ISNULL(A)

A가 NULL인지 체크하여 NULL이면 1, 아니면 0를 반환하는 함수.

LAST_INSERT_ID()

현재 연결된 세션에서 가장 마지막에 인서트된 데이터의 자동 증가된 값[3]을 반환하는 함수.

저장 프로시저

사용자 정의 함수

트리거

C

준비

윈도우 7이상에서는 Visual Studio Community를 다운로드 받아 설치하자 리눅스에서는 그딴거 없다. 터미널을 열고 gcc라고 쳐보자 만약에 명령어가 없다고 나오면 각각의 패키지 매니저에 알맞게 설치해주면 된다.

당연하지만 Hello, World!

#include <stdio.h>

int main(void)
{
printf("Hello, World!");
return 0;
}

출력 형식

변수

입력 형식

조건문

조건문은 조건에 따라 두 가지 혹은 그 이상의 실행 경로를 실행할 수 있게 하는 것을 말한다. C언어에는 조건문으로 두 경로 중 하나를 선택하는 if-else문과 여러경로 중 하나를 선택하는 switch문이 있다.

if-else문

switch문

반복문

반복문은 특정 부분을 반복해서 실행하는 것을 말한다.

C언어에는 while문, for문, do-while문이 있다.

while문

while (조건문)
{
문장
}

while문을 만나면 먼저 조건문을 검사한다. 조건문의 내용이 참이면 문장을 실행하고, 거짓이면 실행하지 않고 넘어간다. 문장의 내용을 모두 실행한 뒤에 다시 조건문을 검사한다. 계속 반복하다가 조건문이 거짓이 되면 빠져나온다.

for문

for (초기식; 조건식; 변환식)
{
문장
}

for문을 만나면 먼저 초기식을 실행한다. 조건식이 참이면 문장을 실행하고 거짓이면 실행하지 않고 넘어간다. 문장을 실행한 뒤, 변환식을 실행한 다음 조건식을 검사하고 참이면 실행, 거짓이면 넘어가기를 조건식이 거짓이 될 때까지 반복한다. 식들은 생략할 수 있지만 세미콜론은 생략할 수 없다.

for (초기식; ; 변환식)
{
문장
}

조건식을 생략하면 이런 모습이 된다.

do-while문

do{
문장
}while (조건식);

while문과 유사하지만 조건식을 먼저 검사하지 않고 중괄호 안의 내용을 먼저 검사한 뒤에 조건식을 검사한다.

함수

포인터 고비

다차원 배열

구조체

공용체

열거형

파일 입출력

헤더파일, 소스파일

고급 과정

전처리기

#define

#define은 특정한 문자(이름)를 찾아 다른 형태(토큰)로 바꾼다. 두 줄 이상으로 작성하고 싶을 때에는 '\' 를 이용하면 된다.

#define 이름 토큰

작성

#define Int_Max 2147483647
int max = Int_Max;

결과

int max = 2147483647;

함수와 비슷한 형태로 작성하면 함수같이 사용할 수도 있다.

#define 이름(인자) 토큰

작성

#define Sum(X, Y) X + Y
int sum = Sum(1, 2);

X나 Y가 아니라 다른 것을 사용해도 상관없다. 수도 상관없다.

결과

int sum = 1 + 2;
#undef

#define으로 정의된 매크로를 무효화한다.

작성

#define PI 3.141592
int pi = PI;
#undef PI
int pi = PI;

결과

int pi = 3.141592;
int pi = PI;

int pi = PI; 부분에서 오류를 뱉어낸다. #undef로 무효화된 매크로는 그 밑으로 더 이상 작동하지 않는다. 사용 위치에 주의할 필요가 있다.

#include

특정 파일의 내용을 가져와서 포함시킨다.

#include <stdio.h>
int main(void)
{
printf("Hello, World!");
return 0;
}

위 소스 코드에서, #include <stdio.h>의 위치에 stdio.h 헤더파일의 내용이 옮겨진다. printf함수는 stdio.h 헤더파일 내에 선언되어있는 변수이다.

#include <헤더파일>
#include "헤더파일"

이렇게 두 가지 모양으로 쓸 수 있는데, <>는 컴파일러에 지정되어 있는 폴더에서 헤더파일을 찾고, ""는 소스 코드 파일이 있는 폴더에서 헤더파일을 찾는다.

#if
#elif
#else
#endif
#ifndef
#ifdef
#error
##
#pragma

컴파일러에게 명령을 전달한다.

#pragma 명령

컴파일러마다 다르니 자세한 것은 추가바람

C++

이 언어를 배우려는 사람에게 전하는 주의사항

C 문법을 그대로 사용하는 경우

물론 프로그래밍을 할 수는 있다. 그렇지만, C의 문법보다 형변환[4] 조건이 빡빡하다던가, C++의 많은 기능을 사용할 수 없다던가 하는 점이 있기 때문에, 정말 C로 개발해야만 하는 상황(거의 없겠지만)이 아니라면 C++의 문법을 사용하는 것이 좋다.

객체지향은 또 뭐야?

쉽게 말해, 모든 대상을 "데이터"와 "기능"으로 추상화해서 나타낸 것이다. 기존의 C에서 사용하던 구조체(struct)는 말 그대로 단순히 데이터를 담는 "자료형"의 역할을 했지만, 클래스는 어떤 대상을 데이터와 기능의 집합으로 나타내므로 그 대상의 성질, 특성과 같은 것들을 표현할 수 있다.

쓸데없이 불친절하고 어려운 템플릿

템플릿은 메타프로그래밍 요소로, 서로 다른 여러가지의 클래스에 대해 각각을 따로 프로그래밍하지 않고 같은 이름을 가지는 대상(클래스, 함수)으로 프로그래밍할 수 있게 한다. 다시 말해서, 일반화 프로그래밍이 가능하다! 하지만, C++의 템플릿은 다른 여타 언어들의 메타프로그래밍 요소와는 달리 템플릿 메타프로그래밍이라는 변태짓을 가능하게 한다.나쁜 녀석들 같으니라고 구글링을 해도 답이 안나온다 이 기법은 C++ 프로그래머 중에서도 정말 고수들만이 제대로 활용할 수 있으므로, 공부하려고 마음먹었을 때 각오하는 것이 좋다.하지만 우리 회사는 못하게 하는데

함수형 프로그래밍은 또 어디에서 굴러들어온건데?

시간이 지나면서, 프로그래머들은 객체지향의 한계에 봉착하게 된다. 대세는 멀티코어! 다들컴맹 빼고 들어봤을 것이다. 멀티코어 프로그래밍은 서로 다른 프로세스가 하나의 데이터에 동시에 접근하는 경우가 비일비재하기 때문에[5] 접근 통제를 위해 프로세스들을 락/언락해야만 한다. 그런데 락/언락을 자주 하게 되면 CPU에서 병목현상이 발생하기 때문에 프로그램의 실행시간, 반응 속도 등에 영향을 끼치게 된다.

이 멀티코어 프로그래밍을 위한 대안이 바로 함수형 프로그래밍이다. 함수형 프로그래밍에 사용되는 함수는 수학에서의 함수의 성질을 따른다. 기존의 함수는 모든 작업을 순차적으로 처리해야만 했지만, 함수형 프로그래밍에서는 작업 순서를 변경시켜서 어떤 것을 먼저 처리하고 어떤 것을 지연시켜도 같은 결과가 나오는 것이다!

더럽게 기능이 많은데, 이 많은 걸 언제 배워!

그래서 C++의 진입장벽이 높은거다. 현재진행형으로 언어 표준을 개정해나가면서 짧은 시간에 많은 기능이 추가되거나, 바뀌거나, 사라지고 있다. 하지만, "C++스러운" 프로그래밍 방법은 표준을 개정해나가도 크게 변하지 않는다. 표준은 "C++스러운" 방법을 위한 편의 기능을 제공하는 방향으로 개정되고 있다고 생각해도 된다. 그러니, "C++스러운" 방법이 무엇인지 안다면, 앞으로 계속 표준이 바뀌더라도 학습이 용이할 것이다.

많은 내용들 중 중심적인 내용을 먼저 학습한 후, 곁가지로 제공되는 기능을 익혀나가는 방법은 C++을 공부하는 좋은 방법 중 하나이다. C를 빠르게 공부한 후, C++의 중심적 내용인 클래스를 공부하면 나머지는 다 부가기능처럼 보일것이다.

준비

Visual Studio 커뮤니티 2013

개인 사용자들에게는 무료로 공개되어있는 버전이다. 참고로 이거 하나면 C++ 뿐만이 아니라 C#, VB.NET 개발도 가능하다.

최신 표준의 기능들을 사용하고 싶다면 컴파일러를 LLVM로 바꾸면 된다.

후술된 내용들을 보기 전에 위의 C 프로그래밍 내용을 숙지하자. C++은 기본적으로 C에서 기원했다.

예외란 없다Hello, World!

빈 프로젝트를 생성한 후 소스(.cpp)파일에 다음 내용을 작성한다.

#include <iostream>

int main()
{
    std::cout << "Hello, World!" << std::endl;
}

새 표준 입출력

iostream을 인클루드하고 사용한다.

표준 출력

std::cout << [기본 자료형 변수/상수];

기본적으로 이 형식으로 사용한다. 기본 자료형이 아닌 구조체, 클래스 등은 후술할 오버로딩 참고.

std::cout << [출력 대상] << [출력 대상] << ...

이렇게 여러 대상의 출력을 한 줄에 작성할 수 있다.

std::cout << ... << std::endl;

이렇게 작성하면 중간의 출력대상을 모두 출력한 후 한 줄을 강제 개행한다.

상수

레퍼런스

좌측값, 우측값

이름공간

공용체, 열거형

클래스

예외처리

템플릿

람다

고급 과정

C#

마이크로소프트에서 JavaC++의 장점을 합쳐서 만든 언어. 퓨전 Java와 문법이 상당히 흡사하다. 단 Java에서 가능 한 것이 C#에선 컴파일 오류 내기도 하고 C#에선 되는 것이 Java에선 다르게 동작하기도 하는 경우도 있다. 그리고 Java와는 달리 포인터도 사용이 가능하다. 단 unsafe 로 선언한 부분에서만 사용이 가능하다.

준비

Visual Studio 커뮤니티 2013

개인 사용자들에게는 무료로 공개되어있는 버전이다. 참고로 이거 하나면 C# 뿐만이 아니라 C++, VB.NET 개발도 가능하다.

이거 안하면 저주받는다 카더라Hello, World!

콘솔 응용 프로그램 프로젝트를 생성하고 main 메소드 내에 다음 내용을 입력하고 실행해보자.

Console.Write("Hello, World!");

데이터 타입

제어문

클래스

주석

/*
작성자: 지나가던 위키니트
작성일: 2015-05-13
*/

/// <summary>
/// 클래스 Foo
/// </summary>
public class Foo
{
    /// <summary>
    /// 프로퍼티 Bar
    /// </summary>
    public string Bar { get; set; }

    public Foo()
    {
        // 여기가 생성자
         this.Bar = string.Empty; // Bar에 빈 값을 넣는다.
    }
}

//는 //부터 그 뒤의 내용 한줄만 주석이 된다. /* */는 /*가 시작하는 부분부터 */가 나오는 곳까지 모두 주석이 된다. 클래스나 변수 위에 있는 /// 같은 곳에 입력한 주석은 비주얼 스튜디오 내에서 해당 변수에 마우스를 올리면 저 주석 내용이 표시되게 된다. 클래스나 메소드 같은 곳 위에 /// 를 입력하면 비주얼 스튜디오가 알아서 해당 주석 템플릿을 만들어주니 주석 내용만 입력만 해주면 된다.

예외처리

try
{
    // 실행될 내용
}
catch (Exception ex)
{
    // try 문에서 오류 발생 시 실행될 내용
}
finally
{
    // try 문이 끝나거나 catch 문이 끝나면 실행될 내용
}

위와 같이 예외처리할 부분은 try catch 문으로 묶어준다. finally는 생략 가능. catch 문에 있는 ex 파라메타는 오류 발생 시 그 오류 정보를 담고 있는 변수로 Message 프로퍼티에 오류 내용이 텍스트로 적혀있다.

람다

var func=delegate(string x){Console.WriteLine(x);}
func("Hello, World!");

위과 같이 무명 메소드를 사용할 수 있다. 이 무명 메소드는 대리자가 필요하긴 한데 메소드 하나 더 만들기 아까울때 사용하면 좋다.

또한 위와 같이 말고 아래의 같이 람다 식을 사용할 수 있다. 람다식은 한줄짜리를 쓸때 유용하다.

var func=x => x*x;
Console.Write(func(5));

링큐

어셈블리

  1. 오라클이나 MS-SQL이나 MariaDB
  2. 0부터 시작이기 때문에 1번째 행은 0이다.
  3. AUTO_INCREMENT 속성이 지정된 컬럼의 값
  4. 간단히 설명하자면, 문자를 정수로 바꾸는 등의 한 데이터 타입을 다른 타입으로 변환하는 것을 말한다.
  5. 이렇게 되면 프로그램을 여러번 실행시켰을 때 같은 조건에서도 항상 같은 결과가 나온다고 기대할 수 없다.