กลับไปหน้าบทความ

อ่าน 5 นาที

ยูบาซิก

ทุกหน้าต้องการการล้างข้อมูล/ล่ามขั้นพื้นฐาน/ตระกูลภาษาการเขียนโปรแกรม BASIC/สิ่งประดิษฐ์ของญี่ปุ่น/ภาษาโปรแกรมที่ถูกสร้างขึ้นในช่วงปี 1980/ซอฟต์แวร์ที่เป็นสาธารณสมบัติ/ลิงก์ย้อนกลับเทมเพลต Webarchive

UBASICเป็นโปรแกรมแปลภาษา BASIC แบบฟรีแวร์ สำหรับMS-DOSและWindowsที่เขียนโดย Yuji Kida จากมหาวิทยาลัย

ยูบาซิก

( เรียนรู้วิธีและเวลาในการลบข้อความนี้ )
ยูบาซิก
ผู้เขียนต้นฉบับยูจิ คิดะ
ปล่อยก่อนปี 2548
ระบบปฏิบัติการเอ็มเอส-ดีโอเอส , วินโดวส์
พิมพ์พื้นฐาน
ใบอนุญาตซอฟต์แวร์ฟรี

UBASICเป็นโปรแกรมแปลภาษา BASIC แบบฟรีแวร์ สำหรับMS-DOSและWindowsที่เขียนโดย Yuji Kida จากมหาวิทยาลัย Rikkyoในประเทศญี่ปุ่นโปรแกรมนี้มีความเชี่ยวชาญด้านทฤษฎีจำนวนการทดสอบความเป็นจำนวนเฉพาะการแยกตัวประกอบและจำนวนเต็มที่ไม่เกิน 2600 หลัก ไฟล์ช่วยเหลือมีบทความและบทเรียนสำหรับผู้เริ่มต้นใช้งาน

คุณสมบัติ

UBASIC มีโปรแกรมแก้ไขออนไลน์ในตัวพร้อมเครื่องมือช่วยเหลือในการดีบักหลายอย่าง สามารถแสดงการอ้างอิงโยงไปยังบรรทัดที่เรียกใช้ บรรทัดที่มีตัวแปร และรายการตัวแปร/อาร์เรย์ สามารถเรียงลำดับบรรทัดใหม่ เปลี่ยนชื่อตัวแปร และเพิ่มโปรแกรมเพิ่มเติมได้ สามารถติดตามการทำงานทีละขั้นตอน และจับเวลาเป็นมิลลิวินาทีเพื่อช่วยกำหนดวิธีที่เร็วที่สุดในการทำส่วนที่ทำซ้ำๆ บ่อยๆ สามารถกำหนดฟังก์ชันใหม่ให้กับปุ่มได้ ไม่ว่าจะเพื่อให้ใช้งานง่ายด้วยการกดเพียงครั้งเดียว หรือเพื่อป้องกันไม่ให้ใช้ฟังก์ชันมาตรฐานโดยไม่ได้ตั้งใจ สามารถเรียกใช้ DOS หรือรันคำสั่ง DOS ได้ สามารถแปลงระหว่างชุดอักขระแบบไบต์เดียวและชุดอักขระแบบสองไบต์ได้ แต่เพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ คอมพิวเตอร์โฮสต์อาจต้องมี ระบบปฏิบัติการที่รองรับสามารถเพิ่มหรือแก้ไขเอกสารในUBHELP.HLPได้

การทดสอบความเป็นจำนวนเฉพาะด้วย APRT-CLE (สูงสุด 884 หลัก) (ควรใช้งานบน UBASIC เวอร์ชัน 8.8F หรือใหม่กว่า): กล่าวกันว่าการทดสอบ 500 หลักใช้เวลา 5 ชั่วโมงบน PP-200, 150 หลักใช้เวลาประมาณ 16 นาทีบน 486-100, ประมาณ 2.5 นาทีบน K6@233; 250 หลักใช้เวลาประมาณ 13.5 นาทีบน K6@233 เครื่องคอมพิวเตอร์รุ่นใหม่ๆ สามารถทำงานได้เร็วกว่านี้ถึง 10 เท่า APRT-CLE มักเป็นอัลกอริทึมที่นิยมใช้สำหรับการทดสอบความเป็นจำนวนเฉพาะของจำนวนเต็มภายในช่วงของมัน

