篇一 c語言課程設(shè)計報告書1650字
c語言課程設(shè)計報告書(1)
我們學(xué)習(xí)它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學(xué)習(xí)對我們尤其重要。
在這個星期里,我們專業(yè)的學(xué)生在專業(yè)老師的帶領(lǐng)下進行了c語言程序?qū)嵺`學(xué)習(xí)。在這之前,我們已經(jīng)對c語言這門課程學(xué)習(xí)了一個學(xué)期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。
由于時間的關(guān)系,我們的這次實踐課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。
上機實驗是學(xué)習(xí)程序設(shè)計語言必不可少的實踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設(shè)計語言的學(xué)習(xí)目的,可以概括為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計方法、提高程序開發(fā)能力,這些都必須通過充分的實際上機操作才能完成。
學(xué)習(xí)c程序設(shè)計語言除了課堂講授以外,必須保證有不少于課堂講授學(xué)時的上機時間。因為學(xué)時所限,課程不能安排過多的統(tǒng)一上機實驗,所以希望學(xué)生有效地利用課程上機實驗的機會,盡快掌握用c語言開發(fā)程序的能力,為今后的繼續(xù)學(xué)習(xí)打下一個良好的基礎(chǔ)。為此,我們結(jié)合課堂講授的內(nèi)容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1、加深對課堂講授內(nèi)容的理解
課堂上要講授許多關(guān)于c語言的.語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習(xí),對于語法知識有了感性的認(rèn)識,加深對它的理解,在理解的基礎(chǔ)上就會自然而然地掌握c語言的語法規(guī)定。對于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機實踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計,缺乏程序設(shè)計的實踐所致。
學(xué)習(xí)c語言不能停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。
通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時的心態(tài)。但是在程序設(shè)計領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去'掩蓋'程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機調(diào)試運行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。
2、熟悉程序開發(fā)環(huán)境、學(xué)習(xí)計算機系統(tǒng)的操作方法
一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環(huán)境下才能進行。所謂'環(huán)境'就是所用的計算機系統(tǒng)硬件、軟件條件,只有學(xué)會使用這些環(huán)境,才能進行程序開發(fā)工作。通過上機實驗,熟練地掌握c語言開發(fā)環(huán)境,為以后真正編寫計算機程序解決實際問題打下基礎(chǔ)。同時,在今后遇到其它開發(fā)環(huán)境時就會觸類旁通,很快掌握新系統(tǒng)的使用。
3、學(xué)習(xí)上機調(diào)試程序
完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實際上機運行時可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結(jié)果顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機經(jīng)驗分析判斷錯誤所在。程序的調(diào)試是一個技巧性很強的工作,對于初學(xué)者來說,盡快掌握程序調(diào)試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調(diào)試高手一眼就看出錯誤所在。
通過這次為數(shù)不多的幾天計算機實踐學(xué)習(xí),我們了解了一些關(guān)于c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。
篇二 c語言課程設(shè)計設(shè)計報告3000字
1開設(shè)課程設(shè)計的目的及意義
高等職業(yè)教育的目標(biāo)及側(cè)重點不同于普通高等教育,其培養(yǎng)的學(xué)生在畢業(yè)后應(yīng)能直接上崗,具有熟練的實踐操作技能。教育部《關(guān)于以就業(yè)為導(dǎo)向深化高等職業(yè)教育改革的若干意見》中指出,高職教育應(yīng)“堅持培養(yǎng)面向生產(chǎn)、建設(shè)、管理、服務(wù)第一線需要的‘下得去、留得住、用得上’,實踐能力強、具有良好職業(yè)道德的高技能人才”。
因此,加強實踐性課程教學(xué),對保證人才培養(yǎng)質(zhì)量顯得尤為重要。我院為貫徹《關(guān)于全面提高高等職業(yè)教育教學(xué)質(zhì)量的若干意見》(教高[2006]16號文件)精神,針對區(qū)域經(jīng)濟發(fā)展的要求,靈活調(diào)整和設(shè)置專業(yè)課程,以就業(yè)為導(dǎo)向,加快專業(yè)課程對應(yīng)的課程設(shè)計改革。目前,我院按照由淺入深、不斷深化的教學(xué)規(guī)律,構(gòu)建了實踐教學(xué)三層次四環(huán)節(jié)的實踐課程體系(圖1)。實踐教學(xué)三層次包括基本技能、專業(yè)拓展、綜合創(chuàng)新,四環(huán)節(jié)包括實驗、實習(xí)實訓(xùn)、設(shè)計和課外實踐?!癱語言課程設(shè)計”是我院信息類專業(yè)的必修專業(yè)基礎(chǔ)課程設(shè)計,在“c語言程序設(shè)計”課程教學(xué)結(jié)束后的下一學(xué)期進行,歷時2周,40學(xué)時。課程開設(shè)的目的在于培養(yǎng)學(xué)生分析問題和解決問題的能力,為學(xué)生提供一個動手、動腦、獨立實踐的機會。
2項目教學(xué)法的簡單介紹
21項目教學(xué)法“項目教學(xué)法”是基于建構(gòu)主義教學(xué)理論的一種教和學(xué)的模式。著名的瑞士心理學(xué)家皮亞杰認(rèn)為,知識不是通過教師傳授得到的,而是學(xué)生在一定的情境下,借助他人的幫助,利用必要的學(xué)習(xí)資料,通過意義建構(gòu)的方式而獲得的。美國項目管理專家約翰·賓認(rèn)為:“項目是要在一定時間里,在預(yù)算規(guī)定范圍內(nèi)需達到預(yù)定質(zhì)量水平的一項一次性任務(wù)?!?/p>
“項目教學(xué)法”是通過實施一個完整的項目而進行的教學(xué)活動,旨在把學(xué)生融入有意義的任務(wù)完成的過程中,讓學(xué)生積極地學(xué)習(xí),自主地進行知識的建構(gòu),在課堂教學(xué)中把理論與實踐教學(xué)有機地結(jié)合起來,充分發(fā)掘?qū)W生的創(chuàng)造潛能,提高學(xué)生解決實際問題的綜合能力。因此,在教學(xué)活動中,教師將需要解決的問題或需要完成的任務(wù)以項目的形式交給學(xué)生,在教師的指導(dǎo)下,以小組工作方式,由學(xué)生自己按照實際工作的完整程序,共同制定計劃,共同或分工完成整個項目。
在項目教學(xué)中,學(xué)習(xí)過程成為一個人人參與的創(chuàng)造實踐活動,注重的不是最終的結(jié)果,而是完成項目的過程。在高等職業(yè)技術(shù)教育中,項目是指以生產(chǎn)或制作一樣具體的、具有實際應(yīng)用價值的產(chǎn)品的工作任務(wù)。在技術(shù)領(lǐng)域,很多小產(chǎn)品或一些復(fù)雜產(chǎn)品的模型都可以作為項目,如:在信息類專業(yè),可以開展微機組裝、網(wǎng)站建設(shè)、信息管理系統(tǒng)開發(fā)、局域網(wǎng)構(gòu)建、單片機制作、多媒體課件制作等項目;在電子類專業(yè),可以開展報警器、led、門鈴、家電組裝等項目;在商業(yè)、財會和服務(wù)行業(yè),所有具有整體特性并有可見成果的工作也都可以作為項目,如商品展示、產(chǎn)品廣告設(shè)計、營銷策劃等。
22項目教學(xué)法的基本特征項目教學(xué)法與傳統(tǒng)的教學(xué)法相比,有很大的區(qū)別,主要表現(xiàn)在改變了傳統(tǒng)的3個中心:以教師為中心轉(zhuǎn)變?yōu)橐詫W(xué)生為中心;以課本為中心轉(zhuǎn)變?yōu)橐浴绊椖俊睘橹行?;以課堂為中心轉(zhuǎn)變?yōu)橐詫嶋H經(jīng)驗為中心。項目教學(xué)法具有以下特點:
(1)實踐性。項目“源”于企業(yè),項目的主題與真實世界密切聯(lián)系,由淺入深,選擇的`項目具有典型性、實用性。
(2)自主性。提供學(xué)生根據(jù)自己的興趣選擇內(nèi)容和展示形式的決策機會,讓學(xué)生能夠自主地進行學(xué)習(xí),從而有效地促進學(xué)生創(chuàng)造能力的發(fā)展。
(3)發(fā)展性。長期項目與階段項目相結(jié)合,構(gòu)成了實現(xiàn)教學(xué)目標(biāo)的認(rèn)知過程。
(4)評價特殊性。項目型教學(xué)的評價注重學(xué)生在項目活動中能力發(fā)展的過程,測評內(nèi)容包括學(xué)生參與活動各環(huán)節(jié)的表現(xiàn)及作業(yè)質(zhì)量,避免了傳統(tǒng)的一張試卷定成績的弊端。測評可以采用自評、小組評、教師綜合評等方法。教師只有明確并抓住項目化教學(xué)特點,才能更好地完成教學(xué)目標(biāo)。
3項目教學(xué)法在“c語言課程設(shè)計”中的實施
31教學(xué)內(nèi)容為了更好地開展課程設(shè)計教學(xué),經(jīng)過多次實踐和摸索,總結(jié)出學(xué)生在具體實施項目中一般存在2個方面的知識不足:
第一,在教學(xué)內(nèi)容上,由于前導(dǎo)課程在教學(xué)上受學(xué)時影響,很多教師對指針、結(jié)構(gòu)體、共用體和文件基本操作的知識介紹不甚完善、系統(tǒng),更難談上輔以實例加以消化。對此,針對學(xué)生在這些知識點上的掌握程度,利用4~6個學(xué)時,實施區(qū)別式的、輔導(dǎo)性的、實例化教學(xué)。
第二,學(xué)生對項目管理知識知之甚少,針對此情況,采用2個階段實施有別于常規(guī)教學(xué)的補課行動。第1階段為項目準(zhǔn)備階段,利用2~4個學(xué)時,安排曾經(jīng)做過項目且做得比較好的學(xué)生,現(xiàn)身介紹項目的準(zhǔn)備工作(包括如何選題、如何查找資料、如何復(fù)習(xí)c語言知識)、項目實施過程要完成的工作(包括如何做市場調(diào)查、如何做需求規(guī)格分析說明書、如何做概要設(shè)計說明書、如何做詳細設(shè)計說明書、如何選擇使用代碼編碼器代碼編寫注意事項)、項目驗收及作業(yè)提交的工作(包括程序測試事項、如何寫課程設(shè)計報告)等。在學(xué)生介紹中,教師穿插講解,輔以點評。第2階段為項目實施階段,教師應(yīng)針對學(xué)生發(fā)生的問題,及時給予指導(dǎo),直到學(xué)生弄懂為止。
32教學(xué)要求切實保證教學(xué)質(zhì)量和教學(xué)效果,本著“學(xué)以致用”的原則,要求學(xué)生做到以下3點:第一要做到“學(xué)有三備”,即:在項目實施前做好知識儲備,在項目實施中做好安全防備,項目結(jié)束時做好被評準(zhǔn)備。第二要寫好“三書一報告”?!叭龝奔疵總€項目組要做需求規(guī)格說明書、概要設(shè)計說明書、詳細設(shè)計說明書,“一報告”即人人都要做課程設(shè)計報告。第三要做“四自”參與者?!耙蛔浴奔醋月?,要求學(xué)生自覺履行學(xué)生守則和項目實施有關(guān)規(guī)則,不遲到、不早退、不缺席,實施點名制度,若無特殊原因,有5次曠課者自愿以重修論處;“二自”即自尊,要求學(xué)生尊重知識、尊重學(xué)習(xí)規(guī)律、尊重項目組成員、尊重教師、尊重自己;“三自”即自信,要求學(xué)生相信自己能夠按時、按量、按質(zhì)完成工作內(nèi)容,遇到困難時,沉著、冷靜,理性地尋找問題解決的辦法;“四自”即自強,要求學(xué)生不滿足自己已有的成績和以往與課題項目組共同取得的成績,用創(chuàng)新和超越的思想,做出比以前哪怕是前進一小步的事情。同時也要求教師做好相應(yīng)的工作,如做好項目整體規(guī)劃、精心準(zhǔn)備、努力激發(fā)學(xué)生參與行為、為人師表、表揚為主、批評為輔、多分析、精點評等。
33項目實施進程項目教學(xué)法是一種生動、靈活、多樣化的教學(xué)方法。在項目實施過程中,既不能生搬硬套地利用一個時間標(biāo)準(zhǔn),又不能影響項目實施的整體進程,因此對時間的靈活處理是非常關(guān)鍵的,也是值得商榷的。
34明確項目內(nèi)容,幫助學(xué)生立項立項首先要審題。當(dāng)學(xué)生拿到項目列表時,最不能忽略的問題,就是提醒學(xué)生審題。審題恰當(dāng)對學(xué)生以后開展各項工作是關(guān)鍵。審題時,學(xué)生首先要考慮自己的長、缺處,做到揚長避短,也就是說審題就是學(xué)生自己審自己完成該項目有多大的能力,有沒有信心。只有學(xué)生明白自己,才可以避免以后實施項目過程中走彎路。同時既要建議學(xué)生在組建項目組時,考慮所在組的其他學(xué)生的長處和短處,又要盡量避免使被學(xué)生認(rèn)定的差等學(xué)生沒人愿意與其組合,而成績好的學(xué)生又抱團的現(xiàn)象發(fā)生。
根據(jù)近幾年帶課程設(shè)計的經(jīng)驗,關(guān)于如何合理選擇項目,建議教師應(yīng)從學(xué)生的角度考慮以下4個因素,協(xié)助學(xué)生做好選題:
(1)規(guī)模。項目規(guī)模太大會影響項目的完整性,項目規(guī)模太小難以體現(xiàn)課程的實踐性。
(2)難度。項目難度一定要適中,既要激發(fā)學(xué)生學(xué)習(xí)的興趣又不能影響學(xué)生的自信心。
(3)實用性。項目的選擇應(yīng)該是現(xiàn)實世界真實的工作任務(wù),具有一定的現(xiàn)實和實用性。
(4)趣味性。興趣是最好的老師,所以在選擇項目時應(yīng)考慮其趣味性,讓學(xué)生有更大熱情投入項目。
篇三 c語言課程設(shè)計實驗報告1450字
c語言課程設(shè)計實驗報告
c語言是一門通用計算機編程語言,應(yīng)用廣泛。下面就隨小編一起去閱讀c語言課程設(shè)計實驗報告,相信能帶給大家?guī)椭?/p>
第一章 基礎(chǔ)掌握
1.1 實驗?zāi)康?/p>
掌握c程序設(shè)計編程環(huán)境visual c++,掌握運行一個c程序的基本步驟,包括編輯、編譯、鏈接和運行。(]
1.2 實驗要求
在報告中記錄建立、保存c程序?qū)嵙?xí)過程。
1.3 實驗基本內(nèi)容
編寫程序,在屏幕上顯示一個短句“hello world”
(1) 程序:
1) 編譯如下程序:
#include
void main
{
printf (“hello world! ”);
}
2)鏈接。執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
(2) 運行結(jié)果:
輸出結(jié)果:hello world!
總結(jié):
掌握c語言程序設(shè)計的基本框架,能夠編寫簡單的程序。
第二章 數(shù)據(jù)類型
2.1 實驗?zāi)康?/p>
(1) 掌握c語言的運算符和表達式的正確使用以及c語言的幾種基本數(shù)據(jù)類型和基本輸入輸出函數(shù)的使用方法。()
(2)通過編程進一步理解和掌握運算符的確切含義和功能。
2.2 實驗要求
(1) 在報告中記錄建立、保存c程序?qū)嵙?xí)過程。 (2) 完成典型題目,分析遇到的困難和實驗中的收獲。
2.3 實驗基本內(nèi)容
輸入程序,觀察輸出結(jié)果 1>;./_test2.1c_/
1)編譯如下程序: #includevoid main {
char ch; int k;
ch='a',k='b';
printf('%d,%_,%c',ch,ch,ch,ch,k); printf('k=%%d ',k) }
2)鏈接。執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
2>;./_test2.2c_/
1)編譯如下程序: #includevoid main {
float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12;
b2=0.000001;
printf('%f,%l f ',a1+a2,b1+b2);
}
2)鏈接。執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
實驗結(jié)果:
97.61,141,ak=_d
實驗結(jié)果:
擴展:c語言程序?qū)嶒瀳蟾?/ c語言實驗報告 / c語言程序設(shè)計報告
1234.120089,1234.120001
總結(jié):
學(xué)會c語言的運算符和表達式的正確使用
第三章 選擇結(jié)構(gòu)程序設(shè)計
3.1 實驗?zāi)康?/p>
學(xué)會改正程序中的錯誤
3.2 實驗要求
(1) 在報告中記錄建立、保存c程序?qū)嵙?xí)過程。(]
(2) 完成典型題目,分析遇到的困難和實驗中的收獲。
3.3 實驗基本內(nèi)容
輸入實驗程序,程序有錯,改正程序中的.錯誤
1)輸入如下程序:
#include
#include
void main
{
double a,b,c,d;
printf('輸入一元二次方程a=,b=,c= ');
scanf('a=%l f,b=%l f',&a,&b,&c); if(a==0) { if(b=0) } { } else print f('_=%0.2f ',-c/b); if(c==0) print f('0==0參數(shù)對方程無意義!”); else print f('c!=0方程不成立'); else if(d>;=0) { printf('_1=%0.2f ',(-b+sq rt(d))/(2_a)); printf('_1=%0.2f ',(-b-sq rt(d))/(2_a)); } else {
printf('_1=%0.2f+%0.2fi ',-b/(2_a),s q rt(-d)/(2_a)); printf('_1=%0.2f-%0.2fi ',-b/(2_a),s q rt(-d)/(2_a));
}
}
2)鏈接。()執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
實驗結(jié)果:
運行不了程序 ,做以下修改:
#include
#include
void main
{
//
//
double a,b,c,d; printf('輸入一元二次方程a=,b=,c= '); scanf('a=%l f,b=%l f',&a,&b,&c); c=5; if(a==0) //{ /_if(b=0) { } else printf('_=%0.2f ',-c/b); if(c==0) printf('0==0參數(shù)對方程無意義!”); else printf('c!=0方程不成立'); }_/ else if(d>;=0) { } else { } printf('_1=%0.2f ',(-b+sq rt(d))/(2_a)); printf('_1=%0.2f ',(-b-sq rt(d))/(2_a)); printf('_1=%0.2f+%0.2fi ',-b/(2_a),sq rt(-d)/(2_a)); printf('_1=%0.2f-%0.2fi ',-b/(2_a),sq rt(-d)/(2_a));
}
這樣就可以輸出程序了。
總結(jié): 學(xué)會使用邏輯運算符和邏輯表達式,掌握簡單的查錯方法,并改錯。
第四章 循環(huán)程序設(shè)計
4.1 實驗?zāi)康?/p>
熟練使用whiledo…while語句實現(xiàn)循環(huán)程序設(shè)計。[)
4.2 實驗要求
(1) 在報告中記錄建立、保存c程序?qū)嵙?xí)過程。
(2) 完成典型題目,分析遇到的困難和實驗中的收獲。
4.3 實驗基本內(nèi)容
1) 編譯如下程序:
#include
void main
{
int m,n,j,k; printf('input m n '); while(scan f ('%d',&m,&n),m<0&&n<0); j=m; while(j/n!=0) j=j+m; k=(m_n)/j; printf('最小公倍數(shù)是%d 最大公約數(shù)是%d ',j,k); }
2)鏈接。執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
實驗結(jié)果:
input m n
5 2
然后運算出來結(jié)果:
最大公倍數(shù)是5
最大公約數(shù)是0
總結(jié):
學(xué)使用for,while,do...while語句實現(xiàn)循環(huán)程序,
第五章 程序設(shè)計
5.1 實驗?zāi)康?/p>
檢驗最近學(xué)習(xí)成果,進一步鞏固c語言的學(xué)習(xí)
5.2 實驗要求
1)輸入任意四位數(shù),寫出個,十,百,千位上的數(shù) 2)連接任意兩個字符串
5.3 實驗基本內(nèi)容
1)編譯如下程序: #includevoid main {
int a,b,c,d,_; scanf('%d',&_); if(999<10000) {
a=_/1000;
b=_/100-a_10;
c=_/10-a_100-b_10; d=_-a_1000-b_100-c_10; printf('%d ',_);
1)編譯如下程序: #includemain {
char s1[10],s2[5]; int i,j;
scanf('%s',s1); scanf('%s',s2); i=j=0;
while(s1[i]!='') i++;
printf('a=%d,b=%d,c=%d,d=%d ',a,
b,c,d); }
}
while((s1[i++]=s2[j++])!=''); printf('string no.1. %s ',s1); }
2)鏈接。(]執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
2)鏈接。執(zhí)行build-命令。
3)運行。執(zhí)行build e_ecute 命令。顯示結(jié)果。
4)關(guān)閉程序工作區(qū)。
實驗結(jié)果: abcd
adsg
string no.1.abcdadsf
實驗結(jié)果:
2678 2678
a=2,b=6,c=7,d=8
總結(jié):通過對程序的設(shè)計提高編程能力