star7sss의 등록된 링크

키자드에 등록된 총 714개의 포스트를 확인하실 수 있습니다.

Naver Blog

C++ #1. Cout

C++언어 C++ #1. Cout jangThang 2016. 7. 11. 23:11 이웃추가 본문 기타 기능 이번 c++강의의 중요 포인트도 C강의와 같습니다. 자세히 꼼꼼히 공부하기 보다는 훑어보기 식입니다. 지금 궁금하신 걸 덧글로 물어보셔도 좋지만, 그런 것들은 조금 있으면 배우고 이해하게 되실테니 제가 설명하는 각 장에서 설명하는 중요개념만 콕콕 찝어서 숙지하시면서 강의를 들어주셨으면 합니다. 오늘 배울 것은 cout(표준 출력 스트림 객체) 입니다. C언어와 비교하자면 printf와 같은 기능입니다. std::cout << "할 말"; 저기서 std::는 std라는 객체 속에 있다는 뜻입니다. 나중에 다 배우시게 되실테니 지금은 그냥 그렇구나 하고 넘어가셔도 됩니다. 그리고 <<는 ◁◁ 와 같은 화살표 기능이라고 생각하시면 되요. 할 말의 내용을 ◁◁ 이쪽으로 보낸다. 라고 생각하시면 됩니다. using namespace std; 그리고 이건 앞에 있는 std::를 날려보

Naver Blog

C++ #2. 변수와 자료형

C++언어 C++ #2. 변수와 자료형 jangThang 2016. 7. 12. 18:39 이웃추가 본문 기타 기능 변수 : 프로그램 내부에서 사용하는 데이터를 저장해주는 메모리공간 자료형 : 메모리의 저장 단위(단, 데이터가 저장되는 공간은 메모리) 앞에서 말한 것과 같이 변수는 '수'가 아니라 메모리 공간입니다. 그러므로 어떤 데이터든 변수안에 넣을 수 있는 거죠. (그 변수의 메모리 공간이 충분히 넓다면요..) 그런데 한 가지 문제가 있습니다. 바로 '자료형'이죠. 자료형과 데이터의 종류는 일치해야합니다. 에를 들면, [ 정수형 자료형 + 변수 ] 에는 정수형 데어터 밖에 저장을 못하는 것이지요. ===================================================================== 자료형 크기 데이터 종류 변수의 범위 char 1byte 한 문자 데이터 -128~127 int 4byte 정수형 데이터 -2147483648~214748364

Naver Blog

C++ #3. Cin

C++언어 C++ #3. Cin jangThang 2016. 8. 12. 2:07 이웃추가 본문 기타 기능 cin >> 변수 ; C언어로 치면 scanf() 역할을 하는 녀석입니다. cin은 표준 입력 스트림이라고 불리며, 사용자가 입력한 값을 변수에 저장하는 역할을 합니다. 위와 같이 cin과 >>(입력 스트림 연산자)을 써주시면 됩니다. (cout 때 쓴 <<(출력 스트림 연산자)와는 방향이 다르니 주의해주세요. ) (단, 저것은 using namespace std; 를 사용했다고 가정하에 쓰는 겁니다. 만약 그냥 쓰실려면 std::cin >> 변수; 와 같이 std를 붙여주셔야합니다.) 백문이 불여일견 1. 기본 코드 쓰다보시면 이제 익숙해지실거예요. 2. cin int형 변수 a, b를 선언하고 cout를 이용해서 텍스트를 화면에 출력했습니다. ( \n은 한 줄 띄우는 역할입니다. ) cin 를 사용해서 변수 a와 b의 값을 입력받도록 했습니다. 물론, cin >> a; c

Naver Blog

C++ #4 연산자

C++언어 C++ #4 연산자 jangThang 2016. 8. 13. 22:20 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220646951134 8. 연산자 연산자.. 사실 이전 강의에서 이미 몇 개를 썼었습니다. num1 = num1 + 1 에서 +가 바로 연산자이고 num1 *... blog.naver.com 기본 산술 연산자는 C와 C++이 다르지 않습니다. (혹시 설명이 모자르시면 위 링크를 참고하세요.) 산술연산자 비교연산자 연산자는 여러분이 프로그래밍을 하시면서 외우고 싶지 않으셔도 저절로 익숙해지시고 외우시게 되실 거예요. 그래도 곱하기는 *, 나누기는 /, 나머지구하기는 % 이라는 건 명심하세요. 그리고 비교연산자에서 부등호와 대입연산자(=)가 섞인 건... 무조건 =가 뒤에 간다고 외워두시면 헛갈리지 않으실 거예요. 백문이 불여일견 1. 기본코드 이제 슬슬 익숙해지시죠? 2. 연산자 cout 를 사용해서 다양한 연산값을 출력

Naver Blog

C++ #5 조건문

C++언어 C++ #5 조건문 jangThang 2016. 8. 14. 1:50 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220647151772 9. 조건문 드디어 조조조조조조조....건문을 배우네요. 조건문하고 바로 다음 시간에 배울 반복문을 배우면...... 정... blog.naver.com C++의 조건문도 C문법과 다를 건 없습니다. (설명이 부족하다면 C문법을 참고해주세요.) if(조건) 행위; else if (조건) 행위; else if (조건) 행위; . . . else 행위; 이 기본틀에서 여러가지로 변형해서 쓰면 됩니다. 경우의 수가 한 개라면 if한 개만 쓰셔도 되고 2개라면 if, else만... 3개라면 if, else if, else .. 이렇게 else if를 중간에 추가시켜가면서 쓰시면 되겠습니다. 또한 조건문에 들어가는 조건은 비교연산자를 쓰는 것이 대부분이므로 http://blog.naver.com/star7ss

Naver Blog

C++ #6. 반복문

C++언어 C++ #6. 반복문 jangThang 2016. 8. 15. 14:24 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220648865912 10. 반복문 저번에 배운 조건문에 이어서... 이제 반복문을 배워봅시다. 솔직히 조건문하고 반복문만 알아도 프로그래... blog.naver.com C언어와 C++에서의 반복문 내용은 동일합니다. 혹여, 설명이 부족하면 위 링크를 참고하세요. 제어구문이라고 하죠. 조건문과 반복문을 배우시고 나면 프로그래밍의 폭이 확연히 늘어나죠.... 그 만큼 유용하고, 많이 쓰니 꼭 익히시기 바래요. for(제어변수 초기화; 제어변수의 제어조건; 제어변수의 연산) 행위; 사실 for문 잘 익히셔도 반복문을 사용하시는 데에는 무리가 없으실 겁니다. 그래도 while문을 알아두면 여러모로 도움이 되므로 기술했습니다. for문에서 제어변수는 [ 반복횟수를 조절하는 데에 쓰는 변수 ] 를 말합니다. 보통은 ' i '

Naver Blog

C++ #7 배열

C++언어 C++ #7 배열 jangThang 2016. 8. 16. 23:06 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220666039995 13. 배열 벌써 배열이라니..... 핵심만 꼭꼭 찝어서 하다보니... 진도가 매우 빠른 감이 있지만.... 벌써 C언어의 ... blog.naver.com C언어와 C++의 배열은 사용법이 같습니다.(설명이 부족할 경우, 위 링크 참고.) 자료형 배열이름 [항목 수]; 배열의 선언 방법입니다. 배열하다 = 나열하다 ... 처럼 한 번에 여러 개의 변수를 묶어서 선언한다고 보면 되겠습니다. 이렇게 char buf[4]; 라고 선언하면 buf[0], buf[1], buf[2], buf[3]가 연달아 선언됩니다. 여기서 중요한 점은 배열 항목은 0부터 시작한다는 것입니다. 백문이 불여일견 1. 기본코드 2. buf[] 배열 이름은 buf라고 대부분 짓습니다. C/C++언어는 문자열 처리에 많은 약점을 갖

Naver Blog

C++ #8. 함수

C++언어 C++ #8. 함수 jangThang 2016. 8. 17. 0:17 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220659224585 (부족한 내용은 여길 참고하세요.) 12. 함수 printf() 함수.. scanf()함수... 등등 여태까지 만들어진 함수들만 썼었죠? 이제는 함수를 만드실 수 있어... blog.naver.com 리턴값 함수이름(파라미터 들) { 행위; } 위에 보시는 게 함수의 기본 틀입니다. 리턴값 : 함수값의 유형이 정수(int 등), 문자(char 등)인지를 써주는 것입니다. 함수의 자료형이라고 생각하셔도 됩니다. 파라미터 : 함수에서 쓰이는 변수입니다. 파라미터들을 넣어주면 함수에서 연산한 뒤, 함수 값을 내보내죠.(반환하죠) 리턴값 함수이름(파라미터 들); 위에 있는 건 함수를 정의하는 것입니다. '프로토타입(prototype)'이라고 불리며, main()보다도 위에 기술해주셔야합니다. 백문이 불여일견

Naver Blog

C++ #9. 포인터

C++언어 C++ #9. 포인터 jangThang 2016. 8. 19. 19:59 이웃추가 본문 기타 기능 포인터 : 메모리의 주소 포인터 선언 방법 : 자료형 *포인터변수이름; 포인터는 쉽게 말하면 주소입니다. C/C++에서만 다룰 수 있는 내용이죠. 직접 메모리 주소를 프로그래머가 다룸으로, 좀 더 하드웨어적인 접근을 가능하게 하죠. 자료형 *포인터변수이름 = &일반 변수; 물론 일반 변수와 같이 바로 초기화시켜줄 수 있습니다. 그리고 반드시 초기화시켜야합니다... 그렇지 않으면, 이상한 주소(예를 들면 운영체제)를 가르키는 포인터가 생성되어 컴퓨터를 망가뜨릴 수도 있으니까요... 또한 직접 메모리 주소로 초기화하는 것은 위와 같은 이유로 위험하므로, 선언된 일반 변수를 가르키는 방법을 써주세요. 백문이 불여일견 1. 기본코드 2. 포인터 &는 주소연산자라고 부릅니다. 변수 앞에 &를 붙여주면, 변수의 주소를 나타내줍니다. *는 주소참조연산자라고 부릅니다. *는 아까 포인터를

Naver Blog

C++ #10. 클래스와 맴버함수

C++언어 C++ #10. 클래스와 맴버함수 jangThang 2016. 9. 2. 1:56 이웃추가 본문 기타 기능 class 클래스이름 { 접근지정자 : 자료형 맴버변수; 자료형 멤버함수(); . . . }; 위 내용은 클래스의 선언 형식입니다. 클래스(Class)는 하나의 자료형과 같습니다. 매우 구조체라는 개념과 유사하기도 합니다. http://blog.naver.com/star7sss/220770658864 19. 자료형의 활용 - 구조체 struct 구조체 이름 {  자료형 구조체 항목1; 자료형 구조체 항목2; . . . } ;오늘 배울 내용은 구조체입니다... blog.naver.com (혹시, 구조체에 대해 알고 싶으시다면.. 참고하세요) 즉, 한 가지 작업에 필요한 변수와 함수들을 묶어놓은 것이라고 볼 수 있습니다. 그런데 특이한 점이 있습니다. 클래스에는 접근지정자라는 특별한 개념이 있습니다. private : 해당 클래스의 맴버함수를 통해서만 값 변경가능. pu

Naver Blog

C++ #11 접근지정자( private / public )

C++언어 C++ #11 접근지정자( private / public ) jangThang 2016. 9. 3. 19:53 이웃추가 본문 기타 기능 저번에 클래스의 접근지정자 private, public에 대해 알아봤었는 데요. 요번에는 좀 더 자세히 알아보려 합니다. Private 접근지정자 접근지정자 생략 시, Private가 적용 접근범위는 소속된 클래스 내의 멤버함수로 제한 private의 뜻이 [ 개인(소유)의, 비공개의 ] 인 만큼 정보보호에 특화되어 있습니다. 따라서 해당 멤버함수외에는 값을 변경할 수가 없죠. 이는 사사로운 오류를 막아주고, 프로그래머로 하여금 데이터 손실의 부담을 덜어줄 수 있습니다. Public 접근지정자 직접 Public 접근지정자를 명시해줘야한다. 객체가 선언되어 있는 영역이라면, 어디서든지 객체명.(멤버변수 또는 함수) 를 통해 사용할 수 있다. Private 멤버변수를 접근하기위해 만드는 멤버함수는 대부분 Public으로 지정합니다.

Naver Blog

#C++ 12. 생성자

C++언어 #C++ 12. 생성자 jangThang 2016. 9. 3. 20:55 이웃추가 본문 기타 기능 생성자란 객체를 선언할 때, 쓰이는 멤버함수입니다. 생성자의 이름은 클래스 이름과 똑같다. 생성자의 자료형은 지정하지않는다. 생성자의 호출은 명시적이지 않다. 생성자는 객체를 선언(생성)할 때, 컴파일러에 의해 자동으로 호출된다. 객체의 초기화에 쓰이며, 멤버변수의 초기화를 의미한다. 위는 생성자의 정의이자 특징입니다. 즉 우리가 객체를 선언할 때 [ 클래스명 객체명; ], 자동으로 생성자가 따라붙는 거죠... 물론 우리는 여태까지 따로 생성자를 정의하지 않았기 때문에, 컴파일러에서 제공하는 생성자(아무런 일도 하지 않는. . .)를 사용했습니다. 하지만 이제 생성자를 정의해서 새롭게 쓸 수 있죠. 백문이 불여일견 1. class (이번 강의 이후부터 기본코드를 다루지 않습니다. => 이는 이제 익숙해지실 때가 되셨다고 판단하였기 때문입니다.) 저번 강의에서 사용했

Naver Blog

C++ #13. 소멸자

C++언어 C++ #13. 소멸자 jangThang 2016. 9. 4. 1:00 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220803995219 #C++ 12. 생성자 생성자란 객체를 선언할 때, 쓰이는 멤버함수입니다. 생성자의 이름은 클래스 이름과 똑같다. 생성자... blog.naver.com 이번 강의는 생성자와 매우 관련이 깊은 내용입니다. 전 강의가 이해가 덜 되셨거나, 안 보신 분은 보시길 바래요. ' ~클래스명 ' 의 이름을 쓰는 소멸자는 멤버함수다. 소멸자는 자료형을 지정하지 않는다. 소멸자의 호출은 명시적이지 않다. 소멸자는 객체 소멸 시 자동호출된다. 소멸자는 전달매개변수를 지정할 수 없다. 소멸자는 오버로딩할 수 없다. 소멸자는 생성자의 특징과 매우 유사합니다. 자료형이 없고 프로그래머가 따로 재정의해주지 않으면, 컴파일러가 제공하는 소멸자(아무런 일도 하지 않음)를 자동으로 사용하게 되죠. 하지만 객체소멸

Naver Blog

C++ #14. 객체 포인터

