วันอังคารที่ 29 มีนาคม พ.ศ. 2554

การเขียน Flowchart

การเขียน Flowchart เราจะมารู้จัก Flowchart กันก่อน
คือ รูปภาพหรือสัญลักษณ์ ที่ใช้เขียนแทนคำอธิบาย ข้อความ
หรือคำพูดที่ใช้ในอัลกอริทึม เพราะการที่จะเข้าใจขั้นตอนได้ง่ายและตรงกันนั้น  การใช้คำพูดหรือข้อความอาจทำได้ยากกว่าการใช้รูปภาพหรือสัญลักษณ์ ผังงานสามารถแบ่งได้เป็น 2  ประเภทใหญ่ ๆ คือ
1. ผังงานระบบ (System Flowchart)
เป็นผังงานที่แสดงขั้นตอนการทำงานในระบบงานหนึ่ง ๆ ในลักษณะของภาพกว้าง ๆ  แต่จะไม่เจาะลึกลงไปว่าในระบบงานย่อย ๆ นั้นจะมีการทำงานหรือวิธีการทำงานอย่างไร  ผังงานจะแสดงทิศทางการทำงานในระบบ ตั้งแต่เริ่มต้นว่าข้อมูลเกิดขึ้นครั้งแรกที่ใด เก็บอยู่ในรูปแบบใด  และผ่านขึ้นตอนการประมวลผลอย่างไร อะไรบ้าง (แต่จะไม่เน้นถึงวิธีการประมวลผล)  จนสุดท้ายผลลัพธ์ที่ได้เก็บอยู่ในรูปแบบใด
ตัวอย่างเช่น ผังงานระบบบริหารโรงเรียนแห่งหนึ่ง  ข้อมูลทะเบียนประวัติของนักเรียนจะเริ่มขึ้นครั้งแรกเมื่อมีการับสมัครนัก ศึกษาใหม่ จากแผนกรับสมัคร  และถือว่าเป็นข้อมูลพื้นฐานไปยังแผนกต่าง ๆ ในโรงเรียน เช่น แผนกปกครอง แผนกวัดผล หรือแผนกทะเบียน  ซึ่งในส่วนของแผนกทะเบียนอาจจะมีการแก้ไขข้อมูลบางอย่าง เช่น มีการแก้ไขชื่อ ที่อยู่ของนักศึกษา ก็ได้

2. ผังงานโปรแกรม (Program Flowchart)
เป็นผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรมซึ่งจะแสดงการทำงานตั้งแต่ เริ่มต้น  ในส่วนของการรับข้อมูล การคำนวณหรือการประมวลผล  จนถึงการแสดงผลลัพธ์  ผังงานนี้อาจสร้างจากผังงานระบบ  โดยผู้เขียนผังงานอาจดึงเอาแต่ละจุดที่เกี่ยวข้องกับการทำงานของคอมพิวเตอร์ เพื่อนำมาวิเคราะห์ว่า  ถ้าใช้คอมพิวเตอร์ทำงานตรงจุดนั้นเพื่อให้ได้ผลลัพธ์ตามต้องการ ควรจะมีขั้นตอนในการเขียนผังงานอย่างไร  เพื่อให้คอมพิวเตอร์ทำงาน  ซึ่งการเขียนผังงานนี้จะช่วยเพิ่มความสะดวกในการเขียนโปรแกรมของผู้เขียน โปรแกรมได้มาก  เพราะสามารถดูได้ง่ายว่าในแต่ละขั้นตอนการทำงานควรใช้คำสั่งอย่างไร
ประโยชน์ของผังงาน
1. ทำให้เข้าใจและแยกแยะปัญหาต่าง ๆ ได้ง่ายขึ้น
2. ผู้เขียนโปรแกรมมองเห็นลำดับการทำงาน รู้ว่าสิ่งใดควรทำก่อน สิ่งใดควรทำหลัง
3. สามารถหาข้อผิดพลาดของโปรแกรมได้ง่าย
4. ทำให้ผู้อื่นเข้าใจการทำงานได้ง่ายกว่าการดูจาก source code
5. ไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง ผู้อื่นสามารถเรียนรู้และเข้าใจได้ง่าย

ภาพสัญลักษณ์
ความหมาย
Flowchart
 กระบวนการ การคำนวณ
alt
 กระบวนการที่นิยามไว้ การทำงานย่อย
alt
 ข้อมูล รับ หรือ แสดงข้อมูลโดยไม่ระบุชนิดของอุปกรณ์
alt
 การตัดสินใจ การเปรียบเทียบ
alt
 การเตรียมการ การกำหนดค่าล่วงหน้า หรือ กำหนดค่าเป็นชุดตัวเลข
alt
 ป้อนข้อมูลด้วยตนเอง การรับข้อมูลเข้าทางแป้นพิมพ์