การหาตัวประกอบโดยใช้โปรแกรมอย่าง ECMX นั้นค่อนข้างเร็ว สามารถหาตัวประกอบที่มีจำนวนหลักอยู่ในช่วง 20 ต้นๆ ได้ค่อนข้างง่าย 20 กลางๆ ทำได้ยากขึ้นเล็กน้อย และ 20 ปลายๆ โอกาสที่จะสำเร็จก็จะน้อยลง โปรแกรมนี้เคยหาตัวประกอบที่มี 30 หลักได้แล้ว (การหาตัวประกอบด้วยวิธีเส้นโค้งวงรีนั้นมีความเสี่ยงเสมอสำหรับตัวประกอบขนาดใหญ่ ยิ่งทดสอบเส้นโค้งมากเท่าไหร่ โอกาสที่จะสำเร็จก็จะยิ่งมากขึ้น แต่จำนวนเส้นโค้งที่ต้องการ (โดยเฉลี่ย บางครั้งอาจโชคดีหรือโชคร้ายก็ได้) จะเพิ่มขึ้นอย่างรวดเร็วตามขนาดของตัวประกอบ จึงควรใช้เครื่องที่เร็วที่สุดที่มีอยู่เสมอ ECMX ใช้มาตรฐานที่ยอมรับกันโดยทั่วไปสำหรับขีดจำกัดในการหยุดทำงานกับเส้นโค้งหนึ่งและเปลี่ยนไปใช้เส้นโค้งถัดไป มีการทดสอบความเป็นจำนวนเฉพาะเบื้องต้น การหาตัวประกอบขนาดเล็ก และการหาเลขยกกำลัง)

การใช้โปรแกรมแบบตีความช่วยให้สามารถแก้ไขโปรแกรมแล้วเริ่มต้นใหม่ (โดยใช้คำสั่ง `git log` GOTO) ในระหว่างการทำงานได้ แม้กระทั่งการทำงานต่อเนื่องหลายวัน โดยไม่สูญเสียข้อมูลที่สะสมไว้ การหยุดโปรแกรมไม่แนะนำ เว้นแต่โปรแกรมจะบันทึกข้อมูลไว้อย่างปลอดภัยในที่ใดที่หนึ่ง หรือผู้ใช้ลืมเขียนวิธีการบันทึกข้อมูลเมื่อออกจากโปรแกรม (อาจเป็นเพราะพวกเขาไม่ได้คาดหวังว่าจะพบวิธีการบันทึกข้อมูลและพยายามพิสูจน์) เมื่อทำสิ่งใดก็ตามที่อาจทำให้ข้อมูลสำคัญสูญหาย หรือหากคุณจำเป็นต้องทำอย่างอื่นชั่วคราว คุณสามารถบันทึกFREEZEโปรแกรมปัจจุบันลงในไฟล์แล้วเรียกใช้ในภายหลังได้MELT(ตราบใดที่การกำหนดค่าหน่วยความจำด้านล่างยังคงเหมือนเดิม)

UBASIC มีหมายเลขบรรทัดไม่ใช้การเยื้องเพื่อควบคุมโครงสร้าง มีซับรูทีนและฟังก์ชันผู้ใช้ที่มีพารามิเตอร์ที่ส่งผ่านและตัวแปรโลคอล พารามิเตอร์สามารถส่งผ่านได้ทั้งแบบค่าหรือแบบชื่อ ฟังก์ชันผู้ใช้และซับรูทีนสามารถส่งผ่านเป็นพารามิเตอร์ได้ มีป้ายกำกับที่จำกัด มีตัวเลือกต่างๆ สำหรับฟังก์ชันเงื่อนไข ผู้ใช้สามารถเยื้องได้มากเท่าที่ต้องการหรือไม่เยื้องเลยก็ได้ และสามารถมีโครงสร้างมากเท่าที่ต้องการหรือโค้ดที่ยุ่งเหยิงก็ได้ การมองว่า UBASIC "ไม่ทันสมัย" นั้นเป็นความเข้าใจผิด (ดังที่ผู้อ่านบทความที่สับสนระหว่างการเยื้องกับโครงสร้างและไม่นิยมใช้หมายเลขบรรทัดอาจเข้าใจผิด) การมีหมายเลขบรรทัดช่วยให้ข้ามไปยังจุดกลางในรูทีนได้ง่าย ซึ่งบางครั้งอาจช่วยประหยัดการเขียนบรรทัดซ้ำได้

