소프트웨어공학전공 이번에 복학한 학생의 이야기 입니다.

sydsyddl의 이미지

안녕하세요

요즘 c언어에 끌려다니며 공부하는 한 학생입니다.

어느 지방 국립대 컴퓨터공학과 소프트웨어공학을 전공으로 하고 있지요

요즘 과제에 치이며 살다가 이래저래 저 사는 이야기를 한번 해보고자 이렇게 글을 올립니다.

작년 11월에 전역하고 아르바이트로 돈을 조금 모으고 복학하자는 생각에

공부는 전혀 해놓지 않은채 복학하게 되었지요

그리고는 개강후 3월부터 엄청난 과제들이 쏟아져 나오더군요

'c프로그래밍 설계' 라는 과목이 있는데

따로 수업은 하지않고 한학기에 4개의 과제

한과제당 3주정도의 텀이 있고

교수님들이 과제를 하나씩 내주시죠

1학년 때도 c언어는 날림으로 배운지라

복학하고 열심히 따라갈려고 생각하고 있었는데

이게 쉽지가 않습니다. ㅎㅎ

첫번째 과제는 볼링 점수 계산 프로그램

이거 만만하게 봤다가 죽을뻔 했습니다-_ㅠ

볼링을 즐기시는 분들은 아시겠지만

스트라이크를 치게 되면 다음 두번의 투구에서 쓰러트린 핀의 갯수를 더해 점수를 계산해야하는.@#$%@#^@#&^@#%$@3;;;

경우의수가 엄청나게 많았습니다..

결국 과제 제출 기간을 일주일이나 넘기고 나서야 제출을 했지요

두번째 과제는 행맨 게임..

단순하게 행맨 게임을 만드는 것이 아니라

사용자처리와 순위계산..

그리고 교수님께서 던져주신 사전파일을 이용해

그 파일의 [단어][품사][단어설명] 을 모두 구조체 배열에 저장시키고

화면에 뿌려주고

게임을 진행시키는거죠..

과제 제출일은 지난 금요일이었는데

당연히 게임을 완성시키기는 커녕..

아직도 버벅대고 있습니다-_ㅠ

제가 프로그램을 만드는 과정에 잘못을 하고 있는것 같아

많은 선배들에게 조언을 구해봤는데요

선배들은 손코딩의 중요성을 강조하시더군요.

그리고 어느정도의 문법을 파악하고 있어야

소스코드 작성시에도 많은 시간을 절약할수 있다고 하시고요

제가 사실 파일입출력과 구조체 배열/포인터에 대해서 하나도 몰랐던 상태에서 시작해서

아직도 끼워맞추기 식으로 코드를 짜고 있는게 사실입니다.

이 좋은 날씨에도 컴퓨터 앞에서 코딩 하고 있다는게 조금 슬프긴 하지만

제가 성장하는 이 과정이 너무 재미있고 즐겁습니다.. ㅎㅎ

성적이 안좋아도 조급해 하지 않고

제 성장을 위해서 차근차근 실력을 키워나가고 싶습니다.

슬슬 다시 행맨을 완성하기 위해 달려가야겠군요

제 두서없는 넋두리 여기까지 읽어주신분 감사합니다

앞으로 진행 정도나 프로그램 짜면서 느낀점들 여기다가 자주 올리고 싶네요

왠지 여기 게시판 너무 푸근합니다.. (웃음) :)

다들 좋은 주말 보내세요~

blueiur의 이미지


흔히 IT는 미래가 없다 는 말 많이들 하지만,
실력만 있다면 대기업 다니는 친구 부럽지 않은 대우로 멋지게 사실 수 있습니다.

취미를 들이시고, 젊으시니까, 또 학생 이시니까 한번 미친듯이 해보세요.
어느정도 지나고 나서 무언가 한번 보이고 나면 왠만한 코딩은 자연스럽게
손이 갑니다.

저도 학창시절 6개월 미친듯이 했던걸 기반으로 아직도 먹고 살고 있고요^^

건승 빌어드릴게요.

bookgekgom의 이미지

IT 에는 미래가 없단말은 어디 말인가요?

한국에서만 국한된 이야긴가요?

---------------------------------------------------------------------------------------------------------------
루비 온 레일즈로 만들고 있는 홈페이지 입니다.

http://jihwankim.co.nr

여러 프로그램 소스들이 있습니다.

필요하신분은 받아가세요.

doraq의 이미지

지금은 IT가 미래가 없느니 말을 하지만, 97년경에는...

