20165234 預備做業2 學習基礎和C語言基礎調查

學習基礎和C語言基礎調查

1、技能學習經驗及體會

  • 你有什麼技能比大多人(超過90%以上)更好?

看到這個問題,我仔細想了想,好像的確沒有什麼特別出衆的技能,可是我想到了許多我我的的愛好。html

我從小喜歡五子棋,而且對其有着本身的看法,可是一直未接受過棋類的培訓,因此也只能算是一個愛好。多是這方面的學習與理解能力較強吧,象棋、鬥地主都是我經過觀看別人對戰而學會的,水平也還行。同時我還很愛玩遊戲,尤愛那種須要耐心的探索型遊戲,以及須要思考的益智型遊戲。java

體育運動方面,我從初一時開始接觸排球,雖然只是在業餘水平裏很通常,可是每一年我都會不斷參加訓練,在初中、高中參加班級排球賽,乃至在大學參加院排球賽。高考完以後我纔去學了游泳,在學會以後我依舊常常去游泳館練習,上大學後我還保持着至少每週一次去游泳館的頻率。固然個人這些愛好並非比大多數人好,或者說只是很普通的愛好,可是對我而言是不錯的鍛鍊身體的運動。算法

  • 針對這個技能的獲取你有什麼成功的經驗?

就對這些技能的獲取過程而言,論成功的經驗,我以爲能夠歸結爲如下三點。編程

1. 對這些技能的熱愛

我從小就對體育運動較爲感興趣,因此我願意去接觸、學習它們。從棋類遊戲到益智類遊戲,我都以爲很是有意思,因此我願意去進行思考並進行嘗試。數組

2. 鍥而不捨的練習

在學游泳時,我只用了五個課時,便掌握了蛙泳的全部要領,但接下來的五個課時都是練習。正所謂熟能生巧,通過後期不斷地大量練習,才能真正掌握這一項技能。函數

3. 專業人士的指導

我不管是在學習排球仍是學習游泳時,都獲得過老師和教練的指導。在習得一項技能的過程當中,老師和教練的指導是必不可少的。他們會根據個人及時反饋來告訴我正確的作法,能幫助我少走彎路。學習

  • 與老師博客中的學習經驗有什麼共通之處?

正如我在上一個問題裏所回答的,我並無太出衆的技能,可是我所擁有的這些技能/愛好,在獲取的過程當中都有共通之處。編碼

婁老師在博客《優秀的教學方法---作教練與作中學》中分享了一些在學習,工做,健身中的實踐:spa

作中學(Learning by Doing)之背單詞-扇貝網推薦:兩年詞彙量超過22000.設計

作中學之五筆輸入法實踐教程:經過一個月的訓練學會五筆輸入法

天天一萬步,一週減十斤:經過五個月的訓練減肥30斤

「作中學(Learning By Doing)」之乒乓球刻意訓練一年總結: 經過一年的訓練提高乒乓球技能。

婁老師經過本身的背單詞經歷五筆練習經歷減肥經歷乒乓球練習經歷,詳細地闡明瞭「作中學(Learning By Doing)」的重要性,而且總結了其中的要點:

學習是要思考的,僅僅實踐是不夠的;

技能是分層次的;

實踐要具有必定的量才能引發質變;

技能的提高要「刻意訓練」;

學習提高要有反饋。

個人學習經驗也與這些要點有共通之處。「學而不思則罔,思而不學則殆」是咱們從小就聽過的道理,也是我一直以來具有的學習準則,學習中的思考與實踐缺一不可。而且,量變決定質變所以,要想掌握一項技能,大量的練習必不可少。而且,在學習過程當中時常作有針對性的練習,而且經過不斷反饋來自我完善、自我提高。在下學期的學習中,我會爭取巧妙地運用作中學(Learning By Doing)的方法,咱們即可以在實踐中發現問題,解決問題,不斷提高自我。

2、C語言學習調查

  • 你是怎麼學習C語言的?(做業,實驗,教材,其餘),與你的高超技能相比,C語言的學習有什麼經驗和教訓?