C++언어 C++ #14. 객체 포인터 jangThang 2016. 9. 5. 21:04 이웃추가 본문 기타 기능 클래스이름 *객체 포인터 변수; 객체 포인터 변수의 선언 방식입니다. 자료형 대신에 클래스이름이 들어간다는 것 빼곤 다 똑같죠? 더 자세한 내용은 예제와 함께 설명드리도록 할게요. 백문이 불여일견 1. string strcpy라는 함수를 쓰기 위해서 string헤더파일을 불러왔어요. 2. class 요번 예제는 스타크래프트 유닛 정보 출력이예요. 스타크래프트에 대해서 모르시는 분들은.... 그냥 게임유닛이구나.. 하시면 될 거 같아요.. 3. 멤버함수 생성자 오버로딩을 통해서 매개변수 3개를 초기화할 수 있게 만들었습니다. 이미 선언된 배열에 문자열을 넣기 위해서는 strcpy라는 함수를 사용해야합니다. strcpy( 붙여넣기할 데이터, 복사할 데이터 ); 이렇게 사용하시면 됩니다. 프로그래밍을 하시다보면 많이 사용하게 되는 함수이니 알아두시면 좋아요. http://b

Naver Blog

C++ #15. this 포인터

C++언어 C++ #15. this 포인터 jangThang 2016. 9. 6. 16:28 이웃추가 본문 기타 기능 여태까지 멤버함수를 정의할 때, 객체명없이 멤버변수만 기술했었죠? 그럴 수 있었던 이유가 바로 이 this 포인터입니다. 우리가 멤버함수를 호출할 때, x.show() 식으로 x라는 객체명을 붙여주면 컴파일러는 내부적으로 this라는 포인터에 x의 주소값을 담고 함수 내 멤버변수에 참조해줍니다. http://blog.naver.com/star7sss/220805588715 C++ #14. 객체 포인터 클래스이름 *객체 포인터 변수;객체 포인터 변수의 선언 방식입니다. 자료형 대신에 클래스이름이 들어간다... blog.naver.com (이 내용은 객체포인터 내용이 선행되어야 하므로 부족하신 점이 있으면 위 게시글을 참고해주세요.) 내부 포인터 this ㅁ this 포인터는 멤버함수 내에서 호출된 객체의 주소를 저장하는 포인터이다. ㅁ this 포인터는 멤버함수 내에

Naver Blog

C++ #16. 정적(Static)멤버변수/함수

C++언어 C++ #16. 정적(Static)멤버변수/함수 jangThang 2016. 9. 10. 19:58 이웃추가 본문 기타 기능 정적멤버변수는 클래스 내에서의 전역변수 개념이라고 생각하시면 됩니다. 즉, 하나의 정적멤버변수는 같은 클래스 내 모든 객체가 공용으로 사용할 수 있습니다. 마치 전역변수가 여러 함수에서 사용되는 것과 같죠. 하지만 하나의 함수에서 바꾼 전역변수의 값은 같은 전역변수를 쓰는 다른 함수에도 영향을 미치듯, 정적멤버변수도 하나의 객체에서 바꾼 값은 유지되며, 같은 정적멤버변수를 쓰는 다른 객체에게 영향을 미칩니다. 정적 멤버 변수 ㅁ 정적 멤버 변수는 같은 클래스 내 모든 객체가 공용으로 사용할 수 있다. ㅁ 정적멤버변수의 저장 원리는 전역변수와 동일하다. ㅁ 정적멤버변수는 해당 클래스명으로 접근해야하며, private 정적멤버변수는 정적멤버함수로 접근한다. ㅁ 정적 멤버변수는 클래스 내에 [ static 자료형 변수이름; ] 형식으로 정의한다. ㅁ 정적

Naver Blog

C++ #17. 객체 배열

C++언어 C++ #17. 객체 배열 jangThang 2016. 9. 11. 13:55 이웃추가 본문 기타 기능 클래스명 객체배열명[원소 개수]; 객체배열을 선언하는 형식입니다. 클래스가 마치 자료형처럼 쓰이고 있죠. http://blog.naver.com/star7sss/220789264885 C++ #7 배열 http://blog.naver.com/star7sss/220666039995C언어와 C++의 배열은 사용법이 같습니다.(설명이 부족할 ... blog.naver.com (배열에 대해 잘 기억이 안 나시는 분은 여길 참고해주세요.) '배열' 이라는 개념만 잘 이해하고 계신다면 전혀 어려울 게 없는 부분입니다. 백문이 불여일견 1. class include <string>를 통해 string 객체를 사용했어요. (string은 문자열을 취급하는 일종의 클래스) => 쉽게 생각하면 그냥 문자열 자료형 2. 멤버함수 생성자 오버로딩을 통해 3개의 멤버변수의 정보를 받는 생성자

Naver Blog

C++ #18. 프렌드(friend) 함수

C++언어 C++ #18. 프렌드(friend) 함수 jangThang 2016. 10. 2. 15:28 이웃추가 본문 기타 기능 friend 리턴값 프렌드함수명(파라미터 들){ 행위; } 위에 있는 것이 friend 함수를 정의하는 형식입니다. 그냥 기존 함수 정의 앞에 friend만 추가된 것이죠. 그럼 friend 함수가 뭘까요? friend(친구)는 친구라는 이유로 클래스 내의 private까지 모두 접근할 수 있는 C++의 무법자입니다. 접근하고자 하는 private 맴버를 갖는 클래스 내부에 프렌드 함수를 선언해주면, 이곳 저곳의 클래스 멤버를 수정할 수 있죠. 이런 이유로 friend가 C++의 장점인 캡슐화(데이터 은닉 = 데이터 보호 및 보안)를 해친다고 쓰지 말기를 권장하기도 하죠. (마치 goto문이 프로그래밍의 흐름을 해친다고 안 쓰는 것처럼..) 또한, 이 friend 키워드(에약어)는 함수 뿐만 아니라, 클래스, 변수에도 사용하여 똑같이 이용할 수 있습니다.

Naver Blog

C++ #19. 동적할당과 new/delete 연산자

C++언어 C++ #19. 동적할당과 new/delete 연산자 jangThang 2016. 11. 1. 20:34 이웃추가 본문 기타 기능 정적할당 : 변수선언을 통해 필요한 메모리를 확보하는 방법 동적할당 : 프로그램 실행 도중, 필요한 메모리를 확보하는 방법 오늘은 동적할당에 대해 배워볼 거예요. 정적할당은 여태까지 우리가 해오던 작업들입니다. 코딩(프로그램 코드 작성)시에 변수, 배열, 객체 등을 선언하는 것이지요. 그것과 달리 동적할당은 프로그램 실행 시 나타나는 검은 창(명령프롭프트, CMD)에서 직접 메모리를 확보하는 것입니다. 동적할당 : 자료형 *포인터변수이름 = new 자료형; 동적할당해제 : delete 포인터변수이름; 동적할당은 위와 같은 방법으로 합니다. 주의하실 점은 동적할당에서 포인터변수의 자료형과 할당받는(new 뒤에 쓰는) 자료형은 동일해야합니다. 또한 동적할당을 받은 다음에는 꼭 동적할당해제를 해주셔야합니다. (물론, 안한다고 해서 오류가 뜨지도 않고

Naver Blog

C++ #20. 배열/객체/객체배열의 동적할당

C++언어 C++ #20. 배열/객체/객체배열의 동적할당 jangThang 2016. 11. 2. 2:21 이웃추가 본문 기타 기능 배열의 동적할당 : 자료형 *포인터변수이름 = new 자료형 [배열크기]; delete [] 포인트변수이름; 객체의 동적할당 : 클래스이름 *포인터변수이름 = new 클래스이름; delete 포인터변수; 객체배열의 동적할당 : 클래스이름 *포인터변수이름 = new 클래스이름 [배열크기]; delete [] 포인터변수이름; 저번에 배웠던 기본 틀에서 조금씩만 변형한 것입니다. 배열은 할당에서 [배열크기]와 해제에서 [] 가 추가되었지요. (특히 []가 빼먹기 쉬운 부분이니.. 주의해주세요 / 물론 []를 빼먹어도 오류는 발생하지 않으나, 비정상적인 반환이 이루어집니다.) 또한 객체는 할당에서 자료형 대신에 클래스이름으로 대체되었지요. (이를 통해 클래스 또한 사용자정의 자료형임을 알 수 있습니다.) 백문이 불여일견 1. 입력 여기에서 \b는 커서의 위치

Naver Blog

C++ #21. 참조변수와 참조에 의한 호출(call by reference)

C++언어 C++ #21. 참조변수와 참조에 의한 호출(call by reference) jangThang 2016. 11. 3. 13:02 이웃추가 본문 기타 기능 참조변수 : 어느 한 변수의 다른 이름(별명) 참조변수의 선언 : 자료형 &참조변수이름 = 원래변수; 저번에 좀 어려운 개념을 배웠기에, 좀 쉬어가는 의미로 쉬운 걸 준비했어요. 참조변수는 말 그대로 별명입니다. '장땡'의 별명이 jangThang일 때, 두 이름이 가르키는 사람은 단 한 사람이죠. 따라서 장땡이 과내 수석을 하는 것은 jangThang이 과내 수석을 하는 것과 같습니다. 이것과 같이 참조변수는 원래 변수와 똑같은 값(메모리)을 공동으로 사용하는 별명입니다. 위의 예제와 같이, 참조변수의 값을 +1해도 원래 변수의 값이 +1이 되고, 원래 변수의 값을 +1해도 참조변수의 값이 +1 됩니다. 그럼, 이걸 주로 어디에 이용할까요? 사실 하나의 변수의 이름이 여러개인 것은 번거롭기만 할 수도 있습니다. 참조에

Naver Blog

C++ #22. 연산자 오버로딩

C++언어 C++ #22. 연산자 오버로딩 jangThang 2016. 11. 9. 1:01 이웃추가 본문 기타 기능 함수의 오버로딩(Over loading) : 똑같은 함수명이지만, 매개변수(파라미터)의 갯수 등을 다르게 해서 여러 번 함수를 정의함 ( http://blog.naver.com/star7sss/220804394101 오버로딩에 대한 자세한 내용은 여기를 참고하세요. ) C++ 함수의 오버로딩(Over loading) C++에서 추가된 기능입니다. 함수의 오버로딩(Over loading)똑같은 함수명이지만, 매개변수(파라미터)의 ... blog.naver.com 연산자 오버로딩 : 자료형 operator 연산자 ( 파라미터(매개변수) 들 ) { 행위 ; } 이번에는 연산자 오버로딩에 대해 알아보려고 합니다. 앞에서 언급했었던 생성자 오버로딩처럼 연산자도 함수로서 오버로딩이 가능합니다. 여기서 연산자는 +(덧셈), -(뺄셈), /(나눗셈), *(곱셈). %(나머지), &

Naver Blog

[Java/자바] 1. JDK(Java Development Kit, 자바개발도구) 설치/다운로드 방법

C언어나 C++에 비해서, Java는 설치하는 과정도 어렵고 설치할 것도 많더군요. 우선 JDK부터 알려드릴게요. ㅎ 1. 오라클 홈페이지 들어가기 Oracle 한국 | 통합 클라우드 애플리케이션 및 플랫폼 서비스 Cerner를 인수한 Oracle “Cerner와 Oracle은 협력을 통해 의료 전문가에게 더 좋은 정보를 제공하여 향상된 환자 결과로 나타날 수 있는 치료 결정을 개선함으로써 의료 서비스를 혁신할 수 있는 역랑을 갖추고 있습니다.”—Larry Ellison 자세히 알아보기 22회계연도 2/4분기 수익 고객 하이라이트 Aviva, Bayer, FedEx, First Bank of Nigeria, Honda Motor, Mayo Clinic, Nokia, Panasonic 그리고 Oracle을 믿고 성공을 지원할 수 있도록 해준 업... www.oracle.com www.oracle.com 를 들어가주세요. 들어가신 다음, 위 사진과 같이 'Java SE'를 눌러주세요.

Naver Blog

[Java/자바] 2. JDK 환경변수설정하기 (자바개발도구, Java Development Kit)

환경변수를 설정해야 어디에서든지 JDk를 인식할 수 있어요. 즉, JDK의 파일이 어디에 있는지 설정해주는 거예요. 1. JDK폴더 찾기 설치하실 때, 경로를 안 바꾸시고 OK만 누르셨다면 위와 같은 경로에 JDK파일이 설치되셨을 겁니다. 위 경로대로 찾아서, 빨간색 박스 안 주소를 복사해주세요. 2. 환경변수 설정 저번에, 시스템 버전을 확인한 것처럼 [내 컴퓨터]아이콘을 우클릭해서, 속성으로 들어가주세요. 그러면 위 사진처럼 창이 뜰거예요. 빨간색 박스 속 '고급 시스템 설정'을 눌러주세요. 환경변수 클릭 뭔가 잘못 만지면 큰일날 거 같은 것들이 많죠? 진짜 큰일나요 .. ??? 시스템 변수에서 'Path'를 클릭하시고 편집을 눌러주세요. 그런다음, 변수값의 맨 앞에다 아까 복사한 주소를 붙여넣기 해줍니다. 여기서 중요한 건, 다른 건 건들지 말고 주소만 맨 앞에 복사해줘야해요. 그 후에 반드시 복사한 주소 끝에 ;(세미콜론)을 넣어주세요. 원래 경로와 구분하기위해서 ;를 꼭 넣

Naver Blog

[Java/자바] 3. 자바 이클립스 설치/다운로드하는 방법 (Java Eclipse, 자바 컴파일러)

C언어와 C++에는 비쥬얼 스튜디오가 있다면, Java에는 이클립스(Eclipse)가 있습니다. Java의 IDE(통합개발환경)이죠. 1. 이클립스 홈페이지 들어가기 http://www.eclipse.org/downloads/ Eclipse Downloads | The Eclipse Foundation The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks. www.eclipse.org 위 주소로 들어가면, 위와 같은 화면이 뜹니다. '미러'버전은 우리나라로 해주시면 됩니다. 저는 'Daum Kakao'로 했어요. 2. 이클립스 설치하기 일명 Eclipse EE라고 불리는 기업가용 이클립스. 저는 이걸로 설치했는 데, 개발자용으로 해도 무관할 거 같긴 해요. 후

Naver Blog

[Java/자바] 4. 프로젝트 및 클래스 생성

이클립스를 깔았으니, 요번에는 프로젝트와 클래스를 생성해보도록 해요. 그래야, 코딩도 할테니까요. 1. 프로젝트 생성 프로젝트는 워드프로그램에서 '새 문서' 같은 느낌이죠. 일단, 위 사진과 같이 프로젝트를 새로 만들어주세요. [File] - [New] - [Project] 그러면 위와 같은 창이 나오는 데, 그냥 Next로 넘어가주시면 됩니다. 원하시는 프로젝트 이름 정하시고 마치시면, 프로젝트가 생성됩니다. ㅎ 2. 클래스 생성 왼쪽 목록에 보시면, 프로젝트가 생성된 걸 확인하실 수 있습니다. 프로젝트를 우클릭하신다음 [New] - [Class]를 눌러주세요. 위와 같이 설정하고, 원하시는 이름을 넣으시면 생성완료. Public Static void Main(String[] args)는 체크해주시는 게 좋아요. (메인함수를 직접 타이핑쳐서 만드는 수고를 덜 할 수 있어요.) C/C++를 배우신 분들은 소스파일 역할을 Java에서는 클래스가 대체한다고 생각하시면 쉬워요.