전 그때 게임회사에 있었지요. 어렸을때부터 게임이 만들고 싶었고,
열심히 공부도 해서 게임회사에 들어가 한 2년 했는데..
일도 재밌고 다 좋았어요. 제 이름으로 시장에 나온게임도 몇 개되고.
돈 안벌리는거 빼고는요.
30만원부터 시작해서 수시로 한 5만원씩 올라 2년 넘으니 한 80 주더라구요.
근데 2년 좀 넘는 기간동안 못받은게 500이 넘고..
당시에 생각하기엔 앞으로 이 시장은 10년이 지나도 안되겠다. 싶었어요.
그래서 꿈을 접고 업종을 바꿨죠.
미래는 어찌 바뀔지 모르는거더라구요.

sydsyddl의 이미지

실력만이 경쟁력인듯 합니다.

열심히 하는 모습을 보여드리겠어요!! ㅎ

완다의 이미지

그 순간순간을 즐겁게 보내신다는 게 다행이네요.

전 이번에 큰 맘먹고, 논리회로 관련 책을 사서 도전해 보고 있는데,

플립플롭이 어떻고 비동기 입력이 어쩌고 저쩌고..

한동안 책을 노려보다가 방금 접속했습니다.

sydsyddl님의 글을 보니,

저도 굴하지 말고 다시 차근차근 전진해 나가야 겠다는 의욕이 생기는 군요.

^^

sydsyddl의 이미지

전공이se임에도 불구하고

저희학교는 이번년도 부터 논리회로의 이론과 실습을 같이 하죠

이제 슬슬 카노맵을 배우고 부울대수식을 간략화 하는 재미도 쏠쏠합니다.

그리고 브레드보드(선배들은 빵판이라고들 하시더군요)에

회로를 직접 작성하고 완성시키는 재미또한

몇날 몇일 코딩하고 프로그램을 완성시켰을때의 기분과 비슷하더군요 :)

haginara의 이미지

의외로 디지털 회로쪽도 잼있더라구요 :)

학교다니는게 잼있네요

Darkcircle의 이미지

코딩하고 프로그래밍하고 만들고 이런 식의 단순한 생각으로는...
옛날 컴공출신과는 달리 요즘 컴공 출신은 살아남기는 절대로 쉽지 않을겁니다.
그걸 활용해서 다른 분야와 접목을 시키려고 해야죠.

에... 그러니까... 제 얼마전 j* 님께 들은 말씀을 인용하자면...
컴공 졸업했다고 그게 인생의 끝이고 취업의 시작은 절대 아니라는겁니다.
그래서 전공만 배우는게 아니라 이것저것 교양도 같이 배우는거죠...

/( -_-) (틱틱...) 음... 새...생각하는 힘이 중요합니다.
오지랖 넓다는 소리 들을 정도로.. 학부생이시라면..
이쪽으로 나가야겠다고 그거만 파는게 아니라 이것저것 두루두루....
( 두루치기 먹고 싶네 -ㅛ- ... )

---------------------------------------------------------------
피곤함 1테라톤을 가방 보따리에 주섬주섬 짊어메고 다니는 아이 . . . Orz

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

samjegal의 이미지

저도 군대갔다오니까.. 이상한.. 구멍뚫린 흰색 빵같이 생긴 판에다가 열심 꼽고 돌리더군요

처음에는 남들보다 2시간 늦게 가고.. (어떻게 사용하는지를 몰라서 ㅠㅠ)

하지만 지금은 누구보다 더 빨리하고 정확하게 할수 있더군요. 정말 재밌습니다.

뭐 빨리하면 빨리보내준다기에 더 열심히 하는거지만 하하..

얼마전에 카노맵(Karnaugh Map).. 프로그래밍 하는 게 있었는데..

포인터로만 짜라길래 링크드 리스트로.. 요새 과제는 배열로 안하고 몽땅다

링크드 리스트로만 짜서.... 이상한 습관이 붙었어요.

아무튼 그 프로그램 2일동안 고생하면서 짜고난뒤 결과를 확인받는 순간 얼마나 기쁘던지..

정말 컴과에 오길 잘했다는 생각이 들더군요.

/*
* 한순간에 불과한 인생에서 내가 있었다는 증거를
* 기록해두고 싶기에 사람은 외부기억에 그걸 맡긴다.
*/


/*
* 한순간에 불과한 인생에서 내가 있었다는 증거를
* 기록해두고 싶기에 사람은 외부기억에 그걸 맡긴다.
*/

JuEUS-U의 이미지

포인터 선언 후에 배열로 메모리 얼로케이션 하면 안되는건가요 ^^;;;

