Music Hit In your life

วันพฤหัสบดีที่ 21 มีนาคม พ.ศ. 2556

สรุปวิชาการเขียนโปรแกรม 1 เริ่มต้นกับภาษาซี


ใบความรู้
สรุปวิชาการเขียนโปรแกรม 1 เริ่มต้นกับภาษาซี 
ชั้นมัธยมศึกษาปีที่ ๒ ครูสุเมธ
1   บทนำเกี่ยวกับภาษาซีที่นำมาใช้ในหลักสูตรการเขียนโปรแกรม 1
จากหลักสูตรการเขียนโปรแกรม 1  ผู้สอนจะต้องเลือกใช้ภาษาใดภาษาหนึ่งในการเรียนเขียนโปรแกรมภาคปฏิบัติ เพื่อให้นักเรียนได้มีความเข้าใจมากยิ่งขึ้นนอกเหนือจากการเรียนทฤษฎีในห้องเรียน   สามารถนำทฤษฎีการเขียนโปรแกรมไปประยุกต์ใช้และปฏิบัติได้จริงจนเกิดผลงานหรือโครงงานเขียนโปรแกรมคอมพิวเตอร์  ดังนั้นผู้สอนจึงเลือกภาษาซีมาใช้ในการเรียนการสอน  ด้วยเหตุผลหลักๆ ดังนี้    (ดูหลักสูตรด้านคอมพิวเตอร์ในประเทศไทยที่เว็บไซด์ www.comsci.info )
1. ภาษาซี  เป็นภาษาคอมพิวเตอร์ระดับสูง  เหมาะสำหรับการเรียนรู้เบื้องต้น ฝึกคิดวิเคราะห์ แก้ปัญหาอย่างเป็นระบบ
2. * ภาษาซี  มีการจัดอันดับความนิยมในการใช้ภาษาคอมพิวเตอร์(อดีต -2550) พบว่า ภาษาซี เป็นภาษาอันดับ 2-3 ของโลก
          ( จัดอันดับดังนี้ 1. Java    2. C++    3. C     4. PHP    5. Perl     6.Python    7. C#    8. JavaScript   9. VB     10. Delphi
        อ้างอิงจาก   http://www.jroller.com/page/matsh?entry=java_history_was_made_today  )
3.  ภาษาซี  เป็นพื้นฐานในการเรียนต่อระดับสูงต่างๆ   เช่น Java, Visual Basic , Flash animation (script) , Authorware ฯลฯ
4.  ภาษาซี  มักใช้แก้ปัญหาเชิงคณิตศาสตร์  วิทยาศาสตร์ (ฟิสิกส์ เคมี ชีววิทยา)  ที่ซับซ้อนได้ดี รวมทั้งสาขาอื่นๆ ด้วย
5.  ในปีการศึกษา 2551  พบว่าสาขาวิทยาการคอมพิวเตอร์ วิศวกรรมคอมพิวเตอร์ นำภาษาซี หรือ Java มาใช้ในการเรียน...
6.  บริษัท Microsoft นำภาษาซีมาใช้ในการเริ่มต้นสร้างระบบปฏิบัติการ Windows  ซึ่งให้มูลค่าหลายพันล้านบาท
7.  ภาษาซี   ได้รับความนิยมแพร่หลายไปทั่วโลกมาแล้ว 23 ปี  ตั้งแต่ปี ค.ศ. 1985    และประโยชน์เหตุผลอื่นๆ  อีกมากมาย

1.1  การคอมไพล์และรันโปรแกรม
-  ภาษาซีเป็นภาษาโปรแกรมระดับสูง  ใช้สำหรับเขียนโปรแกรมประยุกต์ต่างๆ  สร้างและพัฒนาระบบปฏิบัติการ  มีความสามารถที่เด่นกว่าภาษาคอมพิวเตอร์อื่นๆ คือ  เน้นควบคุมฮาร์ดแวร์ (Hardware) ซึ่งการใช้คำสั่งต้องใช้มาตรฐานของ ANSI  C
- การคอมไพล์และรันโปรแกรมภาษาซีมีขั้นตอนการดำเนินการของโปรแกรมแปลภาษาซีดังนี้
Editor  -->  Preprocessor  -->  Compiler  -->  Linker  -->  Loader
-  Source code หรือ รหัสต้นฉบับ คือ  ข้อความที่เขียนขึ้นโดยใช้ภาษาคอมพิวเตอร์
-  Object code คือ  รหัสเครื่องประกอบด้วยตัวเลข 0 และ 1 ที่ถูกสร้างขึ้นจากโปรแกรมรหัสต้นฉบับ
-  Compiler   คือ  ดำเนินกระบวนการแปลง Source code ให้เป็น  Object code

แบบฝึกหัด

  1. ภาษาซีเป็นภาษาระดับใด
  2. ภาษาซี   ได้รับความนิยมแพร่หลายไปทั่วโลก ตั้งแต่ปีใด
  3. บริษัทใดที่มีการนำภาษาซี มาใช้สร้างระบบปฏิบัติการ
  4. ข้อความที่เขียนขึ้นโดยใช้ภาษาคอมพิวเตอร์ เรียกว่าอะไร
  5. ภาษาซีมักใช้แก้ปัญหาในวิชาใด



1.2  โครงสร้างพื้นฐานของโปรแกรมภาษาซี

//   ==========   ส่วนที่ 1  ส่วนหัวของฟังก์ชัน  =========================
#include       //  คือ    การเรียกอ่านแฟ้มส่วนหัว (header file) เพื่อให้ถูกประมวลผล -
#include //            ร่วมกับโปรแกรมแปลภาษาซี   เช่น เรียกอ่าน file ชื่อ stdio.h  -
//            ซึ่งภายในจะบรรจุคำสั่งที่ใช้ในภาษาซี เช่น printf() , scanf()  เป็นต้น
void main( ) //   คือ ฟังก์ชันหลักที่มีค่าว่าง หรือ ไม่มีการส่งค่าข้อมูลไปและไม่รับค่ากลับมา
{ //   คือจุดเริ่มต้นของฟังก์ชัน     (ในทางอัลกอริทึ่ม คือ  เริ่มต้นการทำงาน)

//   ==========  ส่วนที่ 2   ส่วนการประกาศตัวแปร  =========================
int  number  ;             //   คือ ส่วนประกาศตัวแปรชนิดต่างๆ  เพื่อเก็บข้อมูลระหว่างการประมวลผล  -
            //         เช่น   int  number;   คือ การประกาศตัวแปร number ให้เป็นชนิดตัวเลขจำนวนเต็ม

//   ==========   ส่วนที่ 3  ส่วนคำสั่งต่างๆ   =========================
printf("Display");   // คือ ส่วนของคำสั่งต่างๆ  เช่น printf คือ คำสั่งแสดงข้อมูล  เป็นต้น
clrscr(); //   คือ คำสั่งล้างจอภาพ  (Clear  Screen)  ต้องใช้ header file  ชื่อ   conio.h
} //   คือจุดสิ้นสุดของฟังก์ชัน       (ในทางอัลกอริทึ่ม คือ  จบการทำงาน)

สรุปหลักเนื้อหาบางส่วนของบทที่ 1
1.3 ทฤษฎีการแสดงผลลัพธ์ของภาษาซีเบื้องต้น  (ดูหลักการเพิ่มเติมของ Computer  Science ที่เว็บไซด์ www.comsci.info )
  * ฟังก์ชัน  printf( )  เป็นฟังก์ชันที่ใช้ในการแสดงผลลัพธ์ออกทางจอภาพ  ซึ่งจะต้องมี   argument   อยู่ด้วยเสมอ

* รูปแบบการใช้  คือ       printf ( “argument” ,  list ) ;                     (อาจจะไม่มี list ก็ได้)

argument  คือ  ข้อความ  หรือรหัสรูปแบบข้อมูล (format code)  หรือ รหัสควบคุมการพิมพ์ข้อมูล
(control code)  ซึ่งในหนังสือแบบเรียน สสวท. จะเรียกว่า อักขระหลีก      โดยสามารถใช้ร่วมกันได้ภายในเครื่องหมาย “   ”  (double quote) โดยที่ข้อความและรูปแบบของข้อมูลจะถูกพิมพ์ออกมาทางจอภาพ    ซึ่งรหัสพื้นฐานต่างๆ ที่ควรรู้  มีดังนี้

รหัสรูปแบบข้อมูล
(format  code) ความหมาย
(ใช้กับข้อมูลชนิด... ) รหัสควบคุมหรืออักขระหลีก
(control or escape code)   ความหมาย
%d ตัวเลขจำนวนเต็ม  (int) \n ขึ้นบรรทัดใหม่
%c อักขระตัวเดียว (char) \t เว้นช่องว่าง 6 อักขระ
%f เลขทศนิยม  (float) \b ลบทีละ 1 อักขระ
%s ข้อความ (char var[] ) \’  หรือ \” แสดงอักขระ ‘ หรือ ”
list  คือ  ค่าคงที่ หรือ ตัวแปร  หรือนิพจน์ก็ได้  ถ้ามีมากกว่า 1  ค่าให้ใช้เครื่องหมาย , (comma)  คั่นระหว่างค่าแต่ละค่า   ซึ่งฟังก์ชัน  printf( )    อาจจะไม่มีส่วน list  ก็ได้    เช่น   printf("M. %d/%d  num = %d" ,  id1, id2, num);

แบบฝึกหัด

  1. ฟังก์ชัน  printf( )   มีหน้าที่การทำงานอย่างไร
  2.  %d  และ %f มีการใช้งานที่ต่างกันอย่างไร 





สรุปหลักเนื้อหาบางส่วนของบทที่ 2   

2.1  ทฤษฎีการรับข้อมูลของภาษาซีเบื้องต้น  (ดูหลักการเพิ่มเติมของ Computer  Science ที่เว็บไซด์ www.comsci.info )
*  ฟังก์ชัน  scanf( )  เป็นฟังก์ชันที่ใช้ในการรับข้อมูลจากคีย์บอร์ดเข้าไปเก็บไว้ในตัวแปรที่กำหนดไว้

รูปแบบการใช้เบื้องต้น  คือ       scanf ( “format code”  ,  &variable ) ;

format  code   เช่น   %d   %c  %f  %s  เป็นต้น   สำหรับคำอธิบายให้ดูคำสั่ง printf
variable  คือ   ชื่อตัวแปรที่ใช้เก็บข้อมูล  โดยจะต้องใช้เครื่องหมาย & (ampersand)  นำหน้าชื่อตัวแปร
         เช่น      scanf("%d", &decimal);    เป็นต้น
* ที่มาจากหนังสือ  :   ผศ.สมชาย  รัตนเลิศนุสรณ์ .  การเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาซี.   กรุงเทพฯ , 2545.

แบบฝึกหัดบทที่ 2  
           จงพิจารณาผลลัพธ์ของโปรแกรมแสดงปีโดยรับข้อมูลจากคีย์บอร์ด   โดยให้แสดงตัวเลขตามรหัสรูปแบบข้อมูล (Format code )   แล้วนำไปเขียน Source Code ในช่องว่างดังนี้


ตามข้อกำหนดมาตรฐานของสถาบัน  ANSI (American  National Standards Institute)  กำหนดให้ภาษา C มีคำสั่งควบคุมการทำงานของโปรแกรม   ซึ่งมีอยู่  3  กลุ่มคำสั่งดังนี้

คำสั่งกลุ่มที่ 1  คำสั่งวนลูปหรือทำงานซ้ำ
คำสั่งวนลูป (Loop)  เป็นคำสั่งที่สามารถควบคุมโปรแกรมให้ทำงานเป็นจำนวนรอบตามที่เรากำหนดไว้  หรือทำงานจนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ   จึงจะออกจากคำสั่งวนลูปได้

คำสั่งและความหมายของคำสั่ง ตัวอย่าง  Source  code ผลลัพธ์เมื่อแสดงบนจอภาพ
3.1   for   เป็นคำสั่งที่สั่งให้โปรแกรมมีการทำงานซ้ำๆ วน loop จนกว่าเงื่อนไขที่กำหนดไว้เป็นเท็จ for (number = 1; number <= 4 ; number++)
   printf(“%d  ”, number ); 1 2 3 4
3.2  while  เป็นคำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง for  แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจาก loop int  n = 1;
while ( n <  4 )
{   n = n + 1 ; printf(“%d  ”, n);  } 1 2 3
3.3  do while  เป็นคำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง while  แต่จะทดสอบเงื่อนไขหลังจากที่ได้ทำงาน
ตามคำสั่งภายใน loop ไปแล้ว  1 รอบ   int  n = 1;
do  {   n = n + 1 ; printf(“%d  ”, n);  }
while ( n <  4 ); 1 2 3
3.4  break เป็นคำสั่งที่สั่งให้ออกจากคำสั่ง for หรือ while หรือ do while หรือ คำสั่ง switch for (num = 1; num <= 10 ; num++)
 {  printf(“%d  ”, num );
   if( num == 5)  break;  } 1 2 3 4 5
3.5  continue  เป็นคำสั่งที่สั่งให้กลับไปทำงานที่คำสั่งแรกของลูปคำสั่ง for หรือ while หรือ do while ทำให้มีการทำงานในรอบต่อไป for (num = 1; num <= 10 ; num++)
 {  printf(“%d  ”, num );
   if( num == 5)
  { num = num+2; continue; }    } 1 2 3 4 5 8 9 10

คำสั่งกลุ่มที่ 2  คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (decision statements)
        คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ  เป็นคำสั่งที่มีการทดสอบเงื่อนไขก่อนที่จะทำงานตามคำสั่ง
ที่กำหนดไว้  ซึ่งมีรายละเอียดแต่ละคำสั่งดังนี้

คำสั่งและความหมายของคำสั่ง ตัวอย่าง  Source  code ผลลัพธ์
3.6   if  เป็นคำสั่งที่ใช้ทดสอบเงื่อนไข  โดยมีการตัดสินใจแบบ 1 ทางเลือก
ถ้าเงื่อนไขเป็นจริงให้ทำตามคำสั่งที่อยู่ภายใน if  ถ้าเป็นเท็จให้ทำคำสั่งถัดไป if (num == 9)
{  printf(“Yes = 9”);  } input number = 9 :
Yes = 9
3.7   if else  คำสั่งที่ใช้ทดสอบเงื่อนไข  โดยมีการตัดสินใจแบบ 2 ทางเลือก   if (num == 9)  {  printf(“Yes = 9”);  }
else {  printf(“Not 9”);  }
input number = 7 : Not 9
input number = 9  : Yes= 9
3.8    if else if  หรือ  หรือ  nested  if  หรือ if เชิงซ้อนคือ คำสั่งที่ใช้ทดสอบเงื่อนไข  โดยมีการตัดสินใจที่ซับซ้อนมากกว่า 2 ทางเลือกขึ้นไป if (num == 9)  {  printf(“Yes = 9”);  }
else if (num == 8)  {  printf(“Yes = 8”);  }
else {  printf(“Not 9 and Not 8”);  } input number = 8 : Yes = 8
input number = 9  : Yes= 9
input number = 7  : Not 9 and Not 8
3.9   switch  คำสั่งที่ใช้ทดสอบเงื่อนไขคล้ายๆกับคำสั่ง if else if  และสำหรับตัดสินใจมากกว่า 2 ทางเลือกขึ้นไป  แต่มีรูปแบบการใช้คำสั่งง่ายกว่าและสดวกในการแก้คำสั่งเมื่อมีข้อผิดพลาดเกิดขึ้น
       3.9.1  case คือ  คำสั่งที่ใช้ร่วมกับคำสั่ง switch เพื่อใช้ตรวจสอบเงื่อนไข
      3.9.2  default  คำสั่งที่ใช้ร่วมกับคำสั่ง switch ใช้ในกรณีที่นิพจน์หรือค่าคงที่ไม่ตรงกับเงื่อนไขใดๆ เลย printf(“Enter Grade :\n”);
scanf(“%c”, &grade);
switch ( grade )
{ case ‘a’ : num = 4;  break;
case ‘b’ : num = 3;  break;
case ‘c’ : num = 2;  break;
case ‘d’ : num = 1;  break;
default :  num = 0;
}
printf(“Number =  %d \n\n”, num);   Enter Grade :  b
Number =  3

Enter Grade :  a
Number =  4

Enter Grade :  z
Number =  0

แบบฝึกหัด

  1. คำสั่งวนลูป (Loop)   คืออะไร
  2. ยกตัวอย่างคำสั่งเงื่อนไขที่นักเรียนเข้าใจ พร้อมอธิบายวิธีการใช้งานมาพอเข้าใจ



คำสั่งกลุ่มที่ 3  คำสั่งที่สั่งไปทำงานตามจุดที่กำหนดไว้   (goto  statements)
        คำสั่ง goto และ label  จะทำให้โปรแกรมข้ามคำสั่ง อื่นๆ เพื่อไปทำคำสั่งที่ต้องการ โดยอาจมีเงื่อนไขหรือไม่มีเงื่อนไขก็ได้
คำสั่งนี้จะไม่ใช้ในหลักสูตรการเขียนโปรแกรมคอมพิวเตอร์  และหลักการเขียนโปรแกรมด้วย C  โดยทั่วไปแล้วไม่นิยมใช้คำสั่ง goto
 เพราะเป็นคำสั่งที่ทำให้การเขียนโปรแกรมไม่เป็นระเบียบ และผิดโครงสร้างทางอัลกอริทึ่มอีกด้วย
คำสั่งนี้จะใช้ในกรณีพิเศษเท่านั้นเช่น   การข้ามขั้นตอนการทำงานในบางกรณี   การย้อนกลับไปจุดเริ่มต้นหรือจุดสิ้นสุดการทำงานของโปรแกรม  เป็นต้น


แบบฝึกหัดบทที่ 3

  1.  คำสั่งที่ใช้ทดสอบเงื่อนไข  โดยมีการตัดสินใจแบบ 2 ทางเลือก  คือคำสั่งอะไร 
  2. คำสั่งที่มีลักษณะการทำงานคล้ายกับคำสั่ง while  แต่จะทดสอบเงื่อนไขหลังจากที่ได้ทำงาน
  3. ตามคำสั่งภายใน loop ไปแล้ว  1 รอบ  คือคำสั่งอะไร 
  4. คำสั่งที่ใช้ร่วมกับคำสั่ง switch ใช้ในกรณีที่นิพจน์หรือค่าคงที่ไม่ตรงกับเงื่อนไขใดๆ เลย  คือคำสั่งอะไร 



1) อัลกอริทึ่ม (Algorithm) คืออะไร?
        ก. กระบวนการ
        ข.  การคำนวน
        ค.  การทอดไข่เจียว
        ง. การแก้ปัญหาแบบสามัญสำนึก (heuristic)
2) ข้อใดไม่ถูกต้อง?
        ก. Integer - เลขจำนวนเต็ม
  ข. Character - ตัวอักษร
         ค. Floating Point Number - เลขหลักลอย
  ง.ไม่ถูกทั้งสามข้อ
3) Header ใดต้องมีในโปรแกรมภาษาC ทุกโปรแกรม?
        ก. conio.h
        ข. stdio.h
  ค. windows.h
  ง. default.h
4) int x, y, z, a; หมายถึงอะไร?
ก.  ประกาศตัวแปร x y z และ a
  ข. ประกาศค่า x y z และ a
  ค. ประกาศให้ z y และ x มีค่าเท่ากับ a
  ง. ไม่มีข้อใดถูก
5) หากต้องการเขียนโปรแกรมให้สื่อความหมายว่า '' ไม่เท่ากับ '' จะต้องเขียนอย่างไร?
       ก.  ==
       ข. !=
       ค.  ^^
       ง.  =><=


เฉลย
1.  ง 2.     ค
3.  ข 4.     ก
5.   ข

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

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