UBASIC เวอร์ชัน 8 มีความสามารถในการคำนวณเลขจำนวนจริงและจำนวนเชิงซ้อนที่มีความแม่นยำสูง (สูงสุด 2600 หลัก) เช่นเดียวกับเวอร์ชันก่อนหน้า และเพิ่มความสามารถในการคำนวณเลขตรรกยะ ที่แม่นยำและการคำนวณพหุนามตัวแปรเดียว ที่มีสัมประสิทธิ์เป็นจำนวนเชิงซ้อน เลขตรรกยะ หรือโมดูลัส pรวมถึง ความสามารถ ในการจัดการสตริงและการจัดการลิสต์แบบจำกัด นอกจากนี้ยังมีเอกสารประกอบออนไลน์ที่แสดงข้อมูลตามบริบท (อ่านUBHELP.DOCสำหรับข้อมูลเพิ่มเติม) ไฟล์ที่ใช้เป็นไฟล์ ASCIIและสามารถพิมพ์เป็นเอกสารกระดาษได้

ณ ปี 2005 ไฟล์ช่วยเหลือมีข้อผิดพลาดมากมาย โครงการแก้ไข/ปรับปรุงที่ใช้เวลาสิบปีใกล้จะเสร็จสมบูรณ์และพร้อมเผยแพร่แล้ว น่าจะภายในปลายฤดูร้อนปี 2005 ไฟล์ช่วยเหลือฉบับใหม่มีนามสกุลใหม่.hlpและในที่สุดชื่อแพ็กเกจคือ u3d748f* รายการอัปเดตมีให้ดูแล้ว แต่การเปลี่ยนแปลงหลายอย่างยังไม่ได้รับการรายงาน

เวอร์ชัน 8.8 มีความแม่นยำแตกต่างจากเวอร์ชัน 8.74

มีคำสั่งใหม่ในเวอร์ชัน 8.8C POLYCONVที่แปลงพหุนามระหว่างค่าโมดูลัสเท่ากับ 0 และค่าโมดูลัสเท่ากับจำนวนเฉพาะ ไม่มีข้อกำหนดการจัดรูปแบบใดๆ

คำเตือน: ห้ามทดสอบสิ่งเหล่านี้ในขณะที่สิ่งสำคัญอื่นๆ กำลังทำงานหรือถูกระงับอยู่ที่อื่น เนื่องจากอาจเกิดอาการค้างได้ โดยเฉพาะอย่างยิ่งสำหรับKEYSCAN. ดู: FREEZE, ROLL, MELT. (สำหรับคำเตือนที่คล้ายกัน)

UBASIC มีอาร์เรย์ หลายประเภท ตัว ดำเนิน การตรรกะตัวดำเนินการบิตโครงสร้างลูปมาตรฐานสี่แบบ และตัวดำเนินการแบบผสม มันสามารถเรียกใช้ รูทีน ภาษาเครื่องเพื่อเพิ่มความเร็ว (ECMX ทำเช่นนี้) แต่คุณต้องรู้ภาษาแอสเซมบลีเพื่อที่จะเข้าใจคำสั่งต่างๆ แค่เขียนTSRในโหมด DEBUG ได้นั้นไม่เพียงพอ

  • ค่าสตริงสามารถคำนวณได้หากสตริงนั้นแสดงถึงสูตรทางคณิตศาสตร์
  • โดยปกติแล้ว สตริงสามารถถูกเรียกใช้งานได้หากสตริงนั้นแสดงถึงคำสั่ง UBASIC
  • ตัวแปรที่เก็บค่าสตริงสามารถใช้แทนสตริงเหล่านั้นได้โดยทั่วไป
  • สามารถเรียงลำดับข้อความตามตัวอักษรได้โดยใช้ค่าต่ำสุดหรือค่าสูงสุด

