Upload
mansuang1978
View
321
Download
0
Embed Size (px)
Citation preview
โครงสร างภาษาซเบ องต น
ใชส ำาหร บ Turbo C++ Version 3.0
โปรแกรมภาษาโปรแกรมภาษา ในการเขยนโปรแกรมคอมพวเตอร ดวย
ภาษาระดบตำาหรอระดบสง จะตองเปลยน ภาษานนใหเปนภาษาเครอง เพอใหเครอง
คอมพวเตอรทำางานได โปรแกรมตนฉบบ (Source Program)
โปรแกรมทเครองทำางานได (Executable Program)
การเขยนโปรแกรมดวยแอสเซมบล (ภาษาระดบตำา) เปนภาษาเครอง
ขนตอนการแปลงภาษาแอสเซมบลเป นภาษาเคร อง
โปรแกรมภาษาโปรแกรมภาษา การเขยนโปรแกรมดวยภาษาระดบสงเปน
ภาษาเครอง อนเทอรพรเตอร (Interpreter)
คอมไพเลอร (Compiler)
ขนตอนการแปลภาษาโปรแกรม
การเขยนโปรแกรมคอมพวเตอรใหทำางานไดตามเรา ตองการ ผเขยนโปรแกรมจะตองรวาจะใหโปรแกรม ทำาอะไร มขอมลอะไร และตองการอะไรจาก
โปรแกรม รวมทงรปแบบการแสดงผลดวย โดยทวไป จะมขนตอนการพฒนาโปรแกรม ดงน
การกำาหนดและวเคราะหปญหา การเขยนผงงานและซโดโคด การเขยนโปรแกรม การทดสอบและแกไขโปรแกรม การทำาเอกสารและบำารงรกษาโปรแกรม
ขนตอนพฒนาโปรแกรมขนตอนพฒนาโปรแกรม
ภาษาทเปนโครงสราง คำาสงประกอบดวยพจน (term) ซงจะมลกษณะเหมอน
กบนพจนทางพชคณต มสวนขยายเปนคำาหลก (keyword) ในภาษาองกฤษ
เชน if, else, for, do และ while สามารถใชงานในระดบตำา (low-level) ได
สามารถใชกบงานดานโปรแกรมระบบ (system programming) เชน เขยนโปรแกรมระบบปฏบตการ
(operating system) หรอใชกบงานทว ๆ ไป สามารถยายไปทำางานในเครองอนได
แนะนำาภาษาซแนะนำาภาษาซ
โครงสร างโปรแกรมภาษาโครงสร างโปรแกรมภาษาซซ
void main(void)
{
}
Statements ;
Local Declarations
Preprocessor directive
Global Declarations
main function
User define functions
User define functions
int function ()
{
}
Statements ;
Local Declarations
โครงสร างภาษาซประกอบ ดวยหลายสวน แตในการ
เข ยนไมจ ำาเป นจะต องเข ยนทกส วน
#include#include #define#define #undef #if
#ifdef #ifndef #else #elif
#endif #line #error #pragma
ทกโปรแกรมตองม ใชเรยกไฟลทโปรแกรมใชในการทำางานรวมกน ใชกำาหนดคาคงทใหกบโปรแกรม เรมตนดวยเครองหมาย ## ทเราจะใชกนม 2 directives คอ
#include ใชสำาหรบเรยกไฟลทโปรแกรมใชในการทำางาน
#define ใชสำาหรบกำาหนดมาโครทใหกบโปรแกรม
การใช การใช Preprocessor Preprocessor DirectiveDirective
การใช การใช #include#include
วธการใชงาน
ตวอยาง#include <stdio.h> ( เปนการเรยกใชไฟลstdio.h เขามาในโปรแกรม)#include <mypro.h> ( เปนการเรยกใชไฟลmypro.h เขามาในโปรแกรม)
#include <<ชอไฟล>> หรอ#include ““ชอไฟล””
< >< > จะเรยกไฟลใน directory ทกำาหนดโดยตวคอมไพลเลอร“ ”“ ” จะเรยกไฟลใน directory ททำางานอยในปจจบน
การใช การใช #define#define
#define ชอ คาทตองการวธการใชงาน
ตวอยาง#define START 10 ( กำาหนดคา START = 10)
#define A 3*5/4 ( กำาหนดคาA=3*5/4)
#define pi 3.14159 ( กำาหนดคา pi = 3.14159)
#define sum(a,b) a+b ( กำาหนดคา sum(ตวแปรท1, ตวแปรท2) = ตวแปรท1+ตวแปรท2
สวนประกาศ สวนประกาศ ((Global Global Declarations)Declarations)
เปนการประกาศตวแปรเพอใชงานในโปรแกรมโดยตวแปรนนสามารถใชไดในทกทในโปรแกรม
เปนสวนทใชในการประกาศ Function Prototype ของโปรแกรม
สวนนในบางโปรแกรมอาจจะไมมกไดตวอยาง
int summation(float x, float y) ; ( ประกาศ function summation)
int x,y ; ( กำาหนดตวแปรx,y เปนจำานวนเตม)
float z=3; ( กำาหนดตวแปรz เปนจำานวนจรง)
สวนประกาศ สวนประกาศ ((Global Global Declarations)Declarations)
ตวอยาง#include <stdio.h>
int feet,inches;
void main()
{
feet = 6;
inches = feet * 12;
printf("Height in inches is %d",inches);
}
Height in inches is 72Height in inches is 72
ผลการทำางาน
ฟงกช นหลกของโปรแกรม ฟงกช นหลกของโปรแกรม((Main Function)Main Function)
สวนนทกโปรแกรมจะตองม โดยโปรแกรมหลกจะเรมตนดวยmain() และตามดวยเครองหมายปกกาเปด ‘{’ และปกกาปด ‘}’
ระหวางปกกาจะประกอบไปดวยคำาสง(Statement) ตางๆ ทจะใหโปรแกรมทำางาน
แตละคำาสงจะตองจบดวยเซมโคลอน ‘;’ (Semicolon)
#include <stdio.h>void main(void){
...Statement ;
}
ฟงกช นหลกของโปรแกรม ฟงกช นหลกของโปรแกรม((Main Function)Main Function)
ตวอยาง#include <stdio.h>
int feet,inches;
void main()
{
feet = 6;
inches = feet * 12;
printf("Height in inches is %d",inches);
}
Height in inches is 72Height in inches is 72
ผลการทำางาน
การสร างฟงกช นใชงานเอง การสร างฟงกช นใชงานเอง((User Define Function)User Define Function)
#include <stdio.h>int function()void main(void){
...Statement ;
}int function(){
Statement ;...return (int value);
}
สรางฟงกชนหรอคำาใหม ขนมาใชงานตามทเราตองการ ระหวางปกกาจะประกอบดวยคำาสง(Statement) ตางๆ ทจะใหฟงกชนทำางาน
สามารถเรยกใชภายในโปรแกรมไดทกท
การสร างฟงกช นใชงานเอง การสร างฟงกช นใชงานเอง((User Define Function)User Define Function)
ตวอยาง#include <stdio.h>int Feet2Inch(int);int feet,inches;void main(){ feet = 6; inches = Feet2Inch(feet); printf("Height in inches is %d",inches);}int Feet2Inch(int f){ return f*12;} Height in inches is 72Height in inches is 72
ผลการทำางาน
การใชค ำาอธบาย การใชค ำาอธบาย((Program Comments)Program Comments)
การเขยนสวนอธบายโปรแกรม (comments) ทำาได 2 วธคอ
//// สำาหรบคำาอธบายไปจนถงทายบรรทด และ
/*/* คำาอธบาย */*/ ลกษณะการใชเหมอนวงเลบนนเอง
ใชเขยนสวนอธบายโปรแกรม (คอมเมนต) ชวยใหผศกษาโปรแกรมภายหลงเขาใจการทำางานของโปรแกรม
สวนของคำาอธบายจะถกขามเมอคอมไพลโปรแกรม
การใชค ำาอธบาย การใชค ำาอธบาย((Program Comments)Program Comments)
ตวอยาง#include <stdio.h> //// Change Feet to Inches
void main() //// main function
{ //// Start
int feet,inches;
feet = 6; //// feet 6
inches = feet * 12; //// inches feet * 12
printf("Height in inches is %d", inches);
//// write inches
} //// Stop
Height in inches is 72Height in inches is 72
ผลการทำางาน
การใช การใช printf()printf()
เปนคำาสงทใชในการแสดงผลออกทางจอภาพ โดยมรปแบบการใชงานดงน
printf(““controlcontrol หรอ format stringformat string””, variable listvariable list …);
control หรอ format string เป นส วนทใสข อความทจะแสดงผล และ
สวนควบคมล กษณะการแสดงผล รวมทงบอกตำาแหนงท ต วแปรจะแสดงผล
variable list เป นต วแปรทตองการจะแสดงผล ในกรณ
ทต องการแสดงขอความ ไมจ ำาเป นต องมสวนน
โปรแกรมท 1 สราง folder ชอ 517111/รหสนกศกษา สรางไฟล hello.c โดยใหพมพคำาวา hello world การใชงาน turbo c
พมพชอตวเองเพมอกหนงบรรทด
F2 SaveAlt+F9 CompileCtrl+F9 Compile & RunAlt+F5 Output
ตวอย างโปรแกรม
#include <stdio.h>
void main() { printf(“Hello world\n\n"); printf(“Welcome to Computer Programming 1"); return ;}
Hello world Welcome to Computer Programming 1
ผลการทำางาน
โปรแกรมBackslash n n
ขนบรรทดใหม
คำาแนะนำา
#include <stdio.h>
main ()
{ clrscr();
….
getch();}
เคลยรหนาจอ
โปรแกรม
รอรบคาจากคยบอรด
การใช การใช ControlControl ดวยดวย BackslashBackslash
จากตวอย างท 3 จะเหนไดวาหากตองการใหแสดง ผลขามบรรทดจะตองเพม \n ลงไป เรยกวา
backslash นอกจากนยงมตวอนๆ เชน\n\n ขนบรรทดใหม\t\t เวนระยะ 1 tab
\xhh\xhh ใสตวอกษร hh เมอ hh
เปนเลขฐานสบหก เชน 41 = 'A', 42 = 'B'
\a\a สงเสยงปบ\\\\ แสดง \\\"" แสดง "
ตวอย างโปรแกรม
#include <stdio.h>
main() { printf("%%dd %%5.2f5.2f %%ss", 12, 20.3, "Example");}
12 20.30 Example
โปรแกรม
ผลการทำางาน
%%d %%5.2f %%s คอ รหสควบคม
รหสควบคมล กษณะรหสควบคมล กษณะ (Format String)(Format String)
%d%d พมพจำานวนเตมฐานสบ%u%u พมพเลขไมมเครองหมาย%f%f พมพเลขทศนยม%e%e พมพในรปจำานวนจรงยกกำาลง%c%c พมพตวอกษรตวเดยว%s%s พมพชดตวอกษร (String)
%%%% พมพเครองหมาย %
%o%o พมพเลขฐานแปด%x%x พมพเลขฐานสบหก
ตวอย างโปรแกรม
#include <stdio.h>#define x 65main() { printf("%%d %%c %%o %%x\n", x, x, x, x); printf(“x = %d”, x);}
65 A 101 41X = 65
โปรแกรม
ผลการทำางาน
การจ ดการหนาจอดวยรหสการจ ดการหนาจอดวยรหสควบคมล กษณะควบคมล กษณะในกรณทตองการจดการหนาจอแสดงผลสามารถใช
ตวเลขรวมกนกบรหสควบคมได เชน%5d หมายถง แสดงตวเลขจำานวนเตม 5 หลก
อยางตำา%5.2f หมายถง แสดงตวเลขจำานวน จำานวน 5 หลกอยางตำา และ
ทศนยม 2 ตำาแหนงคา %d %5d
12 12 ___12
123 123 __123
1234 1234 _1234
12345 12345 12345
คา %f %5.2f
1.2 1.200000 _1.20
1.234 1.234000 _1.23
12.345 12.345000 12.35
123.456 123.456000 123.46
โปรแกรมท 2
สรางไฟล print.c โดย กำาหนด #define ดงตอไปน
จำานวนเตม X มคา 65 จำานวนจรง Y มคา 1.23456 ตวอกษร CH มคา ‘C’ ชดตวอกษร SU “มคา Silpakorn
university” พมพคาตางๆ ทกำาหนด ใหแสดงผลดงรป
X in decimal = 65 X in octadecimal = 101X in Hexadecimal = 41Y = 1.234Y = 1.23e+00
CH = %CSU = “Sipakorn
university”
การเกบคาในภาษา C
ทำาได 2 ลกษณะ คอ แบบคาคงท (Constant) แบบตวแปร (Variable)
การสรางตวแปร ตองรวาจะใชตวแปรเกบคาอะไร ประกาศตวแปรใหเหมาะสมกบคาทจะเกบ
ชนดของตวแปรหลกในภาษา C ตวแปรทใชเกบอกขระ (Character variable) ตวแปรทใชเกบเลขจำานวนเตม (Integer variable) ตวแปรทใชเกบเลขจำานวนจรง (Float variable)
การประกาศตวแปร
รปแบบของการประกาศตวแปร
int i; ประกาศ i ใหชนดเปนinteger
float realnum; ประกาศ realnum ให มชนดเปน float
char ch; ประกาศ ch ใหชนด เปน character
ชนดตวแปร ชอตวแปร ;
ชนดของตวแปร
ประเภทขอมล
คำาอธ บาย คาท เก บได ขนาด
(ไบต)
char ตวอ กษร 1 ตว -128 ถง 127 1
short ตวเลขจำานวนเตม -128 ถง 127 1
int ตวเลข
จำานวนเต ม
-32768 ถง32767 2
long ตวเลขจำานวนเตม -232 ถง 232-1 4
float ตวเลขทศนยม
3.4E+/-38 (7 ตำาแหนง) 4
double ตวเลขทศนยม
1.7E+/-308 (15 ตำาแหนง) 8
การประกาศตวแปรชนดเด ยวกน
เราสามารถ ประกาศตวแปรหลายๆต ว ท ม ชนดเด ยวก น โดยใชเพยงประโยค(statement) เดยวได โดยใชรป
แบบ 1. การประกาศทละต ว เชน
int i;
int j;
int k;
2. การประกาศพรอมกนหลายตว เชนint i, j, k;
การประกาศตวแปรพรอมใหค าเร มต น ในภาษา C ประโยค (statement) ของการ
ประกาศตวแปร สามารถกำาหนดคาเรมตนใหกบ ตวแปรไดทนท
โดยใชรปแบบ
เชน int i = 5;
ชนดต วแปร ชอ ตวแปร = คาเร มต น ;
นอกจากนยงสามารถประกาศ หลายๆ ตวแปรในบรรทดเดยว
กนไดอกเชน int i = 5, k = 3, y;
หลกการตงช อ หลกการตงช อ ((IdentifierIdentifier))
ชอ (Identifier)
ไอเดนตฟายเออร เปนชอทผใชกำาหนดขนใน โปรแกรม เชน ชอคาคงท ชอตวแปร ชอ
ฟงกชน เปนตน ตองขนตนดวยตวอกษรภาษาองกฤษ (ตวใหญหรอ
เลกกได) หรอขดลาง ‘_’ ตามดวยตวอกษรภาษาองกฤษ ตวเลข หรอขดลาง
(Underscore) ‘_’ ไมมชองวางหรอตวอกษรพเศษอนๆ เชน ‘!’, ‘@’,
‘#’, ‘$’, ‘%’, ‘^’ เปนตน ตวพมพใหญและเลกจะเปนคนละตวกนเชน NAME,
name, Name, NamE หามซำากบคำาสงวน Reserve Words ของภาษา C หามตงชอซำากบ Function ทอยใน Library ของ
ภาษา C
คำาสงวน คำาสงวน Reserve Words Reserve Words ของภาษา ของภาษา CC
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 While
asm _cs _ds _es
_ss cdecl far huge
interrupt near pascal _export
วธการสรางตวแปรและกำาหนดคา#include <stdio.h>void main (){
int age; char sex; f loat grade;
age = 20; sex = ‘ f ’ ; grade = 3.14;}
#include <stdio.h>void main (){
int age = 20; char sex = ‘ f ’ ; f loat grade = 3.14; char name[10] = “malee” printf(“you are
%s\n”,name); . ..}
a + b x = y c = a + b x == y ++i
นพจน
นพจนอาจประกอบดวย ตวแปร คาคงท การเร ยกใชฟ งก ช น หรอม ต วด ำาเน นการร วมอยก ได
ตวด ำาเนนการ
ลำาดบความสำาคญนอย
ลำาดบความสำาคญมาก�»n¤�°��ª�εÁ���µ¦· �ª�εÁ���µ¦·
�ª�εÁ���µ¦¥¼�µ¦¸· �¼�®µ¦Â³®µÁ«¬Á® º° �ª�³ � �ª�εÁ���µ¦Á�¦¥�Á�¥�· �ª�εÁ���µ¦Á�¥�Á�nµ· AND OR �ª�εÁ���µ¦Á�ºÉ°�Å�· �ª�εÁ���µ¦�ε®���nµ·
- ++ -- ! sizeof (type) * / %
+ - < <= > >=
== != && || ? :
= += -= *= /= %=
โปรแกรมท 3
สรางไฟล triangle.c โดยให รบคาฐานเปนเลขจำานวนจรง รบคาความสงเปนเลขจำานวนจรง คำานวนหาคาพนทของสามเหลยม
Area = ½ * ฐาน * สง
การใช การใช scanf()scanf()
เปนคำาสงทใชในการรบคา โดยมรปแบบการใชงานดงน
scanf(“format string”, address list …);
format string เป นสวนทใช ในการใสร ปแบบของการร บ
ข อมลaddress list
เป นตำาแหนงต ำาแหนงของตวแปรทต องการจะเกบข อมล
ตวอย างโปรแกรม
#include <stdio.h>
void main() { int x ;
scanf("%%d",&&x); printf("%%d %%c", x, x); return ;}
6666 B
6565 A
โปรแกรม
ผลการทำางาน
ตวอย างโปรแกรม
#include <stdio.h>
void main() { char s1[80], s2[80] ;
scanf("%%[0-9]%%[a-zA-Z]", s1, s2); printf("%%s %%s", s1, s2); return ;}
1234test1234 test
test1234 test
โปรแกรม
ผลการทำางาน
ตวอย างโปรแกรม
#include <stdio.h>
void main() { float b,h,area ; printf("Input Base = "); scanf("%%f",&&b); printf("Input Height = "); scanf("%%f",&&h); area = 0.5*b*h ; printf("Area of triangle is %%5.2f",area); return ;}
Input Base = 12.0Input Height = 6.0Area of triangle is 36.00
Input Base = 3.2Input Height = 1.2Area of triangle is 1.92
โปรแกรมท 4
สรางไฟล circle.c โดยให รบคารศมเปนเลขจำานวนจรง กำาหนดคาคงท PI มคา 3.14159 คำานวนหาคาพนทของวงกลม
Area = PI* (รศม)2
ตวอย างโปรแกรม
/* program to calculate area of a circle */#include <stdio.h>#define PI 3.14159main(){
float radius, area;printf(“Input Radius = ?");scanf("%f", &radius);area = PI * radius * radius;printf("Area of circle is %7.2f ", area);
}
Input Radias = 12.0Area of circle is 452.39
โปรแกรมท 5
สรางไฟล donut.c โดยให รบคารศมของวงกลม 2 วง กำาหนดคาคงท PI มคา 3.14159 คำานวนหาคาพนทของวงกลมสวนสเทา
ตวอย างโปรแกรม#include <stdio.h>#define PI 3.14159main() { float radius1,radius2, area1, area2; printf("Input outer radius ="); scanf(%f, &radius1); printf("Input inner radius ="); scanf(%f, &radius2); if (radius2 < radius1) { area1 = PI * radius1 * radius1; area2 = PI * radius2 * radius2; printf("Area of donut is %5.2f", area1-area2); }}
จบโครงสรางภาษาซเบองตน
Question ?Question ?
คำาถามเก ยวก บ คำาถามเก ยวก บ printf()printf()
yards = 8;feet = yards * 3;printf(“%d yards is \n”, yards);Printf(“%d feet”, feet);
จากสวนของโปรแกรม
8 yards is24 feet
ผลการทำางาน คอ ?
ตวอย างโปรแกรม
test1234test 1234
1234test 1234
ผลการทำางาน
#include <stdio.h>
void main() { char s1[80], s2[80] ;
scanf("%%[^0-9]%%[^a-zA-Z\n]", s1, s2); printf("%%s %%s", s1, s2); return ;}
โปรแกรม