클래스패스 (classpath) 옵션 -classpath는 자바를 실행할 때 사용할 클래스들의 위치를 가상머신에게 알려주는 역할을 한다. -classpath의 값으로 사용된 ".;lib"를 살펴보자 ' . ' - 현재 디렉토리에서 클래스를 찾는다 ' ; ' - 경로와 경로를 구분해주는 구분자 'lib' - 현재 디렉터리에 없다면 현재 디렉터리의 하위 디렉터리 중 lib에서 클래스를 찾는다는 의미다 package - 우리가 일반적으로 사용하는 자바에서의 폴더 디렉토리와 같은 개념으로 생각하면 된다 서로 다른 패키지에 있는 클래스를 가져오려면 import를 통해서 다른 패키지의 클래스를 로드할 수 있다. src (source code) - 소스코드를 저장하는 디렉토리 bin (binary 2진수) - 컴파일..
class멤버와 instance멤버 static - class non static - instance (이 관계를 그림으로 이해하는 편이 좋다) f1의 첫번째 줄은 실제로 값이 존재하지 않고 클래스 첫번째 줄을 가르킨다. 하지만 f1의 첫째줄에 값이 변경되면 가르키는 클래스의 값이 변경되고 그 해당하는 인스턴스의 값이 바뀌는 형태이다. f2의 두번째 줄은 해당 클래스의 값이 있다면 복제가 되지만 서로 링크되어있지 않은 독립적인 존재여서 f1의 값을 변경해도 클래스는 바뀌지 않는다. 메소드 또한 마찬가지이다. 해석하자면 클래스의 변수를 바꾸면 모든 인스턴스의 변수의 값이 바뀐다. 반대로 인스턴스에서 클래스의 값을 바꾸면 클래스의 값이 바뀌고 그에 해당하는 모든 인스턴스의 값이 바뀐다. static을 맴버(..
객체 지향 프로그래밍 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 객체지향 프로그래밍을 학습하는데 장애 중의 하나는 번역이다. Object를 번역한 객체는 현실에서는 거의 쓰지 않는 말이고, 뭐랄까 철학적인 느낌을 자아낸다. 그래서 객체지향 프로그래밍을 처음 접하는 입문자들은 객체지향 프로그래밍을 철학적인 탐구의 대상으로 파악하는 경향을 보이는데, 필자의 생각에 이것은 공부를 어렵게 할 뿐 도움이 되지 않는다. 쉽게 생각하자. 객체는 변수와 메소드를 그룹핑한 것이다. 객체지향 프로그래밍 교육에서는 문법과 설계 크게 두 가지로 구분된다. 하나는 문법, 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 익히는..
메소드 method (다른 언어에서는 함수와 같은 존재 ex) C언어 = define) 사용자 정의함수. 즉, 코드의 유지보수와 간략함,최적화 등을 위해서 사용자가 만든 임의의 함수(메소드)를 정의하고 각각의 함수를 호출하면서 사용한다. 메소드의 장점 - 반복적이게 사용 할 수있다. (재활용성이 좋다), 입력과 출력으로 인해 고정적인 것들은 가변적으로 변환 할 수 있다. 여기서 limit이라는 변수는 메소드 numbering의 정의 부에 있는 로직들에게 5라는 값을 전달하고 있다. 호출에서 입력한 값을 로직으로 매개 한다는 의미에서 이러한 변수를 매개변수 라고 부른다. 영어로는 parameter다. 그리고 메소드를 호출할 때 전달된 값인 5를 '인자' 영어로는 argument라고 한다. 관습적으로는 매개..
C언어를 어느정도 훑고나서 내가 배우려고 하는 것중에 하나인 (우리나라에서 주로 사용되는) 자바도 익히면 도움이 될것같아서 국비학원을 다니기 전에 예습으로 들어볼까해서 시작하는중이다. 다른언어들과 마찬가지로 데이터 타입은 int - 정수형, double - 실수형, char - 문자, string - 문자열 변수 선언 이란 - 코드 수정시에 고정된 값보다는 유연하게 탄력적으로 변환을 할수있다, 가독성이 좋아지고 유지보수의 용이성이 좋다 float 타입 사용시에는 상수뒤에 F , long 타입 뒤에는 L이 붙어야 해당 데이터 타입을 인식함 자동형변환 - 원칙은 표현범위가 좁은 데이터타입에서 넓은 데이터타입으로의 변환만 허용된다. 왠만한 기초적인것들은 C언어에서 이미 배웠기 때문에 따로 서술은 안하고 자바에..
배열과 포인터 표기법 즉, data[n] 과 *(data+n)은 같다 서로 다른 데이터라 가정했을때 결국 표기법만 다를뿐 의미는 같다 (단, 혼용해서 사용하지않도록 유의) 베열 변수의 이름은 배열의 시작주소 (이해 과정) & 앰퍼샌드 (주소를 얻겠다는 의미) , * 포인터 (data가 가르키는 메모리) &(*data) = data 같은의미로 생략가능 메모리 할당 프로그램 - 프로그래머가 만든 프로그램 실행파일 프로세스 - CPU가 실행파일에 있는 명령들을 실행할수있도록 운영체제가 실행파일의 명령들을 읽어서 메모리의 재구성한 것 ' 실행프로그램 ' 이라고도 함 , 세그먼트 집합으로 구성 세그먼트 - 여러가지 정보나 사용자가 입력한 데이터를 기억하는 메모리 공간 (코드,데이터,스택) 코드 세그먼트 - 실행파..
전날 배열에 이어서 2차원 배열 수업 내용 2차원 배열 선언 char data [5][4] 를 선언할때 연산자 우선순위로 왼쪽에서 오른쪽으로 연산을 수행 (중학교때 배운 행열과 비슷하게 생각하면 된다. 행 | 열 ㅡ) 화면상의 좌표가 (x,y) 이면 배열은 data [y][x]로 사용 2차원 데이터를 -> 1차원 데이터로 변환 - {(행 번호 - 1) * 열 개수} + 열 번호 - 1 char temp [N,M]; // L,M,N 값은 숫자 상수로 가정 char test [L]; // M*N = L 의 가정 1. test[ a ] 항목과 temp [a / N] [a % M] 의 항목의 위치는 같다 2. temp [b][c] 항목과 test[b * N + c ] 의 항목의 위치는 같다 결론 - 2차원 배열..
사용자정의 함수 사용자정의 함수에는 3가지 유형이 존재 1. 단순한 문장 출력 구조 (매개 변수가 void 일때) 2. 매개변수를 통한 단순 연산&출력(매개 변수가 int 등) 3. 매개변수+반환값(메인함수에서 매개변수를 받아 정의된 함수에서 리턴값(반환값)을 출력) 처음 들을때는 이해가 안됐는데 몇번 들어보니 매개변수에 따라서 그냥 중고등학교때 함수 생각하면 이해하기 쉬운것 같다 다음으로 그렇게 어렵다고 소문난 배열차례이다 c언어에서는 배열과 포인터 이 부분이 제일 난이도가 높다고 친구한테 들었다. 한번 훑어보는식으로 강의 정주행을 한번했는데 배열이랑 포인터이후 부터는 이해가 안되서 거의 손을 놓았었다 ㅠㅠ 배열 대괄호안에 값을 넣을때는 변수도 사용가능 즉, 반복문과 제어문을 사용할 수 있다는 얘기 ..
어제에 이어서 계속해서 C언어 배우는중 scanf 에서 변수를 변환받는 단위 왜 vs코드에서는 계속 %f 가 오류가 나는지 모르겠다 ,, 프로그램 자체에서 %d를 사용하라는거 같은데 정수로 바꾸면 문제가 해결되긴 한다. 정수 변수보다 플롯이 더 큰값을 포함하는거 아니었나 ?? 어떤문제인지 알려주실 선생님 없나요 ,, 강의에서 배운대로 do while문으로 단순 계산기 프로그램을 만들어봤다. 최대한 도움없이 해보려고는 했으나 마지막 while 플롯부분에서 자꾸 오류가나서 결국 해답을 참고해서 완성했다 .. 겉보기엔 쉬어보이는데 막상 해보면 이것조차 쉽지도 않은걸 느낀다.. ㅎㅎ ㅠㅠ 쉽지 않은 여정이 시작된 기분
2일차에 이어서 C언어 공부중이다 VS코드에서 C언어 컴파일을 하려면 어떤설정이 필요한데 그걸 하느라 애좀 먹었다 ..; 다시 돌아와서 조건문,반복문 배우고있는데 if,while 등 처음 이해하기는 살짝 어려웠다 ㅠㅠ for문 구조 - (정의 (초기값), 범위(조건식), 증감연산자) for문으로 도형 채우는 프로그램을 만들어봤다 포문으로 만들어본 역삼각형이다 최적화된 코드는 아니겠지만 그래도 해봤다는거에 뿌듯함을 살짝 느낀다 다음으로 기본입출력에 대해서 배웠다 scanf - %d,%c,%f,%lf등의 다양한문법으로 사용 / 변수 이름앞에 &(앰퍼샌드-불러오는 주소를의미) 정수자료형 int, 실수자료형 float, 더 큰수를 포함한 double, 문자자료형 char, 문자열자료형string 어셈블리어 - ..