저희가 아이들과 공부를 하다 보면 별을 찍는 규칙을 많이 어려워 하더라구요.


별을 찍는 형태는 다음과 같은 형태가 나타납니다.



-*****

--***

---*


이런 경우 프로그램은 다음과 같이 반복문을 구성해 주어야 합니다.


먼저 행이 3행이므로 한행 한행 진행하기 위해서는 3번 반복을 해 주어야 합니다.


다음과 같이

1행

2행

3행

이렇게 반복을 해야 되므로


for(int i=1;i<=3;i++)

{

printf("%d행\n",i);

}


이런 형태로 프로그램을 찍어야 됩니다.


이때 

1행에서는 -가 1번 반복, *은 5번 반복

2행에서는 -가 2번 반복, *은 3번 반복

3행에서는 -가 3번 반복, *은 1번 반복이 됩니다.

따라서 

printf("%d행\n",i); 가 있는 줄을 삭제하고 

이곳에서 -를 반복하는 for문

*을 반복하는 for문이 들어가면 됩니다.


다음과 같은 형태로 구성이 되겠죠.

for(int i=1;i<=3;i++)

{

     for(int j=1;j<=(_1_);j++) printf("-"); //_1_번 반복

     for(int j=1;j<=(_2_);j++) printf("*"); //_2_번 반복

     printf("\n");

}


여기서 _1_ 위치에는 행의 갯수만큼 동일한 갯수만큼만 반복 되므로 i 값이 입력되면

i가 1일때 1번 반복

i가 2일때 2번 반복

i가 3일때 3번 반복

이 됩니다.


다음 _2_ 위치의 반복하는 것을 보면 다음과 같습니다.

i가 1일때 5

i가 2일때 3

i가 3일때 1

i가 1씩 증가 됨에 따라서 반복되는 횟수는 2씩 감소가 됩니다.


따라서 [어떤수] - 2*i  의 형태의 규칙이 나옵니다.

여기서 어떤수(x)는 1행에서 x- 2*1 = 5 가 되는 x=7 이 됩니다.


따라서 _2_ 위치에는 7-2*i 값이 들어가면 됩니다.


프로그램을 완성해 보면 다음과 같습니다.


for(int i=1;i<=3;i++)

{

     for(int j=1;j<=i;j++) printf("-"); 

     for(int j=1;j<=7-2*i;j++) printf("*"); 

     printf("\n");

}


이러한 원리를 이용하면 다음과 같은 프로그램도 가능 할 것입니다.


n=3 일때

-*******---

--*****----

---***-----

n=4 일때

-*********---

--*******----

---*****-----

----***------


먼저 행은 n 만큼 반복을 하므로 큰 틀을 잡으면 다음과 같습니다.


for(int i=1;i<=n;i++)

{

//각 행에서 수행하는 프로세스

}


각행에서 수행하는 프로세스는 

각 행에서 - 찍는 반복문 한번, * 찍는 반복문 한번, - 찍는 반복문 한번을 다시 수행하게 됩니다.

따라서 다음과 같이 큰틀을 잡아야 합니다.


for(int i=1;i<=n;i++)

{

    for(int j=1;j<=(_1_);j++) printf("-"); //_1_ 만큼 - 출력

    for(int j=1;j<=(_2_);j++) printf("*"); //_2_ 만큼 * 출력

    for(int j=1;j<=(_3_);j++) printf("-"); //_3_ 만큼 - 출력

    printf("\n");

}


여기서 _1_ 위치는 행 번호인 i 와 동일한 값 만큼 반복 하면 되므로 i 가 입력 되면 됩니다.

다음 _2_ 위치는 2씩 감소되므로 [어떤수] - 2 * i 가 될것입니다.

이때 어떤 수는 n=3 일때 9, n=4 일때 11 이므로 n=5 일때 13,n=6일때 15 가 될것입니다.

이러한 규칙은 n값이 변경됨에 따라 바뀌므로 n을 이용한 규칙을 찾아 보면 2*n + 3 이라는 것을 찾을 수 있습니다.

규칙을 찾을때 2씩 증가가 된다면 해당 변하는 수에 2를 곱한 후에 그 수를 만들기 위해서 + - 를 이용해서 맞춰 주시면 됩니다.


이러한 규칙을 찾으면 _2_ 위치에는 2*n+3-2*i 가 입력되면 됩니다.


_3_ 위치는 i가 1일때 3회,2일때 4회,3일때 5회 이므로 i+2 의 값이 되는 것을 확인 할 수 있습니다.


따라서 모든 소스를 완성해 보면 다음과 같습니다.


for(int i=1;i<=n;i++)

{

    for(int j=1;j<=i;j++) printf("-"); //_1_ 만큼 - 출력

    for(int j=1;j<=2*n+3-2*i;j++) printf("*"); //_2_ 만큼 * 출력

    for(int j=1;j<=i+2;j++) printf("-"); //_3_ 만큼 - 출력

    printf("\n");

}


이상과 같이 별을 찍어 보았는데요...

이러한 원리에는 행의 갯수를 파악하고...

행의 번호가 증가 함에 따라서 그 안에서 회전하는 반복횟수가 증가한다면 + 감소한다면 -

행의 번호가 1씩 변경됨에 따라서 그 안에서 회전하는 반복횟수가 2배씩이라면 2 * i, 3배씩 증가한다면 3*i 

이런 식으로 규칙을 찾게 된다면 별 찍는 것이 너무 간단하게 됩니다.


위와 같은 경우를 표를 그려서 규칙을 찾는 것도 도움이 됩니다.


n=3 일때

 -반복횟수(1)

 *반복횟수

 -반복횟수(2)

 1

 1

 7

 3

 2

 2

 5

 4

 3

 3

 3

 5


n=4 일때

 i

 -반복횟수(1)

 *반복횟수

 -반복횟수(2)

 1

 1

 9

 3

 2

 2

 7

 4

 3

 3

 5

 5

 4

 4

 3

 7


이렇게 표를 그리고 나면 i는 1 부터 n 까지 반복되는 규칙을 찾을 수 있습니다.

-반복횟수(1) 는 i 값에 따라 같은 횟수로 반복되는 것을 찾을 수 있습니다. 따라서 그안에서 반복 횟수는 1부터 i 까지 반복을 합니다.

