100개 언어 Speedrun: 에피소드 53: QBasic

4906 단어 basicdosqbasic
QBasic(또는 QuickBASIC)은 MSDOS와 함께 배포되는 장난감 언어였습니다. 그것은 제 모국어였습니다. 그게 없었다면 제가 이 시리즈를 쓰지 않았을지도 모릅니다. 아마도 저는 True Crime 팟캐스터, 고양이 행동주의자, 초콜릿 테이스터 또는 요즘 개발자가 아닌 다른 직업이 될 것입니다.

이 고대부터 저장된 코드가 없으며 기억이 많이 나지 않습니다. 나는 꽤 빨리 터보 파스칼로 옮겼다고 생각합니다. 아니면 레고로. 과거는 모두 모호합니다.

이러한 고대 소프트웨어를 실행하기 위해 우리는 DOS용 Docker와 같은 DOSBox를 사용할 것입니다.

QBasic 설정 방법


  • brew install dosbox와 같이 dosbox를 설치합니다.

  • download QBasic from this website - "QuickBasic 4.5 EN"을 사용했습니다
  • .
  • 어딘가에 풀고, ~/qb에 풀었습니다.
  • 같은 내용을 반복해서 입력하는 것을 피하고 고해상도 화면에서 더 읽기 쉽도록 크기를 조정하려면 dosbox.conf 를 만드십시오. (필요하지 않은 Dvorak 키보드도 사용). 이 프로젝트에 대한 내 말은 다음과 같습니다.

  • [sdl]
    windowresolution=1600x1200
    
    [autoexec]
    keyb dv103
    mount c ~/qb
    c:
    qb
    


    그런 다음 dosbox dosbox.conf로 dosbox를 시작하면 QBasic으로 바로 연결됩니다.

    안녕, 세계!



    다음 코드로 HELLO.BAS를 생성해 보겠습니다.

    CLS
    PRINT "Hello, World!"
    END
    




    그리고 F5로 실행합니다.



    지금까지는 좋았지만 실제로 HELLO.BAS 파일을 검사하면 텍스트 파일이 아니라 이상한 바이너리입니다. 이제 한 걸음 물러서서 다른 이름으로 저장 대화 상자를 다시 살펴보겠습니다.



    Windows 파일 끝(음, DOS 줄 끝) 외에는 이제 완벽하게 정상적인 파일처럼 보입니다. 그래서 우리는 마침내 코딩에 도달할 수 있습니다.

    아 그리고 caps lock에 저항하지 마십시오. QBasic은 내부 문자열 등을 제외하고 무엇을 입력하든 자동으로 대문자로 변환합니다. print 를 입력하면 PRINT 로 바뀝니다.

    피즈버즈



    특히 인터넷 이전 시대에 QBasic의 가장 좋은 점은 내장된 도움말 시스템이었습니다.

    반복하는 방법을 기억하지 못하는 경우 for 를 입력하고 F1을 누르면 관련 도움말 페이지가 열립니다.

    도움말 시스템의 도움을 받아 FizzBuzz 프로그램을 만들 수 있습니다.

    CLS
    
    FOR I = 1 TO 20
      IF I MOD 15 = 0 THEN
        PRINT "FizzBuzz"
      ELSEIF I MOD 5 = 0 THEN
        PRINT "Buzz"
      ELSEIF I MOD 3 = 0 THEN
        PRINT "Fizz"
      ELSE
        PRINT I
      END IF
    NEXT I
    


    피보나치



    QBasic은 한 번에 하나의 기능만 표시하려고 하므로 동일한 파일에서 기능 간에 전환하려면 F2 를 눌러야 합니다.

    DECLARE FUNCTION FIB! (N!)
    CLS
    FOR N = 1 TO 10
      PRINT "FIB(" + STR$(N) + ")=" + STR$(FIB(N))
    NEXT N
    
    FUNCTION FIB (N)
      IF N <= 2 THEN
        FIB = 1
      ELSE
        FIB = FIB(N - 1) + FIB(N - 2)
      END IF
    END FUNCTION
    


    흥미로운 점은 내가 그 DECLARE FUNCTION FIB! (N!) 줄을 쓴 것이 아니라 파일을 저장할 때 QBasic이 추가했다는 것입니다. QBasic은 소스 코드 텍스트에서 실행 가능한 프로그램으로의 단방향 흐름을 실제로 따르지 않으며 모두 더 통합되어야 한다고 생각합니다.

    제도법



    QBasic은 몇 가지 단순한 그래픽을 지원했습니다. 지원되는 모드 중 하나로 화면을 변경할 수 있습니다. 예를 들어 VGA 모드 13은 256색의 320x200이었습니다. 시도해 봅시다:

    SCREEN 13
    FOR I = 1 TO 500
      X = RND * 320
      Y = RND * 200
      C = RND * 256
    
      CIRCLE (X, Y), 4, C
    NEXT I
    


    그리고 그것은 다음과 같이 보입니다 :



    그 원이 예상했던 것만큼 둥글게 보입니까, 아니면 그다지 둥글지 않습니까?

    QBasic은 매우 간단한 장난감 "텍스트 게임"에는 괜찮았지만 내 기억으로는 대화형 그래픽이나 그래픽 게임에는 너무 느렸습니다. 이를 원한다면 Turbo Pascal과 같은 훨씬 더 빠른 것이 필요하며 화면 그리기 기능을 위한 훌륭한 어셈블리가 필요할 수 있습니다. 따라서 모든 아이들이 원하는 주요 작업인 자신의 게임을 작성하는 것만으로도 충분하지 않았습니다.

    QBasic을 사용해야 합니까?



    당연히 아니. 아무도 더 이상 사용하지 않는 시스템의 경우 에뮬레이터에서 코딩하는 것은 매우 지루할 것입니다.

    Some highly nostalgic people created QB64 , 예술품 보존 프로젝트로 괜찮습니다.

    그러나 QBasic은 실제로 좋은 코드 교육 도구가 아닙니다. 단순한 종류의 실제 프로그래밍을 위한 것이 아닙니다. 예전에도 아이들이 프로그래밍이 어떤 것인지 느끼기 위한 장난감에 불과했기 때문에 아마 그때 아이들은 진짜를 시도했을 것입니다. 이를 위해서는 수많은 코딩 게임 중 하나를 플레이하는 것이 좋습니다. 그런 다음 Ruby, Python 또는 JavaScript와 같은 실제 프로그래밍 언어로 시작하십시오.

    암호



    All code examples for the series will be in this repository .

    Code for the QBasic episode is available here .

    좋은 웹페이지 즐겨찾기