The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by JADSADA JINATI, 2022-04-13 08:26:43

ใบความรู้4การรับข้อมูลเข้าและแสดงผลข้อมูล

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

ใบความรู้ท่ี 4

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

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

1. ฟง กชัน getch();
เปน ฟงกชนั ทใ่ี ชใ นการรอรบั การกดแปนพิมพ (Key Board) 1 ตัวอักษรและจะไมแ สดงตวั อกั ขระท่ีกด

บนจอภาพ ฟง กชนั นถี้ ูกนิยามไวใ น conio.h
รปู แบบที่ 1 getch();
หมายถงึ หยดุ รอการกดแปนพมิ พ 1 ตัวอกั ษร
รปู แบบที่ 2 ตัวแปร = getch();
หมายถงึ หยุดรอการกดแปนพิมพ 1 ตวั อักษรมาเก็บไวทต่ี ัวแปร

2. ฟง กชนั getche();
เปนฟงกชันที่ใชในการรอรับการกดแปนพิมพ 1 ตัวอักษรและจะไมแสดงตัวอักขระที่กดบนจอภาพ

ฟงกชันนี้ถกู นยิ ามไวใ น conio.h
รปู แบบ getche();
หมายถึง หยดุ รอการกดแปนพิมพ 1 ตัวอักษรมาเกบ็ ไวท ่ีตัวแปรและแสดงผล

3. ฟง กช นั getchar();
เปนฟงกชันที่ใชในการรอรับการกดแปนพิมพ และจะแสดงตัวอักขระที่กดบนจอภาพ ฟงกชันนี้ถูก

นิยามไวใน conio.h
รูปแบบ char var = getchar();
หมายถึง หยดุ รอการกดแปนพมิ พต ัวอักษรมาเก็บไวท ่ีตัวแปร var

4. ฟง กชชัน putchar();
เปนฟงกช ันทใี่ ชใ นการแสดงตัวอักขระบนจอภาพ ฟงกช ันนถ้ี กู นิยามไวใน conio.h
รปู แบบ putchar(char var);
หมายถึง แสดงตวั อักขระในตัวแปร var ออกสหู นา จอภาพ

ตัวอยางโปรแกรมท่ี 4.1