我在大一第一學期時曾經過網課的形式自學過一部分C語言,對C語言有了初步的瞭解。在第二學期的課堂上,老師是按照PPT來教學。由於對前面的部分比較熟悉,起初我有些鬆懈,但隨着難度的加大,我必須在課堂上緊跟老師的思路,明白老師如何去分析一道題。同時,在課下對照課本多敲代碼,多加練習。課本中有不少算法的基礎實例,經過對教材進行細緻研究,夠獲取新的知識,豐富本身的思路。

  • 目前爲止估算本身寫過多少行C代碼?理解的狀況如何?量變引發質變,如何平衡質和量?

說實話,我C語言學得很通常。平時我對練習並非特別重視,直到臨近期末纔開始大量地練習,我估計本身寫過的代碼大概有2000-3000行。我對C語言的理解程度也較爲通常,前面的內容還相對熟悉,後面的不少知識點諸如指針和數組、結構體和共用體、文件操做,就比較陌生。我認爲對於C語言,惟有大量的練習加深入的理解纔可以掌握,因此量大才能引發質變。

  • 學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?

概念 解釋 表示
數組指針 指向數組的指針 (*p)[數組大小]
指針數組 數組內的元素都是指針,存儲指針的數組 *p[數組大小]
函數指針 指向函數的指針包含函數的地址,調用函數 (*p)(參數)
指針函數 函數聲明其返回值爲某個指針時,給函數返回一個地址,用於須要指針的表達式 *p(參數)
  • 學過了C語言,你明白文件和流的區別和聯繫嗎?如何區分文本文件和二進制文件?如何編程操做這兩種文件?

我不明白,上網查詢得知:

概念 解釋
文件 是計算機管理數據的基本單位,是應用程序保存和讀取數據的一個重要場所。
是字節序列的抽象概念,例如文件、輸入/輸出設備、內部進程通訊管道等。

文本文件與二進制文件的區別是邏輯上的,這二者只是在編碼層次上有差別。文本文件是基於字符編碼的文件,而二進制文件是基於值編碼的文件。所以,文本文件與二進制文件的區別僅僅是編碼上的不一樣,兩者無本質區別。

  • 學過了C語言,你知道什麼叫面向過程程序設計嗎?它解決問題的方法是什麼?

面向過程程序設計,就是分析出解決問題所須要的步驟,而後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就能夠了。簡單來講,就是在設計任務時要先明白本身要作什麼,而後分紅每一個小任務完成,再整合到主線中完成。

  • 在C語言裏面,什麼是模塊?你寫過多個源文件的程序嗎?

在C語言裏可用函數實現各個功能,做爲不一樣的模塊,而後在主函數中調用各個功能模塊(函數),這樣在維護或升級程序時就能夠只關注某個模塊,能夠簡化編程問題。我還沒寫過多個源文件的程序。

  • 學過了C語言,你知道什麼是「高內聚,低耦合」嗎?這個原則如何應用到高質量程序設計中?

我不知道。經過上網查閱資料得知:

概念 解釋
內聚性 又稱塊內聯繫。指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。若一個模塊內各元素(語名之間、程序段之間)聯繫的越緊密,則它的內聚性就越高。
耦合性 也稱塊間聯繫。指軟件系統結構中各模塊間相互聯繫緊密程度的一種度量。模塊之間聯繫越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決於模塊間接口的複雜性、調用的方式及傳遞的信息。
高內聚 一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
低耦合 一個完整的系統,模塊與模塊之間,儘量的使其獨立存在。也就是說,讓每一個模塊,儘量的獨立完成某個特定的子功能。模塊與模塊之間的接口,儘可能的少而簡單。若是某兩個模塊間的關係比較複雜的話,最好首先考慮進一步的模塊劃分。這樣有利於修改和組合。

——引用自百科《高內聚低耦合

  • 學過了C語言,你如何把數組A的內容複製到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。