alt
 ขั้นตอนที่ทำด้วยตนเอง การควบคุมโปรแกรมทางแป้นพิมพ์
alt
 เอกสาร/แสดงผล การแสดงผลทางเครื่องพิมพ์
alt
 เอกสารแสดงผลหลายฉบับ
alt
 จอภาพแสดงผล
alt
 การ์ด หรือบัตรเจาะรู ใช้ใส่ข้อมูล
alt
 เทป (สื่อบันทึกข้อมูล)
alt
 เริ่มต้น/สิ้นสุด การเริ่มต้น หรือการลงท้าย
alt
 จุดเชื่อมต่อในหน้าเดียวกัน
alt
 ตัวเชื่อมต่อไปหน้าอื่น
alt
 จุดร่วมการเชื่อมต่อ
alt
 หรือ
alt
 ตรวจเทียบ
alt
 หน่วงเวลา
alt
 ที่เก็บแบบเข้าถึงโดยเรียงลำดับ
alt
 ดิสก์แม่เหล็ก
Flowchart
 เส้นแสดงลำดับกิจกรรม
ยก ตัวอย่าง การเขียนผังงานอ่านค่าข้อมูลเข้ามาเก็บไว้ในตัวแปร A และ B แล้วทำการเปรียบเทียบในตัวแปรทั้งสอง โดยมีเงื่อนไขดังนี้ * ถ้า A มากกว่า B ให้คำนวณหาค่า A - B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT * ถ้า A น้อยกว่าหรือเท่ากับ B ให้คำนวณหาค่า A + B และเก็บผลลัพธ์ไว้ในตัวแปรชื่อ RESULT จะเขียน Flowchart ได้ดังนี้
การเขียน Flowchart alt การเขียน Flowchart การเขียน Flowchart การเขียน Flowchart

ตัวอย่างโปรแกรมจาวา 5โปรแกรม

1.โปรแกรมจำนวนเฉพาะของซี


