วันจันทร์ที่ 20 มิถุนายน พ.ศ. 2554

บทที่ 2 ทบทวนภาษาซี (Review C Language)

เนื้อหาในบทนี้จะประกอบไปด้วย

- คำสั่งพื้นฐานต่างๆ

- ตัวดำเนินการ(Operator)

- Selection/Condition

- Function

1.คำสั่งพื้นฐานต่างๆ

-printf : ใช้แสดงผล ข้อความ ข้อมูลจากค่าคงที่ หรือตัวแปรที่จอภาพ
เช่น printf(“abc”);
printf(“%s”,”abc”);
-scanf : ใช้รับข้อมูลจากแป้นพิมพ์ แล้วจัดเก็บลงในหน่วยความจำของข้อมูล
เช่น scanf(“%d”,&x);
Format Code ใช้ในการแสดงผลที่นิยมใช้ ได้แก่

Format Code
ความหมาย
%d
ใช้กับข้อมูลแบบ integer(เก็บข้อมูลแบบตัวเลขจำนวนเต็ม)
%c
ใช้กับข้อมูลแบบ character(เก็บข้อมูลแบบอักขระ)
%f
ใช้กับข้อมูลแบบ floating(เก็บข้อมูลแบบตัวเลขทศนิยม),double
%s
ใช้กับข้อมูลแบบ string



2.ตัวดำเนินการ(Operator)

แบ่งออกเป็น 3 ชนิด คือ

2.1 เครื่องหมายการคำนวณทางคณิตศาสตร์(Arithmetic Operation)

เครื่องหมาย
                                 ความหมาย
ตัวอย่าง
+
บวก
3+2  การบวกเลข 3 บวกกับ 2 ได้ผลลัพธ์คือ 5
-
ลบ
3 - 2 การลบเลข 3 ลบกับ 2 ได้ผลลัพธ์คือ 1
*
คูณ
2*3   การคูณเลข 3 บวกกับ 2 ได้ผลลัพธ์คือ 6
/
หาร
15/2  การหาร 15 หารกับ 2 ได้ผลลัพธ์คือ 7
%
หารเอาเศษ
15%2การหารเอาเศษ 15 หารกับ 2 ได้ผลลัพธ์คือ 1
++
เพิ่มค่าขึ้น 1 โดย
a++ จะนำค่าของ a ไปใช้ก่อนแล้วจึงเพิ่มค่าของ a ขึ้น 1

++a จะเพิ่มค่าของ a ขึ้น 1 ก่อนแล้วจึงนำค่าของ a ไปใช้
b=a++;
จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้
b=a;
a=a+1;
b=++a;
จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้
a=a+1;
b=a;
--
ลดค่า 1 โดย
a-- จะนำค่าของ a ไปใช้ก่อน แล้วจึงลดค่าของ a ลง 1
--a จะลดค่าของ a ลง 1 ก่อน แล้วจึงนำค่าของ a ไปใช้
b=a--;
จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้
ิb=a;
a=a-1;
b=--a;
จะมีความหมายเทียบเท่ากับ 2 บรรทัดต่อไปนี้
a=a-1;
b=a;

2.2 ตัวดำเนินการเปรียบเทียบ(Relational and Equality Operators)


ใช้เปรียบเทียบค่า 2 ค่าเพื่อแสดงการเลือก ซึ่งโปรแกรมโดยทั่วไปใช้ในการทดสอบเงื่อนไขตามที่

กำหนด การเปรียบเทียบโดยการเท่ากันของ 2 ค่าจะใช้เครื่องหมาย ==

เครื่องหมาย
ความหมาย
ตัวอย่าง
>
มากกว่าa > b   a มากกว่า b
>==
มากกว่าหรือเท่ากับa >= b a มากกว่าหรือเท่ากับ b
<
น้อยกว่าa < b   a น้อยกว่า b
<==
น้อยกว่าหรือเท่ากับa <= b a น้อยกว่าหรือเท่ากับ b
==
เท่ากับa == b a เท่ากับ b
!=
ไม่เท่ากับa != b  a ไม่เท่ากับ b

2.3 ตัวดำเนินการตรรกะ(Logical Operators) การดำเนินการเปรียบเทียบค่าทางตรรกะ( และ หรือ ไม่)

 

เครื่องหมาย
ความหมาย
ตัวอย่าง
&&
และ(AND)x < 60 && x > 50   กำหนดให้ x มีค่าในช่วง 50 ถึง 60
||
หรือ(OR)x == 10 || x == 15     กำหนดให้ x มีค่าเท่ากับตัวเลข 2 ค่า คือ 10 หรือ 15
!
ไม่(NOT)x = 10  !x  กำหนดให้ x ไม่เท่ากับ 10

ลำดับความสำคัญของเครื่องหมาย

นิพจน์จะทำงานจากซ้ายไปขวา ส่วนใหญ่นิพจน์ที่เขียนขึ้นในโปรแกรมมักจะซับซ้อน มีการดำเนินการ

หลายอย่างปะปนอยู่ภายในนิพจน์เดียวกัน

