상세 컨텐츠

본문 제목

유치원생을 위한 프로그래밍 세 번 째 날

etc

by ryujt 2011. 12. 26. 11:34

본문

도영군이 오전에 일어나자 마자 프로그래밍 공부 하자고 졸라서 세 번 째 수업을 마쳤습니다.  오늘은 반복문입니다. 

일단 이미 배웠던 '별표를 그대로 출력해라!" 써라 대신 출력이라는 말로 바꿔서 연습시키고 있습니다.

program Step_03;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  BaseTools in '..\..\Lib\BaseTools.pas';

begin
  write('*');
end.

이미 배운 것이라서 쉽게 따라하더군요.  "이제 반복문을 알려주기 위해서 별표를 반복해서 출력하려면 어떻게 해야 할 까?"라고 물으니  도영군이 바로 아래와 같이 하더군요.

program Step_03;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  BaseTools in '..\..\Lib\BaseTools.pas';

begin
  write('**************************************************************');
end.

켁!  아빠가 졌다.  그래도 일단 진도는 나가기로 했습니다.  "백 만 개를 그려 볼래?"   도영군이 웃더군요.  그제서야 반복문을 소개 할 여유가 생겼습니다.

"영어로 반복이 모지?"
"음..?"
"엄마한테 물어보고 와!"

그렇게 해서 repeat가 반복이고 until은 언제까지 반복해야 하는 지 알려준다고 말해줬습니다.  이 부분이 참으로 마음에 들지 않습니다.  초보를 위해서 그냥 무작정 반복 할 수 있는 예약어를 추가하고 싶더군요.  조건이니 boolean이니 하는 것은 초보에게 너무 버겁기 때문입니다.  어쩔 수 없이 그냥 "until false"를 통째로 끝없이 반복하는 것이라 알려줬습니다.

program Step_03;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  BaseTools in '..\..\Lib\BaseTools.pas';

begin
  repeat
    write('*');
  until false;
end.

그리고, 흥미를 유발하기 위해서 파도 타기 예제를 마무리로 수업을 마쳤습니다.  한 줄 씩 뛰어서 출력하기 위해서는 Line의 약자 Ln을 뒤에 붙인다고 이미 설명을 마쳤었기 때문에, Write 대신 WriteLn을 사용하도록 하였습니다.  줄 맞추기는 나중에 제가 손을 봐줬습니다.

program Step_04;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  BaseTools in '..\..\Lib\BaseTools.pas';

begin
  repeat
    writeln('*');
    writeln('**');
    writeln('***');
    writeln('****');
    writeln('*****');
    writeln('****');
    writeln('***');
    writeln('**');
    writeln('*');
  until false;
end.

파도가 너무 정신없이 흐르기 때문에 느리게 할 필요가 생겼습니다.  

"한 줄 씩 출력하면서 컴퓨터를 자게 만들자!  잠자다가 영어로 모지?"
"Sleep이요"  (대답을 유도하는데 한 참 걸렸음)
"한 줄 출력 하고 난 뒤에 50 셀 때까지 자라고 하자!"

컴퓨터는 숫자를 빨리 센다고 설명해줘야 했고, 밀리세컨드와 같은 불필요한 요소들은 설명을 생략하였습니다.  최소한의 정보로 최대한의 결과를 만들어야 초보자에게 접근하기 쉽기 때문입니다.

마지막 코딩은 제가 도와 줬습니다.   도영군이 이미 독수리 타자를 하는데 지쳐버렸기 때문입니다.

program Step_04;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  BaseTools in '..\..\Lib\BaseTools.pas';

begin
  repeat
    writeln('*');
    sleep(50);

    writeln('**');
    sleep(50);

    writeln('***');
    sleep(50);

    writeln('****');
    sleep(50);

    writeln('*****');
    sleep(50);

    writeln('****');
    sleep(50);

    writeln('***');
    sleep(50);

    writeln('**');
    sleep(50);

    writeln('*');
    sleep(50);
  until false;
end.



 

관련글 더보기