728x90
728x90

 

본 글은 명품자바프로그래밍 2장 연습문제, 예제의 문제와 풀이이며 실습문제는 여기로 이동해주세요.

 


 

01. 명품자바기본프로그래밍 2장 요약

 

자바 프로그램은 여러 개의 클래스로 이루어지며 class로 선언한다. 클래스 내에는 메소드(멤버함수), 필드(멤버변수), 상수(final필드)를 포함하며 반드시 클래스 내에 캡슐화되어야 한다.

식별자 : 클래스, 변수, 상수, 메소드에 붙이는 이름으로 규칙에 맡게 붙인다.

변수 : 프로그램에서 데이터를 저장하는 공간. 실행에 따라 값이 변한다.

상수 : 프로그램 실행에도 값이 일정

데이터형

기본형데이터타입 8가지 : boolean, char, byte, short, int, long, float, double

참조형데이터타입(레퍼런스형) : 클래스(문자열 String도 포함), 인터페이스, 배열

- C의 포인트처럼 객체를 가리키지만 실제 메모리 주소를 가지지 않는다.

데이터형변환

- 작은 데이터타입 -> 큰 데이터타입 : 문제없음

- 큰 데이터타입 -> 작은 데이터타입 : 데이터손실이 발생할 수 있으며 타입을 직접 지정해줘야 한다.

자바의 입출력

출력문 : System.out.print( )

입력문 : System.in ------ 키보드로 직접 입력받는 표준입력스트림 객체. 입력된 키에 해당하는 바이트 정보를 리턴한다.

Scanner 클래스의 객체 사용은 아래와 같으며 입력된 키를 숫자, 문자, 문자열 등 원하는 타입으로 변환하여 제공한다.

이 클래스를 사용하려면 import.java.util.Scanner; 문과 함께 사용되어야 한다.

 

Scanner s=new Scanner(System.in);

 

\n : 줄바꿈기능

printf 는 출력 서식도 추가할 수 있음.

 

 

연산자 : 산술, 증감, 비교, 시프트, 논리, 조건, 대입

 

조건문 : 참, 거짓에 따라 작업을 수행한다.

1) if

if (조건식) { 실행문장 }

- 조건식은 비교연산이나 논리연산이 혼합된 식으로 구성되며 조건식의 결과는 boolean 값이다.

- true면 실행문장이 실행되며 false이면 if문을 벗어난다.

2) if-else

if (조건식) { 실행문장1 } else (조건식) { 실행문장2 }

- true면 실행문장1이 실행되며 false이면 실행문장2 실행 후 if문을 벗어난다.

- 실행문장이 1줄이면 중괄호 생략 가능하나 처음에는 헷갈리니 붙이는 습관을 가지자.

* 다중, 중첩 if-else 문도 있다.

* 삼항연산자 : if-else 문을 한 줄로 표현하기

 

i=a>b?a-b:b-a;    //a>b가 true면 a-b, false면 b-a

 

3) switch

switch (조건식) { case 값1: 실행문장1; break; case 값2: 실행문장2; break; ( ... ) default : 실행문장 n; }

- case 문은 리터럴(정수, 문자, 문자열)만 가능하며 변수나 식은 사용할 수 없다.

- 어떤 case문에도 값이 일치하지 않으면 default문으로 이동하여 실행문장n을 실행한다. default문은 생략 가능하다.

- case 에 break; 문이 생략되면 다음 break문을 만날때까지 계속 실행된다.

 



02. 명품자바기본프로그래밍 2장 예제

 

예제 2-1. 자바프로그램의 기본 구조를 살펴보자. #명품자바프로그래밍2장예제1번

 

package Luxuryjava;

public class P0201 {     //클래스
    public static int sum(int n, int m){   //메소드
       return n+m;
    }   
 
    //메인메소드에서 실행 시작
    public static void main(String[] args) {  //메소드
       int i=20;
       int s;
       char a;

    s=sum(i, 10);    //메소드 호출
    a='?';         
    System.out.println(a);   //문자 '?' 출력
    System.out.println("Hello");  //문자열 출력
    SYstem.out.println(s);   // 정수값 30 출력
    }
}

 

 

 

예제 2-2. 변수, 리터럴, 상수 활용 #명품자바프로그래밍2장예제2번

반지름이 10.0인 원의 면적을 구하시오. 원의 넓이 구하는 공식은 반지름*반지름*파이로 계산

 

package Luxuryjava;
public class P0202 {
    public static void main(String[] args) {
        final double PI = 3.14;   // 원주율 선언 (상수)
        double radius= 10.0;      // 원의 반지름 
        double circleArea = radius*radius*PI;   // 면적
        System.out.println("원의면적은" + circleArea);
            }
}   // 결과 : 314.0

 

 

 

예제 2-3. 타입 변환 #명품자바프로그래밍2장예제3번

다음 소스의 실행 결과는 무엇인가요?

(문자의 유니코드를 알고 싶으면 char형 변수를 int로 변환하면 된다. 바이트 단위로 표현하면 a는 97, A는 65부터 시작한다.)

package Luxuryjava;
    // 타입변환 예제 
public class P0203 {
    public static void main(String[] args) {
        byte b = 127;
        int i =100;
        System.out.println(b+i);
        System.out.println(10/4);   // 정수 나누기
        System.out.println(10.0/4);  // 실수 나누기
        System.out.println((char)0x12340041);  // char로 변환, 0x0041. 정수는 65
        System.out.println((byte)(b + i));    // 227의 16진수 0xE3*
        System.out.println((int)2.9 + 1.8);   // 2 + 1.8
        System.out.println((int)(2.9 + 1.8));   // 4.7의 정수
        System.out.println((int)2.9 + (int)1.8);  
    }
        // 결과값 227, 2, 2.5, A, -29, 3.8, 4, 3 
}

 

 

 

예제 2-4. Scanner을 이용한 키 입력 연습 #명품자바프로그래밍2장예제4번

Scanner를 이용하여 이름, 도시, 나이, 체중, 독신 여부를 입력 받고 다시 출력하는 프로그램을 작성하라.

 

package Luxuryjava;
import java.util.Scanner;
public class P0204 {
    // Scanner 키연습
    public static void main(String[] args) {
        System.out.println("이름,도시,나이,체중,독신 여부를 입력");
        Scanner s = new Scanner(System.in);
        String name = s.next();     // 문자열 읽기 
        System.out.print("이름은 "+name+",");       
        String city = s.next();
        System.out.print("도시 "+city+",");                   
        int age = s.nextInt();   // 정수 읽기 
        System.out.print("나이 "+age+"살,");        
        double weight = s.nextDouble();   // 실수 읽기 
        System.out.print("체중은 "+weight+"kg,");       
        boolean single = s.nextBoolean();    // 논리값 읽기 
        System.out.println("독신여부는 "+single+"입니다.");
        s.close();
    }
}

 

 

 

예제 2-5. /와 % 산술 연산 문제 #명품자바프로그래밍2장예제5번

초 단위의 정수를 입력받고 시간, 분, 초로 나누어 출력하는 프로그램을 맹그시오.

잘 만들었다면 5000으로 테스트 시 1시간 23분 20초가 나옵니다.

 

package Luxuryjava;
import java.util.Scanner;
public class P0205 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.print("초 단위의 정수를 입력하세요: ");
        int time = s.nextInt();       
        int second = time%60;               // 60으로 나눈 나머지는 초
        int minute = (time/60)%60;      // 60으로 나눈 몫(초)을 60으로 나눈 나머지
        int hour = (time/60)/60;          // time/3600
        System.out.print(time +"초는 ");
        System.out.print(hour +"시간 ");
        System.out.print(minute +"분 ");
        System.out.print(second +"초입니다. ");    
        s.close();
   }
}

 

 

 

예제 2-6 대입연산자와 증감 연산자 #명품자바프로그래밍2장예제6번

다음 코드의 실행 결과는?  (답 : a=6, b=9, c=1 / a=3, d=4 / a=5, d=5 / a=5, d=4 / a=3, d=3)

 

package Luxuryjava;
public class P0206 {
    public static void main(String[] args) {
            int a=3, b=3, c=3;            
            a += 3;
            b *= 3;
            c %= 2;
            System.out.println("a=" + a + ", b=" + b + ", c=" + c);           
            int d=3;
            a = d++; 
            System.out.println("a=" + a + ", d=" + d); 
            a = ++d; 
            System.out.println("a=" + a + ", d=" + d); 
            a = d--; 
            System.out.println("a=" + a + ", d=" + d); 
            a = --d;
            System.out.println("a=" + a + ", d=" + d);
    }
}

 

 

 

예제 2-7 비교연산자와 논리연산자 #명품자바프로그래밍2장예제7번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0207 {
    public static void main(String[] args) {
        System.out.println('a' > 'b');    //false
        System.out.println(3 >= 2);       //true  
        System.out.println(-1 < 0);       //true
        System.out.println(3.45 <= 2);    //false
        System.out.println(3 == 2);       //false
        System.out.println(3 != 2);       //true
        System.out.println(!(3!=2));    //false
        System.out.println((3>2) && (3>4));    //false
        System.out.println((3!=2) || (-1>0));    //true
        System.out.println((3!=2) ^ (-1>0));    //true
    }
}

 

 

 

