Basic C-Programming - Short.pdf

104
Computer programming By: tulawat chunwijitra

Transcript of Basic C-Programming - Short.pdf

Page 1: Basic C-Programming - Short.pdf

Computer programming

By: tulawat chunwijitra

Page 2: Basic C-Programming - Short.pdf

OUTLINE

Basic C-Programming

Data Structure

stack, queue, linked list, tree, hash table

Recursion concept

Object Oriented Programming concept

Relational Database concept

Page 3: Basic C-Programming - Short.pdf

Basic C-Programming

by: tulawat chunwijitra

Page 4: Basic C-Programming - Short.pdf

outline

Introduction

Before we start coding .....

Software Development process

Flowchart and pseudocoding

Workshop 1: Grading program

First C-Programming

Page 5: Basic C-Programming - Short.pdf

Introduction

Time Table for today

Goal is “YOU CAN PROGRAM IN C”

What is your background in C-Programming?

Theme of learning ------> Get your hand dirty !!!!

Page 6: Basic C-Programming - Short.pdf

before we start coding

คอมพิวเตอรทำงานในระบบฐานสอง ซึ่งมนุษยเขาใจยาก

ออกแบบตัวอักษรภาษาอังกฤษแทนคำสั่งเลขฐานสอง เรียกวา Mnemonic

ภาษาคอมพิวเตอรที่ใช Mnemonic คือ ภาษา Assembly ซึ่งถูกจัดใหเปนภาษาระดับต่ำ

ตอมา Assembly ไดรับการพัฒนาใหใกลเคียงภาษามนุษย เรียกวาภาษาระดับสูง เชน C, Modulas-2, Pascal, Java, Fortran, Basic, etc.

ในการเขียนโปรแกรม ไมวาจะเขียนดวยภาษาระดับสูง หรือระดับต่ำ เราจะตองแปลใหเปนรหัสภาษาเครื่องที่คอมพิวเตอรเขาใจเสียกอน ตัวแปลภาษานี้ ถูกเรียกวา Compiler หรือ Interpreter

Page 7: Basic C-Programming - Short.pdf

compiler vs interpreter

Interpreter

แปลความหมายของคำสั่งทีละคำสั่ง (แปลไปทำไป) ถาไมพบขอผิดพลาด เครื่องจะทำคำสั่งที่แปลได แตถามีขอผิดพลาด เครื่องจะหยุดทำงานและแจงขอผิดพลาดออกมา

เชน ภาษาเบสิก

Compiler

แปลความหมายของ Source code ทั้งหมดกอน แลวจึง Run

โปรแกรมทำงานไดรวดเร็วกวา Interpreter เพราะไมตองไปเสียเวลานั่งแปลอีกตอน Run

Page 8: Basic C-Programming - Short.pdf

c-compiler

compiler

linker

Easy.C

Easy.EXE

Easy.OBJ

C Library

Page 9: Basic C-Programming - Short.pdf

software development process

1. กำหนดและวิเคราะหปญหา (Define Problem and Problem Analysis)

2. เขียนผังงาน และ ซูโดโคด (Pseudocoding)

3. เขียนโปรแกรม (Coding)

4. ทดสอบและแกไขโปรแกรม (Program Testing and Debugging)

5. ทำเอกสาร และบำรุงรักษาโปรแกรม (Program Documentation and Maintenance)

Page 10: Basic C-Programming - Short.pdf

pseudocode

เขียนโปรแกรมโดยใชภาษามนุษยทั่วไป

ใชถอยคำผสมระหวางภาษาอังกฤษ และภาษาโปรแกรม

คำเฉพาะ (Reserve Word) ที่อยูในภาษาโปรแกรม จะใชอักษรตัวใหญ

สั้น เขาใจงาย ไดใจความ

Page 11: Basic C-Programming - Short.pdf

example: calculate average

Algorithm Average_Sum

1. count = 0

2. sum = 0

3. INPUT (value)

4. IF value > 0 THEN

count = count + 1

sum = sum + value

GOTO 3

ELSE GOTO 5

5. average = sum / count

6. OUTPUT (average)

7. END

Page 12: Basic C-Programming - Short.pdf

flowchart

Flowchart คือ แผนภาพที่ใชออกแบบอธิบายการทำงานของโปรแกรม รวมทั้งทิศทางการไหลของขอมูล Flowchart มีสองแบบคือ System Flowchart และ Program Flowchart

การเขียนผังงานที่ดี

เขียนตามสัญลักษณที่กำหนด

ใชลูกศรแสดงทิศทางการทำงานจากบนลงลาง

อธิบายสั้น เขาใจงาย

ทุกแผนภาพตองมีทิศทางเขาออก

ไมควรโยงลูกศรไปที่ไกลมาก ๆ ถาตองทำ ใหใชสัญลักษณเชื่อมตอแทน

Page 13: Basic C-Programming - Short.pdf

สัญลักษณ์ใน flowchart

การเริ่มตนและการสิ้นสุดการทำงานของโปรแกรม

ลูกศรแสดงทิศทางการทำงานของโปรแกรมและการไหลของขอมูล

การประมวลผลการคำนวณตาง ๆ

การทำงานยอย

การรับหรือแสดงขอมูล โดยไมระบุชนิดของอุปกรณ

การตรวจสอบเงื่อนไข เพื่อเลือกทำอยางไดอยางหนึ่ง

แสดงผลลัพธหรือรายงานทางเครื่องพิมพ

จุดเชื่อมตอผังงาน

Page 14: Basic C-Programming - Short.pdf