#include<stdio.h>
#include<conio.h>
void main()
{

char letter[80];
int count, tag;
for(count=0; (letter[count]=getchar() != In';++count);
tag = count;
for(count=0; count~tag;++count)
putchar(toupper(letter[count]);
getch();
}

ผลการทำงานของโปรแกรม

5. ฟง กชัน printf0;

เปนฟงกชันที่ใชแ สดงขอมูลที่เปนตัวเลข ตัวอักขระ และสตริง ออกสูหนาจอภาพ หมายความวา

ฟงกชนั printf() ทำหนาทยี่ ายขอมลู จากหนว ยความจำของเครอ่ื งคอมพวิ เตอรส หู นว ยแสดงผลคอมพวิ เตอร

และฟงกชนั print) ถูกนยิ ามไวใน stdio.h

รูปแบบมาตรฐาน printf (control string, arg1, arg2, .... argn);

รูปแบบท่ี 1 printf ("ขอมูล");
ตัวอยา งเชน printf ("Hello C++..!");
ผลการรันโปรแกรม แสดงขอ มูลทเ่ี ปน ขอความ Hello C++...! แสดงออกสูทางหนาจอภาพ
รูปแบบที่ 2 printf ("รหัสควบคุมขอ มูล", อารก ิวเมนต); Lo keoterbsr
ตวั อยา งเชน A = 55;
printf("%d",A); //อารกิวเมนตเ ปนตัวแปร A
หมายถงึ แสดงขอ มูลคา ของตัวแปร A ออกมาแสดงผลในรปู ของเลขจำนวนเต็มตาม
การกำหนดของรหสั ควบคุมขอมูล (%d)
ผลการรนั โปรแกรม แสดง 55 ออกทางจอภาพ
รูปแบบท่ี 3 printf("ขอมูล รหัสควบคมุ ขอมลู ", อารก ิวเมนต) ;
ตัวอยา งเชน X= 999;
printf("Information in X = %d", X);
หมายถงึ แสดงขอ มูลคำวา Information in X = ตามดว ยคาของตวั แปร X ออกมา
แสดงผลในรูปของเลขจำนวนเตม็ ตามรหัสควบคมุ ขอมลู (%6d)
ผลการรนั โปรแกรม Information in X = 999

รหัสควบคมุ ขอ มูล

เปนรหัสควบคุมขอมูลซึ่งเปนการแสดงรูปแบบ (Format Code) ที่ใชในการแสดงผลสูหนาจอภาพ

โดยรูปแบบการสง่ั จะตองอยูหลงั เคร่ืองหมาย % รหัสควบคุมขอ มูลทใ่ี ชแ สดงดงั ตารางท่ี 4.1

ตารางท่ี 4.1 แสดงรหสั ควบคุมขอมูล

รหสั ควบคมุ ความหมาย

%C แสดงขอ มูลในรูปตวั อักขระ 1 ตัว (character)

%d แสดงขอมูลในรปู ตวั เลขจำนวนเตม็ (decimal)

%e แสดงขอมลู ในรูปทศนิยม ทมี่ ีเลขชกี้ ำลงั (exponential)

%f แสดงขอมลู ในรูปของตวั เลขทศนยิ ม (foat)

%g แสดงขอมลู ในรูปเลขทศนยิ ม รปู แบบ e หรอื f ขน้ึ อยูกบั ขอ มลู โดยจะไมแสดงเลขศูนยท่ี

อยูหลงั เลขทศนยิ มตวั สดุ ทาย

%i แสดงขอ มูลในรปู ของตัวเลขจำนวนเตม็ ฐานสิบ รูปแบบคดิ เครอ่ื งหมาย(integer) คือแสดง
ตวั เลขเปนชนดิ signed

%0 แสดงขอ มูลในรปู ของเลขฐาน 8 (octal)
%x แสดงขอ มลู ในรปู ของเลขฐาน 16 (hexa decimal)
%u แสดงขอมลู ในรปู จำนวนเต็มบวก หรอื แสดงเลขจำนวนเต็มไมคิดเคร่อื งหมาย(unsigned)
%s แสดงขอ มูลในรูปของขอความ (String) คอื แสดงขอมลู ทีเ่ ปนตัวอักขระมากกวา หน่ึงตวั
%p แสดงขอ มลู ในรูปท่ีอยูของตัวแปร (address)
%% แสดงเครอ่ื งหมาย %

รหัสควบคุมการแสดงผล
รหัสควบคุมการแสดงผล สามารถเขียนแทรกในคำสั่งของ printf(); ตามความตองการของนักเขียน

โปรแกรม ซึ่งสามารถเขียนกอ นสวนของรหัสควบคมุ หรือหลังรหัสควบคุมเปนการจัดรปู แบบการแสดงขอมูลสู
หนา จอภาพใหเ ปนระเบยี บและสื่อความหมายระหวางตัวโปรแกรมกบั ผูใชโปรแกรมไดถ ูกตอง รหสั ควบคุมการ
แสดงผลมีดังตารางที่ 4.2

รหสั ตารางท่ี 4.2 รหัสควบคมุ การแสดงผล
\n
\t ความหมาย
\r แสดงขึน้ บรรทัดใหม (new line)
\f แสดงตวั อกั ษรยอ หนากระดาษ (Tab)
\b สั่งใหต ัวชีต้ ำแหนง (Cursor) กลับไปอยูท ตี่ นบรรทัด
ส่ังใหเ วนการแสดงผลไป 1 หนา (feed)
ส่งั ใหตัวชต้ี ำแหนง (Cusor) ถอยหลงั กลับไปลบตัวอกั ษร 1 ตำแหนง
(back
space)

ตัวอยางโปรแกรม 4.2 เปนการสั่งใหแสดงขอมูลท่ีเปนขอความโดยตรง การแสดงขอมูลท่ีเปนตัวเลขจำนวน
เต็มสิ โดยผานการแสดงตวั แปร การแสดงขอความกอนแสดงขอ มูลท่ีเปนตัวเลขจำนวนเตม็ โดยผานการควบคุม
ดวยรสควบคมุ แตย ังไมม ีการควบคุมการแสดงผล หรอื ไมมกี ารจัดรปู แบบการแสดงผล

#include<stdio.h>
#include<conio.h>
void main( )
{

int A=55;X=999;
clrscr();
printf("Hello C+++...! ");
printf("%d",A);
printf("Information in X= %d",X);
getch();
}

ผลการทำงานของโปรแกรม

ตวั อยางโปรแกรมที่ 4.3 เปน การสง่ั ใหแสดงขอ มูลโดยมกี ารจดั รปู แบบการแสดงผล
#include<stdio.h>
#include<conio.h>
void main( )
{
int A=55,X=999;
clrscr();
printf("Hello C+++...! In");
printf("t%d'n",A);

printf("tInformation in X= %d",X);
getch();
}
ผลการทำงานของโปรแกรม

ตัวอยา งโปรแกรมท่ี 4.4 โปรแกรมท่ีนำรหสั การควบคุมขอ มลู (%d, %o, 9x, %c) มาทำการสรา งขอมลู ใชใ น
กาแสดงคาของตัวเลขจำนวนเต็ม ตัวเลขฐานแปด ตัวเลขฐานสิบหก ตัวอักขระ (ASCII Code)ของแตละคา
ตามลำดับ และรหสั การควบคมุ การแสดงผล (\n, \t) มาทำการสรา งระบบการแสดงผลท่สี มบรู ณ

#include<stdio.h>
#include<conio.h>
#define number 80
void main()
{
clrscr();
unsigned char Tascii;
printf("InDec Itl tOctal Itl It Hexa It Character");
for(Tascii = 65; Tascii<=number;++Tascii)
printf(" In%d\ tI\t%oltNt%xt t%c",Tascii,Tascii,Tascii,Tascii);
getch();
}

ผลการทำงานของโปรแกรม

การแสดงขอมูลโดยใชฟงกชัน print ในรูปแบบที่สามารถกำหนดขนาดขอมูลที่แสดงไดทั้งจำนวน
ตัวเลขกอนจุดทศนิยมและหลังจุดทศนิยม เปนการแสดงความเที่ยง (precision) โดยการกำหนดจำนวน
หลักการแสดงตัวเลขหลังจุดทศนิยม ถากำหนดจำนวนที่นอยกวา การแสดงผลจะทำการปดเศษทศนิยม ดัง
ตวั อยางที่ 4.5

ตัวอยางโปรแกรมท่ี 4.5 การกำหนดจำนวนตัวเลขกอ นและหลังจุดทศนยิ ม

ผลการทำงานของโปรแกรม

จากผลการทำงานโปรแกรม 4.5 การแสดงผลจากฟงกชัน printf"%5f %7.3f %5.1f\n\n ",a,a,a);ใน
รหัสควบคุ %5f....a เปนการกำหนดใหแสดงคาของตัวแปร ล ตัวเลขจำนวน 5 ตำแหนงกอนจุดทศนิยม
รหสั ควบคมุ %7.f....a เปน การกำหนดใหแสดงคาของตวั แปร ล ตวั เลขจำนวน 7 ตำแหนงกอ นจดุ ทศนิยมหลัง
จุดทศนิยม 3 ตำแหนง และรหสั ควบคมุ %5.1f....ล เปน การกำหนดใหแสดงคาของตวั แปร ล ตัวเลขจำนวน 5
ตำแหนง กอ นจุดทศนยิ ม หลังจุดทศนยิ ม 1 ตำแหนง

สวนฟงกชัน printf ("%e %.5e %.3eln "a,a,a), ในรหัสควบคุม %e....a เปนการกำหนดใหแสดงคา
องตัวแปร a แสดงขอมลู ในรูปทศนยิ มทม่ี ีเลขชี้กำลัง (exponential) ตามจำนวนจริง รหัสควบคุม%.5e... เปน
การกำหนดใหแสดงคา ของตัวแปร ล แสดงขอมลู ในรูปทศนิยมทีม่ ีเลขชี้กำลัง โดยใหแ สดงเลขหลังจุดทศนิยม
5 ตำแหนง และรหสั ควบคุม %.3e....ล เปน การกำหนดใหแสดงคา ของตัวแปร a แสดงขอ มูลในรูปทศนิยมที่มี
เลขชกี้ ำลัง โดยใหแสดงเลขหลังจดุ ทศนิยม 3 ตำแหนง

สวนฟงกชัน printf("%7s %9s %.5s" text,text,text); ในรหัสควบคุม %7s....text เปนการ
กำหนดใหแสดงคา ของตัวแปร text แสดงขอมูลในรปู ตวั อักษรจองจำนวนพ้ืนที่แสดง 7 ตัวอักษร รหัสควบคุม
%9s...text เปนการกำหนดใหแสดงคาของตัวแปร text แสดงขอมูลในรูปตัวอักษรของจำนวนพืน้ ที่แสดง 9
ตัวอักษรและรหัสควบคุม %...5s..text เปนการกำหนดใหแสดงคาของตัวแปร text แสดงขอมูลในรูป
ตัวอกั ษรจำนวนแสดง 5 ตวั อักษร

6. ฟงกช นั scanf();
เปน ฟง กช นั ท่ีใชในการตดิ ตอกับผใู ชงานโปรแกรมในการรับขอมูลจากแปน พิมพ (Key Board) เขามา

เกบ็ ไวใ นท่ีอยูของตัวแปร เพ่อื นำไปใชในการคำนวณและการประมวลผล ถกู นยิ ามไวใ น stdio.h
รปู แบบ scanf("รหัสของชนดิ ขอมลู ", ทอ่ี ยขู องตัวแปร);

ตวั อยา ง scanf("%d",&A);

หมายถงึ รอรบั คาขอมลู ทเ่ี ปน เลขจำนวนเตม็ มาเกบ็ ไวในท่ีอยขู องตัวแปร A

&A หมายถึง ทีอ่ ยูของตวั แปร A (Address A)

ตวั อยาง scanf("%f",&score);

หมายถึง รอรับคาขอมูลที่เปน เลขทศนิยมมาเกบ็ ไวในท่ีอยูข องตวั แปs score

ในฟง กชนั scanf() มีการควบคมุ ขอมลู จากการปอนคียบ อรด โดยใชรหัสควบคมุ ดังตารางท่ี 4.3 ซ่ึงมี

ขอสงั เกตวา มสี ว นท่ีเหมอื นและแตกตา งกบั รหสั ควบคุมของคำส่งั print0) บางรหสั