예제 2-8 조건연산 #명품자바프로그래밍2장예제8번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0208 {
    public static void main(String[] args) {       
        int a = 3, b = 5;
        System.out.println("두 수의 차는 "+((a>b)?(a-b):(b-a)));
            // a가 b보다 크면 a-b, 작으면 b-a를 하라. 결과 : 2
    }
}

 

 

 

예제 2-9 비트논리연산과 비트시프트연산 #명품자바프로그래밍2장예제9번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0209 {
    public static void main(String[] args) {       
        short a = (short)0x55ff;
        short b = (short)0x00ff;        
        System.out.println("[비트연산결과]");
        System.out.printf("%04x\n", (short)(a&b));   // "%04x\n" : 16진수 형식으로 출력 
        System.out.printf("%04x\n", (short)(a|b));   // printf ("출력서식", 출력할 내용);
        System.out.printf("%04x\n", (short)(a^b));   
        System.out.printf("%04x\n", (short)(~a));     
        // And, OR, XOR, NOT.  답은 00ff, 55ff, 5500, aa00      
        byte c= 20;  // 0x14
        byte d= -8;  // 0xf8       
        System.out.println("[시프트연산결과]");
        System.out.println(c << 2);     
        System.out.println(c >> 2);   // 0 삽입 
        System.out.println(d >> 2);   // 1 삽입 
        System.out.printf("%x\n", (d  >>> 2));  // 0 삽입 
    }   //  답은 80, 5, -2, 3ffffffe
}

 

 

 

예제 2-10 if문 #명품자바프로그래밍2장예제10번

시험 점수를 입력받고 점수가 80점 이상이면 합격 판별을 하는 프로그램 작성하기

 

package Luxuryjava;
import java.util.Scanner;
public class P0210 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);        
        System.out.println("점수를입력하시오: ");
        int score= s.nextInt();
        if (score >=80)
            System.out.println("축하합니다! 합격 ");
        s.close();
    }
}

 

 

 

예제 2-11 if - else문 #명품자바2장예제11번

스캐너로 정수를 입력받고 3의 배수인지 판별하기

 

package Luxuryjava;
import java.util.Scanner;
public class P0211 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);       
        System.out.print("숫자를 입력하시오: ");
        int num = s.nextInt();        
        if(num % 3 == 0)
            System.out.println("3의 배수입니다. ");
        else
            System.out.println("3의 배수가 아닙니다. ");       
        s.close();
    }
}

 

 

 

예제 2-12 다중if - else 로 학점 매기기 #명품자바프로그래밍2장예제12번

스캐너로 정수값인 성적을 입력받고 학점매기기. 90점까지는 A, 80점까지는 B, ...60점까지는 D, 나머지는 F

 

package Luxuryjava;
import java.util.Scanner;
public class P0212 {
    public static void main(String[] args) {
        //char grade;
        Scanner s = new Scanner(System.in);
        System.out.println("점수를입력하세요: ");
        int score = s.nextInt();
        if(score >= 90)
            System.out.println("A");
        else if(score >=80)
            System.out.println("B");
        else if(score >=70)
            System.out.println("C");
        else if(score >=60)
            System.out.println("D");
        s.close();            
    }
}
package Luxuryjava;
import java.util.Scanner;
public class P0212 {
    public static void main(String[] args) {
        char grade;
        Scanner s = new Scanner(System.in);
        System.out.println("점수를입력하세요: ");
        int score = s.nextInt();
        if(score >= 90)
            grade='A';
        else if(score >=80)
            grade='B';
        else if(score >=70)
            grade='C';
        else if(score >=60)
            grade='D';
        else
            grade='F';
        System.out.println("학점은 "+grade+" 입니다.");     
        s.close();    
    }
}

 

 

 

예제 2-13 중첩 if - else문 #명품자바프로그래밍2장예제13번

스캐너로 정수값인 성적을 입력받고 60점 이상은 합격, 미만이면 불합격 출력하기. 단, 4학년의 경우 70점 이상이어야 합격.

 

package Luxuryjava;
import java.util.Scanner;
public class P0213 {
    public static void main(String[] args) {
        Scanner s= new Scanner(System.in);
        System.out.print("점수를입력하시오:");
        int score = s.nextInt();
        System.out.print("학년을입력하시오:");
        int year = s.nextInt();
        if (score >=60) {
            if(year!=4)
                System.out.println("합격");
            else if(score >=70)
                System.out.println("합격");  //4학년이 70점 이상
            else
                System.out.println("불합격");  //4학년 70점 미만
        }
        else
            System.out.println("불합격");  //60점 미만
        s.close();
    }
}

 

 

 

예제 2-14 switch으로 학점 매기기 (2-12의 다른 방법) #명품자바2장예제14번

스캐너로 정수값인 성적을 입력받고 90점까지는 A, 80점까지는 B, ...60점까지는 D, 나머지는 F

 

package Luxuryjava;
import java.util.Scanner;
public class P0214 {
    public static void main(String[] args) {       
        Scanner s = new Scanner (System.in);
        char grade;
        System.out.println("점수를 입력하시오 :");
        int score=s.nextInt();       
        switch (score/10) {
        case 10:
        case 9:
            grade = 'A';
            break;
        case 8:
            grade = 'B';
            break;
        case 7:
            grade = 'C';
            break;
        case 6:
            grade = 'D';
            break;
        default:
            grade = 'F';
        }
        System.out.println("학점은"+grade+"입니다");
        s.close();
    }
}

 

 

 

예제 2-15 switch문 #명품자바프로그래밍2장예제15번

에스프레소, 카푸치노, 카페라떼는 3500원, 아메리카노는 2000원으로 하여 커피 메뉴의 가격을 알려주는 프로그램을 만들기

 

package Luxuryjava;
import java.util.Scanner;
public class P0215 {
    public static void main(String[] args) {
        Scanner s= new Scanner(System.in);     
        System.out.println("커피메뉴를 선택하시오 ");
        String order = s.next();
        int price=0;

        switch (order) {
        case "에스프레소":
        case "카푸치노":
        case "카페라떼" :
            price = 3500; break;
        case "아메리카노":
            price = 2000; break;
        default:
            System.out.println("메뉴에없습니다");
        }
    if (price!=0)
        System.out.print(order+"는"+price+"원입니다");
    s.close();
    }
}

 

 

 

 

요약과 예제를 본 후 연습문제를 풀어보고 싶으시다면,
자바기본프로그래밍 연습문제는 여기로 이동해주세요.

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

<!DOCTYPE html>- HTML5 문서를 선언, HTML5로 작성됨을 알림

<HTML>...</HTML>- HTML 문서의 시작과 끝 

<HEAD>...</HEAD>- 문서의 상단 제목을 표시하는 <TITLE>, 문서정보를 설정하는 <meta>, <link>태그 등 화면에 출력되지 않는 설정

<BODY>...</BODY>- 실제 화면에 나오는 콘텐츠 작성

 

출처 : tcpschool.com/html

 

<html lang="en"> => <html lang="ko"> : 언어설정

<meta charset="UTF-8"> : 웹브라우저에게 글자 인코딩 형식정보를 알려줌

<meta name="viewport" content="width=device-width, initial-scale=1.0"> : 브라우저로 표시하는 기기의 사이즈에 따라 맞추는 기능

<meta http-equiv="X-UA-Compatible" content="ie=edge"> : 익스플로러 브라우저가 호환성을 가장 최신버전으로 맞춰 표시하라는 뜻

 

 

HTML 편집기 Visual Studio Code

 

장점은 속도, 심플함, 다양한 OS 지원( 리눅스, 윈도우 , IOS), 강력한 IntelliSense 지원, 디버깅 및 확장 능력이 있다.

 

Visual Studio Code – 코드 편집기 | Microsoft Azure

거의 모든 언어로 작동되고 모든 OS에서 실행되는 강력한 코드 편집기인 Visual Studio Code를 사용하여 Azure에서 편집하고 디버그하고 배포하세요.

azure.microsoft.com

 

프로그램 설치 후 프로그램 내 마켓플레이스에서 live server을 검색해서 설치해주면 내가 만든 것을 바로바로 작업 중간마다 볼 수 있다.

사용은 코드파일 우클릭> open with live Server 클릭하거나 Alt+L, Alt+O를 눌러준다.

 

 

HTML Tag 형식

HTML 태그는 태그 이름을 꺾쇠 괄호 < > 로 감싸서 표현한다. 태그는 대소문자를 구별하지는 않지만 소문자로 사용.

<img> <br> <hr> 등과 같이 종료 태그 없이 시작 태그만을 가지는 태그를 빈 태그(empty tag)라고 한다.

 

<태그이름> // 시작 태그 (start tag, opening tag) 

</태그이름> // 종료 태그 (end tag, closing tag)

 

HTML 요소(Element)