오호라의 이미지

볼링점수 계산하는걸 2001년 추석때 인디펜던스데이 보면서 삼일동안 짠던 기억이 있네요.

강사분께서 1학기때 베이직수업에서도 똑같은 것을 내줬는데 애들이 어려워 했다고, 2학기는 샘플코드를 주시더군요.

1, 2프레임만 계산가능한 코드였는데, 그 코드보고 하루만에 끝날 일을 삼일이나 걸렸죠.(ㅡㅡ;)

하긴 그분에게 BNF를 물어보니까. 모르시더라구요. 학부까지는 전자였는데, 석사부터 컴공쪽으로 오셨던데 사람은 참 좋았는데 실력은 그닥...(ㅡㅡ;), 그때 알았죠.

그후로 몇분을 더 보니까. 박사랑 코딩실력은 별게구나.(ㅡ;ㅡ)

암튼 너무 걱정안하셔도 될듯합니다. 그 당시에 주간 2반, 야간 2반이었는데 대략 150명 + 선배 몇명들 중 이 과제를 낸 사람은 20%도 안됐습니다. 20%중 소스를 copy & paste 안한 사람은 10명내외가 되더군요. 제대로 동작했던 소스는 제가 확인바로 저말고 없었습니다. (^^;)

물론 긁어온 소스를 낸 사람들중에서는 제대로 동작하는 소스가 몇개 있었습니다. 그 당시 수십명이 인터넷으로 긁어모을 때로 긁어모은 소스를 아는 동생들이 대거 부탁해서 봐줬는데 한결같더군요.

int score[20] = { 10, 0, 10, 0 ... }
 
or
 
int first[10] = { 10, 8, 10, 0 }
int second[10] = { 0, 2, 0, 0 }
 
 
if( frame == 1 )
{
    if( first[0] == 10 )
       score = first[0] + first[1];
    ...
}

현재 1프레임 치고 있는데 미래일을 어떻게 아는지 다음프레임 점수를 미리 읽어오더군요.

물론 강사분께서 주신 샘플코드도 똑같더군요. (ㅡㅡ;)

언제부터 볼링칠때 점수계산이 배치파일로 읽어 됐던건지...(ㅡㅡ;)

대부분 저학년 과제라서 그런지 리얼과 배치개념도 없더군요. 물론 저도 그때 1학년이었지만 ^^;

위와 같은 이유로 실제 볼링을 칠때 스트라이트, 버키, 터키 등에서 실점수계산이 안되고, 화면에는 X, X, X 이런 식으로 표시되는 이유입니다. 하긴 저도 누가 말해준 건 아닌데 짜다보니 그렇게밖에 할수 없더군요.

너무 어려워 하지말고 임의의 볼링점수 셋을 가지고 1~10프레임까지 순차적으로 한프레임 한프레임 점수를 손수 써보시고, 표를 만든다음,

숫자(점수)에 마킹(first, second)을 해보시고, 스페어, 스트라이크시에는 index를 마킹해보세요. index란 배열의 인덱스처럼을 말합니다. 그러면 일정한 룰이 뛰어 나옵니다.

위에서는 경우의 수가 많다고 하셨지만, 실제로 4가지로 압축됩니다. ^^;
그래서, 코딩해보셔민 #include 부터 return 0; 까지 개행할거 다하고 해도 20 ~ 30밖에 안나옵니다. ^^;

저도 02년에 구한 소스들은 수백라인씩 되어서, 그당시 짠 소스를 천리안에 올려놨는데, 몇년전에 검색해보니 레포트관련 사이트소스들이 대폭 라인수가 줄고, 제가 짠 소스랑 거의 비슷하게 바뀌었더군요.

물론 알고리즘이 뻔하니 다듬다보면 소스야 똑같아지겠지만 마음한구석에서는 은근히...(ㅋㅋ)

결론은 볼링점수 계산하는거 짜는게 은근히 난이도가 있습니다. 그러니 너무 힘들어 하시지 않아도 될듯합니다. 우리회사분들 중에서도 시간이 오래걸리나 소스가 수백라인되게 짤만한 사람들이 부지기수이고, 여기 분들을 의심하는건 아니지만, 똑같은 상황이겠죠. 결국은 지금 겪는 어려움은 누구에게나 똑같습니다. ^^

Hello World.

sydsyddl의 이미지

항상 안테나를 세우고 살면서

어려움이 생겨도 헤쳐나갈 수 있는 방법을 찾아나가는 마음가짐이 중요한듯 합니다:)

