พื้นฐานภาษาซี - ttime.in.th 3.pdf ·...

Preview:

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

Recommended