คุณยังไม่ได้ Log in | สมัครสมาชิก ฟรี
กลับหน้าแรก วิชาการ.คอม
<script language="JavaScript" src="http://www.vcharkarn.com/javafeed/article/18065" type="text/javascript"></script>
การเขียนโปรแกรมภาษา C เบื้องต้น (Introduction to C Programming)
บทเรียนอย่างง่าย เพื่อเพิ่มความรู้และความเข้าใจ ที่จำเป็นต่อการเป็นโปรแกรมเมอร์มืออาชีพในอนาคต คนที่จะมีใจรัก ที่จะก้าวไปบนถนนแห่งการพัฒนาฝีมือและฝึกฝนการเขียนโปรแกรมด้วยตัวเอง
post ครั้งแรก: Thu 29 March 2007, 11:49 am ปรับปรุงล่าสุด: Wed 4 April 2007, 4:03 pm
สารบัญ

หน้าที่ 9 - โครงสร้างสตรักเจอร์
8. โครงสร้างสตรักเจอร์ (Structure)

สตรักเจอร์ เป็นวิธีการเก็บตัวแปรหลากชนิดให้อยู่เป็นกลุ่มก้อนเดียวกัน ทำให้สามารถแยกโปรแกรมออกเป็นหน่วย (Modular Programming) ซึ่งแก้ไขได้ง่ายเพราะสามารถแยกฟังก์ชันและตัวแปรออกเป็นหน่วยๆ ซึ่งก็เป็นประโยชน์ในการสร้างฐานข้อมูลด้วย

การตั้งต้นสร้างสตรักเจอร์ สามารถทำได้หลายรูปแบบดังตัวอย่างต่อไปนี้

1) การใช้ คำสั่ง struct สร้างตัวแปรชนิด student_a ผ่านตัวแปร student
struct student
{ 
char *first;
char *last;
char SSN[9];
float gpa;
char **classes;
};


struct student student_a;

2) การใช้ คำสั่ง struct สร้างตัวแปรชนิด student_a โดยตรง
struct
{ 
char *first;
char *last;
char SSN[10];
float gpa;
char **classes;
} student_a;


3) การใช้ คำสั่ง typedef struct เพื่อสร้างตัวแปรชนิด student_a ผ่านตัวแปร student
typedef struct
{ 
char *first;
char *last;
char SSN[9];
float gpa;
char **classes;
} student;

student student_a;


การกำหนดชนิดตัวแปร ทำได้โดยใช้คำสั่ง typedef ตามหลักการใช้งานดังนี้

typedef type name (typedef ชื่อของชนิดตัวแปร ชื่อที่ใช้เรียกชนิดตัวแปรจริง)

ตัวอย่าง:
typedef int INTEGER;
INTEGER x; /* x คือตัวแปรตระกูล INTEGER */

typedef char *STRING;
STRING sarray[10];
/* sarray คือตารางอาเรย์ ของ char* ซึ่งเทียบได้กับการประกาศว่า
char *sarray[10] */


ในโครงสร้างตัวแปรที่อยู่ในรูป structure นั้นประกอบด้วยตัวแปรที่เกี่ยวข้องในลักษณะเดียวกับตารางอาเรย์ แม้จะไม่ใช้ตัวแปรประเภทเดียวกัน โดยจะแบ่งตัวแปรออกเป็น field โดยที่กลุ่มตัวแปรใน structure จะถือว่าเป็นส่วนหนึ่งของหน่วยใหญ่หน่วยเดียวกันดังที่แสดงในภาพที่ 8.1 ส่วนการเปรียบเทียบความแตกต่างระหว่าง ตารางอาเรย์และตัวแปร struct ที่มีตัวแปรที่เป็นตารางอาเรย์ จะแสดงให้เห็นในภาพที่ 8.2

5542


การเรียกใช้งาน สตรักเจอร์

โดยปกติการสร้างสตรักเจอร์ ทำได้โดยใช้คำสั่ง typedef และ struct ซึ่งโครงสร้างภายในของสตรักเจอร์ จะประกอบด้วยตัวแปรต่างๆ ซึ่งแยกออกเป็น field ตัวแปรชนิดต่างๆ และในแต่ละ field จะมีการกำหนดพื้นที่หน่วยความจำ จนเพียงพอสำหรับแต่ละ field ดังตัวอย่างต่อไปนี้

typedef struct {
Type1 FieldName1;
Type2 FieldName2;
Type3 FieldName3;
/* as needed */
} VarName;


VarName คือชื่อชนิดตัวแปรสตรักเจอร์ทั้งหมด