example

เริ่มต้น

อ่านค่า A และ B

คํานวณ X=A+B

ทําทําต่อหรือไม่

แสดงผลรวม X

จบ

ไม่ทํา

Page 15: Basic C-Programming - Short.pdf

รูปแบบการจัด Flowchart

รูปแบบการจัด Flowchart ที่นิยมมี 5 รูปแบบ คือ

โครงสรางการทำงานแบบลำดับ (Sequence)

โครงสรางการทำงานแบบมีการเลือก (Selection)

ผังโปรแกรมทำซ้ำแบบเงื่อนไขเปนจริง

ผังโปรแกรมทำซ้ำแบบจนเงื่อนไขเปนจริง

ผังโปรแกรมแบบทำซ้ำตามจำนวนที่ระบุ

Page 16: Basic C-Programming - Short.pdf

โครงสร้างการทํางานแบบลําดับ (Sequence)

เริ่มตน

รับคาตัวแปร

ทำชุดคำสั่งที่ 1

จบ

แสดงผล

ทำชุดคำสั่งที่ 2

Page 17: Basic C-Programming - Short.pdf

โครงสร้างการทํางานแบบมีการเลือก (Selection)

การเลือกแบบหนึ่งเสนทาง

การเลือกแบบสองเสนทาง

Noชุดคำสั่ง

ตรวจสอบเงื่อนไข

จริงตรวจสอบเงื่อนไข

เท็จ

ชุดคำสั่งที่2ชุดคำสั่งที่1

Page 18: Basic C-Programming - Short.pdf

ผังโปรแกรมทําซ้ําแบบเงื่อนไขเป็นจริง

จะใชในงานที่มีการตรวจสอบเงื่อนไข ถาเปนจริงจะทำงานซ้ำ โดยจะตรวจสอบเงื่อนไขกอนทำงานทุกครั้ง

ตรวจสอบเงื่อนไขเท็จ

จริง

ออกจากทำซ้ำ

ชุดคำสั่งที่ตองทำงานซ้ำ

Page 19: Basic C-Programming - Short.pdf

ผังโปรแกรมทําซ้ําแบบจนเงื่อนไขเป็นจริง

จะใชในระบบที่ตองทำงานกอนตรวจสอบเงื่อนไข และทำงานซ้ำจนเงื่อนไขเปนจริง

ตรวจสอบเงื่อนไข

เท็จ

จริงออกจากทำซ้ำ

ชุดคำสั่งที่ตองทำงานซ้ำ

Page 20: Basic C-Programming - Short.pdf

ผังโปรแกรมแบบทําซ้ําตามจํานวนที่ระบุ

ใชในระบบที่ตองทำงานตามจำนวนรอบที่กำหนด โดยเริ่มจากรอบเริ่มตนไปยังรอบสุดทาย ตามปกติแลว คาการนับรอบจะเพ่ิมขึ้นครั้งละหนึ่งคา

FOR i=1 TO N

ชุดคำสั่งที่ตองการแกไข

Page 21: Basic C-Programming - Short.pdf

Workshop 1Grading Program

Page 22: Basic C-Programming - Short.pdf

Requirement

ผูใชปอนคะแนนดิบ โปรแกรมจะทำการตัดเกรดให วาอยูในชวงใด

80 - 100 ไดเกรด A

70 - 79 ไดเกรด B

60 - 69 ไดเกรด C

50 - 59 ไดเกรด D

ต่ำกวา 50 ไดเกรด F

Page 23: Basic C-Programming - Short.pdf

development process

Define problem : โปรแกรมสามารถตัดเกรดไดทีละคน (narrow down the problem)

Your task: Draw the Flowchart and write pseudocode

Page 24: Basic C-Programming - Short.pdf

!! BREAK !!

Page 25: Basic C-Programming - Short.pdf

Getting to know Cthe first C program

Page 26: Basic C-Programming - Short.pdf

โครงสร้างของ C-program

Preprocessor directives

Global Declarations

The main() function

User-defined function

Program comments

/*Programmed BY CHUNNY*/

# include "stdio.h"main(){   printf("Hello World !!\n");}

Page 27: Basic C-Programming - Short.pdf

Preprocessor directive

Denoted by the directive sign (#) followed by the name of a program or a variable

Sometimes called “Header Part”

For example

“# include” tells the compiler to read in other files when compile

2 ways of writing “include”

“# define” defines a variable

# include “stdio.h”# include “Pro1.c”

หมายความว่า อ่านไฟล์ stdio.h เข้ามาด้วยหมายความว่า อ่านไฟล์ Pro1.c เข้ามาด้วย

# include “.......”# include <.......>

Read from current directoryRead from other predefined location

# define END 20# define A 5*6+3

Define END to be 20Define A to be 5*6+3

Page 28: Basic C-Programming - Short.pdf

global declaration

Declare any variables or functions that will be used globally in the program

May be omitted

Will see this later on

Page 29: Basic C-Programming - Short.pdf

main() function

Every program must have one main() function

The program starts working from here

Contains commands, functions, instruction for the program to works

Here is how it looks like

main(){

instruction 1;instruction 2;.........

}

Page 30: Basic C-Programming - Short.pdf

user-defined functions

Functions that you write by yourself and will be used in the program

# include “stdio.h”main(){

.....function(); /*call the function*/.....

}

function(){

.... /*instruction for this function*/

....return ; /*Return the result of this function*/

}

Page 31: Basic C-Programming - Short.pdf

Program comments

Explain the program: Make it easy to understand the program; easier to develop