요소는 시작태그와 종료태그 그리고 가운데 위치한 콘텐트(Content)로 구성된다. html 요소를 도식화 하면 html 요소는 head와 body 요소를 포함하고 head와 body는 title 과 p 요소를 포함하는데 이를 부모와 자식 관계라 한다. 코드 작성 시 이런 중첩관계를 알기 쉽게 indent(들여쓰기)하여 가독성을 높여주자.

 

 

속성 (Attribute)

속성은 태그의 기본 기능을 수정하거나 특정한 기능을 부여할 수 있다.

시작태그에 ( 속성 = 속성값 )으로 나타낸다.

 

 

 

HTML Tag 의 종류

 

제목 태그 (Heading)

글의 제목을 나타낼때 쓰는 태그. <H1>~<H6>까지 있으며 1이 가장 큰 크기이다. 사실 제목을 쓰지 않고 그냥 <p>(단락)라든지 글의 크기만 키우면 제목처럼 쓸수 있겠지만 여러 검색엔진들은 h태그를 이용해 키워드를 찾기 때문에 정보와 검색에서 매우 중요한 태그.


단락 태그 (Paragraph)

텍스트를 표시할때 앞뒤에 줄바뀜이 있는 '단락'을 만든다.  문단 구분 시 <p>태그를, 줄 바꿈시 <br>태그를 이용.

HTML에서 텍스트 사이 스페이스로 간격을 많이 뛰워도 한칸으로 인식하고 줄바꿈은 무시된다.

 

 

<div> 태그

<div>태그 : 콘텐츠의 영역이나 그룹화를 할 때 사용. 스타일등의 속성을 추가해서 원하는 문단이나 구역만큼 속성을 수정.

<span> 태그 : 다른 텍스트와 구별하기 위해 속성으로 스타일을 사용. 배경색은 글자가 있는 곳만 적용

주석 : <!--내용-->으로 표시한다. 각 코드 부분의 기능을 설명할 때 등등 쓴다.

 

<pre> 태그 : 특수한 문자나 코드 같은 경우를 그대로 나타낼때

<hr> 태그  : 수평줄 넣기 , 주제 바뀜을 나타냄

<blockquote> 태그 : 인용문

<q> 태그 : 한줄 인용

<strong> , <b> 태그 : 텍스트를 굵게 표시. 외관은 같지만 중요한 의미를 넣을때는 <strong> 태그를 사용

<em>, <i> 태그 : 텍스트를 강조하여 이탤릭체로 표현. 중요성이 있을때 <em> 태그, 단순히 이탤릭체로 쓸때는 <i> 태그를 사용

<mark> 태그 : 형광펜 효과

<ruby> 태그 : 동아시아 글자 표기

<del> 태그 : 글자 중간에 선긋기

<ins> 태그 : 글자아래 밑줄

<sub> 태그 : 수학공식 글자 아래에 작은 글자

<sup> 태그 : 수학공식 글자 위의 작은 글자

 

 

블록요소 (Block)

 

블록태그 : 텍스트를 블록으로 묶어 전체를 차지하는 태그

모든 인라인 요소를 포함할 수 있고 다른 블록요소도 포함 가능. width, height, margin, padding 등을 사용해서 레이아웃을 수정할 수 있고, 블록요소 다음에 줄바꿈이 일어난다. 이 자체로 한 줄을 차지함. 블록 요소는 vertical-align, text-align 이 적용되지 않는다.

 

{display:inline} css로 인라인요소의 속성을 가진 블록요소를 만들 수 있다. 

 

//블록태그 모음
address, article, aside, audio, 
blockquote, canvas, dd, div, dl, 
fieldset, figcaption, figure, footer, form, 
h1, h2, h3, h4, h5, h6, 
header, hgroup, hr, noscript, ol, output, 
p, pre, section, table, ul, video

 

 

 

인라인 요소 (Inline) 

인라인태그 : 줄바꿈 없이 문장 안에서 특정 부분 텍스트를 표시하는데 사용. 

항상 블록 요소 안에 포함되어 있으며 인라인 요소안에 다른 인라인 요소가 포함될 수 있다. 기본적으로 컨텐츠가 끝나는 지점까지를 넓이로 가지게 되어 임의로 width, height로 변형을 줄 수가 없다. 인라인 요소는 line-height로 줄의 높낮이를 조절할 수 있고 text-align으로 텍스트 정렬을 할 수 있다. 그리고 인라인 요소 다음에는 줄바꿈이 없다. 인라인 요소는 height, width가 적용되지 않는다.

 

{display:block} CSS로인라인 요소를 블록 요소의 속성으로 변경 할 수 있다. 

{display:inline-block} : 인라인요소와 블록요소의 속성을 모두 갖기

 

//인라인태그모음
a, abbr, acronym, 
b, bdo, big, br, button, 
cite, code, dfn, em, 
i, img, input, kbd, 
label, map, object, q, 
samp, small, script, select, span, strong, sub, sup, 
textarea, tt, var

 

 

 

목록 태그 ul, ol, li

 

큰 카테고리 : ul (순서없음. Unordered List), ol (순서있음)

* 중첩 리스트(Nested List) : 리스트 안에 리스트가 들어가기도 한다.

 

속성값

모양

속성값

설명

disc

● (default)

1

숫자 (default)

circle

A

영문 대문자

square

a

영문 소문자

none

​없음

I

로마 대문자

 

 

i

로마 소문자

 

 

목록 아이템 : <li></li>

 

// 속성 style="list-style-type:속성값"
<ul style="list-style-type:circle;">



리스트 시작번호 지정 : 예를 따르면 넘버가 50부터 매겨진다.

 

<ol start="50">
<li>맵고</li>
<li>달고</li>
<li>짜다</li>
</ol>

 

 

 

설명 목록 <dl> , < dt> , <dd>

<dl> 설명 목록 태그

<dt> 제목 태그

<dd> 설명 태그

 

 

표 (Table 테이블) 태그

 

<table> 표 만들기 태그 , <tr> : row 행 , <td> : column 열 , <caption> 표 제목, <th> : 제목셀

<table border="1"> 테이블 테두리선 크기

 

<col> : 닫는 태그 없는 단독태그. span 속성으로 여러열 선택해서 style 적용 가능하다.

<colgroup> :  열을 묶어서 스타일 지정. caption 태그 뒤 tr, td 태그 앞에 위치한다.

 

<colgroup>
<col span="2" style="background-color:red">
<col style="background-color:blue">

 

<colspan> : 열병합. 즉 가로셀들을 병합.

<rowspan> : 행병합. 즉 세로셀들을 병합.

 

<th colspan="2">연락처</th>

 

 

table tag도 태그 안에 테이플 태그 (표 안에 표)가 들어갈 수 있다.

<thead>, <tbody>, <tfoot> : 표 구조 그룹 태그로 그룹화하여 스타일 디자인 할 수 있는 장점이 있다. 순서 상관없이 입력 가능

 

 

 

 

 

HTML 특수문자 입력하기

 

표현문자

문자표현

문자 설명

스페이스(space)

&nbsp;

공란(스페이스)

&

&amp;

엠퍼샌드 (and)

<

&lt;

보다 작은

=

-

등호

>

&gt;

보다 큰

©

&copy;

저작권 표시 (Copyright)

 

 

HTML 이미지 태그

 

<img src="이미지경로" alt="이미지가 없을시 대체텍스트" width="" height="">

종료 태그가 없는 단독 태그로 경로의 경우 저장된 사진 이외에 웹이미지주소도 가능하다. 가로 세로는 픽셀, %도 가능하다.

경로의 경우 html파일의 위치를 기준으로 경로를 정한다.

 

벡터 : 점과 점 사이의 곡선으로 이미지를 구성하는 것. 함수와 비슷

레스터 : 작은 점 픽셀이 모여서 그림을 완성.

 

jpg : 압축을 통해 용량을 줄인 이미지 형식으로 변환 시 손실 발생

gif : 무손실이지만 256색상만 표현 가능. 움짤

png : 무손실로 투명도를 지원. 로고, 아이콘 등에 많이 씀. png-24, png-8.

svg : 벡터이미지를 이용해서 크기를 변화해도 이미지가 손상되지 않으나 아직은 웹에서 봐본적 없음.

 

<figure><figcaption> : 이미지설명 tag. 웹문서의 멀티미디어 파일(오디오, 비디오)과 사진, 표, 소스코드 등을 한 그룹으로 묶을 때 사용. 

<figure><figcaption>이미지설명글</figcaption><img src=""></figure> 

 

 

 

하이퍼링크 a 태그

 

타 사이트나 문서로 연결하는 링크를 만드는 것. 페이지 내에서도 특정 id를 갖는 요소에 링크할 수 있다.

<a href="링크주소"><img src="이미지주소"></a>

<h2 id="top>무한의탑</h2>
<a href="#top">top</a>

 

target="_blank" : 새창에서 링크 열기 

target="_self" : 기본값

 

link : 미방문 상태,

visited : 방문한 상태,

hover : 링크 위에 마우스를 올린 상태,

active : 누르고 있는 상태.

 

* a: link {color: red; } 처럼 각 상태로 나뉘어서 단어들로 스타일 적용이 가능하다.

 

 

 

 

