『壹』 看圖寫話小能手。 ________________________________________________________________
放學了,小明看見人行道上有一塊香蕉皮,他撿起香蕉皮向垃圾箱走去,後面的一個大姐姐看見了說:「你真是個好孩子。」(合理即可) |
『貳』 一年級科技小能手主要事跡要怎麼寫
尊敬的老師,同學們,大家好!
今天我演講的題目是:自己的事情自己做
11月份,我成為一名小學生已經三個月了,這個月份「新三好主題」是《自己的事情自己做》,經過這一個月活動的開展,我有了很大的進步,往成為一個優秀小學生又邁進了一步。
早上6點45分,到了該起床的時間了,姥姥一叫「陽陽該起床了」,我就睜開了自己的大眼睛,坐了起來,穿上自己的衣服,出去自己洗臉刷牙,然後吃飯。這些
活在以前都是姥姥媽媽幫我做的,在成為小學生後,我逐漸養成自己完成的習慣。吃完飯,該上學了,我背上了自己的小書包,跟姥姥說再見後,和姥爺去學校了。
看著路上好多小朋友都是由家長拿著書,自己背書包的我別提多驕傲了。
下午放學回來,該做作業了,我要獨立完成作業了,偶而有不會的題,才會問媽媽和姥爺的。寫完了作業,我還會把作業檢查一遍,然後把作業本、鉛筆、橡皮等學
慣用品整理好了,會部整整齊齊的放在書包里後,放到固定的位置,才出去找小朋友們玩。而這些,在以前都是媽媽姥爺做的事情,我從來不幹的。吃完飯了,我開
始了收拾碗筷,擦桌子,整理桌椅,我是個勤勞能乾的好孩子吧。
經過了這個月的活動,我變化很大,長大了很多,我相信這些好習慣我會繼續保持,在以後的學習生活中,我會越變越好,成為一個優秀的好學生的。我也感謝老師的教育和輔導,讓我體會到了自己事情自己做的樂趣。
我的演講完了,謝謝大家!
『叄』 學習小能手主要事跡怎麼寫
首先要寫真實的,可以適當誇大,或者渲染自己的事跡,例如樂於助人,幫助大家進步,搞好班級工作等等。自己的獎,只要是真實的,最好都寫上(學習的,德育的,體育的)一般不會查。
閃光點可以適當誇大呀,只要建立在真實的基礎上即可,報紙上的很多事跡都是渲染出來的。
可以先寫學習成績,期中期末的,一直保持在班級……名。然後上升到德育,不僅僅自己優秀,還利用課余時間幫助同學一起進步啦,如果交入黨申請書了什麼的也要寫上,突出德育要求進步。經過自己的努力,取得了什麼獎項,等等。最後體育方面,成績優秀,就ok啦。
範文:(可以修改)
自從讀五年級以來,我更是以「黑發不知勤學早,白首方悔讀書遲」作為座右銘,在學習中刻苦學習,從不怠慢。學習態度認真,學習目的明確。在上學期的期末考試中,還取得了語文、數學和英語第一的好成績。在現在生活中,我也常常以此來鞭策自己,從一年級開始,每學期都被評為「三好學生」和「優秀學生幹部」,成為全班同學的榜樣,但是我從不驕傲,我堅信「成績只代表過去,未來要自己爭取」,所以我總是不斷地努力著,我經常說:「我的未來不是夢」。
我不僅自己認真、刻苦學習,而且熱心幫助他人。當我看到有困難的同學時,我總會盡自己的全力去幫助他們。在課堂上認真筆記,課後及時鞏固,做到溫故而知新,保證讓每天所學的內容能夠吸收,就像海綿里的水一樣,吸得進去,擠得出來。因此,我成績顯著,各項考試總是名列前茅。
(*^__^*) 嘻嘻……選我吧……我素對對
『肆』 《我是學習小能手》主題班會
《我是學習小能手》主題班會
活動目的:
1、通過活動,使學生明白讀書的意義,激發學生讀書的興趣,使書成為他們形影不離的好朋友。
2、通過活動,充實學生文化底蘊,凈化學生的精神世界,幫助學生從小樹立遠大的理想。
3、借這次活動,在班級中營造良好的讀書氛圍,養成好讀書、讀好書的良好習慣。
4、懂得學習方法,注重知識的積累。
活動形式:朗誦 舞蹈 吹笛子 講故事 語文積累展示
活動過程:
一、開幕詞
甲:尊敬的老師!
乙:親愛的同學!
合:大家好!
甲:踏著春天的腳步,我們又迎來了新的學期。
乙:春暖花開的季節,無疑是我們學習的春天。
甲:我們要聽好每一節課,做好每一道習題。
乙:寫好每一頁字,吸收消化好每一點知識。
合:春光無限好,行動趁此時。四(1)班《愛學習 愛讀書》主題班會現在開始!
二、讀書伴我成長
甲:從我們懂事那天起,爸爸媽媽就會對我們說:「長大後,你要好好讀書。」
乙:進入小學後,在老師的教導下,我們認識了a o e,學會了讀書寫字。
甲:從此一位良師益友就走入了我們的生活,那就是——書。
乙:書籍是人類進步的階梯,書籍是我們精神的糧食。
甲:讀書不但能給我們帶來知識,更能給我們帶來樂趣。
乙:你們都讀過哪些書?從書中你知道了什麼?
(學生暢談自己讀的書,和自己讀書的收獲。)
三、《新三字經》朗誦
甲:讀書不但能給我們帶來知識,也教我們做人的道理。
乙:讀書也能給我們帶來樂趣,讓我們成為高尚的人。請聽《新三字經》朗誦表演。
(10人分句朗讀《新三字經》)
甲:《新三字經》是我國文化的瑰寶,教我們做人與學習。
乙:我們從《三字經》中知道了仁、義、禮、智、信。
四、講故事《鑿壁借光》、《魯迅刻「早」》
甲:勤奮是打開知識寶庫的鑰匙,它為遠大的理想搭建階梯。
乙:刻苦是步入殿堂的基石,它是實現宏偉志向的前提。
甲:聽古今名人勵志故事。
(生講故事)
甲:聽了精彩的故事,請同學們談談自己的想法。
(生說自己的感想和體會)
乙:讓我們以勤奮,刻苦為榜樣,讓自己插上理想的翅膀,飛向成功。
五:舞蹈《藍精靈》
乙:請欣賞舞蹈《藍精靈》。
(生表演舞蹈)
乙:真是一群快樂的小精靈。在學校里,我們也像精靈一樣快樂地學習,快樂地成長。
六、語文積累展示會
甲:我們在校園里茁壯成長,離不開老師點點滴滴的辛勤教育。
乙:是啊,老師不但關心我們的生活,更關心我們的學習。
甲:一年級時,老師教我們快樂識字。
乙:二年級時,老師教我們背誦古詩。
甲:三年級時,老師教我們積累成語。
乙:四年級時,老師教我們積累歇後語。
甲:請看語文積累展示會,請各個小隊准備!
(成語隊隊長:大家好,我是成語隊的隊長。別看我們成語只有四個字,它可是我們民族語言的精華,每一個成語都有一個小故事,還告訴我們詞語的含義,教我們做人與處世。等一下我們給大家展示。)
(古詩隊隊長:你們好,我是古詩隊的隊長,古詩是中國文化中的一顆璀璨的明珠,它語言優美,生動,有描寫景物的詩句,有描寫人間真情的,也有表達愛國和理想的。我們從小就開始背誦古詩了,那我們也會給大家露一手。)
(歇後語隊隊長:還有我呢,我是歇後語隊的隊長,歇後語可有意思了,他由前半句和後半句組成,一般有兩種形式,一是表示意義的,一是表示諧音的。歇後語用幽默的語言告訴我們一定的道理和生活中的事情。)
(諺語隊的隊長:你們都說得很好,我也給大家介紹一下,諺語是勞動人民在日常生活中積累經驗總結的語言,它有表示氣候的,有表示哲理的,還有表示農耕的,也教我們為人和做事。我們給大家表演表演!)
(全班學生按小組進行語文積累的展示)
甲:看來,同學們積累了不少的語文知識,掌握了學習方法。
七、全班齊奏《南泥灣》
甲:俗話說:「拳不離手,曲不離口。」學任何本領、知識都要專心和努力。
乙:正所謂,「只要功夫深,鐵杵磨成針。」我們同學們不但會學習,還學會了吹笛子呢!
合:全班齊奏《南泥灣》
八、班主任總結
甲:我們班的笛子吹得不錯吧!
乙:那當然啦!他們精神飽滿笛聲悠揚.。
甲:這些都離不開老師的辛勤指導。下面請我們親愛的班主任講話。
(班主任總結:親愛的同學們,看了大家的表演,老師真為你們高興,你們個個口吐玉璣、神采飛揚。俗話說:一分耕耘,一分收獲,天道酬勤,相信,通過此次主題班會,你們一定學到了知識,享受到了勤奮學習的快樂,老師希望你們以後能外甥大燈籠——照舊努力,照舊積累,成為「腹有詩書氣自華」的人。)
甲:同學們,我們要牢記老師的淳淳教誨,今天的班會是我們刻苦學習的新起點。
合:勤奮學習,認真讀書,用自己的實際行動回報老師,回報社會。四<1>班愛學習愛讀書主題班會到此結束。謝謝大家!
活動反思:在教師做總結時,對學生表演的肯定並提出希望,我用了成語、諺語、歇後語、詩句來結尾。通過開展《愛讀書 愛學習》主題班會,提高學生的學習意識,並對學習產生濃厚的興趣。培養學生的語言表達能力和表演能力,多給學生展示的機會,多給學生鍛煉的機會。四年級的學生,也正是抓學習的大好時機,如何讓孩子養成良好的學習習慣,體會讀書的樂趣,從而愛學習,學會學習,使他們的意識上一個新的台階。班會的各個節目,都是學生平時積累的,如語文知識積累,這是我從一年級開始就做好了准備,吹笛子表演是我們班的特長,從這些表演中,學生深深地明白了,無論學什麼都要勤奮、專心,才能學好。
『伍』 求個28號上午有空的C++編程小能手 大家懂的 有報酬 可面議 有誠信有意向的百度hi我
你想讓+具有什麼含義啊,通過operator...關鍵字實現
給你幾個例子:
1,:#include "iostream"
using namespace std;
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
friend Complex operator+ (Complex& c1, Complex& c2)
{
Complex c3;
c3.real = c1.real + c2.real;
c3.image = c1.image + c2.image;
return c3;
}
friend Complex operator- (Complex& c1, Complex& c2)
{
Complex c3;
c3.real = c1.real - c2.real;
c3.image = c1.image - c2.image;
return c3;
}
};
int main( )
{
Complex c1(1,2),c2(3,4),c3,c4;
c3 = c1 + c2;
c4 = c1 - c2;
c3.show( );
c4.show( );
return 0;
}
/*
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
Complex operator+ (Complex& c2)
{
real = real + c2.real;
image = image + c2.image;
return *this;
}
Complex operator- (Complex& c2)
{
real = real - c2.real;
image = image - c2.image;
return *this;
}
};
*/
/*
Complex operator- ()
{
Complex c;
c.real = -real;
c.image = -image;
return c;
}
friend Complex operator- (Complex& c1)
{
Complex c2;
c2.real = -c1.real;
c2.image = -c1.image;
return c2;
}
*/
2:
#include "iostream"
using namespace std;
class Complex
{
private:
double real,image;
public:
Complex(int r,int i):real(r),image(i)
Complex( ):real(0),image(0)
void show( )
{
cout<<"The complex is: "<<real<<" i"<<image<<endl;
}
Complex operator-()
{
this->image = -this->image;
return *this;
}
};
int main( )
{
Complex c1(1,2),c2(3,4),c3,c4(6,9);
c4.show();
c4 = c4.operator-();
//c4 = operator-(c4);
c4.show();
return 0;
}
3:
//#include"stdafx.h"
#include "iostream"
using namespace std;
class Num
{
private:
int data;
public:
Num(int d):data(d)
Num():data(0)
void show()
{
cout<<"The data is: "<<data<<endl;
}
friend Num operator+(Num& n1,Num& n2);
friend Num operator-(Num& n1,Num& n2);
};
Num operator+(Num& n1,Num& n2)
{
Num n3;
n3.data = n1.data - n2.data;
return n3;
}
Num operator-(Num& n1,Num& n2)
{
Num n3;
n3.data = n1.data + n2.data;
return n3;
}
int main()
{
Num a(1),b(1),c,d;
c = a - a;
c.show();
d = b + b;
d.show();
return 0;
}
相信可以解決你的問題。
『陸』 我是科技小能手作文100 字
我叫xxx ,是x 學校,x 年級x 班 的一名學生,我的業余愛好是進行一些科技小創作,我現有的科技創作作品有製作飛機模型,我的飛機模型可有意思了,飛機主體是用鋁合金塗上銀灰色水銀做成的,飛機兩翼是用鋁合金塗上藍色加黃色水銀做成的,飛機的頭是尖尖的,而飛機的尾巴是橢圓形的, 我參加了全國國科技小能手大賽,獲得2等獎,我愛我的學校,更愛我的科技創作。
『柒』 我是科技小能手主題班會
...呃、、、、
我回答來試試
次主題大概意在通過讓孩子們動手動腦來激發他們的創造力和動手能力,並讓他們通過適當的競爭對科技和學習產生興趣。那麼, 你的班會內容需要緊扣這一主題
你瞧, 你需要對班會的內容做出一些規劃,否則他們不會對此產生興趣的
以下:
1、這個是對校方領導 聽課老師,和一部分同學說的,在班會正式開始之前,先報出班會主旨,班會安排、目的意義和這是第幾次班會。
2、提問——在班會進程中,你需要保證學生們有足夠的興趣來幫助你將此次班會愉快的進行下去,那麼,在班會正式開始之前留下一些問題讓他們思考就顯得十分必要了,所以,在開始之前,你要留下一些懸念或是問題給他們想,讓他們對這次班會產生足夠的興趣
3、正式開始:
你可以通過多種方式來達成班會主旨,不過個人認為其重點還是在於讓學生展示自我。
整個班會環節你應通過提問來達成,科技知識提問 順便科普,安排學生進行小製作並在班會當天展出,然後學生評價。當然,作為主持人對於環節時間 環節重心的把握也十分重要。
4、結束語
如題,只是結束語而已,你需要對本次班會做出總結。
『捌』 製作小能手
這是我在 千水星官網 上看到的,還有很多教程,也有很多配件材料。可以去看看 ,嘻嘻。我要做東西,都是在上面找的,很方便的
DIY刷刷車科技小製作完成效果。
『玖』 怎樣具備工匠精神的技能小能手從何做起
舉個例子,宋徽宗的瘦金體和他的木匠技能都是連當時最好的木匠都感嘆。雖然皇帝不咋樣,但技術和丹青,書畫都是獨步天下。這就是工匠精神。
『拾』 關於編程學習的方面,請達人幫忙。萬分感謝
◎字串運運算元
String Operator Purpose
x Returns a string consisting of the string on the left of the operand, repeated the number of times of the right operand.
. Concatenates the two strings on both sides of the operator.
eq Returns True if the two operands are equivalent, False otherwise.
ne Returns True if the two operands are not equal, False otherwise.
le Returns True if the operand on the left is stringwise less than the operand on the right of the operator. Returns False otherwise.
lt Returns True if the operand on the left is stringwise less than or equal to the operand on the right of the operator. Returns False otherwise.
ge Returns True if the operand on the left is stringwise greater than or equal to the operand on the right of the operator. Returns False otherwise.
gt Returns True if the operand on the left is stringwise greater than the operand on the right of the operator. Returns False otherwise.
cmp Returns -1, 0, or 1 if the left operand is stringwise less than, equal to, or greater than the right operand.
, Evaluates the left operand, the evaluates the right operand. It returns the result of the right operand.
++ Increments the string by one alphabetic value.
◎數值運運算元
Value Operator Purpose
+ Computes the additive value of the two operands.
- Computes the difference between the two operands.
* Computes the multiplication of the two operands.
/ Computes the division between the two operands.
% Computes the molus(remainder) of the two operands.
= = Returns Ture if the two operands are equivalent, False otherwise.
!= Returns Ture if the two operands are not equal, False otherwise.
<= Returns Ture if the operand on the left is numerically less than or equal to the operand on the right of the operator. Returns False otherwise.
=> Returns Ture if the operand on the left is numerically greater than or equal to the operand on the right of the operator. Returns False otherwise.
< Returns Ture if the operand on the left is numerically less than the operand on the right of the operator. Returns False otherwise.
> Returns Ture if the operand on the left is numerically greater than the operand on the right of the operator. Returns False otherwise.
< = > Returns -1 if the left operand is less than the right, +1 if is it greater than, and 0(False) otherwise.
&& Performs a logical AND operation. If the left operand is True m then the right operator is not evaluated.
|| Performs a logical OR operation. If the left operand is True m then the right operator is not evaluated.
& Returns the valueof the two operators bitwise ANDed.
| Returns the valueof the two operators bitwise ORed.
^ Returns the valueof the two operators bitwise XORed.
++ Increment operator. Increments the variable's value by 1.
-- Decrement operator. Decrements the variable's value by 1.
** Computes the power of the left-hand value to the power of the rihght-hand value.
+= Adds the value of the right-hand operand to the value of the left-hand operand.
-+ Subtracts the value of the right-hand operand to the value of the left-hand operand.
*= Mlutiplies the value of the left-hand operand to the value of the right-hand operand.
>> Shifts the left operand right by the number of bits that is specified by the right operand.
<< Shifts the left operand left by the number of bits that is specified by the right operand.
~ Performs a 1s complement of the operator. This is a unary operator.
(b) Scalar Array:
純量陣列,陣列內的每一個元素都是Scalar variable。宣告及使用方式如下:
# 純量陣列以 @ 開頭。
my @array;
my @array=qw(a b c d);
# qw 函數會將其後的每個元素用逗點隔開,效果就像下面這行。
my @array=("a","b","c","d");
# 當然你也可以一個個元素宣告,下面就是存取每一個元素的方法。
# 因為陣列中的每一個元素都是純量變數,所以要以 $ 開頭,
# 剛開始容易搞混,請注意。
$array[0]="a"; $array[1]="b"; $array[2]="c"; $array[3]="d";
# 使用for loop印出陣列內每個元素的值。
for($i=0; $i<=$#array; $i++) {
print "$array[$i]\n";
}
看到$#array這個奇怪的東東沒? 這是Perl的一個特殊用法,代表這個陣列最後一個元素的注標。由於Perl不必事先宣告變數,也不必預先宣告陣列的大小,甚至可以隨時增加新元素,那我們怎麼知道這個陣列到底有多大呢? 透過這個特殊變數我們可以得知這個這個陣列最後一個元素的注標,自然而然也就知道這個陣列究竟有多大了。另外Perl只定義了一維陣列的語法,二維以上只能用指標間接來達成。
(c) Hash Array(Associative Array):
雜湊陣列也叫做相關陣列,它和一般陣列沒什麼不同,差別只是在它的索引值用的是字串,而非一般陣列所用的整數值,因此相關陣列不像一般陣列一樣有次序的概念,它沒有所謂的第一項資料這種說法。它就相當於把一堆變數組合成一個group,然後我們可以透過索引字串存取這個group每一個元素的值。相關陣列的宣告及使用方式如下:
# 相關陣列是以 % 符號開頭的。
my %hash;
# => 這個符號是Perl5新增的,是為了相關陣列量身定做的,
# 因為索引和元素值都是純量,若使用 => 這個符號,
# (索引=>元素值) 兩兩對應,就不容易發生失誤。
my %hash=("i1"=>"aaa","i2"=>"bbb","i3"=>"ccc");
# 上面這行的效果和下面這行是一樣的。
my %hash=("i1","aaa","i2","bbb","i3","ccc");
# 下面是存取每個元素的方法,注意是用大括弧把索引括起來哦。
# 習慣上索引值用單引號、元素值用雙引號括起來。
$hash{'i1'}="aaa"; $hash{'i2'}="bbb"; $hash{'i3'}="ccc";
# 下面是使用相關陣列的三個例子:
foreach $key (keys %hash) {
print "$hash{$key}\n";
}
foreach $value (values %hash)
while(($key,$value)=each %hash)
Perl有上述三個函數可對相關陣列做運算:keys函數可取出相關變數的索引值,組成一純量陣列,注意這些由keys函數取出的索引值沒有次序性;values函數可取出相關變數的元素值;each函數則會取出(索引、元素)對。使用者可視情況而用。
(d) References(Pointer):
Perl 5新增了參考指標的資料型態,使Perl和C一樣可藉由指標建立一些復雜的資料結構。普通程式是用不到指標這玩意的,下面也只是簡單介紹一下,看不懂的人可不必深究。
⊙如何取得變數的位址?
$scalarRef=\$scalarVar;
$arrayRef=\@arrayVar;
$hashRef=\%hashVar;
$funcRef=\&funcName;
⊙如何使用指標?
print $$scalarRef;
print "@$arrayRef";
print $hashRef->{$key};
&$funcRef;
⊙Anonymous Array References:(二維陣列)
$arrayRef=[[1,2,3,4],a,b,[x,y,z],c];
print "$arrayRef->[0][0]\t$arrayRef->[2]\t$arrayRef->[3][2]\n";
⊙Anonymous Hash References:
$hashRef={a=>aa,b=>bb,c=>cc};
print "$hashRef->{a}\t$hashRef->{b}\t$hashRef->{c}\n";
(2) 控制敘述(Control Statements)
(a) Conditional Control Statements:
Perl的條件控制敘述和C語言很像,讓使用者很快就能掌握它。不過Perl比C語言又另外多了些實用的語法,我用底線標出來,大家一看便知:
# Expression 就是條件敘述式,Perl和C一樣沒有定義布林資料型態(Boolean data type),
# 因此 0 是false、非0 是ture。另外要注意字串運運算元和數值運運算元要分清楚哦。
# Code Segment 就是用大括弧括起來的一堆指令,也就是一個Block。
if (Expression) {Code Segment}
if (Expression) {Code Segment} else {Code Segment}
if (Expression) {Code Segment} elsif (Expression) {Code Segment} else {Code Segment}
# elsif 就是 else if
# 如果指令(statement)只有一項,我們可以使用倒裝句法,看起來比較簡潔。
statement if (Expression);
# unless 就是if not
statement unless (Expression);
例:
print "HELLO!\n" if ($name eq "friend");
$x-=10 if ($x == 100);
看吧! C 語言有的Perl大部分都有,學過 C 的人可以毫不費力的學會Perl。
(b) Loop Control Statements:
Perl的迴圈控制敘述也和C語言很像,當然,照例Perl也另外多了些實用的語法:
# 注意:純量變數前面要加個 $ 字型大小,這一點和C語言不一樣哦。
for($i=0; $i<=10; $i++) {Code Segment}
# foreach 是承襲UNIX的shell script來的,
# 第一個引數是純量變數,第二個引數要用括弧括起來,裡面是一個純量陣列,
# 顧名思義它就是把陣列中的每個元素依序傳給第一個引數,直到全部傳完。
# 它和 for($i=0; $i<=$#array; $i++) 用法雖然不同,但目的都是要取出陣列的每個元素。
foreach $i (@array) {Code Segment}
# 其實在Perl中,for和foreach是可以混著用的,就看個的人習慣了。
# 下面這行就等於上面第一個敘述,不過簡潔多了,大家可以試著用用看。
for $i (0..10) {Code Segment}
# while控制迴圈和後置迴圈。
while($i<=10) {Code Segment}
do {Code Segment} while(Expression);
# Perl也有和C語言的break和continue一樣的指令,Perl叫它做 last 和 next (較口語化)。
# last是跳出現在所在的迴圈,next則是跳過下面的指令直接執行下一次的迴圈。
while(chomp($i=<STDIN>)) {
next if ($i == 5);
last unless ($i > 10);
}
Perl還有提供label(標記)的語法,也就是 goto 指令,不過有經驗的programer並不喜歡用它,我也不建議大家使用,所以就此按下不講。有興趣的人請自行查閱。還有一點值得注意的是Perl沒有提供像C語言一樣的 switch 敘述,不過Perl的pattern match的功能非常強,所以我建議你直接用 if else 敘述來做就好了。
(3) 副程式(Subroutines)
(a) Syntax: sub NAME {Code}
(b) 呼叫副程式: &NAME(para1, para2,...)
(c) 參數傳遞: @_
Perl和C一樣是採用Call by value的方式,不過因為Perl不用事先宣告變數,所以建立副程式的時候也不用宣告要傳遞什麼參數。當主程式在傳遞參數給副程式時,Perl會把括弧括起來的參數按順序放在一個特殊的全域變數 @_ 陣列中,然後副程式就可以隨意使用陣列 @_ 里的參數,例如 $_[0] 是第一個參數, $_[1] 是第二個,或是用 my ($a1,$a2,$a3,...) = @_;來取出各個參數,當然 my @arg=@_; 或 my %arg=@_; 也是可以的。由於Perl的語法非常活潑,使得程式在維護時特別棘手,因此寫註解成為一項很重要的工作。我建議你最好在每個副程式前面加上對這段副程式的描述,特別是需要傳遞的參數要註明清楚。
(d) Variable Localization:my or local
通常我們在程式中定義的變數都是全域變數,所以在副程式中若要把變數區域化則要加上 my 或 local 關鍵字,例如: my $x=3;,若副程式所用的變數名不小心和主程相同,Perl會以目前正在執行的副程式里的變數為優先。
(4) I/O和檔案處理
(a) Syntax:
open(FILEHANDLE,"Expression");
close(FILEHANDLE);
這里的Expression是一個敘述加上檔案名稱,若Expression只有檔案名稱沒有加上敘述,則預設是唯讀。Expressions敘述如下:
Expression Effect
open(FH, "<filename") Opens filename for reading.
open(FH, "+<filename") Opens filename for both reading and writing.
open(FH, ">filename") Opens filename for writing.
open(FH, "+>filename") Opens filename for both reading and writing.
open(FH, ">>filename") Appends to filename.
open(FH, "command|") Runs the command and pipes its output to the filehandle.
open(FH, "command|") Pipes the output along the filehandle to the command.
open(FH, "-") Opens STDIN.
open(FH, ">-") Opens STDOUT.
open(FH, "<&=N") Where N is a number, this performs the equivalent of C's fdopen for reading.
open(FH, ">&=N") Where N is a number, this performs the equivalent of C's fdopen for writing.
例:
# 開啟$filename這個檔案,若開啟失敗則印出die後面的訊息,並結束程式。
open(FILE, $filename) || die "Can't open file $filename : $!\n";
# 下面是一個十分精簡的寫法,和 while($_=<FILE>){print "$_";} 是等效的。
print while(<FILE>);
# 檔案開啟後要記得隨手關閉,這才是寫程式的好習慣。
close(FILE);
# $!和$_都是Perl的特殊變數,下面會介紹的。
(b) Input:
Perl沒有特別用來輸入的函數,因為Perl在執行程式時,會自動開啟標准輸入裝置,其filehandle定為STDIN,所以在Perl中要輸入資料的方法就是使用<STDIN>:
# Perl不會自動去掉結尾的CR/LF,跟C語言不同,所以要用chomp函數幫你去掉它。
# 大家常常會忘記這個動作,導致結果跟你想的不一樣,要特別注意一下。
$input=<STDIN>; chomp $input;
# 下面是較簡潔的寫法。
chomp($input=<STDIN>);
(c) Output: print "variables or 字串";
Perl也有printf()函數,語法和C語言一模一樣,我就不多做介紹了。Perl另外有個print函數,比printf()更方便、更好用,包你愛不釋手。 Output不外乎是輸出到螢幕或檔案,用例子來說明比較容易了解。
# 不用再指定變數的data type,這樣不是比printf()方便多了嗎?
print "Scalar value is $x\n";
# . 是字串加法的運運算元,上下這兩行是等效的。
print "Scalar value is " . $x . "\n";
# 輸出到檔案的方法。
print FILE "print $x to a file.";
# 下面是print的特殊用法,學自shell script的用法:
print<<XXX;
這招叫做 here document,XXX可以是你取的任何識別字,
在識別字之間的字都會按照你所寫的樣子輸出,就像<pre>標簽一樣。
而當一行的開頭是XXX你取的這個識別字時,才會停止輸出。
XXX
Perl 也有和 C 一樣以 "\" 開頭的特殊字元:
\t tab
\n newline
\r return
\f form feed
\b backspace
\a alarm(bell)
\e escape
\033 octalchar
\x1b hex char
\c[ control char
\l lowercase next char
\u uppercase next char
\L lowercase till \E
\U uppercase till \E
\E end case modification
\Q quoteregexp metacharacters till \E
另外需要說明的是 Perl 融合了 unix shell script 的使用慣例,以雙引號("")括起來的字串會先經過展開,但反斜線(\)後面的字元則不展開,當作一般字元看待。而以單引號('')括起來的字串完全不會展開,以反單引號(``)括起來的字串會把它當作命令列指令一樣執行,等於system()一樣。初學者常常會搞混,但習慣之後就會覺得不這樣分清楚反而不行哩。舉個例吧:
$x="ls -l";
print "$x"; # Output ls -l
print "\$x"; # Output $x
print '$x'; # Output $x
print `$x`; # Output files in this directory
(5) Regular Expressions
Regular Expression通常是用來尋找特定的字串樣式(pattern),也就是所謂格式辨認(pattern-matching)的功能。它的運運算元是『=~』和『!~』,可以把它念做match和not match。
Syntax: $string =~ /regular expression/expression modifier
例:$sentence =~ /Hello/