Will not be read by the compiler

Good comment = Good programming !!!!

Here is how you write it

Use indentation system and Be consistent !!

/*..........your comments go here..........*/

Page 32: Basic C-Programming - Short.pdf

A first C-program

Here is your first program;

“# include” is called directive “stdio.h” is called header file

Escaping sequence “\n” means new line

Header : อ่านไฟล์ stdio.h เข้ามาด้วยmain function

printf(“This is”);prinff(“a book”);

printf(“This is \n”);prinff(“a book”);

output

output

This is a book

This isa book

/*Programmed BY CHUNNY*/

# include "stdio.h"main(){   printf("Hello World !!\n");}

Comment : อธิบายโปรแกรม

Page 33: Basic C-Programming - Short.pdf

Variable

Think of a “variable” as a “Box” that contains data

Variable name cannot be longer than 63 characters.

Variable must match with your data Data Type (will be mentioned later on)

int stores integer ranges from -32,768 to 32,767

use “=” to assign a data to a variable

# include “stdio.h”int feet, inches;main(){

feet = 6;inches = feet * 12;printf(“Height in inches is %d”, inches);

}

Store integer

Control String

Page 34: Basic C-Programming - Short.pdf

How variables store data

Variable as a Box: You can put something in or take something out

Examples

More examples

#include “stdio.h”int x;main(){

x = 6;x = 8;printf(“X is %d”,x);

}

num1 = 5;num2 = 14;num1 = num2;printf(“%d”, num1);printf(“%d”, num2);

What is the output?What is the output?

count = count + 1;sum = sum + x;num = 3*num;

Page 35: Basic C-Programming - Short.pdf

Type of variable

คอมพจะใชหนวยความจำในการเก็บ โดย 8 bit = 1 byte เก็บไดในชวง 0-255

Type Range

char -128 ถึง 127

int −32768 ถึง 32767

long int -2,147,483,648 ถึง 2,147,483,647

float 3.4E +/- 38 (7 หลัก)

double 1.7E +/- 308 (15 หลัก)

Page 36: Basic C-Programming - Short.pdf

กฎการตั้งชื่อตัวแปร

คำสงวนใน ANSI Stand C มีดังนี้ : auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

อยาเอาตัวเลขนำหนา อยาใหมาตรงกับคำสงวน

อยาใหมีเครื่องหมายใดลอยนวล ไมสมควรมีชองวางใด ๆ เลย

Page 37: Basic C-Programming - Short.pdf

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

เปนการสรางตัวแปรขึ้นมาใชงาน เพื่อเก็บขอมูลตาง ๆ

รูปแบบการประกาศ คือ type variable_list; เชน

int data1, data2;

int data1;float data2;

int data1 = 5;float data2 = 2.653;

Page 38: Basic C-Programming - Short.pdf

การประกาศค่าคงที่การประกาศคาคงที่ (constant)

อยูในหนวยความจำ และมีคาคงที่ตลอดโปรแกรม

ประกาศคาคงที่โดย ประกาศเปน constant

ไมกำหนดคา เชน const int a;

กำหนดคา เชน const int count = 100;

ประกาศคาคงที่โดย #define

เปนคำสั่งสำหรับนิยามคา

ไมตองระบุประเภทของขอมูล

ไมตองมีเครื่องหมาย ; ตอทาย

ตัวอยาง #define PI 3.14 หรือ #define X (5+3)/2

ใชตัวใหญในการตั้งชื่อตัวแปรคาคงที่

Page 39: Basic C-Programming - Short.pdf

การเปลี่ยนประเภทของข้อมูล (Data Type Casting)

โดยปกติ Operator จะใชกับนิพจนประเภทเดียวกัน เชน เรานำ int บวกกับ int ได int

บางครั้ง เราจำเปนตอง นำ int บวกกับ float ซึ่งผลลัพธจะได float แตเราตองการผลลัพธเปน int เราจึงตองเปลี่ยนผลลัพธที่ได ใหเปน int โดยการ Casting

Example: ตองการเปลี่ยนคาที่ไดจาก a คูณ 2.5 ใหมีคาเปนจำนวนเต็ม

ใชรูปแบบคำสั่ง คือ (int)(a*2.5);

!!!! Be careful !!!!!

Page 40: Basic C-Programming - Short.pdf

Quiz: Right or wrong

int age;

double grade2;

char 1ch;

int name$;

int numofpizza;

long int a = 40;

char int;

char my salary;

double ratio_rate = 100;

short 123free;

Page 41: Basic C-Programming - Short.pdf

Basic input output function

printf(“ ”); scanf(“ ”); and other input functions

3 ways of using printf(“...”);

For example;

printf(“Your text goes here”);printf(“control String”, variable);printf(“ control Strings”, variable list,.....);

printf(“My name is Chunny”);printf(“I am %d years old”, myAge);printf(“%f = %d %s”,dollars, baht, currency);

Page 42: Basic C-Programming - Short.pdf

Escape sequence (รหัส backslash)

Code Meaning

\n New line

\t Tab (8 characters)

\xhh Display a character when hh is a hexadecimal

\a “Beep” sound

\\ Backslash sign

Page 43: Basic C-Programming - Short.pdf

Control String

Control String Meaning

%d Type a decimal number

%u Unsigned integer

%f Floating point

%e Type Real Number in the power form

%c Type a character

%s Type a string

%% Type a “%”

%o Type octal number

%x Type Hexadecimal number

Page 44: Basic C-Programming - Short.pdf

scanf()

Read the input from the keyboard as ASCII code

