javascript =>ECMAScript
*스크립트(인터프리터)언어
소스=실행파일
실행-해석기(v8엔진- google:open source)
chrome(google)
safari(apple)
edge(ms)
node.js
성당(close source)과 시장(open source),,,
<javascript언어>
- 자료형(논리형 숫자형 문자(열)형, undefined, object)
- 변수/상수(이름선언 var/let/const)
- 연산자 (산술연산자, 문자열 연결 연산자, 대입 연산자, 증감 연산자, 비교 연산자, 논리 연산자)
흐름-기술(해석) 순서
위-아래
조건 - 비교연산자 or 논리연산자의 결과(true/false)
조건에 의한 분기(condition) -2갈래(참 아니면 거짓)
조건에 의한 반복(loop) - 조건 만족할 때까지를 이용해서 반복횟수를 정함
그림을 이해 - flowchart
*조건에는 단순조건 -> true/false 한 방향에서 실행문이 존재한다.
if(조건) {
// True일 때
실행문
}else{
//False일 때
실행문
}
ex) 조건문의 예시 문장
num변수의 값이 10보다 크면 "크다"라고 출력.
*실습 - num 값에 따라 홀수면 홀수라고 출력/ 짝수면 짝수라고 출력하는 코드 작성
<script type="text/javascript">
console.log('시작');
let num=3;
if(num%2==0){
console.log('짝수');
}else{
console.log('홀수');
}
console.log('끝');
</script>
! 비교의 기준점을 파악하는 것이 제일 중요하다!
*실습2 - num값이 3의 배수이면 "3의 배수"를 출력하고 그렇지 않으면 "3배수 아님"출력
<script type="text/javascript">
console.log('시작');
let num=12;
if(num%3==0){
console.log('3의 배수');
}else{
console.log('3의배수 아님');
}
console.log('끝');
</script>
조건은 "중첩" 이 가능하다.
if(조건1) {
if(조건2) {
실행문1
}else{
실행문2
}
}else{
if(조건3) {
실행문3
}else{
실행문4
}
flowchartㅋㅋ뭐 이렇게 나오겠지?
*실습3 - 시간을 입력해서 9시 이전을 아침 12시 이전을 아점 15시 이전을 점저 나머지 저녁
<script type="text/javascript">
console.log('시작');
let hour=14;
if(hour<9)
{
console.log('아침');
}else{
if(hour<12){
console.log('아점');
}else{
if(hour<15){
console.log('점저');
}else{
console.log('저녁');
}
}
}
console.log('끝');
</script>
//if문 남발하여 매우 안좋은 코드처럼 보이지만 성공 ㅋ
*실습4 - 점수를 입력 후 학점을 나타낼 수 있도록 하는 코드
<script type="text/javascript">
console.log('시작');
let score=100;
if(score>=90)
{
console.log('A');
}else{
if(score>=80){
console.log('B');
}else{
if(score>=70){
console.log('C');
}else{
if(score>=60){
console.log('D');
}else
console.log('F');
}
}
}
console.log('끝');
</script>
*실습5 - month가 3-5는 봄, 6-8은 여름, 9-11은 가을 , 기타는 겨울로 출력하는 코드
<script type="text/javascript">
console.log('시작');
let month=5;
//논리연산자 사용
/*
if(month>=3 && month<=5)
{
console.log('봄');
}else if(month>=6 && month<=8)
{
console.log('여름');
}else if(month>=9 && month<=11)
{
console.log('가을');
}else{
console.log('겨울');
}
*/
//중첩 if문
if(month>=3 && month<=5){
console.log('봄');
}else{
if(month>=6 && month<=8){
console.log('여름');
}else{
if(month>=9 && month<=11)
{
console.log('가을');
}else{
console.log('겨울');
}
}
}
console.log('끝');
</script>
* Switch-case문 사용하여 학점 출력하기
<script type="text/javascript">
console.log('시작');
let score=70;
switch(true){
case score >=90:
console.log('A학점');
break;
case score >=80:
console.log('B학점');
break;
case score >=70:
console.log('C학점');
break;
case score >=60:
console.log('D학점');
default:
console.log('F학점');
}
</script>
*삼항 연산자를 사용하여 간편한 조건문 만들기
<script type="text/javascript">
console.log('시작');
let num=1;
let result = ( num%2==1)? '홀수':'짝수'; //삼항 연산자는 값을 할당할 때 간편하게 많이 쓴다.
console.log(result);
(num%2 ==1)?console.log('홀수'):console.log('짝수');
console.log('끝');
</script>
*for문과 if문을 결합하여 홀수를 출력하는 코드
<script type="text/javascript">
console.log('시작');
//1부터 20까지 중 홀수를 출력
for(let i=1;i<=20;i++)
{
if(i%2==1)
{
console.log(i);
}
}
//1부터 20까지 중 홀수를 출력(i의 증가 숫자를 늘려 홀수만 출력될 수 있도록 설정)
for(let i=1;i<=20;i+=2)
{
console.log(i);
}
console.log('끝');
</script>
*실습6- 1-100까지에서 5와 7의 공배수의 합
<script type="text/javascript">
console.log('시작');
let sum=0;
for(let i=0;i<=100;i++)
{
if(i%5==0&&i%7==0)
{
sum=sum+i;
}
}
console.log(sum);
console.log('끝');
</script>
*별찍기
<script type="text/javascript">
console.log('시작');
let sum=0;
// for(let row=1;row<=10;row++)
for(let row=10;row>=1;row--)
{
let result=" ";
for(let col=1;col<=row;col++)
{
result=result+'*';
}
console.log(result);
}
console.log('끝');
</script>
* 변수를 통해 입력-> 처리-> 출력을 분리해서 사용
* for문을 통해 테이블 안에 별 찍기 (약간 쉽지 않음)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
table{
width:500px;
border-collapse: collapse; /*바깥선과 안쪽선을 합치기 위함*/
}
table, td{
border: 1px solid black;
}
</style>
</head>
<body>
<script type="text/javascript">
console.log('시작');
//입력 -> 처리 -> 출력 을 분리해서 쓰도록 하기
let html = '';
document.write('<table border="1" width="500">');
for(let row=1;row<=10;row++){
html+='<tr>';
for(let col=1;col<=10;col++){
if(col<=row){ //열이 행보다 작을 때 별을 찍는다는 문장
html+= '<td align=center>*</td>'; //html에 계속 쌓아가면서 만들기
}else{ //열이 행보다 크면 그냥 공백 테이블을 출력하도록 함
html+='<td></td>'
}
}
html+= '</tr>';
}
html+='</table>';
document.write(html);
console.log('끝');
</script>
</body>
</html>
해당 모양이 나오게 됨
for문/while문/ do while문 사용해보기
<script type="text/javascript">
console.log('시작');
//유한루프
//1-5까지 출력
for(let i=1;i<=5;i++)
{
//console.log(i);
}
/*
무한루프(제한조치를 포함해서)
let i=1;
while(i<=5){
console.log(i);
i++;
}
*/
//do 안쪽 반드시 1번 실행할 수 있도록 함
let j =1;
do{
console.log(j);
j++;
}while(j<=5);
console.log('끝');
</script>
* continue와 break의 기능
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
console.log('시작');
for(let i=1;i<=5;i++){
//3일 때 정지
if(i==3){
continue; //진행이 되다가 3이 되는 순간 증감식으로 돌아가기 때문에 3은 출력이 되지 않게된다.
// break; //진행이 되다가 3이 되는 순간 멈춰버리기 때문에 3까지만 출력이 된다.
}
console.log(i);
}
console.log('끝');
</script>
</body>
</html>
* 9*9단 만들기(과제)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
table{
width:1000px;
border-collapse: collapse; /*바깥선과 안쪽선을 합치기 위함*/
border: 1px solid black;
background-color: rgb(100, 161, 161);
}
tr:nth-child(even){
border: 1px solid black;
background-color: #265ca1;
}
</style>
</head>
<body>
<script type="text/javascript">
console.log('시작');
//입력 -> 처리 -> 출력 을 분리해서 쓰도록 하기
let html = '';
html+='<table border="1" width="500">';
html+='<tr>';
html+='<td align=center></td>'
for(title=1;title<=9;title++){
html+='<td align=center>'+'x'+title+'</td>';
}
html+='</tr>';
for(let row=1;row<=9;row++){
html+='<tr>';
html+='<td align=center width="100">'+row+'단</td>';
for(let col=1;col<=9;col++){
html+= '<td align=center>'+row+'x'+col+'='+row*col+'</td>'; //html에 계속 쌓아가면서 만들기
}
html+= '</tr>';
}
html+='</table>';
document.write(html);
console.log('끝');
</script>
</body>
</html>
구구단 (9X9) 결과표
=> 표의 th, tr, td에 대해서 복습하고 원리를 확실히 파악하는 것이 중요하다고 생각했다^^