740 likes | 952 Views
1. โครงสร้างการเขียนโปรแกรมและอัลกอริทึม ขั้นตอนการพัฒนาซอฟแวร์ ปัญหาและอัลกอริทึม ขั้นตอนการวิเคราะห์ปัญหา การเขียนอัลกอริทึมและเทคนิคการนำเสนอ. ระบบคอมพิวเตอร์. Hardware Software Data. ภาษาของคอมพิวเตอร์. ภาษาระดับต่ำ ( Low-level Language) Machine Code Assembly Language
E N D
1. โครงสร้างการเขียนโปรแกรมและอัลกอริทึม ขั้นตอนการพัฒนาซอฟแวร์ ปัญหาและอัลกอริทึม ขั้นตอนการวิเคราะห์ปัญหา การเขียนอัลกอริทึมและเทคนิคการนำเสนอ
ระบบคอมพิวเตอร์ • Hardware • Software • Data
ภาษาของคอมพิวเตอร์ • ภาษาระดับต่ำ (Low-level Language) • Machine Code • Assembly Language • ภาษาระดับสูง • Basic (Beginners All-purpose Symbolic Instruction Code) • FORTRAN (FORmula TRANslation) • COBOL(Common Business Oriented Language) • …
ระบบไมโครคอมพิวเตอร์ทั่วไประบบไมโครคอมพิวเตอร์ทั่วไป
หน่วยความจุ • “1” หรือ“0”= 1 Bit • 8 Bit = 1 Byte • 1024 Bit = 1 KByte • 1024 KByte = 1 MByte • 1024 MByte = 1 GByte • 1024 GByte = 1 TByte etc.
ตัวแปร(Variables) • หมายถึง ชื่อที่ใช้เก็บค่าที่เป็นจำนวนเลขหรือสายอักขระ (string) ใช้ในการเขียนโปรแกรมคอมพิวเตอร์ ค่านี้จะแปลเปลี่ยนไปในระหว่างที่เครื่องดำเนินการตามโปรแกรม เป็นต้นว่า ชื่อที่ใช้เก็บ อินพุทจากคีย์บอร์ดที่เปลี่ยนค่าไปตามการกดแป้นคีย์ หรือเก็บค่าที่มีการเปลี่ยนแปลงเพิ่มขึ้นหรือลดลงจากการคำนวณวงวนหลายรอบ
การตั้งชื่อตัวแปร โปรแกรมแมทแลป มีหลักการการตั้งชื่อ ตัวแปร ฟังก์ชันและซับฟังก์ชัน ชื่อโครงสร้างฟิลด์ ออฟเจค M-file, MEX-fileและMDL-fileดังนี้ 1.ขึ้นต้นด้วยตัวอักษรเท่านั้น หลังจากนั้นตามด้วยตัวเลขก็ย่อมได้ 2.ควรตั้งชื่อเป็นภาษาอังกฤษเท่านั้น ไม่ว่าจะเป็นชื่อตัวแปร หรือชื่อแฟ้มข้อมูล 3.ห้ามใช้สัญลักษณ์เป็นส่วนประกอบของชื่อ ยกเว้น “_” (Underscore) 4.หลีกเลี่ยงการเว้นวรรคระหว่างชื่อ 5.ตั้งชื่อยาวได้ ไม่เกิน 63 ตัว (ลองใช้คำสั่ง namelengthmax)
6.ตัวแปรชื่อเดียวกัน หากชื่อประกอบด้วยตัวพิมพ์ใหญ่-เล็ก จะถือว่าเป็นตัวแปรคนละตัวกันเช่น Items, items, itemsและ ITEMS จะถือว่าเป็นตัวแปรคนละตัวกัน 7.ใช้ตัวพิมพ์ใหญ่-เล็ก ผสมกันได้ แต่ต้องระวังเมื่อเวลาเรียกใช้งาน ต้องถูกต้องชื่อที่ตั้งต้องไม่ซ้ำกับ keyword หรือคำสงวน (Reserveword) ดังนี้ (ลองใช้คำสั่งiskeyword และ help iskeyword) breakcasecatchcontinueelseelseifendforfunction globalifotherwisepersistentreturnswitchtrywhile 8. หลีกเลี่ยงการตั้งชื่อที่ซ้ำกับชื่อของฟังชันเดิมที่มีอยู่ในโปรแกรมแมทแลปทั้งที่มีมาให้ กับส่วนที่สร้างเอง ผู้ใช้สามารถตรวจสอบเพื่อแน่ใจว่าชื่อตัวแปรที่ตั้งขึ้น ผิดกฎการตั้งชื่อ หรือซ้ำกับชื่อตัวแปรเดิมที่มีอยู่หรือไม่ได้โดยใช้คำสั่ง isvarname เช่น ตัวอย่างต่อไปนี้ แสดงว่า ตัวแปรชื่อ 8thColumn ไม่สามารถใช้เป็นตัวแปรได้ เนื่องจากขึ้นต้นด้วยตัวเลข >> isvarname 8thColumn ans = 0
9.พยายามหลีกเลี่ยงการใช้ชื่อตัวแปร iและjในการคำนวณเกี่ยวกับจำนวนเชิงซ้อน เนื่องจากตัวอักษรiและ j ซ้ำกับตัวอักษรที่ใช้ในส่วนจินตภาพ (Imaginary part)ของจำนวนเชิงซ้อน ซึ่งอาจทำให้ การคำนวณผิดพลาด
วิธีการเขียนโฟล์วชาร์ทวิธีการเขียนโฟล์วชาร์ท • ใช้ลูกศรแสดงทิศทางขั้นตอน • ใช้ภาษาอธิบายและเข้าใจง่าย • เขียนจากบนลงล่าง • กรณีเต็มหน้ากระดาษ ให้เริ่มแถวใหม่จากซ้ายไปขวา • เมื่อทิศทางอินพุทเอาท์พุทมาบรรจบกัน ต้องใช้ Connector • กรณีไม่สามารถเชื่อมต่อไปยังจุดที่ต้องการได้ให้ใช้ สัญญาลักษณ์ อ้าง • เริ่มต้นด้วย Start และจบด้วย End เสมอ
เขียนจาก บน-ลง-ล่าง ซ้าย-ไป-ขวา
% โปรแกรมทดสอบโครงสร้างแบบมีเงื่อนไข % //////// IF STRUCTURE //////// clc; y=9; if y>10 % เงื่อนไข fprintf('You are very beautyful'); %โมดุล end if y<10 % เงื่อนไข fprintf('You are very HANSUME'); %โมดุล end
กำหนดการเทียบเกรดกับระดับคะแนนกำหนดการเทียบเกรดกับระดับคะแนน คะแนน 80-100 เกรด A คะแนน 75-79 เกรด B+ คะแนน 70-74 เกรด B คะแนน 65-69 เกรด C+ คะแนน 60-64 เกรด C คะแนน 55-59 เกรด D+ คะแนน 50-54 เกรด D คะแนน 0-49 เกรด E
คำสั่งinput Format 1). R = input('How many apples') 2). R = input('What is your name','s')
คำสั่ง input %////// คำสั่งอินพุท ////// clc clear all Radius=input('กรุณาใส่รัศมีของวงกลม: เซนติเมตร'); Area=2*pi*Radius; fprintf('รัศมี = %2.2f เซนติเมตร \n',Radius); fprintf('พื้นที่วงกลม = %2.2f เซนติเมตร \n',Area); clear all;
fprintf fprintf('A unit circle has circumference %g.\n',2*pi) fprintf(1,'It''s Friday.\n') fprintf(1,'It's Friday.\n') fprintf('รัศมีของวงกลม วงกลมวงนอก:=%5.2f cm วงกลมวง.o:=%5.2f cm\n',BigRadius,SmallRadius);
B = [8.8 7.7; 8800 7700] fprintf(1,'X is %6.2f meters or %8.3f mm\n',9.9,9900,B) a = [6 10 14 44]; fprintf('%9X\n',a + (a<0)*2^32)
Conversion Characters • Conversion characters specify the notation of the output. • Specifier • Description • %c Single character • %d Decimal notation (signed) • %e Exponential notation (using a lowercase e as in 3.1415e+00) • %E Exponential notation (using an uppercase E as in 3.1415E+00) • %f Fixed-point notation • %g The more compact of %e or %f, as defined in [2]. • Insignificant zeros do not print.
Conversion Characters • %G Same as %g, but using an uppercase E • %i Decimal notation (signed) • %o Octal notation (unsigned) • %s String of characters • %u Decimal notation (unsigned) • %x Hexadecimal notation (using lowercase letters a-f) • %X Hexadecimal notation (using uppercase letters A-F)
พิมพ์ CHARACTER(Single character) • %c ตัวอักษรตัวเดียว เช่นY, N, M, W, F, L พิมพ์ status = input('If true please press Y ...','s'); fprintf(1,'you press %c Key \n’,status); เครื่องตอบ >>If true please press Y ...Y >>you press Y Key
รูปแบบการแสดงผลแบบExponentialรูปแบบการแสดงผลแบบExponential • %eตัวเลขที่มีรูปแบบเป็น 3.1415e+00 พิมพ์ A=126598.561; fprintf(1,'X is %e Kilograms \n',A); X is 1.265986e+005 Kilograms • %Eตัวเลขที่มีรูปแบบเป็น 3.1415E+00 พิมพ์ A=126598.561; fprintf(1,'X is %E Kilograms \n',A); X is 1.265986E+005 Kilograms
Fixed-point %f >> A=126598.565; >> fprintf(1,'X is %f Kilograms \n',A); X is 126598.565000 Kilograms >>fprintf(1,'X is %2.2f Kilograms \n',A); X is 126598.57 Kilograms >> A=98.565; fprintf(1,'X is %10.2f Kilograms \n',A); X is 98.57 Kilograms
%g The more compact of %e or %f, as defined in [2]. >> A=598.565; fprintf(1,'X is %g Kilograms \n',A); X is 598.565 Kilograms >> A=0; fprintf(1,'X is %g Kilograms \n',A); X is 0 Kilograms >> fprintf(1,'X is %f Kilograms \n',A); X is 0.000000 Kilograms
การ save ตัวแปรลงแฟ้ม • x = 'Seri Pansang'; • fid = fopen('seri.txt','w'); • fprintf(fid,'%s\n',x); • fclose(fid)
การเก็บข้อมูลลงแฟ้ม • save • save filename • save filename var1 var2 ... • save ... option • save('filename', ...) helpdesk search type : function name search for : keyword function
การบันทึกข้อมูล Save อย่างเดียวไม่มีอะไรตามหลัง หมายถึง เก็บตัวแปรทั้งหมดลงแฟ้มmatlab.mat โดยอัตโนมัติ save filename เช่น save data หมายถึง เก็บตัวแปรทั้งหมดลงแฟ้มชื่อdata.mat save filename var1 var2 ... เช่นsave data erasers, pads, tape หมายถึง เก็บตัวแปรerasers, pads, tape ลงแฟ้มชื่อ data.mat
กำหนด path ที่จะนำข้อมูลไปเก็บได้ • To save the variables vol and temp in ASCII format to a file named june10, type save('d:\mymfiles\june10','vol','temp','-ASCII')
คำสั่ง load • Load workspace variables from disk Syntax • load • load filename • load filename X Y Z • load filename -ascii • load filename -mat • S = load(...)
โครงสร้างโปรแกรมพื้นฐานโครงสร้างโปรแกรมพื้นฐาน • โครงสร้างแบบมีเงื่อนไข • If …end • If …else …end • If…elseif…else….end…end • โครงสร้างการทำงานแบบวนซ้ำ • For …end จำนวนรอบแน่นอน • While…end จำนวนรอบเป็นไปตามเงื่อนไข • Switch…case…end
โครงสร้างแบบมีเงื่อนไขโครงสร้างแบบมีเงื่อนไข โครงสร้างแบบมีเงื่อนไข if.....end ifเงื่อนไข โมดุลคำสั่ง end
โครงสร้างแบบมีเงื่อนไขโครงสร้างแบบมีเงื่อนไข โครงสร้างแบบมีเงื่อนไข if.....end ifเงื่อนไขที่ 1 โมดุลคำสั่งA end ifเงื่อนไขที่ 2 โมดุลคำสั่งB end
โครงสร้างแบบมีเงื่อนไข(ต่อ)โครงสร้างแบบมีเงื่อนไข(ต่อ) โครงสร้างแบบมีเงื่อนไข if.....else….end ifเงื่อนไข 1 โมดุลคำสั่งA else เงื่อนไข 2 โมดุลคำสั่งB end if else
เปรียบเทียบ คำสั่ง if 3 1 2 4
clc Buffalo = input('please input your mark =...'); if Buffalo < 50 fprintf(1,'Sorry!!! you are fail\n'); else if Buffalo < 55 fprintf(1,'your grade = D \n'); end end
ตัวอย่างโครงแบบมีเงื่อนไขตัวอย่างโครงแบบมีเงื่อนไข
clc Buffalo = input('please input your mark =...'); if Buffalo < 50 fprintf(1,'Sorry!!! you are fail\n'); else if Buffalo < 55 fprintf(1,'Congratulation!!! your grade = D \n'); else if Buffalo < 60 fprintf(1,'Congratulation!!! your grade = D+ \n'); else if Buffalo < 65 fprintf(1,'Congratulation!!! your grade = C \n'); else if Buffalo < 70 fprintf(1,'Congratulation!!! your grade = C+ \n'); else if Buffalo < 75 fprintf(1,'Congratulation!!! your grade = B \n'); else if Buffalo < 80 fprintf(1,'Congratulation!!! your grade = B+ \n'); else fprintf(1,'Congratulation!!! your grade = A\n'); end end end end end end end end
โครงสร้างแบบทำซ้ำ โครงสร้างแบบทำซ้ำ for.....end forตั้งจำนวนloop โมดุลคำสั่ง ที่ต้องการให้ทำซ้ำ end
ผังงานแสดงการทำซ้ำ Student = Student+1 Student < 45 for
กำหนดค่าการทำซ้ำแบบตายตัวกำหนดค่าการทำซ้ำแบบตายตัว clc for student = 1:5 fprintf(1, ‘นศ.เลขที่ %d ’,student); Mark=input(‘ได้คะแนน = …’); end
ผู้ใช้เป็นผู้กำหนดจำครั้งการทำซ้ำผู้ใช้เป็นผู้กำหนดจำครั้งการทำซ้ำ clc ID=input(‘จำนวนนักศึกษา = …’); for student = ID fprontf(1, ‘นศ.เลขที่ %d , ’,student); Mark=input(‘ได้คะแนน = …’); end