한줄로 서서 순식간에 끝나는 100미터 경기가 아니라

첫출발은 조금 차이 나지만

포기하지 않는 자만이 통과 할 수 있는 마라톤 같다는걸 느낍니다^-^

linlin의 이미지

모르면 물어 보시길. 데드라인 넘어서 열심히 숙제 하는 것 좋지 않습니다.

보통 30분 이상 붙잡고 고민해도 잘 안되면 그건 내가 혼자서 해결하기에는 무리수가 있다는 얘기입니다. 교수님 오피스를 찾아가든지, 교수님이 바쁘다고 버티면 랩 대학원생 중 물어볼 사람 소개라도 시켜달라고 하든지, 아니면 같이 수업 듣는 학생들 중에서 코드 잘짜는 친구한테 물어보시길.

소위 리서치는 몇날 몇일이고 붙잡고 앉아 있어도 되고 또 그렇게 하는게 맞지만 수업은 그렇게 하면 안됩니다. 이렇게 하다간 열심히 해도 왜 이렇게 결과가 안나오나... 혹은 여러 과목에서 숙제가 조금만 동시에 쌓여 버리면 줄줄이 데드라인 빵꾸나면서 점수가 떨어지는 문제가 생깁니다. 이거 별로 좋은 거 아닙니다. 특히 복학생들이 군인 정신으로 무장하고 열심히 공부하는데... 이것 잘못하면 단기 효과에 그치는 경우가 생길 수 있습니다.

손코딩의 중요성 같은 것도 그래요. 너무 답변이 두루뭉술하죠. 질문을 구체적으로 하고 답변도 구체적으로 받으시길.

아... 그리고 요즘은 위대하신 구글님도 있군요. 소스코드 찾아보면 나올겁니다. 하지만 가능하면 직접 사람들에게 묻고 다니는 것을 추천하고 싶네요.

sydsyddl의 이미지

풀리지 않는 것들을 너무 오래 붙잡아 두지 말고

최대한 주변 사람들에게 질문하고

그 질문도 구체적이고 상세하게

답변도 마찬가지.

자기 발전도 발전이지만

발전만큼이나 성적또한 중요하다는걸 느낍니다.

성적이 안좋다는게 거기서 그치는게 아니라

시간도 허비하게 되니깐요 :)

linlin 님 감사합니다.

Darkcircle의 이미지

교수님에 따라 다른데 어떤 교수님은 데드라인 넘겨도 분기만 안지나갔다면 과제 제출하라고 하시는 분이 있습니다.
그러니까 중간고사 이전을 1분기로 하자면... 1분기 종료 전까지 과제를 제출하면
그 제출한 것에 대한 점수가 중간고사 결과를 학교 교무처에 제출할때 반영이 되더군요...
만약 1분기 지나고 과제를 제출한다면...
그 다음 기간은 2분기가 시작되는거고 중간성적 처리 기간이 만료되었기 때문에
반영을 할 수가 없어서 해당 과제에 대해 0점 처리가 되더랍니다...
과제를 안내면 0점이지만 과제를 내면 10점만점에 5점이 들어갈 수 있죠.
내는거랑 안 내는거랑은 차이가 있단 말입니다. 뭐... 그게 교수님에 따라 다르겠지만요.

물론 제 생각으로도 데드라인 넘겨서까지 너무 열심히 숙제하는건 좀 별로인 것 같습니다.
잘못하면 습관 드러워집니다. 저같은 경우에는 한때... 레포트에 한 학기동인 미쳐봤는데
레포트가 무슨 인생의 전부인양... 그렇게 생각될 때도 있더군요...

---------------------------------------------------------------
피곤함 1테라톤을 가방 보따리에 주섬주섬 짊어메고 다니는 아이 . . . Orz

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

sydsyddl의 이미지

몸관리 하면서

효율적으로 해야겠네요

저역시도 지금 시험공부 한다고

코딩은 못하고 있지만

교수님들도 끝까지 제출하는 사람이랑 안하는 사람 구분한다고 하셨으니

포기는 배추셀때나 쓰겠습니다-_-)/ㅋㅋ

JuEUS-U의 이미지

성장을 위해 달려간다는 말 참 멋지네요 ㅎㅎㅎ
아무리 그래도 공부라는게 자기 자신을 위한 일 아니겠습니까 ㅎ

sydsyddl의 이미지

한번씩 여유있게 자기자신을 뒤돌아 보면

어느샌가 성장해있는 모습을 보게되고

또 그걸 발판으로 삼아

더욱더 발전할 수 있는 그런 모습.

