0.1 ตัวอย่างโจทย์ คำถาม-คำตอบ-วิธีหาคำตอบ อย่างน้อย 10 ตัวอย่าง
0.2 จุดประสงค์การเรียนรู้ ของแต่ละโจทย์
ลิงค์ไฟล์ตัวอย่าง : https://docs.google.com/document/d/1fJFepK6fUaud0UcvuyQqfbr2wzhdfk1ppC9pKc4zYIc/edit?tab=t.0
1. โจทย์ คำถาม-คำตอบ-จุดประสงค์คำถาม/คำตอบ ต้องการให้เรียนรู้อะไร
2. โจทย์นั้น สามารถทำให้เป็นโจทย์ไม่ซ้ำกันได้ (แบบง่ายๆ โดยใช้คำสั่งคอมพิวเตอร์)
3. จุดประสงค์ของการโจทย์ ต้องมีประโยชน์ในทางการเรียน การศึกษา
เพราะเมื่อทำแบบทดสอบเสร็จแล้ว ต้องเขียนบทความ และบทความที่จะนำเสนอต้องน่าสนใจ (ชูประเด็นข้อ 2, 3) บทความจึงจะผ่านและนำเสนอวิชาการได้
1.1 เตรียม coding คำถาม-คำตอบ-วิธีหาคำตอบ-จุดประสงค์การเรียนรู้
1.2 coding คำถาม-คำตอบ (QPrototype1_id)
1.3 ต้นแบบ แบบทดสอบ (prototypeId) คลิกลิงค์และทำสำเนาไฟล์
1.4 ลิงค์ไฟล์ 2, 3 แชร์ muang.hom.68@gmail.com แบบ viewer (อ่านได้อย่างเดียว)
1.5 ทำชั้น 3 (ด้านล่าง) เพื่อทดลองสร้างแบบทดสอบ 1 ไฟล์
ชีท cfg_ คัดลอกบรรทัด 2 นำมาเพิ่ม และแก้ไข
ลำดับ ใส่รหัส 2 ตัวแรกของรหัสนักศึกษา (รหัสปีที่เข้าศึกษา)
ชื่อแบบทดสอบ (quizName, fileName) เหมือนกัน
syy-xxx กำหนดโดย s ตามด้วยรหัสปีนักศึกษา รหัสนักศึกษา 3 ตัวท้าย
หรืออื่นๆ ตามสะดวก
คอลัมน์ prototypeId (ลิงค์ไฟล์จากข้อ 2.3)
คอลัมน์ QPrototype1_id (ลิงค์ไฟล์จากข้อ 2.2)
คอลัมน์ numQ - จำนวนข้อใหญ่
คอลัมน์ sub_nQ - จำนวนข้อย่อยในใหญ่
ชีท experimentee
เพิ่มข้อมูลผู้ทำแบบทดสอบ 1 คน ( 1 บรรทัด)
กำหนด email เป็นเมลของผู้ทำแบบทดสอบ ซึ่งจะสามารถเปิดไฟล์ทำแบบทดสอบได้
quizName ชื่อแบบทดสอบ (ชื่อตรงกับข้อ 3.3.1.2 ชื่อแบบทดสอบ)
starttime เวลาเริ่มทำแบบทดสอบ
deadline เวลาเก็บแบบทดสอบ (หมดเวลาทำแบบทดสอบ)
code รหัสการสร้างแบบทดสอบ (กำหนดเป็น 0 เพื่อกำหนดให้สร้างแบบทดสอบ)
ชีท sAct_
บรรทัด experimentee genQ ในช่องคอลัมน์ code กำหนดเป็น 0
คอลัมน์ method กำหนดงาน
genQ สร้างแบบทดสอบ
e-mail แจ้งแบบทดสอบทางเมล
PRE แจกแบบทดสอบ=เริ่มทำ
EDIT เก็บแบบทดสอบ
VIEW-IA ตรวจ
คอลัมน์ code กำหนด 0 หมายถึงให้ทำงาน
คอลัมน์ DateTime กำหนดเวลาที่เริ่มทำงาน
ไฟล์โจทย์-รูป
ไฟล์ต้นแบบ แบบทดสอบ
ไฟล์ระบบ genQ Template
ชีท cfg_
ชีท sAct_
ชีท pquiz_
ชีท cfg_ (รวมถึงชื่อชีทที่ชื่อขึ้นต้นด้วย cfg_)
ความหมายของแต่ละคอลัมน์
quizName
ชื่อแบบทดสอบ
prototypeId
โครงร่างแบบทดสอบ
ข้อมูลผู้ทำแบบทดสอบ (ชื่อ รหัส อีเมล ฯลฯ)
ข้อมูลแบบทดสอบ (วิธีการทำ คำอธิบายเนื้อหา ฯลฯ)
โจทย์คำถาม-ช่องคำตอบ
senderName
หัวเรื่อง นำไปใช้ประกอบการส่งอีเมล
fileName
ใช้เหมือนกับ quizName
method
เลือกใช้ module ในการสุ่ม/สร้างโจทย์
evaluateAnsfn
เลือกใช้ module ในการตรวจคำตอบ
evaluateAns_code
รหัสการตรวจเฉพาะเจาะจง
1 (ค่าปริยาย)
QPrototype_id
ไฟล์โจทย์-รูป สุ่มเลือกโจทย์-รูป เพื่อนำมาใช้สร้างโจทย์ 1 ข้อใหญ่
ไฟล์โจทย์-รูป แต่ละไฟล์ไม่ควรเกิน 150 บรรทัด
มีหลายไฟล์ได้ โดยเพิ่มคอลัมน์และกำหนดเป็น QPrototype1_id, QPrototype2_id, QPrototype3_id, ..., QPrototype10_id
PreQScript_id
ไฟล์ชุดคำสั่ง 1 (ถ้ามี) ทำงานก่อนไฟล์โจทย์-รูป
PostQScript_id
ไฟล์ชุดคำสั่ง 2 (ถ้ามี) ทำงานหลังไฟล์โจทย์-รูป
QPrototype_mode
0 หรือไม่กำหนดค่าใดๆ (ปล่อยว่างไว้) หมายถึง สุ่มรูปโจทย์จากไฟล์ที่กำหนดในหัวข้อ QPrototype_id โดยไม่คำนึงว่าจะเป็นโจทย์ข้อใหญ่ใด
1-1 หมายถึง สุ่มรูปโจทย์จากไฟล์มาเป็นข้อใหญ่ที่แตกต่างกัน โดยสุ่มรูปโจทย์จาก QPrototype1_id มาเป็นโจทย์ข้อใหญ่ข้อ 1 และสุ่มรูปโจทย์จาก QPrototype2_id มาเป็นโจทย์ข้อใหญ่ข้อ 2 เป็นต้น
QPrototype1_id, QPrototype1b_id, QPrototype1c_id เป็นไฟล์โจทย์-รูปในกลุ่มข้อใหญ่เดียวกันตามข้อกำหนด 1-1
numQ
จำนวนข้อใหญ่
sub_nQ
จำนวนข้อย่อยในแต่ละข้อใหญ่
Solving_id
ไฟล์ต้นแบบใช้ประกอบในการตรวจ (แบบทดสอบที่เป็น google sheet)
รูป/โจทย์ข้อความ
ข้อมูลโจทย์
Q.information ข้อความประกอบโจทย์หลัก
Q.select ตัวเลือกโจทย์หลัก
Q.variable รายชื่อตัวแปร
Q.variable.v1 = [ ]; // รายการข้อมูลในอะเรย์จะถูกสุ่มขึ้นมา 1 ตัว เก็บไว้ในตัวแปร v1
Q.variable.v2 = [ { v2: value1, v3:value2 }, { } ]; //กรณีกำหนด รายการข้อมูลในอะเรย์เป็นวัตถุ ข้อมูลที่สุ่มขึ้นมาได้ จะถูกเพิ่มเป็นตัวแปรเข้าไปใน Q.variable จากตัวอย่างจะมี Q.variable.v2 และ Q.variable.v3 ด้วย
Q.objective จุดประสงค์โจทย์ (ข้อย่อย)
Q.objective.distance จุดประสงค์คำถามเรื่องระยะทาง
Q.config ข้อกำหนดโจทย์หลัก
Q.figure_desp รูป, ข้อความใต้รูป
ข้อความที่เตรียมไว้แล้ว จะค้นหาดังนี้
สมการที่, ผังงานที่, รูปที่, แผนภาพที่, <โจทย์>
Q.set_Structure เมธอด เรียกใช้หลังจากแปลข้อมูล Q เป็นคำสั่ง เพื่อสร้างโครงสร้างข้อมูล เก็บไว้ใน Q.structure
Q.attribute รายการตัวแปรที่ต้องการส่งออก เพื่อใช้แสดงค่าในโจทย์ต้นแบบ
Q.attribute = { 'v1':Q.variable.v1, 'v2':Q.variable.v2 };
หรือ ถ้าต้องการส่งออกทุกตัวแปรที่อยู่ใน Q.variable
Q.attribute = Q.variable;
q.quest คำถาม
q.ans คำตอบ
คำถามเดียวกัน แต่กำหนดให้ตอบเป็นช่องคำตอบ (หลายคอลัมน์)
กรณีหลายช่องคำตอบ {'multi_ans': [คำตอบพร้อมช่องคำตอบ] }
q.col_name
ชื่อคอลัมน์คำตอบ (default คำตอบ)
q.variable รายชื่อตัวแปร
q.data รายการข้อมูล จะถูกสุ่มออกมา เพื่อนำค่าในตัวแปรไปใช้ประกอบการตั้งคำถาม-คำตอบ
q.inspected การตรวจคำตอบ (ใช้ regular expression)
q.inspected = new RegExp('^takes\\s+a\\s+bath$');
q.inspected = /^takes\s+a\s+bath$/;
กรณีต้องการกำหนด modifiers ทำได้ดังนี้
q.inspected = {'reg': /^number$/, 'modifiers':'i'};
q.select ตัวเลือก/คำแนะนำช่วยในการตอบ
q.config ข้อกำหนดโจทย์ ที่ต้องการแตกต่างจากข้อกำหนดข้อใหญ่
q.solve พิสูจน์, อธิบายวิธีการหาคำตอบ
หลายบรรทัด กำหนดเป็นอะเรย์
q.ans = {'eval' : 'qv.a+{b}' , 'fixed' : 3}
eval - เรียกใช้คำสั่ง eval
fixed - จำนวนทศนิยม โดยถ้า eval แล้วเป็น Number ปรับทศนิยมเหลือตามที่กำหนด
qv - หมายถึง Q.variable
{b} - นำค่าใน Q.variable.b มาใส่แทน
การตรวจ-เฉลย
config.answer_colname
ชื่อคอลัมน์ที่ใช้ในการตรวจ
คำตอบ (default)
config.solve_colname
ชื่อคอลัมน์ที่ใช้ในการแสดงวิธีคิด วิธีหาคำตอบ
คำถาม (default)
กรณีคำตอบมีหลายคำตอบ
config.order
true คำตอบต้องเรียงลำดับ
false ไม่ต้องเรียงลำดับ (default)
config.delim ตัวคั่นระหว่างคำตอบ
, (default)
config.sign ต้องมีตัวเปิด-ปิด
true ต้องมีตัวเปิด-ปิด
false ไม่ต้องมีตัวเปิด-ปิด ก็ได้ (default)
config.open_close_sign
[ ] สัญลักษณ์เปิด-ปิด (default)
รายการที่ไม่ต้องการให้ส่งผ่านไปไฟล์แบบทดสอบ (ข้อมูลประกอบการตรวจคำตอบ)
config.notByPassList
ค่าปริยาย
Q.information ข้อความประกอบโจทย์หลัก
Q.select ตัวเลือกโจทย์หลัก
Q.variable รายชื่อตัวแปร
Q.objective จุดประสงค์
let a = commonProject.NFixed(1.234567, 3); // a = 1.234