C programming

Preview:

Citation preview

ตัวแปรในภาษาซีตัวแปรในภาษาซีการเขยีนโปรแกรมภาษาซีการเขยีนโปรแกรมภาษาซี

ศูนยค์อมพวิเตอร์ศูนยค์อมพวิเตอร์โรงเรยีนพยุหะพทิยาคมโรงเรยีนพยุหะพทิยาคม

http://http://www.mwit.ac.th/~jeab/www.mwit.ac.th/~jeab/

tech30101.phptech30101.php

ตัวแปร หมายถึง ชื่อท่ีใชใ้นการอ้างอิงพื้นท่ีในหน่วยความจำาหลัก ท่ีจองไวเ้ก็บขอ้มูล

ตัวอยา่งเชน่ a = 5;s = “rose”;เมื่อเราต้องการใชข้อ้มูล 5 หรอื rose ให้

เราเรยีกใชจ้ากตัวแปร a และ s

ความหมายของตัวแปรความหมายของตัวแปร

กฎเกณฑ์ในการตัง้ชื่อตัวแปรภาษาซมีดีังน้ีต้องขึ้นต้นด้วยตัวอักษร A – Z หรอื a-z หรอื

เครื่องหมาย _ (underscore) เท่านัน้ อักขระตัวต่อไปจะเป็น A – Z หรอื a-z หรอื

เครื่องหมาย _ (underscore) หรอื - 09 และหา้มมชีอ่งวา่ง

ตัวพมิพใ์หญ่พมิพเ์ล็กถือวา่เป็นคนละตัวแปรกันชื่อของตัวแปรในโปรแกรมเดียวกันจะซำ้ากันไมไ่ด้ยกเวน้

จะอยูต่่างฟงัก์ชนัชื่อของตัวแปรจะต้องไมซ่ำ้ากับคำาสงวนในภาษาซี

หลักการตั้งชื่อตัวแปรในหลักการตั้งชื่อตัวแปรในภาษาซีภาษาซี

autobreak casecharconst continue

default do double elseenum extern

float for gotoifint long

register return short signedsizeof static

struct switch typedefunion unsigned void

volatile while

คำาสงวน คำาสงวน (reserved (reserved word) word) ในภาษาซีในภาษาซี

ตัวอยา่งท่ี ตัวอยา่งท่ี 41. 41. การต้ังการต้ังชื่อตัวแปรภาษาซีชื่อตัวแปรภาษาซี

hanaka ถกูต้อง

Hi-tech ไมถ่กูต้องเนื่องจากมีเครื่องหมายลบ_na

meถกูต้อง

First name

ไมถ่กูต้องเนื่องจากมีชอ่งวา่งconst ไมถ่กูต้องเนื่องจากเป็นคำาสงวนConst ถกูต้องเน่ืองจาก C ตัวใหญ่ไมเ่ป็นคำาสงวน

ค่าคงท่ีในภาษาซเีป็นค่าท่ีสามารถนำาไปใชไ้ด้ตลอดโปรแกรม มปีระโยชน์ในกรณีท่ีต้องมกีารใชค่้าคงท่ีจำานวนมากในโปรแกรม ถ้ามกีารแก้ไขจะสามารถเปล่ียนแปลงได้ง่าย รูปแบบการประกาศค่าคงท่ีคือ

const constant_type constant_name = value;

โดยท่ี const เป็นคำาสัง่ในการประกาศค่าคงท่ี constant_type เป็นชนิดขอ้มูลของค่าคงท่ี constant_name เป็นชื่อของค่าคงท่ี value เป็นค่าท่ีกำาหนด

การประกาศค่าคงท่ีการประกาศค่าคงท่ี

const int a = 100;หมายถึง การกำาหนดให ้a มค่ีาคงท่ีแบบ

จำานวนเต็ม (int) โดยมค่ีาเท่ากับ 100เพราะฉะนัน้ตลอดทัง้โปรแกรมถ้าอ้างอิงถึง a จะมค่ีาเป็น 100 ตลอด

ตัวอยา่งการประกาศค่าตัวอยา่งการประกาศค่าคงท่ีคงท่ี

จำานวนเต็ม (integer) ใช ้intทศนิยม (float) ใช ้floatตัวอักขระ (character) ใช ้charขอ้ความ (string) ใช ้char[n]

สญัลักษณ์ท่ีใชใ้นการสญัลักษณ์ท่ีใชใ้นการประกาศตัวแปรประกาศตัวแปร

