22.09.28.Wed - 컴퓨터 과학의 필요성
오늘의 요약 = 배열의 종류 호출 심화,변수의 정체,메모리의 구조,구역할당,변수와의 관계
1.
복습
for문
/*
배열 : 가장 기본적인 자료 구성법
같은 종류(?)의 자료가 여러개 필요할 경우 사용 js는 섞어서 사용 가능. (비권장)
모든 자료는 낱개의 자료로 변수에 담아야 한다.
js 의 배열은 타 언어의 배열과 주조적으로 많은차이가 있다.
js 의 배열은 java의 list 구조와 유사하다.
js 는 동적으로 메모리 할당이 이루어지기 때문이다.
배열은 자료의 개수를 알수있는 속성이 있다. / 배열명.length (read / write 속성을 갖는다.)
*/
var arrData = [1,2,3];
console.log('자료의 개수는 => ', arrData.length);
// read 로 쓰임
arrData.length = 15 ;
console.log(arrData.length);
// 타언어는 길이 속성에 값을 넣을 수 없음 js는 가능
// read(읽기)만 가능하지 write(쓰기)는 할 수 없다.
for(let i = 0 ; i < arrData.length ; i=i+1){
console.log(i+1 + '번째 배열의 값 = ' + arrData[i]);
};
// 배열은 같은 종류만 들어가야 하지만 유연하게 경우에 따라서 js 한정 사용하는 것을 결정.
var arrData2 = [3221,'doil',3222,'diak',3223,'dmao']
//권장 양쌤
//규칙을 가진 다른종류의 배열은 경우에 따라 효율적으로 사용 가능
var arrData3 = [1,2,3,4,]// 절대 사용하지 말자.
/*
구동환경에 따라 배열의 자료 개수를 4개 혹은 5개로 판단 할 수있다.
구동환경을 바꾸기 전까지는 못찾음
뒤질 수 있다.
*/
2. 방법론 과 도구의 파워 그리고 그 도구를 만든사람에 대해 존경심이 든다. (높을 존, 공경 경)
배열 (배열도 객체이다.) *****
- 같은 종류의 자료들을 묶기(그룹화)위한 주된 용도.
- literal 사용 (내부적으로는 생성자를 이용해서 배열이 생성된다.)
- let arrBox = [1,2,3]; // 요소가 3개로 이루어진 배열 생성.
- let arrBox2= []; // 빈배열 생성
- let arrBox3= [10]; // 요소 1개 배열 생성
- 생성자를 이용
- let arrBox1 = new Array(1,2,3);
- let arrBox2 = new Array();
- let arrBox3 = new Array(10); //요소 1개 배열 생성 x. 10개의 요소를 가지는 배열 생성
- 생성자란 객체자료를 생성하는 것으로
- 클래스 이름(반드시 첫글자를 대문자)과 동일한 method를 호출해서 자료 생성.
- 객체 생성 연산자(new)를 이용한다. (생략 가능하지만, 비권장)
- 기본 배열과 요소 1과 생성자 Array 요소1의 차이 예제
let arrBox = [10]; console.log(arrBox.length); // 출력 = 1 let arrBox2= new Array(10); console.log(arrBox2.length); // 출력 = 10
- 배열 속성 예제
// 객체 // js array sort attribute let arrBox5 = [4,2,1,2,4,5]; console.log(arrBox5.sort(), '-------------'); // 출력 : [1, 2, 2, 4, 4, 5] '-------------'
- 입력 값을 배열에 넣는 법
- 배열 속성 예제
객체 *****
- 관련성 있는 자료와 처리 동작을 속성과 메서드로 이루어진 자료 구조
방법론
- 대강 어떤 도구(방법)이 있었는지만 알면된다. 그래야 찾아볼 수 있다.
- 뭐가 필요한지, 모르는지를 모르면 검색을 할 수 없다.
- 최소한의 검색을 할것이 무엇인지를 머리에 담아두어야 한다.
- 무식하게 외울 필요는 없다.
3. 필요한 것을 명확하게 알고 검색해라.찾을때까지
배열에 data 입력.
- .push
- arrayname.push
js array sort
- arrayname.push
- 숫자의 크기대로 분류
- 함수를 넣어 매개변수에 값에 따라
- array.sort(function(a,z){return a-z});
- a 부터 z니까 오름차순
- array.sort(function(z,a){return z-a});
- z 부터 a니까 내림차순
- z 부터 a니까 내림차순
4. 자기 계발 과 직접만들자는 개발자 습관을 만들자.
책
- 목차 잘 보자
자기 계발 과 보상
개발 과 계발
- 개발
- 새로운 것 만드는 행위
- 계발
- 향상하는 행위
- 개발자의 중요 도구는 책이다.
배열 추가/ 반환
- .push 에 데이터를 넣고 나면 무엇을 반환하는가를 알아야한다.
- array.push[data]; / console.log(array); 출력값 : 1
- 반환하는 값은 배열의 길이를 반환한다. 즉 배열안의 데이터 개수를 표기한다.
- 만약 속성을 못찾거나 없다면 내가 만든다는 마음으로 접근하다.
- 그것이 개발자 니까..(펀쿨섹)
- 필요한 것을 만드는 능력을 기르는 것
- 입력만 하지 말고 출력한 값을 확인하는 습관을 가지면 좋다.
- 반환 값을 변수에 넣고 출력하는 커맨드.
배열 데이터 삭제 메소드
- 반환 값을 변수에 넣고 출력하는 커맨드.
- pop();
- 배열자료의 맨 마지막을 지운다
- 반환하는 값은 ? => 제거한 데이터를 반환한다.
- 만들려면?
- .length -1 (심화)
- .length -1 (심화)
5.
배열의 methods
- Data input
- 맨 앞에 unshift
- 비 권장
- 자료의 구성을 잘 만들면 사용할 필요가 없다.
- 맨 앞의 자료 삽입,삭제는 성능에 부담을 준다.
- (굴러온 돌이 앞으로 오면 박힌돌들이 한칸씩 움직이니까)
- 사용하기 이전에 배열 구조부터 잘 만들자.
- 맨 뒤에 push
- 맨 앞에 unshift
- Data delete
- 맨 앞에 shift
- 맨 뒤에 pop
기본 과 참조 타입 / 참조 타입의 역할 (low level)
- 배열은 참조 타입이다.
- 모든 객체는 참조 타입이다.
- 실제 data 가 저장되는 곳은 따로 있고,
- 참조 타입은 data가 어디에 있고, 어디서 시작하는지를 알려주는 표지판 같은 역이다.
- 숫자,문자열, 논리 자료는 기본타입.
- 배열 간의 동등 비교의 값은 false다. 데이터가 같을지라도.
const
- 열쇠 상자이다. data 수정을 못한다.
- 상자 자체는 못 변경하나, 상자 안에 있는 객체의 data는 수정 가능하다. / 겉바 속촉
6.
C.S
- 왜 index는 0부터 시작하나?
- 배열의 index는 주소를 계산하는 정보 // java ,c++, c 에서 나옴
- 주소 == 메모리(ram)의 위치.
- bit - Byte - word
- 1 byte == 주소의 단위다.(메모리)
- word 명령이다.
- 16 , 32 , 64 bit 의 차이
- m/w 2byte ->16bit
- f/w 4byte ->32bit
- d/w 8byte ->64bit
- Booting - IPL
- 처음에 시스템 관리 프로그램 불러온다
- Initial Program Loding
- Loding 보조기억을 메모리로 끌어올리는것
- 메모리를 cpu로 올리는 것
메모리의 구조, 구역할당과 주소,변수와의 관계
- 프로그램이 실행하면 OS는 프로그램을 메모리에 할당한다.
- 메모리라는 땅에 구역을 나눠준다라고 이해. 이하 js땅 부름.
- js땅의 구역에는 StringArea라는 곳이 있다.
- 객체의 data들은 변수 k 선언 동시에 js땅의 StringArea 라고 불리는 곳에 저장된다.
- 변수 k 는 참조 타입이며, 표지판의 역할을 해준다. StringArea에 담겨있는 data를.
- 변수는 할당되어 있는 주소값을 사람이 외울 수 없으니 기호화 시킨것이다.
- 변수 에 매칭이 되는 실제 주소가 있다.(맵핑.) 마치 도메인 주소가 ip주소를 맵핑한 것 처럼.
- 변수(이름) == 할당 주소를 기호화 한것뿐 안에는 주소가 들어있다.
- 문자열은 문자 낱개끼리 모여있는 참조형이다.(엄격하게 말하자면)
- 기존 변수 데이터에 데이터를 추가로 넣으면 덮어쓰기가 아니라 다른이름으로 새로 저장한다.
- 기존 데이터 묶음은 쓰레기가 되어 누적된다.(최근은 자동 지워준다.)(c언어는 안지운다.)
- 배열의 인덱스란 실제 메모리 상에 존재하는 자료의 시작위치를 계산하는 정보이다.
- 배열에 있는 주소 정보 + (index * data size(정수 = 4))
- 데이터 타입이란
- 메모리상에 자료를 저장할 때 어떻게 2진수(binary bit열)로 저장할 건인지(어디서부터 어디까지).
- 저장된 데이터라면 저장된 2진수의 비트 자료를 어떻게 해석해야 하는지를 알려주는 정보이다.
- 변수는 메모리 상에 자료가 저장이 될 때 시작되는 특정 위치(주소)를 개발자가 쉽게 구분할 수 있도록
기호화 한 것. - 배열의 인덱스란 실제 메모리 상에 존재하는 자료의 시작위치를 계산하는 정보이다.
7.
js array dimension
배열의 길이 구함.
배열 안에 배열이 있을 경우. 배열의 차원.
- 배열의 개수 와 자료의 개수를 분별
- [[1,2],[3,4],[5,6],[7,8,9]]
- 배열의 개수: 4
- 자료 의 개수:9개
- 배열의 배열 자료 호출
- array[0][1] // 첫번째 배열의 2번째 자료 호출.
배열에 들어있는 함수 실행 ()으로 함수 실행.
- array[0][1] // 첫번째 배열의 2번째 자료 호출.
arrData4[0]();
배열안 객체 실행 .으로 객체 호출.
array[0].name; array[2].func1();
구조 안의 위계를 잘 봐야 경로를 파악할 수 있다.
변수가 메모리상에 만들어질 때 자료의 종류와 크기가 결정된다.
data가 들어갈때 만들어진다 해서 동적언어 이다.
선언될때 결정되는 것도 있다.
8.정리 복습
'공부 > 오늘 배운것' 카테고리의 다른 글
22.09.30.Fri - 굿데이 (1) | 2022.09.30 |
---|---|
22.09.29.Thu - 배열의 메소드 유형 (0) | 2022.09.29 |
22.09.27.Tue - 사용자를 위한 프로그래밍 (0) | 2022.09.27 |
22.09.26.Mon - 그래서 프로그래머는 시인이다. (0) | 2022.09.26 |
22.09.23.Fri - 본질에 집중하고 불태워라 (1) | 2022.09.23 |