*반복횟수는 i 값이 1씩 증가됨에 따라 2씩 감소되므로 (어떤수) - 2*i 라는 식을 얻게 되고 어떤수는 i 가 1일때 n=3 에서는 9 , n=4 에서는 11 이 되므로 n*2 + 3 이라는 식을 얻게 되는데 위에서 언급했듯이 n의 값에 따라 2씩 변경 되는 수이므로 n*2 를 한 후에 +- 를 이용해서 그 값을 맞춰 주시면 됩니다

-반복횟수(2)는 i값이 1씩 증가됨에 따라 1씩 증가 됨으로 (어떤수) + i 가 되며 (어떤수)는 i가 1일때 2가 되는 것을 확인할 수가 있습니다.


이렇게 규칙을 찾게 되면 규칙을 찾는 것 만으로도 별을 찍을수 있겠네요.



처음 별 찍는 학생들이 좀 어려워 하는 것 같아서 규칙을 찾아 보았는데요.

이렇게 규칙을 바로 찾아서 대입하는 것 보다는...

충분히 많이 생각해 보고 이렇게도 작성해 보고 저렇게도 작성하면서...

자신만의 규칙을 찾는 것이 더 많은 도움이 될것이라고 생각하네요.





이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2018.10.10 15:21 신고

    프로그램 논리를 배울 수 있는 코딩이네요.
    잘 보고 갑니다.
    즐거운 하루 보내세요~^^

  2. Favicon of https://enomoosiki.tistory.com BlogIcon 행복사냥이 2018.10.10 20:39 신고

    코딩이 그렇게 어려운 것 같지는 않네요.^^ 잘 보고 갑니다.^^

  3. Favicon of https://deborah.tistory.com BlogIcon Deborah 2018.10.10 23:21 신고

    오 이렇게 정리를 잘 해주셔서 많이들 이해하는데 도움이 되었을것 같아요

  4. Favicon of https://dldduxhrl.tistory.com BlogIcon 잉여토기 2018.10.10 23:38 신고

    별찍기에 대해 잘 보네요. 별을 따라 찍어가며 이해할 수 있겠어요.

  5. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2018.10.11 04:23 신고

    코딩과 관련된 내용이군요?
    별찍기 원리에 대해 잘 알고 갑니다^^

  6. Favicon of https://moldone.tistory.com BlogIcon 팡이원 2018.10.11 06:45 신고

    날씨가 무척이나 쌀쌀해졌네요..

    건강 잘 챙기시고 포스팅 잘 보고 갑니다

  7. 핑구야 날자 2018.10.11 06:46

    별찍기 관련한 원리를 코딩으로 할 수 있어서 재밌겠어요

  8. Favicon of https://xuronghao.tistory.com BlogIcon 空空(공공) 2018.10.11 07:40 신고

    자신만의 규칙을 찾아 보는게 아주 좋은 방법인것 같습니다.
    별찍는 방법. 학생들에게 도움이 되겠네요.^^

  9. ㅁㄴㅇㅁㅇ 2020.08.15 18:50

    진짜진짜 감사합니다.
    별 찍기 보면 항상 짜증나고 부담스럽다는 생각이 있었는데 이 글보고 감이 잡히는 것 같습니다.
    좋은 원리 많이많이 전파해주십시오

오늘은 학생이 c언어에서 문자열이 입력 되었을때...

영문자 이거나 한글에서 맨 앞의 한글자만 출력해야 하는데 어떻게 하는지 묻길래 C언어에서 한글인지 영문인지 체크하는 방법을 알아 볼까 합니다.


먼저 다음과 같이 

char Kor[] = "한글";

char Eng[]="English";

과 같이 변수를 선언하면서 데이터를 입력하면

먼저 strlen(Kor) 을 출력해 보면 4 또는 6이 나오는 것을 확인하실 수가 있는데요.

이것은 컴파일러마다 조금씩 다르기는 하지만 한글 같은 경우 2byte 혹은 3바이트를 사용하기 때문입니다.

그렇다면 Kor[0] 을 출력하면 당연히 "한" 이라는 글자는 출력 되지 않을 것입니다.


먼저 이러한 원리를 이해하기 위해서는 ASCII 코드를 이해 해야 되는데요.

이미지 출처 - http://shaeod.tistory.com/228


1Byte 로 저장할 수 있는 값은 8비트이므로 0x00(0) ~ 0xFF(255) 까지 입니다.

0부터 255 중에서 우리가 출력이 가능한 수는 일반적으로 0x20(32) ~ 0x7F(127) 까지 사용하고 있구요,

영문자 A~Z 까지는 0x41(65)~0x5A(90) a~z는 0x61(97)~0x7A(122) 까지를 사용하는 것을 알 수 있습니다.

따라서 한글이나 한문,일본어와 같은 경우는 당연히 1byte 가지고 처리가 안됩니다.

따라서 한글과 같은 경우는 2byte 혹은 3byte 로 처리를 하게 되는데요.

윈도우 내부적으로 사용하는 유니코드(UTF-16) 에서 2바이트로 사용을 하기 때문에 일단 2바이트를 가지고 설명을 하겠습니다.

먼저 UTF-16은 16비트 기반으로 문자열을 저장합니다. 기본 다국어 평면에 속하는 문자들은 16비드 값으로 인코딩 되고 그 이상의 문자는 특별히 정해진 방식으로 32비트로 인코딩 됩니다.


한글은 16비트로 사용 가능하며 유니코드 테이블 값을 확인해 보면 한글은 다음과 같습니다.

출처- https://en.wikipedia.org/wiki/Hangul_Syllables


테이블을 확인해 보면 0xAC00~0xD7A3 까지 한글을 사용하는 것을 확인해 볼수가 있습니다.

이것을 이진수로 변환해 보면 1010110000000000 ~ 1101011110100011 인것을 확인할 수 있습니다.

이때 앞의 8비트만 확인해 보면

10101100 ~ 11010111  인것을 확인 할 수가 있는데요.

우리가 사용하는 일반 알파벳은 0x20~0x7F 까지 사용한다고 하더라도

00100000 ~ 01111111 인 것을 확인할 수가 있습니다.

따라서 첫번째 비트가 1 로 시작하면 한글이고 0으로 시작하면 일반 Ascii 값이라는것을 판단 할 수가 있는데요.


이렇게 한바이트의 맨 처음 비트가 1인지 0 인지를 판단 하기 위해서는 0x80( 이진수로 변환하면 10000000) 을 비트연산 중 & 연산하여 0 이 나오는지 아닌지로 판단하면 됩니다.


