วันอาทิตย์ที่ 20 พฤศจิกายน พ.ศ. 2559

ประวัติภาษาซีเบื้องต้น

ประวัติภาษาซี

                ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language)  ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์

การประกาศตัวแปร
ในภาษา C หากต้องการใช้ตัวแปร จะต้องทำการประกาศตัวแปรไว้ที่ส่วนบนก่อนที่จะถึงบรรทัดที่เป็นประโยคคำสั่ง การประกาศตัวแปรจะเป็นการบอก compiler ว่าตัวแปรของเรานั้นเป็นตัวแปรชนิดใด
Datatype
Keyword
character
integer
float
double
Char
int
float
double

—ฟังก์ชันหลัก (Main Function)
  ฟังก์ชัน main() ในภาษา C จัดเป็นฟังก์ชันที่ทำหน้าที่เสมือนกับเป็นโปรแกรมหลักที่ใช้สั่งให้ชุดคำสั่งทำงาน รวมถึงการเรียกใช้ฟังก์ชันย่อยอื่นๆ ทำงาน กล่าวคือการสั่งงานในโปรแกรมจะอยู่ในฟังก์ชัน main()
#include <stdio.h>
void main()
 header file
#include <stdio.h>
  #include <string.h>
  #include <math.h>
  void main ()
  {
  ……..
  }

การเขียนภาษาซี week2



week4การหาพื้นที่สามเหลี่ยม
ชนิดข้อมูล float ใช้สำหรับแสดงค่าเป็นเลขทศนิยม ใช้สัญลักษณ์ %f
สูตรการหาพื้นที่สามเหลี่ยม 0.5x ฐาน x สูง





ถามชื่อและนับตัวอักษรว่ามีกี่ตัว โดยกำหนดให้ไม่เกิน30 ตัวอักษร

ชนิดข้อมูล char เก็บค่าตัวอักษรในตัวแปร ที่มีชื่อว่า name 
ใช้สัญลักษณ์ %c,%s 
 %cใช้แสดงค่าตัวอักษร 1 ตัว ส่วน %s ใช้แสดงค่าตัวอักษรเป็นสตริง (หลายตัวอักษร)




week5การใช้ชนิดตัวแปร char
ถามรหัส ASCII
ชนิดข้อมูล char ใช้สำหรับแสดงค่าตัวอักษร
และเก็บค่าตัวเลขใน sum ใช้ %d เพื่อแสดงค่าตัวเลขของรหัส ASCII 
กำหนดให้ตัวแปรคือ ch1= 'g' และ ch2='k'




ใช้ชนิดข้อมูล int เก็บชื่อตัวแปร age เพื่อถาม อายุ ใช้สัญลักษณ์ %d  แสดงค่าตัวเลขที่เป็นจำนวนเต็ม



ถามว่าพี่ชายน้องชายหรือไม่ถ้ามีให้ถามอายุต่อ
   -ถามว่ามีพี่ชายด้วยชนิดข้อมูล char มีชื่อตัวแปรว่า brother;และถ้าไม่มีพี่ชายให้ตอบ 'n'(no)แล้ว Good Bye,ถ้ามีพี่ชายให้ตอบ 'y'(yes)แล้วถามอายุพี่ชายต่อ ใช้สัญลักษณ์ %cใช้แสดงค่าตัวอักษร 1 ตัว   และถ้าตอบว่ามีให้ใช้คำสั่ง  if (brother=='y') *คำสั่ง if ไม่ต้องปิดท้ายด้วย ;
   -ถามว่าอายุเท่าไหร่ด้วยชนิดตัวแปร int มีชื่อตัวแปรว่า age; ใช้สัญลักษณ์ %d  แสดงค่าตัวเลขที่เป็นจำนวนเต็ม

char_input

ใช้ชนิดข้อมูล char เก็บชื่อตัวแปร ch1,ch2  และ ใช้สัญลักษณ์ %c  แสดงค่าตัวอักษร1ตัว  แล้วแสดงผล ch1+ch2 รับค่าเป็นจำนวนเต็มโดยใช้ %d




ifและ else


•If เป็นคำสั่งที่ใช้ในการตรวจจับผลเปรียบเทียบที่เป็นจริง แต่ สำหรับผลการเปรียบที่เป็นเท็จ เราจะใช้ else ในการตรวจสอบ หรือถ้าแบบเข้าใจได้คือ else จะทำตรงกันข้ามกับ if 
*คำสั่ง if else ไม่ต้องปิดท้ายด้วย ;
week6_grede
การเปรียบเทียบคะแนนว่าอยู่ในเกรดไหน ถ้าหากคะแนนมากกว่า100 จะได้เกรด F 
เพราะฉะนั้นให้เอา&& (score <=100) ออก เหลือเพียง if(score >=80)

จากโค้ดโปรแกรมข้างต้น จะสังเกตได้ว่ามีการใช้ if ซ้อน 2 ครั้ง ซึ่งโปรแกรมใช้บรรทัดมากขึ้นและดูซับซ้อนยิ่งขึ้นด้วย ในภาษา C มีวิธีการที่จะช่วยลดความยุ่งยากในการเปรียบเทียบพร้อมๆ กันลักษณะนี้ โดยใช้เครื่องหมายทาง ตรรกะ หรือ Logical Operator มาช่วย
  เครื่องหมายทางตรรกะมีอยู่ 2 แบบดังนี้
  &&   เครื่องหมาย “และ” (AND)
  ||  เครื่องหมาย “หรือ” (OR)