ตารางท่ี 43 แสดงรหัสควบคุมการรับขอมูลจากคยี บอรดของคำสัง่ scanf()

รหัสควบคุม ความหมาย

%c รบั ขอมลู เปน ตัวอกั ขระ 1 ตัว

%d รบั ขอ มลู เปน ตวั เลขจำนวน

%e รับขอ มูลเปน ตัวเลขทศนิยม

%of รับขอ มลู เปน ตวั เลขทศนิยม

%g รบั ขอมลู เปนตัวเลขทศนยิ ม

%h รับขอ มลู เปน ตัวเลขจำนวนเตม็ แบบ short

%I รบั ขอมลู เปน ตวั เลขจำนวนเตม็ เลขฐานสบิ หก เลขฐานแปด

%o รับขอมลู เปนตัวเลขฐานแปด

%x รบั ขอมลู เปนตัวเลขฐานหก

%s รับขอมูลเปน ขอ ความ จำนวนขอ มลู ท่ีเปน ตวั อักขระมากกวาหน่งึ ตวั ใชในการ

เกบ็ อักขระนลั ฃ \ 0 ใหกบั สตรงิ ออโตเมติก

%ou รับขอมูลเปน ตัวเลขจำนวนเตม็ แบบ unsigned

การปอ นขอมูลใหก ับที่อยตู วั แปรของฟง กชนั scanf() โดยมาตรฐานใชอักขระไวทสเปช ในการแยก
ขอ มลู ของแตล ะฟล ดตวั อยางโปรแกรมที่ 4.6