따라서 위의 예에서

if(Kor[0] & 0x80) 를 하면 참이 나오고

if(Eng[0] & 0x80) 을 하면 거짓이 나옵니다.


따라서 어떤 문자열의 처음 한자리가 영문인지 한글인지 판단하여 처음 한자리만 출력 하는 것은 다음과 같이 판단하면 될것 같네요.

char str[1000];

scanf("%s",str);

if(str[0] & 0x80)

{

   //한글이므로 두바이트를 출력해 주어야 한다.

   printf("%c%c",str[0],str[1]);

}

else

{

   //일반 Ascii 값으로 한바이트만 출력 하면 된다.

  printf("%c", str[0]);

}









이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://cgntv-compass.tistory.com BlogIcon 보여주는남자 2018.08.28 13:11 신고

    완전 핵심적인
    근본에 다가선 기초부터 차근 차근 다져지는 기분이에요
    요즘처럼 과정은 알기싫고 결과만 얻으려하는 현실에서 그중 누군가는 이렇게 기본기부터 다져가고 싶은이가 있으리라 생각합니다
    처음에는 뒷쳐지는것 같을지라도 언젠가 깨닫게 되리라 생각합니다
    기초가 가장 중요하다는것을

  2. Favicon of https://enomoosiki.tistory.com BlogIcon 행복사냥이 2018.08.28 13:22 신고

    잘 모르는 내용을 자세하게 설명해 주신것 같아요.^^

  3. Favicon of https://uhastory.tistory.com BlogIcon 유하v 2018.08.28 14:10 신고

    봐도 어렵네요ㅋ;;; 학생들에게 도움이 되었음 합니다ㅎ

  4. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2018.08.28 14:37 신고

    C언어에서 한글을 표현하는 방법이군요.
    잘 보고 갑니다.
    즐거운 하루 되세요~^^

  5. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2018.08.29 06:19 신고

    예전에 컴퓨터 학원에서 2진법과 10진법을 공부했었던 기억이 있는데요- 물론 지금은 오래돼서 다 까먹었습니다 ㅠㅜ ‘C언어에서 문자열이 한글인지 확인 하는 방법’ 학습하고 갑니다^^;

  6. 핑구야 날자 2018.08.29 06:53

    C 언어를 사용해 본지 꽤 오래됐지만 다시 봐도 당장 코딩 할 수 있을 것 같은데요

  7. Favicon of https://xuronghao.tistory.com BlogIcon 空空(공공) 2018.08.29 08:31 신고

    C언어에서 한글인지 영문인지 체크하는 방법을 알려 주셨군요
    배우는 학생들에게 좋은 팁이 될수 있겠습니다

  8. Favicon of https://developingbear.tistory.com BlogIcon 뎁꼼 2020.07.08 22:30 신고

    오오

코드블럭(Code Block)을 사용하면 다음과 같이 철자를 몇개 입력하면 거기에 맞는 함수가 자동으로 나오게 됩니다.

이렇게 나오면 거기에서 선택을 하거나 보면서 칠 수도 있는데...


저희 학생 중에 한명이 집에서 코드블럭을 설치했는데 이러한 자동완성 기능이 안된다고 물어 보네요.

이러한 자동완성 기능이 안되면 무척이나 많이 불편한 부분이 있습니다.

실제로 머리가 그렇게 썩 좋지 못한 저도 정말 많이 사용하는 함수들이나 그냥 사용하지 가끔가다 사용하는 함수는 철자도 정확하지 않아서 비슷한 단어를 써 보면서 그 함수를 찾는 경우가 많거든요.


사실 프로그래밍 하는 입장에서 이러한 함수들을 모두 다 외워야 하는 것은 정말 비효율적이지 않을까 생각 해 보게 되네요.

이러한 함수들을 외우는 것 보다 좀더 좋은 알고리즘을 만드는 방법에 대해 연구하는 편이 훨씬 더 효율적이라고 생각해 보는 1인인데요... 사실 문법이라는것이 많이 사용하지 않다 보면 잊혀지는 것이 모든 사람의 동일한 증상 아닐까 싶어요.


그래서 저희는 원에서 프로그래밍을 할때 구글에서 문법을 검색하는 것이 자유로운데요.

실제로 대회 준비를 할 때에는 인터넷이 되지 않는 환경이므로 그 당시에는 왠만하면 모두 외우는 것을 권장하지만 그러한 대회 준비가 아니라면 문법을 꼭 외우라고 시키지는 않습니다.


문법이라는 것이 자신이 필요할때마다 검색해서 사용하다 보면 자주 사용하는 문법은 자연스럽게 손가락이 기억을 하고 있고 잘 기억하지 못한다면 이러한 기능을 어떻게 사용할지는 구글에서 검색하면 아주 친절하게 설명해 주기 때문이죠.


그렇더라도 이러한 자동완성 기능이 없다면 매번 검색을 하기에도 번거로우니...

오늘은 코드블럭에서 자동완성 기능이 나타나지 않을때 어떻게 설정하는지 알아 보도록 하겠습니다.


우선 코드블럭의 Settings -> Editor 을 클릭합니다.

General setting -> Editor settings 에서 Code Completion 에 체크가 되어 있지 않다면 이 부분을 체크해 주시면 됩니다.


이 부분이 체크 되어 있지 않다면 이 부분을 체크해서 사용하시면 이런 함수가 있었는데 정확한 철자가 기억나지 않는다고 해도 유추해서 찾아 낼 수가 있기 때문에 구글 검색하는 것보다 조금 더 빠른 코딩을 할 수가 있지 않을까 생각해 보게 되네요.^^


코드블럭(Code Block) 은 실무에서는 많이 사용하지는 않지만 학생들이 대회용으로 많이 사용하는 컴파일러 이기 때문에 혹시나 이런 부분에서 불편한 부분이 있을까 해서 공유해 봅니다.