상상만 해도 짜릿하네요 :)

오호라의 이미지

심심해서 개콘보면서 짜봤습니다.

#include <stdio.h>
 
#define FRAME   (11)
 
typedef enum { START = 0, FAIR = 1, SPARE = 2, STRIKE = 10, DOUBLE = 20 } STATE;
 
int main( int argc, char* argv[] )
{
    int     score           = 0;
    int     frame;
    int     first[ FRAME ]  = { 0, };
    int     second[ FRAME ] = { 0, };
    int     third           = 0;
 
    STATE   before_frame_state = START;
 
    /* 1 ~ 10 frame */
    for( frame = 1 ; frame < FRAME ; frame++ )
    {
        if( frame != 10 )
            fscanf( stdin, "%2d%2d", &( first[ frame ] ), &( second[ frame ] ) );
        else
            fscanf( stdin, "%2d%2d%2d", &( first[ frame ] ), &( second[ frame ] ), &third );
 
        /* 전 프레임에 대한 계산
        switch( before_frame_state )
        {
            case DOUBLE:
                score += first[ frame ] + first[ frame ] + second[ frame ];
            break;
            case STRIKE:
                score += first[ frame ] + second[ frame ];
            break;
            case SPARE:
                score += first[ frame ];
            break;
        }
        */
 
        switch( before_frame_state )
        {
            case DOUBLE:
                score += first[ frame ];
            case STRIKE:
                score += second[ frame ];
            case SPARE:
                score += first[ frame ];
            break;
            case START:
            case FAIR:
            break;
        }
 
        /* 현재 프레임 계산 */
        score += first[ frame ] + second[ frame ] + third;
 
        /* 현재 프레임에 대한 상태 */
        if( STRIKE == first[ frame ] )
        {
            if ( before_frame_state == STRIKE || before_frame_state == DOUBLE )
                before_frame_state = DOUBLE;
            else
                before_frame_state = STRIKE;
        }
        else if ( STRIKE == first[ frame ] + second[ frame ] )
            before_frame_state = SPARE;
        else
            before_frame_state = FAIR;
 
    fprintf( stdout, "before_frame_state : %2d, frame : %2d, first %2d, second : %2d, third : %2d = %3d\n", \
             before_frame_state, frame, first[ frame ], second[ frame ], third, score );
 
    } /* for */
 
    fprintf( stdout, "Total : %d\n", score );
 
    return 0;
}

Bowling Score Calculator : http://public.csusm.edu/public_html/veres/
Bowling Score Generator : http://ourworld.compuserve.com/homepages/kennmelvin/scorer.htm

^^;

위의 볼링점수 계산해주는 사이트 스코어보드에 출력되는 점수와 코드에서 출력되는 각프레임 점수가 틀린 이유를 출력타이핑의 차이일뿐입니다. ^^

ps. 과제때문에 웹검색해서 보시는 분들!! 이 소스보시면 별 도움이 안될 겁니다. 본인이 어느정도 짜본후에 감을 잡고 보셔야 좋을듯 하네요. 위에서 말한 것처럼 경우의 수가 많은 것처럼 보이지만, 결국 4가지( 더블, 스트라이크, 스페어, 페어 )로 구분 됩니다. 점수 옆에 인덱스를 마킹해보시고 여러가지 샘플을 직접 손으로 계산해보시면 위의 코드가 보일듯 싶네요. 그리고, 코딩할대는 array에 특정 점수를 넣어놓고 하시면 그 특정점수에 맞추어서 코딩하게 되므로 바람직하지 않습니다. 그리고, 실수하기 쉬운 점이 다음프레임의 값을 읽어오는 짓(?)을 해버리죠. 단순 점수계산이 아니라, 위 분처럼 점진적으로 게임에 반영하실려면 나중에 코드수정이 불가피하겠죠. 점수는 리얼(?)하게 들어노는 계산방식은 배치식이니까요.

마지막으로 실제 볼링장의 점수표기법은 점수가 확정되는 순간 그 전까지의 프레임의 점수를 모두 표시합니다.

이런 리소스가 많아질수록 교수, 강사님들의 과제는 진화할 뿐입니다. ㅋㅋㅋ

댓글 첨부 파일: 
첨부파일 크기
Plain text icon perfect.txt64바이트
Plain text icon spare.txt54바이트

Hello World.

superwtk의 이미지

마감일 지나도 받아주는거 정말 부럽네요... 전 마감일 이후에 제출하면 0점 받습니다 ㅠㅠ

--------------------------------------------------------------------------------
http://blog.superwtk.com