UBASIC สามารถใช้ประมวลผลข้อมูลได้เกือบทุกประเภท ตัวอย่างเช่น ไฟล์ .WAVมันสามารถประมวลผลไฟล์ข้อความเพื่อแปลงแท็บเป็นช่องว่าง หรือช่องว่างเป็นแท็บได้ โปรแกรมบางโปรแกรมไม่สามารถสร้างแท็บได้ และบางโปรแกรมก็ทำงานได้ไม่ดีเมื่อต้องจัดการกับแท็บ

ประเภทของตัวแปร ได้แก่:

  1. จำนวนเต็ม
  2. มีเหตุผล
  3. จริง
  4. จำนวนเชิงซ้อน
  5. สตริง
  6. พัสดุ (ผสมจากหลายประเภท รวมถึงพัสดุอื่นๆ)
  7. พหุนาม
  8. พหุนามมอดูลัส (สัมประสิทธิ์เป็นจำนวนเต็มมอดูลัสของจำนวนเฉพาะ)

จากการค้นหาทางอินเทอร์เน็ตในช่วงต้นปี 2548 พบเวอร์ชัน 8.74(32), 8.74(16), 8.71(4000(16)), 9.0ZE, 9.0ZC, 9.0E, 8.8F(32), 8.8F(16), 8.8F(C), 8.7E(32), 8.7E(16), 8.30(32), 8.30(16), 7.25(32), 7.25(16), 8.8A(32), 8.8A(16), 8.8A(C), 8.8C(32), 8.8C(16), 8.8C(C), 8.8E(32), 8.8E(16), 8.8E(C) รวมทั้งหมด 12 เวอร์ชัน จาก 52 หมายเลขที่ทราบ หลายหมายเลขเหล่านี้ไม่ได้ระบุอย่างชัดเจน ( (16) และ (32) หมายถึงจำนวนบิตในเอนจินการคูณ (4000) หมายถึงเวอร์ชันพิเศษที่สามารถรองรับได้มากกว่า 4000 หลัก (ผู้ใช้บางรายอาจต้องการเวอร์ชันพิเศษนี้ เช่น เพื่อสร้างตัวเลขเบอร์นูลลี 792 ตัวแรก สำหรับดัชนีคู่ 1584: เวอร์ชันล่าสุดรองรับได้เพียง 540/1080 เท่านั้น) (C) ใช้สำหรับ เครื่อง CGA )

หากคุณกำลังใช้เวอร์ชันที่ใหม่กว่า 8.74 และโดยเฉพาะอย่างยิ่งหากคุณใช้เวอร์ชันที่ใหม่กว่า 8.7E ขอ แนะนำ อย่างยิ่งให้คุณเปลี่ยนไปใช้เวอร์ชันล่าสุด (8.8F) โปรแกรมบางโปรแกรม (เช่น โปรแกรมแสดงผลแบบพิเศษ) ที่เขียนขึ้นสำหรับ 8.74 อาจใช้งานไม่ได้ใน 8.8F โดยไม่ต้องแก้ไขโค้ดอย่างมาก เวอร์ชันล่าสุดจะไม่ลบ อักขระขึ้นบรรทัดใหม่ (carriage return / line feed)ออกจากไฟล์ ASCII และโปรแกรมเช่น UBH (แม้แต่เวอร์ชันใน 8.8F) จำเป็นต้องเพิ่มบรรทัดเพื่อลบอักขระเหล่านั้น โปรแกรมใดๆ ที่เขียนขึ้นสำหรับเวอร์ชันหนึ่งไม่ควรนำไปใช้ในเวอร์ชันอื่นโดยไม่ตรวจสอบก่อน

โปรแกรมบางโปรแกรม เช่น NFS จะทำงานได้เฉพาะในเวอร์ชันทดลอง 9.** เท่านั้น

โปรแกรม ppmpx36e ซึ่งเป็นเวอร์ชันของตัวกรองกำลังสอง พหุนามหลายตัว ต้องการเวอร์ชัน 8.8F และระบบปฏิบัติการ Windows