<map> <area> 태그

 

이미지 안의 일정 영역에 링크를 걸어 동작하기. usemap 과 map 태그의 맵이름은 같아야한다.

area shape에서 rect 나 circle 중에 선택한다. 사각형은 (x1,y1,x2,y2) 두 점의 좌표를, 원은 (x,y,r) 좌표 즉 중심점과 반지름 길이를 넣는다. 

<img usemap="#mapname" src="img address">
<map name="mapname">
<area shape="원이나 네모 중 하나" coords="좌표" href="주소">
</map>

 

 

HTML 멀티미디어 오디오, 비디오 태그

 

멀티미디어 포맷 : .swf, wav, mp3, mp4, mpg, wmv, avi....

멀티미디어 : 컴퓨터를 매개로 하여 영상,음성,문자 등과 같은 다양한 정보 매체를 복합시킨 장치 또는 그러한 시스템. 다중매체나 복합매체.

HTML5는 미디어를 별도 플러그인 설치 없이도 재생이 가능하다. 각 브라우저별 지원하는 형식을 확인하고 개발하면 좋을 것이다.

 

 

 

 

iframe 태그

 

<iframe src="URL"></iframe>

문서 내에서 다른 문서나 홈페이지 주소 등 URL을 불러오는 것. 웹크롤링 시 쓴다.

 


* 속성

SRC: 프레임 안에 불러올 문서의 경로를 설정
ALIGN : 정렬 방식.(top, right. left 등) 
HEIGHT, WIDTH : 프레임의 높이, 넓이
HSPACE, VSPACE : 각각 가로,세로 여백
MARGINHEIGHT, MARGINWIDTH : 프레임 내의 문서와 프레임 테두리와의 여유공간(높이,넓이)
SCROLLING : 스크롤 바를 나타내거나 보이지 않게 한다.(auto, yes,no로 값을 주면 됩니다) 
BODER, BORDERCOLOR : IFRAME의 두께나 테두리 칼라

 

 

 

<form> 폼태그

사용자 input을 받기 위한 태그들. 사용자가 웹사이트로 정보를 보낼 수 있는 요소는 모두 폼이다. (로그인 등) form은 사용자가 웹브라우저에 입력한 정보를 서버로 넘겨주는 역할을 하며 서버에서는 입력된 정보를 DB에 저장하거나 저장된 회원정보등을 검색, 수정하여 결과를 브라우저로 다시 보낸다. 폼의 모양을 만드는 것은 html , 폼에 입력한 정보를 처리하는 것은 ASP, JSP, PHP 와 같은 서버프로그램밍 언어다.

 

<form action="/actipn_page.php" method="get">
	First name : <input type="text" name="fname">
    <input type="submit" value="Submit">
</form>

 

 

<form 속성 속성값> </form>

<label for="id이름">label</label> : 제목붙이기

<fieldset></fieldset> : 폼요소 그룹묶기

 

<html>
<body>
<form>
	<fieldset>
    <label>제목붙이기<input type="text"></label>
	<legend>개인정보:</legend>
	Name: <input type="text">
	</fieldset>
</from>
</body>
</html>

 

 

 

 

INPUT 태그

 

<input type="유형" [속성="속성값"] >

 

*텍스트와 패스워드 필드의 공통속성

name(구별할 수 있는 이름), size(텍프트필드의 길이), value(텍스트필드에 입력 전 처음 보이는 내용),