2019/11/21 - [강의실/정보영재] - Code Block 디버그 오류(For MinGW compilers, it's 'gdb.exe')

2019/09/18 - [강의실/정보영재] - CodeBlock 환경설정 초기화 방법

2018/08/22 - [강의실/텍스트기반SW] - 코드블럭(Code Block) 자동완성 기능 설정

2018/05/03 - [강의실/텍스트기반SW] - 코드블럭에서 can't find compiler executable in your search path (GNU GCC compiler) 에러 발생시




사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2018.08.22 12:07 신고

    엑셀함수 자동완성처럼 나오는 기능인가 봅니다.
    자동으로 나오면 인수도 확인할수 있어서 편하겠네요.

  2. 로즈마리 2018.08.22 17:03

    그 기능 안되면 무지 불편했는데..
    정말 도움이 많이 되는 꿀팁이네요..

  3. BlogIcon 핑구야 날자 2018.08.23 06:45

    자동완성 기능이 참 편하지요 안 되면 정말 불편해요

  4. Favicon of https://xuronghao.tistory.com BlogIcon 空空(공공) 2018.08.23 07:04 신고

    코드 블럭에서 자동 완성 기능을 설정하는 부분이군요
    인터넷 환경에서도 자동 완성 기능이 있더군요^^

  5. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2018.08.23 20:41 신고

    코드블럭(Code Block)은 실무에서는 많이 사용하지는 않지만 학생들이 대회용으로 많이 사용하는 컴파일러 이군요? 덕분에 잘배우고 갑니다^^

저희 학생이 집에서 코드블럭 설치 후에 프로그램을 설치 했는데 다음과 같은 오류창이 뜨면서 실행이 안된다고 해서 오늘은 이 에러에 대해 대처 하는 방법에 대해 알아 보도록 하겠습니다.


일단 저희가 설치하는 코드블럭은 다음의 사이트에서 다운로드 받아 설치 합니다.

코드블럭 다운로드 사이트  - http://www.codeblocks.org/


사이트 접속하면 왼쪽에 Downloads-Binarise 라고 보이면 그곳을 선택하고요.



오른쪽 화면에 Windows 쪽에 보면  codebolocks-xx.xxmingw-setup.exe 위치의 download from 에서 Sourceforge.net 을 클릭하여 해당 설치 파일을 다운로드 받아 설치 하면 되는데요.



간혹 아래와 같이 설치는 되었는데 에러 코드를 만나는 경우가 있습니다.

이럴때는 지우고 다시 설치해도 똑같은 문제가 발생하더라구요.



화면에 보면 Environment error 라고 뜨면서 can't find compiler executable in your search path for GNU GCC Compiler 라고 뜨는것이 보이는데요.


GCC 컴파일러의 위치를 찾지 못했다는 얘기입니다.


이런 경우 다음과 같이 처리하면 정상적으로 컴파일이 되더라구요.


1. 메뉴 -> Settings 를 선택

2. Settings->Compiler 선택


3. 다음의 화면에서 Global Compiler settings -> ToolChainExecutables 탭 클릭


4. 그 다음 Auto-detect 버튼을 클릭 해 주시면 바로 옆의 C:\Program Files (x86)\CodeBlocks\MinGW 와 같이 path 가 잡히게 됩니다.


만약 Auto-detect 버튼을 클릭하여 OK 버튼으로 설정 후에도 동일한 증상을 겪으신다면...


해당 프로그램을 제어판에서 삭제 하신 후에....


설치 파일을 mingw-setup 버젼을 다시 다운로드 받아서 설치후 설정을 해 보시면 될것 같네요.


2019/11/21 - [강의실/정보영재] - Code Block 디버그 오류(For MinGW compilers, it's 'gdb.exe')

2019/09/18 - [강의실/정보영재] - CodeBlock 환경설정 초기화 방법

2018/08/22 - [강의실/텍스트기반SW] - 코드블럭(Code Block) 자동완성 기능 설정

2018/05/03 - [강의실/텍스트기반SW] - 코드블럭에서 can't find compiler executable in your search path (GNU GCC compiler) 에러 발생시








사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2018.05.03 11:36 신고

    해보질 않아서 잘은 모르겠지만 코드블럭에서 자주 발생하는 에러인가 보네요.
    잘 보고 갑니다.

  2. Favicon of https://moldone.tistory.com BlogIcon 팡이원 2018.05.04 06:19 신고

    비온후 맑은 아침 입니다
    오늘 하루 화이팅 하시고 포스팅 잘 보고 갑니다~

  3. 핑구야 날자 2018.05.04 06:48

    궁금했던 분들은 도움이 되겠어요

  4. Favicon of https://deborah.tistory.com BlogIcon Deborah 2018.05.08 02:31 신고

    도움을 많이 받았을거에요. 잘 보고 있네요.

  5. LSJ 2019.06.05 19:16

    계속 반복했는데도 안되네요 ㅠㅠ
    이럴땐 어떻게 해야하나요?

    • Favicon of https://wondangcom.com BlogIcon 원당컴 2019.06.05 20:33 신고

      mingw-setup 버젼인지 확인해 주시고요.. 맞다고 하시면 디렉토리를 Auto-detect 하지 마시고 그 앞의 ... 을 선택해서 직접 선택해 주시면 됩니다. 만약에 그렇게 해도 안된다면 프로그램 mingw-setup 버젼이 아니거나 설치를 잘 못하신겁니다.

  6. ngj 2019.09.05 22:34

    저 런이랑 빌드가 안돼네요 왜그러져ㅠㅠ
    C:\MinGW저기에 들어가서 이렇게 뜸

    • gabgi 2020.07.06 11:59

      저도 그렇게 뜨는데 어떻게 해야하나요?

  7. mint 2020.03.13 13:36

    ㅠㅠ감사합니다 덕분에 해결했어요
    이제 막 c언어 배워보려는데 첫 단계에서부터 막혀서
    엄청 막막했는데 해결방법 알려주셔서 감사합니다



13차시 수업중 마지막 차시에 그동안 배운 파이썬으로 프로그램을 만드는 시간을 가져 보았습니다.


학생이 만든 지뢰찾기 게임이네요.


동작상태는 거의 윈도우에서 보았던 지뢰찾기와 거의 똑같이 오른쪽 버튼 클릭시 X 표시로 깃발을 세우고 오른쪽 버튼 클릭시 버튼 주변의 지뢰 갯수를 보여주는 형식을 취했습니다.


다음은 학생이 만든 소스코드입니다.



소스보기


 #지뢰 게임 만들기

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from random import randint
from random import *

N = 20 #게임판의 갯수를 20*20 의 크기로 만든다.
bomb = 40 # 지뢰 갯수를 40개로 만든다.

cnt = 0
map = [[0 for col in range(N+2)] for row in range(N+2)] # 맵을 만들자.
buttonchk = [[0 for col in range(N)] for row in range(N)]
Button_X = [[0 for col in range(N)] for row in range(N)]
dir = [[0,1],[0,-1],[1,0],[-1,0]]
flag = bomb

root = Tk()
root.geometry("800x800")
visit = [[0 for col in range(N)] for row in range(N)]

def clear():
for i in range(N):
for j in range(N):
visit[i][j] = 0

# 게임을 성공했을때 메시지를 띄우자
def Game_clear():
messagebox.showinfo("Success!","Congratulations! You have Successed This Game!")

# 왼쪽 버튼 클릭시 0의 위치이면 근처의 0의 위치를 모두 찾아서 셋팅하자.
def DFS(indx,indy):
if(indx < 0 or indx >= N):
return 0
if(indy < 0 or indy >= N):
return 0

#print(indx,indy)
if Button_X[indy][indx] == 1:
return 0
if visit[indy][indx] == 0:
visit[indy][indx] = 1
if map[indy][indx] == 0:
Button_map[indy][indx].Show(indx,indy)
buttonchk[indy][indx] = 1
elif map[indy][indx] > 0:
Button_map[indy][indx].Show(indx, indy)
buttonchk[indy][indx] = 1
return 0
for i in range(4):
DFS(indx+dir[i][0],indy+dir[i][1])

else:
return 0

"""
def right(a,b):
global flag
cnt = 0
print("right_clicked")
if(not Button_X[b][a] == 1 and buttonchk[b][a] == 0):
if(flag > 0):
print(flag)
Button_map[b][a].Num_Button["bg"] = "red" #버튼의 색상을 변경하려고 했는데 변경이 안되고 bg 에러가 발생
Button_X[b][a] = 1
flag -= 1
if(flag == 0):
for i in range(N):
for j in range(N):
if(buttonchk[i][j] == 1 and not map[i][j] == -1):
cnt += 1

if cnt == 360:
Game_clear()
elif(Button_X[b][a] == 1):
Button_map[b][a].Num_Button["bg"] = "white"
Button_X[b][a] = 0
flag += 1
def right(event):
global flag
cnt = 0
a=10
b=10
print("right_clicked")
print(type(Button_map[b][a].Num_Button))
Button_map[b][a].Num_Button.configure(Button_map[b][a].Num_Button,bg="white")
if(not Button_X[b][a] == 1 and buttonchk[b][a] == 0):
if(flag > 0):
print(flag)
Button_map[b][a].Num_Button["bg"] = "red"
Button_X[b][a] = 1
flag -= 1
if(flag == 0):
for i in range(N):
for j in range(N):
if(buttonchk[i][j] == 1 and not map[i][j] == -1):
cnt += 1

if cnt == 360:
Game_clear()
elif(Button_X[b][a] == 1):
Button_map[b][a].Num_Button["bg"] = "white"
Button_X[b][a] = 0
flag += 1
"""

# 버튼 클래스를 만들자.
class Button_:
global map
def __init__(self,x,y):
self.tmpx = x
self.tmpy = y
self.Num_Button = ttk.Button(root,width = 4)
self.Num_Button.grid(row=y, column=x,ipady = 5)
self.Num_Button.bind('<Button-1>', self.Left)
self.Num_Button.bind('<Button-3>', self.right)

def Show(self,x1,y1):
self.Num_Button.configure(text = str(map[y1][x1]))

def Left(self,event):
if(Button_X[self.tmpy][self.tmpx] == 0):
if(map[self.tmpy][self.tmpx] == -1):
Button_map[self.tmpy][self.tmpx].Show(self.tmpx,self.tmpy)
Game_over()
elif(map[self.tmpy][self.tmpx] == 0):
Button_map[self.tmpy][self.tmpx].Show(self.tmpx,self.tmpy)
buttonchk[self.tmpy][self.tmpx] = 1
clear()
DFS(self.tmpx,self.tmpy)
else:
Button_map[self.tmpy][self.tmpx].Show(self.tmpx,self.tmpy)
buttonchk[self.tmpy][self.tmpx] = 1
#obj = Button_map[tmpy][tmpx]
#print("clicked")
if (flag == 0):
cnt = 0
for i in range(N):
for j in range(N):
if (buttonchk[i][j] == 1 and not map[i][j] == -1):
cnt += 1
if cnt == N*N-bomb:
Game_clear()

def right(self, event):
global flag
cnt = 0
#print("right_clicked")

if (not Button_X[self.tmpy][self.tmpx] == 1 and buttonchk[self.tmpy][self.tmpx] == 0):
if (flag > 0):
#print(flag)
Button_map[self.tmpy][self.tmpx].Num_Button.configure(text = "X")
Button_X[self.tmpy][self.tmpx] = 1
flag -= 1

elif (Button_X[self.tmpy][self.tmpx] == 1 and buttonchk[self.tmpy][self.tmpx] == 0):
#print("came")
Button_map[self.tmpy][self.tmpx].Num_Button.configure(text = " ")
Button_X[self.tmpy][self.tmpx] = 0
flag += 1
if (flag == 0):
for i in range(N):
for j in range(N):
if (buttonchk[i][j] == 1 and not map[i][j] == -1):
cnt += 1
if cnt == N*N-bomb:
Game_clear()


Button_map = [[Button_(0,0) for col in range(N)] for row in range(N)]

# 게임실패시 메시지를 띄우자.
def Game_over():
for i in range(N):
for j in range(N):
Button_map[i][j].Show(j,i)
messagebox.showinfo("Game over...", "You Have Failed This Game... Try agian!")
#frame = ttk.Frame(root,width = 50,height = 50,text = "Game over! Try again!")
#frame.pack()

# 사방의 지뢰의 갯수를 세어서 리턴하자
def count(x,y):
cnt_ = 0
if(map[x + 1][y] == -1):
cnt_ += 1
if(map[x - 1][y] == -1):
cnt_ += 1
if(map[x][y + 1] == -1):
cnt_ += 1
if(map[x][y - 1] == -1):
cnt_ += 1
if(map[x + 1][y + 1] == -1):
cnt_ += 1
if(map[x + 1][y - 1] == -1):
cnt_ += 1
if(map[x - 1][y + 1] == -1):
cnt_ += 1
if(map[x - 1][y - 1] == -1):
cnt_ += 1
return cnt_

# 맵을 0으로 초기화 하자
for i in range(N):
for j in range(N):
map[i][j] = 0


# 지뢰 갯수만큼 랜덤위치에 지뢰를 -1로 셋팅하자.
while(cnt < bomb):
tmpx = randint(0,N-1)
tmpy = randint(0,N-1)
if(map[tmpy][tmpx] == -1):
pass
else:
map[tmpy][tmpx] = -1
cnt += 1

# 지뢰 갯수를 세어서 맵에 셋팅하자.
for i in range(N):
for j in range(N):
if(map[i][j] == 0):
map[i][j] = count(i,j)

# 버튼을 20*20으로 만들어서 셋팅하자.
for i in range(N):
for j in range(N):
Button_map[i][j] = Button_(j,i)

root.mainloop()


알고리즘을 살펴보면 다음과 같은 형식으로 작성했네요.^^

1. 맵을 관리할 리스트를 2차원 배열로 선언을 합니다.

2. 맵을 0으로 모두 초기화 합니다.

3. 맵의 위치에 지뢰 갯수만큼 -1을 셋팅합니다.

4. 버튼을 생성해서 화면에 출력 합니다.

5. 버튼을 왼쪽 버튼 클릭시 Left 이벤트를 발생해서 해당 위치가 -1이면 게임오버 메시지, 0 이면 DFS 함수를 호출해서 해당 주변의 0의 위치를 모두 표시해 줍니다.

6. 오른쪽 버튼 클릭시 X를 표시해서 왼쪽 버튼을 클릭해도 동작하지 못하도록 셋팅합니다. 또한 플래그 갯수를 세어서 40개가 되면 미션을 완료 했는지 체크해서 미션성공의 메시지를 출력합니다.




이 학생이 마지막까지 무척이나 아쉬워 한 부분이 버튼 색상을 바꾸는 부분이 안되는 것이었는데...

저도 버튼의 색상을 변경해 보려고 했으나 클래스 내부에서 configure 를 이용해 색상을 변경하는데 -bg 오류가 나오는데...

이것저것 수정해 보아도 해결을 하지 못했네요.^^


혹시라도 파이썬 고수님이 이 글을 보시게 되시면 이 버튼의 색상을 변경할 수 있는 방법을 알려 주시면 대단히 감사하겠습니다.^^






이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2018.02.01 05:34 신고

    와 학생분이 지뢰찾기 게임처럼 만들었네요?
    버튼 색상을 바꾸는 부분이 아쉬운 부분이었군요!? 파이썬 고수님이 나타나셔서 2%를 채우주셨으면 좋겠네요^^

  2. 핑구야 날자 2018.02.01 06:53

    대단한 학생이네요 경우의 수가 많을텐데 ㅋㅋ

  3. 음... 2019.12.11 18:59

    이거 똑같은거 있던데 베낀거 아니예요?

  4. ㄹㅇㄴ 2019.12.11 19:01

    https://blog.naver.com/sjhhello/221457100782 한번 보시죠

    • Favicon of https://wondangcom.com BlogIcon 원당컴 2019.12.12 23:41 신고

      저희 학생 맞습니다.^^ 이 학생이 만든 코드 입니다. 위에 학생이 만든 코드라고 적어 놓았는데 못 보셨나 보네요.^^

  5. 잘 보고 갑니다~~


요즘 파이썬 특강을 하고 있는데...

저희 원에서 한 학생이 다음과 같이 하트를 그리더라구요...^^


저는 하트 그리는게 대수롭지 않다고 생각하고 무심결에 "잘했네~~" 라고 얘기 해 주고 나서 집에 와서 곰곰히 생각하니...


그 각도를 맞추는게 쉽지 않을것 같다는 생각이 들더라구요.^^


작은 아들한테 "파이썬으로 하트 그릴수 있어?" 하고 물어 보니 "먼저 삼각형 각도 체크 해서 올라가다가 그 위에 반원을 두개 그리고 다시 내려오면 되는거 아니야?" 하네요...


나중에 시간되면 한번 그려 보라고 이야기 해 보기는 했지만 이 학생이 이 하트를 어떻게 그렸는지 무척이나 궁금해 지더라구요...


그래서 그 학생의 소스를 살짝 훔쳐 보았네요.^^


학생의 소스


 

import turtle

t = turtle.Turtle()

wn = turtle.Screen()

wn.title("star")

wn.bgcolor("black")  #바탕화면 색상을 black 로 칠한다.

t.begin_fill()            #도형의 안을 색칠할 준비를 한다.

t.color("red")           #도형의 펜의 색상은 red 색상으로 준비한다.

t.left(45)                #펜의 각도를 왼쪽으로 45도 회전한다 

t.forward(200)         #200 만큼 전진한다

t.circle(73,221.37)     #반지름이 73 인 호를 221.37 만큼 그린다.   

t.left(180)               #펜의 각도를 왼쪽으로 180도 회전한다.

t.circle(73,221.37)     #반지름이 73 인 호를 221.37 만큼 그린다.

t.forward(200)         #200 만큼 전진한다

t.end_fill()



이 결과물은 다음과 같이 이쁘게 나오네요.




지금 생각하니 t.circle(73,221.37)  여기에서 73 의 크기와 221.37 의 호의 길이를 어떻게 구했는지 엄청 궁금해 지더라구요.


학생에게 물어 보니 올라가는 각도와 크기를 계산해서 나왔다고 하네요.


제가 단순히 선을 그리고 원을 그리는 명령만을 가르쳐 주어도...


각도를 계산해서 하트를 그릴 수 있는 학생의 능력에 감탄을 하게 되면서도...


똑같은 언어를 배운다고 해도 그 사람이 가지고 있는 지식으로 어떤 결과물이 나타나는가 하는 것을 여실히 보여주는 단적인 예인것 같네요.





 


이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://moldone.tistory.com BlogIcon 팡이원 2018.01.12 16:18 신고

    날씨가 무척이나 춥네요~
    감기 조심하시고 포스팅 잘 보고 갑니다~^^

  2. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2018.01.13 05:33 신고

    파이썬의 터틀을 이용한 하트 만들기- 생소한 분야이지만,
    학생분이 그린 하트를 보니, 정말 잘 그렸다는 생각이 듭니다^^
    한파 날씨가 어제까지 이어지다 오늘로 강추위는 풀린다고 합니다. 건강관리 잘하시길 바랍니다.

  3. 핑구야 날자 2018.01.13 07:05

    하트가 참 예쁘네요

요즘에 한참 파이썬의 매력에 흠뻑 빠져 있는데요...


1. 배우기  쉽습니다.

- 배우기 쉽다고 하는데 저는 좀 헷갈렸습니다.^^

  기존 언어들과는 습성이 달라서 좀 많이 헷갈리는 문법들이 조금 있습니다.

  변수의 타입을 선언을 하지 않아도 되고.

  시작과 끝을 지정 하지 않고 그냥 줄 맞추는 것만으로 프로그래밍 하는것도 그렇구요. 

  기존 다른 프로그래밍 언어를 배우지 않은 사람들에게 접근하기는 좀더 쉬울것 같기는 합니다.


- 하지만 저는 파이썬을 먼저 배우는 것은 비추 합니다.

  제가 접해본 결과 C언어나 다른 언어를 배운 상태에서 파이썬을 접했을때 혼란이 온것 처럼...

  파이썬을 접한 후에 다른 언어를 접하면 혼란이 올것인데요...

  이 것이 아마 그 틀을 깨는 것이 수십배는 더 어려울 것으로 판단 됩니다.

  C나 자바 등을 먼저 접한 후에 파이썬을 접하면 처음에는 혼란스러울지도 있지만 그냥 문법적인 차이정도로 느낄텐데,

  파이썬을 먼저 접한 후 다른 언어를 접할때 개념적인 차이라고나 할까요...

  

  물론 나는 다른 프로그래밍 언어는 필요 없어~~ 라고 하시는 분은 파이썬만 배우는 것만으로도 추천합니다.


2. 간단합니다.

- 파이썬 문법 책은 다른 문법책에 비해서 얇더라구요^^ 그만큼 문법적인 요소가 많지 않은것 같습니다.

  제가 문법 공부할때 본 책입니다.

책은 얇지만 그래도 있을것은 다 있네요.^^

점프투파이썬으로 검색하면 위키독스(https://wikidocs.net/book/1) 가 검색 되는데요...

이곳 문서만으로도 이 교재를 보는것과 같은 강의를 만나실수 있답니다.^^


3. 가독성이 훌륭합니다.

- 파이썬의 문법 에서는 칸을 맞추지 않으면 엉뚱한 결과값이 나옵니다. 

  이처럼 띄워쓰기를 철저하게 맞춰 줘야 합니다.

  이와 같이 띄워쓰기를 잘 한것 만으로도 한눈에 프로그램의 로직을 파악하기가 용이합니다.

  제가 파이썬이라는 언어의 문법을 알기 이전에도 파이썬으로 구현된 알고리즘은 그냥 어떤 형태로 구현된것인지 판단이 되었고 그것을 다른 언어로 구현이 가능했을정도이니까요... 거의 배우지 않아도 읽을수는 있을정도로...^^


4. 강력합니다.

- 제가 파이썬의 매력에 푹 빠진 이유입니다.

  요즘에 딥러닝에 관심이 있어서 딥러닝 공부를 하고 있습니다.

  그런데 이 딥러닝의 핵심이 되는 ML(기계학습) 관련된 모듈들을 구글에서 만든 TensorFlow 라는 막강한 라이브러리를 제공하고 있습니다. 물론 이 TensorFlow 이외에도 많은 라이브러리를 제공해 주고 있습니다.



5. 유연합니다.

- 파이썬은 어느 플랫폼에서나 구동이 가능합니다. 또한 다른 언어로 작성된 프로그램에 파이썬을 삽입하는 파이썬 임베딩 기능이 잘 되어 있습니다.


6. 4차산업시대의 소프트웨어 교육에 딱 맞는 프로그래밍 언어입니다.

- 강력한 라이브러리를 제공하고 있어서 대학교나 연구소에서 많이 사용한다고 이야기 들었을때만 해도 반신반의 했었습니다.

  요즘 대학교에서 강의하는 선형대수학 강의를 들어 본 경험이 있습니다.

  교수님은 벡터의 내적과 외적의 개념을 열심히 설명해 주시네요...

  그리고는 그 벡터의 내적과 외적을 계산하는 방법을 설명해 줍니다. 그리고 파이썬에서 제공하는 내적 계산,외적 계산 함수를 사용하여 결과값이 나오는 것을 확인 시켜 줍니다.(그냥 파이썬의 내적계산 함수에 데이터만 입력 하면 끝.)


- 이러한 강좌를 들을때 이렇게 개념을 이해 시켜주는 교육이 진정한 교육이 아닌가 싶은 생각이 들었습니다.

  제가 고등학교 대학교 다닐때 수학 공부를 했던 기억이 아스라이 스쳐 지나가는데요...

  그때는 그 개념이나 방법 이론 보다는 열심히 공식을 암기해서 그 문제를 풀이하는 과정에 더 열중했었던것 같아요.

  물론 제가 공부하는 방법을 잘못 선택해서였겠지만요. 


하지만 이러한 파이썬의 매력에도 아쉬운 부분은 남기 마련입니다.

1. 프로그램의 속도가 다른 컴파일러에 비해 느립니다.

   - 따라서 임베디드나 하드웨어쪽 분야 소프트웨어를 목표로 하신다면 다른 언어를 추천해 드립니다.

2. 만든 프로그램을 실행 파일로 만들기 어렵습니다.

   - 아래한글이나 ms워드 와 같이 패키지성 프로그램을 만드는 목적으로 프로그램을 구현하는 것이 많이 어렵기 때문에 이러한 패키지프로그램을 만드실때는 다른 언어를 추천해 드립니다.

3. 오류에 대한 대처가 아쉽습니다.

   - 장점이 단점이 되는 사례인것 같습니다. 변수의 형을 선언 하지 않아도 됨으로 다른 언어에서는 숫자 변수에 문자타입을 넣을때 에러를 내 줄 수도 있는데 반해 파이썬은 이러한 오류를 걸러내 주지 못할 수 있다는 점... 등을 비롯해 여러가지 제약사항이 있는것 같네요.


이러한 아쉬움 속에서도 학생들에게 교육적인 측면에서 바라 본다면...

또한 4차 산업 관련된 딥러닝이나 빅데이터와 같은 학문적인 측면을 깊이 바라 본다면...

이 파이썬 만큼 훌륭한 언어가 또 있을까 싶은 생각이 들더라구요.^^







이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://deborah.tistory.com BlogIcon Deborah 2017.09.29 11:20 신고

    네 올려주신 내용을 잘은 이해 가지 않지만 잘 보았네요. 4차혁명을 준비하는 단계라면 알아 두어야 할 상식이네요.

  2. Favicon of https://moldone.tistory.com BlogIcon 팡이원 2017.09.30 06:26 신고

    잘 보고 가네요~

  3. 핑구야 날자 2017.09.30 08:01

    파이썬은 한 번도 사용해보지 않았어요 한번 들어볼게요

  4. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2017.10.03 13:57 신고

    파이썬 교육교제 소개 감사합니다^^
    참고하겠습니다.

하루강아지 범 무서운 줄 모르고 시작한 강의가 정말 산 넘어 산이네요.^^


처음에는 막연하게 내가 아는 지식에 조금만 더 공부하면 아이들을 충분히 가르칠수 있을꺼야... 라는 자만심(?) 으로 아무것도 모르고 이 일에 뛰어 들었었네요.


하지만 학생들의 흡수력은 정말 저를 채찍질 하는 원동력이 됩니다.


한가지만도 흡수하기 어려운 저에게 학생들은 많은것을 요구 합니다.


이것이 부족해요... 저것도 배우고 싶어요...


제가 아는 지식이 정말 부족하다는 것을 매번 뼈저리게 느끼면서 시간만 나면 열공모드에 들어가지 않으면 아이들의 지식을 채워주기 너무 부족하다는것이 또하나의 삶의 원동력입니다...


이젠 학생들에게 자바과정도 넣어 주어야 할것 같습니다.


교재를 선택하기 위해서는 여러 교재를 필독해 보는것은 필수 입니다.


여러 교재 중 "이것이 자바다" 교재로 선택한 이유는 다음과 같은 이유입니다.



1. 일단 책을 읽는데 소설책을 읽듯이 문맥이 부드럽고 머리에 쏙쏙 들어 옵니다.(원에서 배운 후에도 집에서 스스로 학습하기에 너무 좋은 책입니다.)

2. 개념 정리가 잘 되어 있어서 자바를 처음 접하는 사람들이라도 쉽게 이해 할 수 있습니다.

3. 동영상 강의를 무료로 제공해 주면서 카페가 활성화 되어 있습니다.

4. 카페에서 프로젝트 대회를 열고 있습니다.( 프로그래밍 언어가 끝나면 무엇인가를 구현해 보지 않으면 금새 잊어버리기 일쑤입니다. 이렇게 프로젝트를 통해서 자신이 배운 실력을 표현하다 보면 금새 실력이 늘어 나게 됩니다.)

5. JAVA8에서 나온 람다식을 다른 교재로 봤을때 많이 이해하기 어려웠는데... 이 교재에서는 자연스럽게 이해 되는 부분도 교재를 선택 한 이유중에 하나입니다.



교재 기준으로 보면 동영상 강의 학습은 131시간,교재만으로는 273 시간이네요.

그만큼 양이 방대할 수 있겠지만 자세하게 설명 되어 있다고 보시면 됩니다.


일단 저희가 수업하는 아이들은 기본적으로 C와 C++ 을 진행한 학생들 대상으로 수업을 진행할 예정이라서 이것 보다는 훨씬 단축이 될것 같네요.


문법적인 부분은 C/C++ 과 별반 달라 보이지 않아서 그렇게 어렵지 않을것 같은 생각이 들고요 개념은 C++ 과 같이 객체지향이라서 C와 C++ 을 공부한 학생이라면 무난하게 진행할 것이라 생각 됩니다.


이렇게 자세한 설명과 동영상강의가 잘 되어 있어서 굳이 학원에 가서 돈 주고 배울까? 라는 생각을 만들게 하는 교재 입니다.


사실 시간이 많은 분들 또는 동영상 강의로 가능하신 분들은 굳이 학원까지 안 나오셔도 집에서 편하게(?) 아니고 독하게 공부하시는 방법을 강추 해 드립니다.^^


저도 동영상강의를 선호하는 편이라서 우리 아들에게 동영상 강의로 공부하기를 독려 했지만...

역시 아들은 동상이몽이네요...(인강 1년짜리 끊어 놓고 몇달이나 들었는지..ㅠ.ㅠ)


제가 생각하는 학원은 학생의 매니저 역할을 해주는 것이 가장 큰 역할이 아닌가 생각해 보게 되더라구요.


수업시간을 정해 놓고 와서 듣고 실습하고 하면서 자연스럽게 자신의 관리를 하면서 계속 공부하게 되는 원동력이 되는것 같습니다.


부모님이 매니저 역할만 잘 수행해 주실 수 있다면 굳이 비싼 학원 다닐 필요가 있을까 싶어요....


일단은 자바는 "이것이 자바다"로 학생들과 함께 공부해 나갈 생각입니다.


혹시라도 자바를 배우고 싶은데 학원 다닐 시간이 안되시는 분들이시라면 이 책을 추천해 드립니다.^^











이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2017.08.11 03:38 신고

    긴 설명이 필요없이, 전문가 분이 추천해주시는 책이라 더 믿음이 갑니다.
    독학으로 자바를 배우고자 하시는 분들은 "이것이 자바다” 교재 구입하셔서 정독하시는 것도 너무 좋을것 같습니다.
    저도 나중에 자바를 공부하게 된다면 참고해뒀다가 구입해서 한번 천천히 읽어봐야겠습니다^^

    • Favicon of https://wondangcom.com BlogIcon 원당컴 2017.08.11 12:19 신고

      독학으로 공부하기에도 동영상이 너무 잘 되어 있어서 좋을것 같아요.

  2. Favicon of https://moldone.tistory.com BlogIcon 팡이원 2017.08.11 06:40 신고

    잘 보고 가네요

  3. Favicon of https://jongamk.tistory.com BlogIcon 핑구야 날자 2017.08.11 08:03 신고

    자바도 배우고 싶었는데 ㅜㅜ 더 재미있는 프로그램을 만들었을것 같아요

    • Favicon of https://wondangcom.com BlogIcon 원당컴 2017.08.11 12:20 신고

      네.. 아무래도 자바가 요즘 필수이긴 한거 같아요...^^

+ Recent posts