Naver Blog

[Java/자바] 5. System.out.print() 메소드로 텍스트 출력하기

고민을 많이한 끝에, C/C++과 같이 순차적으로 진행하기로 결정했습니다. 지금은 모르는 게 많아도, 계속 강의를 진행해주세요. 그러다보면, 알게 되실 겁니다. 제가 알려드리는 것만, 익혀야하는 내용만 숙지하시면서 진행하면 궁금하거나, 이해가 안가는 부분도 배우시게 될거예요. 1. 기본 형식 프로젝트파일과 클래스를 만드셨다면, 위와같은 코드가 생성되었을겁니다. 앞으로 이 코드를 '기본형식'이라고 부를게요. (코드 내용은 나중에 설명드릴거예요.) https://blog.naver.com/star7sss/221452941159 ( <= 프로젝트, 클래스를 못 만드셨다면 참고해주세요.) [Java/자바] 4. 프로젝트 및 클래스 생성 이클립스를 깔았으니, 요번에는 프로젝트와 클래스를 생성해보도록 해요.그래야, 코딩도 할테니까요.... blog.naver.com 2. System.out.print() system.out.print(" 할 말 "); 문자 출력 위 메소드는 외워둡시다. " "

Naver Blog

[Java/자바] 6. System.out.println()과 자동완성기능