ชนิดของตัวแปรชนิดของตัวแปร

ขนาด (bits) ขอบเขต ขอ้มูลท่ีเก็บ

char 8 - 128 ถึง 127 ขอ้มูลชนิดอักขระ ใชเ้นื้อท่ี 1 byteunsigned

char 8 0 ถึง 255 ขอ้มูลชนิดอักขระ ไมค่ิดเครื่องหมาย

int 16 - 32768, ถึง 32767,

ขอ้มูลชนิดจำานวนเต็ม ใชเ้น้ือที่ 2byte

unsigned int 16 0 ถึง 65535 ขอ้มูลชนิดจำานวนเต็ม ไมคิ่ดเครื่องหมาย

short 8 - 128 ถึง 127 ขอ้มูลชนิดจำานวนเต็มแบบสัน้ ใช้เนื้อท่ี 1 byte

unsigned short 8 0 ถึง 255 ขอ้มูลชนิดจำานวนเต็มแบบสัน้ ไมคิ่ด

เครื่องหมาย

long 32

-214748 3648,

ถึง 214748, ,3649

ขอ้มูลชนิดจำานวนเต็มแบบยาว ใช้เนื้อท่ี 4 byte

unsigned long 32

0 ถึง 4294967, ,296

ขอ้มูลชนิดจำานวนเต็มแบบยาว ไมคิ่ดเครื่องหมาย

float 32 3.4*10e(-38) ถึง 34*10 e(38)

ขอ้มูลชนิดเลขทศนิยม ใชเ้น้ือที่ 4byte

double 643.4*10e(-308) ถึง 34*10. e(308)

ขอ้มูลชนิดเลขทศนิยม ใชเ้น้ือที่ 8byte

long double 1283.4*10e(-4032) ถึง 11*10. e(4032)

ขอ้มูลชนิดเลขทศนิยม ใชเ้น้ือที่ 1 6 byte

1. ประกาศตัวแปรละ 1 บรรทัด เชน่ int a; int b;2. ประกาศหลายตัวแปรในบรรทัดเดียวตัวอยา่งเชน่ int a,b;หมายถึง การประกาศให ้a และ b เป็นตัวแปร

แบบ int (จำานวนเต็ม) ซึ่งจะเก็บขอ้มูลได้เฉพาะแบบจำานวนเต็มเท่านัน้

ตัวอยา่งการประกาศตัวอยา่งการประกาศตัวแปรตัวแปร

รูปแบบการประกาศตัวแปรและกำาหนดค่าเริม่ต้นใหกั้บตัวแปร คือ

variable_type variable_name = value;โดยท่ีvariable_type ประเภทขอ้มูลท่ีต้องการเก็บไวใ้น

ตัวแปรvariable_name ชื่อตัวแปรvalue ค่าท่ีกำาหนดค่าท่ีกำาหนดจะต้องตรงกับชนิดของตัวแปรนัน้ๆ

การประกาศตัวแปรและการประกาศตัวแปรและกำาหนดค่าเริม่ต้นให้กับกำาหนดค่าเริม่ต้นให้กับ

ตัวแปรตัวแปร

ตัวอยา่งเชน่ int x = 5;char a = “H”;หมายถึง การประกาศตัวแปร x เป็นตัวแปร

แบบ int (จำานวนเต็ม ) มค่ีาเริม่ต้นเท่ากับ 5การประกาศตัวแปร a เป็นตัวแปรแบบ char (ตัวอักษร ) มค่ีาเริม่ต้นเท่ากับ ‘H’

ตัวอยา่งการประกาศตัวอยา่งการประกาศพรอ้มกำาหนดค่าพรอ้มกำาหนดค่า

มรูีปแบบคือchar variable_name[n];โดยท่ี n จำานวนตัวแปรประเภทอักขระท่ีจะ

นำามาสรา้งเป็นขอ้ความ เชน่ char[11] หมายถึงตัวแปร n เก็บขอ้มูลแบบตัวอักขระ

ทัง้หมด 10 ตัวรวมกับตัว \0 รวมเป็น 11 ตัว (ขอ้มูลแบบขอ้ความจะต้องมตัีว \0 อยูท้่ายเสมอ)

variable_name คือชื่อของตัวแปร

การประกาศตัวแปรการประกาศตัวแปรประเภทขอ้ความ ประเภทขอ้ความ

