การบ้าน (Project) : การสั่งงานให้นักเรียนได้ทำ เป็นสิ่งที่สำคัญมาก ผมได้เรียนแบบอาจารย์ที่เคยสอนผมเสมอ คือ สั่งงานเกือบทุกชั่วโมงเรียน ยกเว้นเทศกาล หรือวันหยุดราชการ ที่เว้นให้นักเรียนได้พักบ้าง สำหรับ project จะต้องใช้หลักการที่สำคัญทั้งหมดที่ได้เรียนมา หรือที่ศึกษาค้นคว้าเพิ่มเติม ด้วยตนเอง และต้องใหญ่พอที่จะใช้เวลาทำทั้งสัปดาห์ไม่เสร็จ แต่จะต้องใช้เวลาทำอย่างต่อเนื่อง ตลอดทั้งภาคเรียน การยอมรับคำวิงวอนให้ลดงานของนักเรียนนั้น อาจทำได้ตามความเหมาะสม กับบทเรียนที่ได้สอนไป แต่ขนาดงานก็ไม่ควรน้อยกว่า การทำให้นักศึกษา ได้ฝึกฝน และใช้เวลาศึกษาด้วยตนเอง (Self learning) อย่างน้อย 1 สัปดาห์ เพื่อทำให้โครงงานสำเร็จลุล่วง และในบางวิชาของการเขียนโปรแกรม ควรมีโครงงานทั้งก่อนสอบกลางภาค และปลายภาค คือมี Project 2 ชิ้น ในวิชานั้น และที่สำคัญที่สำคัญที่สุดสำหรับหลักการสั่งงานของผมคือ งานชิ้นใหญ่จะต้องเป็นงานเดี่ยว เพื่อให้ทุกคนได้มีโอกาสทำด้วยตนเอง มีความภูมิใจในความสำเร็จ และเป็นผู้รับผิดชอบขั้นตอนทั้งหมดด้วยตนเอง ผมจะไม่มอบ project ชิ้นใหญ่เป็นงานกลุ่ม เพราะไม่ต้องการให้นักเรียนคนใดเลย พลาดขบวนการเรียนรู้ แม้แต่ขั้นตอนเดียว และอาจารย์จะต้องมีเวลาที่จะตอบข้อซักถามเสมอ เพราะบ่อยครั้งที่อาจจะสอนผิด สั่งงานผิด นักเรียนนั่งหลับ นักเรียนจดผิด หนังสืออ้างอิงเขียนผิด หรือแม้แต่การตรวจงานผิดของอาจารย์ ก็เป็นได้
กรกฎาคม 2545 หลังจากผมสอนมาสิบปี พบว่าการมอบหมายงานให้นักศึกษาไปทำงานในคอมพิวเตอร์ที่บ้าน โดยให้ฝึกปฏิบัติด้วยตนเอง ประสบความล้มเหลวมาโดยตลอด เพราะมีนักศึกษาส่วนหนึ่ง ไม่มีคอมพิวเตอร์ ไม่สนใจที่จะเขียนโปรแกรม ไม่ต้องการที่จะคิด และยอมแพ้ ทุกครั้งที่ให้เขียนโปรแกรมง่าย ๆ ทั้ง ๆ ที่มีโปรแกรมยาก ๆ รออยู่อีกมากมาย แต่นักศึกษาทำไม่ได้ จึงนึกการให้งานแบบล่าสุดออกคือ การให้ลอกโปรแกรมด้วยมือ เช่น มีโปรแกรมง่าย ๆ หรือควรรู้อยู่ 15 โปรแกรม จึงมอบหมายให้ลอกลงกระดาษ 4 รอบ และให้เสร็จใน 1 สัปดาห์ ผลที่ได้คือนักศึกษาได้อ่านหนังสือ จดจำรูปแบบภาษาได้มากขึ้น งานที่ให้ลอกไม่ได้หยุดที่ 60 โปรแกรม แต่มากขึ้น หรือน้อยลงขึ้นกับความเข้าใจ และเนื้อหาที่สอน การทำให้นักศึกษา คิดเป็น และแก้ปัญหาโจทย์ได้ เป็นอีกปัญหาหนึ่งที่ต้องสอนในห้องปฏิบัติการ ส่วนการจำรูปแบบคำสั่งไม่ได้ แก้ไขได้ด้วยการสั่งให้ลอกโปรแกรมเท่านั้น ความคาดหวังของผู้สอนว่านักศึกษาจะตั้งใจเรียน แล้วกลับไปทำคอมพิวเตอร์ที่บ้าน โดยไม่ลอกเพื่อนเพียงอย่างเดียว ผมทำมา 10 ปี แต่ไม่ได้ผลเลย
หลักการเขียนโปรแกรม
วันอาทิตย์ที่ 30 มกราคม พ.ศ. 2554
5. ตัวอย่างโจทย์ปิรามิด คือแบบฝึกหัดที่ยาก
ตัวอย่างปิรามิดที่มอบหมายให้นักศึกษาไปเขียน (ผมใช้สอนในทุกภาษาที่ผมสอนทีเดียว)
1.
11******11
22****22
33**33
4444
Source Code .java
2.
123***
234****
345*****
456******
Source Code .java
3.
15*****
26******
37*******
48********
Source Code .java
4.
*1
**212
***32123
****4321234
Source Code .java
5.
11
2**2
3****3
4******4
3****3
2**2
11
6. (java % and /)
1010101010101
10101010101
101010101
1010101
10101
101
1
7.
111
12221
1233321
123444321
12345554321
1234566654321
123456777654321
8.
123**
234***
345****
456*****
567******
678*******
789********
9.
111111111
2222222
33333
444
5
10.
151
12421
1233321
123424321
12345154321
11.
11
2 2
3 3
4 4
5 5
12.
123456789
2345678
34567
456
5
13.
987654321
7654321
54321
321
1
14.
12 21
23 32
34 43
45 54
5665
15. (2 * i - 1)
11111 11111
2222 2222
333 333
44 44
5 5
16.
1 *
21 **
321 ***
4321 ****
54321*****
17.
19191919
28282828
37373737
46464646
55555555
18.
1*1*****9
1**2****8
3***3***7
4****4**6
5*****5*5
19.
1*********5
2******** 4
3******* 3
4****** 2
5***** 1
20.
1*1
22**22
333***333
4444****4444
55555*****55555
21.
*******1*7
******2**6
*****3***5
****4****4
***5*****3
22.
*111111111*
* 2222222 *
* 33333 *
* 444 *
* 5 *
23.
1******1
2***** 2
3**** 3
4*** 4
5** 5
24.
1*1111111111
2***22222222
3*****333333
4*******4444
5*********55
25.
****5*****
***444****
**33333***
*2222222**
111111111*
26.
11111*
2222**
333***
44****
5*****
27.
1 *
2 **
3 ***
4 ****
5 *****
28.
54321*12345
5432***2345
543*****345
54*******45
5*********5
29.
1*3***
2*4****
3*5*****
4*6******
5*7*******
30.
*********1
*******21
*****321
***4321
*54321
31.
11111*****
2222 ****
333 ***
44 **
5 *
32.
1234567***3
123456****4
12345*****5
1234******6
123*******7
33.
*
***
*****
***
*
34.
*
*2*
*232*
*2*
*
35.
1*1*2
2*3*4
3*5*6
4*7*8
5*9*10
36.
123*321
23***32
3*****3
23***32
123*321
1.
11******11
22****22
33**33
4444
Source Code .java
2.
123***
234****
345*****
456******
Source Code .java
3.
15*****
26******
37*******
48********
Source Code .java
4.
*1
**212
***32123
****4321234
Source Code .java
5.
11
2**2
3****3
4******4
3****3
2**2
11
6. (java % and /)
1010101010101
10101010101
101010101
1010101
10101
101
1
7.
111
12221
1233321
123444321
12345554321
1234566654321
123456777654321
8.
123**
234***
345****
456*****
567******
678*******
789********
9.
111111111
2222222
33333
444
5
10.
151
12421
1233321
123424321
12345154321
11.
11
2 2
3 3
4 4
5 5
12.
123456789
2345678
34567
456
5
13.
987654321
7654321
54321
321
1
14.
12 21
23 32
34 43
45 54
5665
15. (2 * i - 1)
11111 11111
2222 2222
333 333
44 44
5 5
16.
1 *
21 **
321 ***
4321 ****
54321*****
17.
19191919
28282828
37373737
46464646
55555555
18.
1*1*****9
1**2****8
3***3***7
4****4**6
5*****5*5
19.
1*********5
2******** 4
3******* 3
4****** 2
5***** 1
20.
1*1
22**22
333***333
4444****4444
55555*****55555
21.
*******1*7
******2**6
*****3***5
****4****4
***5*****3
22.
*111111111*
* 2222222 *
* 33333 *
* 444 *
* 5 *
23.
1******1
2***** 2
3**** 3
4*** 4
5** 5
24.
1*1111111111
2***22222222
3*****333333
4*******4444
5*********55
25.
****5*****
***444****
**33333***
*2222222**
111111111*
26.
11111*
2222**
333***
44****
5*****
27.
1 *
2 **
3 ***
4 ****
5 *****
28.
54321*12345
5432***2345
543*****345
54*******45
5*********5
29.
1*3***
2*4****
3*5*****
4*6******
5*7*******
30.
*********1
*******21
*****321
***4321
*54321
31.
11111*****
2222 ****
333 ***
44 **
5 *
32.
1234567***3
123456****4
12345*****5
1234******6
123*******7
33.
*
***
*****
***
*
34.
*
*2*
*232*
*2*
*
35.
1*1*2
2*3*4
3*5*6
4*7*8
5*9*10
36.
123*321
23***32
3*****3
23***32
123*321
6. ตัวอย่างโปรแกรมภาษา Pascal
ได้รับ mail จากคุณ ditthapong itthiwatthawong <ryojung@samart.co.th>
ว่าเขียน ปิรามิดด้วย pascal แบบเลือกตัวอักษรได้ เขียนอย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้
โปรแกรมนี้รอรับตัวอักษรจากแป้นพิมพ์ แล้วนำไปใช้กำหนดเงื่อนไขในการพิมพ์
เช่น ส่งอักษร D ก็จะพิมพ์บรรทัด A ถึง บรรทัด D และถ้าส่งอักษร E ก็จะพิมพ์บรรทัด A ถึง บรรทัด E เป็นต้น
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var
i,j : integer;
c : char;
begin
writeln ('What is your english character?');
readln (c);
c := upcase(c);
writeln ('======');
for i := 65 to ord(c) do
begin
for j := 65 to i do write(chr(j));
writeln;
end;
readln;
end.
What is your english character?
F
======
A
AB
ABC
ABCD
ABCDE
ABCDEF
เมื่อเช้านี้น้องเค้า mail ถึงผมอีกว่า ใช้ function ที่ครูยังไม่สอน
ผมจึงเขียนใหม่แบบที่ไม่ต้องใช้ function รู้สึกง่ายกว่าเดิมอีกครับ
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var c,d,g : char;
begin
writeln ('What is your english character?');
readln (g);
for c := 'A' to g do
begin
for d:= 'A' to c do write(d);
writeln;
end;
readln;
end.
What is your english character?
D
A
AB
ABC
ABCD
ว่าเขียน ปิรามิดด้วย pascal แบบเลือกตัวอักษรได้ เขียนอย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้
โปรแกรมนี้รอรับตัวอักษรจากแป้นพิมพ์ แล้วนำไปใช้กำหนดเงื่อนไขในการพิมพ์
เช่น ส่งอักษร D ก็จะพิมพ์บรรทัด A ถึง บรรทัด D และถ้าส่งอักษร E ก็จะพิมพ์บรรทัด A ถึง บรรทัด E เป็นต้น
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var
i,j : integer;
c : char;
begin
writeln ('What is your english character?');
readln (c);
c := upcase(c);
writeln ('======');
for i := 65 to ord(c) do
begin
for j := 65 to i do write(chr(j));
writeln;
end;
readln;
end.
What is your english character?
F
======
A
AB
ABC
ABCD
ABCDE
ABCDEF
เมื่อเช้านี้น้องเค้า mail ถึงผมอีกว่า ใช้ function ที่ครูยังไม่สอน
ผมจึงเขียนใหม่แบบที่ไม่ต้องใช้ function รู้สึกง่ายกว่าเดิมอีกครับ
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
var c,d,g : char;
begin
writeln ('What is your english character?');
readln (g);
for c := 'A' to g do
begin
for d:= 'A' to c do write(d);
writeln;
end;
readln;
end.
What is your english character?
D
A
AB
ABC
ABCD
7. ตัวอย่างโปรแกรมภาษา Java Script
ได้รับ mail จากคุณ surasak boonarch <putter_@yahoo.com>
ว่าเขียน ปิรามิดด้วย java ได้ไหม อย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้ รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
document.write( i + "<br>")
}
// -->
</script>
</body>
1
2
3
4
5
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<html><title>teachp02.htm</title>
<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
document.write( i + " - ")
for(j=1;j<=i;j++) {
document.write( 11 - j - i )
}
document.write("<br>")
}
// -->
</script>
</body></html>
1 - 9
2 - 87
3 - 765
4 - 6543
5 - 54321
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<html><title>teachp01.htm</title>
<body><font face="fixedsys" size=0><pre>
<script language="JavaScript" type="text/javascript">
<!--
var k = 9;
for(i=1;i<=k;i++) {
for(j=1;j<=k-i+1;j++) { document.write( " " ) }
for(j=1;j<=i;j++) { document.write( j ) }
document.write( i )
for(j=i;j>=1;j--) { document.write( j ) }
document.write("<br>")
}
// -->
</script>
</body></html>
111
12221
1233321
123444321
12345554321
1234566654321
123456777654321
12345678887654321
1234567899987654321
ว่าเขียน ปิรามิดด้วย java ได้ไหม อย่างไร ผมจึงเขียนไว้ให้ดูเป็นตัวอย่างดังข้างล่างนี้ รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
document.write( i + "<br>")
}
// -->
</script>
</body>
1
2
3
4
5
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<html><title>teachp02.htm</title>
<body><font face="fixedsys" size=0>
<script language="JavaScript" type="text/javascript">
<!--
var k = 5;
for(i=1;i<=k;i++) {
document.write( i + " - ")
for(j=1;j<=i;j++) {
document.write( 11 - j - i )
}
document.write("<br>")
}
// -->
</script>
</body></html>
1 - 9
2 - 87
3 - 765
4 - 6543
5 - 54321
รหัสต้นฉบับ (Source Code) ผลลัพธ์ (Output)
<html><title>teachp01.htm</title>
<body><font face="fixedsys" size=0><pre>
<script language="JavaScript" type="text/javascript">
<!--
var k = 9;
for(i=1;i<=k;i++) {
for(j=1;j<=k-i+1;j++) { document.write( " " ) }
for(j=1;j<=i;j++) { document.write( j ) }
document.write( i )
for(j=i;j>=1;j--) { document.write( j ) }
document.write("<br>")
}
// -->
</script>
</body></html>
111
12221
1233321
123444321
12345554321
1234566654321
123456777654321
12345678887654321
1234567899987654321
8. แบ่งระดับการเขียนโปรแกรม 4 ระดับ
ระดับในการเขียนโปรแกรมมีหลายระดับ
เขียนตามที่ครูสอน ( ระดับต้น )
เขียนโครงงานส่งครู ( ระดับกลาง )
เขียนโปรแกรมประยุกต์ไว้ใช้งาน ( ระดับสูง )
เขียนโปรแกรมเชิงวัตถุให้ถูกเรียกใช้ภายหลัง ( ระดับมืออาชีพ )
นักเรียนบางคนเก่งกว่าอาจารย์อีกครับ เพราะศาสตร์ด้านคอมพิวเตอร์นั้น ปฏิบัติง่ายกว่าทฤษฏีเยอะ หมายความว่า การลงมือปฏิบัติด้วยตนเอง จะเข้าใจได้ทันที โดยไม่ต้องมีคำอธิบาย การฟังบรรยาย จะได้เพียงแนวคิด แต่จะไม่ทำให้เกิดความชำนาญ และนำไปประยุกต์ใช้ได้ ดังนั้นเมื่อฟังบรรยายในห้องเรียนแล้ว จะต้องนำไปทดลองปฏิบัติด้วยตนเอง จึงจะเกิดผล ให้เห็นชัดเจน - ไม่ใช่เรื่องแปลก ที่นักเรียนมากมายศึกษาด้วยตนเอง ฝึกปฏิบัติอย่างจริงจัง และมีความรู้มากมายได้ลึกซึ้งกว่าอาจารย์ผู้สอน .. โดยเฉพาะผู้สอนที่ไม่พยายามหาประสบการณ์เพิ่มเติมจากการปฏิบัติจริง ...
เขียนตามที่ครูสอน ( ระดับต้น )
เขียนโครงงานส่งครู ( ระดับกลาง )
เขียนโปรแกรมประยุกต์ไว้ใช้งาน ( ระดับสูง )
เขียนโปรแกรมเชิงวัตถุให้ถูกเรียกใช้ภายหลัง ( ระดับมืออาชีพ )
นักเรียนบางคนเก่งกว่าอาจารย์อีกครับ เพราะศาสตร์ด้านคอมพิวเตอร์นั้น ปฏิบัติง่ายกว่าทฤษฏีเยอะ หมายความว่า การลงมือปฏิบัติด้วยตนเอง จะเข้าใจได้ทันที โดยไม่ต้องมีคำอธิบาย การฟังบรรยาย จะได้เพียงแนวคิด แต่จะไม่ทำให้เกิดความชำนาญ และนำไปประยุกต์ใช้ได้ ดังนั้นเมื่อฟังบรรยายในห้องเรียนแล้ว จะต้องนำไปทดลองปฏิบัติด้วยตนเอง จึงจะเกิดผล ให้เห็นชัดเจน - ไม่ใช่เรื่องแปลก ที่นักเรียนมากมายศึกษาด้วยตนเอง ฝึกปฏิบัติอย่างจริงจัง และมีความรู้มากมายได้ลึกซึ้งกว่าอาจารย์ผู้สอน .. โดยเฉพาะผู้สอนที่ไม่พยายามหาประสบการณ์เพิ่มเติมจากการปฏิบัติจริง ...
9.แบบฝึกหัดสำหรับสอนการเขียนโปรแกรมเบื้องต้น
เนื่องจากนักศึกษาที่ผมสอน ทำข้อสอบกลางภาคไม่ได้ เพราะไม่ได้ใช้เวลาที่บ้านฝึกฝน แม้จะให้การบ้านไปทำ แต่ก็ไม่ได้ไปลงเครื่องให้เกิดความชำนาญ จึงต้องให้งาน 60 โปรแกรมนี้ใหม่ เป็นโปรแกรมที่ง่าย เพราะถ้ายังลอกอีก ก็จะไม่ผ่านการสอบปากเปล่า ในการถามจุดผิดพลาดว่าโปรแกรมที่เขียนมาผิดจุดใด กลุ่ม 1 พิมพ์ข้อมูลอย่างง่าย
พิมพ์ รหัสนักศึกษา
พิมพ์ ชื่อตนเอง
พิมพ์ ตัวเลข จากตัวแปร
พิพม์ ชื่อ และสกุล คนละบรรทัด
พิพม์ รหัส ชื่อ และสกุล คนละบรรทัด
พิมพ์ ผลบวก ของเลข 2 จำนวน
พิมพ์ ผลบวก ลบ คูณ หาร ของเลข 2 จำนวน
กลุ่ม 2 รับข้อมูลมาคำนวณ
พิมพ์ ตัวเลข ที่รับมาจากแป้นพิมพ์
พิมพ์ อักษร ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก และลบ ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลคูณ และหาร ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก ของเลข 3 จำนวน ที่รับมาจากแป้นพิมพ์
กลุ่ม 3 รับข้อมูล และเลือกพิมพ์
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน แต่พิมพ์ตัวหลังก่อนตัวแรก
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่มากกว่า
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่น้อยกว่า
รับตัวเลขจากแป้นพิมพ์ ถ้ามากกว่า 5 ให้พิมพ์คำว่า wow
รับตัวเลขจากแป้นพิมพ์ ถ้าน้อยกว่า 5 ให้พิมพ์คำว่า oho
รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่มากที่สุด
รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่น้อยที่สุด
กลุ่ม 4 ทำซ้ำอย่างง่าย
พิมพ์ 1 ถึง 10 ด้วย for
พิมพ์ 1 ถึง 10 ด้วย while
พิมพ์ 10 ถึง 1 ด้วย for
พิมพ์ 10 ถึง 1 ด้วย while
พิมพ์ 10 ถึง 20 ด้วย for
พิมพ์ 10 ถึง 20 ด้วย while
พิมพ์ 20 ถึง 10 ด้วย for
พิมพ์ 20 ถึง 10 ด้วย while
พิมพ์เลขคู่ระหว่าง 1 ถึง 10
พิมพ์เลขคี่ระหว่าง 1 ถึง 10
กลุ่ม 5 ทำซ้ำซ้อนกัน
พิมพ์สูตรคูณแม่ 2
พิมพ์สูตรคูณแม่ 3
พิมพ์สูตรคูณแม่ 2 จนเสร็จ แล้วพิมพ์แม่ 3 ต่อ
พิมพ์สูตรคูณแม่ 2 และ 3 คนละ Column
พิมพ์ตัวเลขแบบ for ซ้อนด้วย for
พิมพ์ตัวเลขแบบ for ซ้อนด้วย while
พิมพ์ตัวเลขแบบ while ซ้อนด้วย for
พิมพ์ตัวเลขแบบ while ซ้อนด้วย while
กลุ่ม 6 อาร์เรย์
อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ไม่ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ไม่ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ใช้ for
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะมากกว่า 10
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะน้อยกว่า 10
กลุ่ม 7 คำนวณเบื้องต้น
พิมพ์ค่าสูงสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าผลรวม จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าสูงสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าผลรวม จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
กลุ่ม 8 แฟ้มข้อมูล หรือฐานข้อมูล
อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ
อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ โดยมีเลขลำดับกำกับ
อ่านข้อมูลจากแป้นพิมพ์ แล้วเขียนลงแฟ้มข้อมูล
อ่านข้อมูลจากแฟ้มข้อมูล เขียนลงแฟ้มใหม่อีกแฟ้มหนึ่ง
เพิ่มข้อมูลในแฟ้มข้อมูล เมื่อได้รับข้อมูลจากแป้นพิมพ์
ลบข้อมูล แบบต่าง ๆ
แก้ไขข้อมูล แบบต่าง ๆ
งานที่มอบหมายให้นักศึกษาไปฝึก หรือทำแก้ตัวหลังสอบกลางภาค
A. จากโจทย์แต่ละข้อ ให้เขียนโปรแกรมที่ถูกต้อง และที่ผิดอย่างละโปรแกรม โดยบอกว่าที่ผิด ผิดอย่างไร
B. ให้แต่ละข้อทำที่ถูกมา 1 ครั้ง และให้ทำที่ผิดมา 2 โปรแกรม โดยแยกเฉลยจุดผิดออกจากกัน
C. ให้นักศึกษาสลับกัน หาจุดผิดพลาดในโปรแกรมของเพื่อน
D. ตัวอย่างจุดผิดพลาดที่แนะนำนักศึกษา
- เขียนคำสั่งผิด เช่น class เป็น ClaSs เป็นต้น
- ลืมเครื่องหมาย เช่น . , ; ( { = เป็นต้น
- ลืมประกาศตัวแปร หรือ ประกาศตัวแปรซ้ำ
- ใช้งานผิดประเภท เช่น ตัวเลข เป็นตัวอักษร หรือไม่เปลี่ยนประเภทก่อนนำมาประมวลผล
- ลืมประกาศ include หรือ IOException หรือ อื่น ๆ
- จำนวน { ไม่เท่ากับ }
- Compile ไม่ผ่าน แต่พยายามเรียกใช้งาน
- ผิดพลาดขณะแปลอย่างไร หรือประมวลผล หรือตรวจสอบระหว่างประมวลผลผิดพลาด
พิมพ์ รหัสนักศึกษา
พิมพ์ ชื่อตนเอง
พิมพ์ ตัวเลข จากตัวแปร
พิพม์ ชื่อ และสกุล คนละบรรทัด
พิพม์ รหัส ชื่อ และสกุล คนละบรรทัด
พิมพ์ ผลบวก ของเลข 2 จำนวน
พิมพ์ ผลบวก ลบ คูณ หาร ของเลข 2 จำนวน
กลุ่ม 2 รับข้อมูลมาคำนวณ
พิมพ์ ตัวเลข ที่รับมาจากแป้นพิมพ์
พิมพ์ อักษร ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก และลบ ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลคูณ และหาร ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
พิมพ์ ผลบวก ของเลข 3 จำนวน ที่รับมาจากแป้นพิมพ์
กลุ่ม 3 รับข้อมูล และเลือกพิมพ์
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน แต่พิมพ์ตัวหลังก่อนตัวแรก
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่มากกว่า
รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่น้อยกว่า
รับตัวเลขจากแป้นพิมพ์ ถ้ามากกว่า 5 ให้พิมพ์คำว่า wow
รับตัวเลขจากแป้นพิมพ์ ถ้าน้อยกว่า 5 ให้พิมพ์คำว่า oho
รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่มากที่สุด
รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่น้อยที่สุด
กลุ่ม 4 ทำซ้ำอย่างง่าย
พิมพ์ 1 ถึง 10 ด้วย for
พิมพ์ 1 ถึง 10 ด้วย while
พิมพ์ 10 ถึง 1 ด้วย for
พิมพ์ 10 ถึง 1 ด้วย while
พิมพ์ 10 ถึง 20 ด้วย for
พิมพ์ 10 ถึง 20 ด้วย while
พิมพ์ 20 ถึง 10 ด้วย for
พิมพ์ 20 ถึง 10 ด้วย while
พิมพ์เลขคู่ระหว่าง 1 ถึง 10
พิมพ์เลขคี่ระหว่าง 1 ถึง 10
กลุ่ม 5 ทำซ้ำซ้อนกัน
พิมพ์สูตรคูณแม่ 2
พิมพ์สูตรคูณแม่ 3
พิมพ์สูตรคูณแม่ 2 จนเสร็จ แล้วพิมพ์แม่ 3 ต่อ
พิมพ์สูตรคูณแม่ 2 และ 3 คนละ Column
พิมพ์ตัวเลขแบบ for ซ้อนด้วย for
พิมพ์ตัวเลขแบบ for ซ้อนด้วย while
พิมพ์ตัวเลขแบบ while ซ้อนด้วย for
พิมพ์ตัวเลขแบบ while ซ้อนด้วย while
กลุ่ม 6 อาร์เรย์
อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ไม่ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ไม่ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ใช้ for
อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ใช้ for
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะมากกว่า 10
รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะน้อยกว่า 10
กลุ่ม 7 คำนวณเบื้องต้น
พิมพ์ค่าสูงสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าผลรวม จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
พิมพ์ค่าสูงสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าผลรวม จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
กลุ่ม 8 แฟ้มข้อมูล หรือฐานข้อมูล
อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ
อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ โดยมีเลขลำดับกำกับ
อ่านข้อมูลจากแป้นพิมพ์ แล้วเขียนลงแฟ้มข้อมูล
อ่านข้อมูลจากแฟ้มข้อมูล เขียนลงแฟ้มใหม่อีกแฟ้มหนึ่ง
เพิ่มข้อมูลในแฟ้มข้อมูล เมื่อได้รับข้อมูลจากแป้นพิมพ์
ลบข้อมูล แบบต่าง ๆ
แก้ไขข้อมูล แบบต่าง ๆ
งานที่มอบหมายให้นักศึกษาไปฝึก หรือทำแก้ตัวหลังสอบกลางภาค
A. จากโจทย์แต่ละข้อ ให้เขียนโปรแกรมที่ถูกต้อง และที่ผิดอย่างละโปรแกรม โดยบอกว่าที่ผิด ผิดอย่างไร
B. ให้แต่ละข้อทำที่ถูกมา 1 ครั้ง และให้ทำที่ผิดมา 2 โปรแกรม โดยแยกเฉลยจุดผิดออกจากกัน
C. ให้นักศึกษาสลับกัน หาจุดผิดพลาดในโปรแกรมของเพื่อน
D. ตัวอย่างจุดผิดพลาดที่แนะนำนักศึกษา
- เขียนคำสั่งผิด เช่น class เป็น ClaSs เป็นต้น
- ลืมเครื่องหมาย เช่น . , ; ( { = เป็นต้น
- ลืมประกาศตัวแปร หรือ ประกาศตัวแปรซ้ำ
- ใช้งานผิดประเภท เช่น ตัวเลข เป็นตัวอักษร หรือไม่เปลี่ยนประเภทก่อนนำมาประมวลผล
- ลืมประกาศ include หรือ IOException หรือ อื่น ๆ
- จำนวน { ไม่เท่ากับ }
- Compile ไม่ผ่าน แต่พยายามเรียกใช้งาน
- ผิดพลาดขณะแปลอย่างไร หรือประมวลผล หรือตรวจสอบระหว่างประมวลผลผิดพลาด
10. เปรียบเทียมหาค่ามากกว่า
การเขียนโปรแกรมต้องมีตัวแปลภาษา ตัวอย่างชุดนี้เป็น javascript ที่ประมวลผลได้ทันทีใน Internet Explorer ถ้ามีข้อสงสัยเรื่อง javascript เพิ่มเติมให้เปิดจาก thaiall.com/java สำหรับตัวอย่าง 10.2 ถึง 10.4 มี 2 แบบคือ หาเฉพาะค่า max และเรียงลำดับค่ามากไปน้อย ซึ่งมีหลักการคล้ายกัน 10.1 เปรียบเทียบค่าคงที่ 2 ค่า
: ใช้ if เลือกค่าที่มากกว่ามาแสดงผล <script>
var a = 5;
var b = 6;
if(a > b)
document.write(a + "" + b);
else
document.write(b + "" + a);
</script>
: ใช้ if เลือกค่าที่มากกว่ามาแสดงผล <script>
var a = 5;
var b = 6;
if(a > b)
document.write(a + "" + b);
else
document.write(b + "" + a);
</script>
10.2 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 1
: ใช้ if และ and เปรียบเทียบพร้อมกันทั้ง 3 ค่า ทุกกรณี
: สัญลักษณ์ && คือ and ในภาษา javascript
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b && a > c) document.write(a);
if(b > a && b > c) document.write(b);
if(c > a && c > b) document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b && b > c) document.write(a + "" + b + "" + c);
if(a > c && c > b) document.write(a + "" + c + "" + b);
if(b > a && a > c) document.write(b + "" + a + "" + c);
if(b > c && c > a) document.write(b + "" + c + "" + a);
if(c > a && a > b) document.write(c + "" + a + "" + b);
if(c > b && b > a) document.write(c + "" + b + "" + a);
</script>
10.3 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 2
: ใช้ if เปรียบเทียบค่าที่ละคู่ตามเงื่อนไข
: ผลการเปรียบเทียบจึงใช้ if else หลายกรณี
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b)
if (b > c) document.write(a);
else {if(c > a) document.write(c);}
else if(b > c) document.write(b);
else document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b)
if (b > c) document.write(a + "" + b + "" + c);
else if(a > c) document.write(a + "" + c + "" + b);
else document.write(c + "" + a + "" + b);
else if (a > c) document.write(b + "" + a + "" + c);
else if(b > c) document.write(b + "" + c + "" + a);
else document.write(c + "" + b + "" + a);
</script>
10.4 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 3
: ใช้การสลับที่ของ 2 ตัวแปร ผ่านตัวแปร t
<script>
var a = 5;
var b = 7;
var c = 6;
var t = a;
if(b > t) t = b;
if(c > t) t = c;
document.write(t);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
var t;
if(b > a) { t = a; a = b; b = t; }
if(c > b) { t = c; c = b; b = t; }
if(b > a) { t = a; a = b; b = t; }
document.write(a + "" + b + "" + c);
</script>
10.5 เปรียบเทียบค่าในอาร์เรย์ด้วย Bubble Sort
: การจัดเรียงข้อมูลที่ง่ายที่สุดวิธีหนึ่ง
: bubble แปลว่าฟอง หลักการนี้แสดงการลอยขึ้นของค่าทีละตัว <script>
var a = new Array ();
a = [5,6,8,2,1,3,4,7,9];
var tmp;
for(i=0;i<a.length;i++)
for(j=0;j<=i;j++)
if (a[j] < a[j + 1]) {
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
j-=2;
}
for(i=0;i<a.length;i++)
document.write(a[i]);
</script>
สมัครสมาชิก:
บทความ (Atom)