2019년 7월 7일 일요일

인터넷 속 HTML코드 보기

일단 Chrome 브라우저를 다운로드해줍니다.
(다른 것도 될 수는 있는데 일단 내가 Chrome을 쓰기때문에)
크롬 다운로드
눈에 보이는 문구 중 신기한 효과를 발견했다면 마우스로 우클릭 > 검사
를 누른다면 화면 오른쪽에 HTML 코드들이 보이는데
코드 위에 마우스를 가져다 대면 그 코드가 화면 중 어디를 나타내고
무엇을 의미하는지 알 수 있습니다.
이런 식으로 신기했던 효과들이 있다면 검사를 통해 HTML 코드를 구경해보고 나중에
연습하여 자신만의 방식으로 써먹으면 좋습니다.

HTML이용 구글 블로그 접기/펼치기

구글 블로그 관리 화면 > 테마 > HTML 편집

아래의 스크립트를 <head>태그 안에 붙여넣고 테마 저장
<script language="JavaScript" type="text/javascript">
function layer_toggle(obj) {
  if (obj.style.display=='none') obj.style.display = 'block';
  else if (obj.style.display=='block') obj.style.display = 'none';
}
</script>
그 다음 글 작성을 시작하고 HTML을 통한 글쓰기로 넘어가서
<div style="display: block" id="mms-1">
   <a onclick="layer_toggle(document.getElementById('mms-1'));layer
_toggle(document.getElementById('mms-2')); return false;" href="#">
      <p>제목 펼치기</p>
   </a>
</div>
<div style="display: none" id="mms-2">
   <a onclick="layer_toggle(document.getElementById('mms-1')); layer
_toggle(document.getElementById('mms-2')); return false;" href="#">
      <p>제목 닫기</p>
   </a>
   <p> 내용 </p>
</div> 
이런 식으로 붙여넣고 mms부분을 자신이 원하는 대로 설정하여 사용하면 됨

HTML 글자 색 지정

글자색 직접 지정
<span style="color:원하는 색깔코드"> 내용 </span>

본문의 태그인 body 속 글자 색 변경
body { color:원하는 색깔코드; }

배경색 변경
<body style="background-color:원하는 색깔코드">

약간 큰 문자 출력
<h3> 내용 </h3>

2019년 7월 1일 월요일

[컴퓨터공학]프로그래밍#15(구조체)

*구조체
여러 종류의 변수를 모아서 새로운 데이터 타입 정의
하나의 주제로 연관된 여러 개의 데이터를 모아서 사용할 때 유용
학생정보, 도서정보, 생산제품정보 등 여러가지 데이터가 하나의 정보가 되는 경우 사용함

*구조체 선언
생성하고자 하는 구조체의 타입을 선언함
선언하고자 하는 구조체의 이름과 구조체 내에 포함하고 싶은 변수를 선언
구조체 선언은 컴파일러에게 구조체 정보를 알려 주는 것
실제 메모리에 생성되지 않음 (실제 생성은 구조체 변수 정의에서 생성됨)

*구조체 변수 정의 및 사용
구조체 변수 정의
실제 코드상에서 구조체를 사용하기 위해서는 구조체 변수를 정의해야 함
struct student s1 = {“Jin”, 0x12345678, “aa”};

구조체 변수 사용
s1.name[0] = ‘H’;
s1.studentId = 20196502;
printf(“%s”, s1.email);

*구조체의 활용
1.여러 개의 관련된 데이터를 하나로 묶음
관련된 데이터를 하나로 묶으면 관리 및 사용하기 편리함
10명의 학생 정보를 배열을 사용하는 경우
학생 1명의 정보가 하나의 구조체로 묶여 있어 이해가 편리함
배열을 사용하는 경우 배열의 인덱스가 몇 번째 학생인지를 결정하며, 정보 입 력 및 사용시 항상 주의해야함

2.여러가지 데이터 정보를 함수 파라미터로 전달할 때 구조체 활용
10개의 int 형 변수를 전달하려면 10개의 파라미터를 기입해야 함
10개의 변수를 1개 구조체로 생성하여 전달하면 파라미터 개수를 줄일 수 있음
일반적으로 구조체로 묶이는 변수는 서로 연관관계가 있는 변수임
Call by reference (주소 전달 방식), call by value (값 전달 방식) 을 쉽게 선택하여 다수의 변수를 전달할 수 있음
구조체 변수를 복사 방식으로 전달 가능
➢ void func(struct student a);
구조체 변수를 주소 전달 방식으로 전달 가능
➢ void func(struct student *a);
구조체 내에 배열이 있는 경우도 복사 방식 전달 가능함
➢ 구조체가 아닌 경우 항상 주소만 복사함

3.Linked list 등 고급 데이터 표현 방식 사용시 활용
많은 정보를 효율적으로 저장하고 사용하기 위해서는 linked list 등과 같은 고급 데이터 표현 방식을 사용함
일반적으로 배열은 프로그램 실행 도중 필요에 따라 크기를 증가시키거나 축소하기 어려움
이와 같은 문제를 해결하기 위해 구조체를 이용하여, 새로운 데이터 추가가 필요한 경우 메모리에서 구조체를 만큼 메모리를 할당 받아 기존의 데이터 에 연결함 (Linked list)
사용이 종료된 데이터는 list 에서 연결을 끊고, 해당 구조체용 메모리를 운 영체제에 반납함

*함수로 구조체 전달 예제

[컴퓨터공학]프로그래밍#14(함수)

