Breaking

Responsive Ads Here

3.5 การรับและพิมพ์ข้อมูลเบื้องต้น

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

        ในภาษาซีจะใช้สตรีมสองรูปแบบ คือ เท็กซ์ (Text) และไบนารี (Binary) โดยสตรีมเท็กซ์ จะเป็นตัวอักขระที่ต่อเนื่องกันไป ส่วนสตรีมไบนารีจะเป็นข้อมูลที่แทนค่าตัวเลข เช่น เลขจํานวนเต็ม เลขทศนิยม

                                                          Data Source                              Program

Keyboard     --->       Input Text Stream      --->  Data

Monitor        --->      Output Text Stream     --->  Data

                                                          Data Destination

        ต่อไปจะกล่าวถึงการรับข้อมูลและการส่งข้อมูลโดยจะกล่าวถึงฟังก์ชั่นในการรับข้อมูลจากแป้น พิมพ์ และการส่งข้อมูลออกทางจอภาพ โดยคําสั่งดังกล่าวจะอยู่ในไลบรารี stdio.h ซึ่งจะต้องเรียก ออกมาก่อนด้วย #include

3.5.1 ฟังก์ชัน printf()
        ฟังก์ชันนี้เราได้ทดลองใช้อย่างง่ายๆ มาแล้ว โดยใช้สําหรับแสดงข้อความหรือตัวแปรฟังก์ชั่น printf() มีชื่อเต็มว่า print format เป็นฟังก์ชั่นที่ใช้พิมพ์ข้อความต่างๆ ออก จอภาพโดยมีรูปแบบดังนี้