นี่คือตัวอย่างการประกาศใช้ตัวแปร struct ชนิด student_t เพื่อบันทึกข้อมูลนักเรียน พร้อมตัวอย่างการกำหนดตัวแปร ชนิด student_t ซึ่งสามารถทำได้อย่างตัวแปรทั่วไป เช่นเดียวกับ int float

#define   MAX_LEN  12      /*  Length of name  */
typedef struct {
char name[MAX_LEN];
int id;
float gpa;
char major[10];
} student_t;

student_t s;
student_t stu1, stu2, stu3;


การเข้าถึง ตัวแปร field ภายในตัวแปร struct ทำได้โดยการใช้ จุด (.)แล้วตามด้วยชื่อ field ดังตัวอย่างกรณีการเข้าถึงตัวแปร ชนิด DATE ที่จะแสดงให้เห็นดังต่อไปนี้ และผลที่ได้จะแสดงให้เห็นในภาพที่ 8.3

หลักการเข้าถึงตัวแปร struct: VarName.FieldName
typedef struct
{
int month, day, year;
} DATE;

void main() {
DATE d1;

d1.month = 12;
d1.day = 2;
d1.year = 1970;
}


5543


เอาล่ะค่ะ ตอนนี้ ผู้อ่านก็คงจะพอเข้าใจการเขียนโปรแกรมภาษา C กันบ้างไม่มากก็น้อย แต่การรู้อย่างเดียวอาจจะไม่เพียงพอ ก็คงต้องหัดเขียน หัดทำประกอบกันไปด้วย เพื่อเพิ่มความเข้าใจ และเป็นการฝึกฝนการพัฒนาโปรแกรมคอมพิวเตอร์ในอีกทางหนึ่งด้วย สำหรับท่านใดที่ทดลองเขียน และพบปัญหา ก็สามารถ e-mail เข้ามาคุยกันได้นะค่ะ ที่ e-mail: cephsmile@gmail.com สำหรับบทความนี้ก็ขอจบแต่เพียงเท่านี้ค่ะ


<<< หน้าก่อนนี้ (หน้า 8) หน้าถัดไป (หน้า 10) >>>
*หมายเหตุ งานเขียนชิ้นนี้ ได้รับการคุ้มครองสิทธิตามพระราชบัญญัติคุ้มครองสิทธิทางปัญญา โดยลิขสิทธิเป็นของผู้เขียน ที่ให้เกียรตินำเผยแพร่ผ่าน วิชาการ.คอม เรามีความยินดีและอนุญาตให้ทำซ้ำหรือเผยแพร่ต่อเพื่อประโยชน์ทางการศึกษาเท่านั้น กรุณาให้เกียรติผู้เขียน โดยอ้างชื่อผู้เขียนและ วิชาการ.คอม (www.vcharkarn.com) ทุกครั้งที่ทำการเผยแพร่ต่อ ห้ามนำส่วนหนึ่งส่วนใดไปเผยแพร่ต่อในสื่อที่เอื้อประโยชน์ทางธุรกิจก่อนได้รับอนุญาต ขอขอบคุณที่ร่วมกันช่วยสร้างให้สังคมไทยเป็นสังคมแห่งปัญญา



จำนวน 36 ความเห็น, หน้า่ | 1| -2-
ความเห็นเพิ่มเติมที่ 19 19 ธ.ค. 2550 (20:29) คุณ pan.prempart ช่วยแจ้งลบความเห็นนี้แล้ว ขอบคุณค่ะ
ตอบ ค.ห. ที่ 18 อ่ะคับ
ที่คอมไพล์ไม่ผ่านก็คงจะมาจากการเขียนรูปแบบของโปรแกรมผิด
ซึ่งอันที่จริงมันก็คงจะเป็นแค่เส้นผมบังภูเขาอยู่เท่านั้นแล
ค่อยๆหาจุดผิดพลาดนะคับ แล้วความผิดพลาดในคร้งนี้จะทำให้คุณจำมันจนขึ้นใจ

เป็นกำลังใจให้คับ

monoil เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 150 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 20 22 ธ.ค. 2550 (12:17)
ความเห็นที่ 18 นั้น ที่เขียนไม่ผ่าน อยู่บรรทัดแรกเลยครับ

#include
ตามจริงจะต้องเป็น
#include<ชื่อไดเรกทอรี่>