maxlength(입.....

 

Value

Description

hidden

사용자에게 보이지 않지만 폼 입력값에 추가되어 서버로 전달

text

텍스트 상자

search

검색 상자

tel

전화번호 입력 필드

url

url 주소 필드

email

메일주소 입력필드

password

비밀번호 입력필드. *로 표시

datetime

국제표준시(UTC) 날짜와 시간 입력

datetime-local

사용자 지역을 기준으로 날짜와 시간 입력

date

사용자 지역을 기준으로 날짜(년, 월, 일) 입력

month

사용자 지역을 기준으로 날짜(년, 월) 입력

week

사용자 지역을 기준으로 날짜(년, 주) 입력

time

사용자 지역을 기준으로 시간 입력

number

숫자 조절할 수 있는 화살표 입력

range

숫자 조절할 수 있는 슬라이드 막대 입력

color

색상표 입력

checkbox

여러개 선택할 수 있는 체크박스

radio

여러 항목중 1개만 선택가능한 라디오 버튼

file

파일을 첨부할 수 있는 버튼

submit

서버로 전송 버튼

image

submit 버튼 대신 사용할 이미지

reset

리셋 버튼

button

버튼 입력

 

 

 


 

태그 연습 사이트

https://www.w3schools.com/html/default.asp

 

HTML 연습 사이트

https://codepen.io/

많이쓰는 태그모음

https://www.advancedwebranking.com/html/

 

자동으로 표를 만들어주는 사이트

https://www.tablesgenerator.com/html_tables

 

무료사진 다운로드 사이트

https://unsplash.com/

 

html 파일이 문법에 맞는지 확인하기

https://validator.w3.org/#validate_by_upload+with_options

 

 

* 수업 때 소개받은 도움이 될 만한 유용한 사이트들을 정리해보았습니다.

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

본 글은 수강중인 아카데미 선생님의 수업자료를 참고, 인용하여 작성되었습니다.


1. 인터넷과 웹 

 

인터넷이란 무엇인가

 

인터넷(internet) : 전세계 컴퓨터들을 연결하여 TCP/IP 통신 프로토콜을 이용하여 정보를 주고 받는 글로벌 네트워크 시스템.

하드웨어적으로 케이블, 무선 네트워크 또는 광섬유 케이블을 사용하여 장치를 연결하며 네트워크는 라우터, 허브, 스위치, 중계기 등 여러 장치로 구성된다 . 인터넷을 이용하는 각 장치에는 장치를 식별하기 위해 고유한 IP 주소가 있다.

프로토콜 : 컴퓨터끼리 정보를 교환할 때 데이터의 형식이나 통신 순서 등을 미리 일치시켜야만 통신이 가능합니다. 이렇게 컴퓨터 사이의 통신에서 정보를 교환하기 위해 미리 만들어 둔 네트워크 통신 규약을 프로토콜이라고 부른다.

IP주소: 인터넷 프로토콜 주소는 인터넷에 연결할 때 모든 기기(예: 컴퓨터, 태블릿 또는 휴대 전화)에 할당되는 고유 번호.

 

 

 

인터넷, 그 역사는

 

인터넷은 1960년대 미국 국방성에서 군사적인 목적으로 구축한 알파넷(ARPANET)으로부터 시작되었다. 알파넷은 컴퓨터들을 직접 연결하는 회선 교환 방식 대신, 대규모 기간 통신망을 구축해 연결된 컴퓨터끼리 자유롭게 데이터를 주고 받을 수 있는 백본(backbone) 방식을 도입했다. 그 당시에 구소련과 핵전쟁으로 중앙통제시설이 완전히 파괴되는 가상적인 상황을 기초로 만들어졌기 때문에 기존의 네트워크같이 중앙의 호스트 컴퓨터가 네트워크 전체를 관리하는 폐쇠적인 체제가 아니라 수많은 컴퓨터를 병렬로 연결시켜서 누구나 참여할 수 있는 자율 분산적인 형태를 지니게 되었고 이후 데이터의 전송 속도가 빠르고 안정적인 TCP/IP 프로토콜을 사용함에 따라 더욱 빠르게 발전하게 된다. 이러한 소규모 네트워크들이 더욱 발전하고 서로 접속함에 따라 현재는 전 세계적인 거대한 컴퓨터 네트워크의 집합체로 현대인에게 없어서는 안 될 역할을 하고 있다.

 

 

WWW 월드와이드 웹 (W3)

 

Web은 인터넷이 제공하는 대표적인 서비스 중 하나이다. '월드 와이드 웹(World Wide Web, WWW)'은 전세계에 걸친 정보 공간으로 웹은 검색엔진과 하이퍼텍스트를 통해 인터넷 상의 모든 사용자가 지식과 경험을 스스로 쌓을 수 있으며, 누구든지 검색엔진을 통해 원하는 정보를 검색하거나, 하이퍼텍스트로 다양한 정보 페이지로 자유롭게 넘나들 수 있게 됐다. 하이퍼텍스트는 웹 브라우저라 불리는 프로그램을 통해 웹 서버에서 문서나 이미지등의 정보를 읽어들여 컴퓨터 모니터에 출력하는 형태로 보이게 된다. 그러고 나서 사용자는 각 페이지에 있는 하이퍼링크를 따라 다른 문서로 이동하거나, 그 페이지를 서비스하고 있는 서버로 일련의 정보를 보낼 수도 있다. 하이퍼링크를 따라 이동하는 행위를 흔히 웹 서핑(web surfing) 또는 웹 브라우징이라 하고 관련된 내용들이 모여있는 웹 페이지들의 집합을 웹 사이트라 한다.

 

 

월드 와이드 웹(World Wide Web)의 세가지 기능

1. 통일된 웹 자원의 위치 지정 방법 URL.

2. 웹의 자원 이름에 접근하는 프로토콜(protocol) HTTP,

3. 자원들 사이를 쉽게 항해 할 수 있는 언어 HTML.

 

 

 

URL

 

URLUniform Resource Locator(인터넷에서 자원 위치)의 약자로 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크상의 자원을 모두 나타낼 수 있다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 한다. FTP 프로토콜인 경우에는 FTP 클라이언트를 이용해야 하고, HTTP인 경우에는 웹 브라우저를 이용해야 한다. 텔넷의 경우에는 텔넷 프로그램을 이용해서 접속해야 한다.

 

http 는 프로토콜(규약)이다. URL의 첫 파트는 브라우저가 어떤 규약을 사용해야 하는 지를 나타낸다. 프로토콜은 컴퓨터 네트워크에서 데이터를 교환하거나 전송하기 위한 방법들의 규약이고 웹에서는 HTTP 프로토콜이나 HTTPS 프로토콜의 보안 버전을 사용한다.

 

www.example.com 은 도메인 이름이다. 직접 IP address를 사용하는 것도 가능하나 덜 편리하기 때문에 자주 안 사용한다.

:80 은 포트인데 이것은 기술적으로 웹서버에서 자원을 접근하기 위해 사용하는 "관문(gate)"을 가리킨다. 만약 웹서버가 자원의 접근 하기 위해 표준 HTTP 포트 (HTTP를 위한 80, HTTPS를 위한 443)를 사용한다면, 포트 번호는 보통 생략한다. 그렇지 않으면 포트 번호는 필수!

/path/to/myfile.html 은 웹서버에서 자원에 대한 경로이다. 초기의 웹에서는, 웹서버상에서 물리적 파일 위치를 나타냈다. 요즘에는, 실제 물리적 경로를 나타내지 않고, 웹 서버에서 추상화하여 보여준다.

웹의 역사

 

1989년 3월 스위스와 프랑스 사이에 위치한 유럽 입자 물리 연구소(CERN)의 소프트웨어 공학자인 팀 버너스리 등의 제안으로 시작되어 연구 개발되었다. 원래는 세계의 여러 대학과 연구기관에서 일하는 물리학자들 상호간의 신속한 정보교환과 공동연구를 위해 고안되었다. 문자나 사진, 동영상, 음성 등이 조합된 데이터베이스인 사이트의 정보를 전용 열람용 소프트웨어인 웹 브라우저를 통해 볼수 있다.

 

최초의 웹사이트 

 

http://info.cern.ch

 

info.cern.ch

 

관리 기관

이러한 웹은 관리자가 존재하지는 않지만, 월드 와이드 웹 컨소시엄(W3C)라는 국제 기구에서 HTML이나 CSS, XML 등과 같은 웹 언어나 인터넷 프로토콜 등에 대한 공개 웹 표준을 제정하고 관리하는 역할을 수행하고 있다.

IPv4 vs. IPv6 주소

현재 사용되는 인터넷 프로토콜에는 IP 버전 4(IPv4), IP 버전 6(IPv6) 두 가지가 있다. 두 가지 주요 기능은 위치 주소 지정 및 식별.

 

IPv6은 예측 가능한 미래에 이용 가능한 주소를 충분히 보장하기 위한 예방책으로 1995년도에 도입되었다(IPv6는 128비트를 사용하므로 3.4 x 1038개 주소, 반면 IPv4는 32비트를 사용하므로 약 43억 개 주소).

 

Web => App (2010년 웹은 죽었다.)

'웹은 죽었다. 인터넷 만세(The Web is Dead. Long Live the Internet)'라는 제목으로 게재된 기사였죠. '와이어드' 편집장이자 유명 컨퍼런스 'TED' 기획자로 유명한 크리스 앤더슨과, 또다른 저널리스트 마이클 울프가 공동 작성

OTT(Over The Top) : 인터넷을 통해 방송 프로그램·영화·교육 등 각종 미디어 콘텐츠를 제공하는 서비스

=> 넷플릭스 , 와챠 , 아마존프라임 등

 

열린 웹 VS. 닫힌 플랫폼

플랫폼은 웹과 지향점이 다르다. 웹의 아버지, 팀 버너스 리는 2004년 인터뷰에서 "웹은 사용자 누구나 구축에 참여하고, 유용한 정보를 쌓고, 그 정보가 모두에게 공개되어 다시 사용자가 모여드는 선순환 구조로 디자인", "웹의 정신은 공개와 공유이며, 국경을 초월한 아이디어의 융합과 협력을 도모하려면 각자 별도의 플랫폼을 만드는 경쟁을 해선 안 된다" 플랫폼이란 해외로는 구글, 페이스북, 유튜브, 국내는 네이버나 카카오 같은 거대 플랫폼이 그것이다.

플랫폼의 폐혜

▶플랫폼의 알고리즘은 사용자의 관심사나 취향에 맞는 정보를 위주로 제공하므로, 그와 맞지 않는 정보는 사용자로부터 자주 배제된다.

▶수의 플랫폼이 사용자 정보를 독점하여 지속적으로 수익을 올리거나 영향력을 행사하기 쉽게 만든다

 

 

 

2. 클라이언트(Client) 와 서버(Server)

클라이언트와 서버는 웹에 연결된 컴퓨터다.

클라이언트 : 웹 서비스를 이용하는 사용자

서버 : 웹 서비스를 제공하는 공급자

 

 

 

WEB 동작 방식

 

1. 사용자(Client)는 크롬, 엣지, 파이어폭스 등의 브라우저에 원하는 사이트의 주소(도메인 이름)를 입력하여 엔터

2. 컴퓨터는 도메인 이름 주소를 모르기 때문에 DNS 서버에서 Domain => IP address 변환

3. IP address 로 서버에 요청

4. 서버는 HTML CSS JavaScript 등의 웹사이트를 구현할수 있는 데이터를 가지고 브라우저에 전달

5. 브라우저는 HTML을 기반으로 웹사이트를 구현

 

도메인

 

도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해 준다. 도메인 네임 시스템은 흔히 "전화번호부"에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

서버와 브라우저의 웹사이트 구현과정

 

Front-End and Back-End : 프론트엔드와 백엔드, 풀스택 분류

 

Front-End : 눈에 보이는 웹 브라우저 위주의 프로그래밍

Back-End : 보이지 않는 서버를 구성하고 데이타베이스등 관련 서비스를 제공하는 프로그래밍

Full-Stack : ... Front + Back + @

 

3. HTML5와 웹표준

HTML, CSS, JacaScript란?

 

HTML로는 웹의 내용/골격을 작성하고, CSS로는 웹을 디자인하며, 자바스크립트로는 웹의 동작/기능을 구현 ​

 

(왼쪽) 네이버 사이트에서 CSS를 제거/ (오른쪽)CSS 적용

HTML(Hyper Text Markup Language)

웹 문서의 구조를 정의하고 콘텐츠를 표현하는 기본 형식의 언어 ( *.html )

하이퍼텍스트 ( Hyper Text ) : 웹사이트의 링크를 클릭해 즉시 다른 문서나 사이트로 이동할 수 있는 기능

마크업 ( Markup ) : 태그(Tag)를 사용하여 문서에서 어느부분이 제목이고 본문인지, 사진이고 링크인지 표시하는 것.

 

​* 크롬 웹브라우저에서 F12나 검사를 눌러서 간단히 우리가 보는 웹페이지의 내용을 수정할 수 있는 기능을 지원한다.

웹 표준이란 ?

웹 사이트를 만들 때 지켜야 하는 약속들을 정리한 것

웹 표준을 지켜서 웹사이트를 제작하면 브라우저에 상관없이 웹 사이트를 문제 없이 볼 수 있다.

HTML5로 문서를 만드는 것이 웹표준을 지키는 것

웹브라이저 이용률 통계 조회 사이트

 

 

 

KOREA HTML5 |

HTML5 소개하고 동향정보와 활용정보, 교육안내 등 관련 정보 제공

www.koreahtml5.kr

 

국내 웹브라우저 사용률

 

전세계에서 크롬이 가장 많이 쓰이는 웹 브라우저이고 국내 상황은 아직도 IE 를 그다음으로 많이 사용한다. 웹 표준(HTML5)을 위해 마이크로소프트에서 IE 대신에 엣지를 쓰도록 권고하고 있으나 엣지의 사용자들이 늘어나지 않는 추세이다.

 

 

Desktop Browser Market Share Worldwide | StatCounter Global Stats

This graph shows the market share of desktop browsers worldwide based on over 10 billion monthly page views.

gs.statcounter.com

 

 

브라우저 별 HTML5 지원스펙 확인

 

http://html5test.com/results/desktop.html

 

마이크로 소프트 2015년 IE 퇴출(마지막 11.0 ver)

엣지 2018년 12월에 데스크탑 엣지 브라우저 => 크로뮴 기반 (구글프로젝트, 오픈소스)

 

<크로뮴 기반 브라우저>

Microsoft Edge, 오페라, 비발디, Brave, 안드로이드 Webview,

LG 폴더 브라우저, 삼성 인터넷

HTML5의 개념 및 특징

HTML5는 차세대 웹 표준으로 확정(2014년 10월 28일) 되었으며, 기존 텍스트와 하이퍼링크만 표시하던 HTML이 멀티미디어 등 다양한 애플리케이션까지 표현 · 제공하도록 진화한 “웹 프로그래밍 언어. 예로, 오디오 · 비디오 · 그래픽 처리, 위치정보 제공 등 다양한 기능을제공함으로써, 웹 자체에서 처리할 수 있는 기능이 대폭 향상되었다. 

HTML5의 영향으로는 표준 웹 환경이 확산되면 어느 브라우저로도 인터넷에 접근할 수 있게 되고, OS 플랫폼 · 벤더 · 기기 상의 제약에서 벗어나 생태계가 개방화되고,사용자 선택권이 증대될 수 있다.

 

 

하이브리드 앱, 네이티브 앱, 모바일 웹의 차이점은?

 

 

 


 

추천 사이트

 

KOREA HTML5HTML5 소개하고 동향정보와 활용정보, 교육안내 등 관련 정보 제공

 

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

새로운 언어를 배우는 것은 쉬운 일이 아니며, 특히 프로그래밍 언어를 배우는 것은 더욱 그렇다.

사람들이 코딩(coding)을 배우고 싶어하는 많은 이유들이 있는데, 새로운 직업을 시작하기 위해서거나 아니면 코딩을 즐기기 때문이다.

미국 노동통계국(US Bureau of Labor Statistics) 조사에 따르면 소프트웨어 개발자에 대한 수요가 2016년에서 2026년까지 24% 증가할 것으로 추정된다. 매년 기술이 발달하면서 코딩에 대한 수요는 계속 증가하고 있다. 결국 코딩을 배우면 개발자의 직업을 쉽게 가질 수 있다.

또한 수천 개의 리소스, 캠프, 코스, 온라인 튜토리얼로 인해 이제 학습자는 스스로 편하게 코딩을 배울 수 있게 됐다.

 

 

한편 22일(현지시간) 미국의 유력 경제지 포브스는 옵틴몬스터(OptinMonster)의 공동창업자이며 소프트웨어 설계 전문가인 토마스 그리핀(Thomas Griffin)의 칼럼을 통해 "코딩에 처음 입문하든 노련한 프로그래머든 간에, 새로운 프로그래밍 언어를 빠르게 배우기를 원하는 사람들에게 도움을 줄 수 있는 세 가지 팁"을 제시했다.

 

간략히 정리하면 ▲온라인 리스소를 활용할 것(Take Advantage Of Online Resources), ▲제2 언어 습득(Use Second-Language Acquisition), ▲벼락치기로 공부하지 말 것(Don’t Cram Information) 등이다.

 

먼저 온라인 리소스와 툴을 잘 활용해야 한다. 인터넷은 무한한 정보를 제공하고 있기 때문에 이를 최대한 이용해 올바른 리소스와 툴을 찾으면 프로그래밍 언어를 빠르게 배울 수 있다는 얘기다. 실제 스탠포드 대학에 의해 수행된 연구에 따르면 경험 있는 프로그래머들도 새로운 코딩 언어를 배우기 위한 정보를 찾을 때 "구글 검색(Google searches), 문서(Documentation), 예제 코드(Example code), Q&A 사이트" 등 네 가지에 의존한다. 또한 깃(Git) 등을 통해 코드 쓰는 연습을 많이 하고, 개발자를 위한 지식인으로 불리는 '스택오버플로(StackOverflow)'에 가입해 활용하면 도움이 된다.

 

두 번째로 슬라(SLA·Second-Language Acquisition, 제2 언어 습득)를 사용해 시작하라는 것이다. 새로운 프로그램을 배우는 것은 쉬운 일이 아니기 때문에 프로그래밍 언어를 더 빨리 배우고 싶다면, 말하는 언어(spoken language)를 배우는 것과 같은 방식으로 다뤄야 한다는 얘기다. 슬라는 제2 언어 및 그에 수반되는 과학적 학문 등을 배우는 과정과 방법이다. 엠브리-리들 항공대학(Embry-Riddle Aeronautical University)에 따르면, 슬라 이론을 새로운 프로그래밍 언어 학습에 통합하는 효과에 관한 연구를 수행한 결과 학생들이 인지적 프레임워크(cognitive framework)가 있는 새로운 프로그램을 배울 때, 더 빠르고 더 효과적으로 배울 수 있다는 것을 확인했다. 인지적 프레임워크에서 인식은 행동보다 우선하며, 사람의 인식, 정보 처리 능력, 사고 패턴, 문제 해결 기술 등을 강화한다.

 

마지막으로 벼락치기로 공부하지 말아야 한다는 것이다. 실제 UCLA가 수행한 연구에 따르면, 벼락치기식 정보는 더 많은 학습 문제와 더 적은 수면과 관련이 있다고 한다. 즉 벼락치기를 하는 동안 정보를 간직하는 능력은 떨어지고, 뇌는 공부의 시작과 끝만을 기억할 뿐이다. 새로운 프로그래밍 언어를 배우면서 벼락치기 하고 싶은 충동을 극복하기 위해서, 공부 스케줄을 짜서 그것을 고수해야 하고 한 번에 몇 시간씩 공부하는 것보다 20분에서 30분 정도 공부하는 것이 피로, 무기력, 지루함을 겪지 않아 더 유익하다. 특히 공부 하는 사이에 휴식을 취하면 동기 부여를 더 쉽게 할 수 있다.

 

칼럼니스트인 토마스 그리핀은 "만약 새로운 프로그래밍 언어를 배우는 것에 대해 생각하고 있다면, 위 세 가지 조언들은 프로그래밍 언어를 더 빨리 배울 수 있도록 도와줄 것이다"며 "다만 새로운 프로그램을 갑자기 이해하는 마법의 해결책은 없다. 인내심과 끈기가 더 중요하다. 또한 프로그래밍 언어를 배우는데 제2 언어를 배우는 방법을 적용함으로써, 그 내용을 더 빨리 이해할 수 있을 것이다. 특히 실시간으로 연습하는 것보다 더 좋은 방법은 없다. 매일 자신의 코드를 개발하는 데 시간을 들이고, 오류를 테스트해 자료를 더 빨리 이해할 수 있도록 해야한다"고 조언했다.

 

< 저작권자 © 코딩월드뉴스, 무단전재 및 재배포 금지 >

 

 

박병화 기자

 

https://www.codingworldnews.com

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

 

 

명품자바프로그래밍 1장 요약


 

 

자바는 1991년 선마이크로시스템스(오라클) 제임스 고슬링에 의해 개발되기 시작하여 1995년에 발표. GPL(GNU General Public License) 인 오픈 소스 소프트웨어이다. 자바의 목적은 다양한 플랫폼을 갖는 가전제품을 위해 플랫폼 독립적 언어가 필요했고 가전제품에 들어가는 제어장치는 낮은 메모리를 사용하므로 내장형 시스템(embedded system)의 메모리 요구 사항을 충족시키려고 개발됐다. 자바버전은 데스크톱이나 서버를 위한 Java SE, 모바일을 위한 ME, 기업용을 위한 EE로 나누어진다.

 

자바 응용프로그램은 웹 클라이언트, 서버, 웹스타트, 데스크톱, 모바일 등 광범위한 분야에서 사용된다. 하드웨어 독립적인 바이트코드와 이를 실행하는 자바가상기계에 의해 한 번 프로그램을 작성하면 어느 플랫폼에서도 자바 프로그램을 실행 가능한데 이를 WORA(Write Once Run Anywhere) 라 부른다. 자바 언어는 객체 지향, 멀티스레드, 플랫폼 독립성, 패키지 등을 지원한다.

 

자바프로그램을 개발, 실행하기 위한 환경은 JDK/JRE 에서 제공하며, IDE환경을 제공하는 도구에는 이클립스, 인텔리J 등이 있다.

자바 프로그램은 Class 키워드의 클래스 선언으로 시작하며 클래스 내에서 모든 변수나 메소드를 정의한다. main() 메소드부터 실행한다.

 

컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 변환하는 것

자바 소스 파일 확장자는 .java이고 컴파일된 코드의 확장자는 .class 이며 컴파일된 코드를 바이트 코드라고 부른다. 하나의 클래스 파일에는 반드시 하나의 자바 클래스가 컴파일되어 있다. 자바 응용프로그램은 jar 나 custom JRE형태로 배포, 실행이 가능하다.

바이트 코드 : 자바 가상 기계 상에서만 실행되는 코드로서 특정 CPU에 의존적이지 않아 WORA를 실현한다.

 

모듈화 : 자바9부터 module개념이 도입되어 모든 클래스들이 모듈로 나누어 재구성되었는데 대형 프로그램을 작성, 유지관리하기 쉽고 리소스가 제한적인 소형 컴퓨터에서도 자바응용프로그램을 실행시킬 수 있게 한다.

 

자바에서 제공하는 API : http://docs.oracle.com/javase/10/docs/api/ ☞ 즐겨찾기 해 두자. 자바 기능을 이해해두는 데 좋다.

 

 

명품자바프로그래밍 1장 연습문제

1. C언어 소스 파일의 확장자는 .c이고 컴파일하면 .obj파일이 만들어진다. 그러면 자바 소스파일의 확장자와 컴파일된 파일의 확장자는? .java, .class

 

2. 자바 언어를 처음 개발한 사람은?  제임스 고슬링

 

3. Java, C, C++, C# 언어를 세상에 나온 순서대로 나열하라.  C(1972), C++(1983), Java(1995), C#(2000)

 

4. 자바 언어를 처음 개발한 목적은? 

 

다양한 플랫폼을 갖는 가전제품을 위해 플랫폼 독립적 언어가 필요했고 가전제품에 들어가는 제어장치는 낮은 메모리를 사용하므로 내장형 시스템의 메모리 요구 사항을 충족시키려고 개발됐다.

 

5. 개발자가 작성한 자바 프로그램을 직접 실행하는 것은? 

 

1) 자바 가상 기계  2) 운영체제  3) CPU가 직접 실행  4) 이클립스

 

