41
พื นฐานภาษาซี ดร.ธีระยุทธ ทองเครือ ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น บทที3

พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

พนฐานภาษาซ

ดร.ธระยทธ ทองเครอ

ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร

มหาวทยาลยขอนแกน

บทท 3

Page 2: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

โครงสรางการเขยนโปรแกรมภาษาซ

#include <stdio.h>

int main() {

char fullname[50];printf("Hello %s", fullname);return 0;

}

ชอ Library ทตองการใช

(Preprocessor Directive)

จดเรมตนของโปรแกรม

(Start ใน Flowchart)

ชดคาสง (แตละขนตอนใน Algorithm)

จดสนสดของโปรแกรม

(End ใน Flowchart)

2

Page 3: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

โครงสรางการเขยนโปรแกรมภาษาซ

#include <stdio.h>

int main() {

printf("Hello world!\n");return 0;

}

#include <stdio.h>

void main() {

printf("Hello world!\n");

}

โครงสรางภาษาซสามารถเขยนในแบบใดแบบหนงกได

3

Page 4: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวแปร (Variables)

หนวยความจา

(RAM)

avg

30.62count

5

4

Page 5: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ชนดของตวแปร (Data Type)

ตวอกขระ

Characterเลขจานวนจรง

Floating-point

เลขจานวนจรง 2 เทา

Double

เลขจานวนเตม

Integer

5

