56
บบบบบ 1 กกกกกกกกกกกกกกกกก บบบบบบบบบบบบบ C กกกก C กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก(Assembly) กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกก กกกก C กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก ก กกก กกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกก กกกกกกกกก กกกกกกกกกกกก กกกกกกกกกกกกกกกกก Dennis Ritchie กกกกกกกกกกกกก (Bell Labs) กกกก ก..1972 กกกกกกกกกกกกกกกกกกกกก BCPL กกกกกกกกกกกก กกกกกกก กกกกกกก กกก กกกก B กกกกกกกก กกกกกกก Ken Thomson กกกกกกกกกกกกกกกกกกกกกก กกกก C กกกกก ก..1978 กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก บบบบบบบบบบบบบบ C กกกก C กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกก กกกกกกก กกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก กกก กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก

c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

บทท 1

การตดตงโปรแกรม รจกกบภาษา C

ภาษา C เปนภาษาทเกาแกถอกำาเนดมายาวนาน โดยแตเดมนนถกพฒนาขนเพอเปนภาษาสำาหรบระบบปฏบตการยนกซ เนองจากในขณะนนระบบปฏบตการยนกซเขยนดวยภาษาแอสเซมบล(Assembly) ซงเปนภาษาทยดตดกบฮารดแวรของเครอง ดงนนการทจะยายระบบปฏบตการไปใชกบเครองอนจงเปนเรองทเปนไปไมไดเลย ดงนนภาษา C เปนภาษาทไมยดตดกบฮารดแวรจงถกพฒนาขนมา ไมไดจำากดอยเพยงแคงานสรางระบบปฏบตการเทานนแตสามารถใชกบงานอน ๆ ได เชน การควบคมการทำางานของอปกรณ การจดการฐานขอมล สรางโปรแกรม

คดคนครงแรกโดย Dennis Ritchie ทหองแลบเบล (Bell Labs) ในป ค.ศ.1972 โดยไดแนวคดมาจากภาษา BCPL พฒนาขนโดย มารตน รชารด และ ภาษา B ทเขยนขนโดย Ken Thomson เพอนำามาพฒนาตอเปน ภาษา C จงป ค.ศ.1978 ไดรบการเผยแพรอยางเปนทางการ

จดเดนของภาษา C

ภาษา C เปนภาษาทมการกำาหนดมาตรฐานสำาหรบเครองคอมฯ ทกรน และระบบปฏบตการทกชนด

เปนโปรแกรมขนาดเลก ทำางานไดเรว

มโครงสรางภาษาทด

สามารถเขยนคำาสงใหควบคมฮารดแวรบางสวนได

มฟงกชนสำาเรจรปใหเลอกใชมาก

Page 2: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

การสงงานคอมฯ ดวยภาษาโปรแกรม

ภาษาทคอมฯ เขาใจคอภาษาเครอง ซงจะอยในรปแบบของรหสเลขฐานสอง เรยงตอกน ซงยากทมนษยจะเขาใจ จงไดมการพฒนาภาษาทสอสารกบคอมพวเตอรทมนษยเขาใจโดยใชอกษรภาษาองกฤษ มากำาหนดเปนรปแบบคำาสง และมตวกลางแปลภาษานนเปนภาษาเครองอกท

ระดบของภาษา

ภาษาระดบตำา เปนภาษาทใกลเคยงกบภาษาเครองมากทสด แตเขยนยาก รปแบบคำาสงจดจำาและทำาความเขาใจไดยาก นอกจากนยงยดตดกบชนดของเครองคอมฯ ตวอยางเชน LOD R1,C MUL R1 D

ภาษาระดบสง เปนภาษาทใกลเคยงกบภาษาทใชสอสารกนตามปกต คำาสงตางๆ มกเปนคำาทมความหมายในภาษาองกฤษ ตวอยางเชน ภาษา Pascal Fortran Basic ตวอยางเชน Begin end write read

ภาษาระดบกลาง

เนองจากภาษาระดบตำา และสงมขอดขอเสยตางกน ภาษา C จงพฒนาโดยปรบปรงขอเสยและนำาขอดมาใช โดยมภาษาทจดจำาไดงาย ทำางานไดเรว ตดตอกบอปกรณฮารดแวรไดโดยตรงเหมอนภาษาระดบตำา

การใชโปรแกรม Crimson Editor เราสามารถใชโปรแกรม editor ไดหลายโปรแกรม เชน Edit plus,

Notepad, Crimson Editor ฯลฯ ในทนจะกลาวถงการใชโปรแกรมCrimson Editor version 3.40 เปนโปรแกรม editor ซงเปนโปรแกรม

ประเภท Freeware ทพฒนาขนมาเพอรองรบการเขยนโปรแกรม ในภาษา

MUL R1 D STO ADD

ตวกลางแปลภาษา

11001010 11011001 00110011