6. '자바는 한 번 작성하면 하드웨어나 운영체제에 상관없이 어디에서나 실행 가능하다' 는 특징을 간단히 줄여 뭐라고 부르는가? WORA

 

7. 자바 언어에 대해 틀린 설명은?

 

1) 자바의 컴파일된 클래스파일은 바이트코드이다.

2) 자바의 클래스 파일은 자바 가상 기계가 설치된 어떤 곳에서도 실행된다.

3) 자바는 링크 과정 없이 컴파일러가 바로 바이트코드를 생성한다.

4) 하나의 클래스 파일에는 여러 개의 컴파일된 클래스들을 저장하여 효과적이다.

 

8. 자바 응용프로그램을 개발하려면 JDK와 JRE 중 어떤 것이 필요한가? 

 

JDK. JDK는 개발자를 위한 툴이고 JRE는 자바 프로그램을 실행시키기 위한 환경을 구성하는데 JDK에는 JRE가 포함되어 있으므로 자바 응용프로그램을 개발하는 개발자는 JDK만 설치하면 된다.

 

9. 다음 중 자바의 특징을 잘못 설명한 것은? 

 

1) 가비지 컬렉션의 기능이 있어 스스로 사용하지 않는 메모리를 수거한다.

2) 포인터가 없기 때문에 프로그램 작성이 쉽다.