ลำดับความสำคัญ
ลำดับความสำคัญจากสูงไปต่ำ
1
( )
2
!,++,- -
3
*,/,%
4
+,-
5
<,<=,>,>=
6
= =,!=
7
&&
8
||
9
*=,/=,%=,+=,-=


2.3 ทางเลือก/ลักษณะ(selection/Condition)

- รูปแบบ 1: if statement

Format :
             if (เงื่อนไข)
                    คำสั่ง;

-รูปแบบ 2 : if-else statement

Format :
         if (เงื่อนไข)
           คำสั่งชุดที่ 1(กรณีเงื่อนไขเป็นจริง);

       else
           คำสั่งชุดที่ 2(กรณีเงื่อนไขเป็นจริง);

-รูปแบบ 3: if-else statement (Nested if)

Format :
               If (เงื่อนไขประโยคที่ 1)
               คำสั่งชุดที่ 1 ; (กรณีเงื่อนไขประโยคที่ 1 เป็นจริง)
             else if (เงื่อนไขประโยคที่ 2)
               คำสั่งชุดที่ 2 ; (กรณีเงื่อนไขประโยคที่ 2 เป็นจริง)
                             ..........
             else
          คำสั่งชุดที่ n ; (นอกเหนือจากเงื่อนไขประโยคข้างต้น)
คำสั่งชุดถัดไป

-รูปแบบ 4: switch statement

Format :
                switch (var / expression) {
                        case ค่าที่ 1 : คำสั่งชุดที่ 1;
                                                     break;
                        case ค่าที่ 2 : คำสั่งชุดที่ 2;
                                                     break;
                             ………
                      case ค่าที่ n : คำสั่งชุดที่ n;
                                                      break;
                     default: คำสั่ง;
              }

ข้อความจำ : เงื่อนไขที่ใช้กับคำสั่ง switch ต้อองเป็นคำสั่งแบบประโยคเงื่อนไขแบบ 1ประโยค ไม่สามารถใช้ประโยคเงื่อนไขแบบซ้อนได้ การทำงานของ switch จะต้องมีคำสั่ง break เพื่อออกจากการทำงานของ case นั้น โยไม่ต้องผ่าน case ถัดไป

3. การทำซ้ำ(Repetition/Loop)

-while statement

Format :
           while (เงื่อนไข) {
                  statement-1;
                  statement-2;
                       ……
                  statement-n;
     }

-for statement

Format :
  for (ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด)
{
                statement -1 ;
                statement -2 ;
                     …..
                statement -n ;
  }

ข้อควรจำ : ตัวแปรที่ใช้งานในคำสั่ง for ต้องเป็นตัวแปรประเภทจำนวนเต็มเท่านั้น

-do-while statement

Format :
                          do {
                                  statement -1 ;
                                  statement -2 ;
                                        …..
                                 statement -n ;
            } while (นิพจน์ตรรกะ);

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

4.ฟังก์ชัน(Function)

ข้อดี

-เขียนโค้ดครั้งเดียว แต่สามารถเรียกใช้ได้หลายครั้ง

-สามารถนำหลับมาใช้ใหม่ในโปรแกรมอื่นได้

-ถ้าต้องการเปลี่ยนแปลงแก้ไขเพียงที่เดียว

-ทำให้โปรแกรมมีความเป็นโครงสร้าง

-สามารถแบ่งเป็นโมดูลย่อยๆได้

ฟังก์ชันแบ่งเป็น 2 ประเภท คือ

1. Library Function ฟังก์ชันมาตรฐานหรือไลบรารีฟังก์ชัน

ฟังก์ชันที่ใช้ในงานนี้ เป็นรูปแบบฟังก์ชันที่ต้องมีการส่งค่ากลับ ดังนั้นตัวแปรที่จะใช้งานต้องเป็นตัวเลข

กลุ่มทศนิยม เช่น float, double เป็นต้น

Format :
       #include<file-name>

ตัวอย่าง
#include<stdio.h>
#include<conio.h >
etc.

วิธีเรียกใช้งาน Library Function

-เรียกชื่อของฟังก์ชันที่ต้องการใช้งาน

-เอาค่าที่จะส่งไปทำงานในฟังก์ชัน ใส่ลงในวงเล็บตามหลังชื่อฟังก์ชันนั้น

ตัวอย่าง Library Function

strcpy () –อยู่ในแฟ้มข้อมูล string.h

ทำหน้าที่ : คัดลอกข้อมูลจาก string หนึ่งไปยัง string หนึ่ง

Format :
             strcpy (str1, str2);

strcat () -อยู่ในแฟ้มข้อมูล string.h

ทำหน้าที่ : ใช้เชื่อมต่อข้อความ 2 ข้อความเข้าด้วยกัน

Format :
             strcat (str1, str2);

strlen () -อยู่ในแฟ้มข้อมูล string.h

ทำหน้าที่ : หาความยาวของข้อความ

Format :
            strlen (string);

getchar () –อยู่ในแฟ้มข้อมูล stdio.h