UBASIC บางเวอร์ชันมาพร้อมกับ ไฟล์ UBCONST7.DAT ที่มีข้อบกพร่อง คุณควรตรวจสอบไฟล์ของคุณกับไฟล์ที่ให้มาในเวอร์ชัน 8.8F หากไม่เหมือนกัน คุณควรเปลี่ยนไปใช้เวอร์ชันอื่น

ตัวอย่างโปรแกรม

ต่อไปนี้เป็นโปรแกรมสั้นๆ ง่ายๆ สำหรับฟังก์ชันนับพาร์ติชัน แม้ว่าจะไม่มีโครงสร้างที่ซับซ้อนมากนัก แต่เป็นโปรแกรมจริง ไม่ได้สร้างขึ้นมาเพื่อบทความนี้ บนเครื่อง Athlon รุ่นใหม่ที่เร็ว โปรแกรมนี้ควรคำนวณจำนวนพาร์ติชันจาก p(0) ถึง p(1000) ได้ในเวลาประมาณครึ่ง วินาที ซึ่งแตกต่างจากการคำนวณครั้งแรกที่ใช้เวลานานกว่าครึ่ง ศตวรรษ หากต้องการบันทึกผลลัพธ์ลงในไฟล์ ให้ลบเครื่องหมายอัญประกาศนำหน้าในบรรทัดที่ 40 ออก (หรือลบเครื่องหมายอัญประกาศนำหน้า)

10 คอนโซล: คอนโซล1 , 24 , 0 : ค้นหา1 , 0 20 พิมพ์CHR ( 2 ); "N" , "P(N)" , "PARTITION COUNT" 30 WORD -19 : POINT -8 : H %= 11 : 'สำหรับ N สูงสุดถึง ~1200 40 'PRINT=PRINT+"PARTN5.TXT":'การเปลี่ยนเส้นทางเอาต์พุต50 N = 0 : 'อินพุต N 60 CLR TIME 70 Mu = PI ( SQRT ( 24 * N -1 ) / 6 ) 80 CLR S 90 สำหรับK = 1 ถึงH % 100 '110 ถึง 160 คือสูตร Selberg 110 CLR C 120 สำหรับL = 0 ถึง2 * K -1 130 IF (( 3 * L ^ 2 + L ) \ 2 ) @ K = ( - N ) @ K 140 : C += ( -1 ) ^ L * COS ( PI (( 6 * L + 1 ) / ( 6 * K ))) 150 ถัดไป160 'เพื่อให้ได้ A(K,N) คูณ C ด้วย SQRT(K/3) 170 U = EXP ( Mu / K ) 180 R = ( Mu + K ) / U: 'เทอมการลู่เข้าของ Rademacher 190 S += (( Mu - K ) * U + R ) * C 200 ถัดไป210 S = ROUND ( ABS ( S * 2 / ( MU * )( 24 * N -1 )))) 220 PRINT CUTSPC ( STR ( N )); 230 LOCATE 38 - ALEN ( S ) : PRINT S 240 IF N < 1000 : INC N: GOTO 70 250 Tt = TIME1000: PRINT = PRINT : PRINT Tt / 1000 260 '~1.7% เร็วขึ้นหาก N,K,L เปลี่ยนเป็น N%,K%,L%

ความแม่นยำ

เมื่อทำงานกับเศษส่วนต่อเนื่อง จำนวนพจน์จะถูกจำกัดด้วยความแม่นยำที่มีอยู่และขนาดของแต่ละพจน์ สูตรโดยประมาณคือความแม่นยำของทศนิยม 2 ตำแหน่งสำหรับแต่ละพจน์ (พจน์คูณด้วยลอการิทึมฐานสิบของพจน์) วิธีเดียวที่จะทำงานดังกล่าวได้อย่างปลอดภัยคือการคำนวณสองครั้งพร้อมกัน โดยป้อนข้อมูลเริ่มต้นไปยังตัวแปรหนึ่งแล้วทำการสุ่มค่าในหลักสุดท้ายหลายหลัก (อย่างน้อย 1 คำ) จากนั้นเมื่อการคำนวณทั้งสองครั้งไม่ให้ผลลัพธ์ที่เหมือนกัน ให้หยุดที่พจน์ก่อนหน้า