รูปแบบ
printf ("ข้อความ")                                             หรือ
printf ("รหัสควบคุมรูปแบบ”, ตัวแปร)                  หรือ
printf('control string", variable list....);

        โดยค่าที่ส่งเข้าไปในฟังก์ชันจะมีสองส่วน ส่วนแรกเรียกว่าสตริงฟอร์แมต เป็นส่วนที่ใช้ ควบคุมลักษณะการแสดงผล และส่วนที่สองหมายถึงค่าคงที่ หรือตัวแปรที่จะให้แสดงผล โดย ฟังก์ชัน print จะพิมพ์ค่าที่อยู่ในตัวแปรในส่วนของ variable list ตรงตําแหน่ง Control String ภายในสตริงฟอร์แมต

รหัสแบ็กสแลช (backslash) ซึ่ง หลายรูปแบบดังนี้

รหัส          ผลที่ได้
\n             ให้ขึ้นบรรทัดใหม่ 
\t              ให้เว้น tab เป็นระยะ 8 ช่วง 
\xhh         แสดงตัวอักษรเมื่อ hh เป็นเลขฐานสิบหก 
\a             ส่งเสียงบีป
\\              เครื่องหมาย Backslash

เครื่องหมาย % นี้เรียกว่า format specification ซึ่งมีใช้หลายรูปแบบดังนี้

เครื่องหมาย          การใช้งาน
    %d                   ให้พิมพ์รูปแบบเลขจํานวนเต็มฐานสิบ
    %u                   ให้พิมพ์รูปแบบเลขจํานวนเต็มไม่มีเครื่องหมาย
    %f                    ให้พิมพ์รูปแบบเลขทศนิยม
    %e                   ให้พิมพ์เลขจํานวนจริงในรูปเลขยกกําลัง
    %c                   ให้พิมพ์ตัวอักษรตัวเดียว (Char)
    %s                   ให้พิมพ์ชุดตัวอักษร (string) หรือข้อความ
    %%                  ให้พิมพ์เครื่องหมาย %
    %o                   ให้พิมพ์เลขฐานแปด
    %x                   ให้พิมพ์เลขฐานสิบหก

        ในการเขียนคําสั่ง printf หนึ่งบรรทัด เราสามารถให้พิมพ์ตัวอักษรหลายๆ รูปแบบได้ ดังเช่น คําสั่งต่อไปนี้

        printf (%S %d %f %C \n","Sam", 14, 8.76, X);

        จะเห็นว่าคําสั่งนี้มี Control String หลายรูปแบบ และมี variable list หลายตัว ถ้าเป็น สตริงจะอยู่ในเครื่องหมาย " " ถ้าเป็นตัวอักษรจะอยู่ในเครื่องหมาย " " สําหรับค่า variable list จะต้องเรียกตามลําดับที่กําหนดใน Control string ผลลัพธ์จากการทําคําสั่งจะเป็นดังนี้

        Sam 14 -8.760000 X

        จะสังเกตเห็นว่าในการพิมพ์เลขทศนิยม (%f) ข้อมูลที่ใส่ไปคือ -8.76 แต่ผลลัพธ์ที่ได้ จะได้ทศนิยมหลายตําแหน่ง คําสั่ง printfi สามารถระบุจํานวนเลขทศนิยมได้ โดยใส่จํานวนทศนิยม และเครื่องหมายจุด ( . ) ระหว่าง % และ f ดังตัวอย่างคําสั่งต่อไปนี้

        printf ("%f %.3f 6.2 %.1f",4.5678,4.5678,4.5678,45678);

         ผลลัพธ์ที่ได้จากการทําคําสั่งจะเป็นดังนี้

        4.567800 4.568 4.57 4.6

3.5.2 ฟังก์ชัน scanf()
         ฟังก์ชันนี้จะตรงข้ามกับฟังก์ชั่น printf() โดยจะใช้อ่านค่าจากการกดแป้นพิมพ์ที่อยู่ในรูป รหัส ASCll ไปเก็บในตัวแปรที่กําหนด และสามารถใช้เป็นรหัสควบคุมหรือ Control string ระบุชนิดของข้อมูลที่จะเก็บในตัวแปรได้ รูปแบบของคําสั่งเป็นดังนี้
รูปแบบ
scanf( "control string", &variable list,....);   หรือ
scanf("รหัสรับข้อมูล", ตัวแปรเก็บข้อมูล),

         โดยเครื่องหมาย & เป็นการชี้ไปที่แอดเดรสหน่วยความจําของตัวแปรที่กําหนดเพื่อให้เก็บ ข้อมูล สําหรับ Control string จะเป็นตัวบอกว่าจะให้เก็บข้อมูลในลักษณะใด ตัวอย่างเช่น
         int   num;
         scanf("%d", &num);

         เมื่อคอมพิวเตอร์ทําชุดคําสั่ง scanf จะรอรับข้อมูลจากแป้นพิมพ์ เมื่อเราใส่ข้อมูล และกด ปุ่ม <Enter> จะนําข้อมูลไปเก็บในตัวแปรชื่อ num ในรูปของเลขฐานสิบ เนื่องจาก control string เป็น %d สําหรับ Control string มีได้หลายตัวเช่นเดียวกับคําสั่ง printf()

         หากมองการทํางานของฟังก์ชัน printf ลึกๆ แล้ว จะพบว่าฟังก์ชันนี้จะนําข้อมูลที่ได้รับมา เปลี่ยนให้เป็นสตรีมเท็กซ์เพื่อนําไปแสดงออกทางจอภาพ ตัวอย่างเช่น ถ้าหากรับค่าตัวเลข 234 เข้ามา โปรแกรมจะเปลี่ยนเป็นรหัส ASCII ของตัวเลขสามตัวคือ '2' , '3' และ '4' จากนั้นส่งเป็นสตรีม เท็กซ์ออกไป เพื่อแสดงผลทางจอภาพ

         สําหรับฟังก์ชั่น Scan จะใช้รับสตรีมเท็กซ์เข้ามา จากนั้นเปลี่ยนให้เป็นข้อมูลตามที่ระบุไว้ ในรหัสรับข้อมูล ตัวอย่างเช่น ถ้าหากรับตัวอักขระเข้ามาห้าตัว คือ '2' , '3' , '4' ',' และ '2' เมื่อระบุรหัสรับข้อมูลไว้เป็น %f จะทําให้โปรแกรมเปลี่ยนสตรีมที่ได้เป็นเลขทศนิยม ซึ่งได้ผลดีพอ เป็น 234.2 นั้นเอง



ไม่มีความคิดเห็น:

แสดงความคิดเห็น