ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...

|
|
|
Visitors - Session views |       
7 ธันวาคม พ.ศ.2549 687 Users On-Line. |
|
Visitors - Page views |        1 กุมภาพันธ์ พ.ศ.2551 |
|
|
|
 |
|
โค้ดการแปลงเลขฐาน 10 เป็นเลขฐาน 2 ด้วยภาษา C ... เรื่องกล้วยๆ |
Category »
จับฉ่ายคอมพิวเตอร์ โดย : Webmaster เมื่อ 24/11/2552 เวลา: 02:10 | (อ่าน : 58497) | เบื่อครับเบื่อ ... เปิดไปอ่านตามเว็บบอร์ดแบบตลาดๆทั่วไป มักชอบถกเถียงกันซ่ะเหลือเกิน กับหัวข้อที่ว่าโปรแกรมภาษาตัวนั้นมันดีกว่าตัวนี้ บ้างก็ว่ามันเป็น OOP 100% น่ะ ไม่ใช่เทคโนโลยีเทียมๆอย่างที่คุณใช้ ว่าไปนั่น ... ผมก็อยากรู้เหมือนกันว่าเวลาไป Present ให้ลูกค้าฟังเขาจะรู้เรื่องมั้ยล่ะเนี่ย 55555+ ... บอกได้เลยว่าแทบจะไม่รู้เรื่องหรอก แต่ต้องพยักหน้าหงึกๆตาม อึมๆๆๆ ดีๆๆๆ ... เพราะกล้ัวเสียฟอร์มล่ะซ่ะมากกว่า เอิ๊กๆๆๆๆ ... ภาษาโปรแกรมมันก็ดีหมดทุกตัว นั่นแหละครับ แต่ "เรามีสติปัญญามากน้อยแค่ไหนที่จะควบคุมมันได้ต่างหากล่ะ" ... บางทีก็ต้องสัมผัสมันมาหลายๆตัวก่อน แล้วค่อยมาสรุป เพื่อเลือกให้มันเหมาะสมกับตัวเรา หรือ งานที่ทำอยู่ ... เรื่องแบบนี้ไม่มีใครบอกได้หรอกครับ นอกจากตัวของเราเอง ...
เอาล่ะครับ ... พล่ามมาพอประมาณ ในบทความนี้ผมจะไม่กล่าวถึงทฤษฎีมาก เพราะได้บรรยายไปแล้ว (อ่าน 3 หัวข้อหลักทางด้านล่างน่ะครับ) ... ผมชี้ชัดๆให้เห็นเลยว่า การวิเคราะห์ข้อมูล และ การออกแบบ เป็นเรื่องที่สำคัญอย่างยิ่งต่อการเขียนโปรแกรม บ่อยครั้งไปที่ต้องใช้เวลาในการออกแบบ นานกว่าการเขียนโปรแกรมซ่ะอีก ... คราวนี้ผมใช้ภาษา C (ตามคำขอ ... เพราะต้องตอบโจทย์ส่งครู ... 55555+) เพื่อนำเสนอให้เห็นเลยว่าแนวคิด หรือ การออกแบบ ก่อนที่จะลงโค้ดนั้น มันไม่ได้เกี่ยวข้องกับโปรแกรมภาษาใดๆทั้งสิ้น ... เหมือนเดิมทุกประการ
มาดูโค้ดกันเถอะ ...
#include <stdio.h>
main(void)
{
int i, j;
long dec; /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
int bit[32]; /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */
clrscr(); /* เคลียร์หน้าจอ */
printf("Decimal Number : "); /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */
scanf("%ld", &dec); /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
i = 0; /* กำหนดค่าเริ่มต้นของ Array */
/* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
do {
bit[i++] = dec % 2; /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */
/* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
/* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
dec = dec / 2;
} while (dec > 0); /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */
/* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
/* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
/* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
/* ทำให้ LSB มันไปอยู่ทางซ้าย ส่วน MSB มันไปอยู่ทางขวา */
for(j = i - 1; j >= 0; j--)
printf("%d", bit[j]);
printf("\n");
getch();
}
|
Conclusion: ก็คงจะได้เห็นกันอย่างชัดๆจะๆแจ้งๆกันแล้วว่า เรื่องราวของ การวิเคราะห์ข้อมูล และ การออกแบบ นั้นมันเป็นสิ่งที่สำคัญเพียงไร สิ่งหนึ่งที่อยากจะขอฝากไปยังเพื่อนพ้องน้องพี่ทั้งหลายด้วยว่า "ชนิดหรือประเภทของข้อมูล" ก็เป็นสิ่งที่สำคัญที่ทุกๆโปรแกรมภาษาจะต้องนำมาเกี่ยวข้อง เราควรจะต้องศึกษากันให้รู้อย่างถ่องแท้ อย่าเอาแต่เพียงท่องจำได้ขึ้นใจ เพียงเพื่อต้องการทำข้อสอบให้ได้อย่างเดียวครับ ... พี่น้อง
|
|