SlideShare a Scribd company logo
1 2 3 4 5
Overview
Expressions
& statements
Function & Object
Event & Library
Storage & Network
& SCM(git)
Learn Programming with Web Language
For non-developers
외계어 스터디 2/5 - Expressions & statements
아들바보
프로그래밍이란?
“값”를 목적에 따라!
처리하는 일련의 과정
언어 구성 요소
토큰
의미를 가지는 가장 작은 단위
연산자
산술, 논리 등 연산 수행 지정자
식별자
이름 짓기 규칙에 따라!
프로그래머가 만든 이름
문(文)
실행할 동작을 지정하는 것!
!
대입문, 비교문, 반복문 등 !
많은 종류가 있다
0 1 2 3 4 5 6 7 8 9
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+ - * / % _ “ ‘ { } ( ) [ ] ~ ! | & = . ; ? < > , 
Javascript 에서 사용되는 문자들
break function return var case delete if else switch
catch do in this while const instanceof throw with
continue finally let try debugger for new typeof …
Javascript 언어에서!
미리 선점한 예약어
예약어들은 정해진 용도 이외의 다른!
용도로 사용할 수 없음
1. 문과 문의 구분은 ; (세미콜론)으로 한다!
2. 대소문자를 구분한다!
3. 이름(식별자)는 영문자, _(언더바), $로만 시작될 수 있다!
4. 토근과 토큰 사이의 공백, 줄바꿈, 탭 문자는 무시한다
기본 규칙 1
문과 문의 구분은 ; (세미콜론)으로 한다!
ㄴ 생략시 일정한 규칙에 의해 세미콜론을 자동으로 부여한다!
ㄴ 자동 부여 방식의 이해가 없다면 생략하지 않으면 된다
기본 규칙 1!
*예외
코드가 나타나는 즉시 해석되고 실행됨. 특별한 시작 지점 없음
기본 규칙 2
console.log(‘run code 1’);!
console.log(‘run code 2’);!
console.log(‘run code 3’);!
console.log(‘run code 4’);!
console.log(‘run code 5’);
void sub() {!
printf(“run code 1”);!
printf(“run code 2”);!
}!
void main() {!
printf(“run code 1”);!
printf(“run code 2”);!
}
* Javascript * C
처음부터!
순서대로!
실행
main 으로!
시작점이!
정해져있음
다루기 어려운 형식은 !
다루기 쉬운 형식으로 바꾼다
“
”
한 가지 기억해 두세요
컴퓨터가 다루기 쉬운 형식을 말합니다!
자료구조라는 학문에서 배우지요!
“큐”, “스텍”, “트리”, “리스트” 등의!
외계어들이 존재합니다
다루기 쉬운 형식이란?
특별한 이야기가 아닙니다!
“일상다반사”
실습 준비
실습 준비
두 개의 파일을 만들고, 각 각 내용을 입력합니다.
*sample.html *sample.js
두 개 파일 모두 같은 폴더에 저장합니다.
시작합니다
첫 번째 외계어를 살펴 봅시다
그냥 한번 읽어볼까요?
나이(age)가 0 이고, 이름
이 Jobs입니다. 그는 살아
(isAlive) 있습니다.
살아있는 동안 나이를 1살
씩 먹습니다. 만약 나이가
56이 되면 살아있다는 것
은 거짓입니다.
그냥 한번 읽어볼까요?
슬픔이 밀려오네요…
그냥 한번 읽어볼까요?
어때요? 읽을만 하지 않나요?
문(文)의 구조를 알아봅시다
세미콜론을 기준으로 한 문장이
완성되며 문(文)이라 합니다.
여러 문을 포함하는 블럭을 구
문의 마지막은 세미콜론으로 끝
나지 않습니다.
구문은 여러개의 토큰으로 이루
어집니다. 토큰은 의미를 가지
는 가장 작은 단위입니다.
var age = 0;
5개의 토큰으로!
구성된 문
문(文)의 구조를 알아봅시다
공백(스페이스)의 역할
공백은 토큰의 의미를 명시하기
위해 사용합니다. 공백이 없어
도 의미가 명확하다면 생략이
가능합니다.
varage = 0;
*오류 : varage 이름의!
변수가 만들어짐
var age=0;
*정상 : 공백이 없어도 토큰!
분리가 가능함
이 소스 코드는 순차적으로 실행됩니다
1, 2, 3 … 맨 앞에 숫자는 코드 에디터가 자
동 부여해 주는 라인 표시입니다. 프로그래
머가 작성한 부분이 아닙니다.
나와, 남을 위해 코드를 설명하는 주석
/* 문자와 */ 문자 사이의 내용들은 모두 주석
으로 인식하여 실행되지 않습니다.