Page 3: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตางๆ เชน C, C++, Java, Perl, MatLab โปรแกรม เขยนโดย Ingyu Kang (Copyright 2001) (http://www.crimsoneditor.com/)

โปรแกรมทเขยนขนมาจะตองถกแปล (compile) กอนทจะนำาไปประมวล ผล (execute) เพอใหไดผลลพธทตองการ

ตวแปลภาษาทใชเปลยน โปรแกรม ใหเปนภาษาเครอง (compiler) ทใชในทนไดแก Borland C++ complier, version 5 (Free version)

Crimson Editor มสวนประกอบทนาสนใจดงน

เมน Help เปน เมนทเรยก เอกสารทอธบาย อธบาย การทำางานของ เมน ตางๆ

เมน File เปนเมนทชวยจดการดานแฟมขอมล โดยมเมนยอยทสำาคญดงน New เปนการเตรยมหนาตางใหมสำาหรบการเขยนโปรแกรม Open เปนการเปดโปรแกรมทมอยแลวในDisk เพอนำามาแกไข Save เปนการบนทกโปรแกรมลงใน Disk ภายใตชอโปรแกรมเดม Save As เปนการบนทกโปรแกรมลงในหนวยความจำาสำารองภายใตชอใหม Exit เปนการออกจากโปรแกรม

เมนShort cut bar

บรเวณเขยนโปรแกรม

Directory window

หนาตางผลลพธ

Page 4: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

เมน Edit เปนเมนทชวยดานการแกไขขอความ โดยมเมนยอยทสำาคญดงน

Cut เปนการลบขอความทไฮไลท เพอยายไปยงตำาแหนงอนในโปรแกรม

Copy เปนการคดสำาเนาขอความทไฮไลทเพอคดลอกไปยงตำาแหนงอนในโปรแกรม

Paste เปนการนำาเอาขอความทลบหรอคดลอกมาวางยงตำาแหนงทกำาหนด

Delete เปนการลบขอความทไฮไลท

เมน Search เปน เมนทชวยในการคนหาคำา ใน แฟมขอมล โดยเฉพาะ แฟมขอมลทกำาลงแกไข

Find เปนการหา คำาทตองการ ในแฟมขอมลทกำาลงทำางาน

Replace เปนหา และเปลยน คำาท ตองการ เปนคำาใหมตามตองการ ในแฟมขอมล

ทกำาลงทำางาน Go to เปนการไปท บรรทดทระบ

เมน View เปนการกำาหนดวธการแสดงผลหนาจอของ

โปรแกรม โดยสามารถแสดง/ ไมแสดง Directory window, output window, เลขท

บรรทด และกำาหนด การแสดง ผลอนๆ เชน ขนาด และ รป

แบบตวอกษร

Page 5: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

เมน Tool ใชสำาหรบ เรยก โปรแกรมอนๆ เพอใชงาน MS-DOS Shell เมน จะเปด

Window ใหมสำาหรบ MS-DOS การใชงานรวมกบ Borland C++ complier จะ

ตองกำาหนด การเรยกใช โดย จะกลาวตอไป

การ Borland C++ Compiler และ เรยกใช โปรแกรม เมอมตวโปรแกรม ภาษา C++ ซงถกเขยนโดย Editor เปน Text

แลว โปรแกรมนน สามารถนำามา Compile โดย Complier ซง เปน โปรแกรม ท อาน โปรแกรม (text) แลว แปลงเปน โปรแกรม ท ทำางานได Borland C++ Compiler สามารถเรยกใชใน MS-DOS mode

(MS-DOS window) โดย คำาสง bcc32 ตามดวย ชอโปรแกรม (text) ทจะ Compile โดย โปรแกรม ตอง มนามสกลเปน .cpp ทงน

Complier จะตรวจสอบ ความถกตองของโปรแกรม ทางภาษา (Syntax) ถา ไมมขอผดพลาด Complier จะ สราง โปรแกรม ใหม โดยมชอ

เหมอน โปรแกรม ตนฉบบ แตม นามสกล เปน .exe โปรแกรมทถก สรางขนมาน จะสามารถเรยกใชใน MS-DOS mode โดยการเรยกชอโปรแก

รมนนๆ เปลยน ตำาแหนงปจจบนของการทำางาน ใหอยใน directory เดยว

กบทตวโปรแกรม อย โดยคำาสง cd ตามดวยชอ directory สงcompile โดยใช คำาสง bcc32 ตามดวยชอ โปรแกรม ถาไมมขอผด

พลาด สงให โปรแกรมทำางานโดย เรยกชอ ทงน โปรแกรม crimson editor สำาหรบเครองในหอง lab ไดถก

ตงคา Tool ใหสามารถเรยกใช bcc32 จาก Tool -> compile โดยจะ แสดงผลการทำางาน และขอมลของขอผดพลาด ถาม ท Output window

Page 6: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

การตดตง Borland compiler และ Crimson Editor เรยกโปรแกรม BorlandfreecommandLinetools.exe เพอตดตง ทงนควรตดตงโปรแกรมท c:\borland\BCC55 ตามคาทโปรแกรม install

ระบ ทงน หลงจาก โปรแกรมตดตงทำางานเสรจแลว ให  สราง ไฟล ดงตอไปน ไวใน c:\borland\BCC55\bin

bcc32.cfg  โดย ม ขอความตอไปน-I"c:\Borland\Bcc55\include"-L"c:\Borland\Bcc55\lib" ilink32.cfg โดย ม ขอความตอไปน-L"c:\Borland\Bcc55\lib" run.bat โดย มขอความตอไปน%1

เพม c:\Borland\Bcc55\bin  ลงใน PATH  การเพม PATH ใน Windows 98 , Windows ME สามารถทำาไดโดย แกไข autoexec.bat ซงจะอยท C:\

โดยใชคำาสง edit autoexec.bat แลวทำาการเพมPATH = %PATH%;c:\borland\bcc55\binPATH = %PATH%;c:\borland\bcc55\bin           

สวน Windows version อนๆ (NT, 2000, XP) มวธการทตางออกไปดงน เพม c:\Borland\Bcc55\bin  ลงใน PATH  การเพม PATH ใน Windows NT

, Windows 2000 , Windows XP สามารถทำาได โดยเพม;c:\borland\bcc55\bin ใน Environment variable ตามขนตอนน

1. เขาไปใน control panel เลอก system2. หนาตาง System Properties เลอก tab “Advanced”3. เลอก environment variable

Page 7: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

4. กดปม edit เพอแก user variables ทชอ PATH เพม ;c:\borland\bcc55\bin

5. กดปม edit เพอแก System variables ทชอ PATH เพม ;c:\borland\bcc55\bin

ตดตง Crimson Editor เมอตดตงเรยบรอยแลว เรยกโปรแกรมCrimson Editor  แกไข Tool -> Configure user tool ดงนMenu text  CompileCommand C:\Borland\BCC55\Bin\bcc32.exe

Page 8: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

Argument  $(FileName)Initial dir.  $(FileDir)

เชค ถกใน Capture outputและ

สำาหรบ Windows 98 , Windows MEMenu text  RunCommand C:\Borland\BCC55\Bin\run.batArgument  $(FileTitle)Initial dir.  $(FileDir)

สำาหรบ Windows NT , Windows 2000 , Windows XP professionalMenu text  RunCommand C:\winNT\System32\cmd.exeArgument  /c”$(FileTitle)”Initial dir.  $(FileDir)

สำาหรบ Windows XP Home editionMenu text  RunCommand C:\WINDOWS\system32\cmd.exeArgument  /k”$(FileTitle)”Initial dir.  $(FileDir)

บทท 2โครงสรางภาษา C++

Page 9: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

องคประกอบหลกโปรแกรมภาษา C++

source code ของโปรแกรมมนามสกลเปน .CPP โปรแกรมจะตองม main() ฟงกชนเสมอ หากมคำาสง คำาสงตางๆจะตองอยในขอบเขต { } ของ main()

เทานน หากมคำาสง คำาสงทกคำาสงจะตองจบดวยเครองหมาย ;

(semicolon) เสมอ ในแตละบรรทด ขอความทตามหลง // ถอวาเปน comment หากมการเรยกใชคำาสงหรอฟงกชนใน library จะตองมการ

include ไฟล header ( นามสกล .h)ทถกตองดวย โปรแกรมจะคนคาใหแก OS เมอจบการทำางานหรอไมคนกได เชน

ในตวอยางโปรแกรมทสนสด เมอจบการทำางานจะไมมการคนคา หากโปรแกรมมการคนคาเมอจบการทำางาน คาทคนจะตอง

เปนจำานวนเตมเทานน โดยจะตอง ระบขางหนา main() ดวย int บรรทดสดทายของ main() ดวยคำาสง return ตามดวย

คาจำานวนเตมทตองการสง ภาษา C++ มลกษณะเปน case sensitive ดงนน main กบ Main

จะถอวาเปนคนละตวกน

#include <iostream.h>// This program prints// “Hello World.”int main(){

cout << “Hello World.\n”;return 0;

}