저번시간에 system.out.printf()를 통한 문자출력을 배웠죠. 그런데, 이 메소드의 문제점이 있었으니 바로 '줄바꿈' 원래는 Hello java I`m fine, thank you 로 출력하고 싶었지만, 이렇게 출력되고 말죠. 1. system.out.println() system.out.println(" 할 말 "); 문자출력 후 줄띄우기 이때, 필요한 메소드가 이겁니다. 이 메소드는 문자출력 후에 자동으로 줄을 띄워줍니다. Enter를 쳐주는 거죠. system.out.printf()에 ln이 추가된 형태로, 전 메소드를 외우셨다면 쉽게 숙지하실거예요. 2. 백문이 불여일견 1) 기본형식 기본 형식 기본형식은 그대로 유지해주세요. 2) system.out.println() 위와 같이 기본형식 안에 system.out.println()를 입력해줍니다. 3) 출력 그러면 이렇게 줄이 띄워져서 출력되는 걸 볼 수 있습니다. 3. 자동완성기능 사실, Java가 타 프로그래밍

Naver Blog

[Java/자바] 7. 변수와 자료형

자바를 공부하면서 느끼는 거지만, 다른 프로그래밍언어를 배우지 않고 처음 Java를 입문하시는 분들은 "얼마나 혼란스러울까.."라는 생각이 듭니다. 그 만큼, Java 관련서적들이 독자들의 배경지식을 생각하지않고 중구난방으로 내용을 저술한 책들이 많다는거죠. 근데 더 문제점은 그럴 수 밖에 없... 크흠.. 열심히 해보죠. 1. 자료형 ===================================================================== 자료형 크기 데이터 종류 변수의 범위 char 1byte 한 문자 데이터 \u0000~\uFFFF int 4byte 정수형 데이터 -2147483648~2147483647 short 2byte 정수형 데이터 -32768~32767 long 8byte 정수형 데이터 -9223372036854775808 ~ 9223372036854775807 float 4byte 소 수 -2147483648~2147483647 double 8byt

Naver Blog

[Java/자바] 8. 출력형식을 활용한 데이터 형태변환

이것만 배우면, 문자출력메소드는 거의 정복이네요. ㅎㅎ 1. 출력형식을 이용한 문자출력 system.out.printf("출력형식", 변수); 출력형식 이용 이번 강의에서 사용할 메소드는 system.out.printf()입니다. C언어를 배우신 분들은 반가운 메소드겠네요. 출력형식 출력데이터 %d 10진수의 정수형 %o 8진수의 정수형 %x 16진수의 정수형 %u 부호없는 10진수 정수형 %c 한 문자 %s 문자열( = 할 말) %f 소수 표현(11.111) %e 소수 표현(1.1111111) %g %e와 %f 중에 출력할 자릿수를 덜 차지하는 형태로 출력 위와 같은 출력형식을 이용해서 변수의 값을 조정해서 출력할 수 있습니다. 잘 감이 안오시죠? 예제로 넘어갑시다. 2. 백문이 불여일견 1) 기본형식 2) 출력형식 위와같이, " "안에 출력형식을 넣어서 사용합니다. 여기서 중요한 점은, 꼭 " "다음에 쉼표(,)찍고 출력할 인수(변수, 숫자 등)를 넣어줘야해요. 출력결과 그러면,

Naver Blog

[Java/자바] 9. 서식문자(이스케이프 시퀸스, Escape Sequence)

요번 강좌는 그냥 넘어가셔도 됩니다. 하지만, 알아두시면 편해요. ㅎㅎ 1. 서식문자(Escape Sequence) 서식 문자 설명 비고 \n 새로운 줄로 이동 Enter 기능 \t 다음 탭으로 이동 Tab 기능 \b 뒤로 한 칸 이동 Back Space 기능 \r 줄의 맨 앞으로 이동 Home 기능 \\ \출력 \' '출력 \" "출력 다음과 같은 기능을 하는 걸, 서식문자라고 합니다. '\'를 쓴다는 게 특징이죠. (Enter키 위에 있어요.) 2. 백문이 불여일견 1) 기본형식 2) 서식문자 아 그리고, 이클립스에서는 \가 빽슬러시로 나타날 수도 있어요. 일단, \n으로 한 줄 띄워주고 \t으로 tab만큼 거리 띄워주고 \'써서 '를 출력했어요. 3) 출력 음.. 생각보다 그렇게 예쁘게 나오진 않았네요. 그리고 사실 서식문자중에서 \n만 주로 쓰기 때문에 이것만 아셔도 충분하죠 ㅎ

Naver Blog

[Java/자바] 10. 연산자 (연산기호)

+ - × ÷ 는 알아야, 프로그램을 짜겠죠? 원래 컴퓨터가 생긴 유래가, 계산기에 있으니 '연산자'를 빼놓을 수가 없죠. 1. 산술 연산자 아주 기초적인 연산자입니다. ÷ 대신에 /를 쓰는 것과 × 대신에 *를 쓰는 것만 주의하면 되겠네요. 연산자는 C언어든, 엑셀이든 다른 프로그램에서도 동일하게 쓰이니 알아두면 편해요. 2. 비교연산자 두 수를 비교해주는 연산자입니다. 후에 배울 조건문과 반목문에서 유용하게 쓰이는 녀석들이죠. 항상 =(등호)가 뒤에 위치한다는 것만 유념하시면, <=인지 =<인지 헛갈리시지 않으실 거예요. 3. 백문이 불여일견 1) 기본형식 2) 연산자 변수 a, b를 각각 4, 2로 초기화한다음 각종 연산자를 사용해봤습니다. 여기서 주의하실 점은 비교연산자의 출력형식을 '%s'를 사용한 것입니다. true인지, false인지를 출력해야하기 때문에 문자형 출력형식을 사용합니다. https://blog.naver.com/star7sss/221458539632 ( <

Naver Blog

[Java/자바] 11. Scanner 메소드로 값 입력받기

이걸 할까 말까, 엄청 고민했으나 역시 '입력'메소드가 없으면 프로그램이 재미가 없죠. ㅎㅎ 1. Scanner 메소드 1) import import java.util.Scanner; scanner 메소드 import import는 C++에서의 네임스페이스 같은 녀석입니다. ( Ex) using namespace std;) 한마디로, java.util.Scanner라고 매번 써야하지만 import 선언을 하면, Scanner만 써도 작동이 됩니다. 왜냐하면, import 선언된 메소드는 컴파일할 때, 컴퓨터가 자동으로 java.util.을 추가시키기 때문에 아무런 문제가 없죠. 따라서, Scanner 메소드를 쓸 때에는 맨 첫 줄에 위 코드를 넣어주세요. 2) Scanner Scanner 변수이름 = new Scanner(System.in); scanner 공간확보 음.. 쫌 어려워보이죠? 다른 프로그래밍 언어에 비해, 자바가 어렵긴 한 편이예요. 위 코드의 자세한 설명은 나중에 해

Naver Blog

[Java/자바] 12. 조건문 if

제어문을 배우는 순간, 구현할 수 있는 프로그래밍의 폭이 넓어지죠 ㅎㅎ 1. 조건문 if if(조건) 행위; else if(조건) 행위; else if(조건) 행위; (. . . 생략) else 행위; 위 형식이 일반적인 조건문 if형태입니다. 조건문은 괄호안에 조건이 참일 경우에만, 실행이 됩니다. 그렇지 않으면, else if 조건문으로 넘어가고 else if의 조건에도 맞지 않으면 또 밑에 else if 조건문으로 내려가는 식입니다. 그러다가 else까지 오게되면 else의 행위가 실행되는 거죠. . . . 반대로, if문이 참인 경우에는 if문의 행위만 실행되고 밑에 있는 else if와 else의 행위는 실행되지 않고 무시됩니다. 음.. 역시 예제로 보는 게 빠르겠죠. 2. 백문이 불여일견 1) import java.util.Scanner 오늘 예제에서도 Scanner 메소드를 사용합니다. import 해주세요. https://blog.naver.com/star7sss/22

Naver Blog

[Java/자바] 13. 반복문 for

후.. 여태까지 예제에 for문이 없어서 정말 아쉬웠어요. 이제 제대로된 프로그램을 짤 수 있겠네요. 1. 반복문 for for(제어변수의 초기화; 제어변수의 제어조건; 제어변수의 연산 ){ 행위; } for문 기본형식 for는 제어조건에 따라 행위를 반복하게 만들어줍니다. 즉, 제어조건이 거짓이면 더이상 반복하지 않습니다. 제어변수 : 임의로 지정한 변수로, for문의 반복조건에 사용되는 변수 제어조건 : for의 반복조건에 해당됨. 예를들면, for( int a = 3; a > 0; a--) 라고 설정하면 3번 반복하는거죠. CF) a--는 a -= 1과 같고, a = a-1과 같습니다. 즉 1씩 빼주는 것입니다. 또, 각 요소들은 생략할수도 있어요. for(;;) 이렇게 쓰면, for문은 조건없이 무한반복하게 되죠. 2. 백문이 불여일견 1) 기본코드 저번시간에 했던 '구구단 프로그램'예제를 업그레이드시켜봤습니다. 이번에도 역시, scanner메소드를 사용하니 import해주세

Naver Blog

[Java/자바] 14. 배열

정말 핵심만 콕콕 찝어서 엄청 빠르게 진행하고 있습니다. 아무래도, 전반적인 내용을 알고 세부적인 내용을 알아가는 게 프로그래밍 공부하는 데에는 도움이 돼요 ㅎ.. 1. 배열 배열은 쉽게 설명하면, 묶음 변수입니다. 같은 자료형인 변수를 여러 개 묶어놓은 형태죠. 예를들어, 정수형 배열인 int number[3]을 생각하면, number[0] number[1] number[2] 이런식으로 메모리에 일렬로 저장되어있죠. 여기서 중요한 점은 배열첨자가 [0]부터 시작한다는 점입니다. int number[3]처럼 3개 공간을 만들면, [0]부터 [2]까지 만들어지죠. 2. 배열 선언 자료형[] 변수이름; 자료형 변수이름[]; 배열 선언은 위와 같이 2가지 방법으로 할 수 있습니다. 1, 2번 중 아무거나 사용하셔도 문제가 없으나 통상적으로 1번을 많이 씁니다. 3. 배열 생성방법 변수이름 = new 자료형[배열크기] 선언이 "이런 종류의 자료형을 쓰는 배열이 있다"고 알려주는 거라면 생성

Naver Blog

[Java/자바] 15. 클래스(Class)와 인스턴스(Instance)

이제 java의 본격적인 시작. 모든 코드가 class안에 있는 객체지향언어의 시작이네요. 지금까진, 무심코 넘어갔던 기본코드의 public class에 대해 알아보죠. 1. 객체지향 프로그래밍 흔히 절차지향 프로그래밍과 비교해서 많이 설명합니다. 절차지향 프로그래밍언 언어의 대표 주자는 C언어로, 논리적 흐름에 따라 위에서부터 쭉 코드를 작성해나가는 탑다운(TopDown)방식을 사용합니다. 따라서, 절차지향 프로그래밍에서는 기능 중심의 '함수'를 정의해서 문제를 풀어나가죠. C언어 코드 허나, 데이터에 대한 접근 제한이 없어 보안에 취약했고 함수를 통해서만 구현하다보니, 코드의 재사용성도 매우 약했죠. 그래서 등장한 게 객체지향 프로그래밍입니다. C++ 코드 C++과 자바는 객체지향 프로그래밍언어로, 함수보다는 클래스 객체를 만들어서 문제를 해결나갑니다. 예를 들어 사칙연산 프로그램을 만든다면, +클래스 / -클래스 / ÷클래스 / ×클래스를 만드는 거죠. 만약, 기능이 더 추가된

Naver Blog

[Java/자바] 16. 메서드(멤버함수) 정의 및 선언

이제는 메서드를 직접 만드는 단계까지 오셨습니다. 매번, 만들어진 메서드를 이용하기만 했는데 드디어 저희 입 맛대로 메서드를 만들 수 있겠네요. 1. 메서드 자료형 이름 ( 자료형 변수명, 자료형 변수명 . . . ){ 행위; } 메서드는 위와 같이 정의하고 선언합니다. 메서드의 자료형은 행위를 통해 나오는 output(산출값)으로 메서드를 통해 정수가 나온다면 int형으로, 문자열이 나온다면 String으로 아무것도 나오는 게 없다면 void('공허'란 뜻)로 자료형을 설정하시면 됩니다. 2. 메서드 호출 객체 이름. 메서드 이름(); 만든 메서드는 다음과 같이 사용하며 우리가 흔히 사용하던 메서드들의 형태와 동일합니다. 화면출력기능을 하는 System.out.println(" 할 말 "); 은 String을 매개변수로 하는 메서드로 java.lang 패키지의 System 클래스의 out 객체를 통해 사용되는 것이죠. 이처럼 타 클래스의 메서드를 사용할 때는 앞에 클래스명까지 붙여

Naver Blog

[Java/자바] 17. 클래스 메서드와 인스턴스 메서드

메서드 개념을 전 차시에 배우고 클래스와 인스턴스 개념을 그 전 차시에 배웠죠. 이번에는 메서드의 종류에 대해 알아볼게요. https://blog.naver.com/star7sss/221482506499 (클래스, 인스턴스 개념이 안잡히셨다면 여기로) [Java/자바] 15. 클래스(Class)와 인스턴스(Instance) 이제 java의 본격적인 시작.모든 코드가 class안에 있는 객체지향언어의 시작이네요.지금까진, 무심코 넘... blog.naver.com https://blog.naver.com/star7sss/221482549800 (메서드에 대한 개념이 안잡히셨다면 여기로) [Java/자바] 16. 메서드(멤버함수) 정의 및 선언 이제는 메서드를 직접 만드는 단계까지 오셨습니다.매번, 만들어진 메서드를 이용하기만 했는데 드디어 저... blog.naver.com 1. 클래스 메서드 Static 자료형 이름 ( 자료형 변수명, 자료형 변수명 . . . ){ 행위; } 메서드

Naver Blog

[Java/자바] 18. 생성자

저번 sum 함수에서 멤버변수들을 일일이 정의해줬죠.. 이번에는 생성자를 이용해서 초기값을 정해주겠습니다. 1. 생성자 클래스 이름 (자료형 변수명, 자료형 변수명 . . . ){ 인스턴스 생성 시, 실행할 내용 (주로 초기화) } 생성자는 인스턴스(객체) 생성 시에 같이 실행되는 메서드입니다. 그래서, 주로 초기화 내용을 다루죠. 2. 생성자 작성조건 ㄱ. 생성자의 이름은 클래스의 이름과 같아야 한다. ㄴ. 생성자의 리턴값(반환값)은 없다. 두 조건을 꼭 맞추셔서 생성자를 만드셔야합니다. ㅎㅎ 생성자는 다른 메서드와 다르게 이름이 클래스와 같다는 게 특징이죠. 3. 백문이 불여일견 1) 생성자 전 차시의 Add 클래스에 Add() 생성자를 추가했습니다. 이제, Add클래스의 인스턴스(객체)를 생성할 때 n1, n2, n3이 다음과 같이 초기화되죠. 2) 메인 인스턴스(객체) 생성 후에 바로 값을 산출해보고, 멤버변수들의 값을 바꾼뒤에 또 한번 산출해봤습니다. 3) 출력 음.. 잘

Naver Blog

[java/자바] 19. 오버로딩(Overloading)

C++과 마찬가지로, 객체지향 언어의 특징인 '오버로딩'기능을 지원합니다. https://blog.naver.com/star7sss/220804394101 C++ 함수의 오버로딩(Over loading) C++에서 추가된 기능입니다. 함수의 오버로딩(Over loading)똑같은 함수명이지만, 매개변수(파라미터)의 ... blog.naver.com 1. 오버로딩 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 오버로딩은 매개변수의 갯수나 타입만 달리해서, 겹겹이 쌓는다는 느낌입니다. 예를들어, int sum(int a, int b)인 함수는 정수형 매개변수만 받을 수 있지만 오버로딩을 통해 int sum(double a, double b)를 오버로딩하면 실수형 매개변수도 받을 수 있죠. 또, int sum(int a, int b, int c)도 정의하면 sum함수로 매개변수 3개도 받을 수 있습니다. 즉, 하나의 메소드에 다양한 매개변수를 넣을 수

Naver Blog

[java/자바] 20. 가변인자(Variable argument)

오늘은 가변인자에 대해서 배워볼까 합니다. 1. 가변인자 타입... 변수명 가변인자를 통해, 여러 개의 인수를 매개변수로 받을 수 있습니다. 즉, 가변인자의 '가변'은 매개변수의 갯수죠. 위와 같이, '타입... 변수명'형태로 선언하며, 꼭 맨 뒤에 위치해야합니다. int avg(int... num, int sum)가 아니라 int avg(int sum, int... num) 이어야 한다는 거죠. 2. 오버로딩과의 활용 https://blog.naver.com/star7sss/221880361405 ( <= 오버로딩 관련 리뷰) [java/자바] 19. 오버로딩(Overloading) C++과 마찬가지로, 객체지향 언어의 특징인 '오버로딩'기능을 지원합니다.https://blog.naver... blog.naver.com 이 가변인자는 저번 시간에 배운 오버로딩과 찰떡궁합입니다. 2~4개의 인자를 받는 add함수를 만들기 위해서는 일일이 int add(int a, int b) int

Naver Blog

[java/자바] 21. 상속(extends)

드디어 '상속'입니다. 객체지향 프로그래밍의 꽃이라고 불릴 정도로, 핵심적인 기능입니다. 1. 상속(inheritance) 부모(상위, 조상, 기반) 클래스의 멤버를 자식(하위, 자손, 파생된) 클래스가 사용할 수 있도록 허용하는 것 상속의 정의 "부모로부터 자산을 상속받다."와 같이 '상속'은 물려주는 것입니다. 부모 Class의 멤버 메서드, 멤버 변수를 그대로 자식에게 물려줄 수 있죠. 따라서, 동일한 멤버를 쓰는 class들은 굳이 여러번 정의하지 않고 부모로부터 상속받아서 쉽게 정의할 수 있습니다. 다만, C++과 달리 Java는 상속받을 수 있는 부모클래스가 단 1개뿐이니, 여러 개는 상속받을 수 없어요. 2. 상속 하는 방법 class Child extends Parent{ // Child 클래스 내용 } 간단합니다. 자손클래스 옆에 상속받을 부모클래스를 써주면 됩니다. 예를들어, A, B 클래스가 있다고 합시다. class A { void a() {}; int num;

Naver Blog

[python/파이썬] 1. 파이썬이란?

(간단한 파이썬 소개글로, 프로그래밍만을 배우고 싶으신 분은 다음 게시글로 이동해주세요.) 프로그래밍 입문 요즘은 C언어로 프로그래밍을 시작하는 사람보다, 파이썬으로 입문하시는 분이 많으신 듯해요. 제가 대학교에 입학했을 16년도만 하더라도 C언어 아니면 C++로 시작하는 게 국룰이었는데 말이죠... (이렇게 빠르게 트랜드가 바뀌는 게 IT의 현실입니다...) 어쨌든, 그 만큼 파이썬이 배우기 쉽고 쉬운 언어임은 분명하며 활용도도 엄청나죠. C언어는 사실 사장된 언어라고 할 정도로 하드웨어쪽 외에는 거의 안 쓰니까요. [스타크래프트 파이썬 맵] 파이썬은 고대 그리스 신화의 거대한 뱀으로, 이 맵 중앙에도 뱀 모양이 그려져있다. 파이썬 유래 파이썬의 유래는 별 뜻 없이, 자기가 좋아하는 코미디 프로인 '몬티 파이선의 날아다니는 서커스'에서 따왔다고 해요. 뭔가 그럴듯한 이유가 있을 거 같았는데, 별거 없죠? ㅋㅋ 사실 C언어도 A, B언어 뒤에 나온 언어라서 C언어고, C++도 C언어

Naver Blog

[python/파이썬] 2. 파이썬 설치하기 (아나콘다)

0. 웹 브라우저 인터프리터 https://www.tutorialspoint.com/execute_python_online.php Online Python Compiler - Online Python Editor - Online Python IDE - Python Coding Online - Practice Python Online - Execute Python Online - Compile Python Online - Run Python Online Execute Python Online (Python v2.7.13) Login Setting Edit Project Fork Result main.py STDIN Execute | Share Loading... www.tutorialspoint.com 요즘 웹 인터프리터로 간단한 코드를 실행할 수 있어서, 아래의 귀찮은 과정을 거치지 않고 실습가능합니다. 위 사이트를 통해서도 하실 수 있고, 구글의 Colab을 이용할 수도 있죠. 다

Naver Blog

[python/파이썬] 3. 파이참 설치하기 (아나콘다)

이전 차시에 파이썬 가상환경을 구성해주는 아나콘다를 설치했어요. https://blog.naver.com/star7sss/222197690463 ( <= 아나콘다 설치를 안하신 분들은 여기로) [python/파이썬] 2. 파이썬 설치하기 (아나콘다) 0. 웹 브라우저 인터프리터https://www.tutorialspoint.com/execute_python_online.php요즘 웹 인터프리... blog.naver.com 이제 파이썬을 코딩할 수 있는 IDE(통합 개발 환경)인 파이참을 설치해보겠습니다. 물론 이전 차시에 봤던 명령 프롬프트에서도 파이선 코딩은 할 수 있지만, 1900년대도 아니고 굳이 그럴 필요는 없겠죠.. 1. 파이참 설치하기 먼저 아나콘다 네비게이터로 들어갑니다. 그러면 관련 프로그램들이 많이 보일 거예요. 그 중에서 Pycharm Community를 install 해주세요. professional이 아니라 Community입니다. professional은 유

Naver Blog

[python/파이썬] 4. print() 함수

1. 프로그래밍 함수란? 요번 시간은 간단한 프로그래밍 함수를 배워볼게요. 프로그래밍 함수도 위와 같은 '함수' 입니다. 입력값(x)을 받아서 출력( f(x) ) 하는 거예요. 예를들어, 입력값이 1이면 f(1) = 4가 출력되겠죠. 인수(argument) : 함수 입력값 파라미터(parameter, 매개변수) : 함수의 미지수 근데, 프로그래밍에서는 용어를 조금 다르게 불러요. 함수에 입력되는 x값을 '인수'라고 부르며 함수 정의에 쓰인 미지수를 '파라미터'라고 부릅니다. 위의 예에선 인수가 1이고, 파라미터는 x겠죠? 만약 이해가 안 가신다면, 그냥 넘어가셔도 됩니다. 그저 프로그래밍 함수도, 수학의 함수와 비슷하다는 것만 알아두세요. 2. print 함수 어느 프로그래밍 언어를 배우더라도, 첫 예제는 hello, world! 죠. ( !까지 살려줘야, 진정한 대표 예제입니다..) 위 print 함수는 괄호() 안에 들어간 문구를 출력해주는 기능을 합니다. print("할 말")

Naver Blog

[python/파이썬] 5. 변수와 자료형

저번 시간에 print를 배우면서, 함수 개념도 살짝 살펴봤습니다. 이번에는 변수와 자료형을 배워볼건데, 어렵지 않아요. 만약 이해가 안 가시더라도 추후 내용을 배우다보면 자연스럽게 이해가 됩니다. 처음부터 모두 이해하고 넘어가야겠다는 생각은 프로그래밍 공부에 좋지 않으니 편하게 봐주세요. 1. 변수 변수(variable) : 프로그램에서 사용하는 데이터를 저장해주는 공간(메모리) 변수를 흔히 '컨테이너'에 비유합니다. 여러분이 사용할 데이터를 넣을 공간을 만들어주는 게 바로 '변수'입니다. A = "jangThang" 이라고 하면, A라는 변수에 "jangThang"이라는 글자(문자열)를 저장할 수 있는거죠. 이렇게 저장된 변수는 언제든 다시 사용할 수 있기 때문에 편리합니다. 계속 jangThang이라고 쓰는 것보다는 A를 쓰는 게 편하죠. cf) 변수명 규칙 1. 알파벳, 숫자, 밑줄(_)로 시작 2. 대소문자 구분 변수명은 대소문자 구분된다는 거랑, _빼곤 특수문자로 시작하지

Naver Blog

[python/파이썬] 6. 연산자

저번 시간에는 변수와 자료형에 대해서 알아봤습니다. 그런데, 왜 변수의 자료형을 나누는 걸까요? 그 이유는 자료형에 따라 연산자의 규칙이 달라지기 때문입니다. 똑같은 +연산자여도, 숫자에서는 덧셈이고 문자열에서는 이어붙이기(append)입니다. 이러한 연산법칙에 대해서 알아봅시다. 1. 숫자형에서의 연산자 숫자형에서 사용하는 연산자는 익숙한 수학기호입니다. 여러분이 대부분 사용하는 연산자는 빨간색으로 색칠된 사칙연산으로 쉽게 익힐 수 있습니다. 다만, 곱하기 X가 아니라 *, 나누기 ÷가 아니라 / 인 것만 주의해주시면 됩니다. 그리고 %는 mod, 나머지연산자라고 불립니다. 5 % 2 = 1 로, 5를 2로 나눈 나머지를 구하는 연산자라고 생각하시면 됩니다. 다음은 비교연산자입니다. 여기서는 a < b가 단순히 "a가 b보다 작다"라는 명제가 아니라, 비교 연산을 뜻합니다. a가 b보다 실제로 작으면 'true'를, 크거나 같으면 'false'로 계산됩니다. 키보드에서는 ≤, ≥,

Naver Blog

[python/파이썬] 7. 주피터 노트북 사용하기

여태까지 파이참으로 강의를 진행했습니다. 파이참을 사용하면 좋은 점은 함수에 대한 설명을 볼 수 있는 거예요. 아래처럼 함수에 필요한 인자(argument)를 살펴볼 수 있죠. 거기다가 더보기(...)에서 함수의 정의(definition)도 살펴볼 수 있어요. 쉬운 영단어만 사용해서 써져 있어서 쉽게 이해할 수 있죠. 그래서 처음 파이썬을 배우시는 분들에게 파이참을 쓰실 것을 추천드렸습니다. 다만 이러한 에디터 환경에선 인터프리터 언어의 특장점인 즉각적인 결과를 볼 수 없는 아쉬움이 있죠. 이 떼. 필요한 게 주피터 노트북입니다. 1. 주피터 노트북 사용하기 1) 아나콘다 네비게이터를 실행합니다. 2) 주피터(jupyter) 노트북 설치 네비게이터에서 주피터 노트북을 찾아서 설치합니다. 3) 주피터 노트북 실행 설치가 끝난 후, Launch를 누르면 자동으로 웹페이지가 뜨며 실행됩니다. 4) 주피터 노트북 새 파일 만들기 우측의 new에서 python3을 클릭합니다. 그러면, 새 파

Naver Blog

[python/파이썬] 8. 사용자 입력함수 input()

모든 프로그래밍 언어의 시작은 출력과 입력입니다. 우린 이전 시간에서 출력(print)하는 법을 배웠죠. https://blog.naver.com/star7sss/222199677866 ( <= print 함수 강의 ) [python/파이썬] 4. print() 함수 1. 프로그래밍 함수란?요번 시간은 간단한 프로그래밍 함수를 배워볼게요.프로그래밍 함수도 위와 같은 &... blog.naver.com 이번에는 입력하는 방법을 배워보겠습니다. 1. input 함수 변수 = input() input() 함수는 키보드로부터 입력받은 값을 저장하는 기능을 합니다. 주피터 노트북에서 input()을 실행해보면, 이렇게 아래에 입력창이 뜨죠. 3을 입력하면, 그대로 출력합니다. 하지만 이러면 아무런 의미가 없죠. 한 번 쓰고 말 게 아니니까요. 따라서 이렇게 [ 변수 = input() ] 으로 쓰는 것이 일반적입니다. 2. input("할 말") 변수 = input("입력하는 값 소개글") 사

Naver Blog

[python/파이썬] 9. 한 번에 여러 값 입력받기 input().split()

저번 시간에는 사용자로부터 키보드 입력을 받는 input()함수에 대해서 배웠습니다. https://blog.naver.com/star7sss/222222130641 ( <= input() 함수) [python/파이썬] 8. 사용자 입력함수 input() 모든 프로그래밍 언어의 시작은 출력과 입력입니다.우린 이전 시간에서 출력(print)하는 법을 배웠죠.htt... blog.naver.com 그런데 하나하나 입력받는 건 조금 귀찮죠. 이번에는 한 번에 여러 값을 받는 방법을 배워보겠습니다. 1. input().split() 변수1, 변수 2.. = input().split() 파이썬은 이렇게 여러 변수를 한 번에 입력받을 수 있습니다. (다른 언어에선 배열과 반복문을 이용해야겠지만....) 스페이바로 구분해서 두 수를 입력하면 이렇게 num1 = 1, num2 = 3 으로 잘 입력됩니다. 2. split() split(나누는 기준문자, 나눌 횟수) 여기서 split()은 문자열을

Naver Blog

[python/파이썬] 10. 조건문 if와 if-else문

드디어 프로그래밍의 꽃인 '조건문과 반복문'을 배우는 시간입니다. 이 둘을 배우는 것만으로도 많은 프로그래밍 문제를 해결할 수 있습니다. 상당히 강력한 기능이죠 ! 1. 조건문 if if 조건 : 행위 "만약 ~라면" 이라는 가정의 뜻을 가진 if는 프로그래밍에서 '조건'을 나타냅니다. 해당 조건이 맞다면 실행하고, 아니면 실행하지 않는 거죠. A가 1이고 B가 3일 때, A < B라는 조건은 참입니다. 그래서 아래의 행위가 실행됩니다. 만약 반대로, A가 3이고 B가 1이라면 A < B라는 조건이 거짓이 되기 때문에 실행되지 않습니다. CF) 블록(block) 블록은 함께 실행되는 코드의 묶음을 말합니다. 즉, 여기에서는 조건에 따라 같이 실행되는 코드를 '블록'이라고 합니다. 타 언어에서는 { } 를 통해서 블록을 구분하지만 파이썬에서는 Tab(또는 스페이스 4칸)을 기준으로 블록을 나눕니다. 따라서 위와 같이 Tab으로 들여쓰기 하지않으면, if와 관계없는 문장으로 해석해서 조

Naver Blog

[python/파이썬] 11. 반복문 while문(break, continue)

반복문. 듣기만 해도 가슴이 웅장해지는 이름입니다. 그 만큼, 자주 쓰이고 프로그래밍에서 빼놓을 수 없는 문법이죠. 흔히, 컴퓨터는 '반복 수행하는 계산기계'라고들 하잖아요. 틀린 말이 아닙니다. 실제로 많은 기능을 단순히 빠르게 반복수행해서 실행하고 있으니까요. 요즘 인기가 절정인 머신러닝, 딥러닝도 마찬가지입니다. 인간과 같이 학습하고 기억하고 사고하는 게 아니라, 단순히 수많은 반복학습일 뿐이죠.. 머신러닝 학습과정 中 for문이 쓰인 사례 1. 반복문 while while 조건문 반복수행 코드 조건문이 참일 경우, 반복해서 실행하는 코드를 '반복문'이라고 합니다. 전에 배운 if 조건문과 같이, 조건문이 참일 때만 반복해서 수행합니다. 즉, 반복문의 조건은 반복하는 횟수를 제한해주는 역할을 합니다. 그래서 보통 반복할 때마다 n을 1씩 늘려가며, n <= 3과 같은 조건으로 반복횟수를 제한합니다. 만약 항상 참인 조건을 둔다면, 끊임없이 반복하겠죠? 이러한 것을 '무한루프(l

Naver Blog

[python/파이썬] 12. 리스트(list)

파이썬이 다른 언어에 비해서 배우기 쉽고, 활용도가 높은 건 다양한 자료형을 지원해주기 때문입니다. 크게 리스트(List), 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary)로 4가지가 있는데 그 중 오늘은 리스트에 대해서 배워보겠습니다. 1. 리스트(List) 리스트(list) : 목록이라는 뜻처럼, 여러 변수들을 묶어서 목록으로 만들 수 있는 자료형 관련이 있는 여러 변수들을 묶어서 편하게 쓸 수 있는 자료형이 '리스트'입니다. 예를 들어, 소수들을 모아둔 자료형을 만들고 싶은데 하나씩 변수를 지정하면 너무 난잡하겠죠? prime1 = 2 prime2 = 3 prime3 = 5 이럴 때, 소수들을 목록화해서 한 곳에 모아둘 수 있는 자료형이 '리스트'입니다. prime = [2, 3, 5 ] 리스트를 쓰면, 깔끔하게 데이터를 저장하고 쓸 수 있죠. prime[0] prime[1] prime[2] 리스트는 위와 같이, 일렬로 메모리에 저장됩니다. prime[0] =

Naver Blog

[python/파이썬] 13. 리스트 함수

저번 시간에는 리스트에서 대해서 배워봤습니다. 그런데 이것만 있었으면, 불편해서 안 썼겠죠... https://blog.naver.com/star7sss/222268831723 ( <= 리스트 관련 강좌 ) [python/파이썬] 12. 리스트(list) 파이썬이 다른 언어에 비해서 배우기 쉽고, 활용도가 높은 건 다양한 자료형을 지원해주기 때문입니다.크게... blog.naver.com 더 많은 유용한 리스트 함수들이 많아요. 오늘은 그걸 배워볼게요. 1. 리스트(List) 함수 1) len() len (리스트) 리스트의 길이를 구해주는 함수 len()함수는 리스트의 길이를 반환해주는 함수입니다. length의 약자죠. 리스트의 길이는 '리스트의 개수'를 나타냅니다. 즉, 리스트 항목 개수를 알고 싶을 때 많이 씁니다. 데이터 작업하시는 분들은 개수를 알아낼 때, 애용하시죠. 2) del del 리스트[항목] 리스트 항목 삭제 리스트의 특정 항목을 삭제할 때 사용하는 함수입니다.

Naver Blog

[python/파이썬] 14. 튜플(tuple)

파이썬에서 많이 쓰는 자료구조인 '리스트'에 대해서 배웠습니다. 이번에는 튜플에 대해서 알아볼게요. 1. 튜플(Tuple) 튜플명 = (요소1, 요소2, ...) Tuple 생성 튜플은 리스트와 비슷합니다. [] 대신에 ()를 쓰는 거예요. 다만, 튜플은 리스트처럼 요소를 추가, 삭제, 변경할 수 없습니다. 위 코드처럼 요소에 다른 값을 넣으면 에러가 뜹니다. 한 번 생성하면 수정할 수 없기 때문에, 불편하긴 하지만 반대로 중요한 정보를 저장하는 데에 유용하게 쓰일 수 있습니다. 실수로 값을 변경하면 안 되는 정보를 저장해두면, 안전하게 보관할 수 있죠. 다만 요소별 수정, 삭제, 변경만 불가능한 거예요. 이렇게 아예 새로 생성하면 덮어쓰기 되니까 조심하세요. (1) tuple / (2) string 또 주의할 점은 튜플의 원소가 '1개'일 때입니다. 튜플의 원소가 1개일 때에는 요소 끝에 , 를 붙여줘야 합니다. 그렇지 않으면 String으로 타입을 인식하니 주의하세요. cf) 요

Naver Blog

[python/파이썬] 15. 집합(Set)

파이썬에는 크게 4가지 자료구조가 있죠. List, Tuple, Set, Dictionary List, Tuple이 상대적으로 많이 쓰이는 자료구조이고 Set은 활용도가 그리 높지 않은 자료구조이니 편하게 봐주시면 되겠습니다. 1. 집합(Set) 집합명 = set([원소1, 원소2, ...]) Set 생성 수학에서의 집합과 똑같습니다. (그래서 집합을 출력하면 { } 안에 표시되죠.) 원소의 중복이 안되고, 순서도 없습니다. 따라서, 위 코드처럼 1을 중복해서 넣으면 1개만 저장됩니다. String도 마찬가지인 데, 위와 같이 중복된 글자는 제거됩니다. (대소문자는 구분하네요) 또, 순서가 없으니 인덱스로 접근도 불가능해요. 2. 집합(Set) 연산 1) 합집합 | 기호를 이용해서 합집합을 구할 수 있습니다. 제 키보드 기준으로 Enter 위 \키와 함께 있네요. [ shift + \ ] 하면 사용할 수 있어요. 수학의 합집합과 마찬가지로 두 집합을 합해주고, 중복된 원소는 제거합니

Naver Blog

[python/파이썬] 16. 딕셔너리(Dictionary)

12강부터 15강까지. 파이썬의 자료구조에 대해서 배웠습니다. List, Tuple, Set.. 그리고 마지막 Dictionary을 오늘 배워볼게요. 1. 딕셔너리(Dictionary) 딕셔너리 명 = { Key1: value1, Key2: value2, ... } 딕셔너리 생성 딕셔너리는 '사전'이라는 뜻이죠. 사전에서 단어를 찾으면 뜻이 있는 것처럼 , key와 value를 묶어놓은 자료구조를 말합니다. 이렇게 key와 value를 묶어서 저장할 수 있죠. 다른 언어에서는 hash나 pair를 구현해야하는 데, 파이썬에서는 쉽게 사용할 수 있어요. 웹을 공부하시는 분이라면 Json이라는 형식과 비슷하죠. 딕셔너리 명[key] value 반환 딕셔너리에 저장된 value는 key값으로 찾을 수 있어요. 반면 value로 key를 찾진 못해요. 물론 for문으로 통해서 일일이 value값을 확인하면 찾을 순 있지만, 바로 찾을 수 있는 기능은 없어요. 마치 사전에서 특정 '뜻'을 가

Naver Blog

[python/파이썬] 17. 함수(Function)

오늘은 드디어 '함수'를 정하는 방법을 배웁니다. 4차시에 '함수', '반환값', '파라미터' 등등.. 함수의 정의를 배웠었는 데, 기억 나시나요? https://blog.naver.com/star7sss/222199677866 ( <= 함수의 정의 관련 강의) [python/파이썬] 4. print() 함수 1. 프로그래밍 함수란?요번 시간은 간단한 프로그래밍 함수를 배워볼게요.프로그래밍 함수도 위와 같은 &... blog.naver.com 복습할 겸, 명확하게 배우고 넘어가요. 1. 함수 (Function) 중학교 때, 배웠던 함수와 똑같은 개념입니다. x 값에 3을 대입하면, 함수식에 의해서 y값이 4가 나오죠. 프로그래밍의 함수도 똑같아요. 단지 용어가 다를 뿐입니다. 프로그래밍에서 쓰는 용어로 위의 예시를 다시 써볼까요? 파라미터(x) 값에 인수 3을 대입하면, 함수에 의해서 결과값(y) 4가 반환(return)된다. 인수(argument, 아규먼트) : 함수 입력값 파라미

Naver Blog

[python/파이썬] 18. 함수 파라미터(매개변수) 기본값 및 가변인자

저번 시간에는 함수를 새로 정의하고 사용하는 방법을 알아봤습니다. 우리가 많이 사용했던 print() 역시, 같은 방법으로 정의된 함수였죠. 파이썬 표준 라이브러리 문서 https://docs.python.org/ko/3/library/functions.html#print 그런데, 잘 보면 print() 함수의 모든 파라미터를 사용하진 않죠? 주로 쓸 말(*object)만 쓰는 경우가 많으니까요. 만약 위처럼 2개의 파라미터가 필요한 함수라면, 2개의 인수를 넣어서 호출해야합니다. 그렇지 않으면, 인수가 부족하다는 Error가 뜨죠. 그런데 여태까지 저희는 print()함수의 sep, end, file, flush 인수를 넣지 않고도 잘 사용해왔습니다. 그 이유는 '기본값(default)' 설정이 되어있었기 때문인데요. 오늘 그 기본값을 배워볼게요. 1. 파라미터의 기본값 설정 def 함수명 (파라미터1 = 기본값1, 파라미터2 = 기본값2, ...) : 실행할 코드 기본값이 있는

Naver Blog

[python/파이썬] 19. 람다(lambda) 함수/표현식과 고차함수(map, reduce, filter)

이번 차시는 '람다 함수'에 대해 다룹니다. 일회성 함수? 간편 함수? 라고 생각하면 편할 거 같아요. 1. 람다(lambda) 함수 함수명 = lambda 파라미터 : 함수식 람다 함수 람다함수는 1줄로 정의할 수 있습니다. 복잡한 코드를 실행하는 함수에는 부적합하지만, 간단한 함수를 만들 때에 유용해요. 2. lambda 함수 응용 -> 고차 함수 간단한 함수 만들기에 lambda 표현식이 유용하긴 하지만..... 굳이?... 쓸 필요가 있을까 싶어요. 사실 함수 만드는 데에는 잘 사용하지 않고, map과 같은 고차 함수(high order function)를 사용하는 데 이용됩니다. 여기서 고차 함수란, '함수'를 파라미터로 사용하거나 반환값으로 사용하는 함수입니다. 예전에 map을 사용해서 list의 항목들을 int로 바꾸는 코드가 있었죠. 1) map map ( 함수, 리스트 ) map 사용법 map은 리스트 항목마다 함수를 적용해주는 고차 함수입니다. 위 코드는 numli

Naver Blog

[파이썬/python] 20. 클래스(class)

파이썬은 자바와 같이 완전 객체지향언어는 아니기 때문에, 클래스 사용이 강제되진 않습니다. 사실 클래스를 쓰지 않아도 여태까지 많은 기능을 구현해왔죠. 그럼에도 꼭 필요한 게 '클래스'입니다. 1. 객체지향 프로그래밍 '객체(object)'로 모듈(module)화해서 프로그래밍하는 기법 모듈은 '프로그램의 구성요소 또는 기능'을 뜻하며, 모듈이 모여서 프로그램이 만들어집니다. 사실 하나의 프로그램을 일련의 흐름대로 짜려면 엄청나게 힘들어요. 우리가 예제 만들듯이, 입력 => 계산 => 출력 식으로 짤 수가 없죠. 요즘은 프로그램마다 기능도 많고, 구현 난이도도 높으니까요. 그래서 생긴 게 객체지향 프로그래밍입니다. 처음부터 끝까지 다 짜려고 하지 말고 하나하나 모듈별로 구현해나가자는 취지죠. 이 때, 나누는 기준이 바로 '객체(object)'입니다. 2. 객체(Object) 객체(Object) : 어떠한 속성값과 기능을 가진 데이터 객체 정의 현실 세계의 사물이랑 비슷하다고 생각하시

Naver Blog

[python/파이썬] 21. 클래스 인스턴스(객체) 생성 및 메서드 호출

저번 시간에는 클래스를 정의하는 방법을 배웠습니다. 그런데, 관찰력이 좋으신 분은 메서드마다 self라는 파라미터가 붙은 걸 눈치채셨을 거예요. self에 대해 잠시 살펴보고, 객체 생성 및 메서드 호출방법을 배울게요. 1. self 파라미터 self : 객체 자신을 나타내는 파라미터 self는 물 '자기 자신'이라는 뜻입니다. 즉, 객체의 메모리 주소를 나타내죠. https://blog.naver.com/star7sss/222205435331 ( <= 변수와 자료형에 대한 강좌 ) [python/파이썬] 5. 변수와 자료형 저번 시간에 print를 배우면서, 함수 개념도 살짝 살펴봤습니다.이번에는 변수와 자료형을 배워볼건데, 어... blog.naver.com 5차시에서, 변수를 "프로그램에서 사용하는 데이터를 저장해주는 공간(메모리)" 라고 설명했습니다. 그리고 메모리에는 집 주소와 같이, 데이터를 저장하는 주소체계가 있습니다. 컴퓨터는 그 주소를 보고, 메모리에서 값을 찾아올

Naver Blog

[python/파이썬] 22. 클래스 생성자(Constructor)

오늘은 객체를 생성해주는 '생성자' 메서드에 대해서 배워보겠습니다. 객체명 = 클래스명() 객체 생성 우리가 여태까지 객체생성을 위해서 썼던 클래스명()도 생성자였죠. 이를 기본 생성자라고 합니다. 직접 클래스에서 정의하지않아도 사용할 수 있는 생성자죠. 이번 시간에는 우리가 직접 생성자를 만들어보고 사용해볼게요. 1. 클래스 생성자(Constructor) 정의 def __init__(self, 파라미터2, 파라미터3 . . .) : 객체 생성 시 수행할 코드 생성자 정의 생성자는 메서드이름이 무조건 '클래스명'입니다. 어차피 정해져있기 때문에, 정의할 때에는 __init__ 이라는 특이한 생성자 이름을 씁니다. 어느 클래스든 __init__이라는 이름으로 생성자를 정의하기 때문에, 코드 작성도 쉽고 가독성도 좋습니다. 아무래도 클래스마다 각기 다른 클래스명으로 생성자를 쓰다보면 조금 난잡할 수 있습니다. class Driver : def Driver(self) : print("기본

Naver Blog

[python/파이썬] 23. 클래스 상속(inheritance), 다중상속

오늘은 객체지향 프로그래밍의 꽃인 '상속'에 대해서 배워보겠습니다. 1. 상속이란? 상속(相續) : 다음 차례에 이어 주거나 이어 받음 표준국어대사전 '상속'이라는 단어는 흔히 재산을 물려받는다는 표현으로 자주 쓰이죠. 파이썬에서도 똑같습니다. 부모 클래스가 자식 클래스에게 '멤버변수'와 '메서드'를 물려주는 걸 상속이라고 합니다. 이러한 상속을 이용하면, 자주 쓰이는 멤버변수나 메서드를 쉽게 물려줄 수 있고, 클래스 간 관계를 좀 더 체계적으로 정의할 수 있어요. 그럼 어떻게 상속하는지 살펴볼까요? 2. 클래스 상속 class 자식 클래스명 ( 부모 클래스명 ) : 자식 클래스 정의 클래스 상속 상속받는 건 굉장히 쉽습니다. 그저 클래스를 정의할 때, 이름 옆에 (부모 클래스명)만 더 써주면 돼요. 예를 들어, Parent 클래스를 상속받는 Children 클래스를 만들어봤어요. 지금보시면, Children 클래스에는 lastname() 메서드가 정의되어있지 않지만 아래에서 사용하

Naver Blog

[python/파이썬] 24. 메서드 오버라이팅(Overriding)

죽음의 다이아몬드 상속 저번 시간에 상속을 배우면서, 다중상속의 문제점을 살펴봤습니다. 여러 부모 클래스가 동일한 이름의 메서드를 가지고 있을 때, 어느 것이 호출될 지 몰라서 발생하는 문제였죠. 오늘 배우는 것은 이것과 비슷하면서도 다릅니다. ㅎㅎ 부모클래스의 메서드 이름과 동일한 메서드를 자식클래스에도 정의하면 어떨까요? 그러면 자식클래스의 객체에서는 부모클래스 메서드가 호출될까요? 자식 클래스 메서드가 호출될까요? 아래에서 바로 살펴보죠. 1. 오버라이딩(Overriding) 부모클래스의 메서드를 자식클래스에서 재정의하는 것 오버라이딩의 정의 Overriding은 '재정의'라는 뜻을 가지고 있습니다. 즉, 부모클래스에서 정의한 메서드를 자식클래스에서 다시 정의하는 것을 뜻하죠 ! 오버라이딩을 하게되면, 자식클래스 객체는 '자기 자신의 클래스' 메서드를 호출합니다. 만약 부모클래스의 메서드가 호출된다면, 굳이 재정의를 할 필요가 없었겠죠.. 2. 오버라이딩의 장점 hello2라는

Naver Blog

[python/파이썬] 25. 추상클래스, 추상메서드

저번 시간에는 오버라이딩을 배웠습니다. 오버라이딩(overriding)은 "부모클래스의 메서드를 자식클래스에서 재정의"하는 거였죠. 오버라이딩을 통해서 비슷한 기능을 하는 클래스들을 상속관계로 깔끔하게 계층화할 수 있었습니다. 이번에는 오버라이딩을 강제하는 '추상클래스', '추상메서드'에 대해서 알아볼게요. // 해당 강의는 오버라이딩에 대한 이해가 선행되어야 합니다. 부족하신 분들은 아래의 글을 참고해주세요. https://blog.naver.com/star7sss/222290939578 ( <= 메서드 오버라이딩 관련 강의) [python/파이썬] 24. 메서드 오버라이팅(Overriding) 저번 시간에 상속을 배우면서, 다중상속의 문제점을 살펴봤습니다. 여러 부모 클래스가 동일한 이름의 메서... blog.naver.com 1. 추상 클래스 (Abstract class)란? 자식클래스에게 일정한 형식(Form)을 상속하는 부모 클래스 추상클래스는 '상속'만을 위한 클래스입니다

Naver Blog

[python/파이썬] 26. 예외 처리(Try, except)

소프트웨어 공학에서는 프로그램 개발에 필요한 비용은 개발 60%, 테스트 40%라고 합니다. 하지만 이는 디버깅과 예외 처리를 잘 했을 때의 경우고, 이를 잘 하지 못하면 테스트 비용이 개발비용을 넘어서는 경우가 태반입니다. 이처럼, 디버깅과 예외 처리를 잘하는 게 중요합니다. 디버깅은 '오류(Error)를 제거'하는 과정인데, 예외 처리는 무엇일까요? 1. 예외 처리란? 일어날 것 같은 오류를 미리 예상해서, 오류를 대처하는 것 오류가 발생해도, '예외로 처리'하고 정상적으로 작동시키는 방법을 말합니다. print(a/b) 예를 들어, 간단한 코드인 print(a/b)에서는 어떤 오류가 발생할 수 있을까요? 정답은 분모가 0일 경우. 이런 경우에는 ZeroDivsionError가 발생하므로, 해당 오류가 발생하지 않도록 예외 처리해 줘야 합니다. 어떻게 하면 될까요? 우리는 이미 방법을 알고 있습니다. 한 번 생각해 보세요. if문을 이용하면 됩니다. b = 0일 때는 오류메시지를

Naver Blog

[python/파이썬] 27. 고급 예외 처리 / 예외 발생시키기(raise)

이전 시간에는 예외 처리의 개념과 함께, 예외 클래스의 종류, try - except문에 대해서 배웠습니다. 오늘은 지난 시간에 배운 걸 바탕으로 좀 더 세부적인 예외 처리 기법을 알아볼게요. 1. try - except - else - finally문 try: 오류가 날 수 있는 코드 except [발생오류 [as 오류 메시지 변수]]: 오류 발생 시, 실행할 코드 [else:] 에러가 발생하지 않았을 때 실행되는 코드 [finally:] 항상 실행되는 코드 []안에 있는 것들은 생략 가능 try - except문 외에도, else와 finally를 추가적으로 사용하여 예외 처리를 할 수 있습니다. 1) 오류가 없을 경우 try문 실행 -> else문 실행 -> finally문 실행 2) 오류가 있을 경우 except문 실행 -> finally문 실행 이렇게 되는 거죠. finally문은 항상 실행되는 코드이기 때문에, 어느 상황에서든 꼭 실행되어야 하는 코드를 적으시면 됩니다.

Naver Blog

[python/파이썬] 28. 사용자 정의 예외 클래스

예외 처리의 마지막 강좌입니다. 26강에서 오류의 종류를 예외 클래스로 정의했다고 했었죠? 그렇다면, 예외 클래스도 상속받을 수 있을까요? 당연히 있습니다. 오늘은 예외 클래스를 상속받아서 자신만의 예외 클래스를 정의해보는 걸 배워볼게요. // 예외 처리에 대해서 모르신다면, 아래 링크를 참조해 주세요. https://blog.naver.com/star7sss/222444006350 ( <= 26강 예외 처리 ) [python/파이썬] 26. 예외 처리(Try, except) 소프트웨어 공학에서는 프로그램 개발에 필요한 비용은 개발 60%, 테스트 40%라고 합니다. 하지만 이는 디... blog.naver.com 1. 파이썬 예외 클래스 예외클래스 계층도 https://docs.python.org/3/library/exceptions.html 파이썬 공식 문서에 따르면, 위와 같은 예외 클래스들이 계층(상속) 관계를 이루고 있습니다. 우리가 앞서 배웠던 예외 클래스들도 몇몇 보이죠

Naver Blog

[python/파이썬] 29. 파일 입출력 (텍스트/바이너리 파일)

지난 시간까지 예외 처리에 대해 배웠습니다. 이번 시간에는 예외 처리와 단짝인 파일 입출력에 대해서 배워볼게요. 프로그래밍을 배울 때에는 주로 알고리즘 문제풀이나 간단한 구현만 하다 보니, 파일 입출력을 경외시하는 경향이 있어요. 그런데 파일 입출력은 어느 프로그램에서나 꼭 필요한 중요한 기능입니다. 1. 파일(File) 0과 1로 된 데이터 + 확장자(해석방식) file 파일은 데이터와 그 데이터를 해석하는 방식인 '확장자'로 구성되어 있습니다. 확장자는 우리가 익히 알고 있는 txt(텍스트 파일), mp3(음악 파일), jpg(이미지 파일), mp4(동영상 파일), py(파이썬 파일) 등이 있죠. 이들은 모두 0과 1로 된 데이터를 저장하고 있으며, 단지 확장자에 따라서 다르게 해석할 뿐입니다. 예를 들어, 파이썬 배너는 PNG 이미지 파일입니다. 이걸 만약 txt파일로 바꿔본다면 어떨까요? 다음과 같이 이상하게 해석될 수도 있고 아예 호환이 안되는 경우도 있습니다. 2. 파일

Naver Blog

[AI/인공지능] 1. AI산업의 전망과 취업현황

geralt, 출처 Pixabay 앞으로 AI가 세상을 바꾼다. AI가 인간을 대체하는 시대가 도래할 것이다. 등등.. AI에 대한 장미빛 이야기가 세간에 돌고 있습니다. 실제로 AI. 인공지능 연구들이 불과 몇 년만에 뛰어난 성과를 내고 있는 것은 사실입니다. 그리고 여러분이 체감하시는 것보다도 더 좋은 성능을 가지고 있는 것도 사실입니다. 지금 AI기술로도 자율주행이 가능하고, 인공지능 의사/변호사/판사도 좋은 성능을 보이고 있죠. 최근에는 MBN에서 AI앵커를 사용하는 것도 큰 이슈가 되었습니다. (관련 기사 : https://www.chosun.com/national/weekend/2020/10/10/MSWVZVODFFGOJKWT2YUPXXWZUU/) 김주하 AI 등장하고, 27세 메인앵커는 사표…아나운서, 어디로 가나 최근 지상파에서 활동하는 한 여성 아나운서의 퇴사 소식이 화제가 됐다. 서른이 되지 않은 젊은 나이에 지상파인 SBS 메인 뉴스 진행을 하는 김민형(27)

Naver Blog

[AI/인공지능] 2. 인공지능이란? (Artificial Intelligence)

인공지능, AI, 머신러닝, 기계학습, 딥러닝, 강화학습 등 세간에서는 다양한 명칭으로 불리어지고 있습니다. 'AI'라는 단어는 기술용어보다도 마케팅용어에 더 가까울 정도로, 여기저기 남용되고 있어서 정확한 의미를 가름하기 어려운 거 같아요. 이번 시간에는 인공지능과 그와 비슷한 단어들에 대해 알아보겠습니다. 1. 인공지능(AI)란? 인공적으로 만들어진 지능 말 그대로 사람이 인공적으로 만든 지능을 말합니다. 하지만 '지능'이라는 표현에서 모호함이 있죠. Intelligence의 어원을 찾아보면, inter(사이에서)와 legere(고르다)라는 라틴어의 합성어라고 합니다. 즉, "여러 개 중 적절한 것을 선택"한다는 의미가 내포되어있죠. 가능한 모든 선택지를 고려하여 최적의 선택을 할 수 있는 능력을 '지능'이라고 정의한다면, 우리는 이런 것에 최적화된 존재를 떠올릴 수 있습니다. 바로 '컴퓨터'죠. 여러 개의 선택지를 빠르게 탐색하고, 비교해서 최적의 안을 내놓는 컴퓨터(프로그램)

Naver Blog

[AI/인공지능] 3. AI의 역사(발전과정 및 현재상황)

이전 강의에서는 지능과 인공지능(AI)의 정의에 대해서 알아봤습니다. 이어서 AI의 역사에 대해서도 알아보겠습니다. 어느 학문이든 역사가 있기 마련이며, 발전과정을 살펴보는 것은 학문을 이해하는 데에 도움이 됩니다. 특히 AI의 역사의 시초는 1940여년으로 80여년 밖에 되지 않는 짧은 역사를 갖고 있습니다. 아래에서 AI의 발전과정과 한계점을 시대별로 살펴보겠습니다. 1. 인공지능의 시초 계산기계와 지능 - 앨런 튜링 튜링테스트, 인공지능의 척도 제 2차 세계대전, 독일의 애니그마 암호를 해독하는 기계를 만든 사람으로 유명한 '앨런 튜링'은 1950년대에 인공지능에 대한 논문을 투고합니다. 컴퓨터 계산을 통해서 구현한 지능을 정의하고, 평가하는 방법인 '튜링 테스트'는 사람과의 대화를 통해서 AI를 판별합니다. 1) 3명의 참가자가 모방게임(imitation game)을 진행합니다. - A: 남자 참가자, B: 여자 참가자, C: 심사원 2) 첫 번째 단계. A, B의 성별 맞추

Naver Blog

[AI/머신러닝] 4. 머신러닝(Machine Learning, 기계학습)

[AI/인공지능] 2. 인공지능이란? (Artificial Intelligence) 中 앞선 2강에서 AI와 머신러닝, 딥러닝, 강화학습에 대해서 살펴봤습니다. 오늘은 그중 머신러닝에 대해서 자세히 다뤄보겠습니다. 머신러닝은 말 그대로 '기계학습', '기계를 학습시켜서 문제 해결방안을 찾아내는 방법론'입니다. 머신러닝의 종류는 크게 3가지로, '지도학습', '비지도학습', '강화학습'이 있습니다. 1. 지도학습 지도학습(Supervised learning): 정답값이 있는 데이터셋(labeled data set)을 통해 학습 마치 선생님이 옆에서 틀린 것을 지도해 주는 것처럼, 기계에게 옳고 틀림을 지도해 주는 방식입니다. 컴퓨터는 많은 데이터에 대해 추정 값을 계산하고, 해당 데이터의 정답(label)을 맞춰봅니다. 정답이 맞는다면 해당 계산법에 긍정적인 가중치를 부여하고, 틀리다면 부정적인 가중치를 부여하며 계산식을 점점 세밀하게 고쳐나가죠. 회귀(Regression): 연속성

Naver Blog

[AI/머신러닝] 5. 머신러닝 개발환경 구성(아나콘다 파이썬, 주피터 노트북)

이번 강좌는 간단한 머신러닝 실습도 예제로 다룰 예정입니다. 만약, 아나콘다 파이썬 - 주피터 노트북을 이미 설치되어있으시다면 다음 강좌로 바로 이동하셔도 좋습니다. 또, 실습이 앞으로의 강좌의 필수는 아닙니다. AI/머신러닝에 대한 개념과 이해만 하고 싶으신 분들은 굳이 실습을 따라하지 않으셔도 괜찮습니다. 한편, 실습을 같이 하실 분들은 파이썬에 대한 이해가 필요합니다. 만약 파이썬에 대한 지식이 없으시다면, 제 게시판 중 [IT/프로그래밍 - 파이썬(Python)]에서 간단하게 배우실 수 있습니다. 적어도 파이썬 19강까지의 내용은 숙지해주세요. 1. 파이썬 환경구성 다음부터는 파이썬 실습이 있습니다. 아래의 링크를 따라 프로그램을 설치해주세요! https://blog.naver.com/star7sss/222197690463 ( <= 파이썬 설치하는 방법 ) [python/파이썬] 2. 파이썬 설치하기 (아나콘다) 0. 웹 브라우저 인터프리터 https://www.tutoria

Naver Blog

[AI/Expert System] 6. 전문가 시스템

지도학습을 다뤄보기 전에, 1980년대부터 큰 인기를 얻어서 지금까지 사용되고 있는 전문가 시스템에 대해서 먼저 다뤄보겠습니다. 지도학습부터는 예제 난이도가 어렵기 때문에, 꼭 파이썬 공부가 선행되어 있어야 합니다. (개념만 공부하실 분들은 괜찮습니다.) 제 블로그의 [IT/프로그래밍 - 파이썬(Python)]에서 적어도 파이썬 19강까지의 내용은 숙지해 주세요. 1. 전문가 시스템(Expert System) 전문가 시스템은 '기호주의'이자 '지식 기반'의 'Rule-based' AI라고 3강에서 배웠습니다. 전문가로부터 공인된 지식을 [if-else] 조건문으로 나열해서 규칙화시킨 프로그램이죠. 어쩌면 우리가 아는 AI와는 동떨어진 프로그램일 수도 모르겠습니다. 하지만 복잡하지 않고 애매하지 않은 문제에 대해서는 누구보다도 높은 성능을 보여주는 AI입니다. 지금도 많은 회사에서 전문가 시스템을 알게 모르게 사용하고 있습니다. 굳이 머신러닝과 딥러닝을 쓰지 않아도 되는 문제를 많은

Naver Blog

[AI/머신러닝] 7. 지도학습(Supervised Learning)

4강에서 머신러닝에 대해서 배웠습니다. 머신러닝의 큰 3갈래(지도학습, 비지도학습, 강화학습) 중 이번 시간에는 지도학습을 다뤄볼게요. 1. 지도학습 지도학습(Supervised learning): 정답값이 있는 데이터셋(labeled data set)을 통해 학습 지도학습의 가장 큰 특징은 '정답값'이 있는 데이터셋을 사용한다는 겁니다. 예를 들어, 이미지 속 사물을 분류하는 지도학습이라면 [사진 - 물체이름] 으로 이미 짝지어진 데이터가 필요합니다. 기계번역이라면 [ English - 한국어 ] 와 같이 번역하려는 단어의 뜻이 필요하죠. 출처: https://m.moneys.mt.co.kr/articleAmp.html?no=2021072514418043265 (머니s 뉴스) 2021 도쿄올림픽에서 스페인 태권도 선수가 한글로 써진 검은띠를 착용해서 화제가 된 적이 있었습니다. [ 기차 하드, 꿈 큰 ] 은 대체 뭔 뜻이었을까요? 영어로 직역해보면 [ Train hard, Drea

Naver Blog

(초급)다항계산기

여태까지 2개의 변수만 입력받은 후, 계산하는 형식의 계산기만 만들어왔었죠? 솔직히 말해서 요번 코딩은 매우 쉽습니다. 그저 C강의시간때 했던 계산기에 변수 몇 개만 더 선언하고 입력받으면 되니까요. 1. 기본세팅 2. 코딩 printf()로 일단 설명해주시고요. 이번에는 변수 3개를 선언하고 3개를 입력해봤습니다. 제가 알기로 Scanf("%d", "%d", "%d", &a, &b, &c); 해도 되는 걸로 알고 있는 데, 오류가 발생하더라고요... 그래서 저는 나누어 썼습니다. 자 연산한 값을 출력해야겠죠? 최종 완성된 코드모습입니다. 3. 실행 6. 변수와 자료형 http://blog.naver.com/star7sss/220626944677 6. 변수와 자료형 변수 : 프로그램 내부에서 사용하는 데이터를 저장해주는 메모리공간 자료형 : 데이터를 저장하는 공간(단,... blog.naver.com 이 강의를 보셨으면 알겠지만, 너무 큰 숫자를 넣으시면 제대로 된 연산값이 나오지

Naver Blog

퀴즈 프로그램

요번에는 퀴즈 프로그램을 만들어봤어요. (사실..누군가의 제작의뢰를 받긴 했지만..) 음... 한창 제가 미궁맵이라는 문제푸는 스타크래프트 유즈맵을 만들 때..... 흥미가 있어 만들어봤던 프로그램이기도 하고요.. ㅋ 물론 그 때 만들었던 프로그램 소스가 남아있지 않긴 하지만.... 백문이 불여일견 1. 기본세팅 2. 코딩 음... 문제를 미궁문제중에서 낼까? 라고 생각도 해봤지만... 예제인 만큼 쉬운 문제로 냈습니다. 음.. \n.. 제어문자인 줄바꿈문자를 이용해서 보기의 출력내용을 한 줄로 정리했죠. ... 그리고 역시 답을 입력받기 위한 scanf가 쓰였고요. 이제 9강 때 배운 조건문을 활용할 차례입니다. http://blog.naver.com/star7sss/220647151772 9. 조건문 드디어 조조조조조조조....건문을 배우네요. 조건문하고 바로 다음 시간에 배울 반복문을 배우면...... 정... blog.naver.com 기억이 안 나신다면 한번 다시 보고 오

Naver Blog

직각삼각형의 넓이와 둘레 계산기

지난 번 함수강의때 예제롤 올리려다 말았던 직각삼각형의 넓이와 둘레 계산기입니다. http://blog.naver.com/star7sss/220659224585 12. 함수 printf() 함수.. scanf()함수... 등등 여태까지 만들어진 함수들만 썼었죠? 이제는 함수를 만드실 수 있어... blog.naver.com 본 게시글은 위 내용이 선행되어 있어야 합니다. 백문이 불여일견 자 빨리 만들어보죠. 1. 기본세팅 본래는 #include <stdio.h>만 썼죠? 근데 우리는 여기에서 sqrt()라는 루트값을 표현해주는 함수를 써야하기 때문에.. 새로운 헤더파일을 로드해야되요. 여기에서 헤더파일이란, XXx.h. 처럼 확장자가 h인 파일을 헤더파일이라고해요. 이 헤더파일안에는 각종 함수의 정보가 담겨있죠. <stdio.h>에는 우리가 잘 쓰는 printf(), scanf()같은 함수가 들어있어요. #include 는 그런 헤더파일을 로드하는 역할을 하죠. 단, 함수안에서 쓰

Naver Blog

2진수 계산기

본 게시글은 11. 기타제어문 강의까지 이수하셔야 이해가 가능합니다. http://blog.naver.com/star7sss/220658413771 11. 기타 제어문 원래 오늘은 함수로 바로 포스팅하려고 했었는 데... 아무래도 이걸 안하고 가기에는 약간 무리가 있어.. ... blog.naver.com 2진수 계산기입니다......... 실행파일(.exe)도 올려놓았으니... 계산기가 필요하신 분들은 첨부파일에서 [2진수 계산기.exe]를 다운받으시면 되겠습니다.... 오늘은 쫌 코드가 복잡하고 어려워요..... 저도 코드짜는 데 조금 애 좀 먹었거든요...(for문이 말을 잘 안들어서..) 자.... 그럼 본격적인 리뷰에 앞서............ Switch - case 문을 배우고 갈게요. Switch(변수) { case '변수 값1' : 행위 break; case '변수 값2' : ... ... } 이게 기본 형식입니다...... swithch(변수)에서... scanf를

Naver Blog

시프트 연산자

컴퓨터는 비트체제로 되어있는 거 아시죠. 그 이유가 컴퓨터는 2진수체계로 이루어져있고, 1bit에 0 또는 1의 데이터를 담을 수 있기 때문입니다.(물리적 측면에선 그 bit에 5V가 가해져있으면 1, 0V이면 0) 하지만.... 여러분도 아시다시피 2진수로 되어있는 걸 바로 읽기는 힘들죠. 그래서 등장한 게 16진수. 우리가 만원을 10000 이라고 안쓰고 10,000이라고 ,(쉼표)표시를 해주는 이유와 같이 16진수도 읽기 쉽게 하기 위해서 만든 쉼표역할이라고 보시면 됩니다. 즉, 16진수는 4개씩 4개씩 끊어읽는 이진수라고 보시면되요. 음.... 2진수는 0~1 = 2개로 구성되어있고, 10진수는 0~9까지 10개로 구성되어있죠. 그래서 16진수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F 로......, 16개로 구성되어있죠. 10 대신에 A라고 11 대신에 B라고 표기한 것입니다.(두 자리가 아닌 한자리로 표현하기 위해서..... 마

Naver Blog

오버플로우(Overflow)와 언더플로우(underflow)

요번에는 오버플로우와 언더플로우에 대해서 알아보죠. 오버플로우 : 메모리에 표현 범위를 초과하는 수의 값을 저장하는 경우 언더 플로우 : 메모리가 표현할 수 있는 수보다 작은 수를 저장하는 경우 http://blog.naver.com/star7sss/220626944677 6. 변수와 자료형 변수 : 프로그램 내부에서 사용하는 데이터를 저장해주는 메모리공간 자료형 : 데이터를 저장하는 공간(단,... blog.naver.com 6강에서도 잠시 언급은 했었지만.... 자료형에는 데이터를 표현할 수 있는 범위가 있습니다. 자료형 크기 데이터 종류 변수의 범위 char 1byte 한 문자 데이터 -128~127 int 4byte 정수형 데이터 -2147483648~2147483647 short 2byte 정수형 데이터 -32768~32767 long 4byte 정수형 데이터 -2147483648~2147483647 float 4byte 소 수 -2147483648~2147483647 do

Naver Blog

[고급] 세로막대그래프 만들기

반복문을 배울 때, 가로막대그래프를 예제로 넣어두는 책들이 몇몇 있더라고요. 그에 비해서 이 세로막대그래프는 머리 좀 쓰셔야 할 거예요. Q. 위에 예시와 같이 5개의 숫자를 입력받고 세로 막대 그래프를 출력하시오. 많이들 푸셨는 지 모르겠네요 ㅋ 저 문제에 맞는 많은 코드들이 있겠지만, 그 중에서 제 코드를 설명해드릴게요. 백문이 불여일견 1. 입력받기 저는 배열을 선언하고 숫자 5개를 배열에다 입력받았어요. 그냥 문자 a,b,c,d,e로 선언하고 받으셔도 문제되실 건 없어요 ㅎ 그리고 반복문을 통해 5개 입력받고요. ㅎ 배열을 쓰면 이런 데에서 이점이 있어요. 2. 최대값 찾기 이 문제는 최대값을 찾아야 할 거예요. 그래야 세로막대그래프의 세로길이를 파악할 수 있으니까요. 가로막대그래프와 달리 세로길이를 파악해서 공백을 잘 조정해줘야하죠. 그래서 저는 반복문을 통해서 숫자들을 하나하나 비교하면서 큰 수를 찾아냈어요. 3. 세로막대그래프 출력내용 작성 코드가 길죠... 하지만 잘

Naver Blog

행렬의 계산

Q. . 이 행렬의 결과값을 출력하시오. 정답풀이 이 행렬의 연산을 기억하시나요? 이 곱의 결과를 C행렬이라고 할 때, c(11) = a(11)b(11) + a(12)b(21) c(12) = a(11)b(12) + a(12)b(22) c(21) = a(21)b(11) + a(22)b(21) c(22) = a(21)b(12) + a(22)b(22) 이겠죠? 뭔가 규칙이 보이시나요? 물론 3X3행렬이야.. 노가다 해서 구할 수도 있지만.. 우리는 프로그래밍을 하는 프로그래머잖아요 ㅎ 그러니 규칙을 살펴보는 게 중요하죠. 그게 알고리즘을 짜는 첫 단계니까요. c(11) = a(11)b(11) +//1증가 a(12)b(21) //1증가 c(12) = a(11)b(12) +//1증가 a(12)b(22) //1초기화 //1증가 c(21) = a(21)b(11) +//1증가 a(22)b(21) //1증가 c(22) = a(21)b(12) +//1증가 a(22)b(22) 알고리즘은 이렇답니다. 아

Naver Blog

포인터 연산[중급] - 포인터와 증감연산자(++, --)

프로그래밍 응용 포인터 연산[중급] - 포인터와 증감연산자(++, --) jangThang 2016. 7. 19. 18:47 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220766048792 15. 포인터의 활용 - 포인터의 연산 1 전 포스팅에서 포인터는 주소라고 했었죠? 마치 주소형식이 정해져있듯, 포인터도 4byte로 크기가 고정되어... blog.naver.com 지난 번 C언어 포인터의 연산에 이어 좀 더 심화된 내용을 배워보려합니다. 만약 포인터의 연산에 대해 익숙하지 않으신 분들은 위에 링크를 따라 3분도 안걸리니 복습하고 와주세요. 오늘 배울 건, 포인터 선언에도 쓰이는 *(간접참조 연산자)와 ++, --(증감 연산자)의 우선순위에 따라 바뀌는 포인터의 연산을 배워보려합니다. 말이 어렵죠? ㅋㅋ 간단하게 도식화해서 보여드릴게요. *ptr++; : ptr이 가리키는 위치(포인터)를 1만큼 증가시킨다. (*ptr)++; : ptr가 가

Naver Blog

난수생성함수(rand, srand), 랜덤으로 수를 뽑아보자

프로그래밍 응용 난수생성함수(rand, srand), 랜덤으로 수를 뽑아보자 jangThang 2016. 8. 15. 22:27 이웃추가 본문 기타 기능 rand() stdlib.h에 존재하는 함수로, 랜덤으로 값을 지정한다.(0~32367) 허나, 한 프로그램에서 랜덤으로 지정한 값은 실행할 때마다 같게 나오는 단점이 있다. srand() 위와같은 단점을 방지하기 위해 나온 함수. rand의 난수를 섞어주는 역할을 합니다.. 그런데 매번 똑같이 섞어서 꺼내면 도로아미타불이겠죠..... srand((unsigned)time(NULL)); 그래서 계속 변하는 시간을 변수로 섞어줍니다. 이를 사용하기 위해 time.h를 불러오셔야 합니다. 백문이 불여일견 1. 기본코드 ( C언어에서도 작동하지만, C++로 작성하였습니다.) 각각의 헤더파일을 불러오고, 네임스페이스를 지정해줍니다. 2. rand, srand 사용 srand((unsigned)time(NULL)); 를 사용해서 랜덤으로

Naver Blog

팩토리얼 계산기 - 재귀함수

프로그래밍 응용 팩토리얼 계산기 - 재귀함수 jangThang 2016. 8. 17. 8:50 이웃추가 본문 기타 기능 팩토리얼..... 아시죠? ㅋㅋㅋㅋㅋㅋㅋㅋ !... 느낌표가 수학으로 가면 팩토리얼이라는 기호로 쓰이죠. 3! = 3 X 2 X 1 , 5! = 5 X 4 X 3 X 2 X 1 와 같이 연산합니다. 허나 0!는 특별히 1로 약속했습니다. 백문이 불여일견 1. 기본코드 팩토리얼은 조금만 숫자가 커져도... 어마어마하게 큰 숫자가 되므로 long long 이라는 8byte 자료형을 썼습니다. (그런데도 22만 넘어가도 오버플로우되더군요..) ※오버플로우 : 저장공간에 비해 수가 너무 커서 비이상적 결과값을 내놓는 현상 2. main while(1)로 무한루트에 빠지게 만들었습니다. (참고로 1은 참을 뜻합니다... 0은 거짓이죠.) 그대신 break문을 이용해서 반복문을 빠져나올 수 있게 했습니다. 3. 재귀함수 함수 내용 안에 자신의 함수를 사용하는 것을 재귀함수라

Naver Blog

피보나치수열 - 메모이제이션(동적계획법)

프로그래밍 응용 피보나치수열 - 메모이제이션(동적계획법) jangThang 2016. 8. 17. 8:50 이웃추가 본문 기타 기능 1 - 1 - 2 - 3 - 5 - 8 - 13 - 21 - 34 . . . . . 어떤 규칙으로 나아가고 있는 지 감이 오시나요? 너무나도 유명한 수열이라 이미 알고 계신 분들이 많을 거라 생각됩니다. 2(3항) = 1(1항) + 1(1항) 3(4항) = 1(2항) + 2(3항) 5(5항) = 2(3항) + 3(4항) . . . N항 = N-1항 + N-2항 이런 꼴로 나아가는 수열입니다.. 즉 전전항과 전항을 합한 것이 다음 항이 되는거죠. 이 수열을 메모이제이션 이라는 기법을 써서 구해봅시다. 백문이 불여일견 1. 기본코드 피보나치 수열은 갈수록 수가 엄청나게 커지기 때문에, long long 이라는 8byte짜리 큰 자료형을 썼습니다. 또한 메모이제이션 => 즉, 메모를 해서 중복되는 연산을 줄인다는 건데요. 메모를 하기위한 배열 Cache를

Naver Blog

두 문자열 합치기

프로그래밍 응용 두 문자열 합치기 jangThang 2016. 8. 19. 22:05 이웃추가 본문 기타 기능 타 언어에 비해, C/C++이 문자열과 관련해서 약점을 보이는 게 사실입니다. 그럼에도 배열과 포인터를 잘 이용하면 문자열도 다룰 수 있습니다. 오늘은 배열을 사용해서 문자열을 합친 것을 보여드릴게요. 백문이 불여일견 1. 기본코드 2. 배열선언 물론 cin >> a; 와 같은 방법으로 문자열을 입력받을 수도 있었지만, 그냥 임의로 문자열을 지정했습니다. 3. 반복문을 이용한 문자열 병합 \0은 제어문자(이스케이프 시퀸스)로 문자열의 끝을 나타내줍니다. 따라서 모든 문자열의 끝에는 \0이 자리잡고 있죠. (물론, 출력시에는 보이지 않습니다.) 그 점을 이용해서 첫 번째 반복문을 통해 a 문자열의 끝을 찾아냅니다. 그 다음에 두 번째 반복문을 통해서 a문자열 끝부터 b문자열을 하나하나 대입시켜줍니다. 그리고 문자열 뒤에 \0를 넣어주지 않으면 컴퓨터가 문자열 끝을 인식하지

Naver Blog

Bitset를 이용한 이진수 변환/출력

프로그래밍 응용 Bitset를 이용한 이진수 변환/출력 jangThang 2016. 8. 20. 18:11 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220665791204 2진수 계산기 본 게시글은 11. 기타제어문 강의까지 이수하셔야 이해가 가능합니다. http://blog.naver.com/star7sss/220... blog.naver.com 지난 포스트에 나머지연산자인 %를 이용해서 10진수를 2진수로 바꾸는 프로그램을 만든 적이 있습니다. 요번에는 bitset를 이용해서 보다 간편하게 2진수 변환을 해보려합니다. 백문이 불여일견 1. 기본코드 본 프로그램은 C++로 작성되었습니다. bitset를 사용하기 위해 #include <bitset>를 해줍니다. 2. bitset bitset<출력 자릿수>(변수) bitset의 사용법입니다. 최대 출력자릿수는 당연히 자료형에 따라 달라집니다. 예를 들어, char형은 1byte = 8bit로

Naver Blog

삼항연산자(?)

프로그래밍 응용 삼항연산자(?) jangThang 2016. 8. 20. 20:02 이웃추가 본문 기타 기능 C/C++ 에서만 지원되는 연산자죠. 이 연산자를 잘 쓰면 비교적 매우 간단하게 프로그램을 짤 수 있습니다. 가끔 다른 사람들에 비해 매우 줄 수가 적은 코딩을 볼 수 있는 데, 대부분 삼항연산자 덕분인 경우가 많습니다. (같은 기능을 하는 프로그램을 얼마나 짧게 작성했는 지는... 프로그래머들 사이에서 자존심(?)싸움이죠.. ) (물론, 효율 좋고 가독성 좋은 코드가 좋은 코드지만요,,,) 조건 ? 참일 때의 결과 : 거짓일 때의 결과; 삼항연산자의 사용법입니다. 예제로 자세히 살펴보죠. 백문이 불여일견 1. 기본코드 본 예제는 C++로 작성했습니다. 2. 삼항연산자 본 프로그램은 대수 비교 프로그램입니다. 삼항연산자를 쓰지 않았으면, if(a>b) cout << "큰 수는 " << a << " 입니다." << endl; else if(a<b) cout << "큰 수는 "

Naver Blog

구조체 배열 / strcpy

프로그래밍 응용 구조체 배열 / strcpy jangThang 2016. 8. 22. 15:57 이웃추가 본문 기타 기능 전 시간에 구조체도 하나의 (사용자 지정) 자료형이라고 말씀 드렸죠? 따라서 새로 만든 자료형으로 배열도 선언하여 사용할 수 있습니다. 사용방법은 struct 구조체 이름[배열항목 수]; 입니다. typedef를 이용하셔서 구조체이름만으로 바꾸셨다면 struct를 빼고 사용할 수 있겠죠? 백문이 불여일견 1. 기본코드 strcpy라는 함수를 사용하기 위해 string 를 불러왔습니다. 2. 구조체 선언 학생정보를 다루는 구조체를 정의했습니다. typedef를 사용해서 구조체 이름도 간단히 바꿨죠. 3. 구조체의 초기화 이렇게 구조체 배열을 선언하면서 초기화도 시킬 수 있어요. 일반 배열의 초기화와 유사하죠? 4. 구조체 항목 / strcpy() 하지만 구조체가 선언한 뒤에 문자열을 넣을려면 strcpy()를 사용하셔야 해요. 이미 할당된 배열에는 문자열을 바로

Naver Blog

오름(내림)차순 정렬 프로그래밍 / 버블정렬(Bubble Sort)

프로그래밍 응용 오름(내림)차순 정렬 프로그래밍 / 버블정렬(Bubble Sort) jangThang 2016. 8. 22. 21:14 이웃추가 본문 기타 기능 정렬 프로그래밍(알고리즘) 중에서 제일 쉬운 알고리즘입니다. 저도 오름차순 정렬 프로그램을 짤 때, "이야.. 이 알고리즘 잘 짰다." 하고 생각하며 짰던 게.. 알고보니 버블정렬 알고리즘 이더군요...... ( 결국... 이미 있는 알고리즘을 짜고서는 좋아한....) 알고리즘의 기본구조는 위 그림과 같습니다. 위와 같은 배열에서 2개씩 비교하면서 큰 걸 오른쪽으로 옮기는 거죠.(오름차순 정렬일 경우) 이걸 n-1번 하면 어떤 경우라도 오름차순으로 정렬될 수 밖에 없겠죠? 그런데, 왜 버블(거품)정렬이라고 이름이 붙여졌을까요? 그 이유는.. 2개씩 비교한 후, 큰 걸(또는 작은 걸) 비눗방울처럼 위로 올리는 식의 방법을 쓴다고.....(..?) 해서 붙여졌습니다. <버블정렬 - 오름차순의 예> 이 알고리즘을 써서 만든 오름차

Naver Blog

문자열 병합 - string 이용

프로그래밍 응용 문자열 병합 - string 이용 jangThang 2016. 8. 22. 22:25 이웃추가 본문 기타 기능 http://blog.naver.com/star7sss/220791884146 두 문자열 합치기 타 언어에 비해, C/C++이 문자열과 관련해서 약점을 보이는 게 사실입니다. 그럼에도 배열과 포인터를 잘... blog.naver.com 저번 시간에 배열을 이용해서 두 문자열을 합쳤죠? 이번에는 더 편리한 방법입니다. string을 이용한 것이지요. 백문이 불여일견 1. 기본코드 string이라는 특별한 문자열 자료형을 이용하기 위해 #include <string>를 해줍니다. 2. string string을 이용해서 변수 name, adress를 선언합니다. 3. string을 이용한 병합 blog라는 새로운 변수를 선언하고 name + " = " + adress 이런 식으로 초기화했습니다. 변수(또는 "문자열") + 변수(또는 "문자열") + ... 이런

Naver Blog

C++ 함수의 오버로딩(Over loading)

프로그래밍 응용 C++ 함수의 오버로딩(Over loading) jangThang 2016. 9. 4. 13:50 이웃추가 본문 기타 기능 C++에서 추가된 기능입니다. 함수의 오버로딩(Over loading) 똑같은 함수명이지만, 매개변수(파라미터)의 갯수 등을 다르게 해서 여러 번 함수를 정의함 별로 어렵지 않은 내용이죠? 바로 예제로 살펴볼게요. 백문이 불여일견 1. 기본코드 using namespace std; 를 써서 std 를 생략했습니다. 또, 함수의 프로토타입은 써주셔도, 안 써주셔도 됩니다. (만약, 함수정의를 main보다도 뒤에 하신다면 써주셔야 합니다.) 2. 함수의 오버로딩 보시는 것과 같이 sum이라는 동일한 함수를 매개변수의 갯수만 다르게 해서 정의했습니다. 3. main() 이렇게 하면 더하는 숫자의 갯수가 2개든, 3개든, 4개든 sum이라는 동일한 함수를 통해 쓸 수 있죠. 4. 전체코드 5. 출력 함수의 오버로딩.txt 내 컴퓨터 저장 네이버 클라우

Naver Blog

C++ 함수의 기본 매개변수(기본값 설정)

프로그래밍 응용 C++ 함수의 기본 매개변수(기본값 설정) jangThang 2016. 9. 4. 15:25 이웃추가 본문 기타 기능 C++에서는 C와 다르게 함수의 기본 매개변수를 설정할 수 있습니다. 일종의 기본값(디폴트, default)을 설정할 수 있는 거죠. 예제로 바로 보시죠 ㅎㅎ.. 백문이 불여일견 1. 기본코드 2. 함수 정의 / 함수의 기본 매개변수 설정 각 매개변수들의 기본값을 0으로 설정했어요. 그러면 매개변수 중에 일부만 값을 변경해서 사용해도 0이니 문제가 없겠죠? 3. main() 기본값을 0으로 해줬기 때문에, 저렇게 일부 매개변수만 입력해줘도 됩니다. sum(1, 2) 라고 명시했지만 사실 sum(1, 2, 0, 0) 인거죠. 4. 전체코드 5. 출력 함수의 기본 매개변수.txt 내 컴퓨터 저장 네이버 클라우드 저장 ============================================ 기본매개변수 실험 ----------------------

Naver Blog

C++ 콜론( colon, : ) 초기화

프로그래밍 응용 C++ 콜론( colon, : ) 초기화 jangThang 2016. 9. 4. 16:56 이웃추가 본문 기타 기능 생성자의 역할은 멤버변수들을 초기화시키는 게 주역할이죠.(물론 다른 부가적인 것도 할 수 있지만..) 그래서 생성자는 콜론초기화라는 특별한 기능이 존재합니다. 콜론 초기화 클래스명 :: 클래스명(파라미터1, 파라미터2) : 멤버변수1(파라미터1), 멤버변수2(파라미터2) 다음과 같은 형식으로 사용합니다. 정작 쓰고보니 더 복잡한 거 같네요. 클래스가 Unit인 예를 들면, Unit::Unit( int a, int b) : Hp(a), Mp(b) 이런 식이죠. 바로 예제로 설명드릴게요. 백문이 불여일견 1. Class 전 colon(), colon(int, int) 2개의 생성자를 만들었습니다. 이런걸 생성자 오버로딩이라고 부르죠... http://blog.naver.com/star7sss/220804394101 C++ 함수의 오버로딩(Over load

1 2 3 4 5 6 7 8