ชื่อไดเรกทอรี่ ก็มีเยอะ แต่ที่สำคัญที่สุดก็ stdio.h
ส่วนอื่นๆก็ยังมีอีกเยอะ ลองใช้ help ใน Turbo C ดูครับ (แบบDosนะ)
แบบDos จะใช้ง่ายที่สุดแล้ว ที่ผมเขียนมา
Runa-Light เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 3 ครั้ง - ได้รับดาวแล้ว 153 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 21 24 ธ.ค. 2550 (23:19)
เขียนโปรพอได้บ้างครับแต่ติดที่ภาษาแบบ งง ม๊ากมากทำงัยดี
kuaeang เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 150 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 22 30 ธ.ค. 2550 (23:11)
ขอบคุณมากๆครับ เพิ้งหัดศึกษา
mokullas เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 150 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 23 10 ม.ค. 2551 (04:00)
คห ที่ 14
ใช้ software จาก หุ่นยนต์นั้นแหละ ง่ายที่สุด ครับ
เพราะผมก็ทำเหมือนกัน มันก็ละเอียดเช่นกันครับ
ปัญหาของหุ่นยนต์อยู่ที่ตัวแปรของอุปสรรคที่ไม่คงที่ครับเช่น

กำหนดให้ แสงน้อยเดินซ้าย ปรากฏว่า บริเวณนั้น มีหลอดไฟส่องอยู่ไม่ตรงตามที่กำหนดไว้
หุ่นยนต์ก็ผ่านไปครับ

เล็งแม่นๆ ตั้งค่าให้กว้างที่สุดเท่าที่จะทำได้
สำคัญอีกส่วนการออกแบบ ครับต้องให้เซ็นเซอร์ เสถียรไว้ก่อน ไม่โยกไปมา เพราะอ่านค่าแปลกไปครับ

ผมลองมาแล้ว ถ้าแสงบนสนามไม่เสถียรแล้วไม่แก้ไขหละก้อ


ดวงล้วนๆ ครับ
sarawut_t3 เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 5 ครั้ง - ได้รับดาวแล้ว 130 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 24 21 ก.พ. 2551 (10:38)
เติมตัวเลขเข้าไป ๒ จำนวน แล้วรายงานได้ว่าตัวเลขนั้นเท่ากันหรือไม่เท่ากัน
เขียนอย่างไรครับ
Supachai08 เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 80 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 25 16 มี.ค. 2551 (10:15)
81503

ต้องขอขอบคุณเป็นอย่างมากเลยครับ ผมเคยเรียนมานานมากแล้ว ไม่รู้ว่าในสมองจะเหลือความจำบ้างหรือเปล่า ขอบคุณอีกครั้ง


flyingpig เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 70 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 26 31 มี.ค. 2551 (15:56)
ก็น่าสนใจน๊ะครับ แต่ถ้ายังไงผมแนะนำให้ไปดูเพิ่มเติมที่

citecclub.org แล้วจะได้อะไรเพิ่มขึ้นอีกมายมายมากกว่าที่คุณคิดน๊ะครับ

แค่คุณคิดจาสมัครก็ไม่ธรรมดาแล้ว แต่เนื้อหาแน่นน่าชมอย่างงมาก

เชื่อว่าคุณๆ จะต้องไม่ผิดหวังครับ
Os เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 150 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 27 23 เม.ย. 2551 (15:21)

ขอบคุณมากครับ


tonisgod เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 28 15 พ.ค. 2551 (01:24) คุณ ช่วยแจ้งลบความเห็นนี้แล้ว ขอบคุณค่ะ

ขอบคุณมากค่ะ ได้ความรู้มากเลย


ตอนนี้มีเรียนเรื่องนี้อยู่แต่เพิ่งเปิดเทอมยังไม่ได้ซื้อหนังสือเลยค่ะ ><"


NicoRobin เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 49 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 29 17 พ.ค. 2551 (13:08)

ไม่เคยเข้าไปชมเว็บ ก็ดีครับ


 


yutsongsri เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 30 17 พ.ค. 2551 (13:26)

ช่วยแนนำตัวprogram run ภาษา ซี


 


yutsongsri เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 31 20 พ.ค. 2551 (12:19)

ตอบคำถาม นะครับ


คำถามที่ 16 ภาษา C เป็นภาษาโครงสร้างครับ  แต่ java ถ้าจะให้ถูกหลักต้องเขียนเป็น OOP ครับ


คำถาม 17  ตัวแปรเกิดจากผู้เขียน สร้างขึ้นมาเองนะครับ ดังนั้น การสร้างขึ้นมาผู้เขียนโปรแกรมต้องจำได้สิครับ  ที่คุณว่าหมายถึงคำสั่งป่ะครับ


คำถามที่ 18   คุณเขียนแค่นั้นไม่ได้หรอกครับ  คุณต้องใช้ <Stdio.h> ตามหลัง include ด้วยครับ เพราะคุณมีการเรียกใช้ คำสั่งในการแสดงผล printf