main() {}

หรอ

main(){}

โปรแกรมทสนทสด ลกษณะโปรแกรมทวไป

Page 10: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

คำาสงการนำาเขา และ แสดงผลThe Output Operator: <<

มกใชรวมกบ cout ซงเปน output stream คำาสง cout เปนคำาสงในการแสดงคาออกทางจอภาพ รปแบบ (syntax)

cout << exp << exp << … << exp; จะทำาการสงคาของนพจนทางขวาไปยง output stream เรยงไป

เรอยๆ ตวอยางขางลางจะไดผลลพธเหมอนกน

cout << “Hello, world.\n”;cout << “Hello, “ << “wor” + “ld.\n”;

The Input Operator: >>>> เรยกวาเปน operator ใชรวมกบ cin เพอรบขอมลตวอยางเชนcin >> age >> cost;cin >> age;cin >> cost;

ตวแปรและการประกาศ ตวแปร (variable) เปนสญลกษณหรอชอท programmer ตงขนมา

ใชแทนตำาแหนงในหนวยความจำาเพอเกบคาหรอขอมลตางๆทใชในโปรแกรม

หลกการตงชอตวแปร► ตองขนตนดวยตวอกษร► ภายในชอตวแปรตวอกษรหรอตวเลขหรอเครองหมาย _► หามเวนชองวางในตวแปร► การใชตวอกษรตวพมพเลกหรอตวพมพใหญ ถอวาเปนคนละตวเชน

Name กบ name► หามตงชอซำากบคำาสงวน เชน case char int auto

C++ ตวแปรจะตองถกประกาศ (declare) กอนจงจะสามารถนำาไปใช เกบคาตางๆได เชน

int n;int x, y;char ch;string str;

อกขระ(character) เปนตวอกษรตวเดยวอยในเครองหมาย ‘ ’ (single quote) เชน‘r’ ‘A’ ‘5’ และ ‘?’ เปนตน

ขอความ(string literals) ประกอบดวยอกขระหลายตวอยในเครอหมาย “ ” เชน“Hello,” “Sawasdee” และ “ ”

Page 11: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตารางแสดงชนดของตวแปรตาง ๆ

ตวอยางท 1 int a ;หมายความวา ประกาศตวแปร a เปนตวแปรทใชสำาหรบเกบคาทเปนเลขจำานวนเตมทมคาอยระหวาง -35768 ถง 32767ตวอยางท 2 int num1=8;หมายความวา ประกาศตวแปร num1 เปนตวแปรทเกบคาตว

เลขจำานวนเตม โดยใหคาเรมตนเทากบ 8ตวอยางท 3 float money,price ;หมายความวา money และ price เปนตวแปรทใชสำาหรบเกบคาทเปนเลขทศนยม โดยจะใหตำาแหนงทศนยมไดไมเกน 6 หลกตวอยางท 4 char ch=’A’หมายความวา ประกาศตวแปร ch เปนตวแปรทเกบคาตวอกษร

เพยง 1 ตว คอ ตวอกษร ‘A’

ตวอยางท 5 unsigned long int test;หมายความวา ประกาศตวแปร test เปนตวแปรทใชสำาหรบเกบคาทเปนเลขจำานวนเตม แบบยาวทไมคดเครองหมาย

Page 12: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ถาเรากำาหนดคาของตวแปรไมถกตองเชน# include <iostream.h> main( ) {

unsigned int n;cin >> n ;cout << n << endl;

}

ใหนกเรยนใสคาเปน -8 ลองดผลลพธ

การเกดขอผดพลาด (Errors) ม 3 แบบ► ผดพลาดจากรปแบบหรอขอกำาหนดของภาษา(Syntax errors)

เชน ลมเครองหมาย “ ” หรอ {

► การตความหมายผด Semantic errors ถาม semantic error จะ สามารถรนโปรแกรมไดสมบรณ คอมพวเตอรไมสามารถตรวจพบ

ขอความผดพลาดใดๆ แต มนจะไมสามารถทำางานทถกตองได เนองจากต ความหมายของโปรแกรมผด การระบ semantic error

สามารถทำาไดยาก เชน area = 2*pi*radius สตรการหาพนทของวงกลม จรง ๆ แลว

ตองเปนarea = pi*radius*radius

► ความผดพลาดขณะรน (Run-time errors) เกดจากคำาสงไม สามารถประมวลผลได เชน

float b = 0; float c = 2/b; ตวหารไมสามารถเปน 0 ได

การหาความยาวของ string literal จะตอง include <string.h>

#include <iostream.h>#include <string.h>int main(){cout << strlen("Hello, World.\n") << '\n';cout << strlen("Hello, World.") << '\n';cout << strlen("Hello, ") << '\n';cout << strlen("H") << '\n';cout << strlen("") << '\n';return 0;}

ผลรน14

Page 13: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

13710

การกำาหนดคา จะใชเครองหมาย assignment ( = )

รปแบบ syntaxvariable = expression;

ตวอยางท 6#include <iostream.h> // An example to illustrate assignment:int main(){ int n; n = 66; cout << n << endl;}

ตวอยางท 7#include <iostream.h>// This shows how to initialize // variable as they are declared:int main(){ int george = 44; int martha =33; int sum = george + martha; cout << george << " + " << martha << " = " << sum <<

endl; return 0;}

ผลรน44 + 33 = 77

ตวอยางท 8#include <iostream>#include <string>using namespace std;int main (){ char letter1, letter2; string lastName;

Page 14: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

cout << "Enter 2 initials and last name: "; cin >> letter1 >> letter2 >> lastName; cout << "Hello " << letter1 << ". " << letter2 << ". "

<< lastName << "! "; cout << "We hope you enjoy studying C++." << endl; return 0;}

ตวอยางท 9#include <iostream.h>int main(){ int num1 = 200; cout<<num1<<endl; float num2 = 10.33745; cout<<num2<<endl; char letter = 'A'; cout<<letter<<endl; string message="THAILAND"; cout<<message<<endl;}

โอเปอเรเตอรทางคณตศาสตรอยางงายโอเปอรเรเตอร ความหมาย ตวอยาง

+ Add m + n- Subtract m - n- Negate -n* Multiply m * n

Page 15: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

/ Divide m / n% Remainder m % n

ตวอยางท 8#include <iostream.h> // Tests arithmetic operators:int main(){ int m = 38, n = 5; cout << m << " + " << n << " = " << (m + n) << endl; cout << m << " - " << n << " = " << (m - n) << endl; cout << " -" << n << " = " << (-n) << endl; cout << m << " * " << n << " = " << (m * n) << endl; cout << m << " / " << n << " = " << (m / n) << endl; cout << m << " % " << n << " = " << (m % n) << endl; return 0;}