ตัวอยางโปรแกรมที่ 4.6 การปอ นขอมลู โดยฟง กช นั scanf()

ผลการทำงานของโปรแกรม

จากผลการทำงานของโปรแกรม 4.6 ใชก ารเวน วรรคหรอื อักขระไวทสเปช คน่ั ระหวางการปอนเลข 1
เลข 2 และเลข 3 เพือ่ กำหนดคาขอมลู จากคยี บ อรดใหท่อี ยูตวั แปรแตละตัว a b และ c ตามลำดับ

การปอ นขอ มูลสามารถใชการปอนกด Enter แทนการใชการเวน วรรคหรืออกั ขระไวทส เปช ค่ัน
ระหวางการปอนเลข 1 เลข 2 และเลข 3 ใหกับท่อี ยูต วั แปรแตล ะตวั a b และ c ตามลำดบั

หรือการกำหนดจำนวนของตัวอกั ขระที่ใชในการปอนขอมูล จากตัวโปรแกรมใชฟ งกชัน scanf() ได
ดงั โปรแกรมท่ี 4.7 เชน การกำหนดจำนวนตัวเลขที่ตอ งการในปอ น 3 ตวั อกั ขระ สามารถกำหนดดวย%3d
ตัวอยางโปรแกรมท่ี 4.7 แสดงการกำหนดจำนวนอักขระในการปอ นฟง กชัน scanf()