Using Control String to define the type of the variable and data

Don’t forget the “&” sign which means it points to an address in the memory

For examples;

For a string, don’t need the “&” sign

Problem !! Can’t read a string contains spaces (use gets() instead)

scanf(“control string”, &variable list, ......);

int num;scanf(“%d”, &num);

int i, j;scanf(“%o %x”, &i &j);printf(“%o %x” i, j);

char str[80];printf(“Enter a string : ”);scanf(“%s”, str);printf(“Here’s your string: %s”, str);

no “&”

Page 45: Basic C-Programming - Short.pdf

Other input/output functions

Function Syntax What it does

gets() gets(str) Read String input

fgets() fgets(str) Read String input (fixed length)

getch() getch(cha) Read character input (don’t have to press enter)

getchar() getchar(cha) Read character input (must press enter)

puts() puts(str) Output a string to a monitor

putchar() putchar(cha) Output a character to a monitor

Page 46: Basic C-Programming - Short.pdf

String Type

String คือการนำเอาอักขระ (char) มาเรียงตอ ๆ กัน โดยสามารถเก็บตัวอักขระได 255 ตัว

In the other words, A String is an array of characters

อยูในเครื่องหมาย “ ” ในการเขียนโปรแกรม และมีการเติมอักษรวาง NULL (\0) เปนตัวสุดทาย ทั้งนี้ เพื่อเปนการบอกวาถึงจุดสิ้นสุดของ String นั้นๆ แลว

เชน ตองการเก็บคำวา “COMPUTER” ไวใน String จะใชเนื้อที่ในการเก็บ 9 bytes

“C” “O” “M” “P” “U” “T” “E” “R” “\0”

Page 47: Basic C-Programming - Short.pdf

Workshop 2Creating c programs

Page 48: Basic C-Programming - Short.pdf

Operatorby: Tulawat Chunwijitra

Page 49: Basic C-Programming - Short.pdf

Operator

ตัวดำเนินการเลขคณิต (Arithmetic Operators)

ตัวดำเนินการเปรียบเทียบ (Relation Operators)

ตัวดำเนินการตรรก (Logical Operator)

ตัวดำเนินการแบบบิต (Bitwise Operators) (ไมเรียน)

ตัวดำเนินการลำดับการใหคา (Comma Operators)

Page 50: Basic C-Programming - Short.pdf

Arithmetic operator

ตัวดำเนินการ กระบวนการ ขอมูลที่ถูกกระทำ ขอมูลผลลัพธ

+ บวก จำนวนเต็ม, จำนวนจริง จำนวนเต็ม, จำนวนจริง

- ลบ จำนวนเต็ม, จำนวนจริง จำนวนเต็ม, จำนวนจริง

* คูณ จำนวนเต็ม, จำนวนจริง จำนวนเต็ม, จำนวนจริง

/ หาร จำนวนเต็ม, จำนวนจริง จำนวนจริง

% หารเอาเศษ จำนวนเต็ม จำนวนเต็ม

++ เพิ่มค่าขึ้น 1 จำนวนเต็ม จำนวนเต็ม

-- ลดค่าลง 1 จำนวนเต็ม จำนวนเต็ม

Page 51: Basic C-Programming - Short.pdf

Example

3 + 4 = 7

7.0 - 3.0 = 4.0

6 * 1.5 = 9.0

1.5 - 1 = 0.5

2.25 * 1.5 = 3.375

5.8 + 3 = 8.8

9/2 = 4.5

9 % 2 = 1

18 % 2 = 0

-14 % 3 = -2

14 % -3 = 2

18.2 / 2 = 9.1

NOTE:

• จำนวนจริง ไปกระทำกับเลขใด จะได้จำนวนจริง

• Real/Real = Real

• Real/Int = Real

• Int/Real หารไม่ได้

Page 52: Basic C-Programming - Short.pdf

Operator Precedence

ลำดับกอนหลังของ Operator แสดงในตารางดานลาง

Precedence Operator Note

1 ( ) ถ้าหากมีวงเล็บซ้อนกัน ทำวงเล็บในสุดก่อน

2 *, /, %ถ้าหากมีตัวดำเนินการลำดับขั้นเดียวกันในประโยค

ให้ทำจากซ้ายไปขวา

3 +, -ถ้าหากมีตัวดำเนินการลำดับขั้นเดียวกันในประโยค

ให้ทำจากซ้ายไปขวา

Page 53: Basic C-Programming - Short.pdf

Examples

จงหาผลลัพธ 12 % 5 * 3

ตอบ 6 เปนจำนวนเต็ม

จงหาผลลัพธ 6 * 5 / 10 * 2 + 10

ตอบ 16.0 เปนจำนวนจริง

จงหาผลลัพธ (6 * 5) / (10 * 2) + 10

ตอบ 11.5 เปนจำนวนจริง

จงหาผลลัพธ (6 * 5) / (10 * 2 + 10)

ตอบ 1.0 เปนจำนวนจริง

จงหาผลลัพธ (6 * 5) / (10 * (2 + 10))

ตอบ 0.25 เปนจำนวนจริง

Page 54: Basic C-Programming - Short.pdf

ตัวดําเนินการเปรียบเทียบ (Relation Operator)

นำขอมูลสองคามาเปรียบเทียบกัน

ผลที่ได คือ ขอมูลชนิดตรรกะ เชน จริง หรือ เท็จ เชน 6>2 ไดผลลัพธคือ จริง

Operator Process

== เท่ากับ

!= ไม่เท่ากับ