ผลรน38 + 5 = 4338 - 5 = 33- 5 = - 538 * 5 = 1938 / 5 = 738 % 5 = 3

ลำาดบการทำางานของ โอเปอเรเตอรมดงน()   1+ -(คาบวก,คาลบ)  2* / %    3+ -(บวก,ลบ)  4

ใน 8 ชนดน วงเลบทำางานเปนอนดบแรก ตอดวย คาบวก คาลบ ไป จนถง บวก ลบ เปน ลำาดบสดทาย

 * / % มลำาดบการทำางานเทากน + - (บวก, ลบ) กมลำาดบการทำางาน เทากน โดยจะทำาจากซายไปขวาซงถาเจอ โอเปอเรเตอร ไหนกจะทำางานโอ

เปอเรเตอรนนกอน คาบวกและคาลบใชกบจำานวนเตมบวกหรอจำานวนเตมลบตามลำาดบ โดยท

คาบวกเราอาจไมตองใสกไดตวอยางท 9

#include"iostream.h"int main(){cout << "(5 + 7) * 3 = " << (5 + 7) * 3 << endl;

Page 16: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

cout << " 5 + 7 * 3 = " << 5 + 7 * 3 << endl;cout << " 5 * 7 + 3 = " << 5 * 7 + 3 << endl;cout << " 5 + 7 * 3 - 10 = " << 5 + 7 * 3 - 10 << endl;cout << " 5 + 7 * 3 / 2 = " << 5 + 7 * 3 / 2 << endl;cout << " 21 / 2 = " << 21 / 2 << endl;return 0;}

Output(5 + 7) * 3 = 36  5 + 7 * 3 = 26 5 * 7 + 3 = 38 5 + 7 * 3 - 10 = 16 5 + 7 * 3 / 2 = 15 21 / 2 = 10

อธบาย Source code

บรรทดท 4: เปนการสงใหพมพขอความ "(5 + 7) * 3 = " และกสงให แสดง ผลการคำานวณของ (5 + 7) * 3  ซง ผลลพธ คอ 36 โดยทได จากเอา 5 + 7 กอนไดผลลพธคอ 12 จากนน ไปคณกบ 3

บรรทดท 5: กคลายๆกบบรรทดท 4 แตเปลยนเปน 5 + 7 * 3 ผลลพธ คอ 26 สาเหตทได 26 เพราะวา โอเปอเรเตอร * มความสำาคญกวา โอ

เปอเรเตอร + โปรแกรมเลยทำาการคำานวณ 7 * 3 กอน ซงได 21 แลวก เอาไปบวก 5 จงได 26

บรรทดท 6: 5 * 7 + 3 ผลลพธ คอ 38 ซงกคำานวณตามแบบปกต บรรทดท 7: 5 + 7 * 3 –10 ผลลพธ คอ 16  ไดจากการเอา 7 ไปคณ

กบ 3 กอน ถงแมวาจะมการคำานวณ 5 +7 อยกอนกตามแต แตลำาดบ การทำางานของ โอเปอเรเตอร * ถอวา ตองทำากอน โอเปอเรเตอร +

บรรทดท 8: 5 + 7 * 3 / 2 ผลลพธ คอ 15 ไดมาจาก เอา 7 ไปคณ กบ 3 กอน ได 21 แลวคอยนำาไป / 2 ได 10 แลวจงนำาไปบวกกบ 5 ได

15 จะเหนไดวา 7 * 3 / 2  โปรแกรมจะไมทำาการ เอา 3 ไปหาร 2 กอน แลวคอยนำาไปคณกบ 7 เพราะวา * กบ / ถอวามลำาดบการทำางานเทากน

แต ในทน * มากอนโดยทการทำางานของโปรแกรมจะเรยงลำาดบจาก ซายไปขวา

บรรทดท 9: แสดงขอความแลวกผลลพธ ของ 21 / 2 ไดผลลพธ คอ10 เพราะการหาร โดยทเอาจำานวนเตมหารจำานวนเตม คำาตอบทไดจะเปน

จำานวนเตม โดยทจะไมมเศษ โอเปอเรเตอร increment และ decrement

เครองห การ ตวอย ความหมาย

Page 17: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

มาย ดำาเนนการ างการใชงาน

++ เพมคาทละหนง

(Increment)

y = ++x  บวกคาในตวแปร x เพมขน 1 กอนทจะกำาหนดคา x ใหกบตวแปร y

y = x++   กำาหนดคา x ใหกบตวแปร y กอนทจะบวกคาในตวแปร x เพมขน 1

-- ลดคาทละหนง

(Decrement)

y = --x   ลบคาในตวแปร x ลง 1 กอนทจะกำาหนดคา x ใหกบตวแปร y

y = x--   กำาหนดคาในตวแปร x ใหกบตวแปร y

กอนทจะลดคา x ลง 1

ตวอยางท 10Int x = 5, y = 5, z;main(){Z=++x; // บวกคาของ x ขน 1 กอนทกำาหนดคาให

z ดงนนx และ z มคาเปน 6

Z=y++; // กำาหนดคา y ให z กอนทจะบวกคากอนทจะบวก

คาy เพมขน 1 ดงนน z = 5 y = 6

}

ตวอยางท 11

Page 18: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

#include <iostream.h>int main(){ int m = 66, n; n = ++m; cout << "m = " << m << ", n = " << n << endl; n = m++; cout << "m = " << m << ", n = " << n << endl; cout << "m = " << m++ << endl; cout << "m = " << m << endl; cout << "m = " << ++m << endl; return 0;}

นพจนแบบ assignment รวม • ใช assignment รวมกบโอเปอรเรเตอรอน• syntax:

variable op= expression;• equivalent to

variable = variable op expression;• ตวอยางเชน

n += 8; => n = n+8;m %= 2 => m = m%2;

ตวอยางท 11#include <iostream.h>int main(){ int n = 44; n +=9; cout << n << endl; n -= 5; cout << n << endl; n *= 2; cout << n << endl; return 0;}

ผลรน534896

นพจนตรรกศาสตรนพจนตรรกศาสตรเปนนพจนทใหผลลพธเปนคาตรรกะ ( ไม true ก

เปน false) เปนนพจนทใชกำาหนดเงอนไขการทำางานของคำาสงควบคมoperator ทกระทำาใหเกดคาตรรกะ แบงออกเปน 2 ประเภท1. Relational Operators ไดแก

Page 19: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

Relational Operator ความหมาย Relational Operator ความหมาย == เทากน != ไมเทากน < นอยกวา <= นอยกวาหรอ

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

เทากบ

2. Logical Operators ไดแกLogical Operators ความหมาย

| | (OR) นพจนจะเปน true ถาคาของ operand ตวใดตวหนงหรอทงสองตวเปน true

