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

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

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

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

การประกาศตัวแปร
ในภาษา หากต้องการใช้ตัวแปร จะต้องทำการประกาศตัวแปรไว้ที่ส่วนบนก่อนที่จะถึงบรรทัดที่เป็นประโยคคำสั่ง การประกาศตัวแปรจะเป็นการบอก 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