คำสั่ง Switch...case 

switch
 break หมายถึง

 ใช้ได้ดีกับการตรวจของค่าตัวแปรนั้น  case คือสิ่งที่ต้องการให้ทำ
คำสั่งที่สั่งให้ออกจาก case นั้นแล้วกลับไปทำงานต่อจากคำสั่งที่อยู่ ต่อจากคำสั่ง switch()
default หมายถึง
ส่วนที่จะให้ทำงานเมื่อไม่มีค่าของตัวแปรตรงกับเงื่อนไขใดในแต่ละ case ซึ่งส่วน
default นี้จะมีหรือไม่มีก็ได้ ถ้าไม่มี เมื่อเงื่อนไขที่เลือกไม่ตรงกับ case ใดก็จะออกจาก
คำสั่ง switch() นี้ เพื่อทำงานต่อไป
เขียนโค้ดเมนูอาหารและกำหนดราคาอาหาร โดยใช้คำสั่ง Switch...case 
 -กำหนดให้ชนิดของข้อมูลคือ char  ชื่อตัวแปรคือ menu

week7การทำซ้ำ
•การทำซ้ำมีอยู่ด้วยกัน 2 ลักษณะ คือ
–แบบมีจำนวนรอบแน่นอน เช่น กรณีที่ต้องแสดงชื่อตัวเอง 1000 ครั้งบนจอภาพ การทำซ้ำแบบนี้จะใช้ for


–แบบเงื่อนไขเป็นตัวตัดสินว่าจะทำซ้ำต่อไปหรือไม่  ใช้ในกรณีที่ต้องการให้โปรแกรมทำซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขที่กำหนดยังคงเป็นจริง เช่น ให้โปรแกรมคำนวณไปเรื่อยๆ ถ้าผลคำนวณยังคงเป็นบวก แต่ถ้าเป็น 0 หรือ ติดลบเมื่อไหร่ก็ให้จบโปรแกรมทันที อาจจะใช้การทำซ้ำทั้ง 2 คำสั่ง คือ do…while และ while
*คำสั่งforและ whileไม่ต้องปิดท้ายด้วย ; เป็นข้อยกเว้น
เรื่อง สูตรคูณแม่2 ตายตัว โดย ใช้for
ใช้ชนิดข้อมูล int แสดงค่าตัวเลขจำนวนเต็ม ใช้สัญลักษณ์ %d
ชื่อตัวแปร counter; จะแสดงตัวเลขที่คูณกับ2 ตั้งแต่1-12 
ใส่ \n หน้า %d เพื่อให้เป็นแนวตั้ง

สูตรคูณแม่2 ตายตัว โดยใช้ while ให้กรอกเอง
ใส่  printf("please insert your number:");
     scanf("%d",&number);
  หลัง int counter; เพิ่ม int counter , number;
 เปลี่ยน 2 เป็น %d เพิ่ม number หน้าหลัง counter    printf("%d x %d = %d\n",number,counter,number * counter);

F9 ถ้าต้องการสูตรคูณ แม่ไหน ให้กรอกตามต้องการ


สูตรคูณแม่2 ตายตัว โดยใช้ do while (ถ้าdo while ใส่; )
do while คือคำสั่งในการวนรอบ แตกต่างจาก for และ while
คำสั่ง do while จำทำประโยคคำสั่งก่อน1ครั้ง แล้วถึงจะตรวจสอบเงื่อนไข ถ้าตรวจแล้วแล้วเป็นจริง จะถามประโยคอีก1ครั้ง วนซ้ำไปเรื่อยๆจนกว่าจะ เป็นเท็จ ไม่ว่าจะเป็นจริงหรือเท็จคำสั่ง do while ก็จะถามประโยคคำสั่ง1ครั้ง
คำสั่งdo while ไม่มีการกำหนดค่า หรือเพิ่มลดค่าตัวแปร    ใช้ชนิดข้อมูล int ประกาศตัวแรมีชื่อว่า counter 

Array 1 มิติ 
ใช้ชนิดข้อมูล int ประกาศชื่อตัวแปรคือ a[5] ข้างในจะเป็นขนาดของอาร์เรย์ เปรียบเหมือนมีตัวแปร a 5 ตัว  ในตัวอย่างโค้ด เก็บค่าช่อง a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5; อาร์เรย์จะเริ่มนับตั้งแต่ช่อง0

Array 2 มิติ
ใช้ในการจัดเก็บข้อมูลบอกตำแหน่ง ในรูปแบบ แถวและคอลัมน์ เริ่มตั้งแต่เลข0
table [9][9] คือ แนวตั้ง9 แนวนอน9 จากตัวอย่างคือการทำสูตรคูณ แม่1-แม่12 โดยใช้คำสั่ง อาร์เรย์
    I=แนวนอน    j=แนวตั้ง    x=เก็บค่า -1  \t=Tab เพื่อให้ช่องไฟเท่ากัน ที่ตั้ง-1 เพราะ อาร์เรย์เริ่มนับจาก0 แต่เราต้องการให้นับจาก1


เขียนแอพด้วย App Inventor

1 ตั้งชื่อแล้ว save