&& (AND) นพจนจะเปน true ถาคาของ operand ทง สองตวเปน true

! (NOT) ใชเปน prefix เพอกลบคาของ operand เปนคา ตรงขาม

ตวอยางการใชงาน เชนa<3 ถา a มคาเปน 5 ประโยคนจะไดผลลพธเปน 0 (เทจ) a>b ถา a=10 b=8 ประโยคนจะไดผลลพธเปน 1 (จรง)

c == ‘A’ ถาตวแปร c เกบคาอกขระ A ผลลพธจะไดคาจรง k != -2 ถาตวแปร k –เกบคาตวเลข 2 ผลลพธจะได

คาเทจa&&ba และ b ถาคาความจรงของ a เปนจรง และ คาความ

จรง b เปนจรงผลลพธทไดจะมคาความจรงเปนจรงa || b a หรอ b ถาคาความจรงของ a เปนเทจ และ คาความ

จรง b เปนเทจผลลพธทไดจะมคาความจรงเปนเทจ

Page 20: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

แบบฝกหดบทท 2

1. กำาหนดตวแปรใหดงนInt num1=220;

Float num2=50.37

Char letter =’D’

Char Msg[6]=”satit”

String Msg1=”I love You”

1.1 จงเขยนคาของตวแปรทกตวโดยใหขนบรรทดใหม1.2 เขยนคำาสงใหแสดงผลบวก และ ผลหาร ของ num1 และ

num2

2. ใหนกเรยนเขยนโปรแกรม เพอแปลงคาจากหนวยฟต เปน นว (12 นว เปน 1 ฟต) โดยใหโปรแกรมรบคาจากผใชเปนฟต แลวแปลง

คาจากฟตเปนนว

3. ใหเขยนโปรแกรมเครองคดเงนทอนของรานคา โดยใหผใชกรอกราคาสนคาและจำานวนเงนทลกคาจายเขามาจากนนโปรแกรมจะทำาการ

คำานวณเพอหาจำานวนเงนทอน พรอมกบแสดงผลออกทางหนาจอ

บทท 3

Page 21: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

การเลอกทำา

คำาสงการเลอกทำางานตามเงอนไข คำาสง if

รปแบบ: if ( boolean expression) statementผลการทำางาน: สวน statement จะถกกระทำาถาหากวาคานพจนทอย

หลงคำาวา if มคาเปน true แตถานพจนดงกลาวมคา เปน false โปรแกรมกจะขามสวนทเปน statement นไป

หมายเหต: คำาสง statement เปนไดทง simple statement และ compound statement

ตวอยาง if (i == 1) cout << "i is one";

และif (i == 1) {

cout << "i is one";}

คำาสง if else

รปแบบ: if ( boolean expression) statement1 else statement2

ผลการทำางาน: จะมการทำางานตามคำาสง statement1 ถาคานพจนท อยหลงคำาวา if มคาเปน true มฉะนนกจะทำางานตาม

คำาสง statement2หมายเหต: - คำาสง statement เปนไดทง simple statement และ

compound statementตวอยาง if (i == 1)

cout << "i is one";else

cout << "i is not equal to one";และ

if (i == 1) {cout << "i is one";

} else {cout << "i is not equal to one";

} และ

if (i==1) {cout << "i is one";

} else if (i == 2) {cout << "i is two";

} else {cout << "i is not equal to one or two";}

Page 22: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 1#include <iostream.h>;void main(){ float point; cout << "Enter your examination points: "; cin >> point; if (point >= 50) cout << "You passed, congratulation\n" << endl;

}

ตวอยางท 2#include <iostream.h>;void main(){ float point; cout << "Enter your examination points: "; cin >> point; if (point >= 50) cout << "You passed, congratulation\n" << endl; else cout << "You didn't pass,Sorry\n" << endl;}

ตวอยางท 3// A program to calculate paychecks

Page 23: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

#include <iostream>

using namespace std;

void main(){ float hours, pay, rate, overtime; cout << "Enter hours and rate: "; cin >> hours >> rate; overtime = hours - 40; // employee working more than 40 hours receive overtime if (overtime > 0.0) pay = (40.0 * rate) + (overtime * 1.5 * rate); else pay = (hours * rate); cout << "pay is " << pay; if (overtime > 0.0) cout << " overtime worked" << endl; else cout << " no overtime worked" << endl;}

ผลรนEnter hours and rate: 46.0 6.25pay is 306.25 overtime workedEnter hours and rate: 38.0 6.25pay is 237.5 no overtime worked

Statement blocks • เราสามารถรวมกลมประโยคคำาสงภายใต if ดวย { }• Statements ภายในเครองหมาย { } จะทำางานเปนกลมคำาสง

เดยวกน• การใสเครองหมาย { } จะเปนการแบงกลมคำาสงใหอานงายขน• หลงคำาสง if else หากมหลาย statements ตองใส { } • ดตวอยางท 4

ตวอยางท 4#include <iostream>

Page 24: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

using namespace std;

void main(){ float hours, pay, rate, overtime; cout << "Enter hours and rate: "; cin >> hours >> rate;if (hours > 40) { overtime = hours - 40.0; pay = (40.0 * rate) + (overtime * 1.5 * rate); cout << " pay is " << pay << " overtime worked" << endl; } else { pay = (hours * rate); cout << "pay is " << pay << " no overtime worked" << endl; }}

Flow of if - else if statementif (expression1) { statement1;

statement2;}else if (expression2){ statement1;

statement2;}else if (expression3){ statement1; statement2;}else (expression..n){ statement.1;

statement2;}

ผงงาน โครงสรางการควบคม if แบบหลายทางเลอก

Page 25: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 5if ( grade >= 90 )cout << "A";else if ( grade >= 80 )cout << "B";else if ( grade >= 70 )cout << "C";else if ( grade >= 60 )cout << "D";elsecout << "F";

คำาสง if ซอน if (nested if)

คำาสง if ซอน if จะใชกบปญหาทมเงอนไขซบซอน อยางเชน กำาหนดวาตองเปนจำานวนคและมคาไมเกน 20 หรอ เงอนไขตองเปน

เพศหญงอายไมเกน 30 ป เปนตน ซงคำาสง if ซอน if กคอคำาสง

จรง

เทจ

จรง

จรง

เทจ

เทจ

คาของนพจนทดสอบท 1

กลมคำาสง 1

คาของนพจนทดสอบท 2

กลมคำาสง 2

...

คาของนพจนทดสอบท N

กลมคำาสง N

กลมคำาสง N+1

Page 26: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

if ตามปกต แตเรานำามาเขยนซอนกนมากกวา 1 ชน ซงมรปแบบการ เรยกใชงาน ดงน

if (condition-1) {

if (condition-2) {

... if (condition-n)

statement; }

}

ผงงาน โครงสรางการควบคม if ซอน if

ตวอยางท 6#include <iostream>main(){ int num;

cout<<“Enter your number : ”; cin>>num; if (num>=20)

{ if (num<=30)

คาของนพจนทดสอบท 1

คาของนพจนทดสอบท 2

...คาของนพจนทดสอบท N

ทำางานคำาสง

เทจ

จรง

เทจ

เทจ จรง

จรง

Page 27: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

{ if (num%2==1)

cout<<“Right number\n”; else

cout<<“Wrong number\n”; }

else cout<<“Large number\n”;

} else cout<<“Small number\n”;

}

