Fix afigures & Reorder chapter 2

This commit is contained in:
2025-12-04 14:38:49 +07:00
parent 18ba24b742
commit 08c98cb94f
5 changed files with 52 additions and 29 deletions
+12 -4
View File
@@ -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 ได้อีกด้วย
+4 -4
View File
@@ -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"
+1 -4
View File
@@ -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
View File
@@ -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)
+18
View File
@@ -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>
]