char v[8]; หมายถึงการประกาศให ้v เป็นตัวแปรแบบแถวอักษรโดยมขีนาดทัง้หมด 8 ตัวอักษร

char m[10] = “PROGRAM”;หมายถึงการประกาศให ้m เป็นตัวแปรแบบแถวอักษรโดยมี

ขนาดทัง้หมด 10 ตัวอักษรโดยมค่ีาเริม่ต้นคือ PROGRAM

char s[] = “PLUAK”;หมายถึงการประกาศตัวแปร s เป็นตัวแปรแบบขอ้ความโดย

จะขนาดเท่ากับจำานวนอักษรเริม่ต้นในท่ีนี้คือ 5 บวกกับ \ 0รวมเป็น 6 ตัว

ตัวอยา่งการประกาศตัวแปรตัวอยา่งการประกาศตัวแปรประเภทขอ้ความ ประเภทขอ้ความ

char v[8]; หมายถึงการประกาศให ้v เป็นตัวแปรแบบแถวอักษรโดยมขีนาดทัง้หมด 8 ตัวอักษร

char m[10] = “PROGRAM”;หมายถึงการประกาศให ้m เป็นตัวแปรแบบแถวอักษรโดยมี

ขนาดทัง้หมด 10 ตัวอักษรโดยมค่ีาเริม่ต้นคือ PROGRAM

char s[] = “PLUAK”;หมายถึงการประกาศตัวแปร s เป็นตัวแปรแบบขอ้ความโดย

จะขนาดเท่ากับจำานวนอักษรเริม่ต้นในท่ีนี้คือ 5 บวกกับ \ 0รวมเป็น 6 ตัว

ตัวอยา่งการประกาศตัวแปรตัวอยา่งการประกาศตัวแปรประเภทขอ้ความ ประเภทขอ้ความ

แบบฝึกหดั 1. ขอ้มูลต่อไปน้ีเป็นขอ้มูลชนิดใด

ขอ้มูล ชนิดของขอ้มูล (data type)0E55.55-98.76#0770xFFelectrical engineering23.4567-1

แบบฝึกหดั 2. จงเขยีนคำาสัง่สรา้งตัวแปรเพื่อเก็บขอ้มูลตามรายละเอียดดังน้ี

ขอ้มูล ประกาศตัวแปรตัวแปรชื่อ i เก็บจำานวนเต็มตัวแปรชื่อ e เก็บอักขระตัวแปรชื่อ pi เก็บเลขทศนิยมตัวแปรชื่อ department เก็บขอ้ความตัวแปรชื่อ i เก็บจำานวนเต็มพรอ้มกำาหนดใหม้คี่าเท่ากับ 0ตัวแปรชื่อ e เก็บอักขระพรอ้มกำาหนดใหม้ค่ีาเท่ากับ eตัวแปรชื่อ pi เก็บเลขทศนิยมพรอ้มกำาหนดใหม้คี่าเท่ากับ 314

ตัวแปรชื่อ department เก็บขอ้ความพรอ้มกำาหนดใหม้คี่าเท่ากับ electrical engineeringตัวแปรชื่อ hex เก็บจำานวนเต็มพรอ้มกำาหนดใหม้คี่าเท่ากับ FF ฐาน 16ตัวแปรชื่อ topOfStack เก็บจำานวนเต็มพรอ้มกำาหนดใหม้คี่าเท่ากับ -1

เครื่องหมายทางคณิตศาสตร์เครื่องหมายการคำานวณ ใชใ้นภาษา C 

** หรอื ^ คือ ยกกำาลัง

เครื่องหมายทางคณิตศาสตร์เครื่องหมายท่ีใชใ้นการเปรยีบเทียบ ในภาษา C 

หรอื < >

เครื่องหมายทางคณิตศาสตร์เครื่องหมายท่ีใชใ้นการเปรยีบเทียบทางตรรกะ ในภาษา C 

การเขยีนนิพจน์ในภาษา C การเขยีนนิพจน์ในภาษา C นิพจน์ในภาษา C ก็คือ การนำาขอ้มูลและตัวแปรในภาษา C มาดำาเนินการด้วยเครื่องหมายทางคณิตศาสตร ์ตรรกศาสตร ์หรอืเครื่องหมายเปรยีบเทียบในภาษา C เป็นตัวสัง่งาน 

แบบทดสอบ