ประโยคควบคม switch

ในการเขยนโปรแกรมภาษา C มประโยคควบคม switch ทชวยอำานวยความสะดวกในการเขยนโปรแกรมเพอสรางทางเลอกหลายทาง นอกเหนอจากกรณการใช if ดงกลาวมาแลว ประโยคควบคม switch มลกษณะการทดสอบเงอนไขกบคาคงท เพอสรางทางเลอก โดยจะทำาการทดสอบทละคา

รปแบบการใชคำาสง switchswitch(variable) {

case constant-1 :statement sequence;

break;case constant-2 :

statement sequence;

ผงงาน สำาหรบประโยคควบคม switch

ตรวจ สอบ

variable

ทำางานตามคำา สงของ case 1

ทำางานตามคำา สงของ case 2

ทำางานตามคำา สงของ case 3

ทำางานตามคำา สงของ

default

ตรงกบconstant-1

ตรงกบconstant-2

ตรงกบconstant-3

ไมตรงกบ

constant ใด

Page 28: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

break;...

case constant-n :statement sequence;break;

default : statement sequence;}

• variable : ตวแปรททำาหนาทควบคมการทำางานของคำาสง switch ซงจะเปนตวแปรชนด int, char โดยคาของตวแปรนถาตรงกบ

constant ทอยใน case ใดกจะทำาคำาสงทอยใน case นนนนเอง• constant-1, constant-2, ...constant-n : เปนเงอนไขทจะให

เลอกไปทำางานตามทตองการ โดยจะตองมคาเปนคาคงท ชนดint, char เทานน

• statement sequence : กลมของคำาสงทตองการใหทำางานตาม เงอนไขแตละ case

• break : เปนคำาสงสำาหรบออกจากการทำางานของ switch โดยให ออกจากบลอกของ case แลวไปทำาคำาสงทอยตอจาก switch

• default : ในกรณทคาของตวแปร variable ไมตรงกบคาของconstant ใน case ใดเลย ตวแปรภาษา C กจะมาทำางานตามคำาสง ใน default กอนทจะออกไปทำางานตามคำาสงอนทอยตอจาก

switch

ตวอยางท 7#include <iostream.h>)main(){ char grade;

cout<<"Enter your grade : "; cin>>grade;

switch (grade) { case 'A':

Page 29: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

cout<<"100 - 80 points\n"; break;

case 'B': cout<<"79 - 70 points\n"; break;case 'C': cout<<"“69 - 60 points\n"; break;case 'D': cout<<"59 - 50 points\n"; break;default : cout<<"49 - 0 points\n";}

}ผลการรนEnter your grade : C69 - 60 points

ตวอยางท 8#include <iostream.h>)main(){ char grade;

cout<<"Enter your grade : "; cin>>grade;

switch (grade) { case 'A':

cout<<"100 - 80 points\n"; case 'B':

cout<<"79 - 70 points\n";case 'C': cout<<"“69 - 60 points\n";case 'D': cout<<"59 - 50 points\n";default : cout<<"49 - 0 points\n";}

}

ผลการรนEnter your grade : C69 - 60 points59 - 50 points49 - 0 points

แบบฝกหดบทท 3

Page 30: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

1. จงเขยนโปรแกรม โดยใชคำาสง if หาเสนรอบวงและพนทของรป วงกลม ซงจะแสดงรายการใหผใชเลอกวาจะหาคาของเสนรอบวงหรอพนท

โดยรบคารศมของวงกลมเขามาคำานวณ โดยมผลแสดงดงน1. Circumference of the circle2. Area of the circle

Enter your choice 1 or 2 :………….

2. จงเขยนโปรแกรมโดยใชคำาสง If เพอทำาการตด grade ตามชวงของ คะแนนขางลาง โดยรบขอมล คะแนนสอบของ นกเรยน ทลงเรยน

วชา ดงน :- คะแนน

Grade 0-49

0 50-59

1 60-69

2 70-79

3 80-100 4

หากคาทปอนไมอยในชวงดงกลาวใหบอกวา Invalid

3. จากขอ 2 ใหใชคำาสง case

4. จงเขยนโปรแกรมโดยใชคำาสง case เพอสรางเมนใหคำานวณหาพนท ของวงกลม หรอหาเสนรอบวงโดยรบคาตวเลขรศมจากผใช

บทท 4การทำาซำา

Page 31: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

การทำาซำา การควบคมการทำางานโดยมคำาสงใหทำาซำา หรอการวนรอบ (loop)

ในภาษาซ ไดแก คำาสงWhile, do-while และ for ดงน

คำาสง Whileใหนกเรยนพจารณาโปรแกรมสำาหรบหาปรมาตรของทรงกลมเมอตองการ

ปอนรศมได 3 ครง#include <iostream.h>void main(){

float volume, radius; cout << "Enter a radius: ";

cin >> radius;volume = (4.0 / 3.0) * radius * radius * radius * 3.14;cout << "the volume is " << volume << endl;cout << "Enter a radius: ";cin >> radius;volume = (4.0 / 3.0) * radius * radius * radius * 3.14;cout << "the volume is " << volume << endl;cout << "Enter a radius: ";cin >> radius;volume = (4.0 / 3.0) * radius * radius * radius * 3.14;cout << "the volume is " << volume << endl;

}

ถานกเรยนตองการปอนรศมหลาย ๆ ครงแบบไมจำากดจะทำาอยางไร ในภาษาซจะมคำาสงเพอชวยใหมการทำาซำา ดวยการใชคำาสง While โดยจะเรมตรวจสอบเงอนไข ถาเปนจรงจะทำาตามคำาสง เมอเสรจจะวนกลบไปตรวจสอบใหมจนกวาเงอนไขจะเปนเทจจงจะทำาคำาสงถดไปรปแบบการเรยกใชงาน:while (expression){ statement1;; statement2; statement3;.. statement..n;}

statement จะทำางานซำาจนกระทง expression เปนเทจ

Page 32: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

แผนผงการทำางานแบบ While

โดยปกตแลวโปรแกรมสวนใหญจะถามการวนรอบจะแบงเปนวนรอบแบบไมทราบจำานวนรอบ และแบบวนรอบททราบจำานวนรอบทแนนอน ซงโปรแกรมทไมทราบจำานวนรอบทแนนอนจะกำาหนดใหโปรแกรมหยดเมอปอนคาใดคาหนง