3) 클래스 바깥에 전역 함수와 전역 변수를 둘 수 있어 좋은 점이 있다.

4) 서로 관련 있는 클래스 코드들을 패키지에 모아 배포한다.

 

10. 다음 자바 소스프로그램은 어떤 파일 이름으로 저장해야 하나?  Shape.java

public class Shape{
    public static void main(String[] args){
         System.out.println("Shape");
    }
}

 

11. 이 자바 소스 코드를 저장하는 파일 이름과 컴파일되면 생성되는 클래스 파일은?  A.java / A.class, A$B.class, C.class, C$D.class

#명품자바프로그래밍1장연습문제11번

 

public class A{
      .......
   class B{
         .......
    }
}
class C{
      .......
   class D{
         .......
    }
}

 

12. 다음 용어 중 거리가 먼 것 하나는?

 

1) 플랫폼 독립적

2) 자바 언어는 링크의 과정이 없다

3) 자바 프로그램은 자바 가상 기계가 있는 곳에는 모두 실행됨

4) WORA

 

 #명품자바프로그래밍1장연습문제12번

 

 

 

명품자바프로그래밍 1장 실습문제

 

1. 화면에 다음과 같이 "Welcome!", "자바 세계로 오신 것을 환영합니다" 를 출력하는 자바 프로그램을 작성하라. Workspace는 C:\Temp로 하고 프로젝트 이름은 1-1로 한다. 클래스 이름은 Welcome으로 한다.

 

public class Welcome{
    public static void main(String[] args){
         System.out.println("Welcome!");
         System.out.println("자바 세계로 오신 것을 환영합니다");
    }
}

 

#명품자바프로그래밍1장실습문제1번

 

 

2. 화면에 "Sorry" "Thankyou" 를 출력하는 자바 프로그램을 작성하라. Workspace는 C:\Temp로 하고 프로젝트 이름은 1-2로 한다. 클래스 이름은 Sorry로 한다.

 

public class Sorry{
    public static void main(String[] args){
         System.out.println("Sorry");
         System.out.println("Thankyou");
    }
}

 

#명품자바프로그래밍1장실습문제2번

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,
728x90
728x90

오라클 기반으로 데이터베이스 수업을 들으면서 문법규칙, 명령어, 키워드를 정리해보았습니다. 검색은 ctrl + F 로 찾아주세요.

 

 

ORACLE SQL 문법 규칙

 

오라클 SQL은 숫자, 따옴표, 대소문자를 구분합니다.

문장의 마지막은 ; 세미콜론 입력

WHERE에서 표현식 (=리터럴,상수,문자)에 ' ' 빼먹으면 에러

컬럼 별칭 : " ", AS, 한칸 뛰고 이어서

 

산술연산은 그대로 쓰면 됨, 괄호 우선

>=의 순서이며 공백이 들어가면 안됨.

함수는 단일행 / 복수행 함수가 있다.

단일행 : 문자, 숫자, 날짜, 변환(묵시적데이터, 명시적데이터 변환), 일반 함수

날짜의 경우 윈도우와 리눅스는 표현 순서가 다르다.

 

ORACLE SQL KEYWORD

show user : 접속중인 사용자 조회 (SET sqlprompt "_USER>" 앞쪽에 계속 이름이 나온다.)

DESC : 테이블에 존재하는 컬럼들 조회

SELECT : 열(column) 조회

FROM : 테이블 조회

* : all

WHERE : 행의 조건. 문자는 ' ' 붙여서 조회

COL a FOR 9999 / FOR a8 / LINE 200 / PAGES 60 : 칼럼 길이 조절

& : 값을 입력받으라는 뜻

SET verify OFF : 입력받는 곳에 일부 과정 안보이게 하기.

BETWEEN a AND b = a 이상 b 이하. 작은 값을 앞에 씀. 부등호를 권장함

IN (a,b,c) = a or b or c 에 속하는 것. 속도가 빠름

LIKE 특정 패턴의 것. (% : 글자수 제한없음 _ 한글자 표현. 그러나 속도가 느려짐)

IS NULL / IS NOT NULL : 값을 모를 경우. = 연산 사용 불가. 0은 null 아님. null에 어떤값을 더해도 결과는 null

AND : 조건 동시 만족. and가 or보다 항상 먼저 수행됨, 괄호 사용 가능

OR : 한 가지 이상의 조건 만족

DISTINCT : 중복제거. 속도가 느려짐

CONCAT : 연결(합성) 연산자. 문자열 합치기. || 랑 같음. 칼럼끼리 붙여서 출력.

ORDER BY : 정렬. 기본값은 ASC(오름차순). DESC (내림차순). 속도가 느려짐

UNION : 중복값 제거 후 합쳐서 정렬 후 출력. 속도가 느려짐. DECODE나 CASE 추천.

UNION ALL : 중복값 제거 없이 합쳐서 정렬없이 출력

INTERSECT : 교집합 결과 출력, 정렬

MINUS : 차집합 결과 출력, 정렬. 큰 거 작은 거 순.

INITCAP() : 첫번째만 대문자, 나머지 소문자

UPPER() : 다 대문자

LOWER() : 다 소문자

LENGTH() : 문자열 길이값

LENGTHB() : 문자열 길이 바이트값 (영어는 1)

SUBSTR(0,a,b) : ~부터 ~까지. 특정 길이의 문자 추출. -를 붙이면 오->왼으로 검색

[ 0이라는 문자의 a번째부터 시작하는 b개까지 ]

SUBSTRB : 문자에서 특정 바이트만 추출

INSTR(0,a,b) : 특정 문자의 위치 조회

INSTRB : 문자에서 특정 위치 바이트 값

LPAD : 문자열에서 왼쪽부터 특정 문자를 채운다 // RPAD : 오른쪽부터

LTRIM : 왼쪽부터 제거 // RTRIM : 오른쪽부터

REPLACE : 특정 문자 대체

 

--[  RPAD 퀴즈  ]
--아래 화면과 같이 emp 테이블에서 deptno가 10번인 사원들의 이름을 총 9자리로 출력하되 
--오른쪽 빈자리에는 해당 자릿수에 해당되는 숫자가 출력되도록 하시오.

SELECT ename, RPAD(ename, 9, SUBSTR('123456789', LENGTHB(ename)+1)) "RPAD"
FROM emp
WHERE deptno=10;

 

* 정규식 함수 : 패턴과 관련