คำถามที่ 30 ตัวโปรแกรม TC3  ครับ หรือ Turbo C++ ก็ได้   TC3 นี่ไม่ต้อง install  Copy ลงไปแล้วเซ็ตาค่านิดหน่อยใช้ได้เลย   ส่วน Turbo C++ install ใช้เหมือนโปรแกรมทั่วไป


goah เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 32 4 มิ.ย. 2551 (10:19)
การรัน คอมไพเลอร์ ระบบ boardland และระบบ turbo c อันไหนดีก่ากันคับ
dangza เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 33 4 มิ.ย. 2551 (10:44)

ผมก็เพิ่งเคยเขียนภาษา C


ผมจะลองเขียนให้ดูง่ายๆนะคับผิดตรงไหนก็ต้องขอโทษด้วยจริงๆ


#include<stdio.h>


void main()


{


int num1,num2,num3;


char[20] no1;


printf("\t\t\t\============\n");


printf("\t\t\t\t\TEST\n");


printf("\t\t\t\============\n");


printf("NUMBER 1 : ");


scanf("%d",num1);


printf("PLEASE + - * / ");


scanf("%d",no1);


printf("NUMBER 2 : ");


scanf("%d",num2);


{


if no1="+"


printf("ANSWER IS : ",num1+num2);


elseif no1="-"


printf("ANSWER IS : ",num1-num2);


elseif no1="*"


printf("ANSWER IS : ",num1*num2);


else


printf("ANSWER IS : ",num1/num2);


}


ผมว่าน่าจะผิดเยอะช่วยหาที่ผิดหน่อยนะคับ


 


 


dangza เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 34 5 มิ.ย. 2551 (13:39)

 


ผมเด็กใหม่ แต่อยากเรียนภาษา c คับ ช่วยสอนผมหน่อยอยากเขียนโปรแกรมเป็นคับ "."


bn456789 เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 48 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 35 9 มิ.ย. 2551 (16:34)

กระผมขอขอบคุณเป็นอย่างมากๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆๆ


ถ้ากระผมเข้าใจกระผมจะไม่ลืมพระคุณเลยขอรับ


ma-chelsea เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 36 9 มิ.ย. 2551 (16:41)

กระผมพึ่งสมัคใครที่เขียนโปรแกรมเป็นกรุณาสอนหน่อยส่งไปที่ apinanchelsea@Gmail.comนะคราบ


ma-chelsea เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 50 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 37 17 มิ.ย. 2551 (16:55)

สวัสดีครับพี่ๆช่วยผมหน่อยนะครับ   ผมอยากเขียนภาษา c  


เป็นครับ audsadee@hotmail.com


 


bn456789 เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 2 ครั้ง - ได้รับดาวแล้ว 48 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 38 17 มิ.ย. 2551 (23:32)
<P>#include&lt;stdio.h&gt;</P>
<P>#include&lt;conio.h&gt;</P>
<P>main(){</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Hello\nMy name is DotA.\n");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Good Bye");</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getch();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>พอได้ป่าวคับ :)</P>
DotA (IP:202.149.25.225)


กรุณา login เพื่อ comment งานเขียนนี้

???? สมัครสมาชิก ฟรี ตลอดชีพ


vmaster
(vmaster)

ผู้ชมข้อมูลนี้แล้ว 41,008 ครั้ง
เป็นสมาชิก: นานกว่า 7 ปี
แบ่งปันความรู้ 38 ครั้ง
ได้รับดาว 240 ดวง

โหวตเพิ่มดาว


บทความอื่น

การเขียนโปรแกรมภาษา C เบื้องต้น (Introduction to C Programming) [202,778]
?????? 0 ?????? ?? ??????????????????

บทความแนะนำ

การเกิด สึนามิ [533,940]
GMO พันธุวิศวกรรมศาสตร์ นางฟ้า หรือ ซาตาน [392,047]

Blog แนะนำ

วิชาการ.คอม ขอแนะนำงานเขียนชิ้นนี้ นำชัย ชวนคิด ฝัน และสรรค์สร้างสังคมไทย ด้วยวิทยาศาสตร์ เทคโนโลยี และธรรม [377,389]
Global Warming { English } [142,216]

Hot Links

คลังข้อสอบ | ข่าววิชาการ
เล่นกล/เกม | อ่านนิยาย
ข่าวทุนการศึกษา | ลิงค์

ขอบคุณผู้สนับสนุน

Google
 
ติดต่อลงโฆษณา :   คุณอันนา 081 4965363
สำนักงาน :   02 2015735
อีเมล์ :   
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
คลิ๊กเพื่อดูสถิติ
รับรองและสนับสนุนโดย

สสวท.

มูลนิธิ พสวท.

พสวท.