ตวอยางท 1

#include <iostream.h>using namespace std;void main(){

float volume, radius;cout << "Enter radius values (-1 to stop): ";cin >> radius;while (radius > 0.0){volume = (4.0 / 3.0) * radius * radius * radius * 3.14;cout << "the volume is " << volume << endl;

cin >> radius;}

}

เราสามารถกำาหนดจำานวนการวนรอบทแนนอนไดดงตวอยาง โปรแกรมน จะทำาการคำานวณทงสนจำานวน 5 ครง เมอ คาตวแปร Count จาก 0 เพม

ขนครงละ 1 จนถง 4 เมอ count เปน 5 โปรแกรมจะหยดการทำางาน

Page 33: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 2#include <iostream.h>void main(){

float count;count = 0.0;while (count < 5.0){

cout << "HELLO" << endl;count = count + 1;

}}ผลรนHELLOHELLOHELLOHELLOHELLO

ตวอยางนใช count เปนตวกำาหนดคาของจำานวนรอบ โดย เพมคาขนทละ 1 เมอครบ 5 รอบ เงอนไขของ while จะเปนเทจ โปรแกรมจงหยด

ทำางาน โดยพมพคำาวา HELLO จำานวน 5 ครง

ตวอยางท 3#include <iostream.h>

void main(){

float number, sum;sum = 0.0;cout << "Enter a list of positive values (ending with -1.0): ";cin >> number;while (number > 0.0){

sum = sum + number;cin >> number;

}cout << " Sum is " << sum << endl;

}

ตวอยาง ท 3 น จะใหเรารบเขาขอมลทเปน คาบวก และเมอปอนคาเขาไป แตละครงคาทปอนจะนำาไปบวก และโปรแกรมจะหยดทำางานเมอเราปอน

คาทนอยกวา 0 เชน -1 เราสามารถปอนคาในลกษณะทเรยงเปนแถวโดยใชการเคาะเวนวรรค โดย

ยงไมกดแปน enter กได

Page 34: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 4#include <iostream.h>

void main(){

float number, sum;sum = 0.0;cout << "Enter a list of positive values (ending with -1.0): ";cin >> number;while (number > 0.0){

sum = sum + number;cin >> number;

}cout << " Sum is " << sum << endl;

}ผลรนEnter a list of positive values (ending with -1.0): 5.0 7.0 9.0

-1.0 Sum is 21

เราสามารถใสคาเขาไดตามจำานวนโดยเวนวรรค 1 เคาะ

เมอตองการใชหยดงานปอน -1 เพอใหเงอนไขเปนเทจ

ตวอยางท 5float done = 1.0;

float sum = 0.0;float value;cin >> value; // get the first valuewhile (done > 0.0){ sum = sum + value;

if (sum > 100.0) // check for sum limitdone = 0.0;

else{

cin >> value; // get next input valueif (value < 0.0) // check for sentinel

done = 0.0;else;

}}

Page 35: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

โปรแกรมนจะหยดทำางานเมอ คาทปอนเขาไปรวมกนเมอบวกกนไปเรอย ๆ แลวเกน 100 หรอ

คาทปอนเขาไปมคานอยกวา 0

ตวอยางท 6#include <iostream.h>void main(){

float N, count, power;cout << "Table of Powers " << endl;cout << "N 2 3 4 5 6" << endl;N = 1.0;while (N <= 5.0){ count = 2;

power =N;cout << N;

while (count <= 6.0){ power = power * N;

count = count + 1.0;cout << " " << power;

}cout << endl;N = N + 1.0;

}}ผลรนTable of Powers N 2 3 4 5 6 1 1 1 1 1 1 2 4 8 16 32 64 3 9 27 81 243 729 4 16 64 256 1024 4096 5 25 125 625 3125 15625

ตวอยางท 7#include <iostream>using namespace std;void main() { float A=0.0, B=0.0, C=0.0, D=0.0, F=0.0; float ave, sum, grade, grade_count; float ID;

float count;count =0.0;while (count < 3.0){ cin >> ID;

grade_count = 0.0;sum = 0.0;cin >> grade;while (grade > 0.0){ sum = sum + grade;

Page 36: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

grade_count = grade_count + 1;cin >> grade;

} ave = sum / grade_count; cout << "Average = " << ave << endl;

if (ave >= 90.0)A = A + 1.0;

else if (ave >= 80.0)B = B + 1.0;

else if (ave >= 70.0)C = C + 1.0;

else if (ave >= 60.0)D = D + 1.0;

else F = F + 1.0;count = count + 1;

}cout << "A " << A << ", B " << B << ", C " << C << ", D " << D << ", F " << F << endl;

}

ผลรน2345 89 88 76 91 79 -1Average = 84.63456 93 89 88 94 92 90 93 -1Average = 91.28574567 67 97 88 90 86 87 -1Average = 85.8333A 1, B 2, C 0, D 0, F 0

คำาสง do while

รปแบบdo

statementwhile ( expression );

เปนการทำางานตามคำาสง do กอนตรวจสอบเงอนไขของ While หากเปน จรงจะกลบไปทำาซำา จนกวา expression จะเปนเทจ

ถาใชงานแบบ do while โปรแกรมจะทำางานตามคำาสงวนรอบอยางนอย 1 ครง กอนทจะตรวจสอบเงอนไข

ตวอยางท 8#include <iostream.h>

main(){ int num=10;

Page 37: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

do{cout<<num<<"\t";num--;}while (num>=0);}

กรณทเงอนไขเปนเทจตงแตเรมตน ผลการทำางานจะเปนอยางไร เชน

ตวอยางท 9#include <iostream.h>

main(){ int num=-13;do{cout<<num<<"\t";num--;}while (num>=0);}

คำาสง for

รปแบบfor ( expr1 ; expr2 ; expr3 ) statement

• Expr1 เปนสวนกำาหนดคาเรมตนใหกบตวแปร• Expr2 เปนเงอนไขทกำาหนดขนเพอใหโปรแกรมวนรอบการทำางาน• Expr3 สวนททำาการเปลยนคาตวแปรใหเพมขนหรอลดลง

เชนfor (count=0; count < N; count = count + 1)

statement;

ตวอยางท 10#include <iostream.h>main(){int total=0;for (int i=1; i < 11; i++) { total = total + i; cout<<total<<"\t"; }}

ตวอยางท 11for (n=0; n < 3; n = n +1)

for (k=n; k < 3; k= k+1)

Page 38: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

cout << n << " " << k << endl;

ผลรน0 00 10 21 11 22 2

แบบฝกหดบทท 4