1. 把數組A的內容複製到數組B中:

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int n,i,j,a[N],b[N];
    printf("Input n:");
    scanf("%d",&n );
    printf("A:\n");
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    printf("B:\n");
    for(j=0; j<n; j++)
    {
        b[j]=a[j];
        printf("%d",b[j]);
    }
}

2. 查找整數數組A中有沒有數字5:

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int a[20],i,b=0;
    for(i=0; i<20; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0; i<20; i++)
    {
        if(a[i] == 5)
        {
            b=1;
            printf("第%d個數字是5",i);
        }
    }
    if(b == 0)
    printf("沒有數字5\n");
}

3. 對整數數組A進行排序(從小到大,從大到小):

#include <stdio.h>
#include <stdlib.h>
//從小到大
void main()
{
    int a[10];
    int i,j,p;
    printf("Input 10 numbers:\n");
    for(j=0; j<10; j++)
        scanf("%d",&a[j]);
    printf("\n");
    for(i=0; i<9; i++)
        for(j=0; j<9-i; j++)
            if(a[j]>a[j+1])
            {
                p=a[j];
                a[j]=a[j+1];
                a[j+1]=p;
            }
    for(j=0; j<10; j++)
        printf("%d\n",a[j]);
    printf("\n");
}


#include <stdio.h>
#include <stdlib.h>
//從大到小
void main()
{
    int a[10];
    int i,j,p;
    printf("Input 10 numbers:\n");
    for(j=0; j<10; j++)
        scanf("%d",&a[j]);
    printf("\n");
    for(i=0; i<9; i++)
        for(j=0; j<9-i; j++)
            if(a[j]<a[j+1])
            {
                p=a[j];
                a[j]=a[j+1];
                a[j+1]=p;
            }
    for(j=0; j<10; j++)
        printf("%d\n",a[j]);
    printf("\n");
}
  • 寫一個程序,統計本身C語言共寫了多少行代碼

個人想法是用某個函數,能夠統計整個文件目錄下的全部程序代碼的行數,並將全部程序代碼行數彙總。限於水平,目前不會寫。

  • 你知道什麼是斷點嗎?給出本身調試程序的例子。

斷點就是程序中斷的地方。在某行代碼處設置斷點後,調試程序時,程序運行到該行代碼時會自動中止,而後就能夠在這進行逐步調試。

關於這部分我有些遺忘,在網上搜索資料時發現一篇不錯的博客可參考:設置斷點調試程序

圖:設置斷點

  • 每章提出一個問題

第一章:保存源文件時需注意什麼(怎樣保存)?

第二章:C語言的數據類型和數組,與Java中的是否相通?數組的引用這部分不太懂。

第三章:如何利用複合語句進行運算?

第四章:類方法和實例方法的區別,類和對象在使用上的區別?

......(不懂的地方太多了)

我自己的C語言基礎通常,越日後面看越費勁,我也對PPT裏的不少內容只知其一;不知其二,就不籠統地提出問題來糊弄了。

在從此的學習中,我會經過上手操做與實踐,在實踐中加深理解,解決全部遇到的這些問題。

  • 對比C語言的學習,你對《Java程序設計》的學習有什麼具體目標?如何經過刻意訓練提升程序設計能力和培養計算思惟?如何經過「作中學」實現你的目標?

在接下來的學習當中,我應該端正學習態度。個人具體目標就是,養成天天練習編程的習慣,將學習Java做爲天天學習生活中的一部分。能夠根據天天的狀況不一樣來分配任務量,不管或多或少,天天都要寫代碼。而且,每次做業爭取獨立按時完成,多和班裏的大佬交流討論但不抄襲,有問題能與同窗們和老師討論。每一節課都認真聽,每一次做業也都認真完成,及時查漏補缺。在具有基礎知識的條件下,作更多的拓展以增長本身的見識。

我但願在學習Java時,思考與實踐並行,努力理解課本上的大部分知識。而且在平時的學習中就一步到位,對學習中薄弱的地方進行刻意訓練,不把遇到的問題堆到最後。而且,常常看看婁老師的博客,汲取經驗,運用「作中學」的方法鞭策自我。

相關文章
相關標籤/搜索