컬러가 회색으로 표시되는 이유는 에디터의
기능 중 일부이며 “이 부분은 주석이어서 실
행되지 않습니다”라는 의미입니다. 즉, 코드
에디터는 코드의 형태를 “인식”합니다.
값을 저장하는 저장소 “변수”
var 는 변수를 만드는 지시
어입니다. var 다음에 프로
그래머가 명명한 변수를 작
성합니다.
어떤 값을 담고 있는지 알 수 있도록!
의미있는 변수명을 사용하세요
a1 = 15;	

!
!
temperature = 15;
나빠요!
좋아요!
“값”을 저장한다? 값을 유지한다? 저장소?
변수는 생성된 후 소멸될 때 까지 값을 유지하고 있는 공간.

변수의 값을 읽을 수 있으며 변수의 값은 변경할 수 있다.
생성
참조(읽기)
변경(대입)
“값” 과 그것을 저장하는!
저장소인 “변수”에 대해!
상세히 알아둘 필요가 있습니다
변수를 만드는 방법
?
me
10
me
10
me
undefined
var me;	

!
me = 10;	

var me = 10;
변수를 만드는 방법
10
me
10
you
10
me
20
you
var me = you = 10; var me = 10, you = 20;
변수의 형태를 좀더 자세히 봅시다
10
me
값
undefined
 
null
 
number
 
string
 
function
 