ผลการทำงานของโปรแกรม

แตถ า ผใู ชงานโปรแกรมปอนผดิ พลาด คือใชก ารกำหนดจำนวนอักขระในการปอน เชน 1234 5678
9100 สง ผลทำใหการรบั ขอ มูลผดิ พลาดไดด งั น้ี

จากผลการทำงานโปรแกรมพบวา ขอ มูลที่ตัวแปร a เก็บเปนคา 123 b เก็บคา 4 และ c เก็บคา
567 สวนคา 89100 ถูกตัดทิ้งเพราะโปรแกรมมีการกำหนดรับคา 3 อักขระแรกเปนของตัวแปร a สวนที่
เหลอื เปน ของตวั แปร b คือ 4 เทานั้นเพราะหลงั การกดเลข 4 มีการเวนวรรค สงผลใหโ ปรแกรมตีความวาจบ
การปอนคาชุดที่สอง สวนตัวแปร c รับคาอีก 3 อักขระที่ปอนคือ 567 เทานั้น สวนเหลือตัวโปรแกรมไม
สามารถรับได จงึ ไมส นใจ

การกำหนดของรหัสควบคุมในโปรแกรมภาษาซียอมใหมีการกำหนดเพิ่มอารก วิ เมนตเพิ่มเติมได เชน
ตองการกำหนดใหโปรแกรมรับจำนวนเต็มแบบ short หรือ unsigned สามารถกำหนดดวย %hd ถา
กำหนดใหรับจำนวนเต็บแบบ long หรือ unsigned long สามารถกำหนดดวย %ld หรือถาตองการ
กำหนดใหร ับเลขทศนิยมมีความละเอียดสองเทา สามารถกำหนดว ย %Lf ดงั ตัวอยา งโปรแกรมท่ี 4.8

ตัวอยางโปรแกรมที่ 4.8 การกำหนดการรับคาเพิ่มอารกิวเมนตเพิ่มเติม โดยทำการกำหนดตัวแปรที่ชนิด
double 2 ตัวแปรคือ ad และ bd ในการรับคาดวย ฟงกชัน scanf(“%lf%lf”,&ad,&bd); และการกำหนด
ตวั แปรท่ชี นดิ short 2 ตัวแปรคอื as และ bs ในการรบั คาดวย ฟงกชัน scanf(“%hd %hd” , &as , &bs);
จะพบวาถาทำการปอนคาใหตัวแปรชนิดที่ short จำนวน 2 ไบท (บิต) ซ่ึงมีคาตัวเลขที่สามารถรับคาไดอยู
ระหวา ง -32468 ถึง +32767 เทาน้ัน ถามกี ารปอนคาเกินไปหนึง่ คำ ขอมูลจะทำการกำหนดคาใหเปนคา ติด
ลบคา แรกของคาคอื -32768 ดงั ผลการทำงานของโปรแกรม


Click to View FlipBook Version