#include<stdio.h> void triangel(int num){ int i,j,space=num-1,x; for (i=1 ; i<=num ; i++,space--){ for(x=1;x<=space;x++) printf(" "); for (j=1 ; j<=(-1+2*i) ; j++) printf("*"); printf("\n"); } for(i=1;i<=num;i++){ for(x=1;x<=num-1;x++) printf(" "); printf("*\n"); } for(i=1;i<=num-1-5;i++){ printf(" "); } printf("Merry Christmas!"); } int main(void){ triangel(10); return 0; }
2011年12月25日 星期日
100設計一甲_Merry Christmas
Merry Christmas tree.c
2011年12月20日 星期二
100設計一甲_week15
libw15.c
#include <stdio.h> #include <stdlib.h> int add(int a, int b, int c) { return a+b+c; } double add2(double a, double b, double c) { return a+b+c; } int mul(int a, int b, int c) { return a*b*c; }ex1.py
#coding: utf-8 # 本程式透過 ctype 模組, 直接導入 dll 動態連結庫, 並使用其函式 from ctypes import cdll,c_int,c_double lib = "libw15.dll" dll = cdll.LoadLibrary(lib) #add = (lambda x,y: dll.add(c_int(x), c_int(y))) # 以上 lambda 函式定義與下列函式相同 def add(x,y,z): return dll.add(c_int(x), c_int(y), c_int(z)) ''' ctypes 介面僅支援整數, 長整數與字串資料型別, 若使用(雙)浮點數或其他 ctype 所不支援的 資料型別, 則必須要明確告訴 ctypes 如何進行函式傳回值的轉換, 否則無法得到精確資料 ''' def add2(x,y,z): return dll.add2(c_double(x), c_double(y), c_double(z)) # 指定 add2 函式的資料傳回型別為 c_double dll.add2.restype = c_double multiply = (lambda x,y,z: dll.mul(c_int(x), c_int(y), c_int(z))) 變數1 = 12 變數2 = 10 變數3 = 15 print ("變數1加上變數2加上變數3, 其值為:",add(變數1,變數2,變數3)) print ("變數1乘上變數2乘上變數3, 其值為:",multiply(變數1,變數2,變數3)) ''' 15*12 = 15*2+15*10 = 150+30 = 180 15*12 = 15*2*6 = 180 ''' 變數4 = 12.345 變數5 = 10.6 變數6 = 66.6 print ("變數4加上變數5加上變數6, 其值為:",add2(變數4,變數5,變數6))123.c complier出來的dll重新命名為->sum.pyd
#include <Python.h> int sum2(int a, int b, int c); int sum2(int a, int b, int c){ return a+b+c; } static PyObject* mod_sum(PyObject *self, PyObject *args) { int a; int b; int c; int s; if (!PyArg_ParseTuple(args,"iii",&a,&b,&c)) return NULL; s = sum2(a,b,c); return Py_BuildValue("i",s); } static struct PyMethodDef Mod_Methods[] = { {"sum", mod_sum, METH_VARARGS, "Description.."}, {NULL,NULL,0,NULL} }; static struct PyModuleDef ModMethods = { PyModuleDef_HEAD_INIT, "SumModule", "SumModule_doc", -1, Mod_Methods }; PyMODINIT_FUNC PyInit_sum(void) { (void) PyModule_Create(&ModMethods); }ex2.py
''' from sum import * print(sum(10,20)) ''' import sum print(sum.sum(10,20,30))w15.c
#include<stdio.h> #define pi 3.14159 double circlearea(double r){ return r*r*pi; } int plus(int a,int b,int c){ return a*b-c; } float bmi(float heigh,float weight){ return weight/(heigh*heigh); } char *mystring(char str[]){ return str; //printf("%s",str); } int main(void) { printf("%e\n",circlearea(1.)); printf("%d\n",plus(1.5,6,5)); printf("%d\n",plus(1,6,5)); printf("%f\n",bmi(1.8,60)); printf("%s\n",mystring("asd")); mystring("asd"); return 0; }
2011年12月6日 星期二
100設計一甲_week13
#include<stdio.h> void fun1(){ int i=0; printf("while test1----\n"); while(i<15){ printf("%d\n",i); i++; } i=15; printf("while test2----\n"); while(i){ printf("%d\n",i); i--; } printf("for test1----\n"); for(i=0;i<15;i++){ printf("%d\n",i); } } int main(){ int num1 = 123; float num2 = 3.14159; double num3 = 3.14159e-3; char name1[6] = {'h','e','l','l','o','\0'}; char name2[6] = "hello"; /* 字串最後必須加上結束\0字元,代表字串結束 hello 為五個字元 但最後必須加上\0,所以為六個字元。 */ printf("%d\n", num1); printf("%f\n", num2); printf("%e\n", num3); printf("%s\n", name1); printf("%s\n", name2); printf("%c\n", name1[1]); printf("%c\n", name2[1]); fun1(); return 0; }
2011年11月29日 星期二
100設計一甲_week12 小考答案
exam1.c
#include<stdio.h> void q1(){ int i; int num1=0,num3=0; int total=0; for(i=399;i<=8993;i++){ num1=i%10; num3=(i/100)%10; if((num1+num3)==11){ total+=i; } } printf("%d\n",total); } void q2(){ int i; int num1=0,num3=0; int total=0; for(i=359;i<=8691;i++){ if(i%7==0 && i%2==0){ total+=i; } } printf("%d\n",total); } void q3(){ int i; int num1=0,num3=0; int total=0; for(i=95;i<=8505;i++){ if(i%14!=0){ total+=i; } } printf("%d\n",total); } void q4(){ int i=0,j=0; int total=0; for(i=473;i<=8393;i++){ int count=0; j=i; while(j!=0 && count==0){ if(j%10==3||j%10==6||j%10==8) count++; j=j/10; } if(count!=0) total+=i; } printf("%d\n",total); } void q5(){ int i; int num1=0,num3=0; int total=0; for(i=486;i<=8817;i++){ num1=i%10; num3=(i/100)%10; if((num1*num3)==16) total+=i; } printf("%d\n",total); } int main(){ q1(); q2(); q3(); q4(); q5(); return 0; }exam2.py
def q1(): total=0; for i in range(399,8993+1): num1=i%10; num3=int(i/100)%10; if((num1+num3)==11): total+=i; print(total) def q2(): total=0 for i in range(359,8691+1): if(i%7==0 and i%2==0): total+=i print(total) def q3(): total=0 for i in range(95,8505+1): if(i%14!=0): total+=i print(total) def q4(): total=0 for 索引 in range(473,8393+1): if str(索引).find("3") != -1 or str(索引).find("6") != -1 or str(索引).find("8") != -1: total+=索引 print(total) def q5(): total=0; for i in range(486,8817+1): num1=i%10; num3=int(i/100)%10; if((num1*num3)==16): total+=i; print(total) q1() q2() q3() q4() q5()
100設計一甲_week12
example1.c
Python Module in C 動態教學(Save as...)
Python_module.7z
tcc_gnuplot3.7z
#include<stdio.h> int main(){ int num1 = 123; float num2 = 3.14159; double num3 = 3.14159e-3; char name1[6] = "hello"; char name2[6]={'h','e','l','l','o','\0'}; /* 字串最後必須加上結束\0字元,代表字串結束 hello 為五個字元 但最後必須加上\0,所以為六個字元。 */ printf("%d\n", num1); printf("%f\n", num2); printf("%e\n", num3); printf("%s\n", name1); printf("%s\n", name2); printf("%c\n", name1[1]); printf("%c\n", name2[1]); return 0; }
Python Module in C 動態教學(Save as...)
Python_module.7z
tcc_gnuplot3.7z
2011年11月22日 星期二
100設計一甲_week11
example1.c
#include<stdio.h> int main(){ printf("hello c!\n"); return 0; }example2.c
#include<stdio.h> int main(){ printf("hello c!\n"); int i=0; for(i=0;i<10;i++){ printf("%d\n",i); } return 0; }example3.c
#include<stdio.h> int main(){ int i=0; for(i=0;i<=100;i++){ if(i<=40){ printf("C score:%d\n",i); } else if(i<=70){ printf("B score:%d\n",i); } else{ printf("A score:%d\n",i); } } return 0; } /* 班級從1到最後一號 假如號碼是偶數 後面請加even 假如號碼是奇數 後面請加odd 依次序印出 */
2011年11月15日 星期二
100設計一甲_week10
tkinter.py
#coding: utf-8 from tkinter import * # 導入所有的數學函式 from math import * # 導入數學函式後, 圓周率為 pi # deg 為角度轉為徑度的轉換因子 deg = pi/180. frame=Frame() frame.master.title("繪圖範例") frame.pack() canvas = Canvas(width=800, height=800, bg='white') canvas.pack(expand=YES, fill=BOTH) def plotline(): for i in range(0, 500, 50): canvas.create_line(0, i, 500, i) #canvas.create_line(i, 0, i, 500) def polygon(r=100,cx=150,cy=150,offset=30): for i in range(270,270+360,offset): x0=cx+r*cos(i*deg) y0=cy+r*sin(i*deg) x1=cx+r*cos((i+offset)*deg) y1=cy+r*sin((i+offset)*deg) canvas.create_line(x0,y0,x1,y1) def plot(): for i in range(0,600,30): canvas.create_line(400-i,350-i, 500+i,350-i) canvas.create_line(500+i,350-i, 500+i,450+i) canvas.create_line(500+i,450+i, 400-i,450+i) canvas.create_line(400-i,450+i, 400-i,350-i) plotline() polygon() mainloop()find.py
s="applenkajkljkhapplejgaa" pos=0 count=0 while(1): pos=s.find("apple",pos) if(pos==-1): break pos=pos+1 count=count+1 print(count) print(s.count("apple"))
2011年11月8日 星期二
100設計一甲_week7
#Q1 #輸入一字串10字元將字串內容中的英文,小轉大寫,其餘照常印出。 def q1(): string=input("輸入一字串10字元:")#輸入字串 for i in range (0,len(string)):#len()測量字串長度 #判斷字元是否在需轉換範圍內 if(ord('A')<=ord(string[i])<=ord('Z')):#ord 將字元轉ascii dec print(chr(ord(string[i])+32),end="")#chr 將整數轉成字元 #其餘正常印出 else: print(string[i],end="") #Q2 #你拿到一個整數(4位數),卻忍不住想把每個位數都乘在一起。 def q2(): total=1 num=input("輸入數字 n:") for i in range(0,len(num)): total*=int(num[i])#轉成整數 print(total) #Q3 #輸入身高(cm)體重(kg),求BMI值並依照其BMI值印出體重分級與BMI,BMI需印至小數第一位。 def q3(): weight=float(input("輸入體重(kg)")) heigh=float(input("輸入身高(cm)"))/100 #cm轉m 除100 BMI=weight/(heigh*heigh) if(BMI < 18.5): #判斷BMI之範圍 print("%.1f 體重過輕"%(BMI)) elif(18.5 <= BMI <24): print("%.1f 正常範圍"%(BMI)) elif(24 <= BMI < 27): print("%.1f 過 重"%(BMI)) elif(27 <= BMI < 30): print("%.1f 輕度肥胖"%(BMI)) elif(30 <= BMI < 35): print("%.1f 中度肥胖"%(BMI)) else: print("%.1f 重度肥胖"%(BMI)) #Q4 #由1到100,印出其中只含有3,不含有4,6,9的數值。 def q4(): for 索引 in range(1,101): if str(索引).find("3") != -1: if str(索引).find("4") == -1 and str(索引).find("6") == -1 and str(索引).find("9") == -1: #find()找尋字串中是否有符合的字元 如果沒有則為-1 有則為符合字元的位置,底下q4find()函式為測試find的使用例子。 print(索引) #Q5 #平方公尺轉坪數,輸入幾平方公尺,輸出幾坪。 #公式:坪數 = 平方公尺 * 0.3025 (固定) def q5(): 平方公尺=float(input("輸入幾平方公尺:"))#輸入可能帶有小數,因此轉為浮點數。 print(平方公尺*0.3025) def q4find(): for i in ["taiwan","people"]: print(i.find("w"))
2011年10月29日 星期六
100設計一甲_week6_模擬考答案
#1. def q1(): a=input("姓名") b=input("學號") c=input("班級") print(a,b,c) #2. def q2(): i=1 while(i<301): print(i) i+=1 for i in range(1,301): print(i) #3. def q3(): sum = 0 for i in range(1,301): sum = sum + i print(sum) #4. # -*- coding: utf-8 -*- def q4(): name = input("Please enter a character string: ") print("The string capitalized is ", end="") for i in range(0,6): dec = int(ord(name[i])) newstr = chr(dec-32) print(newstr,end="") print() #5. def q5(R): print(R*R*3.14159265)
2011年10月25日 星期二
100設計一甲_week6_模擬考
1.使用input()函式輸入三個變數值(姓名 學號 班級)並輸出(Hint : input使用)
2.使用while以及for 各自印出從1到300的各個整數
3.用迴圈,計算1~300的總合(Hint : for while方式不限)
4.輸入6個字元的字串(英文小寫)轉成大寫輸出( Hint : input(),ord(),chr() )
5.使用自訂函式,計算圓面積,輸入R(半徑),R必須為函式之引數,試求面積(Hint : 需使用自訂函式,pi = 3.14159265)
2.使用while以及for 各自印出從1到300的各個整數
3.用迴圈,計算1~300的總合(Hint : for while方式不限)
4.輸入6個字元的字串(英文小寫)轉成大寫輸出( Hint : input(),ord(),chr() )
5.使用自訂函式,計算圓面積,輸入R(半徑),R必須為函式之引數,試求面積(Hint : 需使用自訂函式,pi = 3.14159265)
2011年10月19日 星期三
100設計一甲_week5
#print()<---在python 3裡print是一個函數 所以必須加上括號 與之前python版本print不同 #input()<---輸入,輸入進來的型態為str #str()<---將()內轉換成字串 def ex1(): yourname = input("Please input your English name:") for i in range(0,4): print(yourname[i]+" ASCII value is "+str(ord(yourname[i]))) #輸入4字元的字串 #ord()轉換()內字元所對應的ascii瑪 #chr()轉換()內數字所對應的字元<---須為int def ex2(): var = input("Please enter a four character string:") print("The string capitalized is ",end="") for i in range(0,4): print(chr(ord(var[i])-32),end="") print() #mpg mile per gallon #求每一加侖所跑的里程 #輸入miledorve、gallon #miledorve/gallon=每加侖所跑的miles def ex3(): miledrove = float(input("Please enter the miles you drove:")) gallons = float(input("Please enter the gallons \ of gas you put in the tank:")) print("You got",str(miledrove/gallons),"mpg on that tank of gas.") #美元與外國幣值稅換 #以美國為主所以要查美國相對於各國的匯率 #rate此函式中代表匯率 #結果應該是 所要稅換的錢幣*匯率 def ex4(): dollars = float(input("What is the amount of US \ Dollars you wish to convert? ")) rate = float(input("What is the current exchange \ rate (1~US Dollar equals what in the Foreign Currency)? ")) print("The amount in the Foreign Currency is $%.2f"%(dollars*rate)) #以list來做9*9乘法表 #必須清楚for迴圈內的動作,變數的變動 #了解如何存取list內的內容 def ex5(): N=list(range(1,10))#[1,2...9] X=list(range(1,10))#[1,2...9] for i in N: for y in X: print(i,"*",y,"=",i*y,end="\t") print() def ex6(): N=list(range(20,31))#[20,21,22...30] X=list(range(20,31))#[20,21,22...30] for i in N: for y in X: print("%3d * %3d =%4d"%(i,y,i*y),end="\t") print() #店員找錢 #使用while迴圈 應找的錢(change) dollars(各種錢幣) pay(應找的硬幣數) #每一次迴圈 把當時所要找的錢除目前使用的硬幣 得到其商 就是這種硬幣要找的數量 #找完一次,必須要把找的錢與已給的錢(硬幣直*找的硬幣數量)相減 #迴圈直到要找的錢為0時,結束迴圈 def pay(): change=int(input("input how much you should pay:")) dollars=[100,50,10,5,1] pay=[0,0,0,0,0] i=0 while(change!=0): coin=change//dollars[i] pay[i]=coin change=change-coin*dollars[i] i+=1 print(pay) for num in range(0,5): print("%3d : %d 張"%(dollars[num],pay[num])) pay()
2011年10月11日 星期二
100設計一甲_week4
#有關進位 #98436145310十進位 #0123456789ABCDEF十六進位 #0101101010二進位 #print(0b01101100) #print(hex(108)) #print(0x6c) #print(bin(108)) #print(bin(108)) def eight_bit(mystr): return (int(mystr[0])*2**7+int(mystr[1])*2**6+int(mystr[2])*2**5+ int(mystr[3])*2**4+int(mystr[4])*2**3+int(mystr[5])*2**2+int(mystr[6])*2**1+int(mystr[7])*2**0) #print(eight_bit("01101100")) #請編寫一個簡單的互動式程式, 程式列印出”請輸入您的姓名”後 #, 等待使用者輸入. 使用者輸入姓名 XXX 後, 程式列印出”XXX, 歡迎進入程式語言的世界”. def ex0(): var=1010.2011 print("%20d %5.1f %s"%(var,var,var)) def ex1(): username=input("請輸入您的姓名:") print(username,"歡迎進入程式語言的世界.") #請配合練習 1.14 編寫一個能夠列印從 1 累加到 100 總和的程式. def ex2(): total=0 for num in range(1,100+1): total=total+num print("The total is",total) def ex2_1(): total=0 num=1 while (num<101): total=total+num num=num+1 print("The total is",total) #請編寫一個能夠在列印 “請問由 1 累加到哪一個大於 1 的整數?”, 後讀取使用者輸入的整數, #並列印出從 1 累加到”某整數”總和的程式. def ex3(): usernum=int(input("請問由1累加到哪一個大於1的整數:")) if (usernum<1): print("不符合要求") else: total=0 for num in range (1,usernum+1): total=total+num print("1累加到",usernum,"總和:",total) #請問如何在使用者需要退出累加程式之前, 可以”一直”輸入累加極限值, 並且進行數值的累加運算? def ex1_19_1(): username=input("Please enter your name:") if(username is not None): for alphabet in username: print(alphabet,"ASCII value is",ord(alphabet)) def ex1_19_2(): username=input("Please enter your name:") print("The string capitalized is") for alphabet in username: num=ord(alphabet)-32 print(chr(num),end="") print() # Date NTD/USD #2011-10-07 30.493 #example iPhone 4S 16GB 199美元 #匯率稅換 US->$ def usconvert(): dollar=float(input("What is the amount of US Dollars you wish to convert:")) exchange=float(input("What is the current exchange rate:")) print("The amount in the Foreign Currency is $",dollar*exchange) #底下是有關1.8之問題 """ #1.8Q4 print(eight_bit("01101100")) #1.8Q5 print(hex(108)) #1.8Q6 print(bin(-62)) #1.8Q7 print(chr(62)) #print(hex(10)) """ #呼叫匯率稅換函式usconvert() #usconvert() #有問題請在底下留言,謝謝...
2011年10月4日 星期二
100設計一甲_week3
import random def NumericOperations(num1,num2): print("num1=",num1,"num2=",num2) print("num1+num2=",num1+num2) print("num1-num2=",num1-num2) print("num1*num2=",num1*num2) print("num1/num2=",num1/num2) print("num1//num2=",num1//num2) #除法之商 print("num1%num2=",num1%num2) #除法之餘數 print("num1**num2=",num1**num2) #num1的num2次方 def 猜數字(): 標準答案 = random.randint(1,100) 你猜的數字 = int(input("123:")) 猜測次數 = 1 while 標準答案 != 你猜的數字: if 標準答案 < 你猜的數字: print("太大了,再猜一次! 加油") else: print("太小了,再猜一次!加油") 你猜的數字 = int(input("請輸入您所猜的整數:")) 猜測次數 = 猜測次數+1 print("猜對了!總共猜了", 猜測次數, "次") def triangle(base,high): #area=base*high/2 return (base*high/2) def tri(base,high): h=(base*base+high*high)**0.5 print(h) #return (h) def squre(x,n): ans=1 while(n>0): ans=ans*x n=n-1 return (ans) print(squre(2,10)) #print(2**10) def ex1(x,n): ans=0 while x<=n: ans=ans+x x=x+1 return (ans) print(ex1(1,100)) #1+2+3+...+99+100 #one day one apple def apple(): ans="apple" guess="" count=0 while(ans!=guess and count<10): print("一天一??,醫生遠離你,只能猜十次喔") ans=input("ans:") count=count+1 if(ans!=guess): print("十次都沒答對.......") else: print("你答對了,猜了",count,"次,答案為一天一",ans,"醫生遠離你") #apple() print(triangle(3,4)) print(tri(3,4))
2011年9月27日 星期二
100設計一甲_week2
#請自行選用函式使用 #def #if else #ex1 num+mde 1~60 43 print None def ex1(): for num in range(1,60): if(num==43): print("None") else: print("Number:",40023100+num,"Department of Mechanical Design Engineering") #ex2 num+girl or boy 43no print def ex2(): for num in range(1,60): if(num!=43): if(num<=10): print("Number:",40023100+num,"girl") else: print("Number:",40023100+num,"boy") #ex3 socre A(81~100)B(41~80)C(1~40) def ex3(): for score in range(1,101): if(score<=40): print("Score:",score,"C") elif(score>40 and score<=80): print("Score:",score,"B") else: print("Score:",score,"A") def myadd(var1, var2): return (var1+var2) def myfun(): print("Hello World!") #ex4 funstory input bird(string) def fun(bird): print("有個小姐逛街走入一家店時,") print("店門口有一隻",bird,"大聲的喊『歡迎光臨』。") print("她覺得很好奇, 想試試看這隻",bird,"是不是真的這麼聰明,") print("就又走了出去") print("結果這隻",bird,"真的對她說『謝謝光臨。』") print("她覺得很好玩,於是又走了進去,『歡迎光臨』。") print("又走了出來『謝謝光臨』。") print("她來來回回走了十幾次,") print(bird,"也一直說『歡迎光臨』,『謝謝光臨』。") print("於是她又走進去,") print("這次這隻",bird,"不再理她,") print("反而轉過頭去對著裡面大喊:『老闆,有人在玩你的鳥』。") #可以直接印出回傳(return)值 print(myadd(1,2)) """ #也可以將回傳值存在另一變數,之後將之印出 temp=myadd(1,2) print(temp) """ myfun() #fun("鸚鵡") """ 英語小補帖(與課程無關,僅供參考) 1. You had me at hello. 0你一開口就征服我了 1你跟我說哈囉 2. Life will find its own way. 0我可以靠自己找路 1生命會自己找出口 3.Stupid is as stupid does. 0你是個笨蛋 1傻人有傻福 4. Destiny takes a hand. 0命中注定 1有錢能使鬼推磨 5. Am I reaching for the stars here? 0我是在強人所難嗎 1你很難追 6. I'll be back 0我會回來的 1我在你後面 answer:011000 """
2011年9月20日 星期二
100設計一甲_week1
#coding: utf8 #--->代表註解,程式會跳過,繼續執行 #print()-->印出 ()內的 #ex1~6 使用,請自行削掉註解符號(#) #ex1 print ("python!") print ("WOW!~") print ("python!","hello","WOW!",end="-->this is end!\n",sep="----") ###ex2 ##print ("python!",end="") ##print ("WOW!~") ###ex3 ##print ("python!","hello","WOW!",sep="----") ###ex4 ##print ("python!","hello","WOW!",sep="----",end="-->this is end!\n") ###ex5 ##for i in range (1,10): ## print ("hi","hello","python",sep="~") ###ex6 ##for i in range (1,60): ## print ("Number:",40023100+i,"mde")
2011年9月16日 星期五
建立bat關閉Immunet 3.0服務
net stop "Immunet 3.0" /yes請將以上內容貼入記事本並且選擇存檔類型為"所有檔案"另存為『Stop Immunet 3.0.bat』
放在隨身碟點兩下即關閉該服務,
或是直接複製該串後,按下Windows+R貼上執行。
後記:
電腦教室的防毒軟體實在很拖速度,
要進入控制台>切換到傳統檢視>系統管理工具>服務>汪洋中找到Immunet 3.0
這麼一長串的內容實在是讓人懶得去記,
而且自己電腦通常也不是裝這套防毒軟體,
乾脆做成一個可以點兩下馬上關閉的執行檔不是很快樂嗎=w=
2011年9月14日 星期三
基礎Python
Coding format FYI:http://www.python.org/dev/peps/pep-0263/
# -*- coding: utf-8 -*- olt = [83, 78, 84, 81] tat = [85, 90] fit = [85] s1 = (olt[0]+olt[1]+olt[2]+olt[3])\ *0.1 s2 = (tat[0]+tat[1])*0.15 s3 = fit[0]*0.3 print(s1+s2+s3) #if else number = 7 if number < 10: print("ture") else: print("false") #for for i in range(0,3): print("Number:%d"%(i))
2011年6月21日 星期二
期末考題
一、JAVA Applet 波浪
利用五芒星來畫出波浪,並以number變數控制其波數。
提示:
不需放在CMSimple內,直接執行程式即可,五芒星可以不必旋轉。
參考:
『Java - Wave Applet 範例』、『Java - Draw Star 範例方法』
範例結果如下:
二、CMSimple AJAX 表單輸入
在CMSimple中建立一個form表單包含三個input輸入框,能夠輸入你自己的 班級、姓名、學號 驗證身份是否正確,
若答案正確則在CMSimple中印出身份正確,
若其中一個答案錯誤則印出身份錯誤。
條件:
1. 必須包含AJAX menu選單。
參考:
『CMSimple - my_main_function 範例plugins程式』
提示:
PHP使用if多個條件成立的使用方法如下...
if(a=="字串1" && b=="字串2" && c=="字串3") { echo "內容1"; } else { echo "內容2"; }
三、CMSimple AJAX 即時顯示
請參考『Java - Draw Applet Gear 範例方法』將其編譯並產生Class檔案,在CMSimple中建立一個form表單包含四個input輸入框,
能夠輸入 座標x、座標y、節圓半徑rp、齒數n,
再使用Applet來顯示齒輪並能夠藉由以上參數來控制,
最後必須能夠由AJAX即時顯示在CMSimple中。
條件:
1. 必須包含AJAX menu選單。
參考:
『CMSimple - my_main_function 範例plugins程式』、『CMSimple - my_main_function 範例plugins子程式』
四、以Java Applet繪製動畫
請繪製一個寬為100的小正方形,讓小正方形能夠持續繞著寬為500的大正方形行走,
參考:
『Java - Draw Anime Star 範例』
提示:
大正方形可以不用畫出來。
範例結果如下:
參考範例目錄
- Java - Wave Applet 範例
- Java - Draw Star 範例方法
- CMSimple - my_main_function 範例plugins程式
- CMSimple - my_main_function 範例plugins子程式
- Java - Draw Gear 範例方法
- Java - Draw Anime Star 範例
Java - Wave Applet 範例
// 在 Eclipse 執行, 以滑鼠右鍵, Run as Applet // 在 NetBeans 執行, 則以滑鼠右鍵, 按下 Run File (系統會建立對應的 html) // 若 Application 與 Applet 同時存在, 在 Eclipse 可以分別以滑鼠右鍵, 選擇執行 // 若 Application 與 Applet 同時存在, 在 NetBeans 按下 Run File, 僅會執行 Application import java.applet.Applet; import java.awt.*; public class HelloWorld extends Applet { Stroke drawingStroke = new BasicStroke(2); // static 變數才可以在各方法中共用 String peakNumber = ""; int number; public void init() { peakNumber = getParameter("peakNumber"); if(peakNumber != null) { // 轉成整數使用 Integer.parseInt() // 轉為浮點數使用 Float.parseFloat() number = Integer.parseInt(peakNumber); } else { // 若 peakNumber 取不到值, 則內定為 5 number = 5; } } public void paint(Graphics g) { int i; Graphics2D graph = (Graphics2D)g; graph.setStroke(drawingStroke); graph.setPaint(Color.black); for(i=1;i<=number;i++) { // 每一行向下增量 20 單位 graph.drawString("Hello World", 10, 10+i*20); printC(graph,i, 80, 10+i*20); } for(i=number-1;i>=1;i--) { // 必須考慮前半部已經增量 number*20 graph.drawString("Hello World", 10, 10+(number+number-i)*20); printC(graph,i, 80, 10+(number+number-i)*20); } } public void stop() { } public void printC(Graphics g, int m, int x, int y) { Graphics2D graph = (Graphics2D)g; int i; for(i=0;i<m;i++) { graph.drawString("!", x+i*10, y); } } }
Java - Draw Star 範例方法
//drawstar(graph, x座標, y座標, 半徑, 旋轉角度); public void drawstar(Graphics g, int x, int y, int r, int angle){ Graphics2D graph = (Graphics2D)g; int i,j; double deg = 3.14159/180.; double temp1, temp2, temp3, temp4; double[] ptt_x = new double[10]; double[] ptt_y = new double[10]; double[] pt_x = new double[10]; double[] pt_y = new double[10]; for (i=0;i<7;i++) { pt_x[i] = x+r*Math.sin(72.*deg*i+angle*deg); pt_y[i] = y-r*Math.cos(72.*deg*i+angle*deg); temp1 = Math.cos(54.*deg-72.*deg*i-angle*deg); temp2 = Math.sin(54.*deg-72.*deg*i-angle*deg); temp3 = Math.sin(18.*deg); temp4 = Math.cos(36.*deg); ptt_x[i] = x+r*temp3*temp1/temp4; ptt_y[i] = y-r*temp3*temp2/temp4; } for (i=0;i<5;i++) { graph.drawLine((int)pt_x[i], (int)pt_y[i], (int)ptt_x[i], (int)ptt_y[i]); j=i+1; graph.drawLine((int)ptt_x[i], (int)ptt_y[i], (int)pt_x[j], (int)pt_y[j]); } }
CMSimple - my_main_function 範例plugins程式
<?php // 檔名:index.php // 編寫成類別格式的程式樣版 (ready for CMSimple plugin) // CMSimple呼叫格式「#CMSimple $output.=my_main_function();#」 // 程式的主函式 function my_main_function() { $myplugin = new Cmyplugin; return $myplugin->myplugin_main(); } // 程式類別 class Cmyplugin{ public $common1 = "common1"; public $common2 = "common2"; function myplugin_main() { $menu=$_GET["menu"]; $printonce=0; if ($menu) { switch($menu) { case "function1": // could be html form or action scripts $output .= $this->myplugin_function1(); $output .= $this->myplugin_printmenu(); break; case "function2": // could be html form or action scripts $output .= $this->myplugin_function2(); $output .= $this->myplugin_printmenu(); break; case "function3": // AJAX 即時顯示範例 $output .= $this->myplugin_function3(); $output .= $this->myplugin_printmenu(); break; case "printmenu": $output .= $this->myplugin_printmenu(); break; default: // use function3 as default function $output .= $this->myplugin_printmenu(); } } else { // 未指定 menu 則列出表單 $output .= $this->myplugin_printmenu(); } return $output; } //範例程式1 - 印出文字測試 function myplugin_function1() { $output = "function 1 and some html ".$this->common1." and ".$this->common2; $output .= " some more html"; return $output; } //範例程式2 - 印出文字測試 function myplugin_function2() { $output = "function 2 and some html ".$this->common1." and ".$this->common2; $output .= " some more html"; return $output; } //範例程式3 - AJAX 即時顯示結果 function myplugin_function3() { global $sn, $su; $output.=" <script src=\"./jscript/prototype.js\" language=\"JavaScript\" type=\"text/javascript\"></script> <script language=\"JavaScript\" type=\"text/javascript\"> function submitEntryForm(event) { var updater = new Ajax.Updater({success:'var_list',error:'error_list'}, './plugins/my_main_function/addaction.php', { parameters: {num1:$('num1').value, num2:$('num2').value, num3:$('num3').value} }); event.preventDefault(); } function addObservers(event) { $('entry').observe('submit', submitEntryForm); } Event.observe(window, 'load', addObservers); </script> <form id='entry' action='' method='post'> num1: <input type='text' name='num1' id='num1' value='10' /><br /> num2: <input type='text' name='num2' id='num2' value='20' /><br /> num3: <input type='text' name='num3' id='num3' value='30' /><br /> <input type='submit' id='submit' value='Send' /> </form> <div id='var_list'></div> <div id='error_list'></div> "; return $output; } // 以下成員函式, 用來測試 AJAX 表單的使用 function myplugin_printmenu() { global $sn,$su; $output.=" <script src=\"./jscript/prototype.js\" language=\"JavaScript\" type=\"text/javascript\"></script> <script src=\"./jscript/Menu.js\" language=\"JavaScript\" type=\"text/javascript\"></script> <script language=\"JavaScript\" type=\"text/javascript\"> Menu.init(\"menu2\"); </script> <style type=\"text/css\"> #menu2, #menu2 ul { margin: 0; padding: 0; } #menu2 li { list-style-type: none; } #menu2 { font: 12px Verdana, Arial; } #menu2 li, #menu2 a { float: left; } #menu2 a { display: block; padding: 6px; text-decoration: none; background-color: #FFF; color: #2362AF; } #menu2 a:hover, #menu2 a.menu_open { background-color: #2362AF; color: #FFF; } #menu2 ul { visibility: hidden; position: absolute; width: 150px; border: 1px solid #CCC; margin-top: 1px; } #menu2 ul li { width: 150px; } #menu2 ul a { width: 144px; padding: 3px; } * html #menu2 ul a { width: 150px; } #menu2 ul a.submenu { background-image: url(\"./jscript/menu_arrow_right.gif\"); background-repeat: no-repeat; background-position: 138px 6px; } #menu2 ul a.submenu:hover, #menu2 ul a.submenu.menu_open { background-image: url(\"./jscript/menu_arrow_right_mo.gif\"); } #menu2 ul ul { margin-top: -1px; } </style> <ul id=\"menu2\"> <li><a href=\"".$sn."?".$su."&menu=function1\">Data 1</a></li> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2</a> <ul> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2-1</a></li> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2-2</a> <ul> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2-2-1</a></li> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2-2-2</a></li> </ul> </li> <li><a href=\"".$sn."?".$su."&menu=function2\">Data 2-3</a> </ul> </li> <li><a href=\"".$sn."?".$su."&menu=function3\">AJAX即時顯示</a></li> </ul> "; return $output; } }
CMSimple - my_main_function 範例plugins子程式
<?php //檔名:addaction.php $total = $_POST['num1'] + $_POST['num2'] + $_POST['num3']; echo $_POST['num1']."+".$_POST['num2']."+".$_POST['num3']."=".$total; ?>
Java - Draw Gear 範例方法
//drawgear(graph, x座標, y座標, 節圓半徑, 齒數); public void drawgear(Graphics g, int midx, int midy, int rp, int n){ Graphics2D graph = (Graphics2D)g; int imax=15; int i=0; int j=0; double a=0, d=0, ra=0, rb=0, rd=0, dr=0, num=0, sigma=0, ang=0, ang2=0, lxd=0, lyd=0, r=0, theta=0, alpha=0, xpt=0, ypt=0, xd=0, yd=0, lfx=0, lfy=0, rfx=0, rfy=0; double pi = Math.acos(-1); double deg = pi/180.; graph.drawLine(midx, midy, midx, midy-rp); a = 2*rp/n; d = 2.5*rp/n; ra = rp+a; rb = rp*Math.cos(20*deg); rd = rp-d; dr = (ra-rb)/imax; num = n; sigma = 3.14159/(2*num)+Math.tan(20*deg)-20*deg; for(j=0;j<n;j++) { ang = -2.*j*pi/num+sigma; ang2 = 2.*j*pi/num+sigma; lxd = midx+rd*Math.sin(ang2-2.*3.14159/num); lyd = midy-rd*Math.cos(ang2-2.*3.14159/num); xd = rd*Math.sin(-ang); yd = rd*Math.cos(-ang); for(i=0;i<=imax;i++) { r = rb+i*dr; theta = Math.sqrt((r*r)/(rb*rb)-1.); alpha = theta - Math.atan(theta); xpt = r*Math.sin(alpha-ang); ypt = r*Math.cos(alpha-ang); if(i==0) { graph.drawLine((int)(midx+xpt), (int)(midy-ypt), (int)(midx+xd), (int)(midy-yd)); } graph.drawLine((int)(midx+xpt), (int)(midy-ypt), (int)(midx+xpt), (int)(midy-ypt)); if(i==imax) { lfx = midx+xpt; lfy = midy-ypt; } } /*the line from last end of dedendum point to the recent end of dedendum point*/ graph.drawLine((int)lxd, (int)lyd, (int)(midx + xd), (int)(midy - yd)); for(i=0;i<=imax;i++) { r = rb+i*dr; theta = Math.sqrt((r*r)/(rb*rb)-1.); alpha = theta-Math.atan(theta); xpt = r*Math.sin(ang2-alpha); ypt = r*Math.cos(ang2-alpha); xd = rd*Math.sin(ang2); yd = rd*Math.cos(ang2); if(i==0) { graph.drawLine((int)(midx+xpt), (int)(midy-ypt), (int)(midx+xd), (int)(midy-yd)); } graph.drawLine((int)(midx+xpt), (int)(midy-ypt), (int)(midx+xpt), (int)(midy-ypt)); if(i==imax) { rfx = midx+xpt; rfy = midy-ypt; } } graph.drawLine((int)lfx, (int)lfy, (int)rfx, (int)rfy); } }
Java - Draw Anime Star 範例
import java.applet.Applet; import java.awt.*; public class MovingHelloWorld extends Applet implements Runnable{ Stroke drawingStroke = new BasicStroke(2); String peakNumber = ""; int number; int frame, delay = 13; Thread animator; boolean frozen = false; Dimension offDimension; Image offImage; Graphics offGraphics; double deg=3.14159/180.; int pos_x=0; int vel_x=1; int pos_y=0; int vel_y=1; int bound_x=200; int bound_y=200; public void init() { setBackground(Color.white); peakNumber = getParameter("peakNumber"); if(peakNumber != null) { number = Integer.parseInt(peakNumber); } else { number = 3; } } public void start() { if (frozen) { } else { if (animator == null) { animator = new Thread(this); } animator.start(); } } // 利用繪圖物件變數 g 執行每一影格的繪圖 public void paintFrame(Graphics g) { int i; // 將 g 轉換為 Graphics2D 物件格式, 然後將位址指給 graph 繪圖物件 // 實際執行繪圖的物件為 graph Graphics2D graph = (Graphics2D)g; // 有關繪筆種類 (選擇筆觸格式) Stroke stroke = //new BasicStroke (15.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); new BasicStroke (2.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER); //graph.setStroke(drawingStroke); graph.setStroke(stroke); graph.setPaint(Color.black); if (pos_x < 0) { // 列印位置碰到左邊界時, 位置歸零, 並且改變速度方向 pos_x = 0; // 將 x 列印位置歸零 vel_x = -vel_x; // 改變速度方向. } else if (pos_x > bound_x) { // 列印位置碰到右邊界時, 位置設為右邊頂值, 並且改變速度方向 pos_x = bound_x; // 將 x 列印位置停在右邊邊界 vel_x = -vel_x; // 改變速度方向 } // x 列印位置, 以 vel_x 的速度進行增量 pos_x += vel_x; if (pos_y < 0) { // 列印位置碰到左邊界時, 位置歸零, 並且改變速度方向 pos_y = 0; // 將 y 列印位置歸零 vel_y = -vel_y; // 改變速度方向. } else if (pos_y > bound_y) { // 列印位置碰到右邊界時, 位置設為右邊頂值, 並且改變速度方向 pos_y = bound_y; // 將 y 列印位置停在右邊邊界 vel_y = -vel_y; // 改變速度方向 } // y 列印位置, 以 vel_y 的速度進行增量 pos_y += vel_y; // 畫出旋轉的 drawstar drawstar(graph, 100+pos_x, 100+pos_y, 30, frame); } public void stop() { animator = null; offImage = null; offGraphics = null; } public void run() { long startTime = System.currentTimeMillis(); while (Thread.currentThread() == animator) { frame++; repaint(); try { startTime +=delay; Thread.sleep(Math.max(0, startTime-System.currentTimeMillis())); } catch (InterruptedException e) { break; } } } public boolean mouseDown(Event e, int x, int y) { if (frozen) { frozen = false; start(); } else { frozen = true; stop(); } return true; } // 更新繪圖畫面 public void update( Graphics g ) { Dimension d = getSize(); offImage = createImage(d.width, d.height); offGraphics = offImage.getGraphics(); offGraphics.setColor(getBackground()); offGraphics.fillRect(0, 0, d.width, d.height); offGraphics.setColor(Color.black); paintFrame(offGraphics); g.drawImage(offImage, 0, 0, null); } //drawstar(graph, x座標, y座標, 半徑, 旋轉角度); public void drawstar(Graphics g, int x, int y, int r, int angle){ Graphics2D graph = (Graphics2D)g; int i,j; double deg = 3.14159/180.; double temp1, temp2, temp3, temp4; double[] ptt_x = new double[10]; double[] ptt_y = new double[10]; double[] pt_x = new double[10]; double[] pt_y = new double[10]; for (i=0;i<7;i++) { pt_x[i] = x+r*Math.sin(72.*deg*i+angle*deg); pt_y[i] = y-r*Math.cos(72.*deg*i+angle*deg); temp1 = Math.cos(54.*deg-72.*deg*i-angle*deg); temp2 = Math.sin(54.*deg-72.*deg*i-angle*deg); temp3 = Math.sin(18.*deg); temp4 = Math.cos(36.*deg); ptt_x[i] = x+r*temp3*temp1/temp4; ptt_y[i] = y-r*temp3*temp2/temp4; } for (i=0;i<5;i++) { graph.drawLine((int)pt_x[i], (int)pt_y[i], (int)ptt_x[i], (int)ptt_y[i]); j=i+1; graph.drawLine((int)ptt_x[i], (int)ptt_y[i], (int)pt_x[j], (int)pt_y[j]); } } }
2011年6月7日 星期二
POST & PHP外部輸入值給java
function control() { global $sn,$su; $output="<form method=\"post\" action=".$sn."?".$su."&menu=entercontrol>"; $output.="x:<input type=\"text\" name=\"x\" value=\"350\"><br/>"; $output.="y:<input type=\"text\" name=\"y\" value=\"150\"><br/>"; $output.="r:<input type=\"text\" name=\"r\" value=\"30\"><br/>"; $output.="angle:<input type=\"text\" name=\"angle\" value=\"0\"><br/>"; $output.="<input type=\"submit\" value=\"send\">"; $output.="</form>"; return $output; } function entercontrol(){ $x=$_POST["x"]; $y=$_POST["y"]; $r=$_POST["r"]; $angle=$_POST["angle"]; $output.="<applet codebase=\"plugins/my_main_function\" code=\"drawstar.\" height=\"450\" width=\"450\">"; $output.="<param name=\"peakNumber\" value=x/>"; //param name 對應給值之變數名稱 value 值 $output.="<param name=\"origx\" value=\"$x\"/>"; $output.="<param name=\"origy\" value=\"$y\"/>"; $output.="<param name=\"r\" value=\"$r\"/>"; $output.="<param name=\"angle\" value=\"$angle\"/>"; $output.="</applet>"; return $output; }
2011 c2期中考後的小考-題目
第一題 (30%)
請使用 java+awt套件 繪製出三角形、梯形、菱形,圖形尺寸自訂。
並利用number變數控制展示圖形,如 number=1 時展示三角形,number=2 時展示梯形、number=3 時展示菱形。
參考資料:[url]http://blog.kmol.info/?p=385[/url]
第二題 (30%)
請將下列PHP程式碼由函式形式改為類別形式。
參考資料:[url]http://blog.kmol.info/?p=376[/url]
程式碼:
第三題 (20%)
請將下列 java 程式碼編譯,並改成 CMSimple Plugins 且在 CMSimple 底下執行,可與第四題一起展示。
Hint:注意package drawstar,須放置在drawstar目錄底下,可自由更改。
Hint:注意檔案名稱必須為Main.java。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
程式碼:
第四題 (20%)
利用第三題編譯好之java程式,透過 CMSimple Plugins 控制其參數,並在 CMSimple 底下執行,可與第三題一起展示。
Hint:控制變數之名稱分別為 origx(x軸位置)、origy(y軸位置)、r(半徑)、angle(旋轉角度)。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
請使用 java+awt套件 繪製出三角形、梯形、菱形,圖形尺寸自訂。
並利用number變數控制展示圖形,如 number=1 時展示三角形,number=2 時展示梯形、number=3 時展示菱形。
參考資料:[url]http://blog.kmol.info/?p=385[/url]
第二題 (30%)
請將下列PHP程式碼由函式形式改為類別形式。
參考資料:[url]http://blog.kmol.info/?p=376[/url]
程式碼:
<?php $m=10; //$m=$_GET["m"]; //$color=$_GET["color"]; $color="red"; printallH($m); for($i=0;$i<$m-2;$i+=1) { printheadtailH($m); } printallH($m); function printallH($m) { // 函式目的,由 $m 變數控制列印 H 的個數,全部列印相同的 H for($i=1;$i<=$m;$i+=1) { echo "H"; } // 印完後,跳行 echo "<br>"; } function printheadtailH($m) { global $color; // 列印只有頭尾是 H ,其餘是空白 echo "H"; for($i=1;$i<=$m-2;$i+=1) { // 採用 css 控制列印字元顏色,將 orange 改為 white,可以列出白色字元 echo "<span style=\"color:".$color."\">H</span>"; //echo "<span style="color:white">H</span>"; } echo "H"; echo "<br>"; } ?>
第三題 (20%)
請將下列 java 程式碼編譯,並改成 CMSimple Plugins 且在 CMSimple 底下執行,可與第四題一起展示。
Hint:注意package drawstar,須放置在drawstar目錄底下,可自由更改。
Hint:注意檔案名稱必須為Main.java。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
程式碼:
package drawstar; import java.applet.Applet; import java.awt.*; // for Frame Exit import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Main extends Applet { Stroke drawingStroke = new BasicStroke(2); // static 變數才可以在各方法中共用 static String setorigx = null; static String setorigy = null; static String setr = null; static String setangle = null; static float origx,origy,r,angle; public void init() { // getParameter 取得字串值 setorigx = getParameter("origx"); setorigy = getParameter("origy"); setr = getParameter("r"); setangle = getParameter("angle"); if(setorigx!=null && setorigy!= null && setr!=null && setangle!= null ) { // 轉成整數使用 Integer.parseInt() // 轉為浮點數使用 Float.parseFloat() origx = Integer.parseInt(setorigx); origy = Integer.parseInt(setorigy); r = Integer.parseInt(setr); angle = Integer.parseInt(setangle); } else { // 若 peakNumber 取不到值, 則內定為 5 origx=150; origy=150; r=30; angle=180; } } public void paint(Graphics g) { int i,j; float x,y; double temp1,temp2,temp3,temp4; double degree=3.14159/180.0; double[] ptx=new double[6]; double[] pty=new double[6]; double[] pttx=new double[6]; double[] ptty=new double[6]; Graphics2D graph = (Graphics2D)g; graph.setStroke(drawingStroke); graph.setPaint(Color.black); for(i=0;i<6;i++) { ptx[i]=origx+r*Math.sin(72.*i*degree+angle*degree); pty[i]=origy+r*Math.cos(72.*i*degree+angle*degree); temp1= Math.cos(54.*degree-72.*degree*i-angle*degree); temp2= Math.sin(54.*degree-72.*degree*i-angle*degree); temp3= Math.sin(18.*degree); temp4= Math.cos(36.*degree); pttx[i]=origx+r*temp3*temp1/temp4; ptty[i]=origy+r*temp3*temp2/temp4; } for(i=0;i<5;i++) { graph.drawLine((int)ptx[i], (int)pty[i], (int)pttx[i], (int)ptty[i]); j=i+1; graph.drawLine((int)pttx[i], (int)ptty[i], (int)ptx[j], (int)pty[j]); } } public void stop() { } public void printC(Graphics g, int m, int x, int y){ Graphics2D graph = (Graphics2D)g; int i; for(i=0;i<m;i++) { graph.drawString("!", x+i*10, y); } } public static void main(String[] args) { Applet applet = new Main(); Frame frm = new Frame("我的主方法(函式)框架"); frm.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frm.setSize(100, 100); frm.setVisible(true); // 將 applet 加入 Frame 中 frm.add(applet); frm.setSize(300, 300); frm.setVisible(true); applet.init(); } }
第四題 (20%)
利用第三題編譯好之java程式,透過 CMSimple Plugins 控制其參數,並在 CMSimple 底下執行,可與第三題一起展示。
Hint:控制變數之名稱分別為 origx(x軸位置)、origy(y軸位置)、r(半徑)、angle(旋轉角度)。
參考資料:[url]http://blog.kmol.info/?p=437[/url]
2011年5月28日 星期六
兩行reg碼進行系統防寫
2011年5月10日 星期二
MDE電腦教室防隨身碟病毒小工具(已無效)
2011.5.17補充:
電腦教室有更強的病毒,
現在這招已經擋不住啦~
java applet drawstar
畫星星函式
public void cad_drawstar(Graphics g,int x,int y,int r,int angle) { Graphics2D graph = (Graphics2D)g; double deg,temp1,temp2,temp3,temp4; deg=3.14159/180.0; double pt_x[] = new double[7]; //java 宣告陣列 格式 double pt_y[] = new double[7]; double ptt_x[] = new double[7]; double ptt_y[] = new double[7]; int i,j; for (i=0;i<7;i++){ pt_x[i]=x+r*Math.sin(72.*deg*i+angle*deg); //sin cos 三角函數 使用格式 Math. pt_y[i]=y-r*Math.cos(72.*deg*i+angle*deg); temp1=Math.cos(54.*deg-72.*deg*i-angle*deg); temp2=Math.sin(54.*deg-72.*deg*i-angle*deg); temp3=Math.sin(18.*deg); temp4=Math.cos(36.*deg); ptt_x[i]=x+r*temp3*temp1/temp4; ptt_y[i]=y-r*temp3*temp2/temp4; } for (i=0;i<5;i++){ graph.drawLine((int)pt_x[i],(int)pt_y[i],(int)ptt_x[i],(int)ptt_y[i]); //graph.drawLine 內的點必須是 int 因此把double 等變數強制轉換 j=i+1; graph.drawLine((int)ptt_x[i],(int)ptt_y[i],(int)pt_x[j],(int)pt_y[j]); } }php call java in cmsimple
<?php function HelloWorldApp(){ $output="<applet codebase=\"plugins/test\" code=\"HelloWorldApp\" height=\"500\" width=\"500\"></applet>"; return $output; } ?>
2011年5月3日 星期二
Java Applet HTML 新舊版嵌入語法
Class 檔案嵌入
舊版 HTML4 :
新版 HTML5 (測試階段):
Jar 檔案嵌入
舊版 HTML4 :
新版 HTML5 (測試階段):
舊版 HTML4 :
<applet codebase="Hello/World" code="HelloWorld.class" height="500" width="500"> <param name="Number" value="1" /> </applet>
新版 HTML5 (測試階段):
<object type="application/x-java-applet" codebase="Hello/World" code="HelloWorld.class" height="500" width="500"> <param name="Number" value="9" /> </object>
Jar 檔案嵌入
舊版 HTML4 :
<applet archive="Hello/World" code="HelloWorld.jar" height="500" width="500"> <param name="Number" value="8" /> </applet>
新版 HTML5 (測試階段):
<object type="application/x-java-applet" archive="Hello/World" code="HelloWorld.jar" height="500" width="500"> <param name="Number" value="7" /> </object>
c php applet
c 將波浪寫入txt檔
java applet由php 取值給入
#include <stdio.h> #include <stdlib.h> void helloworld(int e){ FILE *fp1; fp1=fopen("output.txt","w"); int s,point; for(s=1;s<=e;s++){ fprintf(fp1,"Hello World"); //fprintf主要目的是供你將資料,以格式化方式寫入某檔案內 /*fprintf( )和printf( )兩者唯一的差別是, printf( )會將資料列印在螢幕上,而fprintf( )會將資料列印在某個檔案內。*/ for(point=1;point<=s;point++){ fprintf(fp1,"!"); } fprintf(fp1,"\n"); } for(s=e-1;s>0;s--){ fprintf(fp1,"Hello World"); for(point=1;point<=s;point++){ fprintf(fp1,"!"); } fprintf(fp1,"\n"); } fclose(fp1); } int main(int argc, char** argv) { // int number; if(argc > 1) number = (int)atoi(argv[1]); else number = 50; helloworld(number); return 0; }php 取得值並呼叫c執行檔
<?php /************************************************** File:phpCallexe.php Name:執行exe Explain:呼叫C語言並執行 ****************************************By QQBoxy*/ if(isset($_GET['n'])) $num = $_GET['n']; else $num = 20; $cmd = exec('c1.exe '.$num); execInBackground($cmd); echo 'It OK!!'; //------------------------------------------------------- function execInBackground($cmd) { if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ".$cmd."", "r")); } else { exec($cmd." ".$num." > /dev/null &"); } } //------------------------------------------------------- ?>
import java.applet.Applet; import java.awt.*; // for Frame Exit import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class HelloWorldApp extends Applet { Stroke drawingStroke = new BasicStroke(2); public void init() { } public void paint(Graphics g) { int i,p; String peakNumber = ""; peakNumber = getParameter("peakNumber"); if(peakNumber != null) { // 轉成整數使用 Integer.parseInt() // 轉為浮點數使用 Float.parseFloat() p = Integer.parseInt(peakNumber); } else { // 若 peakNumber 取不到值, 則內定為 5 p = 10; } Graphics2D graph = (Graphics2D)g; graph.setStroke(drawingStroke); graph.setPaint(Color.black); for(i=1;i<=p;i++) { graph.drawString("Hello World", 10, 10+i*20); printC(graph,i, 80, 10+i*20); } for(i=p-1;i>=1;i--) { //graph.drawString("Hello World", 10, 10+(10+10-i)*20); //printC(graph,i, 80, 10+(10+10-i)*20); graph.drawString("Hello World", 10, 20+10+(2*p-1)*20-20*i); printC(graph,i, 80, 20+10+(2*p-1)*20-20*i); } } public void stop() { } public void printC(Graphics g, int m, int x, int y){ Graphics2D graph = (Graphics2D)g; int i; for(i=0;i<m;i++) { graph.drawString("!", x+i*10, y); } } public static void main(String[] args) { Frame frm = new Frame("我的主方法(函式)框架"); Applet applet = new HelloWorldApp(); frm.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frm.setSize(100, 100); frm.setVisible(true); // 將 applet 加入 Frame 中 frm.add(applet); frm.setSize(300, 300); frm.setVisible(true); applet.init(); } // 結束 main /* Command Lines int i = 0; for(i=1;i<=10;i++) { System.out.print("Hello World"); printC(i); System.out.print("\n"); } for(i=9;i>=1;i--) { System.out.print("Hello World"); printC(i); System.out.print("\n"); } } static void printC(int m){ int i; for(i=0;i<m;i++) { System.out.print("!"); } } */ } // 結束 HelloWorldApp class
java applet由php 取值給入
<applet code="HelloWorldApp" height="500" width="500"> <param name="peakNumber" value="10" /> </applet>
import java.applet.Applet; import java.awt.*; public class HelloWorldApp extends Applet { Stroke drawingStroke = new BasicStroke(2); // static 變數才可以在各方法中共用 String peakNumber = ""; int number; public void init() { peakNumber = getParameter("peakNumber"); if(peakNumber != null) { // 轉成整數使用 Integer.parseInt() // 轉為浮點數使用 Float.parseFloat() number = Integer.parseInt(peakNumber); } else { // 若 peakNumber 取不到值, 則內定為 5 number = 5; } } public void paint(Graphics g) { int i; Graphics2D graph = (Graphics2D)g; graph.setStroke(drawingStroke); graph.setPaint(Color.black); for(i=1;i<=number;i++) { // 每一行向下增量 20 單位 graph.drawString("Hello World", 10, 10+i*20); printC(graph,i, 80, 10+i*20); } for(i=number-1;i>=1;i--) { // 必須考慮前半部已經增量 number*20 graph.drawString("Hello World", 10, 10+(number+number-i)*20); printC(graph,i, 80, 10+(number+number-i)*20); } } public void printC(Graphics g, int m, int x, int y){ Graphics2D graph = (Graphics2D)g; int i; for(i=0;i<m;i++) { graph.drawString("!", x+i*10, y); } s(graph,20,20,15); } public void s(Graphics g, int x, int y, int s){ Graphics2D graph = (Graphics2D)g; graph.drawLine(x, y, x+s, y); graph.drawLine(x+s, y, x+s, y+s); graph.drawLine(x+s, y+s, x, y+s); graph.drawLine(x, y+s, x, y); } public void square(Graphics g, int x, int y, int s){ Graphics2D graph = (Graphics2D)g; graph.drawLine(x, y, x+s, y+s); } }
2011年4月26日 星期二
期中考題
一. 利用C語言寫一程式,並利用1個變數完成一數列級數控制,程式內請使用自訂函式來完成。
數列級數的規則為:奇數相加減,計算到設定變數的數量
例:變數為9,計算的值為1-3+5-7+9-11+13-15+17=9
1~17之間有9個數字做運算,中間的符號為-+-+..-+互相交 替,求出運算結果即可
Q1.c
index.php
一. 請利用C語言寫出下列圖形,利用1變數控制其圖形大小,並使用自訂函式做程式。
註:圖中0與1可自行更換。
Q2.c
二. 把上題改成PHP並放上CMS裡,使用GET指令,讓網址上可輸入1個變數
index.php
請使用Java語言撰寫一海嘯程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制波浪大小,
第2個變數為輸出多少個波浪。
輸出3波結果如:
W
WW
WWW
01_tsunami.java
請使用Java語言撰寫一訊號波程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制三個變數,
第1個變數控制訊號波的大小,
第2個變數控制訊號波的高度,
第3個變數為輸出多少個訊號波。
波形解釋如圖:
輸出2波結果如:
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制鋸齒大小,
第2個變數為輸出多少個鋸齒。
04_sawtooth.java
數列級數的規則為:奇數相加減,計算到設定變數的數量
例:變數為9,計算的值為1-3+5-7+9-11+13-15+17=9
1~17之間有9個數字做運算,中間的符號為-+-+..-+互相交 替,求出運算結果即可
Q1.c
#include<stdio.h> void plus(int end){ //end為數字的數量 int i,y=1,total=0; //y為數字之初始值 total為累加值 for(i=0;i<end;i++){ //控制數字之數量 if(i>0){ //大於一個數字才開始做加減 if(i%2!=0){ //判斷+- 偶數為減 奇數為加 total-=y; //將total值加或減 printf("-%d",y); } else{ total+=y; printf("+%d",y); } } else { total+=y; printf("%d",y); } y=y+2; //每次回圈y+2 遞增 } printf("=%d",total); } main(){ plus(15);//呼叫自訂函式 return 0; }
#include<stdio.h> void plus(int num){ int i,s=-1,sum=0; for(i=1;i<num*2;i+=2) { s *= -1; sum += i*s; printf("%+d",i*s); } printf("=%d\n",sum); } int main(){ plus(5); return 0; }二. 把上題改成PHP並放上CMS裡,使用GET指令,讓網址上可輸入1個變數
index.php
<?php function hello(){ $end=$_GET["end"]; $y=1; $total=0; $output=""; for($i=0;$i<$end;$i++) { if($i>0){ if($i%2!=0) { $total-=$y; $output.="-".$y; } else{ $total+=$y; $output.="+".$y; } } else { $total+=$y; $output.=$y; } $y=$y+2; } $output.= "=".$total; return $output; } ?>
一. 請利用C語言寫出下列圖形,利用1變數控制其圖形大小,並使用自訂函式做程式。
註:圖中0與1可自行更換。
Q2.c
#include<stdio.h> void print(int end){ int e,i,j,s,k; for(i=1;i<=end;i++){ //end 控制做幾次 for(s=1;s<i;s++){ //s列印1前面的空格 但第一次時不列印 所以s<i printf(" "); } for(e=i;e<=end;e++){ //e 控制列印1的數量(漸減) printf("1"); } printf("\n"); //換行 for(j=i;j<end;j++){ //j 列印0前面的空格 printf(" "); } //for(k=end-i;k<end;k++){ for(k=1;k<=i;k++){ //k 控制列印0的數量(漸增) printf("0"); } printf("\n"); } } main(){ print(3);//呼叫自訂函式 return 0; }
二. 把上題改成PHP並放上CMS裡,使用GET指令,讓網址上可輸入1個變數
index.php
<?php function pri(){ $end=$_GET["end"];// 使用get 直接從網址列中輸入變數值 $output=""; for($i=1;$i<=$end;$i++){ for($s=1;$s<$i;$s++){ $output.=" ";// 空格問題 無法對齊 請使用全行 } for($e=$i;$e<=$end;$e++){ $output.="1"; } $output.="<br />"; for($j=$i;$j<$end;$j++){ $output.=" "; } for($k=$end-$i;$k<$end;$k++){ $output.="0"; } $output.="<br />"; } return "<pre>".$output."</pre>"; //pre 元素可定義預格式化的文本。被包圍在 pre 元素中的文本通常會保留空格和換行符。而文本也會呈現为等寬字體。 } ?>
請使用Java語言撰寫一海嘯程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制波浪大小,
第2個變數為輸出多少個波浪。
輸出3波結果如:
W
WW
WWW
01_tsunami.java
package tsunami; //package是一種管理容器 管理所定義的名稱避免發生衝突 public class Main { //定義一個類別 static void tsunami(int num){ //建立一個名為海嘯的方法 int i,j; for(i=1;i<=num;i++) { //每波海嘯距離 for(j=0;j<i;j++) //增加海嘯的高度 System.out.print("L"); //print為不換行列印 System.out.println(""); //println為換行列印 } } public static void main(String[] args) { //建立一個主要的方法 int w; for(w=0;w<3;w++) tsunami(4); //呼叫海嘯方法 } }
請使用Java語言撰寫一訊號波程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制三個變數,
第1個變數控制訊號波的大小,
第2個變數控制訊號波的高度,
第3個變數為輸出多少個訊號波。
波形解釋如圖:
輸出2波結果如:
S S S SSSS SSSS SSSS S S S SSSS SSSS SSSS S S S SSSS SSSS SSSS S S S SSSS SSSS SSSS02_square.java
package square; //package是一種管理容器 管理所定義的名稱避免發生衝突 public class Main { //定義一個類別 static void square(int m, int n){ //建立一個名為square的方法 int i,j; for(i=1;i<=m;i++) //每波訊號波距離 System.out.println("S"); for(i=1;i<=m;i++) { for(j=0;j<n;j++) System.out.print("S"); //print為不換行列印 System.out.println(""); //println為換行列印 } for(i=1;i<=m;i++) { for(j=1;j<n;j++) System.out.print(" "); System.out.println("S"); } for(i=1;i<=m;i++) { for(j=0;j<n;j++) System.out.print("S"); System.out.println(""); } } public static void main(String[] args) { //建立一個主要的方法 int w; for(w=0;w<2;w++) square(3,4); //呼叫square方法 } }請使用Java語言撰寫一鋸齒程式,
內容至少須呼叫一個方法(類似C語言的副程式),
能夠控制兩個變數,
第1個變數控制鋸齒大小,
第2個變數為輸出多少個鋸齒。
04_sawtooth.java
package sawtooth; //package是一種管理容器 管理所定義的名稱避免發生衝突 public class Main { //定義一個類別 static void sawtooth(int n){ //建立一個名為鋸齒的方法 int i,j; for(i=1;i<=n;i++) { for(j=1;j<i;j++) System.out.print(" "); System.out.println("P"); } } public static void main(String[] args) { //建立一個主要的方法 int w; for(w=0;w<3;w++) sawtooth(4); //呼叫鋸齒方法 } }
2011年4月11日 星期一
Hello World Wave 範例
helloworld.java
package hello_world; //package是一種管理容器 管理所定義的名稱避免發生衝突 public class Main { //定義一個類別 static int i,j,k; //宣告結構變數 static void upwave(int b){ //前波浪 for(i=0;i<=b;i++){ System.out.print("Hello World"); //print為不換行列印 for(j=0;j<=i;j++){ System.out.print("!"); } System.out.println(i); //println為換行列印 } } static void downwave(int b){ //後波浪 for(i=0;i<=b;i++){ System.out.print("Hello World"); for(j=0;j<=b-i;j++){ System.out.print("!"); } System.out.println(i); } } static void printC(int a,int b){ //宣告一個方法 for(k=1;k<=a;k++){ upwave(b); downwave(b); } } public static void main(String[] args) { //宣告一個名稱為main的方法 printC(3,5); //呼叫printC函式 } }完整專案下載: Eclipse Helloworld Wave、Netbeans Helloworld Wave
訂閱:
文章 (Atom)