object
{
변수(틀)
Javascript의
 변수는
 
무엇이든
 담을
 수
 있는
 
마법상자
이름
Javascript
 식별자
 이름
 명명
 
 
규칙에
 맞게
 이름을
 지을
 수
 있다
하나의 이름을 공유하는 변수 “배열”
10
me
20 30 40
0 1 2 3
이름
원소
 번호
배열을 만들고 다루는 방법
10
me
20 30 40 ? 50
{
무슨일이
 
일어난걸까?
var me = [10, 20, 30, 40];	

var me1 = me[1];	

var meMax = me.length;	

me[5] = 50;	

0 1 2 3 4 5
값과 변수에 대하여 다양한 프로그래밍 언어의 형태를!
학습하면 좀 더 쉽게 이해할 수 있습니다.
Javascript C++ Python
인터프리터 언어와 컴파일러 언어의 변수 생성 방식이!
다른 것을 알 수 있습니다. 어떤 부분이 다른가요?
Javascript C++ Python
인터프리터 인터프리터컴파일러
일반적으로 인터프리터 언어들은 !
변수의 형식이 존재하지 않습니다.
그럼 값의 형식은 어디에? !
“값”스스로 형식을 지정합니다.
컴파일러 언어들은 값의 형식을!
변수에 지정합니다.
변수의 형식이 존재하는 언어는!
변수에 저장할 수 있는 “값”의 형식이 변수의!
형식으로 제한됩니다.
값의 형식이란?
정수, 실수, 문자, 문자열, 논리값(참,거짓)등!
기본 형식(Primitive type) 및!
이후에 학습하게될 다양한 종류의!
참조형 값을 의미한다
값의 형식은 왜 필요한가?
값의 형식이 필요한 이유를 !
알기 위해 “프로그램 실행” 의!
의미를 이해햐야 합니다.
“실행”이란 무엇인가?
실행을 이해하기위해 먼저!
컴퓨터의 뚜껑을 열어봅시다
역시, 기계는 복잡합니다.
일단, 우리의 관심사를 CPU, 메모리, 

하드디스크로 좁혀봅니다.
프로그램. 즉, 소프트웨어는 어떻게 실행될까?
적재(로딩)실행
소프트웨어를 실행시키기 위해서 실행할 !
코드와 데이타를 메모리로 이동시켜야 합니다.
그럼 메모리에 어떻게 적재하는가?
메모리는 일정한 크기로 나뉘어져 각각 고유의
주소가 할당되어 있습니다.
8bit 컴퓨터!
16bit 컴퓨터!
32bit 컴퓨터!
64비트 컴퓨터
}
1000 0000
1101 1100
0010 1001
1001 1011
1100 1100
1011 1001
1010 0110
0111 1001
0010 1100
1010 1111
0001 0110
1010 1011
1100 0101
0010 1011
0xFFFF FFFF
0x0000 0000
0x0000 0001
0x0000 0002
0x0000 0003
0x0000 0004
.!.!.
.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.!.
Memory Address
고정된 크기로!
분할된 공간
크기가 다른!
여러개의 값
크기와 형태가 각기 다른 수 많은 데이타를 크기가 일정한
저장소에 “나누어” 담고 읽어야 하는 일의 동작 방식
형태!
가공
값은 그 형태에 따라 메모리에 위치하는 방식과
크기가 다르다. 이것의 의미는 값을 읽고, 쓰고,
삭제하기 위한 처리 기준이 필요함을 의미한다.
그 처리 기준이 바로 값의 형(타입) 이다.
값의 형식
*값형식 지정 언어
값 형식을 명시적으로 지정함으로서 프로그램 실행시
주소 계산 과정을 빠르게 수행할 수 있다. 따라서 프로
그램 실행 속도가 빠르다.
변수가 저장할 수 있는 값의 형식을
명시한다는건 투명한 유리잔에 담긴
물과 같다. 변수를 사용하기전 이미
담겨져있는 내용이 “투명한 물”이라
는 정보를 알려주기 때문이다.
*값형식 미지정 언어
값 형식을 지정하지 않고 프로그래머는 값의 형식을 맞출
필요가 없으므로 변수를 보다 자유롭고 유연하게 운용할 수
있다. 그러나, 그 대가는 오류의 가능성, 매번 반복되는 형
검사 및 변환 등으로 인한 느린 속도다.
변수가 저장할 형식을 제한하지 않
는다는건 불투명한 컵과 같다. 뚜껑
을 열고 들여다 보기 전엔 내용이 무
엇인지 알 수 없다.(추측만 할 뿐)!
약속되지 않은 값 형식이 저장되어
있을 가능성이 항상 존재하며 이는
오류가 날 가능성을 의미한다.
이제 값을!
“유지”한다는 것의!
의미에 대해 알아봅시다
변수는 언제 만들어지고!
언제 사라질까?
“변수의 인생”
Life Cycle
”
“
생성
사용
참조
삭제
Life Cycle
“변수”
생성
사용
참조
삭제
Life Cycle
“변수” 위치가 존재
사용하는 것에 !
영향을 미침
생성
사용
참조
삭제
Life Cycle
“변수” 위치
이것을 범위, !
스코프라 한다
생성
Scope
변수는 생성된 범위 내에 알려지며, 사용된다
Javascript는 모든 범위를!
포함하는 영역을 제공하며 이를 전역이라 한다
Global Scope
전역
10
you
전역 범위에서!
만들어진 변수는!
전역변수
범위는 프로그래머 임의로 만들어 낼 수 있다!
이렇게 만들어진 범위를 지역 범위라 한다
Global Scope
전역
지역 범위에서!
만들어진 변수는!
지역변수
20
me
10
you
전역 범위에서!
만들어진 변수는!
전역변수
지역
Local Scope
범위는 n개가 될 수 있고, 전역이 지역을 포함하듯
지역은 다른 지역을 몇 번이라도 포함할 수 있다.
Javascript에선 지역 범위는 함수로 만들어지며 !
함수의 호출, 반환과 함께 생성되고 소멸된다
function x(){
!
}
function y(){
!
!
!
!
!
}
function y1() {
!
}
function y2() { 

}
함수 만들기
함수 이름 입력 (아규먼트)
출력(반환) 처리
다양한 형태의 함수 만들기
이름과 아규먼트로!
구성된 함수 기본형
JS는 함수를 값으로!
취할 수 도 있음
이름이 없는 !
익명 함수
함수 사용(호출)하기
처리 결과 저장
*입력값이 없어도 !
괄호는 생략할 수 없음
변수, 범위 그리고 함수 정리
변수(상자)는 어디에 만들어지는가?
function x { }
a x z t
s v
f r w e b c
function y { }
function z { }
Javascript
 에서
 스코프를
 만드는
 
 
유일한
 방법은
 “함수”다
유효
 
범위
이미 만들어진 ㅁㅁ 스코프가 있다
function x { }
a x z t
s v
f r w e b
c
function y { }
function z { }
global
전역
a b
/*최초로
 등장한
 변수들
 */
*Javascript
 에서
 변수를
 
만드는
 지시어
 var
 는
 생략될
 
수
 있다.
 그럴경우
 변수는
 
전역
 공간에
 생성된다
a = 10;	

b =‘yes’;
Javascript 값의 종류와 표현 방식
100
100.12
0
-100
100e10
“정수, 실수”
Javascript 값의 종류와 표현 방식
‘Jobs’
“Hello World”
‘100’
“I'm a genius”
“문자열”
* 문자열은 ‘’ 또는 “” 로 감싸진 모든 값이다. 그 내용이 숫자일 지라도 문자열이된다.
Javascript 값의 종류와 표현 방식
true
false
“논리값”
Javascript 값의 종류와 표현 방식
undefined
null
“특수한 의미의 값”
Javascript 값의 종류와 표현 방식
function
object
“심지어 함수, 객체도 값”
Javascript 값의 종류와 표현 방식
typeof 값
“값의 형식을 알고싶을 때 ”
값의 연산
+ - * / %
- +
++ --
덧셈 뺄셈 곱셈
나눗셈
나머지
음수 양수
1씩
 증가 1씩
 감소
“산술 연산자”
값의 연산
“산술 연산 식(式)”
연산자 우선순위가 존재.

명시적 우선순위 지정을 위해
괄호를 사 사용
값의 연산
“대입문(文)”
연산자의 결합 방식
모든 연산자는 우선순위가 있다. 곱셈은 덧셈, 뺄셈보
다 우선순위가 높다. 즉, 덧셈 뺄셈 보다 먼저 수행된다
모든 연산자는 결합 방향을 가진다. 대입 연산자는 오른
쪽에서 왼쪽으로, 뺄셈은 왼쪽에서 오른쪽으로, 증감 연
산자(++, --)는 결합 방향을(전치, 후치) 변경할 수 있다.
x 의 값은 -2이다.!
덧셈, 뺄셈의 우선순위는!
같기 때문에 좌측에서 우측으로 !
결합되며 수행된다.
y의 값은 7이다. 9라고 예상한다면 !
수식의 의도를 우선순위와 결합방향과 !
다르게 표현했기 때문이다.
x = 1 + 2 - 5;
y = 1 + 2 * 3;
연산자의 결합 방식
y 값이 7이 되는 과정. 곱셈의 우선순위가 높기 때문에 먼저
수행된 후 그 결과를 다음 우선순위인 덧셈과 결합된다.
1
2
y 값이 9가 되는 “의도” 가 있다면 그 의도를 괄호로 표현
하라. 괄호는 결합 우선순위를 명시적으로 지정할 수 있다.
2
1
y = 1 + 2 * 3;
y = (1 + 2) * 3;
문맥에 따라 기능이 달라지는 연산자
y 의 값은 각각 20, ‘1010’ 이다.!
어떻게 이런 결과가 나오는 것일까?
+연산자는 좌변과 우변이 모두 숫자 (or 숫자를 담고있는 변
수)인 경우 산술 연산을 수행하고 하나라도 문자인 경우 숫자
를 문자형으로 변환(Type Casting)한 후 “결합”된다
x = 10;	

y = x + 10;	

!
x = ’10’;	

y = x + 10;
명시적인 형변환 방법
y 의 값은 문자열 ‘1010’ 이다.!
값을 문자열로 변경하는 String() 함수를 이용하여!
x 값을 문자열로 변경한 후 + 로 우변과 결합한다.
y의 값은 20이다.!
문자 ’10’을 담고 있는 변수 x 에 !
+ (양수) 연산자를 이용하여 숫자로!
변환하는 형변환을 강제로 발생시킨 후!
우변과 사칙연산이 수행된다.
y의 값은 20이다.!
+x 방식과 동일하나 보다 명시적인 숫자 형변환 함수를 이용했다.
x = 10;	

y = String(x) + 10;	

!
x = ’10’;	

y = +x + 10;	

y = Number(x) + 10;
대입 연산자의 확장
+ - * / %
=
+= -= *= /= %=
x = x + 1;	

x += 1;
첫번째 실습. 유효범위의 동작을!
눈으로 확인해 봅시다!
sample.js 에 아래 내용을 입력합니다
sample.html 브라우저로 열고, 개발자 도구 실행
자바스크립트 코드에 브레이크 포인트 설정
실행 제어 버튼 (연속, 구문단위, 함수단위, 일시정지)
브레이크 포인트에 실행이 일시정지된 상태

More Related Content

PDF
외계어 스터디 1/5 - Overview
PPTX
Глобализация
PPTX
раціональні вирази
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
PDF
C言語講習会4
PDF
Metodichka
PDF
Python book
PDF
비개발자를 위한 Javascript 알아가기 #3
외계어 스터디 1/5 - Overview
Глобализация
раціональні вирази
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
C言語講習会4
Metodichka
Python book
비개발자를 위한 Javascript 알아가기 #3

Viewers also liked (19)

PPTX
소프트웨어 교육용 자작로봇
PDF
스크래치 4주차 강의자료
PPT
PDF
외계어 스터디 3/5 function and object
PDF
Toeic grammar &amp; vocab ข้อ 11 ถึง 20 วันที่ 30 3 2017
PPT
스크래치 6주차
PDF
외계어 스터디 4/5 Event & Library
PPT
스크래치 3주차 강의 프리젠테이션
PDF
잘하면고효율, 못하면가문의원수가되는 짝프로그래밍 (Effective Pair Programming with Lessons Learned)
PDF
비개발자를 위한 Javascript 알아가기 #5
PPTX
Digital Road for Kids
PPTX
스크래치 시작하기
PDF
송창규, unity build로 빌드타임 반토막내기, NDC2010
PDF
무엇을 만들 것인가_창의융합프로젝트_자유전공학부_2014_fall
PPTX
Google Cloud Next 2017 Seoul Extended 1st Session.
PDF
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
PPTX
문과생 대상 파이썬을 활용한 데이터 분석 강의
PDF
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
PPT
Programming for kids
소프트웨어 교육용 자작로봇
스크래치 4주차 강의자료
외계어 스터디 3/5 function and object
Toeic grammar &amp; vocab ข้อ 11 ถึง 20 วันที่ 30 3 2017
스크래치 6주차
외계어 스터디 4/5 Event & Library
스크래치 3주차 강의 프리젠테이션
잘하면고효율, 못하면가문의원수가되는 짝프로그래밍 (Effective Pair Programming with Lessons Learned)
비개발자를 위한 Javascript 알아가기 #5
Digital Road for Kids
스크래치 시작하기
송창규, unity build로 빌드타임 반토막내기, NDC2010
무엇을 만들 것인가_창의융합프로젝트_자유전공학부_2014_fall
Google Cloud Next 2017 Seoul Extended 1st Session.
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
문과생 대상 파이썬을 활용한 데이터 분석 강의
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
Programming for kids
Ad

Similar to 외계어 스터디 2/5 - Expressions & statements (20)

PDF
1.Startup JavaScript - 프로그래밍 기초
PPTX
자바스크립트 기초문법~함수기초
PPTX
0.javascript기본(~3일차내)
PPTX
Javascript기초
PPTX
자바스크립트 기초
PPT
Python3 brief summary
PDF
ES6 for Node.js Study
PDF
Intro to JavaScript - Week 1: Value, Type, Operator
PDF
Start IoT with JavaScript - 1.기초
PPTX
Javascript 1
PPTX
Processing 기초 이해하기_20160713
PPTX
자바스크립트
PDF
게임프로그래밍입문 3주차
PPT
엄준일 04일차 HTML/Javascript 교육
PPT
ch04
PPTX
Hacosa js study 1주차
PDF
Start IoT with JavaScript - 4.객체1
PDF
C언어 들어가기
PPTX
Let's Go (golang)
PDF
C언어 들어가기
1.Startup JavaScript - 프로그래밍 기초
자바스크립트 기초문법~함수기초
0.javascript기본(~3일차내)
Javascript기초
자바스크립트 기초
Python3 brief summary
ES6 for Node.js Study
Intro to JavaScript - Week 1: Value, Type, Operator
Start IoT with JavaScript - 1.기초
Javascript 1
Processing 기초 이해하기_20160713
자바스크립트
게임프로그래밍입문 3주차
엄준일 04일차 HTML/Javascript 교육
ch04
Hacosa js study 1주차
Start IoT with JavaScript - 4.객체1
C언어 들어가기
Let's Go (golang)
C언어 들어가기
Ad

More from 민태 김 (20)

PDF
Git - Level 2
PDF
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
PDF
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
PDF
비개발자를 위한 Javascript 알아가기 #7.1
PDF
비개발자를 위한 Javascript 알아가기 #7
PDF
비개발자를 위한 Javascript 알아가기 #6.1
PDF
비개발자를 위한 Javascript 알아가기 #6
PDF
MEAN Stack 기반 모바일 서비스 개발 overview
PDF
비개발자를 위한 Javascript 알아가기 #5.1
PDF
비개발자를 위한 Javascript 알아가기 #4.1
PDF
비개발자를 위한 Javascript 알아가기 #4
PDF
비개발자를 위한 Javascript 알아가기 #2
PDF
비개발자를 위한 Javascript 알아가기 #1
PDF
Waterfall과 agile의 불편한 동거 public
PDF
AWS 구축 경험 공유
PDF
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
PDF
Knockout.js Overview
PDF
스마트미디어 크로스플렛폼 개발 전략
PDF
CANVAS, SVG, WebGL, CSS3, WebEvent
PDF
Html5 game programming overview
Git - Level 2
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
비개발자를 위한 Javascript 알아가기 #7.1
비개발자를 위한 Javascript 알아가기 #7
비개발자를 위한 Javascript 알아가기 #6.1
비개발자를 위한 Javascript 알아가기 #6
MEAN Stack 기반 모바일 서비스 개발 overview
비개발자를 위한 Javascript 알아가기 #5.1
비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4
비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #1
Waterfall과 agile의 불편한 동거 public
AWS 구축 경험 공유
H3 경쟁력있는 웹앱 개발을 위한 모바일 js 프레임웍
Knockout.js Overview
스마트미디어 크로스플렛폼 개발 전략
CANVAS, SVG, WebGL, CSS3, WebEvent
Html5 game programming overview

외계어 스터디 2/5 - Expressions & statements