Fix afigures & Reorder chapter 2
This commit is contained in:
+12
-4
@@ -1,15 +1,15 @@
|
||||
#import "../PageTemplate.typ": *
|
||||
|
||||
= ภาษาซี <cprogramming>
|
||||
= ภาษาซี (C Programming Language) <cprogramming>
|
||||
|
||||
#i ภาษาซีเป็นภาษาโปรแกรมสำหรับวัตถุประสงค์ทั่วไปสร้างขึ้นในช่วงทศวรรษ 1970 โดยเดนนิสริตชีและยังคงได้รับความนิยมและใช้งานอย่างกว้างขวางด้วยการออกแบบภาษาซีทำให้โปรแกรมเมอร์สามารถเข้าถึงคุณลักษณะต่างๆของสถาปัตยกรรมซีพียูทั่วไปได้โดยตรง ซึ่งปรับแต่งให้เหมาะกับชุดคำสั่ง เป้าหมาย ภาษาซี ถูกนำมาใช้และยังคงนำมาใช้ในการพัฒนาระบบปฏิบัติการไดรเวอร์อุปกรณ์และสแต็กโปรโตคอลแต่การใช้งานในซอฟต์แวร์แอปพลิเคชั่นกำลังลดลงภาษาซีถูกนำมาใช้ในคอมพิวเตอร์ตั้งแต่ซูเปอร์คอมพิวเตอร์ขนาดใหญ่ที่สุดไปจนถึงไมโครคอนโทรลเลอร์ขนาดเล็กที่สุดและระบบฝังตัว
|
||||
|
||||
#i
|
||||
ภาษาซีเป็นภาษาเชิงกระบวนการที่จำเป็นรองรับการเขียนโปรแกรมแบบมีโครงสร้างขอบเขตตัวแปรเชิงศัพท์และการเรียกซ้ำด้วยระบบชนิดข้อมูลแบบคงที่ภาษาซีถูกออกแบบมาเพื่อการคอมไพล์เพื่อให้สามารถเข้าถึงหน่วยความจำ และโครงสร้างภาษา ในระดับต่ำซึ่งแมปกับคำสั่งเครื่องได้อย่างมีประสิทธิภาพ โดยทั้งหมดนี้รองรับรันไทม์ขั้นต่ำ แม้จะมีความสามารถในระดับต่ำ แต่ภาษาซีก็ถูกออกแบบมาเพื่อสนับสนุนการเขียนโปรแกรมข้ามแพลตฟอร์ม โปรแกรมซี ที่สอดคล้องกับมาตรฐานที่เขียนขึ้นโดยคำนึงถึงความสามารถในการพกพาสามารถคอมไพล์สำหรับแพลตฟอร์มคอมพิวเตอร์และระบบปฏิบัติการที่หลากหลาย โดยมีการเปลี่ยนแปลงซอร์สโคดเพียงเล็กน้อย
|
||||
|
||||
แม้ว่าทั้งภาษาซีและไลบรารีมาตรฐานของภาษา ซีจะไม่ได้มีคุณสมบัติยอดนิยมบางอย่างที่พบในภาษาอื่น แต่ก็มีความยืดหยุ่นเพียงพอที่จะรองรับคุณสมบัติเหล่านั้นได้ ตัวอย่างเช่นการวางแนววัตถุและการเก็บขยะนั้นจัดทำโดยไลบรารีภายนอก GLib Object SystemและBoehm garbage collector ตามลำดับ
|
||||
#i แม้ว่าทั้งภาษาซีและไลบรารีมาตรฐานของภาษา ซีจะไม่ได้มีคุณสมบัติยอดนิยมบางอย่างที่พบในภาษาอื่น แต่ก็มีความยืดหยุ่นเพียงพอที่จะรองรับคุณสมบัติเหล่านั้นได้ ตัวอย่างเช่นการวางแนววัตถุและการเก็บขยะนั้นจัดทำโดยไลบรารีภายนอก GLib Object System และ Boehm garbage collector ตามลำดับ
|
||||
|
||||
ตั้งแต่ปี 2000 เป็นต้นมาภาษาซี ได้รับการจัดอันดับอย่างต่อเนื่องให้อยู่ในอันดับสี่ภาษาสูงสุดในดัชนี TIOBEซึ่งเป็นการวัดความนิยมของภาษาการเขียนโปรแกรม
|
||||
#i ตั้งแต่ปี 2000 เป็นต้นมาภาษาซี ได้รับการจัดอันดับอย่างต่อเนื่องให้อยู่ในอันดับสี่ภาษาสูงสุดในดัชนี TIOBEซึ่งเป็นการวัดความนิยมของภาษาการเขียนโปรแกรม
|
||||
|
||||
== ตัวอย่าง "Hello, world"
|
||||
|
||||
@@ -47,11 +47,19 @@ int main(void)
|
||||
|
||||
#i วงเล็บปีกกาปิดหมายถึงจุดสิ้นสุดของฟังก์ชัน `main` โดยก่อน C99 จำเป็นต้องมีคำสั่ง `return 0;` ที่ชัดเจนเมื่อสิ้นสุดฟังก์ชัน `main` แต่ตั้งแต่ C99 ฟังก์ชัน `main` (ซึ่งเป็นการเรียกใช้ฟังก์ชันเริ่มต้น) จะคืนค่าโดยปริยาย 0 เมื่อถึงวงเล็บปีกกาปิดสุดท้าย
|
||||
|
||||
== คอนเซปต์พื้นฐาน
|
||||
|
||||
#i โปรแกรมภาษา C เป็นลำดับไฟล์ข้อความ (โดยทั่วไปคือไฟล์ header และไฟล์ source) ที่มีการประกาศต่าง ๆ และไฟล์เหล่านั้นถูกแปลงเป็นโปรแกรมที่ถูกเรียกใช้งานได้ ซึ่งโปรแกรมจะถูกใช้งานเมื่อระบบปฏิบัติการเรียกใช้ฟังก์ชันหลักของโปรแกรม (ยกเว้นหากว่าตัวมันเองคือระบบปฏิบัติการหรือโปรแกรมอิสระ)
|
||||
|
||||
#i บางคำศัพท์ในโปรแกรมภาษา C นั้นมีความหมายพิเศษ โดยคำเหล่านั้นคือ#strong[คีย์เวิร์ด] และคำอื่น ๆ สามารถใช้เป็นชื่อ (identifiers) ได้ ซึ่งอาจถูกใช้เป็นชื่อของวัตถุ, ฟังก์ชัน, โครงสร้าง (struct), ยูเนียน, หรือแท็ก enumerations, สมาชิกของมัน, ชื่อ typedef, ฉลาก, หรือมาโคร
|
||||
|
||||
#i ชื่อของสิ่งต่าง ๆ (ยกเว้นมาโคร) นั้นสามารถใช้ได้แค่ในเพียงในสโคป (scope) ของมัน หมายความว่า หากประกาศตัวแปลไว้ภายในฟังก์ชัน ตัวแปรนั้นจะไม่สามารถใช้นอกสโคปนั้นได้ ซึ่งในกรณีนี้สโคปคือฟังก์ชัน และชื่อบางชื่ออาจมีการลิงก์กันเพื่อให้สโคปอื่น ๆ สามารถลิงก์มาหาชื่อนั้น ๆ ได้
|
||||
|
||||
== ชุดแปลโปรแกรมของกนู (GNU Compiler Collection; GCC)
|
||||
|
||||
#i ในกระบวนการการพัฒนาโครงงานนี้ ชุดแปลโปรแกรมของกนูนั้นถูกใช้เป็นหลักเนื่องจากเป็นชุดแปลโปรแกรม (คอมไพเลอร์; Compiler) ที่ใช้เป็นหลักในการพัฒนาโคดที่สร้างบนพื้นฐาน Arduino และบอร์ดต่าง ๆ รวมถึงบอร์ด ESP32
|
||||
|
||||
#i ชุดคอมไพเลอร์ GNU (GNU Compiler Collection; GCC) (เดิมชื่อ GNU C Compiler) คือชุดคอมไพเลอร์จากโครงการ GNU ที่รองรับภาษาโปรแกรม สถาปัตยกรรมฮาร์ดแวร์ และระบบปฏิบัติการต่าง ๆ มูลนิธิซอฟต์แวร์เสรี (FSF) เผยแพร่ GCC ในฐานะซอฟต์แวร์เสรีภายใต้สัญญาอนุญาตสาธารณะทั่วไปของ GNU (GNU GPL) GCC เป็นองค์ประกอบสำคัญของชุดเครื่องมือ GNU ซึ่งใช้สำหรับโครงการส่วนใหญ่ที่เกี่ยวข้องกับ GNU และเคอร์เนล Linux ด้วยโคดประมาณ 15 ล้านบรรทัดในปี 2019 GCC จึงเป็นหนึ่งในโปรแกรมฟรีที่ใหญ่ที่สุดเท่าที่เคยมีมา GCC มีบทบาทสำคัญในการเติบโตของซอฟต์แวร์เสรี ทั้งในฐานะเครื่องมือและตัวอย่าง
|
||||
#i ชุดคอมไพเลอร์ GNU (GNU Compiler Collection; GCC) (เดิมชื่อ GNU C Compiler) คือชุดคอมไพเลอร์จากโครงการ GNU ที่รองรับภาษาโปรแกรม สถาปัตยกรรมฮาร์ดแวร์ และระบบปฏิบัติการต่าง ๆ มูลนิธิซอฟต์แวร์เสรี (FSF) เผยแพร่ GCC ในฐานะซอฟต์แวร์เสรีภายใต้สัญญาอนุญาตสถูกเรียกาธารณะทั่วไปของ GNU (GNU GPL) GCC เป็นองค์ประกอบสำคัญของชุดเครื่องมือ GNU ซึ่งใช้สำหรับโครงการส่วนใหญ่ที่เกี่ยวข้องกับ GNU และเคอร์เนล Linux ด้วยโคดประมาณ 15 ล้านบรรทัดในปี 2019 GCC จึงเป็นหนึ่งในโปรแกรมฟรีที่ใหญ่ที่สุดเท่าที่เคยมีมา GCC มีบทบาทสำคัญในการเติบโตของซอฟต์แวร์เสรี ทั้งในฐานะเครื่องมือและตัวอย่าง
|
||||
|
||||
#i นอกจากจะเป็นคอมไพเลอร์อย่างเป็นทางการของระบบปฏิบัติการ GNU แล้ว GCC ยังได้รับการยอมรับให้เป็นคอมไพเลอร์มาตรฐานโดยระบบปฏิบัติการคอมพิวเตอร์สมัยใหม่ที่คล้ายกับ Unix อื่นๆ อีกมากมาย รวมถึงระบบปฏิบัติการ Linux ส่วนใหญ่ ระบบปฏิบัติการตระกูล BSD ส่วนใหญ่ก็เปลี่ยนมาใช้ GCC ไม่นานหลังจากเปิดตัว แม้ว่าหลังจากนั้น FreeBSD และ Apple macOS ได้เปลี่ยนมาใช้คอมไพเลอร์ Clang ส่วนใหญ่เป็นเพราะเหตุผลด้านลิขสิทธิ์ GCC ยังสามารถคอมไพเลอร์โคดสำหรับระบบปฏิบัติการ Windows, Android, iOS, Solaris, HP-UX, AIX และ MS-DOS ได้อีกด้วย
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#import "../PageTemplate.typ": page-theme
|
||||
#import "../PageTemplate.typ": chapter-page
|
||||
#import "@preview/i-figured:0.2.4"
|
||||
#show: page-theme
|
||||
#show: chapter-page
|
||||
|
||||
#show heading: i-figured.reset-counters.with(level: 3)
|
||||
#show figure: i-figured.show-figure.with(level: 3)
|
||||
@@ -11,10 +11,10 @@
|
||||
|
||||
#set heading(numbering: "1.1", offset: 1)
|
||||
#include "Microcontroller.typ"
|
||||
#include "PIR.typ"
|
||||
#include "HTTPS.typ"
|
||||
#include "TLS.typ"
|
||||
#include "NFC.typ"
|
||||
#include "PIR.typ"
|
||||
#include "CLanguage.typ"
|
||||
#include "Flutter.typ"
|
||||
#include "Git.typ"
|
||||
#include "CLanguage.typ"
|
||||
|
||||
@@ -178,8 +178,7 @@ Google สามารถใช้พัฒนาแอปพลิเคชั
|
||||
|
||||
เมื่อกดรันแอพลิเคชันด้วยไอคอน #box(image("Flutter/vscode_play.svg", alt: "Play"), baseline: 15%) (หรือ Shift+F10 ใน Android Studio) จะได้แอพลิเคชันดังรูปด้านล่างออกมา
|
||||
|
||||
#box(
|
||||
afigure(
|
||||
#afigure(
|
||||
grid(
|
||||
columns: 2,
|
||||
align: horizon,
|
||||
@@ -196,8 +195,6 @@ Google สามารถใช้พัฒนาแอปพลิเคชั
|
||||
),
|
||||
attr: "ส่วนหนึ่งของโครงงาน, ศตคุณ อุตมะ, ภายใต้ CC BY-SA 4.0",
|
||||
caption: [แอพลิเคชันตัวอย่างบน Android 15 และ Arch Linux],
|
||||
),
|
||||
height: 3in,
|
||||
)
|
||||
|
||||
#show raw.where(block: true): set block(below: 2em)
|
||||
|
||||
+3
-3
@@ -1,15 +1,15 @@
|
||||
#import "../PageTemplate.typ": i
|
||||
#set enum(indent: 3em, numbering: n => "2." + str(n))
|
||||
|
||||
#i ผู้จัดทำโครงงาน “เครื่องยืนยันตัวตนด้วย NFC” ได้ศึกษาทฤษฎีที่เกี่ยวข้องต่าง ๆ และ รวบรวมแนวทางและหลักการต่าง ๆ จากเอกสารงานวิจัยที่เกี่ยวข้องดังต่อไปนี้
|
||||
#i ผู้จัดทำโครงงาน#h(1em)เครื่องยืนยันตัวตนด้วย NFC#h(1em)ได้ศึกษาทฤษฎีที่เกี่ยวข้องต่าง ๆ และ รวบรวมแนวทางและหลักการต่าง ๆ จากเอกสารงานวิจัยที่เกี่ยวข้องดังต่อไปนี้
|
||||
|
||||
+ ไมโครคอนโทรเลอร์ (Microcontroller)
|
||||
+ เซ็นเซอร์อินฟราเรดแบบพาสซีฟ (PIR)
|
||||
+ ลำโพงสัญญาณ (Buzzer)
|
||||
+ เกณฑ์วิธีขนส่งข้อความหลายมิติ (HyperText Transfer Protocol; HTTP)
|
||||
+ เกณฑ์วิธีขนส่งข้อความหลายมิติแบบมั่นคง (Hypertext Transfer Protocol Secure; HTTPS)
|
||||
+ เกณฑ์วิธีความมั่นคงของชั้นขนส่ง (Transport Layer Security; TLS)
|
||||
+ การสื่อสารสนามใกล้ (Near-field communication; NFC)
|
||||
+ เซ็นเซอร์อินฟราเรดแบบพาสซีฟ (เซนเซอร์ PIR)
|
||||
+ ภาษาซี
|
||||
+ Flutter
|
||||
+ Git
|
||||
+ ภาษาซี (C Programming Language)
|
||||
|
||||
@@ -7,6 +7,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
#let chapter-page(doc) = {
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
top: 2in,
|
||||
left: 1.5in,
|
||||
right: 1in,
|
||||
bottom: 1in,
|
||||
),
|
||||
header: context [
|
||||
#h(1fr)
|
||||
#counter(page).display(thai-numbering)
|
||||
],
|
||||
)
|
||||
doc
|
||||
}
|
||||
|
||||
#let page-theme(doc) = {
|
||||
set page(
|
||||
paper: "a4",
|
||||
@@ -54,6 +71,7 @@
|
||||
#box(
|
||||
hide(attr),
|
||||
width: 0pt,
|
||||
height: 0pt,
|
||||
) <afig>
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user