UBASIC สามารถคำนวณฟังก์ชันพาร์ติชันได้มากกว่า p(1330521) (ในเวอร์ชัน 8.74 ได้ถึง p(1361911) และเวอร์ชัน 4000 หลักน่าจะได้ค่าที่สูงกว่านี้มาก)

ดูเพิ่มเติม

  • (ภาษาฝรั่งเศส) หน้าแรกของ UBASIC 9.0w
  • (ในภาษาญี่ปุ่น) แคตตาล็อก UBASIC86 โดย ykida (เวกเตอร์)
  • (ภาษาญี่ปุ่น) เว็บไซต์ UBASIC : 3 มีนาคม 2557 
  • เว็บไซต์ UBASIC ฉบับภาษาอังกฤษ : 18 กุมภาพันธ์ 2552
  • UBASIC - Simtelnet (อัปเดตล่าสุด: 25.06.1998)
  • เวอร์ชัน 8.74 ที่ไม่มีข้อบกพร่องถูกเก็บถาวรเมื่อวันที่ 26 มีนาคม 2005 ที่Wayback Machine
  • ศาสตราจารย์ยูจิ คิดะ (อัปเดตล่าสุด: 4 เมษายน 2557 เวลา 09:58)
  • UBASIC 7 ตุลาคม 2000 - เวอร์ชันสุดท้าย 8.8F - เป็นภาษาอังกฤษ (ลิงก์ที่เรียกดูเมื่อวันที่ 17 กันยายน 2017) เก็บถาวรเมื่อวันที่ 8 มีนาคม 2016 ที่Wayback Machine
  • คู่มือการใช้งาน UBASIC - ไฟล์ PDF ที่อนุญาตให้คัดลอกได้ - แก้ไขครั้งล่าสุดเมื่อวันที่ 22 กรกฎาคม 2549 - เป็นภาษาญี่ปุ่น - หน้าเว็บที่เก็บถาวรไว้ใน WayBackMachine ครั้งล่าสุดเมื่อวันที่ 22 กรกฎาคม 2554 (เรียกดูลิงก์เมื่อวันที่ 17 กันยายน 2560)
  • ซอร์สโค้ดสำหรับ UBASIC 9
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=UBASIC&oldid=1342117628 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ยูบาซิก

UBASICเป็นโปรแกรมแปลภาษา BASIC แบบฟรีแวร์ สำหรับMS-DOSและWindowsที่เขียนโดย Yuji Kida จากมหาวิทยาลัย

คุณสมบัติ

UBASIC มีโปรแกรมแก้ไขออนไลน์ในตัวพร้อมเครื่องมือช่วยเหลือในการดีบักหลายอย่าง สามารถแสดงการอ้างอิงโยงไปยังบรรทัดที่เรียกใช้ บรรทัดที่มีตัวแปร และรายการตัวแปร/อาร์เรย์ สามารถเรียงลำดับบรรทัดใหม่ เปลี่ยนชื่อตัวแปร และเพิ่มโปรแกรมเพิ่มเติมได้...

ตัวอย่างโปรแกรม

ต่อไปนี้เป็นโปรแกรมสั้นๆ ง่ายๆ สำหรับฟังก์ชันนับพาร์ติชัน แม้ว่าจะไม่มีโครงสร้างที่ซับซ้อนมากนัก แต่เป็นโปรแกรมจริง ไม่ได้สร้างขึ้นมาเพื่อบทความนี้ บนเครื่อง Athlon รุ่นใหม่ที่เร็ว โปรแกรมนี้ควรคำนวณจำนวนพาร์ติชันจาก p(0) ถึง p(1000) ได้ในเวลาประมาณครึ่ง...

ความแม่นยำ

เมื่อทำงานกับเศษส่วนต่อเนื่อง จำนวนพจน์จะถูกจำกัดด้วยความแม่นยำที่มีอยู่และขนาดของแต่ละพจน์ สูตรโดยประมาณคือความแม่นยำของทศนิยม 2 ตำแหน่งสำหรับแต่ละพจน์ (พจน์คูณด้วย ลอการิทึมฐานสิบ ของพจน์)...