โครงสรา้งภาษาซี

สว่นหัวของโปรแกรม ใช้ระบุเพื่อบอกให้คอมไพเลอรก์ระทำาการใดๆ

สว่นของฟงัก์ชัน่หลัก ฟงัก์ชัน่หลักของภาษาซ ีคือ ฟงัก์ชัน่ main()

สว่นรายละเอียดของโปรแกรม เป็นสว่นของการเขยีนคำาสัง่ เพื่อให้โปรแกรมทำางานตามท่ีได้ออกแบบไว ้จะอยูใ่นเครื่องหมาย {……}

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่แสดงผลลัพธ ์printfคำาสัง่ printf           คำาสัง่ printf  ถือได้วา่เป็นคำาสัง่พื้นฐานท่ีสดุในการแสดงผลขอ้มูลทกุชนิดออกทางหน้าจอไมว่า่จะเป็นจำานวนเต็ม int  ทศนิยม float ขอ้ความ string  หรอือักขระ  นอกจากน้ีคำาสัง่ยงัมคีวามยดืหยุน่สงูโดยเราสามารถกำาหนดหรอืจดัรูปแบบการแสดงผลใหม้รีะเบยีบหรอืเหมาะสมตามความต้องการได้อีกด้วย  ตัวอยา่งการใชค้ำาสัง่ printf  แสดงผลขอ้ความธรรมดาออกทางหน้าจอ ดังน้ีprintf("Hello Program C");

แสดงขอ้ความ Hello Program C ออกทางจอภาพ

printf(“PPT school"); แสดงขอ้ความ PPT school ออกทางจอภาพprintf(“Phayuha Thailand");

แสดงขอ้ความ Phayuha  Thailand  ออกทางจอภาพ

#include <stdio.h>#include <conio.h>main(){   printf (“PPT School\n");   printf("Program C\n");getch();}

ผลลัพธโ์ปรแกรม PPT SchoolProgram C

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่แสดงผลลัพธ ์printf

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่แสดงผลลัพธ ์printf

อักขระควบคมุการแสดงผล ความหมาย

\n ขึน้บรรทัดใหม่\t เวน้ชอ่งวา่งเป็นระยะ 1

แท็บ 6( ตัวอักษร)\r กำาหนดให้เคอรเ์ซอรไ์ปอยู่

ต้นบรรทัด\f เวน้ชอ่งวา่งเป็นระยะ 1

หน้าจอ\b ลบอักขระสดุท้ายออก 1

ตัว

นอกจากน้ีเรายงัสามารถจดัรูปแบบการแสดงผลใหด้เูป็นระเบยีบมากขึ้น  อยา่งเชน่ขึ้นบรรทัดใหม ่ หลังแสดงขอ้ความ  หรอืเวน้ระยะแท็บระหวา่งขอ้ความ  โดยใชอั้กขระควบคมุการแสดงผลรว่มกับคำาสัง่ printf 

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่แสดงผลลัพธ ์printf

รูปแบบการแสดงผลค่าของตัวแปรออกทางหน้าจอเครื่องหมเครื่องหม

ายายการใชง้านการใชง้าน

%d ให้พมิพรู์ปแบบเลขจำานวนเต็มฐานสบิ%u ให้พมิพรู์ปแบบเลขจำานวนเต็มไมม่ี

เครื่องหมาย%f ให้พมิพรู์ปแบบเลขทศนิยม%e ให้พมิพเ์ลขจำานวนจรงิในรูปแบบเลข

ยกกำาลัง%c ให้พมิพตั์วอักษรตัวเดียว (char)%s ให้พมิพชุ์ดตัวอักษร (string ) หรอื

ขอ้ความ%% ให้พมิพเ์ครื่องหมาย %%0 ให้พมิพเ์ลขฐานแปด%x ให้พมิพเ์ลขฐานสบิหก

แบบฝึกการเขยีนโปรแกรมจงเขยีนโปรแกรมตามรูปแบบต่อไปนี้ โดยทำาการคอมไพล์แล้วรนัโปรแกรมและสงัเกตผลท่ีได้ใสใ่นชอ่งผลลัพธ ์(OUTPUT)

ขอ้ โปรแกรม ผลลัพธ ์(Output)

1   #include <stdio.h>  #include<conio.h>  main()  {  printf("Hello World\n");      getch();  }

2 #include <stdio.h>  #include<conio.h>  main()  {  int i=7;  printf("%d",i);      getch();  }

