วันจันทร์ที่ 5 มกราคม พ.ศ. 2558

การรับขอมูลและแสดงผลขอมูล

6. การรับขอมูลและแสดงผลขอมูล

         ภาษาซีไดเตรียมฟงกชันมาตรฐานที่ใชในการรับและแสดงผลขอมูลใหกับผูพัฒนาโปรแกรมหลาย
ฟงกชัน แตในที่นี้จะกลาวถึงเฉพาะฟงกชันในการรับขอมูล คือ ฟงกชัน scanf( ) และฟงกชันในการแสดงผลขอมูลคือฟงกชัน print( ) ในสวนของการใชงานพื้นฐาน ซึ่งกอนจะใชงานฟงกชันดังกลาวที่สวนหัวของโปรแกรมจะตองมีคําสั่ง
                     #include   <stdio.h>
6.1 การรับขอมูล
      ฟงกชันที่ใชในการรับขอมูลมีรูปแบบของการใชงานคือ

          scanf ( รูปแบบ , อารกิวเมนต1, อารกิวเมนต2, … ) ;

           ในการรับขอมูลผูเขียนโปรแกรมจะตองกํ าหนดรูปแบบของขอมูลที่ตองการรับซึ่งสอดคลองกับชนิดของขอมูลที่ตองการรับเขา โดยที่ผูใชตองสงตํ าแหนง (หรือแอดเดรสในหนวยความจํ า – Address) ของตัวแปรที่ตองการรับเขาไปยังฟงกชัน โดยระบุในตํ าแหนงของอารกิวเมนต
ตัวอยางเชน ตองการรับขอมูลเดือนและปเปนจํ านวนเต็ม จะตองใชคําสั่ง

          int month, year;
          scanf(“%d %d”, &month, &year);12

          จากตัวอยางรูปแบบ คือ “%d %d” บอกใหรูวาตองรับขอมูล 2 ตัว โดยที่ขอมูลนั้นแยกจากกันดวย
ชองวาง %d ตัวแรกแทนขอมูลตัวแรกที่ปอนเขาสูระบบจะนํ าไปเก็บที่ตัวแปร month %d ตัวที่ 2 แทนขอมูลตัวที่ 2 ที่ปอนเขาสูระบบจะถูกนํ าไปเก็บที่ตัวแปร year ในที่นี้จะระบุตํ าแหนงของตัวแปรในหนวยความจําดวยเครื่องหมาย & (Address Operator)

                                ตาราง 1.2 แสดงรูปแบบของการรับขอมูล
                     
                          รูปแบบ                          คําอธิบายการใชงาน
                             d, i           รับขอมูลจํ านวนเต็มและแปลงขอมูลเปน int
                              ld            รับขอมูลจํ านวนเต็มและแปลงขอมูลเปน long
                              u             รับขอมูลเปนจํ านวนเต็มบวกและแปลงขอมูลเปน unsigned
                              o             รับขอมูลเปนจํ านวนเต็มบวกของเลขฐาน 8 และแปลงขอมูลเปนunsigned
                              x             รับขอมูลเปนจํ านวนเต็มบวกของเลขฐาน 16 และแปลขอมูลเปน unsigned
                              c             รับขอมูลเปนอักขระ 1 ตัว
                              s             รับขอมูลเปนสตริง
                              f              รับขอมูลทศนิยมและแปลงขอมูลเปน float
                              lf             รับขอมูลทศนิยมและแปลงขอมูลเปน double

6.2 การแสดงผลขอมูล
         การแสดงผลขอมูลสามารถทํ าไดโดยการเรียกใชฟงกชัน printf( ) มีรูปแบบคือ

                 printf ( รูปแบบ , อารกิวเมนต1 , อารกิวเมนต2 , … ) ;

          ผูเขียนโปรแกรมสามารถสงขอความใด ๆ มายังฟงกชัน print( ) หรือสงตัวแปรมาพิมพคาโดยสงผานมาทางอารกิวเมนต ใหสอดคลองกับรูปแบบที่กํ าหนด ตัวอยางเชน
               char name[ ] = “Mickey”;
               int age = 20;
               printf(“%s is %d years old.”, name, age);

ผลลัพธที่ไดคือ
              Mickey is 20 years old.

            โดยที่ %s ตัวแรกจะถูกแทนที่ดวยคาของอารกิวเมนตตัวที่ 1 คือ ตัวแปร name และ %d ตัวที่ 2 จะ
ถูกแทนที่ดวยคาของอารกิวเมนตตัวที่ 2 คือ ตัวแปร age

             นอกจากนี้ผูใชยังสามารถใช printf( ) ในการพิมพขอความใด ๆ ออกทางจอภาพโดยไมจํ าเปนตองสงอารกิวเมนตเขาไปยังฟงกชันก็ได ตัวอยางเชน
                  printf(“Good morning.”);

ผลลัพธที่ไดคือ
                  Good morning.

         คําสั่ง \n เปนอักขระพิเศษที่ไดกลาวถึงแลวคือ อักขระที่ใชสั่งใหมีการเวนบรรทัด (New Line) ในที่นี้
หลังจากพิมพขอความเสร็จจะมีการเวนวรรทัดเกิดเขึ้น จากตัวอยางจะเห็นวา %d ตัวที่ 3 เกิดจากการนําคาของตัวแปร x มาบวกกับตัวแปร y ไดผลลัพธเทาใดจึงสงใหกับ %d ตัวที่ 3 แสดงผล

ขอควรระวัง
 - การปอนขอมูลที่เปนสตริงไมจํ าเปนตองใสเครื่องหมาย & นํ าหนาตัวแปรสตริง
- หากชื่อที่ปอนเขาสูโปรแกรมมีชองวาง เชนผูใชปอนชื่อและนามสกุล โดยมีชองวางระหวางชื่อและ
นามสกุล โปรแกรมจะรับไดเฉพาะขอมูลชื่อเทานั้น โปรแกรมไมสามารถรับขอมูล ที่มีชองวางเขามาเก็บในตัวแปรได้

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

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