<= น้อยกว่าหรือเท่ากับ

>= มากกว่าหรือเท่ากับ

> มากกว่า

< น้อยกว่า

Page 55: Basic C-Programming - Short.pdf

Logical Operator

มีสามตัว คือ AND , OR และ NOT

Example: Is this true or false? (5 == 4+1)&&(18<=6*4)

Answer: True

Operator Process

&& ถ้าค่าทั้งสองเป็นจริง ผลลัพธ์จะเป็นจริง

|| ถ้าค่าทั้งสองเป็นเท็จ ผลลัพธ์จะเป็นเท็จ

! เปลี่ยนค่าจากจริงเป็นเท็จ จากเท็จเป็นจริง

Page 56: Basic C-Programming - Short.pdf

Precedence

Precedence Operator

1 !

2 > >= < <=

3 != ==

4 &&

5 ||

Page 57: Basic C-Programming - Short.pdf

Increment and Decrement Operator

การเพิ่มคา x ขึ้น ทีละ 1 ใชคำสั่ง x = x+1; หรือ x++;

การลดคา x ลง ทีละ 1 ใชคำสั่ง x = x-1; หรือ x--;

คำถาม ผลลัพธของสองชุดคำสั่งดานลาง คืออะไร เหมือนกันหรือไม

ตอบ ไมเหมือน เพราะทางซายเพิ่มคา x ขึ้น 1 กอนสงใหตัวแปร y ซึ่งจะได y = 11 สวนทางดานขวา สงคา x ใหตัวแปร y กอน จึงเพิ่มคา x ขึ้น 1 ดังนั้น x = 11 สวน y = 10

x = 10;y = ++x;

x = 10;y = x++;

Page 58: Basic C-Programming - Short.pdf

Compound Assignment

Operators บางตัว สามารถนำมารวมกันได เพื่อการเขียนที่สั้นลง เชน...

Operator Example Process*= total *= 1.25; total = total * 1.25;

/= ant /= factor; ant = ant / factor;

%= day %=3; day = day % 3;

+= count += 1; count = count + 1;

-+ adjust -= 0.5; adjust = adjust - 0.5;

<<= a <<= b a = a << b;

&= a &= b a = a & b;

|= a |= b a = a | b;

^= a ^= b a = a ^ b;

Page 59: Basic C-Programming - Short.pdf

Workshop 3

Page 60: Basic C-Programming - Short.pdf

flow controlBy: Tulawat Chunwijitra

Page 61: Basic C-Programming - Short.pdf

Outline

if , if-else , if-elseif-else

switch-case

for loop, while loop, do while loop

Page 62: Basic C-Programming - Short.pdf

IF

ในการเขียนโปรแกรม บางครั้ง จะตองการใหโปรแกรมมีทางเลือก เพื่อที่จะทำอยางใดอยางหนึ่ง เชน การถามวาคุณตองการออกจากโปรแกรมหรือไม -----> Quit (Y/N)

ในการเลือกทำ เราใชคำสั่งสองคำสั่ง คือ if และ if...else...

รูปแบบ

ถา เงื่อนไข (condition) เปนจริง จะทำคำสั่งที่ตามมา และถา condition เปนเท็จ จะขามชุดคำสั่งใน if ไป

เชน

if (condition){ statements;}

if (age >= 18){   printf(“of age \n”);}printf(“good luck”);

Page 63: Basic C-Programming - Short.pdf

If flow chart

ตรวจสอบเงื่อนไข

ชุดคําสั่ง

จริง

เท็จ

Page 64: Basic C-Programming - Short.pdf

Nested if...else...

if...else... สามารถซอน ๆ กันหลาย ๆ ชั้นได ดังรูป

if (condition1){   statements1;}else if (condition2){  statements2;}else if (condition3){  statements3;}else{ statements;}

Page 65: Basic C-Programming - Short.pdf

switch case

Switch - case ใชกับเงื่อนไขที่ตองตัดสินใจขึ้นกับตัวแปรตัวเดียว

เชน MENU

ผูใชเลือกวิธีคำนวณโดยการปอนคา input เขาไป โดยเรานำคา input ที่รับเขาไปเก็บไวในตัวแปรตัวหนึ่ง และใชคำสั่ง switch เลือกวามีคาเทากับขอใด

MENU1. คำนวณบวกเลข2. คำนวณคูณเลข3. คำนวณหารเลข4. คำนวณลบเลข

Page 66: Basic C-Programming - Short.pdf

syntax

switch (variable){

case constant_1 : statement; break;

case constant_2 : statement; break;

case constant_3 : statement; break;

case constant_4 : statement; break;

..................... .................case constant_n : statement;

break;default : statement;

}

ตัวแปรที่จะทดสอบ

ถ้าค่าของ variable ไม่ตรงกับ case ใดเลย ก็จะทํา statement หลัง default

ถ้าค่าของ variable ตรงกับ Case ใด ก็จะทํา statement

หลังค่าคงที่นั้น ๆ

Page 67: Basic C-Programming - Short.pdf

selector = const 1

selector = const 2

selector = const n

default

ชุดคำสั่ง 1

ชุดคำสั่ง n

ชุดคำสั่ง 2

จริง

จริง

จริง

Page 68: Basic C-Programming - Short.pdf

ข้อควรทราบ

คาคงที่หลัง case จะตองเปน int หรือ char เทานั้น

คำสั่ง switch ตางจากคำสั่ง if ตรงที่ switch สามารถทดสอบเงื่อนไขไดหลายอยาง แตคำสั่ง if จะตรวจสอบเฉพาะความสัมพันธ หรือ ลอจิกเทานั้น