แบบฝึกการเขยีนโปรแกรมจงเขยีนโปรแกรมตามรูปแบบต่อไปนี้ โดยทำาการคอมไพล์แล้วรนัโปรแกรมและสงัเกตผลท่ีได้ใสใ่นชอ่งผลลัพธ ์(OUTPUT)

ขอ้ โปรแกรม ผลลัพธ ์(Output)

3 #include <stdio.h>  #include<conio.h>  main()  {  float i=8.23;  printf("%f",i);      getch();  }

4   #include <stdio.h>  #include<conio.h>  main()  {  float i=8.23;  printf("%.2f",i);      getch();  }

แบบฝึกการเขยีนโปรแกรมจงเขยีนโปรแกรมตามรูปแบบต่อไปนี้ โดยทำาการคอมไพล์แล้วรนัโปรแกรมและสงัเกตผลท่ีได้ใสใ่นชอ่งผลลัพธ ์(OUTPUT)

ขอ้ โปรแกรม ผลลัพธ ์(Output)5   #include <stdio.h>

  #include<conio.h>  main()  {  printf("Hello World\n");      printf("SPPK");  getch();  }

6  #include<stdio.h>  #include<conio.h> int x; int y=3; main(){ x=y+5; printf("%d",x);getch();}

http://www.buached.ac.th/kruparn/p1_3.html

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่รบัขอ้มูลจากคียบ์อรด์ scanf()คำาสัง่ scanf()          ในภาษา C การรบัขอ้มูลจากคียบ์อรด์สามารถทำาได้โดยการเรยีกใชฟ้งัก์ชนั scanf()  ซึ่งเป็นฟงัก์ชนัมาตรฐานสำาหรบัรบัขอ้มูลจากคียบ์อรด์  โดยสามารถรบัขอ้มูลได้ทกุประเภท  ไมว่า่จะเป็น จำานวนเต็ม  ทศนิยม  อักขระ หรอืขอ้ความ

formatการใชร้หัสควบคมุรูปแบบ  เพื่อกำาหนดชนิดของขอ้มูลท่ีจะรบัเขา้มาจากคียบ์อรด์ โดยรหัสควบคมุรูปแบบใชชุ้ดเดียวกับคำาสัง่ printf()

variable

ตัวแปรท่ีจะใชเ้ก็บค่าขอ้มูลท่ีรบัเขา้มาจากคียบ์อรด์  โดยชนิดของตัวแปรจะต้องตรงกับรหสัควบคมุรูปแบบท่ีกำาหนดไว ้ นอกจากนี้หน้าชื่อของตัวแปรจะต้องนำาหน้าด้วยเครื่องหมาย    & ยกเวน้ตัวแปรสตรงิ  สำาหรบัเก็บขอ้ความเท่านัน้ท่ีไมต้่องนำาหน้าด้วยเครื่องหมาย &

รูปแบบคำาสัง่  scanf()                  scanf("format",&variable);

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่รบัขอ้มูลจากคียบ์อรด์ scanf()

ตัวอยา่งการใชค้ำาสัง่ scanf()  รบัขอ้มูลจากคียบ์อรด์ ดังนี้

โปรแกรม ผลลัพธ ์(Output)#include <stdio.h>#include<conio.h>main(){  char name[80];  printf(“Enter your name :");     scanf(“%s”,name); printf(“Here is your name : %s”,name);  getch(); }

#include <stdio.h>#include <conio.h>main(){  int x,y,sum;  printf("Enter The Length is : ");  scanf ("%d",&x);  printf("Enter The Width is : ");  scanf ("%d",&y);  sum = x*y;  printf("The area is :%d",sum);getch();}

ทดลองเขยีนโปรแกรมการใชค้ำาสัง่รบัขอ้มูลจากคียบ์อรด์ scanf()

รูปแบบการแสดงผลค่าของตัวแปรออกทางหน้าจอ

รหัสควบคมุรูปแบบ การนำาไปใชง้าน%d แสดงผลค่าของตัวแปรชนิดจำานวนเต็ม%u แสดงผลค่าของตัวแปรชนิดจำานวนเต็ม

บวก%f แสดงผลค่าของตัวแปรชนิดจำานวน

ทศนิยม%c แสดงผลอักขระ 1 ตัว%s แสดงผลขอ้ความ หรอือักขระมากกวา่

1 ตัว