*함수 (Function)
하나의 특정 작업을 수행하도록 독립적으로 설계된 프로그램 코드의 단위
C언어 (절차지향 언어)는 함수를 건축물 벽돌처럼 사용
만들어진 함수를 쉽게 재사용(re-use) 가능
입력 / 출력만 알면 내부는 블랙박스처럼 모르고 사용 가능

*함수의 필요성
반복 작업 용이
함수를 이용하여 작성하면 여러 번 반복 사용이 용이

재사용성(reusability) 용이
printf(), scanf() 함수를 쉽게 여러 번 사용이 가능함
C언어에서 다양한 함수를 제공

가독성(readability) 증대
함수는 입력과 출력으로 동작하는 일종의 블랙박스와 같이 동작
각 함수의 세부 내용을 이해할 필요 없음
함수를 이용하면 소프트웨어의 흐름을 이해하기 용이함

*함수 선언
함수도 변수처럼 데이터 타입 정보를 포함하고 있음
함수를 사용하기 전에 컴파일러에게 어떤 데이터 타입을 사용하는지 알림
stdio.h 파일 내에 printf(), scanf()의 함수 선언이 포함되어 있음
printf(), scanf() 사용전에 #include <stdio.h> 추가해야 함

*함수 정의
함수가 실행되는 경우 동작하는 코드 작성

*함수 호출
정의한 함수를 실제 호출하여 사용함

*함수의 인자 전달
함수 호출 시 전달인자가 호출된 함수로 복사됨
호출된 함수내에 새로운 변수(저장 공간)이 만들어지고 값만 복사됨

*함수 호출 시 변수 저장
스택 (Stack) 메모리
함수 별 저장 공간을 제공하기 위해 사용하는 데이터 구조
아래에서 위 방향으로 커지며, 후입선출 (last in – first out) 방식으로 동작
함수가 종료되면 해당 메모리 공간은 제거됨
새로운 함수가 호출되면 스택에 전용 공간을 할당함

*함수 호출 시 값 전달 방법
값에 의한 호출 (call-by-value)
인자의 값이 호출한 함수의 Local 변수로 복사하여 사용
인자의 데이터 사이즈가 큰 경우 복사 오버헤드 큼 (메모리, 복사 시간)
복사본을 사용하기 때문에 동일한 변수를 여러 함수에서 접근해 발생하는 문제 방지 가능

참조에 의한 호출(call-by-reference)
인자의 주소 값을 호출한 함수의 Local 변수로 복사하여 사용
주소 정보를 이용하여 원본에 직접 접근 가능
구조체, 배열 등 큰 데이터 타입을 매개변수로 활용하는 경우 사용
기본 데이터 타입의 값을 호출한 함수 내에서 변경할 때 사용

포인터 reference

참조 reference

*재귀함수
순환(recursion) 함수
함수 수행 도중 자기 자신 다시 호출하여 문제를 해결하는 기법
재귀함수 (Recursion Function) 이라고도 부름
순환 함수가 종료하는 조건이 반드시 필요함
종료 조건이 없거나 잘못되는 경우 메모리 오버플로우 발생

재귀호출출(recursive call)
함수 안에서 함수 자기자신을 호출하는 방식

일반적으로 이해가 어렵고, 오류 발생 가능성이 높아 사용 X

2019년 6월 30일 일요일

[컴퓨터공학]프로그래밍#13(포인터와 참조자)

*포인터
주소를 저장하는 변수
*p : 해당 주소에 있는 값
p : 포인터에 저장되어 있는 주소 값

다음과 같은 데이터 저장 상황에서의 변수 값

i = 10
&i = 0x100
p : 0x100
&p : 0x200
*p : 10
p++ : 104
sizeof(p) : 4
sizeof(*p) : 1

*포인터 관련 연산자
간접 참조 연산자 (*)
포인터에 저장된 주소에 저장된 값을 참조
주소 연산자 (&)
해당 변수의 주소 (Address)
포인터 증감 연산자 (++, --, +, -)
선언된 타입의 크기 만큼 주소가 증가함


*const 포인터
const 객체에 대한 포인터


객체를 가리키는 const 포인터


*void 포인터
데이터형을 명시하기 어려운 경우 사용함
모든 데이터 타입을 다 담을 수 있음
C++ 에서는 묵시적인 포인터 변환 허용되지 않음

*참조자
변수에 별명을 붙이는 것

int &ref = var;
참조자 ref는 변수 var의 별명(alias)임

참조자는 반드시 선언과 동시에 초기화
int &ref; // 오류!
포인터는 변경될 수 있지만 참조자는 변경이 불가능하다.
int &ref = var1; ref = var2; // 오류! 
참조자를 상수로 초기화하면 컴파일 오류
int &ref = 10; // 오류!

*포인터 vs 참조자
가능하면 참조자를 사용하고, 반드시 필요한 경우만 포인터 사용
포인터는 강력한 도구이나, 다양한 문제를 야기할 수 있음
만약 참조하는 대상이 변경되는 경우에는 포인터를 사용
참조자는 대상을 변경할 수 없음
NULL이 될 가능성이 있는 경우에도 포인터를 사용

[컴퓨터공학]프로그래밍#12(문자열 배열)

*문자열 배열
char 형 배열에 문자열을 저장한 것
문자는 ASCII 코드 값이 저장되고, 문자열의 끝은 NULL (0)
5글자를 저장하기 위해 6개 원소를 갖는 char 형 배열 필요함

*문자열 함수
C언어에서 제공하는 문자열 관련 함수
입/출력 함수는 #include <stdio.h>
기타 문자열 함수는 #include <string.h>

*문자열 입력 받을 때 팁
scanf("%s",str); 사용 시 공백을 받지 못하지만
scanf("%[^\n]",str); 사용 시 공백도 받아들임