ทำหน้าที่ : เป็นพังก์ชั่นรับข้อมูลเข้าทางคีย์บอร์ดครั้งละ 1 อักขระโดยต้องกด enter  และข้อมูลที่ป้อน

เข้าจะปรากฏทางจอภาพ

Format :
              getchar ();


getch() –อยู่ในแฟ้มข้อมูล stdio.h

ทำหน้าที่ : เป็นฟังก์ชั่นรับข้อมูลเข้าทางคีย์บอร์ดครั้งละ 1 อักขระ โดยไม่ต้องกด enter  และข้อมูลที่

ป้อนเข้าจะไม่ปรากฏทางจอภาพ

Format :
               getch ();


gets( ) -อยู่ในแฟ้มข้อมูล stdio.h

ทำหน้าที่ : เป็นฟังก์ชั่นรับข้อมูลที่เป็นข้อความจากแป้นพิมพ์ เข้ามาเก็บไว้ในตัวแปรชุด (อาร์เรย์)

Format :
                  gets ();

putchar(); -อยู่ในแฟ้มข้อมูล stdio.h

ทำหน้าที่ : เป็นฟังก์ชั่นให้แสดงผลทางจอภาพครั้งละ 1 อักขระ

Format :
                  putchar ();

2.การสร้างฟังก์ชันใช้เอง (User defined function)

เป็นฟังก์ชันที่ผู้เขียนโปรแกรมนิยามขึ้นใหม่ โดยอาจจะเขียนรวมไว้ในตัวโปรแกรมต้นฉบับเดียวกัน หรือ

เขียนแยกไว้ในไฟล์อื่น ซึ่งจะนำมาแปลร่วมโดยการ

ใช้ Include Directives เช่นเดียวกับฟังก์ชันมาตรฐานการสร้าง Function ประกอบด้วย

- Function Definition หรือนิยามฟังก์ชัน คือ รายละเอียดในการทำงานของฟังก์ชัน

Format :
clip_image001/*…………..*/  >> heading comment
  data-type function-name(type argument )
   {
      declaration;
      statement;
    return(value);
}

- Function Prototype คือ การประกาศฟังก์ชันโดยระบุทั้งชนิดของ function และ arguments ทั้งหมด เพื่อ

ให้ compiler มีการตรวจสอบการเรียกใช้ชนิดของ arguments ให้ถูกต้องในขั้นตอนของการ compile ถ้า

หากว่ามีการเรียกใช้ arguments ที่ไม่ถูกต้องก็จะมี message แจ้งตอนcompile ทำให้ไม่ผิด

พลาดในการเรียกใช้ฟังก์ชัน

-Invocation คือการเรียกใช้ฟังก์ชัน

ลักษณะของฟังก์ชัน

-ฟังก์ชันที่ไม่มีการส่งค่ากลับ การเรียกใช้ทำได้โดยอ้างถึงชื่อฟังก์ชัน
           ...........
  Print_banner () ;

-ฟังก์ชันที่มีการส่งค่ากลับ การเรียกใช้ทำได้เหมือนแบบแรก แต่ต้องมีตัวแปรมารับค่าด้วย

การเรียกใช้ทำได้โดย
int main(void) {
   int k, j;
   j = prompt ();
   k = prompt ();
printf(“j = %d and k = %d”, j, k);
-ฟังก์ชันที่มีการรับค่า argument

การเรียกใช้ฟังก์ชันทำได้โดยอ้างถึงชื่อของฟังก์ชันพร้อมทั้งส่งค่าของตัวแปร(parameter)ไปด้วย โดยจะ

ต้องมีชนิดสอดคล้องกับ argument ของฟังก์ชัน ที่เรียกใช้

การผ่านค่า argument ให้ฟังก์ชัน ทำได้ 2 แบบ คือ

1) Pass by Value คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งค่าของตัวแปรหรือค่าที่ส่งไปโดยค่าคง

ที่ผ่านให้กับค่าฟังก์ชันจะถูกคัดลอกส่งให้กับ ฟังก์ชันและจะถูกเลี่ยนแปลงเฉพาะภายในฟังก์ชัน โดยค่า

ของ argumentในโปรแกรมที่เรียกใช้จะไม่เปลี่ยนแปลง

ตัวอย่าง :
void swap(int num1, int num2) {
          int tmp;
tmp = num1;
num1 = num2;
num2 = tmp;
print(“A is %d B is %d\n”, num1, num2);
}
2) Pass by Reference คือ การส่งค่าไปยังฟังก์ชันที่ถูกเรียกใช้โดยส่งเป็นตำแหน่งที่อยู่ของตัวแปรไป

ซึ่งหากภายในฟังก์ชันมีการเปลี่ยนแปลงค่าของ argument ที่ส่งไป ก็จะมีผลทำให้ค่าของ argument นั้นใน

โปรแกรมที่เรียกใช้เปลี่ยนไปด้วย

ตัวอย่าง :
void swap(int * num1, int * num2) {
       int tmp;
tmp = *num1;
*num1 =* num2;
*num2 = tmp;
}

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

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