Page 6: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ชนดของตวแปร (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

Page 7: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การประกาศตวแปร

ชนดตวแปร ชอตวแปร

การประกาศตวแปร (Variable Declaration) คอ การจองพนทบน RAM

เพอใชในการพกขอมล มรปแบบดงน

การเขยนโคดโปรแกรมดวยภาษาซจะตองประกาศตวแปรกอนเสมอ จงจะนาขอมลไปเกบได

ตางกบ RAPTOR ทสามารถใชตวแปรใหมไดเลย โดยไมตองประกาศ

ปดทายดวย semi-colon

7

Page 8: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยาง

#include <stdio.h>

void main() {

int count;char grade;

}

ประกาศตวแปรชนดจานวนเตม ชอ count

ประกาศตวแปรชนดอกขระ ชอ grade

8

Page 9: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยาง

#include <stdio.h>

void main() {

int count, num, i;

}

ประกาศตวแปร

ชนดจานวนเตม

3 ตวแปร

#include <stdio.h>

void main() {

int count;int num;int i;

}

9

Page 10: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวแปรชนด String

String คอ ตวแปรทเกบรายการของอกขระตงแต 1 ตวขนไป ซง

มกจะอยในรปแบบคาหรอขอความ

รปแบบการประกาศตวแปรทเปน String

n คอ ความจของอกขระทเกบได

char variableName[n];

10

Page 11: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยาง

#include <stdio.h>

void main() {

char studentName[15];char message[100];

}

ประกาศตวแปรชนด String ชอ studentName

ประกาศตวแปรชนด String ชอ message

11

Page 12: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ชอตวแปร

ขนตนดวยตวอกษร a-z, A-Z หรอ _ เทานน

ประกอบดวยตวอกษร a-z, A-Z, 0-9 หรอ _ เทานน หามม

สญลกษณใดๆ

เปน Case-sensitive เชน count ตางกบ Count

ไมตรงกบคาสงในภาษา C หรอ Reserved word

12

Page 13: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

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

Page 14: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ชอตวแปรทด

ชอตวแปร สาหรบเกบนามสกลพนกงาน

employeeLastName ด

empLastName ด - emp ชวยยอ employee ใหสนลง

emlstnam ถกกฎ แตคลมเครอ

lastNameOfTheEmployeeInQuestion ถกกฎ แตยาวเกนไป

employeelastname ถกกฎ แตอานยาก

14

Page 15: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

รปแบบชอตวแปร

Camel case คอ การตงชอตวแปรทมคา 2 คาขนไป (Compound

Words) โดยเรมตนแตละคาดวยตวพมพใหญ

เชน employeeLastName, productNumber

Snake case คอ การตงชอตวแปรทมคา 2 คาขนไป โดยคนแต

ละคาดวยเครองหมาย _ เชน employee_last_name,

product_number

15

Page 16: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรม

ชอตวแปรตอไปน ถก หรอ ผด

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

Page 17: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การกาหนดคาใหตวแปร

ใชเครองหมาย เทากบ (=) ในการกาหนดคาใดๆ ใหกบตวแปร

กาหนดตวเลขใหกบตวแปร

count = 12;

กาหนดอกขระใหกบตวแปร

grade = 'B'; ไมใช " กาหนด เชน grade = "B";

กาหนดใหผลการคานวณเกบลงตวแปร

avg = sum/30;

17

Page 18: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยาง

#include <stdio.h>

void main() {

int count;

char grade;

count = 12;

grade = 'F';

count = count + 2;

}

กาหนดคา 12 ใหกบตวแปร count

กาหนดอกขระ F ใหกบตวแปร grade

นาคาทเกบใน count มาบวก 2 แลวนาผลท

ไดไปเกบทบในตวแปร count

18

Page 19: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การเกด Overflow Value

หากคาทกาหนดใหตวแปรมความจ

ไมเพยงพอจะเกด "Overflow

Value"

เกดจากการกาหนดคาไมตรงกบ

ชนดของตวแปรทประกาศ

ควรพจารณาทงสองฝงของ

เครองหมาย = วาเปนชนดเดยวกน

หรอไม

char grade;

grade = 35.559;

19

Page 20: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรม

การกาหนดคาตอไปนถกตองหรอไม กาหนดให เมอประกาศตวแปรดงน

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

Page 21: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การกาหนดคาเรมตนใหตวแปร

#include <stdio.h>

void main() {

int count = 0;

char grade = 'A';

char fullname[10] = "John";

count = count + 2;

}

กาหนดคาเรมตนใหกบตวแปร count

กาหนดคาเรมตนใหกบตวแปร grade

การกาหนดคาเรมตนใหตวแปร (Variable Initialization) คอ การประกาศตว

แปรพรอมกบการกาหนดคาแรกไวในตวแปร

กาหนดคาเรมตนใหกบตวแปร fullname

21

Page 22: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

เครองมอในการพฒนาโปรแกรม

Editor

NotePad

NotePad++

Atom

Sublime

Compiler และ Debugger

GCC

Turbo C

22

Page 23: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

IDE

IDE ยอมาจาก Integrated Development Environment

IDE คอ เครองมอทชวยในการพฒนาโปรแกรมโดยรวบรวมเอา

เครองมอทจาเปนในการพฒนาโปรแกรม เชน Editor, Compiler,

Debugger

IDE สาหรบภาษาซในปจจบน

Code Blocks

Dev-C++

Turbo C++

Microsoft Visual C++

23

Page 24: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

CodeBlockCompile

แปลงโคดเปนภาษาเครองRun Compile & Run (F9)

เรม Debugรนทละคาสง

สวนแสดงรายการ

ไฟล Source Code

สวนแสดง

ขอผดพลาด

สวนสาหรบ

พมพชดคาสง

24

Page 25: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรมลบเครองหมาย Semicolon (;) ทบรรทดใดบรรทดหนงออก และ

Compile หลงจากนนใหอานขอความทปรากฏในสวน Build messages

ลบ Semicolon

แสดงขอผดพลาด

CodeBlocks ชบรรทด

ทผดพลาด

25

Page 26: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

คาสงแสดง Output ทางหนาจอ

ใชคาสง printf ซงมรปแบบดงน

สามารถใชอกขระหลก (Escape Character) ในขอความได

\n ขนบรรทดใหม

\t เวนชองวาง 1 tab

\" แสดงเครองหมาย "

\' แสดงเครองหมาย '

printf("ขอความ");

26

Page 27: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรม

จงเขยนโคดโปรแกรมภาษาซเพอแสดงขอความทมรปแบบดง

ตวอยางดานลางน โดยใชอกขระหลก \t และ \n ในการ

จดรปแบบการแสดงผล

===================================Code Employee Name Age===================================e053 John Smith 22e054 Chris Haggy 29===================================

27

Page 28: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การแทรกคาอธบาย (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

Page 29: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

คาสงแสดง Output ทางหนาจอ

แสดง Output พรอมกบคาในตวแปร

รายการตวแปรสาหรบแสดงคา จะตองมลาดบสอดคลองกบรหส

รปแบบทระบในรปแบบการแสดงผล

รหสรปแบบ

%d จานวนเตม (integer)

%f เลขทศนยม (floating-point)

%c อกขระ (character)

%s String หรอ ชดอกขระ

printf("รปแบบการแสดงผล", ชอตวแปรหรอคาทตองการแสดงผล);

29

Page 30: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยาง#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

Page 31: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรมจงเพมคาสงในการแสดงคาในตวแปรออกทางหนาจอ โดยใหมผลลพธดงภาพ

#include <stdio.h>void main(){

char name[20] = "Bobby";float weight = 63.75;__________________________________

}

เพมคาสงทน

ผลลพธ

31

Page 32: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การจดรปแบบทศนยม

กาหนดรปแบบทศนยมโดยการะบตวเลขหลง % เชน

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

Page 33: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การจากดชองวางสาหรบแสดงผล

ใสตวเลขหลงเครองหมาย % เพอจากดชองวางสาหรบการ

แสดงผล เชน

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

Page 34: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรม

จงเขยน 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

Page 35: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การรบขอมล (Input)

ใชคาสง scanf เพอรอรบ Input จากผใชทางคยบอรด

ใสสญลกษณ & (ampersand) หนาชอตวแปรเสมอ

การรบ input ตองมการประกาศตวแปรกอน เพอใชพกคาทผใชกรอก

กาหนดรปแบบของการรบคาใหตรงกบชนดของตวแปร โดยใชรหส

รปแบบเชนเดยวกบคาสง printf เชน จะรบตวเลข จะกาหนดเปน %d

คาทผใชกรอกจะถกนามาเกบบนตวแปรเมอผใชกดปม Enter

scanf("รปแบบการรบคา", ชอตวแปรสาหรบเกบคา);

35

Page 36: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยางการรบคาและแสดงผลลพธ

#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

Page 37: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยางการรบคา ประมวลผล และแสดงผลลพธ

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

Page 38: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

ตวอยางการรบคาตามรปแบบทกาหนด

รบคาตวเลข 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

Page 39: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การรบขอมลทเปนสตรง

การรบคา String อาจไมตองใส & หนาชอตวแปรกได เชน

scanf("%s", productName);

ใสตวเลขหลง % เพอจากดจานวนอกขระของ String ทจะรบ

scanf("%25s", productName);

กรณรบคา String ทผใชอาจกรอกชองวางมาดวยจะใช %s

ไมได ตองใชรปแบบดงน

scanf(" %[^\n]", productName);

ม Space หนา % ดวย [^\n] หมายถง อานทกตวยกเวน \n

39

Page 40: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

กจกรรม โปรแกรมรบชอ-สกล อาย ของตนเอง แลวแสดงทหนาจอ จงเตมคาในชองวางใหสมบรณ

#include <stdio.h>void main(){

char fname[20];int age;printf("Enter your name:");scanf("____", _______);printf("Enter your age:");scanf("____", _______);printf("____________________", ______, ______);

}

ผลลพธ

40

Page 41: พื้นฐานภาษาซี - ttime.in.th 3.pdf · พื้นฐานภาษาซี. ดร. ธีระยุทธทองเครือ. ภาควิชาวิทยาการ

การรบขอมลทเปนอกขระ

จะตองใสชองวางหนา %c เสมอ

scanf(" %c", &grade);

ม Space หนา % ดวย

41