Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
พนฐานภาษาซ
ดร.ธระยทธ ทองเครอ
ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร
มหาวทยาลยขอนแกน
บทท 3
โครงสรางการเขยนโปรแกรมภาษาซ
#include <stdio.h>
int main() {
char fullname[50];printf("Hello %s", fullname);return 0;
}
ชอ Library ทตองการใช
(Preprocessor Directive)
จดเรมตนของโปรแกรม
(Start ใน Flowchart)
ชดคาสง (แตละขนตอนใน Algorithm)
จดสนสดของโปรแกรม
(End ใน Flowchart)
2
โครงสรางการเขยนโปรแกรมภาษาซ
#include <stdio.h>
int main() {
printf("Hello world!\n");return 0;
}
#include <stdio.h>
void main() {
printf("Hello world!\n");
}
โครงสรางภาษาซสามารถเขยนในแบบใดแบบหนงกได
3
ตวแปร (Variables)
หนวยความจา
(RAM)
avg
30.62count
5
4
ชนดของตวแปร (Data Type)
ตวอกขระ
Characterเลขจานวนจรง
Floating-point
เลขจานวนจรง 2 เทา
Double
เลขจานวนเตม
Integer
5
ชนดของตวแปร (Data Type)
ชนดขอมล ชอเตม ความหมาย ขนาด
(Byte)
ชวงขอมล
char character ตวอกขระ 1 -128 ถง 127
int integer เลขจานวนเตม รวมเครองหมาย 2 -32,768 ถง 32,767
unsigned int unsigned integer เลขจานวนเตม ไมรวม
เครองหมาย + หรอ -
2 0 ถง 65,535
long int long integer เลขจานวนเตมแบบยาว รวม
เครองหมาย
4 -2,147,483,648 ถง
2,147,483,647
float floating-point เลขจานวนจรง 4 3.4 x 10-38 ถง 3.4 x 1038
double เลขจานวนจรง 2 เทา 8 3.4 x 10-308 ถง 3.4 x 10308
6
การประกาศตวแปร
ชนดตวแปร ชอตวแปร
การประกาศตวแปร (Variable Declaration) คอ การจองพนทบน RAM
เพอใชในการพกขอมล มรปแบบดงน
การเขยนโคดโปรแกรมดวยภาษาซจะตองประกาศตวแปรกอนเสมอ จงจะนาขอมลไปเกบได
ตางกบ RAPTOR ทสามารถใชตวแปรใหมไดเลย โดยไมตองประกาศ
ปดทายดวย semi-colon
7
ตวอยาง
#include <stdio.h>
void main() {
int count;char grade;
}
ประกาศตวแปรชนดจานวนเตม ชอ count
ประกาศตวแปรชนดอกขระ ชอ grade
8
ตวอยาง
#include <stdio.h>
void main() {
int count, num, i;
}
ประกาศตวแปร
ชนดจานวนเตม
3 ตวแปร
#include <stdio.h>
void main() {
int count;int num;int i;
}
9
ตวแปรชนด String
String คอ ตวแปรทเกบรายการของอกขระตงแต 1 ตวขนไป ซง
มกจะอยในรปแบบคาหรอขอความ
รปแบบการประกาศตวแปรทเปน String
n คอ ความจของอกขระทเกบได
char variableName[n];
10
ตวอยาง
#include <stdio.h>
void main() {
char studentName[15];char message[100];
}
ประกาศตวแปรชนด String ชอ studentName
ประกาศตวแปรชนด String ชอ message
11
ชอตวแปร
ขนตนดวยตวอกษร a-z, A-Z หรอ _ เทานน
ประกอบดวยตวอกษร a-z, A-Z, 0-9 หรอ _ เทานน หามม
สญลกษณใดๆ
เปน Case-sensitive เชน count ตางกบ Count
ไมตรงกบคาสงในภาษา C หรอ Reserved word
12
Reserved word
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while13
ชอตวแปรทด
ชอตวแปร สาหรบเกบนามสกลพนกงาน
employeeLastName ด
empLastName ด - emp ชวยยอ employee ใหสนลง
emlstnam ถกกฎ แตคลมเครอ
lastNameOfTheEmployeeInQuestion ถกกฎ แตยาวเกนไป
employeelastname ถกกฎ แตอานยาก
14
รปแบบชอตวแปร
Camel case คอ การตงชอตวแปรทมคา 2 คาขนไป (Compound
Words) โดยเรมตนแตละคาดวยตวพมพใหญ
เชน employeeLastName, productNumber
Snake case คอ การตงชอตวแปรทมคา 2 คาขนไป โดยคนแต
ละคาดวยเครองหมาย _ เชน employee_last_name,
product_number
15
กจกรรม
ชอตวแปรตอไปน ถก หรอ ผด
1) semester grade 8) *var
2) fall2005_grade 9) int-int
3) GradeInCS2013 10) var001
4) MY_GRADE 11) string.1
5) return 12) str91var
6) _number1 13) TaxRate
7) 911site
16
การกาหนดคาใหตวแปร
ใชเครองหมาย เทากบ (=) ในการกาหนดคาใดๆ ใหกบตวแปร
กาหนดตวเลขใหกบตวแปร
count = 12;
กาหนดอกขระใหกบตวแปร
grade = 'B'; ไมใช " กาหนด เชน grade = "B";
กาหนดใหผลการคานวณเกบลงตวแปร
avg = sum/30;
17
ตวอยาง
#include <stdio.h>
void main() {
int count;
char grade;
count = 12;
grade = 'F';
count = count + 2;
}
กาหนดคา 12 ใหกบตวแปร count
กาหนดอกขระ F ใหกบตวแปร grade
นาคาทเกบใน count มาบวก 2 แลวนาผลท
ไดไปเกบทบในตวแปร count
18
การเกด Overflow Value
หากคาทกาหนดใหตวแปรมความจ
ไมเพยงพอจะเกด "Overflow
Value"
เกดจากการกาหนดคาไมตรงกบ
ชนดของตวแปรทประกาศ
ควรพจารณาทงสองฝงของ
เครองหมาย = วาเปนชนดเดยวกน
หรอไม
char grade;
grade = 35.559;
19
กจกรรม
การกาหนดคาตอไปนถกตองหรอไม กาหนดให เมอประกาศตวแปรดงน
char grade;int quizScore, homeworkScore;
1) grade = quizScore;
2) homeworkScore = quizScore;
3) homeworkScore = "9";
4) quizScore = homeworkScore + 25;
5) 100 = homeworkScore;
6) grade = 4;
7) homeworkScore + 1 = quizScore;
20
การกาหนดคาเรมตนใหตวแปร
#include <stdio.h>
void main() {
int count = 0;
char grade = 'A';
char fullname[10] = "John";
count = count + 2;
}
กาหนดคาเรมตนใหกบตวแปร count
กาหนดคาเรมตนใหกบตวแปร grade
การกาหนดคาเรมตนใหตวแปร (Variable Initialization) คอ การประกาศตว
แปรพรอมกบการกาหนดคาแรกไวในตวแปร
กาหนดคาเรมตนใหกบตวแปร fullname
21
เครองมอในการพฒนาโปรแกรม
Editor
NotePad
NotePad++
Atom
Sublime
Compiler และ Debugger
GCC
Turbo C
22
IDE
IDE ยอมาจาก Integrated Development Environment
IDE คอ เครองมอทชวยในการพฒนาโปรแกรมโดยรวบรวมเอา
เครองมอทจาเปนในการพฒนาโปรแกรม เชน Editor, Compiler,
Debugger
IDE สาหรบภาษาซในปจจบน
Code Blocks
Dev-C++
Turbo C++
Microsoft Visual C++
23
CodeBlockCompile
แปลงโคดเปนภาษาเครองRun Compile & Run (F9)
เรม Debugรนทละคาสง
สวนแสดงรายการ
ไฟล Source Code
สวนแสดง
ขอผดพลาด
สวนสาหรบ
พมพชดคาสง
24
กจกรรมลบเครองหมาย Semicolon (;) ทบรรทดใดบรรทดหนงออก และ
Compile หลงจากนนใหอานขอความทปรากฏในสวน Build messages
ลบ Semicolon
แสดงขอผดพลาด
CodeBlocks ชบรรทด
ทผดพลาด
25
คาสงแสดง Output ทางหนาจอ
ใชคาสง printf ซงมรปแบบดงน
สามารถใชอกขระหลก (Escape Character) ในขอความได
\n ขนบรรทดใหม
\t เวนชองวาง 1 tab
\" แสดงเครองหมาย "
\' แสดงเครองหมาย '
printf("ขอความ");
26
กจกรรม
จงเขยนโคดโปรแกรมภาษาซเพอแสดงขอความทมรปแบบดง
ตวอยางดานลางน โดยใชอกขระหลก \t และ \n ในการ
จดรปแบบการแสดงผล
===================================Code Employee Name Age===================================e053 John Smith 22e054 Chris Haggy 29===================================
27
การแทรกคาอธบาย (Comment)
/* This is a plus calculation program.* By Mr.Kasang Nomoney */
#include <stdio.h>
void main() {int value1, value2, sum;printf("Enter two value: ");scanf("%d %d", &value1, &value2); // input two values sum = value1 + value2; // calculate sum of input values // display outputprintf("Sum = %d\n", sum);
}
คาอธบายแบบ
หลายบรรทด
คาอธบาย คอ สวนท Compiler จะขามการแปล
และไมมการแปลงเปนภาษาเครอง
คาอธบายแบบ
บรรทดเดยว
28
คาสงแสดง Output ทางหนาจอ
แสดง Output พรอมกบคาในตวแปร
รายการตวแปรสาหรบแสดงคา จะตองมลาดบสอดคลองกบรหส
รปแบบทระบในรปแบบการแสดงผล
รหสรปแบบ
%d จานวนเตม (integer)
%f เลขทศนยม (floating-point)
%c อกขระ (character)
%s String หรอ ชดอกขระ
printf("รปแบบการแสดงผล", ชอตวแปรหรอคาทตองการแสดงผล);
29
ตวอยาง#include <stdio.h>void main() {
char grade = 'B';float gpa;gpa = 3.2;printf("Your grade is %c and GPA is %f", grade, gpa);
}
ผลลพธ
Your grade is B and GPA is 3.200000
30
กจกรรมจงเพมคาสงในการแสดงคาในตวแปรออกทางหนาจอ โดยใหมผลลพธดงภาพ
#include <stdio.h>void main(){
char name[20] = "Bobby";float weight = 63.75;__________________________________
}
เพมคาสงทน
ผลลพธ
31
การจดรปแบบทศนยม
กาหนดรปแบบทศนยมโดยการะบตวเลขหลง % เชน
float dollar = 35.79856;printf("Today dollar rate: %9.4f\n", dollar);printf("Today dollar rate: %09.4f\n", dollar);printf("Today dollar rate: %.2f", dollar);
Today dollar rate: 35.7986Today dollar rate: 0035.7986Today dollar rate: 35.80
จองพนทแสดงผลไว 9 ตาแหนง
นบรวมจดดวย แสดงทศนยม 4 ตาแหนง
32
การจากดชองวางสาหรบแสดงผล
ใสตวเลขหลงเครองหมาย % เพอจากดชองวางสาหรบการ
แสดงผล เชน
char blood[3] = "AB";printf("My blood type is %5s", blood);
int baht = 653;printf("Remain %10d", baht);
My blood type is AB^^^
Remain 653^^^^^^^
33
กจกรรม
จงเขยน Output ของจากการใชคาสงจดรปแบบดงน
printf("%.1f, %.2f\n", 5.756, 5.756);
printf("Lab score is %3d and %03d\n", 2, 6);
printf("Annual income is %012.2f", 56788.369);
34
การรบขอมล (Input)
ใชคาสง scanf เพอรอรบ Input จากผใชทางคยบอรด
ใสสญลกษณ & (ampersand) หนาชอตวแปรเสมอ
การรบ input ตองมการประกาศตวแปรกอน เพอใชพกคาทผใชกรอก
กาหนดรปแบบของการรบคาใหตรงกบชนดของตวแปร โดยใชรหส
รปแบบเชนเดยวกบคาสง printf เชน จะรบตวเลข จะกาหนดเปน %d
คาทผใชกรอกจะถกนามาเกบบนตวแปรเมอผใชกดปม Enter
scanf("รปแบบการรบคา", ชอตวแปรสาหรบเกบคา);
35
ตวอยางการรบคาและแสดงผลลพธ
#include <stdio.h>
void main() {
int score;
printf("Enter score (0-100):");
scanf("%d", &score);
printf("Your score: %d", score);
}
GET score
Start
End
PUT "Your score: " + score
ผลลพธ
PUT "Enter score (0-100):"
36
ตวอยางการรบคา ประมวลผล และแสดงผลลพธ
GET value2
Start
End
PUT "Sum = " + sum
GET value1
sum= value1 + value2
ผลลพธ
#include <stdio.h>
void main() {
int value1, value2, sum;
// 1. Inputprintf("Enter value 1:");scanf("%d", &value1);printf("Enter value 2:");scanf("%d", &value2);
// 2. Processingsum = value1 + value2;
// 3. Outputprintf("Sum = %d\n", sum);
}37
ตวอยางการรบคาตามรปแบบทกาหนด
รบคาตวเลข 2 ตวพรอมกน
โดยคนดวยชองวาง
ผลลพธ
#include <stdio.h>
void main() {
int value1, value2, sum;
printf("Enter two value: ");scanf("%d %d", &value1, &value2);
sum = value1 + value2;
printf("Sum = %d\n", sum);}
38
การรบขอมลทเปนสตรง
การรบคา String อาจไมตองใส & หนาชอตวแปรกได เชน
scanf("%s", productName);
ใสตวเลขหลง % เพอจากดจานวนอกขระของ String ทจะรบ
scanf("%25s", productName);
กรณรบคา String ทผใชอาจกรอกชองวางมาดวยจะใช %s
ไมได ตองใชรปแบบดงน
scanf(" %[^\n]", productName);
ม Space หนา % ดวย [^\n] หมายถง อานทกตวยกเวน \n
39
กจกรรม โปรแกรมรบชอ-สกล อาย ของตนเอง แลวแสดงทหนาจอ จงเตมคาในชองวางใหสมบรณ
#include <stdio.h>void main(){
char fname[20];int age;printf("Enter your name:");scanf("____", _______);printf("Enter your age:");scanf("____", _______);printf("____________________", ______, ______);
}
ผลลพธ
40
การรบขอมลทเปนอกขระ
จะตองใสชองวางหนา %c เสมอ
scanf(" %c", &grade);
ม Space หนา % ดวย
41