#include<stdio.h>
#include<conio.h>
void main()
{
int num,i=0;
clrscr();
printf("\nEnter you number : ");
scanf("%d",&num);
{

if(i%num==0)
{
printf("Yes");
}
else
{
printf("No");
}


getch();
}





2.โปรแกรมเพื่อนับจำนวนตัวเลขที่หารด้วย3ลงตัวของกลุ่มตัวเลข 1-20
อ้างถึง


class No5{
   public static void main(String args[]){
      int manny=0;
      String number="";
      for(int i=1;i<=20;i++){
         if((i%3)==0){
            number += i+",";
            manny++;
         }
      }

3.โปรแกรมนี้คือโปรแกรมหาเลขคี่ เลขคู่ จำนวนเฉพาะ และหาค่ามากกว่าหรือน้อยกว่าจากค่าที่รับเข้า



Main.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package boonrit;
import java.io.*;
import java.util.ArrayList;
import boonrit.Menu_Class;
// boonrit.Menu_Class;
/**
*
* @author Sutenm
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException{
// TODO code application logic here
BufferedReader buff=new BufferedReader(new InputStreamReader(System.in));
String keyword,ex;
int num,num1,num2,num3,sum,number;
do{
System.out.print(“Creat Array : “);
keyword = buff.readLine();
int arr_list=Integer.parseInt(keyword);
ArrayList<Integer> myArray = new ArrayList<Integer>(arr_list);
for(int i=0;i < arr_list;i++){
System.out.print(“Input “+i+” : “);
keyword = buff.readLine();
myArray.add(Integer.parseInt(keyword));
}
System.out.println(“===== Menu =====”);
System.out.println(“1. Odd Number”);
System.out.println(“2. Even Number”);
System.out.println(“3. Prime Number”);
System.out.println(“4. Max Number”);
System.out.println(“5. Min Number”);
System.out.print(“Select menu : “);
keyword = buff.readLine();
num=Integer.parseInt(keyword);
switch(num){
case 1: num=1; break;
case 2: num=2; break;
case 3: num=3; break;
case 4: num=4; break;
case 5: num=5; break;
default : num=0;
}
System.out.println();
if(num == 1){
System.out.print(“Odd Number : “);
for(int j=0;j < arr_list;j++){
if(Menu_Class.Odd(myArray.get(j)) == true)
System.out.print(myArray.get(j)+” “);
}
}else if(num == 2){
System.out.print(“Even Number : “);
for(int j=0;j < arr_list;j++){
if(Menu_Class.Even(myArray.get(j)) == true)
System.out.print(myArray.get(j)+” “);
}
}else if(num == 3){
System.out.print(“Even Number : “);
for(int j=0;j < arr_list;j++){
if(Menu_Class.Prime(myArray.get(j)) == true)
System.out.print(myArray.get(j)+” “);
}
}else if(num == 4){
System.out.print(“Max Number : “);
int max = 0;
for(int j=0;j < arr_list;j++){
if(j == 0)
max = myArray.get(j);
else if(max < myArray.get(j))
max = myArray.get(j);
}
System.out.print(max);
}else if(num == 5){
System.out.print(“Max Number : “);
int min = 0;
for(int j=0;j < arr_list;j++){
if(j == 0)
min = myArray.get(j);
else if(min > myArray.get(j))
min = myArray.get(j);
}
System.out.print(min);
}//if num
System.out.println(“”);
System.out.print(“Exit ‘x’ : “);
ex = buff.readLine();
}while(!ex.equalsIgnoreCase(“x”));
}//public
}
Menu_Class.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package boonrit;
/**
*
* @author Sutenm
*/
public class Menu_Class {
/**
* @param args the command line arguments
*/
public static boolean Odd(int value){
int sum=value%2;
if(sum == 1)
return true;
else
return false;
}
public static boolean Even(int value){
int sum=value%2;
if(sum == 0)
return true;
else
return false;
}
public static boolean Prime(int value){
int j=0;
for(int i = 1;i <= value;i++){
if(value%i == 0)
j++;
}
if(j == 2)
return true;
else
return false;
}
}

 4.
โปรแกรมหาผลรวมของเลขตั้งแต่ 1-10 



class No3{
   public static void main(String args[]){
      int sum=0,tmp=0;
      for(int i=1;i<=10;i++){
         tmp = sum;
         sum+=i;
         System.out.println(i+" + "+tmp+" = "+sum);
      }
   }
}
ผลลัพธ์ออกมางี้คับ (แสดงวิธีทำให้เรียบร้อย 555+) ไม่ต้องกังวลกับ ส่วนแสดงวิธีทำนะคับ 1+2+3+4+5+6+7+8+9+10 ยังไงมันก็เท่ากับ 55 อยู่วันยังค่ำแหละคับ
1 + 0 = 1
2 + 1 = 3
3 + 3 = 6
4 + 6 = 10
5 + 10 = 15
6 + 15 = 21
7 + 21 = 28
8 + 28 = 36
9 + 36 = 45
10 + 45 = 55



5.
โปรแกรมตัดเกรด


importjava.util.Scanner; class
{
life public
{
Scanner scan=
static void main(String args[])new Scanner(System.in); System.out.println("Please input your Name : "); Stringname = scan.next(); System.out.println("Please input your learn : "); Stringlearn = scan.next(); System.out.println("Please input your score : "); doubles= scan.nextDouble(); System.out.println("Please input your Name : "+name); System.out.println("Please input your learn : "+learn); System
.out.println("Please input your score : "+s); if
{
(s>100) System
}
.out.println("Error please enter only 1-100"); else
{
if(s>79) System
}
.out.println("Grade A"); else
{
if(s>69) System
}
.out.println("Grade B"); else
{
if(s>59) System
}
.out.println("Grade C"); else
{
if(s>49) System
}
.out.println("Grade D"); else
{
if(s<50) System
}
}
}
.out.println("Grade E");

โปรแกรมคำนวณภาษี

import java.util.*;
import java.io.*;
import org.apache.poi.hssf.usermodel.*;

public class TaxCalc {
  public static void main(String[] args) {
    double income = readDouble(new Scanner(System.in),"เงินได้สุทธิ : ");
    try {
      double[][] taxTable = getTaxTable("c:/java101/tax.xls");
      double tax = calcTax(taxTable, income);
      System.out.println("ภาษี = " + tax);
    } catch (FileNotFoundException e) {
      System.out.println("ไม่พบแฟ้ม: " + e.getMessage());
    } catch (IOException e) {
      System.out.println(e.getMessage());
    }     
  }
  private static double[][] getTaxTable(String excelFile)
                     throws FileNotFoundException, IOException {
    double[][] table = new double[0][0];
    HSSFWorkbook wb = new HSSFWorkbook(
                            new FileInputStream(excelFile));
    HSSFSheet sheet = wb.getSheetAt(0);
    int rows = sheet.getPhysicalNumberOfRows() - 1;
    table = new double[rows][2];
    for (int i = 1; i <= rows; i++) {
      HSSFRow r = sheet.getRow(i);
      HSSFCell cell = r.getCell((short) 0);
      table[i-1][0] = cell.getNumericCellValue();
      cell = r.getCell((short) 1);
      table[i-1][1] = cell.getNumericCellValue();
    }
    return table;
  }   
  public static double calcTax(double[][] taxTable, double income) {
    double tax = 0.0;
    for (int i = 0; i < taxTable.length && income > 0; i++) {
      tax += Math.min(income,taxTable[i][0]) * taxTable[i][1];
      income -= taxTable[i][0];
    }
    return tax;
  }
  // เพิ่ม readDouble ของรหัสที่ 10-1 ที่นี่