คาคงที่ของ switch สามารถมีคาซ้ำกันได

ถาคาคงที่เปนตัวอักษร คำสั่ง switch จะมองเปนเลขจำนวนเต็ม

คา default จะมีหรือไมมีก็ได

Page 69: Basic C-Programming - Short.pdf

Example

switch (year){

case 1: printf(“Fresherman \n”); break;

case 2 : printf(“Sophormore \n”); break;

case 3 : printf(“Junior \n”); break;

case 4 : printf(“Senior \n”); break;

default : printf(“Nonmatriculated”);}

Selector

Page 70: Basic C-Programming - Short.pdf

for loop

เปนการใหโปรแกรมทำซ้ำ จนกวาคาตัวแปรจะครบ ตามที่ตั้งไว

โดยจำมีการกำหนดคาเริ่มตน (initialize) ใหกับตัวแปรตัวหนึ่ง และทำการเพิ่ม/ลดคาตัวแปรนั้นไปเรื่อย จนกวาเงื่อนไข (condition) จะไมเปนจริง จึงหยุดทำ

for (initialization ; condition ; increment){

statements;}

ค่าเริ่มต้น เงื่อนไข เพิ่ม/ลดค่า

Page 71: Basic C-Programming - Short.pdf

for loop

อาน “จาก counter=1 ถึง counter=10 ให print คาของ counter ออกทางหนาจอ”

โปรแกรมจะพิมพคา counter ตั้งแต 1 จนถึง 10 โดยมีการกำหนดคาเริ่มตนให counter ใหเปน 1 กอน แลวตรวจสอบวา counter นอยกวาหรือเทากับ 10 หรือไม ถาไม ใหทำ statement แลวเพิ่มคา counter

for (counter=1 ; counter<=10 ; counter++){

printf(“%d\n”,counter);}

Page 72: Basic C-Programming - Short.pdf

flowchart

counter = 1

printf(“%d”,counter);counter<=10 จริง

เท็จ

คำสั่่งตอไป

counter++

Page 73: Basic C-Programming - Short.pdf

while loop

ประโยคคำสั่ง while loop เปนการสั่งใหคอมพิวเตอรทำงานซ้ำ โดยจะ ตรวจสอบเงื่อนไขกอน

ถาเงื่อนไขเปนจริงจะทำซ้ำ และจะวนรอบจนกวาเงื่อนไขจะเปนเท็จ

ตางจาก for loop ตรงที่จำนวนที่ทำซ้ำจะไมแนนอน ขึ้นอยูกับเงื่อนไข

while (condition){

statements;}

Page 74: Basic C-Programming - Short.pdf

Flow chart

ชุดคําสั่ง

ตรวจสอบเงื่อนไข

จริง

เท็จ

while

ออกจาก loop

Page 75: Basic C-Programming - Short.pdf

Examples

Output

int n = 7;while(n>=0){

printf(“%d\n”,n);n = n-5;printf(“Hi %d\n”,n);

}

7Hi 22Hi -3

Page 76: Basic C-Programming - Short.pdf

ArrayBy: Tulawat Chunwijitra

Page 77: Basic C-Programming - Short.pdf

Outline

รูจักกับขอมูลชนิด array

ตัวแปร array 1 มิติ

ตัวแปร array 2 มิติ

ขอมูลชนิด string

Page 78: Basic C-Programming - Short.pdf

array

array คือตัวแปรประเภทหนึ่งที่ใชชื่อตัวแปรชื่อเดียว แตสามารถเก็บขอมูลเปนกลุมได

มีทั้งแบบ 1 มิติ (1 D array) และ หลายมิติ

เมื่อเราประกาศตัวแปรเปน array มันจะจองเนื้อที่ในหนวยความจำไวใหเรา ตามขนาดที่เราระบุ โดยจะแบงเปนชอง ๆ

ขอมูลแตละตัวใน array หนึ่ง ๆ เราเรียกวา Element

การอางถึงขอมูลใน array เราจะใช index โดย index จะมีคาเริ่มตนจาก 0

Page 79: Basic C-Programming - Short.pdf

Example

ตองการ array มาเก็บขอมูลคะแนนของนนร. 10 คน

ขอมูลคะแนน -> int

ขนาด = 10

int x[10];

x[2] = 35 , x[1+4] = x[5] = 21

x[2]+x[3] = 35+84 = 119

x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] x[9]

18 20 35 84 81 21 45 65 71 39

index

Page 80: Basic C-Programming - Short.pdf

array 1 มิติ

เก็บขอมูลตอเนื่องกันไปเปนแถว

syntax

ตัวอยาง

int salary[20];

Computer จะกันหนวยความจำไวให 20 ชอง

การอางถึงขอมูลที่เก็บไวใน array ใช index เชน salary[5]

type variable_name[size];

Page 81: Basic C-Programming - Short.pdf

ขอควรจำ !!!

ขอมูลใน array ทุก element

จะตองเปนขอมูลประเภทเดียวกัน

Page 82: Basic C-Programming - Short.pdf

Example

Question : ชุดคำสั่งตอไปนี้ ทำอะไร ?

Answer : ใสขอมูล 0 ถึง 4 เขาไปในตัวแปร array

int i[5];int j;for(j=0 ; j<5 ; j++){

i[j] = j;}

Page 83: Basic C-Programming - Short.pdf

array (cont.)

คำสั่ง scanf () สามารถใชรวมกับ array ได เชน

scanf(“%d”,&count[9])