REGEXP_REPLACE (위치, '바꿀 조건', '바꿀 것) : 특정 패턴을 치환

* [[:digit:]] 0-9, [[:alpha:]] : [A-Za-z]

REGEXP_REPLACE(text, '([0-9])', '\1-*') : 숫자를 찾아서 뒤에 -* 추가

REGEXP_REPLACE('aaa bbb','( )', '{2, }', '') : 공백 2칸 이상 제거

REGEXP_INSTR : 특정패턴의 시작 위치를 반환

REGEXP_SUBSTR : 특정 패턴을 반환

REGEXP_LIKE : 특정 패턴과 매칭되는 결과 조회

REGEXP_COUNT : 특정패턴 횟수 반환

REGEXP_COUNT(text, 'c', 1, 'i' ) : i는 대소문자 구분 없이 출력

REGEXP_COUNT(text, 'aa' )

REGEXP_COUNT(text, 'a{2}' )

REGEXP_COUNT(text, '(a)(a)'' ) 같은 표현

* 정규식 기호

^ : 해당 문자로 시작하는 라인

$ : 해당 문자로 끝나는 라인

. : a로 시작해서 b로 끝나는 라인 . 1글자

* : 모든, 0포함

[] : 해당문자의 한 문자

[^] : 해당 문자에 해당하지 않는 한 문자

 

ROUND : 반올림 후 출력

TRUNC : 버림

MOD(a,b) : 나눈 후 나머지

CEIL : 올림

FLOOR : 가장 근접한 작은 정수

POWER(a,b) : 숫자 a의 숫자 b승

SYSDATE : 시스템의 현재 날짜와 시간

MONTHS_BETWEEN

ADD_MONTHS

NEXT_DAY : 찾고자 하는 기준이 돌아오는 첫 번째 (남은 날 중 가장 빠른 월요일 등)

LAST_DAY : 주어진 날짜가 속한 달의 마지막 날짜

CHAR : 2천바이트, 유일한 고정길이 문자

VARCHAR2 : 4천바이트, 가변길이문자

NUMBER (정수, 소수점이하 들어갈 자리수) : 정수 1~38자리, 소수는 -84~127까지 가능

DATE : 7바이트

LONG

CLOB

BLOB

RAW

LONG RAW

BFILE

* 형변환함수

TO_CHAR(a,b) : 명시적 형변환함수. 날짜에서 문자, 숫자에서 문자

TO_NUMBER : 형변환함수

TO_DATE : 형변환함수 * 년도에서 50 기준 낮으면 4자리 사용할 것.

 

NVL (칼럼명, 바꿀값b) : null 값을 b로 대체

NVL2 (a,b,c) : a가 null이 아니면 b, null이면 c

DECODE : IF문과 비슷. 오라클에서만 사용. 함수 중첩 가능. 동격인 값 처리

ex: DECODE (A, B, DECODE(C,D,',null))

 

CASE : CASE 조건 WHEN 결과 THEN 출력 ELSE 출력 END "컬럼명"

DECODE보다 CASE문 지향

 

 

복수행 함수

 

COUNT() : 개수를 세어줌 (COUNT(*) ; 모두)

SUM() : 합계, AVG() : 평균

MAX() : 최대, MIN() : 최소

GROUP BY : 컬럼명으로 그룹화. Alias x

HAVING : 그룹함수의 조건* where절은 그룹함수를 비교조건으로 쓸 수 없음.

분석 함수, 윈도 함수

 

ROLLUP : 소계, 빨라짐

CASE : 소계와 합계도 출력

PIVOT : 행을 열 단위로 변경

UNPIVOT : 열을 행 단위로 변경

SUM() OVER : 누계

RANK(조건값) WITHIN GROUP (ORDER BY 컬럼명 [ASC]) : 순위 출력

RANK(조건값) OVER GROUP (ORDER BY 컬럼명 [ASC]) : 전체순위 출력

DENSE_RANK : 동일 순위를 하나의 건수로 취급. 한국에서 많이 쓰임. (1,2,2,3,)

ROW_NUMBER : 동일값도 고유 순위 부여 (1,2,3,4,)

*RANK OVER, DENSE_RANK, ROW_NUMBER 차이

 

CREATE AS FROM : 테이블 복사

PARTITON BY : 그룹핑할 구문

ex. RANK() OVER (PARTITON BY deptno ORDER BY sal DESC)

alnum : 알파벳과 숫자

\ : 메타캐릭터의 의미를 제거하는 탈출 문자. ?, *, ' 등과 같이 쓰임

 

 

JOIN : JOIN은 Oracle JOIN, ANSI JOIN 문법이 있다.

 

1) Oracle JOIN

SELECT table1.col1, table2.col2
FROM table1 alias1, table2 alias2
WHERE table1.col2 = table2.col2;

 

2) ANSI JOIN  

* 선행 테이블은 조회할 적은 데이터의 테이블, 기준이 되는 테이블로 선택할 것.

SELECT a.col1, b.col1
FROM table 1 a [INNER] JOIN table2 b
ON a.col2 = b.col2;

 

카티션 곱 :

Equi Join : 등가 조인 (where에서 =)

Non-Equi Join : 비등가 조인

SELF JOIN : 테이블 안의 데이터 합쳐서 출력

INNER JOIN : 교집합 <-> OUTER JOIN : 없어도 보여줌

1) Oracle OUTER JOIN : null 쪽에 (+)

SELECT s.name "A", p.name "B"
FROM student s, professor p
WHERE s.profno(+) = p.profno;

 

2) ANSI OUTER JOIN : 데이터가 존재하는 쪽에 LEFT/RIGHT/FULL OUTER JOIN표시

SELECT s.name "A", p.name "B"
FROM student s RIGHT OUTER JOIN professor p
ON s.profno = p.profno;

* 합칠 경우 오라클 JOIN은 UNION, ANSI JOIN는 FULL OUTER JOIN 사용.

 

 

DDL, DML

데이터베이스 내부에 데이터를 관리하기 위해 다양한 저장 객체Object 를 생성하고 이 중 데이터를 저장하기 위한 별도의 저장 공간Segment라 한다. 이런 오브젝트를 생성, 변경 관리하는 명령어가 DDL이다.

 

DDL (Data Definition Language) : CREATE(생성), ALTER(변경), TRUNCATE(잘라내기), DROP(삭제)

DML (Data Manipulation Language) : INSERT, UPDATE, DELETE, MERGE(병합)

DCL (Data Control Language) : GRANT(권한주기), REVOKE(권한뺏기)

TCL (Transaction Control Language) : COMMIT(확정), ROLLBACK(취소)

CREATE : 오브젝트나 스키마 생성. CREAT TABLE 테이블이름(칼럼 이름 형식(자리수) );

지정하지 않으면 null이나 DEFAULT 뒤에 붙은 값은 자동으로 넣을 수 있음

* 테이블 이름은 문자로 시작하며 30바이트까지 가능. 같은 계정 내 중복 불가.

 

CREATE TABLE tt02
(no     NUMBER(3,1)   DEFAULT 0,
name    VARCHAR2(10)  DEFAULT 'NO Name',
hiredate  DATE        DEFAULT SYSDATE);

CREATE GLOBAL TEMPORARY TABLE ( ) ON COMMIT delete ROWS; 임시테이블 생성하기

CTAS : 테이블 복사하기 : CREATE TABLE 테이블명 AS~ (where에 false식을 넣으면 테이블의 구조만 가져올 수 있다.)

ALTER : 컬럼 추가. 삭제, 이름 변경, 테이블이름변경

DELETE : 컬럼의 데이터 삭제

TRUNCATE : 차지하는 공간 삭제

DROP : 스키마, 테이블 모두 삭제 // 사용 시 주의

ALTER TABLE table1 read only; : 읽기전용

데이터 딕셔너리 : 데이터베이스를 운영하기 위한 정보를 모아둔 테이블. 중요해서 data dictionary view로만 조회 가능

base table은 데이터베이스 생성 시점 자동 생성되나 dictionary view는 catalog.sql이 수행되야 만들어짐

INSERT INTO table (column... ) VALUES (value...); (where에 false식을 넣으면 테이블의 구조만 가져올 수 있다.)

INSERT ALL WHEN ( ) THEN ( ) INTO ( ) VALUES ( ) WHEN ( ) THEN ( ) INTO ( ) VALUES ( )

UPDATE table SET column=value WHERE 조건;

 

 

제약조건

NOT NULL : NULL로 변경하는 것은 ALTER ~ MODIFY를 이용해서 변경

UNIQUE : 중복값이 없어야 함.

PRIMARY KEY : NOT NULL + UNIQUE의 특징을 가지며 테이블들끼리의 유일성을 보장하는 컬럼에 설정. 테이블당 1개만 설정 가능

FOREIGN KEY : 다른 테이블의 컬럼을 참조

CHECK : 설정된 값만 입력 허용

CASCADE : 부모 테이블과 자식 테이블 간의 참조 설정이 되어 있을 때 부모 테이블의 제약 조건을 비활성화하면 이를 참조하고 있는 자식 테이블의 제약 조건까지 같이 비활성화시켜 주는 옵션

728x90
728x90

'SQL > Oracle' 카테고리의 다른 글

맥OS Mojave에서 도커로 오라클 설치하기  (1) 2019.10.05
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v