ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยWidyawati Wibowo ได้เปลี่ยน 6 ปีที่แล้ว
1
คณาจารย์ หลักสูตรวิทยาการคอมพิวเตอร์คณะวิทยาการสารสนเทศ
Problem Solving คณาจารย์ หลักสูตรวิทยาการคอมพิวเตอร์คณะวิทยาการสารสนเทศ
2
การทำงานกับข้อมูลข้อความ (String)
กำหนดข้อมูลเป็นชนิดตัวอักษร (char) ประกาศตัวแปร โดยใช้อักษรที่ซ้ำๆ กันหลายๆ ตัว โดยใช้หลักของ Array ดังนี้ แบบที่ 1 (ประกาศตัวแปรก่อนแล้วจึงกำหนดค่าภายหลัง) char ชื่อตัวแปร[จำนวนตัวอักษร+1]; แบบที่ 2 (กำหนดข้อความพร้อมประกาศตัวแปร) char ชื่อตัวแปร[] = “ข้อความ”; การกำหนดค่าข้อความ จะต่างกับการกำหนดค่าตัวอักษรคือจะต้องเขียนอยู่ภายใต้ “…” (เครื่องหมาย Double Quote) การกำหนดข้อความภายหลังมีวิธีการทำงาน ดังนี้ ชื่อตัวแปร = “ข้อความ”; ขนาดของตัวแปร = จำนวนตัวอักษร+1 ซึ่งส่วนที่เพิ่มมาคือสัญลักษณ์จบข้อความ ได้แก่ “\0” นั่นเอง
3
Library ใน Header File ดูคำสั่ง และการใช้งานได้ที่
en.wikipedia.org/wiki/C_standard_library ในที่นี้แนะนำเฉพาะที่ใช้บ่อยๆ โดยการเรียกใช้ Header File ด้วยคำสั่ง Include #include <stdio.h> คือ Library เกี่ยวกับ Standard Input/Output #include <conio.h> คือ Library เกี่ยวกับ Console Input/Output #include <math.h> คือ Library เกี่ยวกับการคำนวณทางคณิตศาสตร์ ฯลฯ
4
stdio.h printf() คำสั่ง แสดงผลตามรูปแบบออกทางหน้าจอ
scanf() คำสั่ง รับค่า Input ตามรูปแบบจาก keyboard gets() คำสั่ง รับค่า String จาก keyboard puts() คำสั่ง แสดง String ออกทางหน้าจอ getchar() คำสั่ง รับค่า Character จาก keyboard putchar() คำสั่ง แสดงค่า Character ออกทางหน้าจอ ฯลฯ
5
ตัวอย่าง scanf, printf, ตัวแปรสตริง
6
การกำหนดค่า String ให้กับตัวแปร
จากคำสั่ง char name[20] และ name1[]=“Algor” มีความต่างกันคือ name ตัวแรก มีเพียงขนาดไม่มี ค่าข้อมูล ดังนั้นต้องกำหนดค่าสตริง ให้ หรือ สั่งป้อนเข้าไปทางคีย์บอร์ด ดังคำสั่ง scanf(“%s”,&name); name1 มีการกำหนดค่าไว้แล้วคือ ข้อความ “Algor” ดังนั้นสามารถนำค่าไปใช้แสดงที่หน้าจอได้ ดังคำสั่ง printf(“K.%s :…..”,name1); บทที่ 8 Slide part II
7
จงเขียนโปรแกรมจากผังงานที่กำหนดให้
Start Stop Read WIDTH, LENGTH AREA = WIDTH * LENGTH Print AREA จาก flowchart มีการรับค่า ข้อมูล 2 ค่า WIDTH, LENGTH แต่ อย่าลืม!! ก่อนจะสั่งรับหรือ แสดงค่า ต้องประกาศตัวแปรก่อน คำสั่งรับคือ scanf แต่ควรจะ แสดงข้อความให้ผู้ใช้ทราบ ด้วยว่า จะต้องป้อนอะไร ดังนั้น ต้องมี printf ก่อน เสมอ Output
8
เอ้า! มาลองกันโจทย์นี้
ต้องการรับข้อมูลเงินโบนัสที่พ่อได้รับ โดยพ่อจะดำเนินการแบ่งเงินให้แม่ 30% ของเงินที่มีอยู่ และนำเงินที่เหลือแบ่งให้ลูก 3 คน คนละเท่าๆ กัน จงแสดงจำนวนเงินที่แม่ได้รับ จำนวนเงินที่ลูกแต่ละคนได้รับ Flowchart หน้าตาเป็นแบบไหน? ป้อนจำนวนเงินโบนัส (bonus) mom = bonus x 0.3 children = (bonus – mom) / 3 แสดง เงินที่ แม่ และ ลูกๆ ได้รับ (mom, children) บทที่ 8 Slide part II
9
Flowchart และ Source Code
คำถาม? ทำไมต้องประกาศต้องแปรเป็น float #include<stdio.h> #include<conio.h> int main() { float bonus,mom,children; ป้อนจำนวนเงินโบนัส (bonus) mom = bonus x 0.3 children = (bonus – mom) / 3 แสดง เงินที่ แม่ และ ลูกๆ ได้รับ (mom, children) เริ่มต้น จบการทำงาน printf(“Input Father’s bonus:> “); scanf(“%f”,&bonus); mom = bonus * 0.3; children = (bonus – mom) / 3; printf(“Mother gets %.2f, Children get %.2f”,mom,children); สังเกต printf สีแดง เป็นการแสดงข้อความล้วน จึงไม่มีตัวแปร แต่ printf สีฟ้า ต้องการแสดงค่าตัวแปร mom และ children จึงต้องใช้ % และต้องใส่ชื่อตัวแปรหลังเครื่องหมาย “ ด้วย เรียงตามลำดับการแสดงจากซ้ายไปขวา
10
เช็ค! ถูกต้องไหม?
11
conio.h getch() คำสั่งรับค่า character จาก keyboard โดยไม่แสดงตัวอักษรทางหน้าจอ clrscr() คำสั่งลบข้อความบนหน้าจอทั้งหมด clreol() คำสั่งลบข้อความ ณ บรรทัดที่มี cursor ฯลฯ ปล. การลบหน้าจอ ใน Dev-C++ จะใช้คำสั่ง system(“cls”); ต้องเพิ่ม Header file ชื่อ การสั่งหยุด “iostream.h” เข้าไปด้วย system(“pause”); ดังตัวอย่าง
12
ผลจากการสั่ง “cls” และ pause
13
การนำข้อมูลเข้าทางแป้นพิมพ์
สามารถรับข้อมูลที่ป้อนเข้ามาทางแป้นพิมพ์ (Keyboard) ได้หลายวิธี เช่น การใช้ getch() อยู่ใน conio.h การใช้ gets() อยู่ใน stdio.h การใช้ scanf() อยู่ใน stdio.h
14
getch() รับข้อมูลตัวอักษรได้เพียง 1 ตัวอักษรเท่านั้น โดยไม่ต้องกด Enter และจะไม่เห็นตัวอักษรนั้นบนหน้าจอ ข้อมูลจะถูกแปลงไปเป็นรหัส ASCII โดยอัตโนมัติ ต้อง include ไฟล์ชื่อ “conio.h” การใช้งานมี 2 แบบ มีการส่งค่าตัวอักษรที่รับกลับมา ดังตัวอย่าง char ch; ch = getch(); ไม่ส่งค่าตัวอักษรที่รับกลับมา (ใช้กรณีต้องการให้กด Key ใดๆ แล้วทำงานต่อไป) ดังตัวอย่าง getch();
15
Example 11 #include <stdio.h> #include <conio.h>
int main () { printf("Press any key to continue\n"); getch( ) ; char ch; printf("Input one character : "); ch = getch( ); //คำสั่งนี้ไม่แสดงอักขระที่หน้าจอขณะรับข้อมูล printf(“\nYour character is %c", ch); }
16
gets() รับข้อมูลข้อความ (String) ต้อง include ไฟล์ชื่อ “stdio.h”
การใช้งาน สามารถเรียกใช้ได้ดังนี้ char ชื่อตัวแปรข้อความ[จำนวนตัวอักษร+1] gets(ชื่อตัวแปรข้อความ ); ตัวอย่าง char name[10]; gets(name);
17
Example 12 *** ให้ลองเอา comment ในบรรทัดที่ 8 ออกหลัง run ผลรอบแรก
#include <stdio.h> int main() { char name[10]; printf("Input name : "); gets(name); // printf("Hello %s\n",name); return 0; } *** ให้ลองเอา comment ในบรรทัดที่ 8 ออกหลัง run ผลรอบแรก เพื่อดูความแตกต่าง
18
scanf(“%รูปแบบ”, &argument);
รับข้อมูลได้หลากหลายชนิด ขึ้นอยู่กับรูปแบบที่กำหนด ต้อง include ไฟล์ชื่อ “stdio.h” การรับค่าจะรับค่าตามรูปแบบ ดังนี้ // & ต้องใส่เสมอ รูปแบบที่กำหนด %d รับ/อ่านตัวเลขจำนวนเต็มฐานสิบ %f รับ/อ่านตัวเลขทศนิยม %c รับ/อ่านตัวอักษรโดยกด Enter (ไม่แนะนำให้ใช้) %s รับ/อ่านข้อความ (String) %ld รับ/อ่านตัวเลขจำนวนเต็ม ขนาดไม่เกิน 4 ไบต์ %lf รับ/อ่านตัวเลขจำนวนทศนิยม ขนาดไม่เกิน 8 ไบต์ &argument argument คือ ค่าตัวแปร & คือ การอ้างอิง address หรือตำแหน่งหน่วยความจำของตัวแปรนั้นๆ scanf(“%รูปแบบ”, &argument);
19
Data type : long , double สังเกต ผลที่ได้จากการป้อนว่า ถูกต้อง
หรือไม่? ให้ดูทั้งขนาดข้อมูลที่ป้อน และ รูปแบบคำสั่ง % ที่ใช้
20
%ld, %lf
21
Example 13 #include <stdio.h> #include <conio.h>
int main() { char ch; char name[10]; int num; float score; printf("Input one char : "); scanf("%c", &ch); printf("Input string : "); scanf("%s", &name); printf("Input integer : "); scanf("%d", &num); printf("Input float : "); scanf("%f", &score); printf("char(%c) string(%s) integer(%d) float(%f)", ch,name, num,score); getch(); return 0; } ปล. %s ที่รับโดยใช้ scanf ไม่สามารถเว้นช่องว่างได้ ควรใช้คำสั่ง gets และเพิ่มตัวแปร
22
Example 14 (เพิ่มการแสดงผลจากตัวอย่างที่ 13)
#include <stdio.h> int main() { char ch; char name[10]; int num; float score; // รับค่า Input printf("Input one char : "); scanf("%c", &ch); printf("Input string : "); scanf("%s", &name); printf("Input integer : "); scanf("%d", &num); printf("Input float : "); scanf("%f", &score); // แสดงผล Output ทางหน้าจอจากค่า Input ที่รับเข้ามา printf("Display one char is %c\n", ch); printf("Display string is %s\n", name); printf("Display integer is %d\n", num); printf("Display float is %f\n", score); return 0; }
23
การรับสตริงด้วย scanf, gets
สังเกต การสั่งรับสตริง ชื่อ สกุล ทั้งสองแบบ แตก ต่างกันอย่างไร scanf(“%s%s”,&name, &surname); gets(name); ลองพิมพ์และดูผลลัพธ์ ที่ได้ รวมถึงลักษณะการ ป้อน มีเว้นวรรคได้หรือไม่ จำนวนตัวแปรที่ใช้ ชอบแบบไหนใช้แบบนั้น
24
Example 14 #include <stdio.h> int main() { char ch;
char name[10]; int num; float score; printf("Input string : "); scanf("%s", &name); printf("Input one char : "); scanf("%c", &ch); printf("Input integer : "); scanf("%d", &num); printf("Input float : "); scanf("%f", &score); return 0; } *** จากตัวอย่างที่ 13 ลองสลับบรรทัด ที่ 9 และที่ 10 ดูใหม่ ให้สังเกตปัญหาที่เกิดขึ้น ให้อาจารย์แนะนำแนวทางการแก้ปัญหา
25
math.h คำสั่งต่างๆ abs() fabs() exp() fmod() log() log10() pow()
คำสั่งหาค่า absolute สำหรับตัวเลขจำนวนเต็ม fabs() คำสั่งหาค่า absolute สำหรับตัวเลขจำนวนจริง exp() หาค่า exponential fmod() หาเศษ log() หาค่า natural logarithm log10() หาค่า logarithm ฐานสิบ pow() หาค่าเลขยกกำลัง sqrt() หาค่ารากที่ 2 (square root) ตัวอย่าง int ตัวแปร = abs(argu); float ตัวแปร = fabs(argu); float ตัวแปร = exp(argu); float ตัวแปร = fmod(argu); float ตัวแปร = log(argu); float ตัวแปร = pow(เลขฐาน, เลขกำลัง); float ตัวแปร = sqrt(argu);
26
Example 15 #include <iostream> #include <conio.h>
#include <math.h> int main() { printf(“Press any key…”); getch(); // รับค่าใดๆ จาก keyboard system(“cls”); // ลบหน้าจอ int a, b, c; // ประกาศค่าตัวแปร printf(“Input a : “); scanf(“%d”, &a); // รับค่า a printf(“Input b : “); scanf(“%d”, &b); // รับค่า b printf(“a = %d\nb = %d”, a, b); // แสดงค่า a และ b c=abs(a); // หาสัมบูรณ์ของ a เก็บไว้ในตัวแปร c printf(“Show absolute of a = %d\n”, c); // แสดงค่า c printf(“Show absolute of %d = %d\n”, a, c); // แสดงค่า c c=pow(2,3); // หาค่า 2 ยกกำลัง 3 เก็บไว้ในตัวแปร c printf(“Show 2 power 3 = %d\n”, c); // แสดงค่า c c=pow(a, b); // หาค่า a ยกกำลัง b เก็บไว้ในตัวแปร c printf(“Show %d power %d = %d\n”, a, b, c); // แสดงค่า c getch(); return 0; }
27
Example 16 #include <stdio.h> #include <math.h> int main()
{ float x, y, z; printf("Input x : "); scanf("%f", &x); printf("Input y : "); scanf("%f", &y); printf(" x = %f\n y = %f\n", x, y); z=fabs(x); printf("Show absolute of %f = %f\n", x, z); z=pow(x, y); printf("Show %f power %f = %f\n", x, y, z); z=sqrt(x); printf("Show square root %f = %f\n", x, z); return 0; }
28
แบบฝึกหัด จงเขียนโปรแกรมจากโจทย์ที่กำหนดให้
ศูนย์หนังสือต้องการแจกคูปองลดราคาสินค้าให้ลูกค้าร้อยละ 10 บาท ซึ่งมีคูปองราคา 5 บาท และ 10 บาท จงเขียนโปรแกรมเพื่อรับจำนวนเงินที่ลูกค้าซื้อสินค้าทั้งหมด และคำนวณว่าจะต้องจ่ายคูปองราคาเท่าใด จำนวนเท่าใดให้กับลูกค้า จงแปลงหน่วยวัดพื้นที่จากไร่ เป็นตารางวา โดยให้อ่านค่าขนาดพื้นที่ซึ่งมีหน่วยเป็นไร่ แล้วแปลงเป็นตารางวา (1 ไร่ = 400 ตารางวา) ให้รับชื่อ สกุล และปี พ.ศ. เกิดของนักเรียนเพื่อคำนวณหาอายุจริง และแสดงออกที่หน้าจอตามรูปแบบ Name Surname, Birth Year[xxxx] Your age is xx
29
แบบฝึกหัด(ต่อ) จงเขียนโปรแกรมเพื่อคำนวณหาผลลัพธ์ของโจทย์ต่อไปนี้
P(x) = x5 – 3x4 + 2x3 – x + 6 เมื่อ x คือค่าจำนวนเต็มใดๆ ที่ป้อนเข้ามาจากคีย์บอร์ด จงหาปริมาตรทรงกระบอกที่มีเส้นผ่าศูนย์กลางและความสูงเท่ากับ R และ H ใดๆ ซึ่งรับค่าจากผู้ใช้ และแสดงผลลัพธ์ดังนี้ เส้นผ่าศูนย์กลาง[xx.xx] , ความสูง[xx.xx] ปริมาตรทรงกระบอก[xxx.xx] f(x) = x5 – 5x กำหนดให้ x = 3 3x2 บทที่ 8 Slide part II
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.