รับคาจาก keyboard แลวไปเก็บไวในชองที่ 10 (index = 9)

เราสามารถกำหนดคาเร่ิมตนใหกับตัวแปร array ได โดยใช syntax ตอไปนี้

เชน

int A[5] = {1, 4, 9, 16, 25};

char a[3] = {‘A’, ‘B’, ‘C’};

type array-name[size] = {value-list}

Page 84: Basic C-Programming - Short.pdf

More about String

String คือ ชุดของตัวอักษรที่นำมาตอเรียงกัน

ดังนั้น String ก็เปน array ชนิดหนึ่ง

อักขระที่บงบอกวาถึงจุดสิ้นสุดของ string นั้น ๆ คือ “\0”

Example: char name[8];

เก็บขอความได 7 อักขระ

ตัวสุดทาย เก็บ “\0”

Example: char str[8] = “BAT”;

str[0] = ‘B’ , str[1] = ‘A’ , str[2] = ‘T’ , str[3] = ‘\0’

Page 85: Basic C-Programming - Short.pdf

scanf() VS gets()

ลองรัน code ตัวอยางตอไปนี้ แลวสังเกตุดูความแตกตาง

ปญหาของ scanf () ในการรับคา คือ มันไมสามารถรับคา string ที่มีการเวนวรรคได

วิธีแก gets() ใชสำหรับรับคา string จาก keyboard

#include "stdio.h"main(){ char str[80]; printf("Enter a string : "); gets(str); printf("%s",str);}

#include "stdio.h"main(){ char str[80]; printf("Enter a string : "); scanf("%s",str); printf("%s",str);}

Page 86: Basic C-Programming - Short.pdf

Some useful string functions

strlen(str) ใชหาความยาวของ string

strlwr(str) ใชเปลี่ยน string ใหเปนตัวพิมพเล็ก

strupr(str) ใชเปลียน string ใหเปนตัวพิมพใหญ

strrev(str) ใชกลับตัวอักษรใน string จากซายไปขวา

strcpy(str2,str1) คัดลอก string str1 ไปใหตัวแปร str2

strncpy(str2,str1,n) คัดลอก str1 ไป str2 เปนจำนวน n ตัว

strcat(str2,str1) เชื่อมตอ str1 กับ str2

strcmp(str2,str1) เปรียบเทียบตัวแปร str1 กับ str2 วาเทากันหรือไม

Page 87: Basic C-Programming - Short.pdf

FunctionBy : Tulawat Chunwijitra

Page 88: Basic C-Programming - Short.pdf

Function• Function คือกลุมคำสั่งที่ถูกสรางขึ้นมาเพื่อใหทำงานอยางใดอยาง

หนึ่ง

Function

User-Defined Function

Standard Function

ไม่ส่งค่ากลับส่งค่ากลับไม่ส่งค่ากลับส่งค่ากลับ

Page 89: Basic C-Programming - Short.pdf

ประเภทของ function• function ในภาษา c ถูกแบงออกเปน 2 ประเภท (ตามที่มา)

• ฟงกช่ันมาตรฐาน (Standard Function)

• มีอยูแลว และเก็บไวใน library

• เชน clrscr(); , puts() และอื่น ๆ

• ฟงกชั่นที่ผูเขียนโปรแกรมสรางขึ้น (User-defined

Function)

• เปนฟงกช่ันยอยที่ผูใชสรางขึ้นมาไวใชเอง เพื่อทำงานใดงาน

หนึ่ง

• สามารถเรียกใชไดตามตองการ

Page 90: Basic C-Programming - Short.pdf

Benefit• เรียกใชไดหลายครั้งตามตองการ (Reusable)

• ทำใหโปรแกรมดูงาย และมีระเบียบมากขึ้น

• สะดวกตอการพัฒนาโปรแกรม (สามารถแยกสวนของโปรแกรมไป

ชวยกันพัฒนาได)

#include "stdio.h"void main(){ ..... computeAverage(); ..... computeAverage(); .....}

