อ.พิศิษฐ์ นาคใจ คณะ...
TRANSCRIPT
อ.พศษฐ นาคใจ
คณะวทยาศาสตรและเทคโนโลย
มหาวทยาลยราชภฎอตรดตถ
1
โครงสราง ภาษาซ
วตถประสงค
2
สามารถเขยนโปรแกรมภาษาซอยางงาย ๆ ได
สามารถแสดงขอความออกทางจอภาพได
สามารถแสดงขอมลชนดตางๆ ออกทางจอภาพได
สามารถก าหนดรปแบบการแสดงขอมลออกทางจอภาพได
สวนประกอบของภาษาซ
โครงสรางภาษาซแบงออกเปน 2 สวนคอ
1. Head โปรแกรม
2. Body โปรแกรม
Head โปรแกรม
สวนหวของโปรแกรม นบตงแตบรรทดแรกจนถงสวนทเปน main function
สวนหวโปรแกรมใชส าหรบเขยนค าสงพเศษบางอยาง กอนทจะเรมใหโปรแกรม
ท างาน
สวนประกอบ Head โปรแกรม
พรโปรเซสเซอรไดเรคทฟ -> ค าสงภาษาซพเศษ จะมเครองหมาย # อยดานหนา
ตวอยาง #include #define
- การประกาศตวแปร -> สวน Head สามารถประกาศตวแปรไดตวแปรทประกาศสวน
Head จะมลกษณะทเปน Gobal
#include
พรโปรเซสเซอร ทส าคญคอ #include ท าหนาท ดง Function ทเกยวของกบ
โปรแกรมมาใชงาน มการประกาศ 2 ลกษณะ
1. #include <ชอไฟล>
ตวอยาง
#include <stdio.h>
#include <math.h>
การใชเครองหมาย <> เพราะให ภาษาซคนหาไฟลจากแฟมทก าหนดไวกอน
#include2. #include “ชอไฟล”
ตวอยาง
#include “stdio.h”
#include “math.h”
การใชเครองหมาย “ ” หมายถงให ภาษาซคนหาไฟลทก าหนดใน แฟมปจจบนทโคด
เราเขยนอย
ตวอยาง
การสรางตวแปร
ส าหรบการสรางตวแปรทสวนหวของโปรแกรม สามารถสรางได แตโปรแกรมนนจะ
สามารถมองเหนไดทกๆ Function
วธการสรางตวแปร แสดงไดดงน
ชนดตวแปร ชอตวแปร;
ชนดตวแปร ชอตวแปร = คาเรมตนของตวแปร;
ตวอยาง
สวนของตวโปรแกรม
การเขยนโปรแกรมภาษาซ โปรแกรมจะเรมท างานท main Function เปนสวน
แรกและกระท าค าสงภาษาซทถกเขยนขน รปแบบค าสงแบบออกเปน 2 รปแบบ
- ค าสงเดยว คอค าสงทมเพยงค าสงเดยว เพอท างานอยางใดอยางหนง
- ฟงกชน คอชดค าสงเดยวหลายๆ ค าสง รวมไวเปนบลอคของค าสง
ค าสงเดยว
เปนค าสงทมเพยงค าสงเดยว เพอท างานอยางใดอยางหนงเทานน ตวอยางเชน
int a = 7;
float b = 3.0;
c = a+b;
a = b*c;
ฟงกชน หรอ Block ของค าสง
เปนการน าค าสงหลายๆ ค าสงมาเขยนรวมกนไวเปน Block ของค าสง block
ของค าสงจะมเครองหมาย วงเลบปกกาเปด และ วงเลบปกกาปดบอกขอบเขตของ
ชดค าสง
ตวอยาง
รปแบบการเขยนค าสงภาษาซ
การเขยนค าสงภาษาซ จะตองเขยนใหถกตองตามขอก าหนดของภาษาดงน
ค าสงในภาษาซ จะตองใชตวอกษรตวเลก เชน printf();
ทกค าสงตองลงทายดวยเครองหมาย ;
โครงสรางโปรแกรมภาษาซ (1)
14
#include<ชอไฟลชดค าสงภายนอก (library).h>type variable;int main(){
type variable;statement ท 1;...statement ท n;return 0;
}
พรโปรเซสเซอรไดเรคทฟ
ตวแปรชนดโกบอล
ฟงกชนหลก สวนตวโปรแกรม
สวนหวโปรแกรม
ตวแปรชนดโลคอล
ชดค าสง
ฟงกชนหลก
15
ฟงกชนหลกเปนฟงกชนทโปรแกรมภาษาซตองมอยเสมอ เพราะคอมไพเลอรของภาษาซจะเรมตนการท างานจากฟงกชนหลก
ตวอยางการเขยนฟงกชนหลกทไมมการท างานใดๆ
int main(void){
return(0);}
int main(){
return 0;}
กฎเกณฑการใชค าสงในภาษาซ
16
ใชเครองหมาย semi colon ; เปนจดสนสดค าสง
ใชอกษรตวเลกส าหรบเรยกใชค าสง (statement)
ใชเครองหมาย comma , ส าหรบคนตวแปร และพารามเตอร
หากค าสงใดมค าสงสวนยอยภายในหลาย ๆ ค าสง ใหใชเครองหมายปกกา { } ส าหรบก าหนดขอบเขต
การแสดงผลดวยค าสง printf
17
การเขยนโปรแกรมจ าเปนตองมการแสดงผล เพอใหผใชงานทราบวาโปรแกรมสามารถท างานอะไร จ าเปนตองปอนคาอะไรบาง และเมอโปรแกรมท างานเสรจ ผลลพธทไดเปนอยางไร
ค าสงทใชส าหรบการแสดงผลในภาษาซมหลายค าสง แตทสามารถใชงานไดครอบคลมและนยมใชกน คอ ค าสง printf
รปแบบของค าสง printf
18
format-string คอรปแบบของขอความซงจะประกอบดวย ขอความธรรมดา, คารหส ASCII และ สวนแสดงชนดขอมล โดย format-string จะอยในเครองหมาย Double quote " "
data-list คอชอขอมล หรอตวแปรทจะท าการแสดงผลตามสวนแสดงชนดขอมลใน format-string
printf (format-string, data-list);
หมายเหต ค าสง printf ตองเรยกใช Preprocessor Directive #include<stdio.h>
ตวอยางการใชงานค าสง printf ทไมถกตอง
19
int main()
{
printf ("Hello World!");
return 0;
}
ตวอยางการใชงานค าสง printf ทถกตอง
20
#include<stdio.h>
int main()
{
printf ("Hello World!");
return 0;
}
Hello World!
รปแบบของขอความในค าสง printf
21
ขอความธรรมดา เปนสวนทแสดงตวอกษร ตวเลขออกโดยตรง
คารหส ASCII เปนสวนทควบคมรปแบบการแสดงผล เชน การจดยอหนา การขนตนบรรทดใหม เปนตน
สวนแสดงชนดขอมล เปนการก าหนดรปแบบของชนดขอมลทจะแสดงผลขอมล หรอตวแปร สวนแสดงชนดขอมลแบบปกต สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล
ขอความธรรมดา
22
การแสดงขอความธรรมดาเปนการใชค าสง printf ใหแสดงขอความทตองการออกทางจอภาพ โดยจะอยในสวนของ format-string ในค าสง (อยในเครองหมาย Double quote " ")
เชน ค าสงในตวอยางโปรแกรมทผานมา
จะท าการแสดงขอความ Hello World! ออกทางจอภาพหลงจากสง Run โปรแกรม
printf (format-string, data-list);
printf ("Hello World!");
ตวอยางการใชงานค าสง printf หลายๆค าสง
23
Hello World!
This is my first Program.
I am a programmer.
Hello World!This is my first Program.I am a programmer.
#include<stdio.h>
int main()
{
printf ("Hello World!");
printf ("This is my first Program.");
printf ("I am a programmer.");
return 0;
}
คารหส ASCII
24
คารหส ASCII เปนอกขระพเศษทใชงานในภาษาซ ซงใชควบคมการแสดงผลในค าสง printf ในสวนของ format-string
คารหส ASCII การใชงาน\t เวนชองวางทก 1 แทป (8 ชองตวอกษร)
\n ขนบรรทดใหม
\0 เปนอกขระวาง
\' แสดง single quote ออกทางจอภาพ
\" แสดง double quote ออกทางจอภาพ
\\ แสดง backslash ออกทางจอภาพ
ตวอยางการใชงานค าสง printf โดยใชคารหส ASCII
25
#include<stdio.h>int main(){
printf ("Hello World!\n");printf ("This is my first Program.");printf ("\n\tI\'m a programmer.");return 0;
}
Hello World!This is my first Program.
I'm a programmer.
สวนแสดงชนดขอมล
26
ในการเขยนโปรแกรมทมการประยกตขน เชนโปรแกรมค านวณเลข จะตองมการแสดงผลลพธของคาทท าการค านวณ ซงค าสง printf สามารถแสดงผลคาตวแปรได แตจะตองเขยนโปรแกรมใหมความสมพนธกนในสวนของ format-string และ data-list
โดยทใน format-string จะมสวนแสดงชนดขอมล และใน data-list จะมขอมล หรอตวแปรทจะแสดงผล
printf (format-string, data-list);
การก าหนดสวนแสดงชนดขอมลแบบตางๆ
สวนแสดงชนดขอมล การใชงาน%d แสดงผลขอมลชนดจ านวนเตม%u แสดงผลขอมลชนดจ านวนเตมบวก (ไมคดเครองหมาย)%o แสดงผลขอมลเปนเลขฐานแปด%x แสดงผลขอมลเปนเลขฐานสบหก%f แสดงผลขอมลชนดจ านวนทศนยม (6 ต าแหนง)%e แสดงผลขอมลเปนจ านวนทศนยมและอยในรปยกก าลง%c แสดงผลขอมลชนดอกขระ%s แสดงผลขอมลชนดขอความ%p แสดงผลขอมลชนดตวชต าแหนง
27
ตวอยางการใชงานค าสง printf แสดงผลขอมล
28
#include<stdio.h>int main(){
printf ("My name is : %s\n",“Pisit");printf ("My point : %d\n",10+40+49);printf ("Grade : %c\n",'A');printf ("GPA : %f",3.99);return 0;
}
My name is :KmitlMy point : 99Grade : AGPA : 3.990000
การก าหนดรายชอตวแปรในค าสง printf
29
การแสดงผลตวแปรโดยใชค าสง printf สามารถใชงานโดยการใสขอมล หรอชอตวแปรในสวนของ data-list
หากไมตองการแสดงผลตวแปร ไมตองมสวนของ data-list
หากตองการแสดงผลขอมล หรอตวแปรมากกวาหนงตวในค าสงใหใช เครองหมาย comma , ส าหรบคนชอตวแปร โดยจะท าการแสดงผลตามล าดบตวแปร และสวนการแสดงชนดขอมล
รายชอตวแปรในค าสง printf
30
printf ("...%?...", data);
printf ("%? %? ... %?", data-1, data-2, ..., data-n);
...data...
data-1 data-2 ... data-n
printf ("...%d...",19);
...19...
printf ("%d-%d-%d",19,1,1980);
19-1-1980
ตวอย
างตว
อยาง
ตวอยางการใชงานค าสง printf แสดงผลขอมลหลายตว-1
31
#include<stdio.h>int main(){
printf ("Age = %d, GPA = %f\n",17,3.75);printf ("Programming: %f\nMechanics: %f",4.0,3.5);return 0;
}
Age = 17, GPA = 3.750000Programming: 4.000000Mechanics: 3.5000000
ตวอยางการใชงานค าสง printf แสดงผลขอมลหลายตว-2
32
#include<stdio.h>int main(){
printf ("Subject : %s(%d)\n","Programming",2554);printf ("Point : %d\nGrade : %c",99,'A');return 0;
}
Subject : Programming(2552)Point : 99Grade : A
สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล (1)
33
เปนการจองพนทหนาจอจ านวน m ตวอกษร แลวแสดงผล data ชดดานขวาของพนทสวนทจองไว โดยชนดขอมลตาม ? (หากความยาวเกนสวนทจองไวกจะเลอนออกไป)
เปนการจองพนทหนาจอขนาด m ตวอกษร แลวแสดงผล data ชดดานซายของพนทสวนทจองไว โดยชนดขอมลตาม ?
printf ("%m?",data);
printf ("%-m?",data);
ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-1
34
#include<stdio.h>int main(){
printf ("123456789012345678901234567890");printf ("\n%20d*",46);printf ("\n%-20d*",46);printf ("\n%3d*",46);printf ("\n%3d*",2550);return 0;
}
ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-2
35
#include <stdio.h>int main(){
printf ("123456789012345678901234567890");printf ("\n%20c*",'c');printf ("\n%-20c*",'c');printf ("\n%10s*","Pro");printf ("\n%10s*","Programming");return 0;
}
สวนแสดงชนดขอมลทก าหนดรปแบบการแสดงผล (2)
36
เปนการก าหนดใหแสดงจ านวนทศนยม n ต าแหนง ส าหรบ %f หรอแสดงอกขระจ านวน n ตว ส าหรบ %s
เปนการจองพนทหนาจอขนาด m ตวอกษรแลวแสดงผล data จ านวนทศนยม n ต าแหนง ส าหรบ %f หรอแสดงอกขระจ านวน n ตว ส าหรบ %s
printf ("%.n?",data);
printf ("%m.n?",data);
ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-3
37
printf ("123456789012345678901234567890");printf ("\n%20s*","programming");printf ("\n%-20s*","programming");printf ("\n%.3s*","programming");printf ("\n%20.3s*","programming");printf ("\n%-20.3s*","programming");
ตวอยางการใชงานค าสง printf โดยมการก าหนดรปแบบ-4
38
printf ("123456789012345678901234567890");printf ("\n%20f*", 1234.56789);printf ("\n%-20f*", 1234.56789);printf ("\n%.3f*", 1234.56789);printf ("\n%20.3f*", 1234.56789);printf ("\n%-20.3f*", 1234.56789);
ค าอธบายโปรแกรม Comment
39
ค าอธบายโปรแกรมเปนสวนทเพมในโปรแกรมเพอชวยใหผทเขยน หรอผทอานโปรแกรมสามารถเขาใจกบตวโปรแกรมไดงายขน
โดยทค าอธบายโปรแกรมนจะไมมผลตอการท างานของโปรแกรม คอเวลาทท าการคอมไพล จะขามขอความทอยในสวนอธบายโปรแกรมไป
รปแบบค าอธบายโปรแกรม
40
/* Comment Sentence 1Comment Sentence 2...Comment Sentence n */
/* Comment Sentence */
// Comment Sentence
แบบฝกหด
41
ใหนกศกษาเขยนโปรแกรมแสดงชอ และ นามสกล ออกทางจอภาพ โดยใหชอ และ
นามสกลอยคนละบรรทดกน
ใหท าการเขยนโปรแกรมโดยใหผลการท างานแสดงรปดอกจนทรเรยงตวเปน
ตวอกษรชอเลนของนสตเอง
หาผลลพธของชดค าสงตอไปนprintf("%d\n", 1668); >> 1668printf("%.2f\n", 1668.258); >>1668.26printf("%.3f\n", 1668.258); >>1668.258printf("%.3f\n", "1668.258");printf("%+d\n", 422);printf("%04d\n", 422);printf("%s \n", "I\'m eager to go to the next page");
printf("2 + 2 = %d", 4);printf("%d + %d = %d", 2, 3, 5);
หาผลลพธของชดค าสงตอไปน printf ("Characters: %c\n", 'a');
printf ("Decimals: %d %d\n", 1977, 6500000000);printf ("Preceding with blanks: %7d \n", 1977);printf ("Preceding with zeros: %07d \n", 1977);printf ("Base number: %d %x %o\n", 427, 427, 427);printf ("%s \n", "123 in this text is a String not a number");
เขยนโปรแกรมใหแสดงผลลพธดงน
1.>> '\n' is a New line character.
2.>> Line1
Line2
Line3