1. ใหนกเรยนเขยนโปรแกรม โดยใชคำาสง While เพอทายตวเลขโดยมผเลน 2 คน คนแรกจะเปนคนกำาหนดตวเลขขนมา สวนคนทสองจะเปนคนกรอกตวเลขเพอทายวาผเลนคนแรกเลอกเลขใด หากตวททายนอยกวาใหแสดงออกมาวา “too small” หากตวเลขททายมากกวาใหแสดงออกมาวา “too large” หากทายถกใหแสดงวา “correct” และจบการทำางานหมายเหต คำาสงทสงใหลางหนาจอคอ system(“cls”)หรอ #include <conio.h> แลวใชคำาสง clrscr()

2. ใหหาคาเฉลยของตวเลข 10 จำานวน ทรบเขามาจากผใชโดยใชคำาสง do while

3. ใหหาคาเฉลยของตวเลข 10 จำานวน ทรบเขามาจากผใชโดยใชคำาสง for

4. ใหเขยนโปรแกรมเพอตรวจสอบตวอกษรทรบเขามาจากผใช 10 จำานวน เพอตรวจสอบวามพยญชนะและสระอยางละกจำานวน ผลรน enter letter a-z: aeioudddddVowel(a e i o u)= 5other letter = 5

คำาสงในการรบตวอกษรจากแปนคยคอ getchar() ตอง #include <conio.h> กอน

Page 39: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

บทท 5 ตวแปรอารเรย (Array)

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

สามารถใชตวแปรอารเรย เพอเกบชดของขอมลชนดเดยวกนได

การประกาศคาตวแปรแบบ Array type name [size]

เชนfloat shirt_cost [7]

3.39 4.52 6.25 7.59 6.49 8.29 9.19

0 1 2 3 4 5 6

Index• รปแบบของตวแปรสามารถเปนได เชน s int, float, string,

char• ตำาแหนงอารเรยตวแรกอยท 0• ถาตวแปรอารเรยทกำาหนดมจำานวน N ตว, the ตวสดทายอยท

ตำาแหนง N-1•

cin >> shirt_cost[0] // input a cost into cell 0sum += shirt_cost[4] // add cell 4 into ‘sum’cout << shirt_cost[0]

Page 40: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

<< shirt_cost[1] // output the first two cellsshirt_cost[3] = 15.75 // set cell 3 to 15.75

ตวอยางการใชตวแปรอารเรยconst char answer[5] = { 'T', 'F', 'T', 'F', 'F‘ };int summary[5] = { 10, 14, 9, 11, 13 };string question[5] = { "Kennedy was a democrat", "Nixon was a democrat", "Carter was a democrat", "Bush was a democrat", "Ford was a democrat" };

int summary1[5] = { 10, 14, 9, 11, 13 };int summary2[5] = { 10, 14 };int summary3[] = { 10, 14, 9, 11, 13 };int summary4[] = { 10, 14 };

Summary1 10 14 9 11 13

Summary2 10 14 0 0 0

Summary3 10 14 9 1 13

Summary4 10 14

ตวแปรอารเรย 2 มต• รปแบบ

type name [n][m] ={กำาหนดตวแปรขอมลใหกบอารเรย} ตวอยางเชน

float metrix[2][3] = {15.2,26.3,14.5, 12.5,25.3,23.2};

FFTFT

131191410

answer

summary

Page 41: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 1#include <iostream.h>int year[5]={2001,2542,1999,2000,2521};main(){

cout<<year[2]<<endl; cout<<year[4]<<endl; year[0]=2545; cout<<year[0];

}

ผลรน199925212545

ตวอยางท 2 #include <iostream.h>float num [3][2]={20,25,

19,20, 35,10};

main(){

cout<<num[0][1]<<endl; cout<<num[2][0]<<endl; cout<<num[2][1]<<endl; cout<<num[0][0];

}ผลรน25351020

ตวอยางท 3#include <iostream.h>float num [5]={1,2};int x=0;main(){

while(x<5){ cout<<num[x]<<endl; x++;

}}ผลรน1200

Page 42: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 4#include <iostream.h>char sentence [22]="Welcome to my country";char word[9]={'T','H','a','i','l','a','n','d'};char wd[4]="tid";main(){

cout<<sentence<<endl;cout<<word<<endl;cout<<wd;

}ผลรนWelcome to my countryTHailandTid

ตวอยางท 5#include <iostream.h> int age[5],count;main(){

for(count=0; count<5; count++){cout<<"enter age"<<endl;cin>>age[count];

} cout<<"finish"; }enter age20enter age21enter age22enter age23enter age24finish

Page 43: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ตวอยางท 6 โปรแกรมหาคาเฉลยตวเลข 10 จำานวน#include <iostream.h>float num[10], total;int i=0;main(){

while(i<10){ cout<<"enter number"<<endl; cin>>num[i]; i++; }

for(i=0; i<10 ;i++) {total=total+num[i]; } cout<<"***result***"<<total<<endl; cout<<"Average ="<<total/10; }

ตวอยางท 7#include <iostream.h>int matrix[3][3],i,j;main(){

for (i=0; i<3;i++){

for(j=0; j<3 ;j++){

cout<<"enter number"<<endl;cin>>matrix[i][j];

} }

cout<<"matrix"<<endl; for (i=0; i<3;i++){

for(j=0; j<3 ;j++){

cout<<matrix[i][j]<<"\t"; } cout<<"\n";

}}ผลรนenter number1enter number1

Page 44: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

enter number1enter number2enter number2enter number2enter number3enter number3enter number3matrix1 1 12 2 23 3 3

แบบฝกหดบทท 5

1.ใหนกเรยนเขยนโปรแกรมแสดงตวเลข โดยเรยงตวเลข จาก 1-25

Page 45: c:\>debug - KKU Web Hosting · Web viewการต ดต งโปรแกรม ร จ กก บภาษา C ภาษา C เป นภาษาท เก าแก ถ

ในลกษณะของ metrix ดงน1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 25

2. ใหนกเรยนเขยนโปรแกรมเพอหาผลรวมของตวเลขชดละ 5 จำานวน เมอครบ 5 จำานวน แลวใหถามวา จะทำาตอหรอไม หากตอบ ใช ใหโปรแกรมกลบไปหาผลรวมเลข 5 จำานวนใหมอกครง จนกวาจะตอบ ไม

Enter number 25Enter number 25Enter number 25Enter number 25Enter number 25125Do anymore? Y วนกลบไปทำาใหมอกครง

3. จงเขยนโปรแกรมเพอเรยงลำาดบตวเลขจำานวนเตม 10 จำานวนทผใชงานกรอกเขามาโดยหาจำานวนทมคานอยทสดแลวแสดงผลทางหนาจอ4.จงเขยนโปรแกรมเพอหาคาของเมตรกซขนาด 2 x 2 โดยใหผใชกรอกตวเลขประจำาแตละตำาแหนงในเมตรกซ 2 x 2 เขามา จากนนโปรแกรมจะใชสตรคำานวณหาคาเมตรกซแสดงออกมาทางหนาจอ สตรการหาเมตรกซขนาด 2 x 2 คอ (a*d)-(c*b)

a bc d