void computeAverage(){ //code for computing your average //goes here.}

call

Page 91: Basic C-Programming - Short.pdf

การสรางฟงกชั่น

ประเภทของข้อมูล ชื่อฟังก์ช่ัน (พารามิเตอร์){ statements; statements; ....... [return];}

Page 92: Basic C-Programming - Short.pdf

การสรางฟงกชั้น (ตอ)• ประเภทของขอมูล หมายถึงประเภทของขอมูลที่สงคากลับ จะมี

หรือไมมีก็ได

• void หมายถึง ฟงกชันนั้นๆ ไมสงคากลับ

• ชื่อฟงกชัน ชื่อของฟงกชันที่สรางขึ้น สามารถเรียกใชงานผานชื่อนี้

ได

• พารามิเตอร์ เปนตัวแปรที่ถูกสงผานเขามา เพื่อประมวลผลใน

ฟงกชันนั้น ๆ จะมีหรือไมมีก็ได

• return ใชในการสงคากลับ จะมีหรือไมมีก็ได สำหรับกรณีที่มีการ

สงคากลับ จะตองเขียนคาที่สงกลับตามหลัง return

Page 93: Basic C-Programming - Short.pdf

More Example

void show_A(){ int i; for (i=1; i<20; i++) printf("A");}

void show_A(int num){ int i; for (i=1; i<num; i++) printf("A");}

int add_AB(int A,int B){ int x; x = A+B; return x;}

#include "stdio.h"void main(){ int salary=10000, partTime=40000, totalIncome; show_A(); show_A(50); totalIncome = add_AB(salary,partTime);}

Page 94: Basic C-Programming - Short.pdf

Example• An overall view of a program with one user-defined

function (return a value as an integer)

#include "stdio.h"int add(int a,int b){ int c; c = a + b; return c;}main(){ clrscr(); printf(" 3 + 5 = %d\n",add(3,5)); getch(); return 0;}

Page 95: Basic C-Programming - Short.pdf

ขอสังเกต• User-Defined Functions มากอน แลวจึงตามดวย main()

เปนตัวสุดทาย

• มี void ไมมี return มี return ไมมี void

• main() ก็เปนฟงกช่ัน ฟงกชั่นหนึ่งเหมือนกัน และทุก ๆ

โปรแกรมตองมี

• โปรแกรมเริ่มทำงานจาก main()

• ฟงกชั่นอื่น ๆ จะถูกเรียกใชจาก ฟงกชั่น main()

• ขอสังเกตุเพิ่มเติม ??

Page 96: Basic C-Programming - Short.pdf

Prototypes• โดยปกติ เราวาง User-defined function ไวกอน แลวปดทาย

โปรแกรมดวย main()

• ถาเราตองการเรียกใช function ที่อยูหลัง main() เราตอง

ประกาศชื่อฟงกชั่น นั้น ๆ ไวที่สวนหัวของโปรแกรมกอน

• โดยจะประกาศวา

• ฟงกชั่นนี้ชื่ออะไร

• มีพารามิเตอรใดบาง

• คืนคาอะไรกลับมา

• วิธีนี้ เราเรียกวา Prototypes

Page 97: Basic C-Programming - Short.pdf

Example• Prototype: ประกาศ volumn () ไวกอน โดยบอกชื่อ,

พารามิเตอร และคาที่คืนกลับมา

#include "stdio.h"double volumn(double s1,double s2,double s3);

main(){ double vol; vol = volumn(12.2,5.67,9.03); printf("Volumn : %f",vol); getch(); return 0;}double volumn (double s1,double s2,double s3){ return s1*s2*s3;}

Page 98: Basic C-Programming - Short.pdf

Global vs Local Variable

• ในการเขียนโปรแกรม เราสามารถประกาศตัวแปรใน function ที่

เราเขียนขึ้น

• เราไมสามารถนำตัวแปรที่ถูกประกาศในฟงกชั่นใดฟงกชั่นหนึ่ง ไป

ใชนอกฟงกชั่นนั้น ๆ

• ตัวแปรแบบนี้เรียกวา local variable

• วิธีแก : เราตองประกาศตัวแปรในลักษณะของ global variable

Page 99: Basic C-Programming - Short.pdf

Global Variables• ตัวแปรที่ประกาศไวนอกฟงกชั่น

• ทุกสวนของโปรแกรมสามารถเรียกใชได

• คาของมันจะถูกเปลี่ยนแปลงไปเรื่อย ๆ ตามที่ฟงกชั่นนั้น ๆ เรียก

ข้อควรระวัง

Data Synchronization อย่าลืมว่าทุกส่วนของโปรแกรมสามารถเปลี่ยนแปลงค่าของ global variable ได้ ดังนั้น ต้อง keep track ให้ดี ๆ ว่า ตัวแปรนั้นเก็บค่าอะไรอยู่กันแน่

Page 100: Basic C-Programming - Short.pdf

Local variable

• ประกาศในฟงกชั่นหนึ่ง ๆ

• สามารถเรียกใชไดแคในฟงกชั่นนั้น ๆ ฟงกชั่นอื่นจะไมรูจักตัวแปร

นี้

• ฟงกชั่นอื่นสามารถประกาศตัวแปรชื่อซ้ำกับตัวแปรนี้ได

• ชื่อตัวแปรชื่อเดียวกัน แตประกาศในคนละฟงกชั่น ถือวาเปน

ตัวแปรคนละตัวกัน

• เมื่อฟงกชั่นนั้นทำงานจบ คาของตัวแปรชนิดนี้จะหายไป

Page 101: Basic C-Programming - Short.pdf

Example• ตัวแปร a ถูกประกาศแบบ global

#include "stdio.h"int a;void Ex(){ a = 5; printf("%d\n",a);}main(){ a = 3; printf("%d\n",a); Ex(); printf("%d\n",a); getch(); return 0;}

Page 102: Basic C-Programming - Short.pdf

Example

#include "stdio.h"int a;void Ex(){ int a; a = 5; printf("%d\n",a);}main(){ clrscr(); a = 3; printf("%d\n",a); Ex(); printf("%d\n",a); getch(); return 0;}

ผลการรันโปรแกรม

353

• ชื่อของ global variable และ local variable อาจซ้ำกันได

Page 103: Basic C-Programming - Short.pdf

Basic standard function math.hsqrt(x) หาค่ารากที่สองของจํานวนเต็ม x

exp(x) หาค่า Exponential (ex)

log(x) หาค่า log ฐาน e

log10(x) หาค่า log ฐาน 10 ของ x

fabs(x) หาค่าสัมบูรณ์ของ x

ceil(x) ใช้หาค่าปัดเศษทศนิยมของ x

floor(x) ใช้หาค่าตัดเศษทศนิยมของ x ทิ้งไป

pow(x,y) ใช้หาค่า x ยกกําลัง y

sin(x) ใช้หาค่า sin ของ x

cos(x) ใช้หาค่า cos ของ x

tan(x) ใช้หาค่า tan ของ x

Page 104: Basic C-Programming - Short.pdf

? Question ?